vendor: 3,682 bytes, lines 1-88
1/******/ (function(modules) { // webpackBootstrap 2/******/ // The module cache 3/******/ var installedModules = {}; 4/******/ 5/******/ // The require function 6/******/ function __webpack_require__(moduleId) { 7/******/ 8/******/ // Check if module is in cache 9/******/ if(installedModules[moduleId]) { 10/******/ return installedModules[moduleId].exports; 11/******/ } 12/******/ // Create a new module (and put it into the cache) 13/******/ var module = installedModules[moduleId] = { 14/******/ i: moduleId, 15/******/ l: false, 16/******/ exports: {} 17/******/ }; 18/******/ 19/******/ // Execute the module function 20/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21/******/ 22/******/ // Flag the module as loaded 23/******/ module.l = true; 24/******/ 25/******/ // Return the exports of the module 26/******/ return module.exports; 27/******/ } 28/******/ 29/******/ 30/******/ // expose the modules object (__webpack_modules__) 31/******/ __webpack_require__.m = modules; 32/******/ 33/******/ // expose the module cache 34/******/ __webpack_require__.c = installedModules; 35/******/ 36/******/ // define getter function for harmony exports 37/******/ __webpack_require__.d = function(exports, name, getter) { 38/******/ if(!__webpack_require__.o(exports, name)) { 39/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); 40/******/ } 41/******/ }; 42/******/ 43/******/ // define __esModule on exports 44/******/ __webpack_require__.r = function(exports) { 45/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 46/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 47/******/ } 48/******/ Object.defineProperty(exports, '__esModule', { value: true }); 49/******/ }; 50/******/ 51/******/ // create a fake namespace object 52/******/ // mode & 1: value is a module id, require it 53/******/ // mode & 2: merge all properties of value into the ns 54/******/ // mode & 4: return value when already ns object 55/******/ // mode & 8|1: behave like require 56/******/ __webpack_require__.t = function(value, mode) { 57/******/ if(mode & 1) value = __webpack_require__(value); 58/******/ if(mode & 8) return value; 59/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; 60/******/ var ns = Object.create(null); 61/******/ __webpack_require__.r(ns); 62/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); 63/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); 64/******/ return ns; 65/******/ }; 66/******/ 67/******/ // getDefaultExport function for compatibility with non-harmony modules 68/******/ __webpack_require__.n = function(module) { 69/******/ var getter = module && module.__esModule ? 70/******/ function getDefault() { return module['default']; } : 71/******/ function getModuleExports() { return module; }; 72/******/ __webpack_require__.d(getter, 'a', getter); 73/******/ return getter; 74/******/ }; 75/******/ 76/******/ // Object.prototype.hasOwnProperty.call 77/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; 78/******/ 79/******/ // __webpack_public_path__ 80/******/ __webpack_require__.p = ""; 81/******/ 82/******/ 83/******/ // Load entry module and return exports 84/******/ return __webpack_require__(__webpack_require__.s = 1); 85/******/ }) 86/************************************************************************/ 87/******/ ({ 88
89/***/ "../../../upup-baseline/js/src/utility.js": 90/*!*************************************************************************************************************!*\ 91 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/upup-baseline/js/src/utility.js ***! 92 \*************************************************************************************************************/ 93/*! exports provided: setPageHeight, setHeaderHeight, closestPolyfill, trackHeaderBottom, debounce, throttle, containScroll, allowScrollWithinContainedScroll, sleep, preventGhosts, preventClickOnDrag, css, getAttributeStyles, merge, getElOffset, manageClipboardLinks, copyToClipboard */ 94/***/ (function(module, __webpack_exports__, __webpack_require__) { 95 96"use strict"; 97__webpack_require__.r(__webpack_exports__); 98/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setPageHeight", function() { return setPageHeight; }); 99/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setHeaderHeight", function() { return setHeaderHeight; }); 100/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "closestPolyfill", function() { return closestPolyfill; }); 101/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "trackHeaderBottom", function() { return trackHeaderBottom; }); 102/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "debounce", function() { return debounce; }); 103/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "throttle", function() { return throttle; }); 104/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "containScroll", function() { return containScroll; }); 105/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "allowScrollWithinContainedScroll", function() { return allowScrollWithinContainedScroll; }); 106/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sleep", function() { return sleep; }); 107/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "preventGhosts", function() { return preventGhosts; }); 108/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "preventClickOnDrag", function() { return preventClickOnDrag; }); 109/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "css", function() { return css; }); 110/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getAttributeStyles", function() { return getAttributeStyles; }); 111/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return merge; }); 112/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getElOffset", function() { return getElOffset; }); 113/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "manageClipboardLinks", function() { return manageClipboardLinks; }); 114/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "copyToClipboard", function() { return copyToClipboard; }); 115function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } 116 117function setPageHeight() { 118 var vh = window.innerHeight * 0.01; // Then we set the value in the --vh custom property to the root of the document 119 120 document.documentElement.style.setProperty('--vh', vh + 'px'); 121} 122/** 123 * Set a variable to reflect the height of the header 124 */ 125 126function setHeaderHeight() { 127 var header = document.getElementById('site-header'), 128 headerHeight = header.offsetHeight, 129 originalHeight = header.dataset.originalHeight; 130 131 if (originalHeight) { 132 headerHeight = originalHeight; 133 } 134 135 document.documentElement.style.setProperty('--headerHeight', headerHeight + 'px'); 136} 137function closestPolyfill() { 138 if (!Element.prototype.matches) { 139 Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector; 140 } 141 142 if (!Element.prototype.closest) { 143 Element.prototype.closest = function (s) { 144 var el = this; 145 146 do { 147 if (el.matches(s)) return el; 148 el = el.parentElement || el.parentNode; 149 } while (el !== null && el.nodeType === 1); 150 151 return null; 152 }; 153 } 154} 155/** 156 * Track the bottom of the header offset from the window 157 */ 158 159function trackHeaderBottom() { 160 var header = document.getElementById('site-header'), 161 headerWrap = header.querySelector('.site-header__wrap'), 162 headerHeight = 0, 163 headerOffset = null, 164 headerBottom; 165 166 if (headerWrap) { 167 headerHeight = headerWrap.offsetHeight; 168 headerOffset = headerWrap.getBoundingClientRect(); 169 } else { 170 headerHeight = header.offsetHeight; 171 headerOffset = header.getBoundingClientRect(); 172 } 173 174 headerBottom = headerOffset.top + headerHeight; 175 document.documentElement.style.setProperty('--headerBottom', headerBottom + 'px'); 176} 177function debounce(callback, threshold, execAsap) { 178 var timeout; 179 return function () { 180 var obj = this, 181 args = arguments; 182 183 function delayed() { 184 if (!execAsap) callback.apply(obj, args); 185 clearTimeout(timeout); 186 timeout = null; 187 } 188 189 if (timeout) clearTimeout(timeout);else if (execAsap) callback.apply(obj, args); 190 timeout = setTimeout(delayed, threshold || 100); 191 }; 192} 193function throttle(callback) { 194 var interval = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100; 195 var fire_last = arguments.length > 2 ? arguments[2] : undefined; 196 var last = Date.now(), 197 timeout = null; 198 return function () { 199 var obj = this, 200 args = arguments, 201 now = Date.now(); 202 203 function delayed() { 204 callback.apply(obj, args); 205 timeout = null; 206 } //this event is new enough 207 208 209 if (now - last > interval) { 210 callback.apply(obj, args); 211 last = now; //can be set up to call the callback one more time at the end of the throttle 212 213 if (fire_last) { 214 clearTimeout(timeout); 215 timeout = setTimeout(delayed, interval || 100); 216 } 217 } 218 }; 219} 220/** 221 * TODO: improve handling for widthGreaterThan logic - really only relevant if a container should not scroll at a given size 222 * Handle scrolling issue on iOS where background can be scrolled while menu is open 223 * @param element 224 * @param screenSize 225 */ 226 227function containScroll(element) { 228 var screenSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { 229 x: function x(w) { 230 return w > 0; 231 }, 232 y: function y(h) { 233 return h > 0;
234 } 235 }; 236 237 var initialClientY = null, 238 cancelIfAtBoundary = function cancelIfAtBoundary(deltaY, e) { 239 if (element.scrollHeight - element.scrollTop <= element.clientHeight && deltaY > 0 || element.scrollTop === 0 && deltaY < 0) { 240 e.preventDefault(); 241 } 242 }, 243 244 /** 245 * Check screen size constraints 246 * @param e 247 */ 248 isScreenCorrectSize = function isScreenCorrectSize() { 249 return screenSize.x(window.innerWidth) && screenSize.y(window.innerHeight); 250 }, 251 handleTouchStart = function handleTouchStart(e) { 252 if (!isScreenCorrectSize()) { 253 return false; 254 } 255 256 if (e.targetTouches.length === 1) { 257 // detect single touch 258 initialClientY = e.targetTouches[0].clientY; 259 } 260 }, 261 handleTouchMove = function handleTouchMove(e) { 262 if (!isScreenCorrectSize()) { 263 return false; 264 } 265 266 var deltaY = e.targetTouches[0].clientY - initialClientY; 267 268 if (e.targetTouches.length !== 1) { 269 return e; 270 } // invert delat Y here for same logic to work 271 272 273 cancelIfAtBoundary(-deltaY, e); 274 e.stopPropagation(); 275 e.stopImmediatePropagation(); 276 }, 277 handleWheel = function handleWheel(e) { 278 var deltaY = e.deltaY; 279 280 if (!isScreenCorrectSize()) { 281 return false; 282 } 283 284 cancelIfAtBoundary(deltaY, e); 285 e.stopPropagation(); 286 e.stopImmediatePropagation(); 287 }; 288 289 element.addEventListener('touchstart', handleTouchStart); 290 element.addEventListener('touchmove', handleTouchMove, { 291 passive: false 292 }); 293 element.addEventListener('wheel', handleWheel, { 294 passive: false 295 }); 296} 297/** 298 * way that scrolling can be stopped from propagating if not at boundary, but prop
298agate up if hits boundary 299 */ 300 301function allowScrollWithinContainedScroll(element) { 302 var initialClientY = null, 303 stopPropagationIfWithinBoundary = function stopPropagationIfWithinBoundary(deltaY, e) { 304 if (element.scrollHeight - element.offsetHeight >= element.scrollTop && !(element.scrollTop === 0 && deltaY < 0 || element.scrollHeight - element.offsetHeight === element.scrollTop && deltaY > 0)) { 305 e.stopPropagation(); 306 e.stopImmediatePropagation(); 307 } 308 }, 309 handleTouchStart = function handleTouchStart(e) { 310 if (e.targetTouches.length === 1) { 311 // detect single touch 312 initialClientY = e.targetTouches[0].clientY; 313 } 314 }, 315 handleTouchMove = function handleTouchMove(e) { 316 var deltaY = e.targetTouches[0].clientY - initialClientY; 317 318 if (e.targetTouches.length !== 1) { 319 return e; 320 } // invert delat Y here for same logic to work 321 322 323 stopPropagationIfWithinBoundary(-deltaY, e); 324 }, 325 handleWheel = function handleWheel(e) { 326 var deltaY = e.deltaY; 327 stopPropagationIfWithinBoundary(deltaY, e); 328 }; 329 330 element.addEventListener('touchstart', handleTouchStart); 331 element.addEventListener('touchmove', handleTouchMove, { 332 passive: false 333 }); 334 element.addEventListener('wheel', handleWheel, { 335 passive: false 336 }); 337} 338function sleep(ms) { 339 return new Promise(function (resolve) { 340 return setTimeout(resolve, ms); 341 }); 342} 343/** 344 * Props: https://gist.github.com/kosich/23188dd86633b6c2efb7 345 * @param element 346 */ 347 348function preventGhosts(element) { 349 var POINTER_TYPE = { 350 MOUSE: 0, 351 TOUCH: 1 352 }, 353 ANTI_GHOST_DELAY = 2000, 354 latestInteractionType, 355 latestInteractionTime, 356 mouseEvents = ['mousedown', 'mouseup', 'mousemove'], 357 touchEvents = ['touchstart', 'touchend']; 358 359 function handleTap(type, e) { 360 var now = Date.now(); 361 362 if (type !== latestInteractionType) { 363 if (now - latestInteractionTime <= ANTI_GHOST_DELAY) { 364 // console.log('!prevented!'); 365 e.preventDefault(); 366 e.stopPropagation(); 367 e.stopImmediatePropagation(); 368 return false; 369 } 370 371 latestInteractionType = type; 372 } 373 374 latestInteractionTime = now; 375 } 376 377 function attachEvents(eventList, interactionType) { 378 eventList.forEach(function (eventName) { 379 element.addEventListener(eventName, handleTap.bind(null, interactionType), true); 380 }); 381 } 382 383 attachEvents(mouseEvents, POINTER_TYPE.MOUSE); 384 attachEvents(touchEvents, POINTER_TYPE.TOUCH); 385} 386/** 387 * Prevent a click event on drag 388 */ 389 390function preventClickOnDrag(element) { 391 var downX = 0, 392 downY = 0; 393 394 function handleDown(e) { 395 downX = e.screenX; 396 downY = e.screenY; 397 } 398 399 function handleUp(e) { 400 var releaseX = e.screenX, 401 releaseY = e.screenY, 402 dist = Math.sqrt(Math.pow(releaseX - downX, 2) + Math.pow(releaseY - downY, 2)); 403 404 if (dist > 10) { 405 e.preventDefault(); 406 e.stopPropagation(); 407 } 408 } 409 410 element.addEventListener('mousedown', handleDown); 411 element.addEventListener('mouseup', handleUp); 412 element.addEventListener('click', handleUp); 413} 414/** 415 * Set the CSS style attribute of an element 416 * @param el - the element to manipulate 417 * @param props_to - the properties and values to set 418 */ 419 420function css(el, props_to) { 421 var styles = getAttributeStyles(el), 422 updated = merge(styles, props_to), 423 style_string = ''; 424 425 for (var prop in updated) { 426 if (updated[prop] === null || updated[prop] === '') continue; 427 style_string += prop + ':' + updated[prop] + '; '; 428 } 429 430 style_string = style_string.replace(/;\s?$/, ''); 431 el.setAttribute('style', style_string); 432} 433function getAttributeStyles(el) { 434 var string = el.getAttribute('style'), 435 pairs = string ? string.split(';') : [], 436 _tmp, 437 styles = {}; 438 439 if (pairs.length <= 0) return styles; 440 441 for (var i = 0, il = pairs.length; i < il; i++) { 442 _tmp = pairs[i].trim().split(/:(.+)?/); //split on first occuence 443 444 if (_tmp[0] == '') continue; 445 styles[_tmp[0].trim()] = _tmp[1].trim(); 446 } 447 448 return styles; 449} 450function merge(o1, o2, flat) { 451 var o3 = {}; 452 flat = flat === true; 453 454 for (var prop in o1) { 455 if (!o1.hasOwnProperty(prop)) continue; 456 o3[prop] = o1[prop]; 457 } 458 459 for (prop in o2) { 460 if (!o2.hasOwnProperty(prop)) continue; 461 462 if (_typeof(o2[prop]) == 'object' && _typeof(o3[prop]) == 'object') { 463 if (!flat) { 464 o3[prop] = merge(o3[prop], o2[prop]); 465 } else { 466 o3[prop] = o2[prop]; 467 } 468 } else { 469 o3[prop] = o2[prop]; 470 } 471 } 472 473 return o3; 474} 475function getElOffset(el) { 476 var rect = el.getBoundingClientRect(), 477 width = el.offsetWidth, 478 height = el.offsetHeight; 479 return { 480 left: rect.left + window.scrollX, 481 top: rect.top + window.pageYOffset, 482 right: window.innerWidth - rect.left - width, 483 bottom: rect.top + window.pageYOffset + height 484 }; 485} 486/** 487 * Find and manage links/ buttons that allow text to be copied to the clipboard 488 */ 489 490function manageClipboardLinks() { 491 var _this = this; 492 493 var clipboardLinks = document.querySelectorAll('.js-clipboard-copy'); 494 clipboardLinks.forEach(function (link) { 495 link.addEventListener('click', copyToClipboard.bind(_this, link)); 496 }); 497} 498/** 499 * Copy some text to the clipboard 500 * The target needs to carry the specific text as a data attribute 501 */ 502 503function copyToClipboard(link, e) { 504 var copyable = link.getAttribute('data-copy'); 505 e.preventDefault(); 506 507 if (!navigator || !navigator.clipboard) { 508 console.error("Could not copy - navigator object not available"); 509 return false; 510 } 511 512 navigator.clipboard.writeText(copyable).then(function () { 513 link.classList.add('copied'); 514 setTimeout(function () { 515 link.classList.remove('copied'); 516 }, 2000); 517 }); 518} 519 520/***/ }), 521 522/***/ "../../node_modules/moment/locale sync recursive ^\\.\\/.*$": 523/*!*****************************************************************************************************************************************!*\ 524 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale sync ^\.\/.*$ ***! 525 \*****************************************************************************************************************************************/ 526/*! no static exports found */ 527/***/ (function(module, exports, __webpack_require__) { 528 529var map = { 530 "./af": "../../node_modules/moment/locale/af.js", 531 "./af.js": "../../node_modules/moment/locale/af.js", 532 "./ar": "../../node_modules/moment/locale/ar.js", 533 "./ar-dz": "../../node_modules/moment/locale/ar-dz.js", 534 "./ar-dz.js": "../../node_modules/moment/locale/ar-dz.js", 535 "./ar-kw": "../../node_modules/moment/locale/ar-kw.js", 536 "./ar-kw.js": "../../node_modules/moment/locale/ar-kw.js", 537 "./ar-ly": "../../node_modules/moment/locale/ar-ly.js", 538 "./ar-ly.js": "../../node_modules/moment/locale/ar-ly.js", 539 "./ar-ma": "../../node_modules/moment/locale/ar-ma.js", 540 "./ar-ma.js": "../../node_modules/moment/locale/ar-ma.js", 541 "./ar-sa": "../../node_modules/moment/locale/ar-sa.js", 542 "./ar-sa.js": "../../node_modules/moment/locale/ar-sa.js", 543 "./ar-tn": "../../node_modules/moment/locale/ar-tn.js", 544 "./ar-tn.js": "../../node_modules/moment/locale/ar-tn.js", 545 "./ar.js": "../../node_modules/moment/locale/ar.js", 546 "./az": "../../node_modules/moment/locale/az.js", 547 "./az.js": "../../node_modules/moment/locale/az.js", 548 "./be": "../../node_modules/moment/locale/be.js", 549 "./be.js": "../../node_modules/moment/locale/be.js", 550 "./bg": "../../node_modules/moment/locale/bg.js", 551 "./bg.js": "../../node_modules/moment/locale/bg.js", 552 "./bm": "../../node_modules/moment/locale/bm.js", 553 "./bm.js": "../../node_modules/moment/locale/bm.js", 554 "./bn": "../../node_modules/moment/locale/bn.js", 555 "./bn.js": "../../node_modules/moment/locale/bn.js", 556 "./bo": "../../node_modules/moment/locale/bo.js", 557 "./bo.js": "../../node_modules/moment/locale/bo.js", 558 "./br": "../../node_modules/moment/locale/br.js", 559 "./br.js": "../../node_modules/moment/locale/br.js", 560 "./bs": "../../node_modules/moment/locale/bs.js", 561 "./bs.js": "../../node_modules/moment/locale/bs.js", 562 "./ca": "../../node_modules/moment/locale/ca.js", 563 "./ca.js": "../../node_modules/moment/locale/ca.js", 564 "./cs": "../../node_modules/moment/locale/cs.js", 565 "./cs.js": "../../node_modules/moment/locale/cs.js", 566 "./cv": "../../node_modules/moment/locale/cv.js", 567 "./cv.js": "../../node_modules/moment/locale/cv.js", 568 "./cy": "../../node_modules/moment/locale/cy.js", 569 "./cy.js": "../../node_modules/moment/locale/cy.js", 570 "./da": "../../node_modules/moment/locale/da.js", 571 "./da.js": "../../node_modules/moment/locale/da.js", 572 "./de": "../../node_modules/moment/locale/de.js", 573 "./de-at": "../../node_modules/moment/locale/de-at.js", 574 "./de-at.js": "../../node_modules/moment/locale/de-at.js", 575 "./de-ch": "../../node_modules/moment/locale/de-ch.js", 576 "./de-ch.js": "../../node_modules/moment/locale/de-ch.js", 577 "./de.js": "../../node_modules/moment/locale/de.js", 578 "./dv": "../../node_modules/moment/locale/dv.js", 579 "./dv.js": "../../node_modules/moment/locale/dv.js", 580 "./el": "../../node_modules/moment/locale/el.js", 581 "./el.js": "../../node_modules/moment/locale/el.js", 582 "./en-au": "../../node_modules/moment/locale/en-au.js", 583 "./en-au.js": "../../node_modules/moment/locale/en-au.js", 584 "./en-ca": "../../node_modules/moment/locale/en-ca.js", 585 "./en-ca.js": "../../node_modules/moment/locale/en-ca.js", 586 "./en-gb": "../../node_modules/moment/locale/en-gb.js", 587 "./en-gb.js": "../../node_modules/moment/locale/en-gb.js", 588 "./en-ie": "../../node_modules/moment/locale/en-ie.js", 589 "./en-ie.js": "../../node_modules/moment/locale/en-ie.js", 590 "./en-il": "../../node_modules/moment/locale/en-il.js", 591 "./en-il.js": "../../node_modules/moment/locale/en-il.js", 592 "./en-in": "../../node_modules/moment/locale/en-in.js", 593 "./en-in.js": "../../node_modules/moment/locale/en-in.js", 594 "./en-nz": "../../node_modules/moment/locale/en-nz.js", 595 "./en-nz.js": "../../node_modules/moment/locale/en-nz.js", 596 "./en-sg": "../../node_modules/moment/locale/en-sg.js", 597 "./en-sg.js": "../../node_modules/moment/locale/en-sg.js", 598 "./eo": "../../node_modules/moment/locale/eo.js", 599 "./eo.js": "../../node_modules/moment/locale/eo.js", 600 "./es": "../../node_modules/moment/locale/es.js", 601 "./es-do": "../../node_modules/moment/locale/es-do.js", 602 "./es-do.js": "../../node_modules/moment/locale/es-do.js", 603 "./es-us": "../../node_modules/moment/locale/es-us.js", 604 "./es-us.js": "../../node_modules/moment/locale/es-us.js", 605 "./es.js": "../../node_modules/moment/locale/es.js", 606 "./et": "../../node_modules/moment/locale/et.js", 607 "./et.js": "../../node_modules/moment/locale/et.js", 608 "./eu": "../../node_modules/moment/locale/eu.js", 609 "./eu.js": "../../node_modules/moment/locale/eu.js", 610 "./fa": "../../node_modules/moment/locale/fa.js", 611 "./fa.js": "../../node_modules/moment/locale/fa.js", 612 "./fi": "../../node_modules/moment/locale/fi.js", 613 "./fi.js": "../../node_modules/moment/locale/fi.js", 614 "./fil": "../../node_modules/moment/locale/fil.js", 615 "./fil.js": "../../node_modules/moment/locale/fil.js", 616 "./fo": "../../node_modules/moment/locale/fo.js", 617 "./fo.js": "../../node_modules/moment/locale/fo.js", 618 "./fr": "../../node_modules/moment/locale/fr.js", 619 "./fr-ca": "../../node_modules/moment/locale/fr-ca.js", 620 "./fr-ca.js": "../../node_modules/moment/locale/fr-ca.js", 621 "./fr-ch": "../../node_modules/moment/locale/fr-ch.js", 622 "./fr-ch.js": "../../node_modules/moment/locale/fr-ch.js", 623 "./fr.js": "../../node_modules/moment/locale/fr.js", 624 "./fy": "../../node_modules/moment/locale/fy.js", 625 "./fy.js": "../../node_modules/moment/locale/fy.js", 626 "./ga": "../../node_modules/moment/locale/ga.js", 627 "./ga.js": "../../node_modules/moment/locale/ga.js", 628 "./gd": "../../node_modules/moment/locale/gd.js", 629 "./gd.js": "../../node_modules/moment/locale/gd.js", 630 "./gl": "../../node_modules/moment/locale/gl.js", 631 "./gl.js": "../../node_modules/moment/locale/gl.js", 632 "./gom-deva": "../../node_modules/moment/locale/gom-deva.js", 633 "./gom-deva.js": "../../node_modules/moment/locale/gom-deva.js", 634 "./gom-latn": "../../node_modules/moment/locale/gom-latn.js", 635 "./gom-latn.js": "../../node_modules/moment/locale/gom-latn.js", 636 "./gu": "../../node_modules/moment/locale/gu.js", 637 "./gu.js": "../../node_modules/moment/locale/gu.js", 638 "./he": "../../node_modules/moment/locale/he.js", 639 "./he.js": "../../node_modules/moment/locale/he.js", 640 "./hi": "../../node_modules/moment/locale/hi.js", 641 "./hi.js": "../../node_modules/moment/locale/hi.js", 642 "./hr": "../../node_modules/moment/locale/hr.js", 643 "./hr.js": "../../node_modules/moment/locale/hr.js", 644 "./hu": "../../node_modules/moment/locale/hu.js", 645 "./hu.js": "../../node_modules/moment/locale/hu.js", 646 "./hy-am": "../../node_modules/moment/locale/hy-am.js", 647 "./hy-am.js": "../../node_modules/moment/locale/hy-am.js", 648 "./id": "../../node_modules/moment/locale/id.js", 649 "./id.js": "../../node_modules/moment/locale/id.js", 650 "./is": "../../node_modules/moment/locale/is.js", 651 "./is.js": "../../node_modules/moment/locale/is.js", 652 "./it": "../../node_modules/moment/locale/it.js", 653 "./it-ch": "../../node_modules/moment/locale/it-ch.js", 654 "./it-ch.js": "../../node_modules/moment/locale/it-ch.js", 655 "./it.js": "../../node_modules/moment/locale/it.js", 656 "./ja": "../../node_modules/moment/locale/ja.js", 657 "./ja.js": "../../node_modules/moment/locale/ja.js", 658 "./jv": "../../node_modules/moment/locale/jv.js", 659 "./jv.js": "../../node_modules/moment/locale/jv.js", 660 "./ka": "../../node_modules/moment/locale/ka.js", 661 "./ka.js": "../../node_modules/moment/locale/ka.js", 662 "./kk": "../../node_modules/moment/locale/kk.js", 663 "./kk.js": "../../node_modules/moment/locale/kk.js", 664 "./km": "../../node_modules/moment/locale/km.js", 665 "./km.js": "../../node_modules/moment/locale/km.js", 666 "./kn": "../../node_modules/moment/locale/kn.js", 667 "./kn.js": "../../node_modules/moment/locale/kn.js", 668 "./ko": "../../node_modules/moment/locale/ko.js", 669 "./ko.js": "../../node_modules/moment/locale/ko.js", 670 "./ku": "../../node_modules/moment/locale/ku.js", 671 "./ku.js": "../../node_modules/moment/locale/ku.js", 672 "./ky": "../../node_modules/moment/locale/ky.js", 673 "./ky.js": "../../node_modules/moment/locale/ky.js", 674 "./lb": "../../node_modules/moment/locale/lb.js", 675 "./lb.js": "../../node_modules/moment/locale/lb.js", 676 "./lo": "../../node_modules/moment/locale/lo.js", 677 "./lo.js": "../../node_modules/moment/locale/lo.js", 678 "./lt": "../../node_modules/moment/locale/lt.js", 679 "./lt.js": "../../node_modules/moment/locale/lt.js", 680 "./lv": "../../node_modules/moment/locale/lv.js", 681 "./lv.js": "../../node_modules/moment/locale/lv.js", 682 "./me": "../../node_modules/moment/locale/me.js", 683 "./me.js": "../../node_modules/moment/locale/me.js", 684 "./mi": "../../node_modules/moment/locale/mi.js", 685 "./mi.js": "../../node_modules/moment/locale/mi.js", 686 "./mk": "../../node_modules/moment/locale/mk.js", 687 "./mk.js": "../../node_modules/moment/locale/mk.js",
688 "./ml": "../../node_modules/moment/locale/ml.js", 689 "./ml.js": "../../node_modules/moment/locale/ml.js", 690 "./mn": "../../node_modules/moment/locale/mn.js", 691 "./mn.js": "../../node_modules/moment/locale/mn.js", 692 "./mr": "../../node_modules/moment/locale/mr.js", 693 "./mr.js": "../../node_modules/moment/locale/mr.js", 694 "./ms": "../../node_modules/moment/locale/ms.js", 695 "./ms-my": "../../node_modules/moment/locale/ms-my.js", 696 "./ms-my.js": "../../node_modules/moment/locale/ms-my.js", 697 "./ms.js": "../../node_modules/moment/locale/ms.js", 698 "./mt": "../../node_modules/moment/locale/mt.js", 699 "./mt.js": "../../node_modules/moment/locale/mt.js", 700 "./my": "../../node_modules/moment/locale/my.js", 701 "./my.js": "../../node_modules/moment/locale/my.js", 702 "./nb": "../../node_modules/moment/locale/nb.js", 703 "./nb.js": "../../node_modules/moment/locale/nb.js", 704 "./ne": "../../node_modules/moment/locale/ne.js", 705 "./ne.js": "../../node_modules/moment/locale/ne.js", 706 "./nl": "../../node_modules/moment/locale/nl.js", 707 "./nl-be": "../../node_modules/moment/locale/nl-be.js", 708 "./nl-be.js": "../../node_modules/moment/locale/nl-be.js", 709 "./nl.js": "../../node_modules/moment/locale/nl.js", 710 "./nn": "../../node_modules/moment/locale/nn.js", 711 "./nn.js": "../../node_modules/moment/locale/nn.js", 712 "./oc-lnc": "../../node_modules/moment/locale/oc-lnc.js", 713 "./oc-lnc.js": "../../node_modules/moment/locale/oc-lnc.js", 714 "./pa-in": "../../node_modules/moment/locale/pa-in.js", 715 "./pa-in.js": "../../node_modules/moment/locale/pa-in.js", 716 "./pl": "../../node_modules/moment/locale/pl.js", 717 "./pl.js": "../../node_modules/moment/locale/pl.js", 718 "./pt": "../../node_modules/moment/locale/pt.js", 719 "./pt-br": "../../node_modules/moment/locale/pt-br.js", 720 "./pt-br.js": "../../node_modules/moment/locale/pt-br.js", 721 "./pt.js": "../../node_modules/moment/locale/pt.js", 722 "./ro": "../../node_modules/moment/locale/ro.js", 723 "./ro.js": "../../node_modules/moment/locale/ro.js", 724 "./ru": "../../node_modules/moment/locale/ru.js", 725 "./ru.js": "../../node_modules/moment/locale/ru.js", 726 "./sd": "../../node_modules/moment/locale/sd.js", 727 "./sd.js": "../../node_modules/moment/locale/sd.js", 728 "./se": "../../node_modules/moment/locale/se.js", 729 "./se.js": "../../node_modules/moment/locale/se.js", 730 "./si": "../../node_modules/moment/locale/si.js", 731 "./si.js": "../../node_modules/moment/locale/si.js", 732 "./sk": "../../node_modules/moment/locale/sk.js", 733 "./sk.js": "../../node_modules/moment/locale/sk.js", 734 "./sl": "../../node_modules/moment/locale/sl.js", 735 "./sl.js": "../../node_modules/moment/locale/sl.js", 736 "./sq": "../../node_modules/moment/locale/sq.js", 737 "./sq.js": "../../node_modules/moment/locale/sq.js", 738 "./sr": "../../node_modules/moment/locale/sr.js", 739 "./sr-cyrl": "../../node_modules/moment/locale/sr-cyrl.js", 740 "./sr-cyrl.js": "../../node_modules/moment/locale/sr-cyrl.js", 741 "./sr.js": "../../node_modules/moment/locale/sr.js", 742 "./ss": "../../node_modules/moment/locale/ss.js", 743 "./ss.js": "../../node_modules/moment/locale/ss.js", 744 "./sv": "../../node_modules/moment/locale/sv.js", 745 "./sv.js": "../../node_modules/moment/locale/sv.js", 746 "./sw": "../../node_modules/moment/locale/sw.js", 747 "./sw.js": "../../node_modules/moment/locale/sw.js", 748 "./ta": "../../node_modules/moment/locale/ta.js", 749 "./ta.js": "../../node_modules/moment/locale/ta.js", 750 "./te": "../../node_modules/moment/locale/te.js", 751 "./te.js": "../../node_modules/moment/locale/te.js", 752 "./tet": "../../node_modules/moment/locale/tet.js", 753 "./tet.js": "../../node_modules/moment/locale/tet.js", 754 "./tg": "../../node_modules/moment/locale/tg.js", 755 "./tg.js": "../../node_modules/moment/locale/tg.js", 756 "./th": "../../node_modules/moment/locale/th.js", 757 "./th.js": "../../node_modules/moment/locale/th.js", 758 "./tk": "../../node_modules/moment/locale/tk.js", 759 "./tk.js": "../../node_modules/moment/locale/tk.js", 760 "./tl-ph": "../../node_modules/moment/locale/tl-ph.js", 761 "./tl-ph.js": "../../node_modules/moment/locale/tl-ph.js", 762 "./tlh": "../../node_modules/moment/locale/tlh.js", 763 "./tlh.js": "../../node_modules/moment/locale/tlh.js",
vendor: 2,438 bytes, lines 764-819
764 "./tr": "../../node_modules/moment/locale/tr.js", 765 "./tr.js": "../../node_modules/moment/locale/tr.js", 766 "./tzl": "../../node_modules/moment/locale/tzl.js", 767 "./tzl.js": "../../node_modules/moment/locale/tzl.js", 768 "./tzm": "../../node_modules/moment/locale/tzm.js", 769 "./tzm-latn": "../../node_modules/moment/locale/tzm-latn.js", 770 "./tzm-latn.js": "../../node_modules/moment/locale/tzm-latn.js", 771 "./tzm.js": "../../node_modules/moment/locale/tzm.js", 772 "./ug-cn": "../../node_modules/moment/locale/ug-cn.js", 773 "./ug-cn.js": "../../node_modules/moment/locale/ug-cn.js", 774 "./uk": "../../node_modules/moment/locale/uk.js", 775 "./uk.js": "../../node_modules/moment/locale/uk.js", 776 "./ur": "../../node_modules/moment/locale/ur.js", 777 "./ur.js": "../../node_modules/moment/locale/ur.js", 778 "./uz": "../../node_modules/moment/locale/uz.js", 779 "./uz-latn": "../../node_modules/moment/locale/uz-latn.js", 780 "./uz-latn.js": "../../node_modules/moment/locale/uz-latn.js", 781 "./uz.js": "../../node_modules/moment/locale/uz.js", 782 "./vi": "../../node_modules/moment/locale/vi.js", 783 "./vi.js": "../../node_modules/moment/locale/vi.js", 784 "./x-pseudo": "../../node_modules/moment/locale/x-pseudo.js", 785 "./x-pseudo.js": "../../node_modules/moment/locale/x-pseudo.js", 786 "./yo": "../../node_modules/moment/locale/yo.js", 787 "./yo.js": "../../node_modules/moment/locale/yo.js", 788 "./zh-cn": "../../node_modules/moment/locale/zh-cn.js", 789 "./zh-cn.js": "../../node_modules/moment/locale/zh-cn.js", 790 "./zh-hk": "../../node_modules/moment/locale/zh-hk.js", 791 "./zh-hk.js": "../../node_modules/moment/locale/zh-hk.js", 792 "./zh-mo": "../../node_modules/moment/locale/zh-mo.js", 793 "./zh-mo.js": "../../node_modules/moment/locale/zh-mo.js", 794 "./zh-tw": "../../node_modules/moment/locale/zh-tw.js", 795 "./zh-tw.js": "../../node_modules/moment/locale/zh-tw.js" 796}; 797 798 799function webpackContext(req) { 800 var id = webpackContextResolve(req); 801 return __webpack_require__(id); 802} 803function webpackContextResolve(req) { 804 if(!__webpack_require__.o(map, req)) { 805 var e = new Error("Cannot find module '" + req + "'"); 806 e.code = 'MODULE_NOT_FOUND'; 807 throw e; 808 } 809 return map[req]; 810} 811webpackContext.keys = function webpackContextKeys() { 812 return Object.keys(map); 813}; 814webpackContext.resolve = webpackContextResolve; 815module.exports = webpackContext; 816webpackContext.id = "../../node_modules/moment/locale sync recursive ^\\.\\/.*$"; 817 818/***/ }), 819
vendor: 3,263 bytes, lines 820-910
820/***/ "../../node_modules/moment/locale/af.js": 821/*!*********************************************************************************************************************************!*\ 822 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/af.js ***! 823 \*********************************************************************************************************************************/ 824/*! no static exports found */ 825/***/ (function(module, exports, __webpack_require__) { 826 827//! moment.js locale configuration 828//! locale : Afrikaans [af] 829//! author : Werner Mollentze : https://github.com/wernerm 830 831;(function (global, factory) { 832 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 833 undefined 834}(this, (function (moment) { 'use strict'; 835 836 //! moment.js locale configuration 837 838 var af = moment.defineLocale('af', { 839 months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split( 840 '_' 841 ), 842 monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'), 843 weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split( 844 '_' 845 ), 846 weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'), 847 weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'), 848 meridiemParse: /vm|nm/i, 849 isPM: function (input) { 850 return /^nm$/i.test(input); 851 }, 852 meridiem: function (hours, minutes, isLower) { 853 if (hours < 12) { 854 return isLower ? 'vm' : 'VM'; 855 } else { 856 return isLower ? 'nm' : 'NM'; 857 } 858 }, 859 longDateFormat: { 860 LT: 'HH:mm', 861 LTS: 'HH:mm:ss', 862 L: 'DD/MM/YYYY', 863 LL: 'D MMMM YYYY', 864 LLL: 'D MMMM YYYY HH:mm', 865 LLLL: 'dddd, D MMMM YYYY HH:mm', 866 }, 867 calendar: { 868 sameDay: '[Vandag om] LT', 869 nextDay: '[Môre om] LT', 870 nextWeek: 'dddd [om] LT', 871 lastDay: '[Gister om] LT', 872 lastWeek: '[Laas] dddd [om] LT', 873 sameElse: 'L', 874 }, 875 relativeTime: { 876 future: 'oor %s', 877 past: '%s gelede', 878 s: "'n paar sekondes", 879 ss: '%d sekondes', 880 m: "'n minuut", 881 mm: '%d minute', 882 h: "'n uur", 883 hh: '%d ure', 884 d: "'n dag", 885 dd: '%d dae', 886 M: "'n maand", 887 MM: '%d maande', 888 y: "'n jaar", 889 yy: '%d jaar', 890 }, 891 dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, 892 ordinal: function (number) { 893 return ( 894 number + 895 (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de') 896 ); // Thanks to Joris Röling : https://github.com/jjupiter 897 }, 898 week: { 899 dow: 1, // Maandag is die eerste dag van die week. 900 doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar. 901 }, 902 }); 903 904 return af; 905 906}))); 907 908 909/***/ }), 910
vendor: 5,984 bytes, lines 911-1086
911/***/ "../../node_modules/moment/locale/ar-dz.js": 912/*!************************************************************************************************************************************!*\ 913 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ar-dz.js ***! 914 \************************************************************************************************************************************/ 915/*! no static exports found */ 916/***/ (function(module, exports, __webpack_require__) { 917 918//! moment.js locale configuration 919//! locale : Arabic (Algeria) [ar-dz] 920//! author : Amine Roukh: https://github.com/Amine27 921//! author : Abdel Said: https://github.com/abdelsaid 922//! author : Ahmed Elkhatib 923//! author : forabi https://github.com/forabi 924//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem 925 926;(function (global, factory) { 927 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 928 undefined 929}(this, (function (moment) { 'use strict'; 930 931 //! moment.js locale configuration 932 933 var pluralForm = function (n) { 934 return n === 0 935 ? 0 936 : n === 1 937 ? 1 938 : n === 2 939 ? 2 940 : n % 100 >= 3 && n % 100 <= 10 941 ? 3 942 : n % 100 >= 11 943 ? 4 944 : 5; 945 }, 946 plurals = { 947 s: [ 948 'Ø£Ù٠٠٠ثاÙÙØ©', 949 'ثاÙÙØ© ÙØ§ØØ¯Ø©', 950 ['ثاÙÙØªØ§Ù', 'ثاÙÙØªÙÙ'], 951 '%d Ø«ÙØ§Ù', 952 '%d ثاÙÙØ©', 953 '%d ثاÙÙØ©', 954 ], 955 m: [ 956 'Ø£Ù٠٠٠دÙÙÙØ©', 957 'دÙÙÙØ© ÙØ§ØØ¯Ø©', 958 ['دÙÙÙØªØ§Ù', 'دÙÙÙØªÙÙ'], 959 '%d Ø¯ÙØ§Ø¦Ù', 960 '%d دÙÙÙØ©', 961 '%d دÙÙÙØ©', 962 ], 963 h: [ 964 'Ø£Ù٠٠٠ساعة', 965 'ساعة ÙØ§ØØ¯Ø©', 966 ['ساعتاÙ', 'ساعتÙÙ'], 967 '%d ساعات', 968 '%d ساعة', 969 '%d ساعة', 970 ], 971 d: [ 972 'Ø£ÙÙ Ù Ù ÙÙÙ ', 973 'ÙÙÙ ÙØ§ØØ¯', 974 ['ÙÙ٠اÙ', 'ÙÙÙ ÙÙ'], 975 '%d Ø£ÙØ§Ù ', 976 '%d ÙÙÙ ÙØ§', 977 '%d ÙÙÙ ', 978 ], 979 M: [ 980 'Ø£ÙÙ Ù Ù Ø´ÙØ±', 981 'Ø´ÙØ± ÙØ§ØØ¯', 982 ['Ø´ÙØ±Ø§Ù', 'Ø´ÙØ±ÙÙ'], 983 '%d Ø£Ø´ÙØ±', 984 '%d Ø´ÙØ±Ø§', 985 '%d Ø´ÙØ±', 986 ], 987 y: [ 988 'Ø£Ù٠٠٠عا٠', 989 'Ø¹Ø§Ù ÙØ§ØØ¯', 990 ['عا٠اÙ', 'عا٠ÙÙ'], 991 '%d Ø£Ø¹ÙØ§Ù ', 992 '%d Ø¹Ø§Ù ÙØ§', 993 '%d عا٠', 994 ], 995 }, 996 pluralize = function (u) { 997 return function (number, withoutSuffix, string, isFuture) { 998 var f = pluralForm(number), 999 str = plurals[u][pluralForm(number)]; 1000 if (f === 2) { 1001 str = str[withoutSuffix ? 0 : 1]; 1002 } 1003 return str.replace(/%d/i, number); 1004 }; 1005 }, 1006 months = [ 1007 'جاÙÙÙ', 1008 'ÙÙÙØ±Ù', 1009 '٠ارس', 1010 'Ø£ÙØ±ÙÙ', 1011 '٠اÙ', 1012 'Ø¬ÙØ§Ù', 1013 'جÙÙÙÙØ©', 1014 'Ø£ÙØª', 1015 'سبت٠بر', 1016 'Ø£ÙØªÙبر', 1017 'ÙÙÙ٠بر', 1018 'Ø¯ÙØ³Ù بر', 1019 ]; 1020 1021 var arDz = moment.defineLocale('ar-dz', { 1022 months: months, 1023 monthsShort: months, 1024 weekdays: 'Ø§ÙØ£ØØ¯_Ø§ÙØ¥Ø«ÙÙÙ_Ø§ÙØ«Ùاثاء_Ø§ÙØ£Ø±Ø¨Ø¹Ø§Ø¡_Ø§ÙØ®Ù ÙØ³_Ø§ÙØ¬Ù عة_Ø§ÙØ³Ø¨Øª'.split('_'), 1025 weekdaysShort: 'Ø£ØØ¯_إثÙÙÙ_Ø«ÙØ§Ø«Ø§Ø¡_أربعاء_Ø®Ù ÙØ³_ج٠عة_سبت'.split('_'), 1026 weekdaysMin: 'Ø_Ù_Ø«_ر_Ø®_ج_س'.split('_'), 1027 weekdaysParseExact: true, 1028 longDateFormat: { 1029 LT: 'HH:mm', 1030 LTS: 'HH:mm:ss', 1031 L: 'D/\u200FM/\u200FYYYY', 1032 LL: 'D MMMM YYYY', 1033 LLL: 'D MMMM YYYY HH:mm', 1034 LLLL: 'dddd D MMMM YYYY HH:mm', 1035 }, 1036 meridiemParse: /ص|Ù /, 1037 isPM: function (input) { 1038 return 'Ù ' === input; 1039 }, 1040 meridiem: function (hour, minute, isLower) { 1041 if (hour < 12) { 1042 return 'ص'; 1043 } else { 1044 return 'Ù '; 1045 } 1046 }, 1047 calendar: { 1048 sameDay: '[اÙÙÙÙ Ø¹ÙØ¯ Ø§ÙØ³Ø§Ø¹Ø©] LT', 1049 nextDay: '[ØºØ¯ÙØ§ Ø¹ÙØ¯ Ø§ÙØ³Ø§Ø¹Ø©] LT', 1050 nextWeek: 'dddd [Ø¹ÙØ¯ Ø§ÙØ³Ø§Ø¹Ø©] LT', 1051 lastDay: '[أ٠س Ø¹ÙØ¯ Ø§ÙØ³Ø§Ø¹Ø©] LT', 1052 lastWeek: 'dddd [Ø¹ÙØ¯ Ø§ÙØ³Ø§Ø¹Ø©] LT', 1053 sameElse: 'L', 1054 }, 1055 relativeTime: { 1056 future: 'بعد %s', 1057 past: 'Ù ÙØ° %s', 1058 s: pluralize('s'), 1059 ss: pluralize('s'), 1060 m: pluralize('m'), 1061 mm: pluralize('m'), 1062 h: pluralize('h'), 1063 hh: pluralize('h'), 1064 d: pluralize('d'), 1065 dd: pluralize('d'), 1066 M: pluralize('M'), 1067 MM: pluralize('M'), 1068 y: pluralize('y'), 1069 yy: pluralize('y'), 1070 }, 1071 postformat: function (string) { 1072 return string.replace(/,/g, 'Ø'); 1073 }, 1074 week: { 1075 dow: 0, // Sunday is the first day of the week. 1076 doy: 4, // The week that contains Jan 4th is the first week of the year. 1077 }, 1078 }); 1079 1080 return arDz; 1081 1082}))); 1083 1084 1085/***/ }), 1086
vendor: 2,963 bytes, lines 1087-1160
1087/***/ "../../node_modules/moment/locale/ar-kw.js": 1088/*!************************************************************************************************************************************!*\ 1089 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ar-kw.js ***! 1090 \************************************************************************************************************************************/ 1091/*! no static exports found */ 1092/***/ (function(module, exports, __webpack_require__) { 1093 1094//! moment.js locale configuration 1095//! locale : Arabic (Kuwait) [ar-kw] 1096//! author : Nusret Parlak: https://github.com/nusretparlak 1097 1098;(function (global, factory) { 1099 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 1100 undefined 1101}(this, (function (moment) { 'use strict'; 1102 1103 //! moment.js locale configuration 1104 1105 var arKw = moment.defineLocale('ar-kw', { 1106 months: 'ÙÙØ§Ùر_ÙØ¨Ø±Ø§Ùر_٠ارس_أبرÙÙ_٠اÙ_ÙÙÙÙÙ_ÙÙÙÙÙØ²_غشت_Ø´ØªÙØ¨Ø±_Ø£ÙØªÙبر_ÙÙÙØ¨Ø±_Ø¯Ø¬ÙØ¨Ø±'.split( 1107 '_' 1108 ), 1109 monthsShort: 'ÙÙØ§Ùر_ÙØ¨Ø±Ø§Ùر_٠ارس_أبرÙÙ_٠اÙ_ÙÙÙÙÙ_ÙÙÙÙÙØ²_غشت_Ø´ØªÙØ¨Ø±_Ø£ÙØªÙبر_ÙÙÙØ¨Ø±_Ø¯Ø¬ÙØ¨Ø±'.split( 1110 '_' 1111 ), 1112 weekdays: 'Ø§ÙØ£ØØ¯_Ø§ÙØ¥ØªÙÙÙ_Ø§ÙØ«Ùاثاء_Ø§ÙØ£Ø±Ø¨Ø¹Ø§Ø¡_Ø§ÙØ®Ù ÙØ³_Ø§ÙØ¬Ù عة_Ø§ÙØ³Ø¨Øª'.split('_'), 1113 weekdaysShort: 'Ø§ØØ¯_اتÙÙÙ_Ø«ÙØ§Ø«Ø§Ø¡_اربعاء_Ø®Ù ÙØ³_ج٠عة_سبت'.split('_'), 1114 weekdaysMin: 'Ø_Ù_Ø«_ر_Ø®_ج_س'.split('_'), 1115 weekdaysParseExact: true, 1116 longDateFormat: { 1117 LT: 'HH:mm', 1118 LTS: 'HH:mm:ss', 1119 L: 'DD/MM/YYYY', 1120 LL: 'D MMMM YYYY', 1121 LLL: 'D MMMM YYYY HH:mm', 1122 LLLL: 'dddd D MMMM YYYY HH:mm', 1123 }, 1124 calendar: { 1125 sameDay: '[اÙÙÙ٠عÙÙ Ø§ÙØ³Ø§Ø¹Ø©] LT', 1126 nextDay: '[غدا عÙÙ Ø§ÙØ³Ø§Ø¹Ø©] LT', 1127 nextWeek: 'dddd [عÙÙ Ø§ÙØ³Ø§Ø¹Ø©] LT', 1128 lastDay: '[أ٠س عÙÙ Ø§ÙØ³Ø§Ø¹Ø©] LT', 1129 lastWeek: 'dddd [عÙÙ Ø§ÙØ³Ø§Ø¹Ø©] LT', 1130 sameElse: 'L', 1131 }, 1132 relativeTime: { 1133 future: 'ÙÙ %s', 1134 past: 'Ù ÙØ° %s', 1135 s: 'Ø«ÙØ§Ù', 1136 ss: '%d ثاÙÙØ©', 1137 m: 'دÙÙÙØ©', 1138 mm: '%d Ø¯ÙØ§Ø¦Ù', 1139 h: 'ساعة', 1140 hh: '%d ساعات', 1141 d: 'ÙÙÙ ', 1142 dd: '%d Ø£ÙØ§Ù ', 1143 M: 'Ø´ÙØ±', 1144 MM: '%d Ø£Ø´ÙØ±', 1145 y: 'Ø³ÙØ©', 1146 yy: '%d سÙÙØ§Øª', 1147 }, 1148 week: { 1149 dow: 0, // Sunday is the first day of the week. 1150 doy: 12, // The week that contains Jan 12th is the first week of the year. 1151 }, 1152 }); 1153 1154 return arKw; 1155 1156}))); 1157 1158 1159/***/ }), 1160
vendor: 6,294 bytes, lines 1161-1351
1161/***/ "../../node_modules/moment/locale/ar-ly.js": 1162/*!************************************************************************************************************************************!*\ 1163 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ar-ly.js ***! 1164 \************************************************************************************************************************************/ 1165/*! no static exports found */ 1166/***/ (function(module, exports, __webpack_require__) { 1167 1168//! moment.js locale configuration 1169//! locale : Arabic (Lybia) [ar-ly] 1170//! author : Ali Hmer: https://github.com/kikoanis 1171 1172;(function (global, factory) { 1173 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 1174 undefined 1175}(this, (function (moment) { 'use strict'; 1176 1177 //! moment.js locale configuration 1178 1179 var symbolMap = { 1180 '1': '1', 1181 '2': '2', 1182 '3': '3', 1183 '4': '4', 1184 '5': '5', 1185 '6': '6', 1186 '7': '7', 1187 '8': '8', 1188 '9': '9', 1189 '0': '0', 1190 }, 1191 pluralForm = function (n) { 1192 return n === 0 1193 ? 0 1194 : n === 1 1195 ? 1 1196 : n === 2 1197 ? 2 1198 : n % 100 >= 3 && n % 100 <= 10 1199 ? 3 1200 : n % 100 >= 11 1201 ? 4 1202 : 5; 1203 }, 1204 plurals = { 1205 s: [ 1206 'Ø£Ù٠٠٠ثاÙÙØ©', 1207 'ثاÙÙØ© ÙØ§ØØ¯Ø©', 1208 ['ثاÙÙØªØ§Ù', 'ثاÙÙØªÙÙ'], 1209 '%d Ø«ÙØ§Ù', 1210 '%d ثاÙÙØ©', 1211 '%d ثاÙÙØ©', 1212 ], 1213 m: [ 1214 'Ø£Ù٠٠٠دÙÙÙØ©', 1215 'دÙÙÙØ© ÙØ§ØØ¯Ø©', 1216 ['دÙÙÙØªØ§Ù', 'دÙÙÙØªÙÙ'], 1217 '%d Ø¯ÙØ§Ø¦Ù', 1218 '%d دÙÙÙØ©', 1219 '%d دÙÙÙØ©', 1220 ], 1221 h: [ 1222 'Ø£Ù٠٠٠ساعة', 1223 'ساعة ÙØ§ØØ¯Ø©', 1224 ['ساعتاÙ', 'ساعتÙÙ'], 1225 '%d ساعات', 1226 '%d ساعة', 1227 '%d ساعة', 1228 ], 1229 d: [ 1230 'Ø£ÙÙ Ù Ù ÙÙÙ ', 1231 'ÙÙÙ ÙØ§ØØ¯', 1232 ['ÙÙ٠اÙ', 'ÙÙÙ ÙÙ'], 1233 '%d Ø£ÙØ§Ù ', 1234 '%d ÙÙÙ ÙØ§', 1235 '%d ÙÙÙ ', 1236 ], 1237 M: [ 1238 'Ø£ÙÙ Ù Ù Ø´ÙØ±', 1239 'Ø´ÙØ± ÙØ§ØØ¯', 1240 ['Ø´ÙØ±Ø§Ù', 'Ø´ÙØ±ÙÙ'], 1241 '%d Ø£Ø´ÙØ±', 1242 '%d Ø´ÙØ±Ø§', 1243 '%d Ø´ÙØ±', 1244 ], 1245 y: [ 1246 'Ø£Ù٠٠٠عا٠', 1247 'Ø¹Ø§Ù ÙØ§ØØ¯', 1248 ['عا٠اÙ', 'عا٠ÙÙ'], 1249 '%d Ø£Ø¹ÙØ§Ù ', 1250 '%d Ø¹Ø§Ù ÙØ§', 1251 '%d عا٠', 1252 ], 1253 }, 1254 pluralize = function (u) { 1255 return function (number, withoutSuffix, string, isFuture) { 1256 var f = pluralForm(number), 1257 str = plurals[u][pluralForm(number)]; 1258 if (f === 2) { 1259 str = str[withoutSuffix ? 0 : 1]; 1260 } 1261 return str.replace(/%d/i, number); 1262 }; 1263 }, 1264 months = [ 1265 'ÙÙØ§Ùر', 1266 'ÙØ¨Ø±Ø§Ùر', 1267 '٠ارس', 1268 'أبرÙÙ', 1269 '٠اÙÙ', 1270 'ÙÙÙÙÙ', 1271 'ÙÙÙÙÙ', 1272 'أغسطس', 1273 'سبت٠بر', 1274 'Ø£ÙØªÙبر', 1275 'ÙÙÙ٠بر', 1276 'Ø¯ÙØ³Ù بر', 1277 ]; 1278 1279 var arLy = moment.defineLocale('ar-ly', { 1280 months: months, 1281 monthsShort: months, 1282 weekdays: 'Ø§ÙØ£ØØ¯_Ø§ÙØ¥Ø«ÙÙÙ_Ø§ÙØ«Ùاثاء_Ø§ÙØ£Ø±Ø¨Ø¹Ø§Ø¡_Ø§ÙØ®Ù ÙØ³_Ø§ÙØ¬Ù عة_Ø§ÙØ³Ø¨Øª'.split('_'), 1283 weekdaysShort: 'Ø£ØØ¯_إثÙÙÙ_Ø«ÙØ§Ø«Ø§Ø¡_أربعاء_Ø®Ù ÙØ³_ج٠عة_سبت'.split('_'), 1284 weekdaysMin: 'Ø_Ù_Ø«_ر_Ø®_ج_س'.split('_'), 1285 weekdaysParseExact: true, 1286 longDateFormat: { 1287 LT: 'HH:mm', 1288 LTS: 'HH:mm:ss', 1289 L: 'D/\u200FM/\u200FYYYY', 1290 LL: 'D MMMM YYYY', 1291 LLL: 'D MMMM YYYY HH:mm', 1292 LLLL: 'dddd D MMMM YYYY HH:mm', 1293 }, 1294 meridiemParse: /ص|Ù /, 1295 isPM: function (input) { 1296 return 'Ù ' === input; 1297 }, 1298 meridiem: function (hour, minute, isLower) { 1299 if (hour < 12) { 1300 return 'ص'; 1301 } else { 1302 return 'Ù '; 1303 } 1304 }, 1305 calendar: { 1306 sameDay: '[اÙÙÙÙ Ø¹ÙØ¯ Ø§ÙØ³Ø§Ø¹Ø©] LT', 1307 nextDay: '[ØºØ¯ÙØ§ Ø¹ÙØ¯ Ø§ÙØ³Ø§Ø¹Ø©] LT', 1308 nextWeek: 'dddd [Ø¹ÙØ¯ Ø§ÙØ³Ø§Ø¹Ø©] LT', 1309 lastDay: '[أ٠س Ø¹ÙØ¯ Ø§ÙØ³Ø§Ø¹Ø©] LT', 1310 lastWeek: 'dddd [Ø¹ÙØ¯ Ø§ÙØ³Ø§Ø¹Ø©] LT', 1311 sameElse: 'L', 1312 }, 1313 relativeTime: { 1314 future: 'بعد %s', 1315 past: 'Ù ÙØ° %s', 1316 s: pluralize('s'), 1317 ss: pluralize('s'), 1318 m: pluralize('m'), 1319 mm: pluralize('m'), 1320 h: pluralize('h'), 1321 hh: pluralize('h'), 1322 d: pluralize('d'), 1323 dd: pluralize('d'), 1324 M: pluralize('M'), 1325 MM: pluralize('M'), 1326 y: pluralize('y'), 1327 yy: pluralize('y'), 1328 }, 1329 preparse: function (string) { 1330 return string.replace(/Ø/g, ','); 1331 }, 1332 postformat: function (string) { 1333 return string 1334 .replace(/\d/g, function (match) { 1335 return symbolMap[match]; 1336 }) 1337 .replace(/,/g, 'Ø'); 1338 }, 1339 week: { 1340 dow: 6, // Saturday is the first day of the week. 1341 doy: 12, // The week that contains Jan 12th is the first week of the year. 1342 }, 1343 }); 1344 1345 return arLy; 1346 1347}))); 1348 1349 1350/***/ }), 1351
vendor: 3,023 bytes, lines 1352-1426
1352/***/ "../../node_modules/moment/locale/ar-ma.js": 1353/*!************************************************************************************************************************************!*\ 1354 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ar-ma.js ***! 1355 \************************************************************************************************************************************/ 1356/*! no static exports found */ 1357/***/ (function(module, exports, __webpack_require__) { 1358 1359//! moment.js locale configuration 1360//! locale : Arabic (Morocco) [ar-ma] 1361//! author : ElFadili Yassine : https://github.com/ElFadiliY 1362//! author : Abdel Said : https://github.com/abdelsaid 1363 1364;(function (global, factory) { 1365 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 1366 undefined 1367}(this, (function (moment) { 'use strict'; 1368 1369 //! moment.js locale configuration 1370 1371 var arMa = moment.defineLocale('ar-ma', { 1372 months: 'ÙÙØ§Ùر_ÙØ¨Ø±Ø§Ùر_٠ارس_أبرÙÙ_٠اÙ_ÙÙÙÙÙ_ÙÙÙÙÙØ²_غشت_Ø´ØªÙØ¨Ø±_Ø£ÙØªÙبر_ÙÙÙØ¨Ø±_Ø¯Ø¬ÙØ¨Ø±'.split( 1373 '_' 1374 ), 1375 monthsShort: 'ÙÙØ§Ùر_ÙØ¨Ø±Ø§Ùر_٠ارس_أبرÙÙ_٠اÙ_ÙÙÙÙÙ_ÙÙÙÙÙØ²_غشت_Ø´ØªÙØ¨Ø±_Ø£ÙØªÙبر_ÙÙÙØ¨Ø±_Ø¯Ø¬ÙØ¨Ø±'.split( 1376 '_' 1377 ), 1378 weekdays: 'Ø§ÙØ£ØØ¯_Ø§ÙØ¥Ø«ÙÙÙ_Ø§ÙØ«Ùاثاء_Ø§ÙØ£Ø±Ø¨Ø¹Ø§Ø¡_Ø§ÙØ®Ù ÙØ³_Ø§ÙØ¬Ù عة_Ø§ÙØ³Ø¨Øª'.split('_'), 1379 weekdaysShort: 'Ø§ØØ¯_اثÙÙÙ_Ø«ÙØ§Ø«Ø§Ø¡_اربعاء_Ø®Ù ÙØ³_ج٠عة_سبت'.split('_'), 1380 weekdaysMin: 'Ø_Ù_Ø«_ر_Ø®_ج_س'.split('_'), 1381 weekdaysParseExact: true, 1382 longDateFormat: { 1383 LT: 'HH:mm', 1384 LTS: 'HH:mm:ss', 1385 L: 'DD/MM/YYYY', 1386 LL: 'D MMMM YYYY', 1387 LLL: 'D MMMM YYYY HH:mm', 1388 LLLL: 'dddd D MMMM YYYY HH:mm', 1389 }, 1390 calendar: { 1391 sameDay: '[اÙÙÙ٠عÙÙ Ø§ÙØ³Ø§Ø¹Ø©] LT', 1392 nextDay: '[غدا عÙÙ Ø§ÙØ³Ø§Ø¹Ø©] LT', 1393 nextWeek: 'dddd [عÙÙ Ø§ÙØ³Ø§Ø¹Ø©] LT', 1394 lastDay: '[أ٠س عÙÙ Ø§ÙØ³Ø§Ø¹Ø©] LT', 1395 lastWeek: 'dddd [عÙÙ Ø§ÙØ³Ø§Ø¹Ø©] LT', 1396 sameElse: 'L', 1397 }, 1398 relativeTime: { 1399 future: 'ÙÙ %s', 1400 past: 'Ù ÙØ° %s', 1401 s: 'Ø«ÙØ§Ù', 1402 ss: '%d ثاÙÙØ©', 1403 m: 'دÙÙÙØ©', 1404 mm: '%d Ø¯ÙØ§Ø¦Ù', 1405 h: 'ساعة', 1406 hh: '%d ساعات', 1407 d: 'ÙÙÙ ', 1408 dd: '%d Ø£ÙØ§Ù ', 1409 M: 'Ø´ÙØ±', 1410 MM: '%d Ø£Ø´ÙØ±', 1411 y: 'Ø³ÙØ©', 1412 yy: '%d سÙÙØ§Øª', 1413 }, 1414 week: { 1415 dow: 6, // Saturday is the first day of the week. 1416 doy: 12, // The week that contains Jan 12th is the first week of the year. 1417 }, 1418 }); 1419 1420 return arMa; 1421 1422}))); 1423 1424 1425/***/ }), 1426
vendor: 4,337 bytes, lines 1427-1550
1427/***/ "../../node_modules/moment/locale/ar-sa.js": 1428/*!************************************************************************************************************************************!*\ 1429 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ar-sa.js ***! 1430 \************************************************************************************************************************************/ 1431/*! no static exports found */ 1432/***/ (function(module, exports, __webpack_require__) { 1433 1434//! moment.js locale configuration 1435//! locale : Arabic (Saudi Arabia) [ar-sa] 1436//! author : Suhail Alkowaileet : https://github.com/xsoh 1437 1438;(function (global, factory) { 1439 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 1440 undefined 1441}(this, (function (moment) { 'use strict'; 1442 1443 //! moment.js locale configuration 1444 1445 var symbolMap = { 1446 '1': 'Ù¡', 1447 '2': 'Ù¢', 1448 '3': 'Ù£', 1449 '4': 'Ù¤', 1450 '5': 'Ù¥', 1451 '6': 'Ù¦', 1452 '7': 'Ù§', 1453 '8': 'Ù¨', 1454 '9': 'Ù©', 1455 '0': 'Ù ', 1456 }, 1457 numberMap = { 1458 'Ù¡': '1', 1459 'Ù¢': '2', 1460 'Ù£': '3', 1461 'Ù¤': '4', 1462 'Ù¥': '5', 1463 'Ù¦': '6', 1464 'Ù§': '7', 1465 'Ù¨': '8', 1466 'Ù©': '9', 1467 'Ù ': '0', 1468 }; 1469 1470 var arSa = moment.defineLocale('ar-sa', { 1471 months: 'ÙÙØ§Ùر_ÙØ¨Ø±Ø§Ùر_٠ارس_أبرÙÙ_٠اÙÙ_ÙÙÙÙÙ_ÙÙÙÙÙ_أغسطس_سبت٠بر_Ø£ÙØªÙبر_ÙÙÙ٠بر_Ø¯ÙØ³Ù بر'.split( 1472 '_' 1473 ), 1474 monthsShort: 'ÙÙØ§Ùر_ÙØ¨Ø±Ø§Ùر_٠ارس_أبرÙÙ_٠اÙÙ_ÙÙÙÙÙ_ÙÙÙÙÙ_أغسطس_سبت٠بر_Ø£ÙØªÙبر_ÙÙÙ٠بر_Ø¯ÙØ³Ù بر'.split( 1475 '_' 1476 ), 1477 weekdays: 'Ø§ÙØ£ØØ¯_Ø§ÙØ¥Ø«ÙÙÙ_Ø§ÙØ«Ùاثاء_Ø§ÙØ£Ø±Ø¨Ø¹Ø§Ø¡_Ø§ÙØ®Ù ÙØ³_Ø§ÙØ¬Ù عة_Ø§ÙØ³Ø¨Øª'.split('_'), 1478 weekdaysShort: 'Ø£ØØ¯_إثÙÙÙ_Ø«ÙØ§Ø«Ø§Ø¡_أربعاء_Ø®Ù ÙØ³_ج٠عة_سبت'.split('_'), 1479 weekdaysMin: 'Ø_Ù_Ø«_ر_Ø®_ج_س'.split('_'), 1480 weekdaysParseExact: true, 1481 longDateFormat: { 1482 LT: 'HH:mm', 1483 LTS: 'HH:mm:ss', 1484 L: 'DD/MM/YYYY', 1485 LL: 'D MMMM YYYY', 1486 LLL: 'D MMMM YYYY HH:mm', 1487 LLLL: 'dddd D MMMM YYYY HH:mm', 1488 }, 1489 meridiemParse: /ص|Ù /, 1490 isPM: function (input) { 1491 return 'Ù ' === input; 1492 }, 1493 meridiem: function (hour, minute, isLower) { 1494 if (hour < 12) { 1495 return 'ص'; 1496 } else { 1497 return 'Ù '; 1498 } 1499 }, 1500 calendar: { 1501 sameDay: '[اÙÙÙ٠عÙÙ Ø§ÙØ³Ø§Ø¹Ø©] LT', 1502 nextDay: '[غدا عÙÙ Ø§ÙØ³Ø§Ø¹Ø©] LT', 1503 nextWeek: 'dddd [عÙÙ Ø§ÙØ³Ø§Ø¹Ø©] LT', 1504 lastDay: '[أ٠س عÙÙ Ø§ÙØ³Ø§Ø¹Ø©] LT', 1505 lastWeek: 'dddd [عÙÙ Ø§ÙØ³Ø§Ø¹Ø©] LT', 1506 sameElse: 'L', 1507 }, 1508 relativeTime: { 1509 future: 'ÙÙ %s', 1510 past: 'Ù ÙØ° %s', 1511 s: 'Ø«ÙØ§Ù', 1512 ss: '%d ثاÙÙØ©', 1513 m: 'دÙÙÙØ©', 1514 mm: '%d Ø¯ÙØ§Ø¦Ù', 1515 h: 'ساعة', 1516 hh: '%d ساعات', 1517 d: 'ÙÙÙ ', 1518 dd: '%d Ø£ÙØ§Ù ', 1519 M: 'Ø´ÙØ±', 1520 MM: '%d Ø£Ø´ÙØ±', 1521 y: 'Ø³ÙØ©', 1522 yy: '%d سÙÙØ§Øª', 1523 }, 1524 preparse: function (string) { 1525 return string 1526 .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { 1527 return numberMap[match]; 1528 }) 1529 .replace(/Ø/g, ','); 1530 }, 1531 postformat: function (string) { 1532 return string 1533 .replace(/\d/g, function (match) { 1534 return symbolMap[match]; 1535 }) 1536 .replace(/,/g, 'Ø'); 1537 }, 1538 week: { 1539 dow: 0, // Sunday is the first day of the week. 1540 doy: 6, // The week that contains Jan 6th is the first week of the year. 1541 }, 1542 }); 1543 1544 return arSa; 1545 1546}))); 1547 1548 1549/***/ }), 1550
vendor: 2,965 bytes, lines 1551-1624
1551/***/ "../../node_modules/moment/locale/ar-tn.js": 1552/*!************************************************************************************************************************************!*\ 1553 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ar-tn.js ***! 1554 \************************************************************************************************************************************/ 1555/*! no static exports found */ 1556/***/ (function(module, exports, __webpack_require__) { 1557 1558//! moment.js locale configuration 1559//! locale : Arabic (Tunisia) [ar-tn] 1560//! author : Nader Toukabri : https://github.com/naderio 1561 1562;(function (global, factory) { 1563 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 1564 undefined 1565}(this, (function (moment) { 'use strict'; 1566 1567 //! moment.js locale configuration 1568 1569 var arTn = moment.defineLocale('ar-tn', { 1570 months: 'جاÙÙÙ_ÙÙÙØ±Ù_٠ارس_Ø£ÙØ±ÙÙ_٠اÙ_Ø¬ÙØ§Ù_جÙÙÙÙØ©_Ø£ÙØª_سبت٠بر_Ø£ÙØªÙبر_ÙÙÙ٠بر_Ø¯ÙØ³Ù بر'.split( 1571 '_' 1572 ), 1573 monthsShort: 'جاÙÙÙ_ÙÙÙØ±Ù_٠ارس_Ø£ÙØ±ÙÙ_٠اÙ_Ø¬ÙØ§Ù_جÙÙÙÙØ©_Ø£ÙØª_سبت٠بر_Ø£ÙØªÙبر_ÙÙÙ٠بر_Ø¯ÙØ³Ù بر'.split( 1574 '_' 1575 ), 1576 weekdays: 'Ø§ÙØ£ØØ¯_Ø§ÙØ¥Ø«ÙÙÙ_Ø§ÙØ«Ùاثاء_Ø§ÙØ£Ø±Ø¨Ø¹Ø§Ø¡_Ø§ÙØ®Ù ÙØ³_Ø§ÙØ¬Ù عة_Ø§ÙØ³Ø¨Øª'.split('_'), 1577 weekdaysShort: 'Ø£ØØ¯_إثÙÙÙ_Ø«ÙØ§Ø«Ø§Ø¡_أربعاء_Ø®Ù ÙØ³_ج٠عة_سبت'.split('_'), 1578 weekdaysMin: 'Ø_Ù_Ø«_ر_Ø®_ج_س'.split('_'), 1579 weekdaysParseExact: true, 1580 longDateFormat: { 1581 LT: 'HH:mm', 1582 LTS: 'HH:mm:ss', 1583 L: 'DD/MM/YYYY', 1584 LL: 'D MMMM YYYY', 1585 LLL: 'D MMMM YYYY HH:mm', 1586 LLLL: 'dddd D MMMM YYYY HH:mm', 1587 }, 1588 calendar: { 1589 sameDay: '[اÙÙÙ٠عÙÙ Ø§ÙØ³Ø§Ø¹Ø©] LT', 1590 nextDay: '[غدا عÙÙ Ø§ÙØ³Ø§Ø¹Ø©] LT', 1591 nextWeek: 'dddd [عÙÙ Ø§ÙØ³Ø§Ø¹Ø©] LT', 1592 lastDay: '[أ٠س عÙÙ Ø§ÙØ³Ø§Ø¹Ø©] LT', 1593 lastWeek: 'dddd [عÙÙ Ø§ÙØ³Ø§Ø¹Ø©] LT', 1594 sameElse: 'L', 1595 }, 1596 relativeTime: { 1597 future: 'ÙÙ %s', 1598 past: 'Ù ÙØ° %s', 1599 s: 'Ø«ÙØ§Ù', 1600 ss: '%d ثاÙÙØ©', 1601 m: 'دÙÙÙØ©', 1602 mm: '%d Ø¯ÙØ§Ø¦Ù', 1603 h: 'ساعة', 1604 hh: '%d ساعات', 1605 d: 'ÙÙÙ ', 1606 dd: '%d Ø£ÙØ§Ù ', 1607 M: 'Ø´ÙØ±', 1608 MM: '%d Ø£Ø´ÙØ±', 1609 y: 'Ø³ÙØ©', 1610 yy: '%d سÙÙØ§Øª', 1611 }, 1612 week: { 1613 dow: 1, // Monday is the first day of the week. 1614 doy: 4, // The week that contains Jan 4th is the first week of the year. 1615 }, 1616 }); 1617 1618 return arTn; 1619 1620}))); 1621 1622 1623/***/ }), 1624
vendor: 6,784 bytes, lines 1625-1833
1625/***/ "../../node_modules/moment/locale/ar.js": 1626/*!*********************************************************************************************************************************!*\ 1627 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ar.js ***! 1628 \*********************************************************************************************************************************/ 1629/*! no static exports found */ 1630/***/ (function(module, exports, __webpack_require__) { 1631 1632//! moment.js locale configuration 1633//! locale : Arabic [ar] 1634//! author : Abdel Said: https://github.com/abdelsaid 1635//! author : Ahmed Elkhatib 1636//! author : forabi https://github.com/forabi 1637 1638;(function (global, factory) { 1639 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 1640 undefined 1641}(this, (function (moment) { 'use strict'; 1642 1643 //! moment.js locale configuration 1644 1645 var symbolMap = { 1646 '1': 'Ù¡', 1647 '2': 'Ù¢', 1648 '3': 'Ù£', 1649 '4': 'Ù¤', 1650 '5': 'Ù¥', 1651 '6': 'Ù¦', 1652 '7': 'Ù§', 1653 '8': 'Ù¨', 1654 '9': 'Ù©', 1655 '0': 'Ù ', 1656 }, 1657 numberMap = { 1658 'Ù¡': '1', 1659 'Ù¢': '2', 1660 'Ù£': '3', 1661 'Ù¤': '4', 1662 'Ù¥': '5', 1663 'Ù¦': '6', 1664 'Ù§': '7', 1665 'Ù¨': '8', 1666 'Ù©': '9', 1667 'Ù ': '0', 1668 }, 1669 pluralForm = function (n) { 1670 return n === 0 1671 ? 0 1672 : n === 1 1673 ? 1 1674 : n === 2 1675 ? 2 1676 : n % 100 >= 3 && n % 100 <= 10 1677 ? 3 1678 : n % 100 >= 11 1679 ? 4 1680 : 5; 1681 }, 1682 plurals = { 1683 s: [ 1684 'Ø£Ù٠٠٠ثاÙÙØ©', 1685 'ثاÙÙØ© ÙØ§ØØ¯Ø©', 1686 ['ثاÙÙØªØ§Ù', 'ثاÙÙØªÙÙ'], 1687 '%d Ø«ÙØ§Ù', 1688 '%d ثاÙÙØ©', 1689 '%d ثاÙÙØ©', 1690 ], 1691 m: [ 1692 'Ø£Ù٠٠٠دÙÙÙØ©', 1693 'دÙÙÙØ© ÙØ§ØØ¯Ø©', 1694 ['دÙÙÙØªØ§Ù', 'دÙÙÙØªÙÙ'], 1695 '%d Ø¯ÙØ§Ø¦Ù', 1696 '%d دÙÙÙØ©', 1697 '%d دÙÙÙØ©', 1698 ], 1699 h: [ 1700 'Ø£Ù٠٠٠ساعة', 1701 'ساعة ÙØ§ØØ¯Ø©', 1702 ['ساعتاÙ', 'ساعتÙÙ'], 1703 '%d ساعات', 1704 '%d ساعة', 1705 '%d ساعة', 1706 ], 1707 d: [ 1708 'Ø£ÙÙ Ù Ù ÙÙÙ ', 1709 'ÙÙÙ ÙØ§ØØ¯', 1710 ['ÙÙ٠اÙ', 'ÙÙÙ ÙÙ'], 1711 '%d Ø£ÙØ§Ù ', 1712 '%d ÙÙÙ ÙØ§', 1713 '%d ÙÙÙ ', 1714 ], 1715 M: [ 1716 'Ø£ÙÙ Ù Ù Ø´ÙØ±', 1717 'Ø´ÙØ± ÙØ§ØØ¯', 1718 ['Ø´ÙØ±Ø§Ù', 'Ø´ÙØ±ÙÙ'], 1719 '%d Ø£Ø´ÙØ±', 1720 '%d Ø´ÙØ±Ø§', 1721 '%d Ø´ÙØ±', 1722 ], 1723 y: [ 1724 'Ø£Ù٠٠٠عا٠', 1725 'Ø¹Ø§Ù ÙØ§ØØ¯', 1726 ['عا٠اÙ', 'عا٠ÙÙ'], 1727 '%d Ø£Ø¹ÙØ§Ù ', 1728 '%d Ø¹Ø§Ù ÙØ§', 1729 '%d عا٠', 1730 ], 1731 }, 1732 pluralize = function (u) { 1733 return function (number, withoutSuffix, string, isFuture) { 1734 var f = pluralForm(number), 1735 str = plurals[u][pluralForm(number)]; 1736 if (f === 2) { 1737 str = str[withoutSuffix ? 0 : 1]; 1738 } 1739 return str.replace(/%d/i, number); 1740 }; 1741 }, 1742 months = [ 1743 'ÙÙØ§Ùر', 1744 'ÙØ¨Ø±Ø§Ùر', 1745 '٠ارس', 1746 'أبرÙÙ', 1747 '٠اÙÙ', 1748 'ÙÙÙÙÙ', 1749 'ÙÙÙÙÙ', 1750 'أغسطس', 1751 'سبت٠بر', 1752 'Ø£ÙØªÙبر', 1753 'ÙÙÙ٠بر', 1754 'Ø¯ÙØ³Ù بر', 1755 ]; 1756 1757 var ar = moment.defineLocale('ar', { 1758 months: months, 1759 monthsShort: months, 1760 weekdays: 'Ø§ÙØ£ØØ¯_Ø§ÙØ¥Ø«ÙÙÙ_Ø§ÙØ«Ùاثاء_Ø§ÙØ£Ø±Ø¨Ø¹Ø§Ø¡_Ø§ÙØ®Ù ÙØ³_Ø§ÙØ¬Ù عة_Ø§ÙØ³Ø¨Øª'.split('_'), 1761 weekdaysShort: 'Ø£ØØ¯_إثÙÙÙ_Ø«ÙØ§Ø«Ø§Ø¡_أربعاء_Ø®Ù ÙØ³_ج٠عة_سبت'.split('_'), 1762 weekdaysMin: 'Ø_Ù_Ø«_ر_Ø®_ج_س'.split('_'), 1763 weekdaysParseExact: true, 1764 longDateFormat: { 1765 LT: 'HH:mm', 1766 LTS: 'HH:mm:ss', 1767 L: 'D/\u200FM/\u200FYYYY', 1768 LL: 'D MMMM YYYY', 1769 LLL: 'D MMMM YYYY HH:mm', 1770 LLLL: 'dddd D MMMM YYYY HH:mm', 1771 }, 1772 meridiemParse: /ص|Ù /, 1773 isPM: function (input) { 1774 return 'Ù ' === input; 1775 }, 1776 meridiem: function (hour, minute, isLower) { 1777 if (hour < 12) { 1778 return 'ص'; 1779 } else { 1780 return 'Ù '; 1781 } 1782 }, 1783 calendar: { 1784 sameDay: '[اÙÙÙÙ Ø¹ÙØ¯ Ø§ÙØ³Ø§Ø¹Ø©] LT', 1785 nextDay: '[ØºØ¯ÙØ§ Ø¹ÙØ¯ Ø§ÙØ³Ø§Ø¹Ø©] LT', 1786 nextWeek: 'dddd [Ø¹ÙØ¯ Ø§ÙØ³Ø§Ø¹Ø©] LT', 1787 lastDay: '[أ٠س Ø¹ÙØ¯ Ø§ÙØ³Ø§Ø¹Ø©] LT', 1788 lastWeek: 'dddd [Ø¹ÙØ¯ Ø§ÙØ³Ø§Ø¹Ø©] LT', 1789 sameElse: 'L', 1790 }, 1791 relativeTime: { 1792 future: 'بعد %s', 1793 past: 'Ù ÙØ° %s', 1794 s: pluralize('s'), 1795 ss: pluralize('s'), 1796 m: pluralize('m'), 1797 mm: pluralize('m'), 1798 h: pluralize('h'), 1799 hh: pluralize('h'), 1800 d: pluralize('d'), 1801 dd: pluralize('d'), 1802 M: pluralize('M'), 1803 MM: pluralize('M'), 1804 y: pluralize('y'), 1805 yy: pluralize('y'), 1806 }, 1807 preparse: function (string) { 1808 return string 1809 .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { 1810 return numberMap[match]; 1811 }) 1812 .replace(/Ø/g, ','); 1813 }, 1814 postformat: function (string) { 1815 return string 1816 .replace(/\d/g, function (match) { 1817 return symbolMap[match]; 1818 }) 1819 .replace(/,/g, 'Ø'); 1820 }, 1821 week: { 1822 dow: 6, // Saturday is the first day of the week. 1823 doy: 12, // The week that contains Jan 12th is the first week of the year. 1824 }, 1825 }); 1826 1827 return ar; 1828 1829}))); 1830 1831 1832/***/ }), 1833
vendor: 4,089 bytes, lines 1834-1954
1834/***/ "../../node_modules/moment/locale/az.js": 1835/*!*********************************************************************************************************************************!*\ 1836 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/az.js ***! 1837 \*********************************************************************************************************************************/ 1838/*! no static exports found */ 1839/***/ (function(module, exports, __webpack_require__) { 1840 1841//! moment.js locale configuration 1842//! locale : Azerbaijani [az] 1843//! author : topchiyev : https://github.com/topchiyev 1844 1845;(function (global, factory) { 1846 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 1847 undefined 1848}(this, (function (moment) { 'use strict'; 1849 1850 //! moment.js locale configuration 1851 1852 var suffixes = { 1853 1: '-inci', 1854 5: '-inci', 1855 8: '-inci', 1856 70: '-inci', 1857 80: '-inci', 1858 2: '-nci', 1859 7: '-nci', 1860 20: '-nci', 1861 50: '-nci', 1862 3: '-üncü', 1863 4: '-üncü', 1864 100: '-üncü', 1865 6: '-ncı', 1866 9: '-uncu', 1867 10: '-uncu', 1868 30: '-uncu', 1869 60: '-ıncı', 1870 90: '-ıncı', 1871 }; 1872 1873 var az = moment.defineLocale('az', { 1874 months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split( 1875 '_' 1876 ), 1877 monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'), 1878 weekdays: 'Bazar_Bazar ertÉsi_ÃÉrÅÉnbÉ axÅamı_ÃÉrÅÉnbÉ_CümÉ axÅamı_CümÉ_ÅÉnbÉ'.split( 1879 '_' 1880 ), 1881 weekdaysShort: 'Baz_BzE_ÃAx_ÃÉr_CAx_Cüm_ÅÉn'.split('_'), 1882 weekdaysMin: 'Bz_BE_ÃA_ÃÉ_CA_Cü_ÅÉ'.split('_'), 1883 weekdaysParseExact: true, 1884 longDateFormat: { 1885 LT: 'HH:mm', 1886 LTS: 'HH:mm:ss', 1887 L: 'DD.MM.YYYY', 1888 LL: 'D MMMM YYYY', 1889 LLL: 'D MMMM YYYY HH:mm', 1890 LLLL: 'dddd, D MMMM YYYY HH:mm', 1891 }, 1892 calendar: { 1893 sameDay: '[bugün saat] LT', 1894 nextDay: '[sabah saat] LT', 1895 nextWeek: '[gÉlÉn hÉftÉ] dddd [saat] LT', 1896 lastDay: '[dünÉn] LT', 1897 lastWeek: '[keçÉn hÉftÉ] dddd [saat] LT', 1898 sameElse: 'L', 1899 }, 1900 relativeTime: { 1901 future: '%s sonra', 1902 past: '%s ÉvvÉl', 1903 s: 'birneÃ§É saniyÉ', 1904 ss: '%d saniyÉ', 1905 m: 'bir dÉqiqÉ', 1906 mm: '%d dÉqiqÉ', 1907 h: 'bir saat', 1908 hh: '%d saat', 1909 d: 'bir gün', 1910 dd: '%d gün', 1911 M: 'bir ay', 1912 MM: '%d ay', 1913 y: 'bir il', 1914 yy: '%d il', 1915 }, 1916 meridiemParse: /gecÉ|sÉhÉr|gündüz|axÅam/, 1917 isPM: function (input) { 1918 return /^(gündüz|axÅam)$/.test(input); 1919 }, 1920 meridiem: function (hour, minute, isLower) { 1921 if (hour < 4) { 1922 return 'gecÉ'; 1923 } else if (hour < 12) { 1924 return 'sÉhÉr'; 1925 } else if (hour < 17) { 1926 return 'gündüz'; 1927 } else { 1928 return 'axÅam'; 1929 } 1930 }, 1931 dayOfMonthOrdinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/, 1932 ordinal: function (number) { 1933 if (number === 0) { 1934 // special case for zero 1935 return number + '-ıncı'; 1936 } 1937 var a = number % 10, 1938 b = (number % 100) - a, 1939 c = number >= 100 ? 100 : null; 1940 return number + (suffixes[a] || suffixes[b] || suffixes[c]); 1941 }, 1942 week: { 1943 dow: 1, // Monday is the first day of the week. 1944 doy: 7, // The week that contains Jan 7th is the first week of the year. 1945 }, 1946 }); 1947 1948 return az; 1949 1950}))); 1951 1952 1953/***/ }), 1954
vendor: 6,572 bytes, lines 1955-2115
1955/***/ "../../node_modules/moment/locale/be.js": 1956/*!*********************************************************************************************************************************!*\ 1957 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/be.js ***! 1958 \*********************************************************************************************************************************/ 1959/*! no static exports found */ 1960/***/ (function(module, exports, __webpack_require__) { 1961 1962//! moment.js locale configuration 1963//! locale : Belarusian [be] 1964//! author : Dmitry Demidov : https://github.com/demidov91 1965//! author: Praleska: http://praleska.pro/ 1966//! Author : Menelion Elensúle : https://github.com/Oire 1967 1968;(function (global, factory) { 1969 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 1970 undefined 1971}(this, (function (moment) { 'use strict'; 1972 1973 //! moment.js locale configuration 1974 1975 function plural(word, num) { 1976 var forms = word.split('_'); 1977 return num % 10 === 1 && num % 100 !== 11 1978 ? forms[0] 1979 : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) 1980 ? forms[1] 1981 : forms[2]; 1982 } 1983 function relativeTimeWithPlural(number, withoutSuffix, key) { 1984 var format = { 1985 ss: withoutSuffix ? 'ÑекÑнда_ÑекÑндÑ_ÑекÑнд' : 'ÑекÑндÑ_ÑекÑндÑ_ÑекÑнд', 1986 mm: withoutSuffix ? 'Ñ Ð²ÑлÑна_Ñ Ð²ÑлÑнÑ_Ñ Ð²ÑлÑн' : 'Ñ Ð²ÑлÑнÑ_Ñ Ð²ÑлÑнÑ_Ñ Ð²ÑлÑн', 1987 hh: withoutSuffix ? 'гадзÑна_гадзÑнÑ_гадзÑн' : 'гадзÑнÑ_гадзÑнÑ_гадзÑн', 1988 dd: 'дзенÑ_днÑ_дзÑн', 1989 MM: 'меÑÑÑ_меÑÑÑÑ_меÑÑÑаÑ', 1990 yy: 'год_гадÑ_гадоÑ', 1991 }; 1992 if (key === 'm') { 1993 return withoutSuffix ? 'Ñ Ð²ÑлÑна' : 'Ñ Ð²ÑлÑнÑ'; 1994 } else if (key === 'h') { 1995 return withoutSuffix ? 'гадзÑна' : 'гадзÑнÑ'; 1996 } else { 1997 return number + ' ' + plural(format[key], +number); 1998 } 1999 } 2000 2001 var be = moment.defineLocale('be', { 2002 months: { 2003 format: 'ÑÑÑдзенÑ_лÑÑага_ÑакавÑка_кÑаÑавÑка_ÑÑаÑнÑ_ÑÑÑвенÑ_лÑпенÑ_жнÑÑнÑ_веÑаÑнÑ_каÑÑÑÑÑнÑка_лÑÑÑапада_ÑнежнÑ'.split( 2004 '_' 2005 ), 2006 standalone: 'ÑÑÑдзенÑ_лÑÑÑ_ÑакавÑк_кÑаÑавÑк_ÑÑавенÑ_ÑÑÑвенÑ_лÑпенÑ_жнÑвенÑ_веÑаÑенÑ_каÑÑÑÑÑнÑк_лÑÑÑапад_ÑнежанÑ'.split( 2007 '_' 2008 ), 2009 }, 2010 monthsShort: 'ÑÑÑд_лÑÑ_Ñак_кÑаÑ_ÑÑав_ÑÑÑв_лÑп_жнÑв_веÑ_каÑÑ_лÑÑÑ_Ñнеж'.split( 2011 '_' 2012 ), 2013 weekdays: { 2014 format: 'нÑдзелÑ_панÑдзелак_аÑÑоÑак_ÑеÑадÑ_ÑаÑвеÑ_пÑÑнÑÑÑ_ÑÑбоÑÑ'.split( 2015 '_' 2016 ), 2017 standalone: 'нÑдзелÑ_панÑдзелак_аÑÑоÑак_ÑеÑада_ÑаÑвеÑ_пÑÑнÑÑа_ÑÑбоÑа'.split( 2018 '_' 2019 ), 2020 isFormat: /\[ ?[УÑÑ] ?(?:мÑнÑлÑÑ|наÑÑÑпнÑÑ)? ?\] ?dddd/, 2021 }, 2022 weekdaysShort: 'нд_пн_аÑ_ÑÑ_ÑÑ_пÑ_Ñб'.split('_'), 2023 weekdaysMin: 'нд_пн_аÑ_ÑÑ_ÑÑ_пÑ_Ñб'.split('_'), 2024 longDateFormat: { 2025 LT: 'HH:mm', 2026 LTS: 'HH:mm:ss', 2027 L: 'DD.MM.YYYY', 2028 LL: 'D MMMM YYYY г.', 2029 LLL: 'D MMMM YYYY г., HH:mm', 2030 LLLL: 'dddd, D MMMM YYYY г., HH:mm', 2031 }, 2032 calendar: { 2033 sameDay: '[СÑÐ½Ð½Ñ Ñ] LT', 2034 nextDay: '[ÐаÑÑÑа Ñ] LT', 2035 lastDay: '[УÑоÑа Ñ] LT', 2036 nextWeek: function () { 2037 return '[У] dddd [Ñ] LT'; 2038 }, 2039 lastWeek: function () { 2040 switch (this.day()) { 2041 case 0: 2042 case 3: 2043 case 5: 2044 case 6: 2045 return '[У мÑнÑлÑÑ] dddd [Ñ] LT'; 2046 case 1: 2047 case 2: 2048 case 4: 2049 return '[У мÑнÑлÑ] dddd [Ñ] LT'; 2050 } 2051 }, 2052 sameElse: 'L', 2053 }, 2054 relativeTime: { 2055 future: 'пÑаз %s', 2056 past: '%s ÑамÑ', 2057 s: 'некалÑÐºÑ ÑекÑнд', 2058 m: relativeTimeWithPlural, 2059 mm: relativeTimeWithPlural, 2060 h: relativeTimeWithPlural, 2061 hh: relativeTimeWithPlural, 2062 d: 'дзенÑ', 2063 dd: relativeTimeWithPlural, 2064 M: 'меÑÑÑ', 2065 MM: relativeTimeWithPlural, 2066 y: 'год', 2067 yy: relativeTimeWithPlural, 2068 }, 2069 meridiemParse: /ноÑÑ|ÑанÑÑÑ|днÑ|веÑаÑа/, 2070 isPM: function (input) { 2071 return /^(днÑ|веÑаÑа)$/.test(input); 2072 }, 2073 meridiem: function (hour, minute, isLower) { 2074 if (hour < 4) { 2075 return 'ноÑÑ'; 2076 } else if (hour < 12) { 2077 return 'ÑанÑÑÑ'; 2078 } else if (hour < 17) { 2079 return 'днÑ'; 2080 } else { 2081 return 'веÑаÑа'; 2082 } 2083 }, 2084 dayOfMonthOrdinalParse: /\d{1,2}-(Ñ|Ñ|га)/, 2085 ordinal: function (number, period) { 2086 switch (period) { 2087 case 'M': 2088 case 'd': 2089 case 'DDD': 2090 case 'w': 2091 case 'W': 2092 return (number % 10 === 2 || number % 10 === 3) && 2093 number % 100 !== 12 && 2094 number % 100 !== 13 2095 ? number + '-Ñ' 2096 : number + '-Ñ'; 2097 case 'D': 2098 return number + '-га'; 2099 default: 2100 return number; 2101 } 2102 }, 2103 week: { 2104 dow: 1, // Monday is the first day of the week. 2105 doy: 7, // The week that contains Jan 7th is the first week of the year. 2106 }, 2107 }); 2108 2109 return be; 2110 2111}))); 2112 2113 2114/***/ }), 2115
vendor: 4,077 bytes, lines 2116-2220
2116/***/ "../../node_modules/moment/locale/bg.js": 2117/*!*********************************************************************************************************************************!*\ 2118 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/bg.js ***! 2119 \*********************************************************************************************************************************/ 2120/*! no static exports found */ 2121/***/ (function(module, exports, __webpack_require__) { 2122 2123//! moment.js locale configuration 2124//! locale : Bulgarian [bg] 2125//! author : Krasen Borisov : https://github.com/kraz 2126 2127;(function (global, factory) { 2128 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 2129 undefined 2130}(this, (function (moment) { 'use strict'; 2131 2132 //! moment.js locale configuration 2133 2134 var bg = moment.defineLocale('bg', { 2135 months: 'ÑнÑаÑи_ÑевÑÑаÑи_маÑÑ_апÑил_май_Ñни_Ñли_авгÑÑÑ_ÑепÑемвÑи_окÑомвÑи_ноемвÑи_декемвÑи'.split( 2136 '_' 2137 ), 2138 monthsShort: 'ÑнÑ_Ñев_маÑ_апÑ_май_Ñни_Ñли_авг_Ñеп_окÑ_ное_дек'.split('_'), 2139 weekdays: 'неделÑ_понеделник_вÑоÑник_ÑÑÑда_ÑеÑвÑÑÑÑк_пеÑÑк_ÑÑбоÑа'.split( 2140 '_' 2141 ), 2142 weekdaysShort: 'нед_пон_вÑо_ÑÑÑ_ÑеÑ_пеÑ_ÑÑб'.split('_'), 2143 weekdaysMin: 'нд_пн_вÑ_ÑÑ_ÑÑ_пÑ_Ñб'.split('_'), 2144 longDateFormat: { 2145 LT: 'H:mm', 2146 LTS: 'H:mm:ss', 2147 L: 'D.MM.YYYY', 2148 LL: 'D MMMM YYYY', 2149 LLL: 'D MMMM YYYY H:mm', 2150 LLLL: 'dddd, D MMMM YYYY H:mm', 2151 }, 2152 calendar: { 2153 sameDay: '[ÐÐ½ÐµÑ Ð²] LT', 2154 nextDay: '[УÑÑе в] LT', 2155 nextWeek: 'dddd [в] LT', 2156 lastDay: '[ÐÑеÑа в] LT', 2157 lastWeek: function () { 2158 switch (this.day()) { 2159 case 0: 2160 case 3: 2161 case 6: 2162 return '[ÐиналаÑа] dddd [в] LT'; 2163 case 1: 2164 case 2: 2165 case 4: 2166 case 5: 2167 return '[ÐиналиÑ] dddd [в] LT'; 2168 } 2169 }, 2170 sameElse: 'L', 2171 }, 2172 relativeTime: { 2173 future: 'Ñлед %s', 2174 past: 'пÑеди %s', 2175 s: 'нÑколко ÑекÑнди', 2176 ss: '%d ÑекÑнди', 2177 m: 'минÑÑа', 2178 mm: '%d минÑÑи', 2179 h: 'ÑаÑ', 2180 hh: '%d ÑаÑа', 2181 d: 'ден', 2182 dd: '%d дена', 2183 M: 'меÑеÑ', 2184 MM: '%d меÑеÑа', 2185 y: 'година', 2186 yy: '%d години', 2187 }, 2188 dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|Ñи|ви|Ñи|ми)/, 2189 ordinal: function (number) { 2190 var lastDigit = number % 10, 2191 last2Digits = number % 100; 2192 if (number === 0) { 2193 return number + '-ев'; 2194 } else if (last2Digits === 0) { 2195 return number + '-ен'; 2196 } else if (last2Digits > 10 && last2Digits < 20) { 2197 return number + '-Ñи'; 2198 } else if (lastDigit === 1) { 2199 return number + '-ви'; 2200 } else if (lastDigit === 2) { 2201 return number + '-Ñи'; 2202 } else if (lastDigit === 7 || lastDigit === 8) { 2203 return number + '-ми'; 2204 } else { 2205 return number + '-Ñи'; 2206 } 2207 }, 2208 week: { 2209 dow: 1, // Monday is the first day of the week. 2210 doy: 7, // The week that contains Jan 7th is the first week of the year. 2211 }, 2212 }); 2213 2214 return bg; 2215 2216}))); 2217 2218 2219/***/ }), 2220
vendor: 2,723 bytes, lines 2221-2291
2221/***/ "../../node_modules/moment/locale/bm.js": 2222/*!*********************************************************************************************************************************!*\ 2223 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/bm.js ***! 2224 \*********************************************************************************************************************************/ 2225/*! no static exports found */ 2226/***/ (function(module, exports, __webpack_require__) { 2227 2228//! moment.js locale configuration 2229//! locale : Bambara [bm] 2230//! author : Estelle Comment : https://github.com/estellecomment 2231 2232;(function (global, factory) { 2233 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 2234 undefined 2235}(this, (function (moment) { 'use strict'; 2236 2237 //! moment.js locale configuration 2238 2239 var bm = moment.defineLocale('bm', { 2240 months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_MÉkalo_ZuwÉnkalo_Zuluyekalo_Utikalo_SÉtanburukalo_ÉkutÉburukalo_Nowanburukalo_Desanburukalo'.split( 2241 '_' 2242 ), 2243 monthsShort: 'Zan_Few_Mar_Awi_MÉ_Zuw_Zul_Uti_SÉt_Éku_Now_Des'.split('_'), 2244 weekdays: 'Kari_NtÉnÉn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'), 2245 weekdaysShort: 'Kar_NtÉ_Tar_Ara_Ala_Jum_Sib'.split('_'), 2246 weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'), 2247 longDateFormat: { 2248 LT: 'HH:mm', 2249 LTS: 'HH:mm:ss', 2250 L: 'DD/MM/YYYY', 2251 LL: 'MMMM [tile] D [san] YYYY', 2252 LLL: 'MMMM [tile] D [san] YYYY [lÉrÉ] HH:mm', 2253 LLLL: 'dddd MMMM [tile] D [san] YYYY [lÉrÉ] HH:mm', 2254 }, 2255 calendar: { 2256 sameDay: '[Bi lÉrÉ] LT', 2257 nextDay: '[Sini lÉrÉ] LT', 2258 nextWeek: 'dddd [don lÉrÉ] LT', 2259 lastDay: '[Kunu lÉrÉ] LT', 2260 lastWeek: 'dddd [tÉmÉnen lÉrÉ] LT', 2261 sameElse: 'L', 2262 }, 2263 relativeTime: { 2264 future: '%s kÉnÉ', 2265 past: 'a bÉ %s bÉ', 2266 s: 'sanga dama dama', 2267 ss: 'sekondi %d', 2268 m: 'miniti kelen', 2269 mm: 'miniti %d', 2270 h: 'lÉrÉ kelen', 2271 hh: 'lÉrÉ %d', 2272 d: 'tile kelen', 2273 dd: 'tile %d', 2274 M: 'kalo kelen', 2275 MM: 'kalo %d', 2276 y: 'san kelen', 2277 yy: 'san %d', 2278 }, 2279 week: { 2280 dow: 1, // Monday is the first day of the week. 2281 doy: 4, // The week that contains Jan 4th is the first week of the year. 2282 }, 2283 }); 2284 2285 return bm; 2286 2287}))); 2288 2289 2290/***/ }), 2291
vendor: 5,247 bytes, lines 2292-2429
2292/***/ "../../node_modules/moment/locale/bn.js": 2293/*!*********************************************************************************************************************************!*\ 2294 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/bn.js ***! 2295 \*********************************************************************************************************************************/ 2296/*! no static exports found */ 2297/***/ (function(module, exports, __webpack_require__) { 2298 2299//! moment.js locale configuration 2300//! locale : Bengali [bn] 2301//! author : Kaushik Gandhi : https://github.com/kaushikgandhi 2302 2303;(function (global, factory) { 2304 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 2305 undefined 2306}(this, (function (moment) { 'use strict'; 2307 2308 //! moment.js locale configuration 2309 2310 var symbolMap = { 2311 '1': 'à§§', 2312 '2': '২', 2313 '3': 'à§©', 2314 '4': '৪', 2315 '5': 'à§«', 2316 '6': '৬', 2317 '7': 'à§', 2318 '8': 'à§®', 2319 '9': '৯', 2320 '0': '০', 2321 }, 2322 numberMap = { 2323 'à§§': '1', 2324 '২': '2', 2325 'à§©': '3', 2326 '৪': '4', 2327 'à§«': '5', 2328 '৬': '6', 2329 'à§': '7', 2330 'à§®': '8', 2331 '৯': '9', 2332 '০': '0', 2333 }; 2334 2335 var bn = moment.defineLocale('bn', { 2336 months: 'à¦à¦¾à¦¨à§à§à¦¾à¦°à¦¿_ফà§à¦¬à§à¦°à§à§à¦¾à¦°à¦¿_মারà§à¦_à¦à¦ªà§à¦°à¦¿à¦²_মà§_à¦à§à¦¨_à¦à§à¦²à¦¾à¦_à¦à¦à¦¸à§à¦_সà§à¦ªà§à¦à§à¦®à§à¦¬à¦°_ঠà¦à§à¦à§à¦¬à¦°_নà¦à§à¦®à§à¦¬à¦°_ডিসà§à¦®à§à¦¬à¦°'.split( 2337 '_' 2338 ), 2339 monthsShort: 'à¦à¦¾à¦¨à§_ফà§à¦¬à§à¦°à§_মারà§à¦_à¦à¦ªà§à¦°à¦¿à¦²_মà§_à¦à§à¦¨_à¦à§à¦²à¦¾à¦_à¦à¦à¦¸à§à¦_সà§à¦ªà§à¦_ঠà¦à§à¦à§_নà¦à§_ডিসà§'.split( 2340 '_' 2341 ), 2342 weekdays: 'রবিবার_সà§à¦®à¦¬à¦¾à¦°_মà¦à§à¦à¦²à¦¬à¦¾à¦°_বà§à¦§à¦¬à¦¾à¦°_বà§à¦¹à¦¸à§à¦ªà¦¤à¦¿à¦¬à¦¾à¦°_শà§à¦à§à¦°à¦¬à¦¾à¦°_শনিবার'.split( 2343 '_' 2344 ), 2345 weekdaysShort: 'রবি_সà§à¦®_মà¦à§à¦à¦²_বà§à¦§_বà§à¦¹à¦¸à§à¦ªà¦¤à¦¿_শà§à¦à§à¦°_শনি'.split('_'), 2346 weekdaysMin: 'রবি_সà§à¦®_মà¦à§à¦à¦²_বà§à¦§_বà§à¦¹_শà§à¦à§à¦°_শনি'.split('_'), 2347 longDateFormat: { 2348 LT: 'A h:mm সমà§', 2349 LTS: 'A h:mm:ss সমà§', 2350 L: 'DD/MM/YYYY', 2351 LL: 'D MMMM YYYY', 2352 LLL: 'D MMMM YYYY, A h:mm সমà§', 2353 LLLL: 'dddd, D MMMM YYYY, A h:mm সমà§', 2354 }, 2355 calendar: { 2356 sameDay: '[à¦à¦] LT', 2357 nextDay: '[à¦à¦à¦¾à¦®à§à¦à¦¾à¦²] LT', 2358 nextWeek: 'dddd, LT', 2359 lastDay: '[à¦à¦¤à¦à¦¾à¦²] LT', 2360 lastWeek: '[à¦à¦¤] dddd, LT', 2361 sameElse: 'L', 2362 }, 2363 relativeTime: { 2364 future: '%s পরà§', 2365 past: '%s à¦à¦à§', 2366 s: 'à¦à§à§à¦ সà§à¦à§à¦¨à§à¦¡', 2367 ss: '%d সà§à¦à§à¦¨à§à¦¡', 2368 m: 'à¦à¦ মিনিà¦', 2369 mm: '%d মিনিà¦', 2370 h: 'à¦à¦ à¦à¦¨à§à¦à¦¾', 2371 hh: '%d à¦à¦¨à§à¦à¦¾', 2372 d: 'à¦à¦ দিন', 2373 dd: '%d দিন', 2374 M: 'à¦à¦ মাস', 2375 MM: '%d মাস', 2376 y: 'à¦à¦ বà¦à¦°', 2377 yy: '%d বà¦à¦°', 2378 }, 2379 preparse: function (string) { 2380 return string.replace(/[১২৩৪৫৬à§à§®à§¯à§¦]/g, function (match) { 2381 return numberMap[match]; 2382 }); 2383 }, 2384 postformat: function (string) { 2385 return string.replace(/\d/g, function (match) { 2386 return symbolMap[match]; 2387 }); 2388 }, 2389 meridiemParse: /রাত|সà¦à¦¾à¦²|দà§à¦ªà§à¦°|বিà¦à¦¾à¦²|রাত/, 2390 meridiemHour: function (hour, meridiem) { 2391 if (hour === 12) { 2392 hour = 0; 2393 } 2394 if ( 2395 (meridiem === 'রাত' && hour >= 4) || 2396 (meridiem === 'দà§à¦ªà§à¦°' && hour < 5) || 2397 meridiem === 'বিà¦à¦¾à¦²' 2398 ) { 2399 return hour + 12; 2400 } else { 2401 return hour; 2402 } 2403 }, 2404 meridiem: function (hour, minute, isLower) { 2405 if (hour < 4) { 2406 return 'রাত'; 2407 } else if (hour < 10) { 2408 return 'সà¦à¦¾à¦²'; 2409 } else if (hour < 17) { 2410 return 'দà§à¦ªà§à¦°'; 2411 } else if (hour < 20) { 2412 return 'বিà¦à¦¾à¦²'; 2413 } else { 2414 return 'রাত'; 2415 } 2416 }, 2417 week: { 2418 dow: 0, // Sunday is the first day of the week. 2419 doy: 6, // The week that contains Jan 6th is the first week of the year. 2420 }, 2421 }); 2422 2423 return bn; 2424 2425}))); 2426 2427 2428/***/ }), 2429
vendor: 5,752 bytes, lines 2430-2571
2430/***/ "../../node_modules/moment/locale/bo.js": 2431/*!*********************************************************************************************************************************!*\ 2432 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/bo.js ***! 2433 \*********************************************************************************************************************************/ 2434/*! no static exports found */ 2435/***/ (function(module, exports, __webpack_require__) { 2436 2437//! moment.js locale configuration 2438//! locale : Tibetan [bo] 2439//! author : Thupten N. Chakrishar : https://github.com/vajradog 2440 2441;(function (global, factory) { 2442 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 2443 undefined 2444}(this, (function (moment) { 'use strict'; 2445 2446 //! moment.js locale configuration 2447 2448 var symbolMap = { 2449 '1': '༡', 2450 '2': '༢', 2451 '3': '༣', 2452 '4': '༤', 2453 '5': '༥', 2454 '6': '༦', 2455 '7': '༧', 2456 '8': '༨', 2457 '9': '༩', 2458 '0': '༠', 2459 }, 2460 numberMap = { 2461 '༡': '1', 2462 '༢': '2', 2463 '༣': '3', 2464 '༤': '4', 2465 '༥': '5', 2466 '༦': '6', 2467 '༧': '7', 2468 '༨': '8', 2469 '༩': '9', 2470 '༠': '0', 2471 }; 2472 2473 var bo = moment.defineLocale('bo', { 2474 months: 'à½à¾³à¼à½à¼à½à½à¼à½à½¼_à½à¾³à¼à½à¼à½à½à½²à½¦à¼à½_à½à¾³à¼à½à¼à½à½¦à½´à½à¼à½_à½à¾³à¼à½à¼à½à½à½²à¼à½_à½à¾³à¼à½à¼à½£à¾à¼à½_à½à¾³à¼à½à¼à½à¾²à½´à½à¼à½_à½à¾³à¼à½à¼à½à½à½´à½à¼à½_à½à¾³à¼à½à¼à½à½¢à¾à¾±à½à¼à½_à½à¾³à¼à½à¼à½à½à½´à¼à½_à½à¾³à¼à½à¼à½à½ ུà¼à½_à½à¾³à¼à½à¼à½à½ ུà¼à½à½ ིà½à¼à½_à½à¾³à¼à½à¼à½à½ ུà¼à½à½à½²à½¦à¼à½'.split( 2475 '_' 2476 ), 2477 monthsShort: 'à½à¾³à¼1_à½à¾³à¼2_à½à¾³à¼3_à½à¾³à¼4_à½à¾³à¼5_à½à¾³à¼6_à½à¾³à¼7_à½à¾³à¼8_à½à¾³à¼9_à½à¾³à¼10_à½à¾³à¼11_à½à¾³à¼12'.split( 2478 '_' 2479 ), 2480 monthsShortRegex: /^(à½à¾³à¼\d{1,2})/, 2481 monthsParseExact: true, 2482 weekdays: 'à½à½à½ à¼à½à½²à¼à½à¼_à½à½à½ à¼à½à¾³à¼à½à¼_à½à½à½ à¼à½à½²à½à¼à½à½à½¢à¼_à½à½à½ à¼à½£à¾·à½à¼à½à¼_à½à½à½ à¼à½à½´à½¢à¼à½à½´_à½à½à½ à¼à½à¼à½¦à½à½¦à¼_à½à½à½ à¼à½¦à¾¤à½ºà½à¼à½à¼'.split( 2483 '_' 2484 ), 2485 weekdaysShort: 'à½à½²à¼à½à¼_à½à¾³à¼à½à¼_à½à½²à½à¼à½à½à½¢à¼_ལྷà½à¼à½à¼_à½à½´à½¢à¼à½à½´_à½à¼à½¦à½à½¦à¼_སྤེà½à¼à½à¼'.split( 2486 '_' 2487 ), 2488 weekdaysMin: 'à½à½²_à½à¾³_à½à½²à½_ལྷà½_à½à½´à½¢_སà½à½¦_སྤེà½'.split('_'), 2489 longDateFormat: { 2490 LT: 'A h:mm', 2491 LTS: 'A h:mm:ss', 2492 L: 'DD/MM/YYYY', 2493 LL: 'D MMMM YYYY', 2494 LLL: 'D MMMM YYYY, A h:mm', 2495 LLLL: 'dddd, D MMMM YYYY, A h:mm', 2496 }, 2497 calendar: { 2498 sameDay: '[à½à½²à¼à½¢à½²à½] LT', 2499 nextDay: '[སà½à¼à½à½²à½] LT', 2500 nextWeek: '[à½à½à½´à½à¼à½à¾²à½à¼à½¢à¾à½ºà½¦à¼à½], LT', 2501 lastDay: '[à½à¼à½¦à½] LT', 2502 lastWeek: '[à½à½à½´à½à¼à½à¾²à½à¼à½à½à½ à¼à½] dddd, LT', 2503 sameElse: 'L', 2504 }, 2505 relativeTime: { 2506 future: '%s ལà¼', 2507 past: '%s སà¾à½à¼à½£', 2508 s: 'ལà½à¼à½¦à½', 2509 ss: '%d སà¾à½¢à¼à½à¼', 2510 m: 'སà¾à½¢à¼à½à¼à½à½ ིà½', 2511 mm: '%d སà¾à½¢à¼à½', 2512 h: 'à½à½´à¼à½à½¼à½à¼à½à½ ིà½', 2513 hh: '%d à½à½´à¼à½à½¼à½', 2514 d: 'à½à½²à½à¼à½à½ ིà½', 2515 dd: '%d à½à½²à½à¼', 2516 M: 'à½à¾³à¼à½à¼à½à½ ིà½', 2517 MM: '%d à½à¾³à¼à½', 2518 y: 'ལོà¼à½à½ ིà½', 2519 yy: '%d ལོ', 2520 }, 2521 preparse: function (string) { 2522 return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) { 2523 return numberMap[match]; 2524 }); 2525 }, 2526 postformat: function (string) { 2527 return string.replace(/\d/g, function (match) { 2528 return symbolMap[match]; 2529 }); 2530 }, 2531 meridiemParse: /à½à½à½à¼à½à½¼|à½à½¼à½à½¦à¼à½à½¦|à½à½²à½à¼à½à½´à½|à½à½à½¼à½à¼à½à½|à½à½à½à¼à½à½¼/, 2532 meridiemHour: function (hour, meridiem) { 2533 if (hour === 12) { 2534 hour = 0; 2535 } 2536 if ( 2537 (meridiem === 'à½à½à½à¼à½à½¼' && hour >= 4) || 2538 (meridiem === 'à½à½²à½à¼à½à½´à½' && hour < 5) || 2539 meridiem === 'à½à½à½¼à½à¼à½à½' 2540 ) { 2541 return hour + 12; 2542 } else { 2543 return hour; 2544 } 2545 }, 2546 meridiem: function (hour, minute, isLower) { 2547 if (hour < 4) { 2548 return 'à½à½à½à¼à½à½¼'; 2549 } else if (hour < 10) { 2550 return 'à½à½¼à½à½¦à¼à½à½¦'; 2551 } else if (hour < 17) { 2552 return 'à½à½²à½à¼à½à½´à½'; 2553 } else if (hour < 20) { 2554 return 'à½à½à½¼à½à¼à½à½'; 2555 } else { 2556 return 'à½à½à½à¼à½à½¼'; 2557 } 2558 }, 2559 week: { 2560 dow: 0, // Sunday is the first day of the week. 2561 doy: 6, // The week that contains Jan 6th is the first week of the year. 2562 }, 2563 }); 2564 2565 return bo; 2566 2567}))); 2568 2569 2570/***/ }), 2571
vendor: 6,088 bytes, lines 2572-2756
2572/***/ "../../node_modules/moment/locale/br.js": 2573/*!*********************************************************************************************************************************!*\ 2574 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/br.js ***! 2575 \*********************************************************************************************************************************/ 2576/*! no static exports found */ 2577/***/ (function(module, exports, __webpack_require__) { 2578 2579//! moment.js locale configuration 2580//! locale : Breton [br] 2581//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou 2582 2583;(function (global, factory) { 2584 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 2585 undefined 2586}(this, (function (moment) { 'use strict'; 2587 2588 //! moment.js locale configuration 2589 2590 function relativeTimeWithMutation(number, withoutSuffix, key) { 2591 var format = { 2592 mm: 'munutenn', 2593 MM: 'miz', 2594 dd: 'devezh', 2595 }; 2596 return number + ' ' + mutation(format[key], number); 2597 } 2598 function specialMutationForYears(number) { 2599 switch (lastNumber(number)) { 2600 case 1: 2601 case 3: 2602 case 4: 2603 case 5: 2604 case 9: 2605 return number + ' bloaz'; 2606 default: 2607 return number + ' vloaz'; 2608 } 2609 } 2610 function lastNumber(number) { 2611 if (number > 9) { 2612 return lastNumber(number % 10); 2613 } 2614 return number; 2615 } 2616 function mutation(text, number) { 2617 if (number === 2) { 2618 return softMutation(text); 2619 } 2620 return text; 2621 } 2622 function softMutation(text) { 2623 var mutationTable = { 2624 m: 'v', 2625 b: 'v', 2626 d: 'z', 2627 }; 2628 if (mutationTable[text.charAt(0)] === undefined) { 2629 return text; 2630 } 2631 return mutationTable[text.charAt(0)] + text.substring(1); 2632 } 2633 2634 var monthsParse = [ 2635 /^gen/i, 2636 /^c[ʼ\']hwe/i, 2637 /^meu/i, 2638 /^ebr/i, 2639 /^mae/i, 2640 /^(mez|eve)/i, 2641 /^gou/i, 2642 /^eos/i, 2643 /^gwe/i, 2644 /^her/i, 2645 /^du/i, 2646 /^ker/i, 2647 ], 2648 monthsRegex = /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i, 2649 monthsStrictRegex = /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i, 2650 monthsShortStrictRegex = /^(gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i, 2651 fullWeekdaysParse = [ 2652 /^sul/i, 2653 /^lun/i, 2654 /^meurzh/i, 2655 /^merc[ʼ\']her/i, 2656 /^yaou/i, 2657 /^gwener/i, 2658 /^sadorn/i, 2659 ], 2660 shortWeekdaysParse = [ 2661 /^Sul/i, 2662 /^Lun/i, 2663 /^Meu/i, 2664 /^Mer/i, 2665 /^Yao/i, 2666 /^Gwe/i, 2667 /^Sad/i, 2668 ], 2669 minWeekdaysParse = [ 2670 /^Su/i, 2671 /^Lu/i, 2672 /^Me([^r]|$)/i, 2673 /^Mer/i, 2674 /^Ya/i, 2675 /^Gw/i, 2676 /^Sa/i, 2677 ]; 2678 2679 var br = moment.defineLocale('br', { 2680 months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split( 2681 '_' 2682 ), 2683 monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'), 2684 weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'), 2685 weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'), 2686 weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'), 2687 weekdaysParse: minWeekdaysParse, 2688 fullWeekdaysParse: fullWeekdaysParse, 2689 shortWeekdaysParse: shortWeekdaysParse, 2690 minWeekdaysParse: minWeekdaysParse, 2691 2692 monthsRegex: monthsRegex, 2693 monthsShortRegex: monthsRegex, 2694 monthsStrictRegex: monthsStrictRegex, 2695 monthsShortStrictRegex: monthsShortStrictRegex, 2696 monthsParse: monthsParse, 2697 longMonthsParse: monthsParse, 2698 shortMonthsParse: monthsParse, 2699 2700 longDateFormat: { 2701 LT: 'HH:mm', 2702 LTS: 'HH:mm:ss', 2703 L: 'DD/MM/YYYY', 2704 LL: 'D [a viz] MMMM YYYY', 2705 LLL: 'D [a viz] MMMM YYYY HH:mm', 2706 LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm', 2707 }, 2708 calendar: { 2709 sameDay: '[Hiziv da] LT', 2710 nextDay: '[Warcʼhoazh da] LT', 2711 nextWeek: 'dddd [da] LT', 2712 lastDay: '[Decʼh da] LT', 2713 lastWeek: 'dddd [paset da] LT', 2714 sameElse: 'L', 2715 }, 2716 relativeTime: { 2717 future: 'a-benn %s', 2718 past: '%s ʼzo', 2719 s: 'un nebeud segondennoù', 2720 ss: '%d eilenn', 2721 m: 'ur vunutenn', 2722 mm: relativeTimeWithMutation, 2723 h: 'un eur', 2724 hh: '%d eur', 2725 d: 'un devezh', 2726 dd: relativeTimeWithMutation, 2727 M: 'ur miz', 2728 MM: relativeTimeWithMutation, 2729 y: 'ur bloaz', 2730 yy: specialMutationForYears, 2731 }, 2732 dayOfMonthOrdinalParse: /\d{1,2}(añ|vet)/, 2733 ordinal: function (number) { 2734 var output = number === 1 ? 'añ' : 'vet'; 2735 return number + output; 2736 }, 2737 week: { 2738 dow: 1, // Monday is the first day of the week. 2739 doy: 4, // The week that contains Jan 4th is the first week of the year. 2740 }, 2741 meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn 2742 isPM: function (token) { 2743 return token === 'g.m.'; 2744 }, 2745 meridiem: function (hour, minute, isLower) { 2746 return hour < 12 ? 'a.m.' : 'g.m.'; 2747 }, 2748 }); 2749 2750 return br; 2751 2752}))); 2753 2754 2755/***/ }), 2756
vendor: 5,955 bytes, lines 2757-2925
2757/***/ "../../node_modules/moment/locale/bs.js": 2758/*!*********************************************************************************************************************************!*\ 2759 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/bs.js ***! 2760 \*********************************************************************************************************************************/ 2761/*! no static exports found */ 2762/***/ (function(module, exports, __webpack_require__) { 2763 2764//! moment.js locale configuration 2765//! locale : Bosnian [bs] 2766//! author : Nedim Cholich : https://github.com/frontyard 2767//! based on (hr) translation by Bojan MarkoviÄ 2768 2769;(function (global, factory) { 2770 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 2771 undefined 2772}(this, (function (moment) { 'use strict'; 2773 2774 //! moment.js locale configuration 2775 2776 function translate(number, withoutSuffix, key) { 2777 var result = number + ' '; 2778 switch (key) { 2779 case 'ss': 2780 if (number === 1) { 2781 result += 'sekunda'; 2782 } else if (number === 2 || number === 3 || number === 4) { 2783 result += 'sekunde'; 2784 } else { 2785 result += 'sekundi'; 2786 } 2787 return result; 2788 case 'm': 2789 return withoutSuffix ? 'jedna minuta' : 'jedne minute'; 2790 case 'mm': 2791 if (number === 1) { 2792 result += 'minuta'; 2793 } else if (number === 2 || number === 3 || number === 4) { 2794 result += 'minute'; 2795 } else { 2796 result += 'minuta'; 2797 } 2798 return result; 2799 case 'h': 2800 return withoutSuffix ? 'jedan sat' : 'jednog sata'; 2801 case 'hh': 2802 if (number === 1) { 2803 result += 'sat'; 2804 } else if (number === 2 || number === 3 || number === 4) { 2805 result += 'sata'; 2806 } else { 2807 result += 'sati'; 2808 } 2809 return result; 2810 case 'dd': 2811 if (number === 1) { 2812 result += 'dan'; 2813 } else { 2814 result += 'dana'; 2815 } 2816 return result; 2817 case 'MM': 2818 if (number === 1) { 2819 result += 'mjesec'; 2820 } else if (number === 2 || number === 3 || number === 4) { 2821 result += 'mjeseca'; 2822 } else { 2823 result += 'mjeseci'; 2824 } 2825 return result; 2826 case 'yy': 2827 if (number === 1) { 2828 result += 'godina'; 2829 } else if (number === 2 || number === 3 || number === 4) { 2830 result += 'godine'; 2831 } else { 2832 result += 'godina'; 2833 } 2834 return result; 2835 } 2836 } 2837 2838 var bs = moment.defineLocale('bs', { 2839 months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split( 2840 '_' 2841 ), 2842 monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split( 2843 '_' 2844 ), 2845 monthsParseExact: true, 2846 weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_Äetvrtak_petak_subota'.split( 2847 '_' 2848 ), 2849 weekdaysShort: 'ned._pon._uto._sri._Äet._pet._sub.'.split('_'), 2850 weekdaysMin: 'ne_po_ut_sr_Äe_pe_su'.split('_'), 2851 weekdaysParseExact: true, 2852 longDateFormat: { 2853 LT: 'H:mm', 2854 LTS: 'H:mm:ss', 2855 L: 'DD.MM.YYYY', 2856 LL: 'D. MMMM YYYY', 2857 LLL: 'D. MMMM YYYY H:mm', 2858 LLLL: 'dddd, D. MMMM YYYY H:mm', 2859 }, 2860 calendar: { 2861 sameDay: '[danas u] LT', 2862 nextDay: '[sutra u] LT', 2863 nextWeek: function () { 2864 switch (this.day()) { 2865 case 0: 2866 return '[u] [nedjelju] [u] LT'; 2867 case 3: 2868 return '[u] [srijedu] [u] LT'; 2869 case 6: 2870 return '[u] [subotu] [u] LT'; 2871 case 1: 2872 case 2: 2873 case 4: 2874 case 5: 2875 return '[u] dddd [u] LT'; 2876 } 2877 }, 2878 lastDay: '[juÄer u] LT', 2879 lastWeek: function () { 2880 switch (this.day()) { 2881 case 0: 2882 case 3: 2883 return '[proÅ¡lu] dddd [u] LT'; 2884 case 6: 2885 return '[proÅ¡le] [subote] [u] LT'; 2886 case 1: 2887 case 2: 2888 case 4: 2889 case 5: 2890 return '[proÅ¡li] dddd [u] LT'; 2891 } 2892 }, 2893 sameElse: 'L', 2894 }, 2895 relativeTime: { 2896 future: 'za %s', 2897 past: 'prije %s', 2898 s: 'par sekundi', 2899 ss: translate, 2900 m: translate, 2901 mm: translate, 2902 h: translate, 2903 hh: translate, 2904 d: 'dan', 2905 dd: translate, 2906 M: 'mjesec', 2907 MM: translate, 2908 y: 'godinu', 2909 yy: translate, 2910 }, 2911 dayOfMonthOrdinalParse: /\d{1,2}\./, 2912 ordinal: '%d.', 2913 week: { 2914 dow: 1, // Monday is the first day of the week. 2915 doy: 7, // The week that contains Jan 7th is the first week of the year. 2916 }, 2917 }); 2918 2919 return bs; 2920 2921}))); 2922 2923 2924/***/ }), 2925
vendor: 4,223 bytes, lines 2926-3042
2926/***/ "../../node_modules/moment/locale/ca.js": 2927/*!*********************************************************************************************************************************!*\ 2928 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ca.js ***! 2929 \*********************************************************************************************************************************/ 2930/*! no static exports found */ 2931/***/ (function(module, exports, __webpack_require__) { 2932 2933//! moment.js locale configuration 2934//! locale : Catalan [ca] 2935//! author : Juan G. Hurtado : https://github.com/juanghurtado 2936 2937;(function (global, factory) { 2938 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 2939 undefined 2940}(this, (function (moment) { 'use strict'; 2941 2942 //! moment.js locale configuration 2943 2944 var ca = moment.defineLocale('ca', { 2945 months: { 2946 standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split( 2947 '_' 2948 ), 2949 format: "de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split( 2950 '_' 2951 ), 2952 isFormat: /D[oD]?(\s)+MMMM/, 2953 }, 2954 monthsShort: 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split( 2955 '_' 2956 ), 2957 monthsParseExact: true, 2958 weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split( 2959 '_' 2960 ), 2961 weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'), 2962 weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'), 2963 weekdaysParseExact: true, 2964 longDateFormat: { 2965 LT: 'H:mm', 2966 LTS: 'H:mm:ss', 2967 L: 'DD/MM/YYYY', 2968 LL: 'D MMMM [de] YYYY', 2969 ll: 'D MMM YYYY', 2970 LLL: 'D MMMM [de] YYYY [a les] H:mm', 2971 lll: 'D MMM YYYY, H:mm', 2972 LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm', 2973 llll: 'ddd D MMM YYYY, H:mm', 2974 }, 2975 calendar: { 2976 sameDay: function () { 2977 return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT'; 2978 }, 2979 nextDay: function () { 2980 return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT'; 2981 }, 2982 nextWeek: function () { 2983 return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT'; 2984 }, 2985 lastDay: function () { 2986 return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT'; 2987 }, 2988 lastWeek: function () { 2989 return ( 2990 '[el] dddd [passat a ' + 2991 (this.hours() !== 1 ? 'les' : 'la') + 2992 '] LT' 2993 ); 2994 }, 2995 sameElse: 'L', 2996 }, 2997 relativeTime: { 2998 future: "d'aquà %s", 2999 past: 'fa %s', 3000 s: 'uns segons', 3001 ss: '%d segons', 3002 m: 'un minut', 3003 mm: '%d minuts', 3004 h: 'una hora', 3005 hh: '%d hores', 3006 d: 'un dia', 3007 dd: '%d dies', 3008 M: 'un mes', 3009 MM: '%d mesos', 3010 y: 'un any', 3011 yy: '%d anys', 3012 }, 3013 dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/, 3014 ordinal: function (number, period) { 3015 var output = 3016 number === 1 3017 ? 'r' 3018 : number === 2 3019 ? 'n' 3020 : number === 3 3021 ? 'r' 3022 : number === 4 3023 ? 't' 3024 : 'è'; 3025 if (period === 'w' || period === 'W') { 3026 output = 'a'; 3027 } 3028 return number + output; 3029 }, 3030 week: { 3031 dow: 1, // Monday is the first day of the week. 3032 doy: 4, // The week that contains Jan 4th is the first week of the year. 3033 }, 3034 }); 3035 3036 return ca; 3037 3038}))); 3039 3040 3041/***/ }), 3042
vendor: 8,097 bytes, lines 3043-3233
3043/***/ "../../node_modules/moment/locale/cs.js": 3044/*!*********************************************************************************************************************************!*\ 3045 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/cs.js ***! 3046 \*********************************************************************************************************************************/ 3047/*! no static exports found */ 3048/***/ (function(module, exports, __webpack_require__) { 3049 3050//! moment.js locale configuration 3051//! locale : Czech [cs] 3052//! author : petrbela : https://github.com/petrbela 3053 3054;(function (global, factory) { 3055 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 3056 undefined 3057}(this, (function (moment) { 'use strict'; 3058 3059 //! moment.js locale configuration 3060 3061 var months = 'leden_únor_bÅezen_duben_kvÄten_Äerven_Äervenec_srpen_záÅÃ_ÅÃjen_listopad_prosinec'.split( 3062 '_' 3063 ), 3064 monthsShort = 'led_úno_bÅe_dub_kvÄ_Ävn_Ävc_srp_záÅ_ÅÃj_lis_pro'.split('_'), 3065 monthsParse = [ 3066 /^led/i, 3067 /^úno/i, 3068 /^bÅe/i, 3069 /^dub/i, 3070 /^kvÄ/i, 3071 /^(Ävn|Äerven$|Äervna)/i, 3072 /^(Ävc|Äervenec|Äervence)/i, 3073 /^srp/i, 3074 /^záÅ/i, 3075 /^ÅÃj/i, 3076 /^lis/i, 3077 /^pro/i, 3078 ], 3079 // NOTE: 'Äerven' is substring of 'Äervenec'; therefore 'Äervenec' must precede 'Äerven' in the regex to be fully matched. 3080 // Otherwise parser matches '1. Äervenec' as '1. Äerven' + 'ec'. 3081 monthsRegex = /^(leden|únor|bÅezen|duben|kvÄten|Äervenec|Äervence|Äerven|Äervna|srpen|záÅÃ|ÅÃjen|listopad|prosinec|led|úno|bÅe|dub|kvÄ|Ävn|Ävc|srp|záÅ|ÅÃj|lis|pro)/i; 3082 3083 function plural(n) { 3084 return n > 1 && n < 5 && ~~(n / 10) !== 1; 3085 } 3086 function translate(number, withoutSuffix, key, isFuture) { 3087 var result = number + ' '; 3088 switch (key) { 3089 case 's': // a few seconds / in a few seconds / a few seconds ago 3090 return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami'; 3091 case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago 3092 if (withoutSuffix || isFuture) { 3093 return result + (plural(number) ? 'sekundy' : 'sekund'); 3094 } else { 3095 return result + 'sekundami'; 3096 } 3097 case 'm': // a minute / in a minute / a minute ago 3098 return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou'; 3099 case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago 3100 if (withoutSuffix || isFuture) { 3101 return result + (plural(number) ? 'minuty' : 'minut'); 3102 } else { 3103 return result + 'minutami'; 3104 } 3105 case 'h': // an hour / in an hour / an hour ago 3106 return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou'; 3107 case 'hh': // 9 hours / in 9 hours / 9 hours ago 3108 if (withoutSuffix || isFuture) { 3109 return result + (plural(number) ? 'hodiny' : 'hodin'); 3110 } else { 3111 return result + 'hodinami'; 3112 } 3113 case 'd': // a day / in a day / a day ago 3114 return withoutSuffix || isFuture ? 'den' : 'dnem'; 3115 case 'dd': // 9 days / in 9 days / 9 days ago 3116 if (withoutSuffix || isFuture) { 3117 return result + (plural(number) ? 'dny' : 'dnÃ'); 3118 } else { 3119 return result + 'dny'; 3120 } 3121 case 'M': // a month / in a month / a month ago 3122 return withoutSuffix || isFuture ? 'mÄsÃc' : 'mÄsÃcem'; 3123 case 'MM': // 9 months / in 9 months / 9 months ago 3124 if (withoutSuffix || isFuture) { 3125 return result + (plural(number) ? 'mÄsÃce' : 'mÄsÃců'); 3126 } else { 3127 return result + 'mÄsÃci'; 3128 } 3129 case 'y': // a year / in a year / a year ago 3130 return withoutSuffix || isFuture ? 'rok' : 'rokem'; 3131 case 'yy': // 9 years / in 9 years / 9 years ago 3132 if (withoutSuffix || isFuture) { 3133 return result + (plural(number) ? 'roky' : 'let'); 3134 } else { 3135 return result + 'lety'; 3136 } 3137 } 3138 } 3139 3140 var cs = moment.defineLocale('cs', { 3141 months: months, 3142 monthsShort: monthsShort, 3143 monthsRegex: monthsRegex, 3144 monthsShortRegex: monthsRegex, 3145 // NOTE: 'Äerven' is substring of 'Äervenec'; therefore 'Äervenec' must precede 'Äerven' in the regex to be fully matched. 3146 // Otherwise parser matches '1. Äervenec' as '1. Äerven' + 'ec'. 3147 monthsStrictRegex: /^(leden|ledna|února|únor|bÅezen|bÅezna|duben|dubna|kvÄten|kvÄtna|Äervenec|Äervence|Äerven|Äervna|srpen|srpna|záÅÃ|ÅÃjen|ÅÃjna|listopadu|listopad|prosinec|prosince)/i, 3148 monthsShortStrictRegex: /^(led|úno|bÅe|dub|kvÄ|Ävn|Ävc|srp|záÅ|ÅÃj|lis|pro)/i, 3149 monthsParse: monthsParse, 3150 longMonthsParse: monthsParse, 3151 shortMonthsParse: monthsParse, 3152 weekdays: 'nedÄle_pondÄlÃ_úterý_stÅeda_Ätvrtek_pátek_sobota'.split('_'), 3153 weekdaysShort: 'ne_po_út_st_Ät_pá_so'.split('_'), 3154 weekdaysMin: 'ne_po_út_st_Ät_pá_so'.split('_'), 3155 longDateFormat: { 3156 LT: 'H:mm', 3157 LTS: 'H:mm:ss', 3158 L: 'DD.MM.YYYY', 3159 LL: 'D. MMMM YYYY', 3160 LLL: 'D. MMMM YYYY H:mm', 3161 LLLL: 'dddd D. MMMM YYYY H:mm', 3162 l: 'D. M. YYYY', 3163 }, 3164 calendar: { 3165 sameDay: '[dnes v] LT', 3166 nextDay: '[zÃtra v] LT', 3167 nextWeek: function () { 3168 switch (this.day()) { 3169 case 0: 3170 return '[v nedÄli v] LT'; 3171 case 1: 3172 case 2: 3173 return '[v] dddd [v] LT'; 3174 case 3: 3175 return '[ve stÅedu v] LT'; 3176 case 4: 3177 return '[ve Ätvrtek v] LT'; 3178 case 5: 3179 return '[v pátek v] LT'; 3180 case 6: 3181 return '[v sobotu v] LT'; 3182 } 3183 }, 3184 lastDay: '[vÄera v] LT', 3185 lastWeek: function () { 3186 switch (this.day()) { 3187 case 0: 3188 return '[minulou nedÄli v] LT'; 3189 case 1: 3190 case 2: 3191 return '[minulé] dddd [v] LT'; 3192 case 3: 3193 return '[minulou stÅedu v] LT'; 3194 case 4: 3195 case 5: 3196 return '[minulý] dddd [v] LT'; 3197 case 6: 3198 return '[minulou sobotu v] LT'; 3199 } 3200 }, 3201 sameElse: 'L', 3202 }, 3203 relativeTime: { 3204 future: 'za %s', 3205 past: 'pÅed %s', 3206 s: translate, 3207 ss: translate, 3208 m: translate, 3209 mm: translate, 3210 h: translate, 3211 hh: translate, 3212 d: translate, 3213 dd: translate, 3214 M: translate, 3215 MM: translate, 3216 y: translate, 3217 yy: translate, 3218 }, 3219 dayOfMonthOrdinalParse: /\d{1,2}\./, 3220 ordinal: '%d.', 3221 week: { 3222 dow: 1, // Monday is the first day of the week. 3223 doy: 4, // The week that contains Jan 4th is the first week of the year. 3224 }, 3225 }); 3226 3227 return cs; 3228 3229}))); 3230 3231 3232/***/ }), 3233
vendor: 3,394 bytes, lines 3234-3315
3234/***/ "../../node_modules/moment/locale/cv.js": 3235/*!*********************************************************************************************************************************!*\ 3236 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/cv.js ***! 3237 \*********************************************************************************************************************************/ 3238/*! no static exports found */ 3239/***/ (function(module, exports, __webpack_require__) { 3240 3241//! moment.js locale configuration 3242//! locale : Chuvash [cv] 3243//! author : Anatoly Mironov : https://github.com/mirontoli 3244 3245;(function (global, factory) { 3246 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 3247 undefined 3248}(this, (function (moment) { 'use strict'; 3249 3250 //! moment.js locale configuration 3251 3252 var cv = moment.defineLocale('cv', { 3253 months: 'кÓÑлаÑ_наÑÓÑ_пÑÑ_ака_май_Ò«ÓÑÑме_ÑÑÓ_Ò«ÑÑла_авÓн_Ñпа_Ñӳк_ÑаÑÑав'.split( 3254 '_' 3255 ), 3256 monthsShort: 'кÓÑ_наÑ_пÑÑ_ака_май_Ò«ÓÑ_ÑÑÓ_Ò«ÑÑ_авн_Ñпа_Ñӳк_ÑаÑ'.split('_'), 3257 weekdays: 'вÑÑÑаÑникÑн_ÑÑнÑикÑн_ÑÑлаÑикÑн_ÑнкÑн_кÓҫнеÑникÑн_ÑÑнекÑн_ÑÓмаÑкÑн'.split( 3258 '_' 3259 ), 3260 weekdaysShort: 'вÑÑ_ÑÑн_ÑÑл_Ñн_кÓÒ«_ÑÑн_ÑÓм'.split('_'), 3261 weekdaysMin: 'вÑ_Ñн_ÑÑ_Ñн_кҫ_ÑÑ_Ñм'.split('_'), 3262 longDateFormat: { 3263 LT: 'HH:mm', 3264 LTS: 'HH:mm:ss', 3265 L: 'DD-MM-YYYY', 3266 LL: 'YYYY [Ò«ÑÐ»Ñ Ð¸] MMMM [ÑйÓÑ Óн] D[-мÓÑÓ]', 3267 LLL: 'YYYY [Ò«ÑÐ»Ñ Ð¸] MMMM [ÑйÓÑ Óн] D[-мÓÑÓ], HH:mm', 3268 LLLL: 'dddd, YYYY [Ò«ÑÐ»Ñ Ð¸] MMMM [ÑйÓÑ Óн] D[-мÓÑÓ], HH:mm', 3269 }, 3270 calendar: { 3271 sameDay: '[ÐаÑн] LT [ÑÐµÑ ÐµÑÑе]', 3272 nextDay: '[ЫÑан] LT [ÑÐµÑ ÐµÑÑе]', 3273 lastDay: '[ÓнеÑ] LT [ÑÐµÑ ÐµÑÑе]', 3274 nextWeek: '[ҪиÑеÑ] dddd LT [ÑÐµÑ ÐµÑÑе]', 3275 lastWeek: '[ÐÑÑнÓ] dddd LT [ÑÐµÑ ÐµÑÑе]', 3276 sameElse: 'L', 3277 }, 3278 relativeTime: { 3279 future: function (output) { 3280 var affix = /ÑÐµÑ ÐµÑ$/i.exec(output) 3281 ? 'Ñен' 3282 : /Ò«Ñл$/i.exec(output) 3283 ? 'Ñан' 3284 : 'Ñан'; 3285 return output + affix; 3286 }, 3287 past: '%s каÑлла', 3288 s: 'пÓÑ-ик ҫеккÑнÑ', 3289 ss: '%d ҫеккÑнÑ', 3290 m: 'пÓÑ Ð¼Ð¸Ð½ÑÑ', 3291 mm: '%d минÑÑ', 3292 h: 'пÓÑ ÑÐµÑ ÐµÑ', 3293 hh: '%d ÑÐµÑ ÐµÑ', 3294 d: 'пÓÑ ÐºÑн', 3295 dd: '%d кÑн', 3296 M: 'пÓÑ ÑйÓÑ ', 3297 MM: '%d ÑйÓÑ ', 3298 y: 'пÓÑ Ò«Ñл', 3299 yy: '%d Ò«Ñл', 3300 }, 3301 dayOfMonthOrdinalParse: /\d{1,2}-мÓÑ/, 3302 ordinal: '%d-мÓÑ', 3303 week: { 3304 dow: 1, // Monday is the first day of the week. 3305 doy: 7, // The week that contains Jan 7th is the first week of the year. 3306 }, 3307 }); 3308 3309 return cv; 3310 3311}))); 3312 3313 3314/***/ }), 3315
vendor: 4,058 bytes, lines 3316-3432
3316/***/ "../../node_modules/moment/locale/cy.js": 3317/*!*********************************************************************************************************************************!*\ 3318 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/cy.js ***! 3319 \*********************************************************************************************************************************/ 3320/*! no static exports found */ 3321/***/ (function(module, exports, __webpack_require__) { 3322 3323//! moment.js locale configuration 3324//! locale : Welsh [cy] 3325//! author : Robert Allen : https://github.com/robgallen 3326//! author : https://github.com/ryangreaves 3327 3328;(function (global, factory) { 3329 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 3330 undefined 3331}(this, (function (moment) { 'use strict'; 3332 3333 //! moment.js locale configuration 3334 3335 var cy = moment.defineLocale('cy', { 3336 months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split( 3337 '_' 3338 ), 3339 monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split( 3340 '_' 3341 ), 3342 weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split( 3343 '_' 3344 ), 3345 weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'), 3346 weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'), 3347 weekdaysParseExact: true, 3348 // time formats are the same as en-gb 3349 longDateFormat: { 3350 LT: 'HH:mm', 3351 LTS: 'HH:mm:ss', 3352 L: 'DD/MM/YYYY', 3353 LL: 'D MMMM YYYY', 3354 LLL: 'D MMMM YYYY HH:mm', 3355 LLLL: 'dddd, D MMMM YYYY HH:mm', 3356 }, 3357 calendar: { 3358 sameDay: '[Heddiw am] LT', 3359 nextDay: '[Yfory am] LT', 3360 nextWeek: 'dddd [am] LT', 3361 lastDay: '[Ddoe am] LT', 3362 lastWeek: 'dddd [diwethaf am] LT', 3363 sameElse: 'L', 3364 }, 3365 relativeTime: { 3366 future: 'mewn %s', 3367 past: '%s yn ôl', 3368 s: 'ychydig eiliadau', 3369 ss: '%d eiliad', 3370 m: 'munud', 3371 mm: '%d munud', 3372 h: 'awr', 3373 hh: '%d awr', 3374 d: 'diwrnod', 3375 dd: '%d diwrnod', 3376 M: 'mis', 3377 MM: '%d mis', 3378 y: 'blwyddyn', 3379 yy: '%d flynedd', 3380 }, 3381 dayOfMonthOrdinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/, 3382 // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh 3383 ordinal: function (number) { 3384 var b = number, 3385 output = '', 3386 lookup = [ 3387 '', 3388 'af', 3389 'il', 3390 'ydd', 3391 'ydd', 3392 'ed', 3393 'ed', 3394 'ed', 3395 'fed', 3396 'fed', 3397 'fed', // 1af to 10fed 3398 'eg', 3399 'fed', 3400 'eg', 3401 'eg', 3402 'fed', 3403 'eg', 3404 'eg', 3405 'fed', 3406 'eg', 3407 'fed', // 11eg to 20fed 3408 ]; 3409 if (b > 20) { 3410 if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) { 3411 output = 'fed'; // not 30ain, 70ain or 90ain 3412 } else { 3413 output = 'ain'; 3414 } 3415 } else if (b > 0) { 3416 output = lookup[b]; 3417 } 3418 return number + output; 3419 }, 3420 week: { 3421 dow: 1, // Monday is the first day of the week. 3422 doy: 4, // The week that contains Jan 4th is the first week of the year. 3423 }, 3424 }); 3425 3426 return cy; 3427 3428}))); 3429 3430 3431/***/ }), 3432
vendor: 2,653 bytes, lines 3433-3505
3433/***/ "../../node_modules/moment/locale/da.js": 3434/*!*********************************************************************************************************************************!*\ 3435 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/da.js ***! 3436 \*********************************************************************************************************************************/ 3437/*! no static exports found */ 3438/***/ (function(module, exports, __webpack_require__) { 3439 3440//! moment.js locale configuration 3441//! locale : Danish [da] 3442//! author : Ulrik Nielsen : https://github.com/mrbase 3443 3444;(function (global, factory) { 3445 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 3446 undefined 3447}(this, (function (moment) { 'use strict'; 3448 3449 //! moment.js locale configuration 3450 3451 var da = moment.defineLocale('da', { 3452 months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split( 3453 '_' 3454 ), 3455 monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), 3456 weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), 3457 weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'), 3458 weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'), 3459 longDateFormat: { 3460 LT: 'HH:mm', 3461 LTS: 'HH:mm:ss', 3462 L: 'DD.MM.YYYY', 3463 LL: 'D. MMMM YYYY', 3464 LLL: 'D. MMMM YYYY HH:mm', 3465 LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm', 3466 }, 3467 calendar: { 3468 sameDay: '[i dag kl.] LT', 3469 nextDay: '[i morgen kl.] LT', 3470 nextWeek: 'på dddd [kl.] LT', 3471 lastDay: '[i går kl.] LT', 3472 lastWeek: '[i] dddd[s kl.] LT', 3473 sameElse: 'L', 3474 }, 3475 relativeTime: { 3476 future: 'om %s', 3477 past: '%s siden', 3478 s: 'få sekunder', 3479 ss: '%d sekunder', 3480 m: 'et minut', 3481 mm: '%d minutter', 3482 h: 'en time', 3483 hh: '%d timer', 3484 d: 'en dag', 3485 dd: '%d dage', 3486 M: 'en måned', 3487 MM: '%d måneder', 3488 y: 'et år', 3489 yy: '%d år', 3490 }, 3491 dayOfMonthOrdinalParse: /\d{1,2}\./, 3492 ordinal: '%d.', 3493 week: { 3494 dow: 1, // Monday is the first day of the week. 3495 doy: 4, // The week that contains Jan 4th is the first week of the year. 3496 }, 3497 }); 3498 3499 return da; 3500 3501}))); 3502 3503 3504/***/ }), 3505
vendor: 3,779 bytes, lines 3506-3604
3506/***/ "../../node_modules/moment/locale/de-at.js": 3507/*!************************************************************************************************************************************!*\ 3508 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/de-at.js ***! 3509 \************************************************************************************************************************************/ 3510/*! no static exports found */ 3511/***/ (function(module, exports, __webpack_require__) { 3512 3513//! moment.js locale configuration 3514//! locale : German (Austria) [de-at] 3515//! author : lluchs : https://github.com/lluchs 3516//! author: Menelion Elensúle: https://github.com/Oire 3517//! author : Martin Groller : https://github.com/MadMG 3518//! author : Mikolaj Dadela : https://github.com/mik01aj 3519 3520;(function (global, factory) { 3521 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 3522 undefined 3523}(this, (function (moment) { 'use strict'; 3524 3525 //! moment.js locale configuration 3526 3527 function processRelativeTime(number, withoutSuffix, key, isFuture) { 3528 var format = { 3529 m: ['eine Minute', 'einer Minute'], 3530 h: ['eine Stunde', 'einer Stunde'], 3531 d: ['ein Tag', 'einem Tag'], 3532 dd: [number + ' Tage', number + ' Tagen'], 3533 w: ['eine Woche', 'einer Woche'], 3534 M: ['ein Monat', 'einem Monat'], 3535 MM: [number + ' Monate', number + ' Monaten'], 3536 y: ['ein Jahr', 'einem Jahr'], 3537 yy: [number + ' Jahre', number + ' Jahren'], 3538 }; 3539 return withoutSuffix ? format[key][0] : format[key][1]; 3540 } 3541 3542 var deAt = moment.defineLocale('de-at', { 3543 months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split( 3544 '_' 3545 ), 3546 monthsShort: 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split( 3547 '_' 3548 ), 3549 monthsParseExact: true, 3550 weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split( 3551 '_' 3552 ), 3553 weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), 3554 weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), 3555 weekdaysParseExact: true, 3556 longDateFormat: { 3557 LT: 'HH:mm', 3558 LTS: 'HH:mm:ss', 3559 L: 'DD.MM.YYYY', 3560 LL: 'D. MMMM YYYY', 3561 LLL: 'D. MMMM YYYY HH:mm', 3562 LLLL: 'dddd, D. MMMM YYYY HH:mm', 3563 }, 3564 calendar: { 3565 sameDay: '[heute um] LT [Uhr]', 3566 sameElse: 'L', 3567 nextDay: '[morgen um] LT [Uhr]', 3568 nextWeek: 'dddd [um] LT [Uhr]', 3569 lastDay: '[gestern um] LT [Uhr]', 3570 lastWeek: '[letzten] dddd [um] LT [Uhr]', 3571 }, 3572 relativeTime: { 3573 future: 'in %s', 3574 past: 'vor %s', 3575 s: 'ein paar Sekunden', 3576 ss: '%d Sekunden', 3577 m: processRelativeTime, 3578 mm: '%d Minuten', 3579 h: processRelativeTime, 3580 hh: '%d Stunden', 3581 d: processRelativeTime, 3582 dd: processRelativeTime, 3583 w: processRelativeTime, 3584 ww: '%d Wochen', 3585 M: processRelativeTime, 3586 MM: processRelativeTime, 3587 y: processRelativeTime, 3588 yy: processRelativeTime, 3589 }, 3590 dayOfMonthOrdinalParse: /\d{1,2}\./, 3591 ordinal: '%d.', 3592 week: { 3593 dow: 1, // Monday is the first day of the week. 3594 doy: 4, // The week that contains Jan 4th is the first week of the year. 3595 }, 3596 }); 3597 3598 return deAt; 3599 3600}))); 3601 3602 3603/***/ }), 3604
vendor: 3,611 bytes, lines 3605-3700
3605/***/ "../../node_modules/moment/locale/de-ch.js": 3606/*!************************************************************************************************************************************!*\ 3607 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/de-ch.js ***! 3608 \************************************************************************************************************************************/ 3609/*! no static exports found */ 3610/***/ (function(module, exports, __webpack_require__) { 3611 3612//! moment.js locale configuration 3613//! locale : German (Switzerland) [de-ch] 3614//! author : sschueller : https://github.com/sschueller 3615 3616;(function (global, factory) { 3617 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 3618 undefined 3619}(this, (function (moment) { 'use strict'; 3620 3621 //! moment.js locale configuration 3622 3623 function processRelativeTime(number, withoutSuffix, key, isFuture) { 3624 var format = { 3625 m: ['eine Minute', 'einer Minute'], 3626 h: ['eine Stunde', 'einer Stunde'], 3627 d: ['ein Tag', 'einem Tag'], 3628 dd: [number + ' Tage', number + ' Tagen'], 3629 w: ['eine Woche', 'einer Woche'], 3630 M: ['ein Monat', 'einem Monat'], 3631 MM: [number + ' Monate', number + ' Monaten'], 3632 y: ['ein Jahr', 'einem Jahr'], 3633 yy: [number + ' Jahre', number + ' Jahren'], 3634 }; 3635 return withoutSuffix ? format[key][0] : format[key][1]; 3636 } 3637 3638 var deCh = moment.defineLocale('de-ch', { 3639 months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split( 3640 '_' 3641 ), 3642 monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split( 3643 '_' 3644 ), 3645 monthsParseExact: true, 3646 weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split( 3647 '_' 3648 ), 3649 weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), 3650 weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), 3651 weekdaysParseExact: true, 3652 longDateFormat: { 3653 LT: 'HH:mm', 3654 LTS: 'HH:mm:ss', 3655 L: 'DD.MM.YYYY', 3656 LL: 'D. MMMM YYYY', 3657 LLL: 'D. MMMM YYYY HH:mm', 3658 LLLL: 'dddd, D. MMMM YYYY HH:mm', 3659 }, 3660 calendar: { 3661 sameDay: '[heute um] LT [Uhr]', 3662 sameElse: 'L', 3663 nextDay: '[morgen um] LT [Uhr]', 3664 nextWeek: 'dddd [um] LT [Uhr]', 3665 lastDay: '[gestern um] LT [Uhr]', 3666 lastWeek: '[letzten] dddd [um] LT [Uhr]', 3667 }, 3668 relativeTime: { 3669 future: 'in %s', 3670 past: 'vor %s', 3671 s: 'ein paar Sekunden', 3672 ss: '%d Sekunden', 3673 m: processRelativeTime, 3674 mm: '%d Minuten', 3675 h: processRelativeTime, 3676 hh: '%d Stunden', 3677 d: processRelativeTime, 3678 dd: processRelativeTime, 3679 w: processRelativeTime, 3680 ww: '%d Wochen', 3681 M: processRelativeTime, 3682 MM: processRelativeTime, 3683 y: processRelativeTime, 3684 yy: processRelativeTime, 3685 }, 3686 dayOfMonthOrdinalParse: /\d{1,2}\./, 3687 ordinal: '%d.', 3688 week: { 3689 dow: 1, // Monday is the first day of the week. 3690 doy: 4, // The week that contains Jan 4th is the first week of the year. 3691 }, 3692 }); 3693 3694 return deCh; 3695 3696}))); 3697 3698 3699/***/ }), 3700
vendor: 3,689 bytes, lines 3701-3798
3701/***/ "../../node_modules/moment/locale/de.js": 3702/*!*********************************************************************************************************************************!*\ 3703 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/de.js ***! 3704 \*********************************************************************************************************************************/ 3705/*! no static exports found */ 3706/***/ (function(module, exports, __webpack_require__) { 3707 3708//! moment.js locale configuration 3709//! locale : German [de] 3710//! author : lluchs : https://github.com/lluchs 3711//! author: Menelion Elensúle: https://github.com/Oire 3712//! author : Mikolaj Dadela : https://github.com/mik01aj 3713 3714;(function (global, factory) { 3715 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 3716 undefined 3717}(this, (function (moment) { 'use strict'; 3718 3719 //! moment.js locale configuration 3720 3721 function processRelativeTime(number, withoutSuffix, key, isFuture) { 3722 var format = { 3723 m: ['eine Minute', 'einer Minute'], 3724 h: ['eine Stunde', 'einer Stunde'], 3725 d: ['ein Tag', 'einem Tag'], 3726 dd: [number + ' Tage', number + ' Tagen'], 3727 w: ['eine Woche', 'einer Woche'], 3728 M: ['ein Monat', 'einem Monat'], 3729 MM: [number + ' Monate', number + ' Monaten'], 3730 y: ['ein Jahr', 'einem Jahr'], 3731 yy: [number + ' Jahre', number + ' Jahren'], 3732 }; 3733 return withoutSuffix ? format[key][0] : format[key][1]; 3734 } 3735 3736 var de = moment.defineLocale('de', { 3737 months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split( 3738 '_' 3739 ), 3740 monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split( 3741 '_' 3742 ), 3743 monthsParseExact: true, 3744 weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split( 3745 '_' 3746 ), 3747 weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'), 3748 weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'), 3749 weekdaysParseExact: true, 3750 longDateFormat: { 3751 LT: 'HH:mm', 3752 LTS: 'HH:mm:ss', 3753 L: 'DD.MM.YYYY', 3754 LL: 'D. MMMM YYYY', 3755 LLL: 'D. MMMM YYYY HH:mm', 3756 LLLL: 'dddd, D. MMMM YYYY HH:mm', 3757 }, 3758 calendar: { 3759 sameDay: '[heute um] LT [Uhr]', 3760 sameElse: 'L', 3761 nextDay: '[morgen um] LT [Uhr]', 3762 nextWeek: 'dddd [um] LT [Uhr]', 3763 lastDay: '[gestern um] LT [Uhr]', 3764 lastWeek: '[letzten] dddd [um] LT [Uhr]', 3765 }, 3766 relativeTime: { 3767 future: 'in %s', 3768 past: 'vor %s', 3769 s: 'ein paar Sekunden', 3770 ss: '%d Sekunden', 3771 m: processRelativeTime, 3772 mm: '%d Minuten', 3773 h: processRelativeTime, 3774 hh: '%d Stunden', 3775 d: processRelativeTime, 3776 dd: processRelativeTime, 3777 w: processRelativeTime, 3778 ww: '%d Wochen', 3779 M: processRelativeTime, 3780 MM: processRelativeTime, 3781 y: processRelativeTime, 3782 yy: processRelativeTime, 3783 }, 3784 dayOfMonthOrdinalParse: /\d{1,2}\./, 3785 ordinal: '%d.', 3786 week: { 3787 dow: 1, // Monday is the first day of the week. 3788 doy: 4, // The week that contains Jan 4th is the first week of the year. 3789 }, 3790 }); 3791 3792 return de; 3793 3794}))); 3795 3796 3797/***/ }), 3798
vendor: 3,669 bytes, lines 3799-3908
3799/***/ "../../node_modules/moment/locale/dv.js": 3800/*!*********************************************************************************************************************************!*\ 3801 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/dv.js ***! 3802 \*********************************************************************************************************************************/ 3803/*! no static exports found */ 3804/***/ (function(module, exports, __webpack_require__) { 3805 3806//! moment.js locale configuration 3807//! locale : Maldivian [dv] 3808//! author : Jawish Hameed : https://github.com/jawish 3809 3810;(function (global, factory) { 3811 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 3812 undefined 3813}(this, (function (moment) { 'use strict'; 3814 3815 //! moment.js locale configuration 3816 3817 var months = [ 3818 'ÞÞ¬ÞÞªÞÞ¦ÞÞ©', 3819 'ÞÞ¬ÞÞ°ÞÞªÞÞ¦ÞÞ©', 3820 'ÞÞ§ÞÞ¨ÞÞª', 3821 'ÞÞÞÞ°ÞÞ©ÞÞª', 3822 'ÞÞ', 3823 'ÞÞ«ÞÞ°', 3824 'ÞÞªÞÞ¦ÞÞ¨', 3825 'ÞÞ¯ÞÞ¦ÞÞ°ÞÞª', 3826 'ÞÞ¬ÞÞ°ÞÞ¬ÞÞ°ÞÞ¦ÞÞª', 3827 'ÞÞ®ÞÞ°ÞÞ¯ÞÞ¦ÞÞª', 3828 'ÞÞ®ÞÞ¬ÞÞ°ÞÞ¦ÞÞª', 3829 'ÞÞ¨ÞÞ¬ÞÞ°ÞÞ¦ÞÞª', 3830 ], 3831 weekdays = [ 3832 'ÞÞ§ÞÞ¨ÞÞ°ÞÞ¦', 3833 'ÞÞ¯ÞÞ¦', 3834 'ÞÞ¦ÞÞ°ÞÞ§ÞÞ¦', 3835 'ÞÞªÞÞ¦', 3836 'ÞÞªÞÞ§ÞÞ°ÞÞ¦ÞÞ¨', 3837 'ÞÞªÞÞªÞÞª', 3838 'ÞÞ®ÞÞ¨ÞÞ¨ÞÞª', 3839 ]; 3840 3841 var dv = moment.defineLocale('dv', { 3842 months: months, 3843 monthsShort: months, 3844 weekdays: weekdays, 3845 weekdaysShort: weekdays, 3846 weekdaysMin: 'ÞÞ§ÞÞ¨_ÞÞ¯ÞÞ¦_ÞÞ¦ÞÞ°_ÞÞªÞÞ¦_ÞÞªÞÞ§_ÞÞªÞÞª_ÞÞ®ÞÞ¨'.split('_'), 3847 longDateFormat: { 3848 LT: 'HH:mm', 3849 LTS: 'HH:mm:ss', 3850 L: 'D/M/YYYY', 3851 LL: 'D MMMM YYYY', 3852 LLL: 'D MMMM YYYY HH:mm', 3853 LLLL: 'dddd D MMMM YYYY HH:mm', 3854 }, 3855 meridiemParse: /ÞÞ|ÞÞ/, 3856 isPM: function (input) { 3857 return 'ÞÞ' === input; 3858 }, 3859 meridiem: function (hour, minute, isLower) { 3860 if (hour < 12) { 3861 return 'ÞÞ'; 3862 } else { 3863 return 'ÞÞ'; 3864 } 3865 }, 3866 calendar: { 3867 sameDay: '[ÞÞ¨ÞÞ¦ÞÞª] LT', 3868 nextDay: '[ÞÞ§ÞÞ¦ÞÞ§] LT', 3869 nextWeek: 'dddd LT', 3870 lastDay: '[ÞÞ¨ÞÞ°ÞÞ¬] LT', 3871 lastWeek: '[ÞÞ§ÞÞ¨ÞÞªÞÞ¨] dddd LT', 3872 sameElse: 'L', 3873 }, 3874 relativeTime: { 3875 future: 'ÞÞ¬ÞÞÞÞ¦ÞÞ¨ %s', 3876 past: 'ÞÞªÞÞ¨ÞÞ° %s', 3877 s: 'ÞÞ¨ÞÞªÞÞ°ÞÞªÞÞ®Þ Þ¬ÞÞ°', 3878 ss: 'd% ÞÞ¨ÞÞªÞÞ°ÞÞª', 3879 m: 'ÞÞ¨ÞÞ¨ÞÞ¬ÞÞ°', 3880 mm: 'ÞÞ¨ÞÞ¨ÞÞª %d', 3881 h: 'ÞÞ¦ÞÞ¨ÞÞ¨ÞÞ¬ÞÞ°', 3882 hh: 'ÞÞ¦ÞÞ¨ÞÞ¨ÞÞª %d', 3883 d: 'ÞÞªÞÞ¦ÞÞ¬ÞÞ°', 3884 dd: 'ÞÞªÞÞ¦ÞÞ° %d', 3885 M: 'ÞÞ¦ÞÞ¬ÞÞ°', 3886 MM: 'ÞÞ¦ÞÞ° %d', 3887 y: 'ÞÞ¦ÞÞ¦ÞÞ¬ÞÞ°', 3888 yy: 'ÞÞ¦ÞÞ¦ÞÞª %d', 3889 }, 3890 preparse: function (string) { 3891 return string.replace(/Ø/g, ','); 3892 }, 3893 postformat: function (string) { 3894 return string.replace(/,/g, 'Ø'); 3895 }, 3896 week: { 3897 dow: 7, // Sunday is the first day of the week. 3898 doy: 12, // The week that contains Jan 12th is the first week of the year. 3899 }, 3900 }); 3901 3902 return dv; 3903 3904}))); 3905 3906 3907/***/ }), 3908
vendor: 5,120 bytes, lines 3909-4032
3909/***/ "../../node_modules/moment/locale/el.js": 3910/*!*********************************************************************************************************************************!*\ 3911 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/el.js ***! 3912 \*********************************************************************************************************************************/ 3913/*! no static exports found */ 3914/***/ (function(module, exports, __webpack_require__) { 3915 3916//! moment.js locale configuration 3917//! locale : Greek [el] 3918//! author : Aggelos Karalias : https://github.com/mehiel 3919 3920;(function (global, factory) { 3921 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 3922 undefined 3923}(this, (function (moment) { 'use strict'; 3924 3925 //! moment.js locale configuration 3926 3927 function isFunction(input) { 3928 return ( 3929 (typeof Function !== 'undefined' && input instanceof Function) || 3930 Object.prototype.toString.call(input) === '[object Function]' 3931 ); 3932 } 3933 3934 var el = moment.defineLocale('el', { 3935 monthsNominativeEl: 'ÎÎ±Î½Î¿Ï Î¬ÏιοÏ_ΦεβÏÎ¿Ï Î¬ÏιοÏ_ÎάÏÏιοÏ_ÎÏÏίλιοÏ_ÎάιοÏ_ÎοÏνιοÏ_ÎοÏλιοÏ_ÎÏÎ³Î¿Ï ÏÏοÏ_ΣεÏÏÎμβÏιοÏ_ÎκÏÏβÏιοÏ_ÎοÎμβÏιοÏ_ÎεκÎμβÏιοÏ'.split( 3936 '_' 3937 ), 3938 monthsGenitiveEl: 'ÎÎ±Î½Î¿Ï Î±ÏÎ¯Î¿Ï _ΦεβÏÎ¿Ï Î±ÏÎ¯Î¿Ï _ÎαÏÏÎ¯Î¿Ï _ÎÏÏÎ¹Î»Î¯Î¿Ï _ÎαÎÎ¿Ï _ÎÎ¿Ï Î½Î¯Î¿Ï _ÎÎ¿Ï Î»Î¯Î¿Ï _ÎÏ Î³Î¿ÏÏÏÎ¿Ï _ΣεÏÏεμβÏÎ¯Î¿Ï _ÎκÏÏβÏÎ¯Î¿Ï _ÎοεμβÏÎ¯Î¿Ï _ÎεκεμβÏÎ¯Î¿Ï '.split( 3939 '_' 3940 ), 3941 months: function (momentToFormat, format) { 3942 if (!momentToFormat) { 3943 return this._monthsNominativeEl; 3944 } else if ( 3945 typeof format === 'string' && 3946 /D/.test(format.substring(0, format.indexOf('MMMM'))) 3947 ) { 3948 // if there is a day number before 'MMMM' 3949 return this._monthsGenitiveEl[momentToFormat.month()]; 3950 } else { 3951 return this._monthsNominativeEl[momentToFormat.month()]; 3952 } 3953 }, 3954 monthsShort: 'Îαν_Φεβ_ÎαÏ_ÎÏÏ_ÎαÏ_ÎÎ¿Ï Î½_ÎÎ¿Ï Î»_ÎÏ Î³_ΣεÏ_ÎκÏ_Îοε_Îεκ'.split('_'), 3955 weekdays: 'ÎÏ Ïιακή_ÎÎµÏ ÏÎÏα_ΤÏίÏη_ΤεÏάÏÏη_Î ÎμÏÏη_ΠαÏαÏÎºÎµÏ Î®_ΣάββαÏο'.split( 3956 '_' 3957 ), 3958 weekdaysShort: 'ÎÏ Ï_ÎÎµÏ _ΤÏι_ΤεÏ_Πεμ_ΠαÏ_Σαβ'.split('_'), 3959 weekdaysMin: 'ÎÏ _Îε_ΤÏ_Τε_Πε_Πα_Σα'.split('_'), 3960 meridiem: function (hours, minutes, isLower) { 3961 if (hours > 11) { 3962 return isLower ? 'μμ' : 'ÎÎ'; 3963 } else { 3964 return isLower ? 'Ïμ' : 'Î Î'; 3965 } 3966 }, 3967 isPM: function (input) { 3968 return (input + '').toLowerCase()[0] === 'μ'; 3969 }, 3970 meridiemParse: /[Î Î]\.?Î?\.?/i, 3971 longDateFormat: { 3972 LT: 'h:mm A', 3973 LTS: 'h:mm:ss A', 3974 L: 'DD/MM/YYYY', 3975 LL: 'D MMMM YYYY', 3976 LLL: 'D MMMM YYYY h:mm A', 3977 LLLL: 'dddd, D MMMM YYYY h:mm A', 3978 }, 3979 calendarEl: { 3980 sameDay: '[ΣήμεÏα {}] LT', 3981 nextDay: '[ÎÏÏιο {}] LT', 3982 nextWeek: 'dddd [{}] LT', 3983 lastDay: '[Î§Î¸ÎµÏ {}] LT', 3984 lastWeek: function () { 3985 switch (this.day()) { 3986 case 6: 3987 return '[Ïο ÏÏοηγοÏμενο] dddd [{}] LT'; 3988 default: 3989 return '[Ïην ÏÏοηγοÏμενη] dddd [{}] LT'; 3990 } 3991 }, 3992 sameElse: 'L', 3993 }, 3994 calendar: function (key, mom) { 3995 var output = this._calendarEl[key], 3996 hours = mom && mom.hours(); 3997 if (isFunction(output)) { 3998 output = output.apply(mom); 3999 } 4000 return output.replace('{}', hours % 12 === 1 ? 'ÏÏη' : 'ÏÏιÏ'); 4001 }, 4002 relativeTime: { 4003 future: 'Ïε %s', 4004 past: '%s ÏÏιν', 4005 s: 'λίγα Î´ÎµÏ ÏεÏÏλεÏÏα', 4006 ss: '%d Î´ÎµÏ ÏεÏÏλεÏÏα', 4007 m: 'Îνα λεÏÏÏ', 4008 mm: '%d λεÏÏά', 4009 h: 'μία ÏÏα', 4010 hh: '%d ÏÏεÏ', 4011 d: 'μία μÎÏα', 4012 dd: '%d μÎÏεÏ', 4013 M: 'ÎÎ½Î±Ï Î¼Î®Î½Î±Ï', 4014 MM: '%d μήνεÏ', 4015 y: 'ÎÎ½Î±Ï ÏÏÏνοÏ', 4016 yy: '%d ÏÏÏνια', 4017 }, 4018 dayOfMonthOrdinalParse: /\d{1,2}η/, 4019 ordinal: '%dη', 4020 week: { 4021 dow: 1, // Monday is the first day of the week. 4022 doy: 4, // The week that contains Jan 4st is the first week of the year. 4023 }, 4024 }); 4025 4026 return el; 4027 4028}))); 4029 4030 4031/***/ }), 4032
vendor: 3,144 bytes, lines 4033-4120
4033/***/ "../../node_modules/moment/locale/en-au.js": 4034/*!************************************************************************************************************************************!*\ 4035 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/en-au.js ***! 4036 \************************************************************************************************************************************/ 4037/*! no static exports found */ 4038/***/ (function(module, exports, __webpack_require__) { 4039 4040//! moment.js locale configuration 4041//! locale : English (Australia) [en-au] 4042//! author : Jared Morse : https://github.com/jarcoal 4043 4044;(function (global, factory) { 4045 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 4046 undefined 4047}(this, (function (moment) { 'use strict'; 4048 4049 //! moment.js locale configuration 4050 4051 var enAu = moment.defineLocale('en-au', { 4052 months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( 4053 '_' 4054 ), 4055 monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), 4056 weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( 4057 '_' 4058 ), 4059 weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), 4060 weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), 4061 longDateFormat: { 4062 LT: 'h:mm A', 4063 LTS: 'h:mm:ss A', 4064 L: 'DD/MM/YYYY', 4065 LL: 'D MMMM YYYY', 4066 LLL: 'D MMMM YYYY h:mm A', 4067 LLLL: 'dddd, D MMMM YYYY h:mm A', 4068 }, 4069 calendar: { 4070 sameDay: '[Today at] LT', 4071 nextDay: '[Tomorrow at] LT', 4072 nextWeek: 'dddd [at] LT', 4073 lastDay: '[Yesterday at] LT', 4074 lastWeek: '[Last] dddd [at] LT', 4075 sameElse: 'L', 4076 }, 4077 relativeTime: { 4078 future: 'in %s', 4079 past: '%s ago', 4080 s: 'a few seconds', 4081 ss: '%d seconds', 4082 m: 'a minute', 4083 mm: '%d minutes', 4084 h: 'an hour', 4085 hh: '%d hours', 4086 d: 'a day', 4087 dd: '%d days', 4088 M: 'a month', 4089 MM: '%d months', 4090 y: 'a year', 4091 yy: '%d years', 4092 }, 4093 dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, 4094 ordinal: function (number) { 4095 var b = number % 10, 4096 output = 4097 ~~((number % 100) / 10) === 1 4098 ? 'th' 4099 : b === 1 4100 ? 'st' 4101 : b === 2 4102 ? 'nd' 4103 : b === 3 4104 ? 'rd' 4105 : 'th'; 4106 return number + output; 4107 }, 4108 week: { 4109 dow: 0, // Sunday is the first day of the week. 4110 doy: 4, // The week that contains Jan 4th is the first week of the year. 4111 }, 4112 }); 4113 4114 return enAu; 4115 4116}))); 4117 4118 4119/***/ }), 4120
vendor: 2,973 bytes, lines 4121-4204
4121/***/ "../../node_modules/moment/locale/en-ca.js": 4122/*!************************************************************************************************************************************!*\ 4123 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/en-ca.js ***! 4124 \************************************************************************************************************************************/ 4125/*! no static exports found */ 4126/***/ (function(module, exports, __webpack_require__) { 4127 4128//! moment.js locale configuration 4129//! locale : English (Canada) [en-ca] 4130//! author : Jonathan Abourbih : https://github.com/jonbca 4131 4132;(function (global, factory) { 4133 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 4134 undefined 4135}(this, (function (moment) { 'use strict'; 4136 4137 //! moment.js locale configuration 4138 4139 var enCa = moment.defineLocale('en-ca', { 4140 months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( 4141 '_' 4142 ), 4143 monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), 4144 weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( 4145 '_' 4146 ), 4147 weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), 4148 weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), 4149 longDateFormat: { 4150 LT: 'h:mm A', 4151 LTS: 'h:mm:ss A', 4152 L: 'YYYY-MM-DD', 4153 LL: 'MMMM D, YYYY', 4154 LLL: 'MMMM D, YYYY h:mm A', 4155 LLLL: 'dddd, MMMM D, YYYY h:mm A', 4156 }, 4157 calendar: { 4158 sameDay: '[Today at] LT', 4159 nextDay: '[Tomorrow at] LT', 4160 nextWeek: 'dddd [at] LT', 4161 lastDay: '[Yesterday at] LT', 4162 lastWeek: '[Last] dddd [at] LT', 4163 sameElse: 'L', 4164 }, 4165 relativeTime: { 4166 future: 'in %s', 4167 past: '%s ago', 4168 s: 'a few seconds', 4169 ss: '%d seconds', 4170 m: 'a minute', 4171 mm: '%d minutes', 4172 h: 'an hour', 4173 hh: '%d hours', 4174 d: 'a day', 4175 dd: '%d days', 4176 M: 'a month', 4177 MM: '%d months', 4178 y: 'a year', 4179 yy: '%d years', 4180 }, 4181 dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, 4182 ordinal: function (number) { 4183 var b = number % 10, 4184 output = 4185 ~~((number % 100) / 10) === 1 4186 ? 'th' 4187 : b === 1 4188 ? 'st' 4189 : b === 2 4190 ? 'nd' 4191 : b === 3 4192 ? 'rd' 4193 : 'th'; 4194 return number + output; 4195 }, 4196 }); 4197 4198 return enCa; 4199 4200}))); 4201 4202 4203/***/ }), 4204
vendor: 3,150 bytes, lines 4205-4292
4205/***/ "../../node_modules/moment/locale/en-gb.js": 4206/*!************************************************************************************************************************************!*\ 4207 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/en-gb.js ***! 4208 \************************************************************************************************************************************/ 4209/*! no static exports found */ 4210/***/ (function(module, exports, __webpack_require__) { 4211 4212//! moment.js locale configuration 4213//! locale : English (United Kingdom) [en-gb] 4214//! author : Chris Gedrim : https://github.com/chrisgedrim 4215 4216;(function (global, factory) { 4217 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 4218 undefined 4219}(this, (function (moment) { 'use strict'; 4220 4221 //! moment.js locale configuration 4222 4223 var enGb = moment.defineLocale('en-gb', { 4224 months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( 4225 '_' 4226 ), 4227 monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), 4228 weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( 4229 '_' 4230 ), 4231 weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), 4232 weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), 4233 longDateFormat: { 4234 LT: 'HH:mm', 4235 LTS: 'HH:mm:ss', 4236 L: 'DD/MM/YYYY', 4237 LL: 'D MMMM YYYY', 4238 LLL: 'D MMMM YYYY HH:mm', 4239 LLLL: 'dddd, D MMMM YYYY HH:mm', 4240 }, 4241 calendar: { 4242 sameDay: '[Today at] LT', 4243 nextDay: '[Tomorrow at] LT', 4244 nextWeek: 'dddd [at] LT', 4245 lastDay: '[Yesterday at] LT', 4246 lastWeek: '[Last] dddd [at] LT', 4247 sameElse: 'L', 4248 }, 4249 relativeTime: { 4250 future: 'in %s', 4251 past: '%s ago', 4252 s: 'a few seconds', 4253 ss: '%d seconds', 4254 m: 'a minute', 4255 mm: '%d minutes', 4256 h: 'an hour', 4257 hh: '%d hours', 4258 d: 'a day', 4259 dd: '%d days', 4260 M: 'a month', 4261 MM: '%d months', 4262 y: 'a year', 4263 yy: '%d years', 4264 }, 4265 dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, 4266 ordinal: function (number) { 4267 var b = number % 10, 4268 output = 4269 ~~((number % 100) / 10) === 1 4270 ? 'th' 4271 : b === 1 4272 ? 'st' 4273 : b === 2 4274 ? 'nd' 4275 : b === 3 4276 ? 'rd' 4277 : 'th'; 4278 return number + output; 4279 }, 4280 week: { 4281 dow: 1, // Monday is the first day of the week. 4282 doy: 4, // The week that contains Jan 4th is the first week of the year. 4283 }, 4284 }); 4285 4286 return enGb; 4287 4288}))); 4289 4290 4291/***/ }), 4292
vendor: 3,148 bytes, lines 4293-4380
4293/***/ "../../node_modules/moment/locale/en-ie.js": 4294/*!************************************************************************************************************************************!*\ 4295 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/en-ie.js ***! 4296 \************************************************************************************************************************************/ 4297/*! no static exports found */ 4298/***/ (function(module, exports, __webpack_require__) { 4299 4300//! moment.js locale configuration 4301//! locale : English (Ireland) [en-ie] 4302//! author : Chris Cartlidge : https://github.com/chriscartlidge 4303 4304;(function (global, factory) { 4305 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 4306 undefined 4307}(this, (function (moment) { 'use strict'; 4308 4309 //! moment.js locale configuration 4310 4311 var enIe = moment.defineLocale('en-ie', { 4312 months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( 4313 '_' 4314 ), 4315 monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), 4316 weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( 4317 '_' 4318 ), 4319 weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), 4320 weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), 4321 longDateFormat: { 4322 LT: 'HH:mm', 4323 LTS: 'HH:mm:ss', 4324 L: 'DD/MM/YYYY', 4325 LL: 'D MMMM YYYY', 4326 LLL: 'D MMMM YYYY HH:mm', 4327 LLLL: 'dddd D MMMM YYYY HH:mm', 4328 }, 4329 calendar: { 4330 sameDay: '[Today at] LT', 4331 nextDay: '[Tomorrow at] LT', 4332 nextWeek: 'dddd [at] LT', 4333 lastDay: '[Yesterday at] LT', 4334 lastWeek: '[Last] dddd [at] LT', 4335 sameElse: 'L', 4336 }, 4337 relativeTime: { 4338 future: 'in %s', 4339 past: '%s ago', 4340 s: 'a few seconds', 4341 ss: '%d seconds', 4342 m: 'a minute', 4343 mm: '%d minutes', 4344 h: 'an hour', 4345 hh: '%d hours', 4346 d: 'a day', 4347 dd: '%d days', 4348 M: 'a month', 4349 MM: '%d months', 4350 y: 'a year', 4351 yy: '%d years', 4352 }, 4353 dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, 4354 ordinal: function (number) { 4355 var b = number % 10, 4356 output = 4357 ~~((number % 100) / 10) === 1 4358 ? 'th' 4359 : b === 1 4360 ? 'st' 4361 : b === 2 4362 ? 'nd' 4363 : b === 3 4364 ? 'rd' 4365 : 'th'; 4366 return number + output; 4367 }, 4368 week: { 4369 dow: 1, // Monday is the first day of the week. 4370 doy: 4, // The week that contains Jan 4th is the first week of the year. 4371 }, 4372 }); 4373 4374 return enIe; 4375 4376}))); 4377 4378 4379/***/ }), 4380
vendor: 2,966 bytes, lines 4381-4464
4381/***/ "../../node_modules/moment/locale/en-il.js": 4382/*!************************************************************************************************************************************!*\ 4383 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/en-il.js ***! 4384 \************************************************************************************************************************************/ 4385/*! no static exports found */ 4386/***/ (function(module, exports, __webpack_require__) { 4387 4388//! moment.js locale configuration 4389//! locale : English (Israel) [en-il] 4390//! author : Chris Gedrim : https://github.com/chrisgedrim 4391 4392;(function (global, factory) { 4393 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 4394 undefined 4395}(this, (function (moment) { 'use strict'; 4396 4397 //! moment.js locale configuration 4398 4399 var enIl = moment.defineLocale('en-il', { 4400 months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( 4401 '_' 4402 ), 4403 monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), 4404 weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( 4405 '_' 4406 ), 4407 weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), 4408 weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), 4409 longDateFormat: { 4410 LT: 'HH:mm', 4411 LTS: 'HH:mm:ss', 4412 L: 'DD/MM/YYYY', 4413 LL: 'D MMMM YYYY', 4414 LLL: 'D MMMM YYYY HH:mm', 4415 LLLL: 'dddd, D MMMM YYYY HH:mm', 4416 }, 4417 calendar: { 4418 sameDay: '[Today at] LT', 4419 nextDay: '[Tomorrow at] LT', 4420 nextWeek: 'dddd [at] LT', 4421 lastDay: '[Yesterday at] LT', 4422 lastWeek: '[Last] dddd [at] LT', 4423 sameElse: 'L', 4424 }, 4425 relativeTime: { 4426 future: 'in %s', 4427 past: '%s ago', 4428 s: 'a few seconds', 4429 ss: '%d seconds', 4430 m: 'a minute', 4431 mm: '%d minutes', 4432 h: 'an hour', 4433 hh: '%d hours', 4434 d: 'a day', 4435 dd: '%d days', 4436 M: 'a month', 4437 MM: '%d months', 4438 y: 'a year', 4439 yy: '%d years', 4440 }, 4441 dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, 4442 ordinal: function (number) { 4443 var b = number % 10, 4444 output = 4445 ~~((number % 100) / 10) === 1 4446 ? 'th' 4447 : b === 1 4448 ? 'st' 4449 : b === 2 4450 ? 'nd' 4451 : b === 3 4452 ? 'rd' 4453 : 'th'; 4454 return number + output; 4455 }, 4456 }); 4457 4458 return enIl; 4459 4460}))); 4461 4462 4463/***/ }), 4464
vendor: 3,144 bytes, lines 4465-4552
4465/***/ "../../node_modules/moment/locale/en-in.js": 4466/*!************************************************************************************************************************************!*\ 4467 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/en-in.js ***! 4468 \************************************************************************************************************************************/ 4469/*! no static exports found */ 4470/***/ (function(module, exports, __webpack_require__) { 4471 4472//! moment.js locale configuration 4473//! locale : English (India) [en-in] 4474//! author : Jatin Agrawal : https://github.com/jatinag22 4475 4476;(function (global, factory) { 4477 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 4478 undefined 4479}(this, (function (moment) { 'use strict'; 4480 4481 //! moment.js locale configuration 4482 4483 var enIn = moment.defineLocale('en-in', { 4484 months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( 4485 '_' 4486 ), 4487 monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), 4488 weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( 4489 '_' 4490 ), 4491 weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), 4492 weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), 4493 longDateFormat: { 4494 LT: 'h:mm A', 4495 LTS: 'h:mm:ss A', 4496 L: 'DD/MM/YYYY', 4497 LL: 'D MMMM YYYY', 4498 LLL: 'D MMMM YYYY h:mm A', 4499 LLLL: 'dddd, D MMMM YYYY h:mm A', 4500 }, 4501 calendar: { 4502 sameDay: '[Today at] LT', 4503 nextDay: '[Tomorrow at] LT', 4504 nextWeek: 'dddd [at] LT', 4505 lastDay: '[Yesterday at] LT', 4506 lastWeek: '[Last] dddd [at] LT', 4507 sameElse: 'L', 4508 }, 4509 relativeTime: { 4510 future: 'in %s', 4511 past: '%s ago', 4512 s: 'a few seconds', 4513 ss: '%d seconds', 4514 m: 'a minute', 4515 mm: '%d minutes', 4516 h: 'an hour', 4517 hh: '%d hours', 4518 d: 'a day', 4519 dd: '%d days', 4520 M: 'a month', 4521 MM: '%d months', 4522 y: 'a year', 4523 yy: '%d years', 4524 }, 4525 dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, 4526 ordinal: function (number) { 4527 var b = number % 10, 4528 output = 4529 ~~((number % 100) / 10) === 1 4530 ? 'th' 4531 : b === 1 4532 ? 'st' 4533 : b === 2 4534 ? 'nd' 4535 : b === 3 4536 ? 'rd' 4537 : 'th'; 4538 return number + output; 4539 }, 4540 week: { 4541 dow: 0, // Sunday is the first day of the week. 4542 doy: 6, // The week that contains Jan 1st is the first week of the year. 4543 }, 4544 }); 4545 4546 return enIn; 4547 4548}))); 4549 4550 4551/***/ }), 4552
vendor: 3,153 bytes, lines 4553-4640
4553/***/ "../../node_modules/moment/locale/en-nz.js": 4554/*!************************************************************************************************************************************!*\ 4555 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/en-nz.js ***! 4556 \************************************************************************************************************************************/ 4557/*! no static exports found */ 4558/***/ (function(module, exports, __webpack_require__) { 4559 4560//! moment.js locale configuration 4561//! locale : English (New Zealand) [en-nz] 4562//! author : Luke McGregor : https://github.com/lukemcgregor 4563 4564;(function (global, factory) { 4565 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 4566 undefined 4567}(this, (function (moment) { 'use strict'; 4568 4569 //! moment.js locale configuration 4570 4571 var enNz = moment.defineLocale('en-nz', { 4572 months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( 4573 '_' 4574 ), 4575 monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), 4576 weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( 4577 '_' 4578 ), 4579 weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), 4580 weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), 4581 longDateFormat: { 4582 LT: 'h:mm A', 4583 LTS: 'h:mm:ss A', 4584 L: 'DD/MM/YYYY', 4585 LL: 'D MMMM YYYY', 4586 LLL: 'D MMMM YYYY h:mm A', 4587 LLLL: 'dddd, D MMMM YYYY h:mm A', 4588 }, 4589 calendar: { 4590 sameDay: '[Today at] LT', 4591 nextDay: '[Tomorrow at] LT', 4592 nextWeek: 'dddd [at] LT', 4593 lastDay: '[Yesterday at] LT', 4594 lastWeek: '[Last] dddd [at] LT', 4595 sameElse: 'L', 4596 }, 4597 relativeTime: { 4598 future: 'in %s', 4599 past: '%s ago', 4600 s: 'a few seconds', 4601 ss: '%d seconds', 4602 m: 'a minute', 4603 mm: '%d minutes', 4604 h: 'an hour', 4605 hh: '%d hours', 4606 d: 'a day', 4607 dd: '%d days', 4608 M: 'a month', 4609 MM: '%d months', 4610 y: 'a year', 4611 yy: '%d years', 4612 }, 4613 dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, 4614 ordinal: function (number) { 4615 var b = number % 10, 4616 output = 4617 ~~((number % 100) / 10) === 1 4618 ? 'th' 4619 : b === 1 4620 ? 'st' 4621 : b === 2 4622 ? 'nd' 4623 : b === 3 4624 ? 'rd' 4625 : 'th'; 4626 return number + output; 4627 }, 4628 week: { 4629 dow: 1, // Monday is the first day of the week. 4630 doy: 4, // The week that contains Jan 4th is the first week of the year. 4631 }, 4632 }); 4633 4634 return enNz; 4635 4636}))); 4637 4638 4639/***/ }), 4640
vendor: 3,162 bytes, lines 4641-4728
4641/***/ "../../node_modules/moment/locale/en-sg.js": 4642/*!************************************************************************************************************************************!*\ 4643 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/en-sg.js ***! 4644 \************************************************************************************************************************************/ 4645/*! no static exports found */ 4646/***/ (function(module, exports, __webpack_require__) { 4647 4648//! moment.js locale configuration 4649//! locale : English (Singapore) [en-sg] 4650//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension 4651 4652;(function (global, factory) { 4653 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 4654 undefined 4655}(this, (function (moment) { 'use strict'; 4656 4657 //! moment.js locale configuration 4658 4659 var enSg = moment.defineLocale('en-sg', { 4660 months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split( 4661 '_' 4662 ), 4663 monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'), 4664 weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( 4665 '_' 4666 ), 4667 weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), 4668 weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), 4669 longDateFormat: { 4670 LT: 'HH:mm', 4671 LTS: 'HH:mm:ss', 4672 L: 'DD/MM/YYYY', 4673 LL: 'D MMMM YYYY', 4674 LLL: 'D MMMM YYYY HH:mm', 4675 LLLL: 'dddd, D MMMM YYYY HH:mm', 4676 }, 4677 calendar: { 4678 sameDay: '[Today at] LT', 4679 nextDay: '[Tomorrow at] LT', 4680 nextWeek: 'dddd [at] LT', 4681 lastDay: '[Yesterday at] LT', 4682 lastWeek: '[Last] dddd [at] LT', 4683 sameElse: 'L', 4684 }, 4685 relativeTime: { 4686 future: 'in %s', 4687 past: '%s ago', 4688 s: 'a few seconds', 4689 ss: '%d seconds', 4690 m: 'a minute', 4691 mm: '%d minutes', 4692 h: 'an hour', 4693 hh: '%d hours', 4694 d: 'a day', 4695 dd: '%d days', 4696 M: 'a month', 4697 MM: '%d months', 4698 y: 'a year', 4699 yy: '%d years', 4700 }, 4701 dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, 4702 ordinal: function (number) { 4703 var b = number % 10, 4704 output = 4705 ~~((number % 100) / 10) === 1 4706 ? 'th' 4707 : b === 1 4708 ? 'st' 4709 : b === 2 4710 ? 'nd' 4711 : b === 3 4712 ? 'rd' 4713 : 'th'; 4714 return number + output; 4715 }, 4716 week: { 4717 dow: 1, // Monday is the first day of the week. 4718 doy: 4, // The week that contains Jan 4th is the first week of the year. 4719 }, 4720 }); 4721 4722 return enSg; 4723 4724}))); 4725 4726 4727/***/ }), 4728
vendor: 3,425 bytes, lines 4729-4816
4729/***/ "../../node_modules/moment/locale/eo.js": 4730/*!*********************************************************************************************************************************!*\ 4731 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/eo.js ***! 4732 \*********************************************************************************************************************************/ 4733/*! no static exports found */ 4734/***/ (function(module, exports, __webpack_require__) { 4735 4736//! moment.js locale configuration 4737//! locale : Esperanto [eo] 4738//! author : Colin Dean : https://github.com/colindean 4739//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia 4740//! comment : miestasmia corrected the translation by colindean 4741//! comment : Vivakvo corrected the translation by colindean and miestasmia 4742 4743;(function (global, factory) { 4744 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 4745 undefined 4746}(this, (function (moment) { 'use strict'; 4747 4748 //! moment.js locale configuration 4749 4750 var eo = moment.defineLocale('eo', { 4751 months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aÅgusto_septembro_oktobro_novembro_decembro'.split( 4752 '_' 4753 ), 4754 monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aÅg_sept_okt_nov_dec'.split('_'), 4755 weekdays: 'dimanÄo_lundo_mardo_merkredo_ĵaÅdo_vendredo_sabato'.split('_'), 4756 weekdaysShort: 'dim_lun_mard_merk_ĵaÅ_ven_sab'.split('_'), 4757 weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'), 4758 longDateFormat: { 4759 LT: 'HH:mm', 4760 LTS: 'HH:mm:ss', 4761 L: 'YYYY-MM-DD', 4762 LL: '[la] D[-an de] MMMM, YYYY', 4763 LLL: '[la] D[-an de] MMMM, YYYY HH:mm', 4764 LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm', 4765 llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm', 4766 }, 4767 meridiemParse: /[ap]\.t\.m/i, 4768 isPM: function (input) { 4769 return input.charAt(0).toLowerCase() === 'p'; 4770 }, 4771 meridiem: function (hours, minutes, isLower) { 4772 if (hours > 11) { 4773 return isLower ? 'p.t.m.' : 'P.T.M.'; 4774 } else { 4775 return isLower ? 'a.t.m.' : 'A.T.M.'; 4776 } 4777 }, 4778 calendar: { 4779 sameDay: '[HodiaÅ je] LT', 4780 nextDay: '[MorgaÅ je] LT', 4781 nextWeek: 'dddd[n je] LT', 4782 lastDay: '[HieraÅ je] LT', 4783 lastWeek: '[pasintan] dddd[n je] LT', 4784 sameElse: 'L', 4785 }, 4786 relativeTime: { 4787 future: 'post %s', 4788 past: 'antaÅ %s', 4789 s: 'kelkaj sekundoj', 4790 ss: '%d sekundoj', 4791 m: 'unu minuto', 4792 mm: '%d minutoj', 4793 h: 'unu horo', 4794 hh: '%d horoj', 4795 d: 'unu tago', //ne 'diurno', Äar estas uzita por proksimumo 4796 dd: '%d tagoj', 4797 M: 'unu monato', 4798 MM: '%d monatoj', 4799 y: 'unu jaro', 4800 yy: '%d jaroj', 4801 }, 4802 dayOfMonthOrdinalParse: /\d{1,2}a/, 4803 ordinal: '%da', 4804 week: { 4805 dow: 1, // Monday is the first day of the week. 4806 doy: 7, // The week that contains Jan 7th is the first week of the year. 4807 }, 4808 }); 4809 4810 return eo; 4811 4812}))); 4813 4814 4815/***/ }), 4816
vendor: 4,635 bytes, lines 4817-4938
4817/***/ "../../node_modules/moment/locale/es-do.js": 4818/*!************************************************************************************************************************************!*\ 4819 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/es-do.js ***! 4820 \************************************************************************************************************************************/ 4821/*! no static exports found */ 4822/***/ (function(module, exports, __webpack_require__) { 4823 4824//! moment.js locale configuration 4825//! locale : Spanish (Dominican Republic) [es-do] 4826 4827;(function (global, factory) { 4828 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 4829 undefined 4830}(this, (function (moment) { 'use strict'; 4831 4832 //! moment.js locale configuration 4833 4834 var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split( 4835 '_' 4836 ), 4837 monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'), 4838 monthsParse = [ 4839 /^ene/i, 4840 /^feb/i, 4841 /^mar/i, 4842 /^abr/i, 4843 /^may/i, 4844 /^jun/i, 4845 /^jul/i, 4846 /^ago/i, 4847 /^sep/i, 4848 /^oct/i, 4849 /^nov/i, 4850 /^dic/i, 4851 ], 4852 monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i; 4853 4854 var esDo = moment.defineLocale('es-do', { 4855 months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split( 4856 '_' 4857 ), 4858 monthsShort: function (m, format) { 4859 if (!m) { 4860 return monthsShortDot; 4861 } else if (/-MMM-/.test(format)) { 4862 return monthsShort[m.month()]; 4863 } else { 4864 return monthsShortDot[m.month()]; 4865 } 4866 }, 4867 monthsRegex: monthsRegex, 4868 monthsShortRegex: monthsRegex, 4869 monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i, 4870 monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i, 4871 monthsParse: monthsParse, 4872 longMonthsParse: monthsParse, 4873 shortMonthsParse: monthsParse, 4874 weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), 4875 weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), 4876 weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'), 4877 weekdaysParseExact: true, 4878 longDateFormat: { 4879 LT: 'h:mm A', 4880 LTS: 'h:mm:ss A', 4881 L: 'DD/MM/YYYY', 4882 LL: 'D [de] MMMM [de] YYYY', 4883 LLL: 'D [de] MMMM [de] YYYY h:mm A', 4884 LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A', 4885 }, 4886 calendar: { 4887 sameDay: function () { 4888 return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; 4889 }, 4890 nextDay: function () { 4891 return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; 4892 }, 4893 nextWeek: function () { 4894 return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; 4895 }, 4896 lastDay: function () { 4897 return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; 4898 }, 4899 lastWeek: function () { 4900 return ( 4901 '[el] dddd [pasado a la' + 4902 (this.hours() !== 1 ? 's' : '') + 4903 '] LT' 4904 ); 4905 }, 4906 sameElse: 'L', 4907 }, 4908 relativeTime: { 4909 future: 'en %s', 4910 past: 'hace %s', 4911 s: 'unos segundos', 4912 ss: '%d segundos', 4913 m: 'un minuto', 4914 mm: '%d minutos', 4915 h: 'una hora', 4916 hh: '%d horas', 4917 d: 'un dÃa', 4918 dd: '%d dÃas', 4919 M: 'un mes', 4920 MM: '%d meses', 4921 y: 'un año', 4922 yy: '%d años', 4923 }, 4924 dayOfMonthOrdinalParse: /\d{1,2}º/, 4925 ordinal: '%dº', 4926 week: { 4927 dow: 1, // Monday is the first day of the week. 4928 doy: 4, // The week that contains Jan 4th is the first week of the year. 4929 }, 4930 }); 4931 4932 return esDo; 4933 4934}))); 4935 4936 4937/***/ }), 4938
vendor: 4,734 bytes, lines 4939-5062
4939/***/ "../../node_modules/moment/locale/es-us.js": 4940/*!************************************************************************************************************************************!*\ 4941 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/es-us.js ***! 4942 \************************************************************************************************************************************/ 4943/*! no static exports found */ 4944/***/ (function(module, exports, __webpack_require__) { 4945 4946//! moment.js locale configuration 4947//! locale : Spanish (United States) [es-us] 4948//! author : bustta : https://github.com/bustta 4949//! author : chrisrodz : https://github.com/chrisrodz 4950 4951;(function (global, factory) { 4952 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 4953 undefined 4954}(this, (function (moment) { 'use strict'; 4955 4956 //! moment.js locale configuration 4957 4958 var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split( 4959 '_' 4960 ), 4961 monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'), 4962 monthsParse = [ 4963 /^ene/i, 4964 /^feb/i, 4965 /^mar/i, 4966 /^abr/i, 4967 /^may/i, 4968 /^jun/i, 4969 /^jul/i, 4970 /^ago/i, 4971 /^sep/i, 4972 /^oct/i, 4973 /^nov/i, 4974 /^dic/i, 4975 ], 4976 monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i; 4977 4978 var esUs = moment.defineLocale('es-us', { 4979 months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split( 4980 '_' 4981 ), 4982 monthsShort: function (m, format) { 4983 if (!m) { 4984 return monthsShortDot; 4985 } else if (/-MMM-/.test(format)) { 4986 return monthsShort[m.month()]; 4987 } else { 4988 return monthsShortDot[m.month()]; 4989 } 4990 }, 4991 monthsRegex: monthsRegex, 4992 monthsShortRegex: monthsRegex, 4993 monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i, 4994 monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i, 4995 monthsParse: monthsParse, 4996 longMonthsParse: monthsParse, 4997 shortMonthsParse: monthsParse, 4998 weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), 4999 weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), 5000 weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'), 5001 weekdaysParseExact: true, 5002 longDateFormat: { 5003 LT: 'h:mm A', 5004 LTS: 'h:mm:ss A', 5005 L: 'MM/DD/YYYY', 5006 LL: 'D [de] MMMM [de] YYYY', 5007 LLL: 'D [de] MMMM [de] YYYY h:mm A', 5008 LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A', 5009 }, 5010 calendar: { 5011 sameDay: function () { 5012 return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; 5013 }, 5014 nextDay: function () { 5015 return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; 5016 }, 5017 nextWeek: function () { 5018 return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; 5019 }, 5020 lastDay: function () { 5021 return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; 5022 }, 5023 lastWeek: function () { 5024 return ( 5025 '[el] dddd [pasado a la' + 5026 (this.hours() !== 1 ? 's' : '') + 5027 '] LT' 5028 ); 5029 }, 5030 sameElse: 'L', 5031 }, 5032 relativeTime: { 5033 future: 'en %s', 5034 past: 'hace %s', 5035 s: 'unos segundos', 5036 ss: '%d segundos', 5037 m: 'un minuto', 5038 mm: '%d minutos', 5039 h: 'una hora', 5040 hh: '%d horas', 5041 d: 'un dÃa', 5042 dd: '%d dÃas', 5043 M: 'un mes', 5044 MM: '%d meses', 5045 y: 'un año', 5046 yy: '%d años', 5047 }, 5048 dayOfMonthOrdinalParse: /\d{1,2}º/, 5049 ordinal: '%dº', 5050 week: { 5051 dow: 0, // Sunday is the first day of the week. 5052 doy: 6, // The week that contains Jan 6th is the first week of the year. 5053 }, 5054 }); 5055 5056 return esUs; 5057 5058}))); 5059 5060 5061/***/ }), 5062
vendor: 4,681 bytes, lines 5063-5186
5063/***/ "../../node_modules/moment/locale/es.js": 5064/*!*********************************************************************************************************************************!*\ 5065 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/es.js ***! 5066 \*********************************************************************************************************************************/ 5067/*! no static exports found */ 5068/***/ (function(module, exports, __webpack_require__) { 5069 5070//! moment.js locale configuration 5071//! locale : Spanish [es] 5072//! author : Julio Napurà : https://github.com/julionc 5073 5074;(function (global, factory) { 5075 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 5076 undefined 5077}(this, (function (moment) { 'use strict'; 5078 5079 //! moment.js locale configuration 5080 5081 var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split( 5082 '_' 5083 ), 5084 monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'), 5085 monthsParse = [ 5086 /^ene/i, 5087 /^feb/i, 5088 /^mar/i, 5089 /^abr/i, 5090 /^may/i, 5091 /^jun/i, 5092 /^jul/i, 5093 /^ago/i, 5094 /^sep/i, 5095 /^oct/i, 5096 /^nov/i, 5097 /^dic/i, 5098 ], 5099 monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i; 5100 5101 var es = moment.defineLocale('es', { 5102 months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split( 5103 '_' 5104 ), 5105 monthsShort: function (m, format) { 5106 if (!m) { 5107 return monthsShortDot; 5108 } else if (/-MMM-/.test(format)) { 5109 return monthsShort[m.month()]; 5110 } else { 5111 return monthsShortDot[m.month()]; 5112 } 5113 }, 5114 monthsRegex: monthsRegex, 5115 monthsShortRegex: monthsRegex, 5116 monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i, 5117 monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i, 5118 monthsParse: monthsParse, 5119 longMonthsParse: monthsParse, 5120 shortMonthsParse: monthsParse, 5121 weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'), 5122 weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'), 5123 weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'), 5124 weekdaysParseExact: true, 5125 longDateFormat: { 5126 LT: 'H:mm', 5127 LTS: 'H:mm:ss', 5128 L: 'DD/MM/YYYY', 5129 LL: 'D [de] MMMM [de] YYYY', 5130 LLL: 'D [de] MMMM [de] YYYY H:mm', 5131 LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm', 5132 }, 5133 calendar: { 5134 sameDay: function () { 5135 return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; 5136 }, 5137 nextDay: function () { 5138 return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; 5139 }, 5140 nextWeek: function () { 5141 return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; 5142 }, 5143 lastDay: function () { 5144 return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT'; 5145 }, 5146 lastWeek: function () { 5147 return ( 5148 '[el] dddd [pasado a la' + 5149 (this.hours() !== 1 ? 's' : '') + 5150 '] LT' 5151 ); 5152 }, 5153 sameElse: 'L', 5154 }, 5155 relativeTime: { 5156 future: 'en %s', 5157 past: 'hace %s', 5158 s: 'unos segundos', 5159 ss: '%d segundos', 5160 m: 'un minuto', 5161 mm: '%d minutos', 5162 h: 'una hora', 5163 hh: '%d horas', 5164 d: 'un dÃa', 5165 dd: '%d dÃas', 5166 M: 'un mes', 5167 MM: '%d meses', 5168 y: 'un año', 5169 yy: '%d años', 5170 }, 5171 dayOfMonthOrdinalParse: /\d{1,2}º/, 5172 ordinal: '%dº', 5173 week: { 5174 dow: 1, // Monday is the first day of the week. 5175 doy: 4, // The week that contains Jan 4th is the first week of the year. 5176 }, 5177 invalidDate: 'Fecha invalida', 5178 }); 5179 5180 return es; 5181 5182}))); 5183 5184 5185/***/ }), 5186
vendor: 3,762 bytes, lines 5187-5284
5187/***/ "../../node_modules/moment/locale/et.js": 5188/*!*********************************************************************************************************************************!*\ 5189 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/et.js ***! 5190 \*********************************************************************************************************************************/ 5191/*! no static exports found */ 5192/***/ (function(module, exports, __webpack_require__) { 5193 5194//! moment.js locale configuration 5195//! locale : Estonian [et] 5196//! author : Henry Kehlmann : https://github.com/madhenry 5197//! improvements : Illimar Tambek : https://github.com/ragulka 5198 5199;(function (global, factory) { 5200 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 5201 undefined 5202}(this, (function (moment) { 'use strict'; 5203 5204 //! moment.js locale configuration 5205 5206 function processRelativeTime(number, withoutSuffix, key, isFuture) { 5207 var format = { 5208 s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'], 5209 ss: [number + 'sekundi', number + 'sekundit'], 5210 m: ['ühe minuti', 'üks minut'], 5211 mm: [number + ' minuti', number + ' minutit'], 5212 h: ['ühe tunni', 'tund aega', 'üks tund'], 5213 hh: [number + ' tunni', number + ' tundi'], 5214 d: ['ühe päeva', 'üks päev'], 5215 M: ['kuu aja', 'kuu aega', 'üks kuu'], 5216 MM: [number + ' kuu', number + ' kuud'], 5217 y: ['ühe aasta', 'aasta', 'üks aasta'], 5218 yy: [number + ' aasta', number + ' aastat'], 5219 }; 5220 if (withoutSuffix) { 5221 return format[key][2] ? format[key][2] : format[key][1]; 5222 } 5223 return isFuture ? format[key][0] : format[key][1]; 5224 } 5225 5226 var et = moment.defineLocale('et', { 5227 months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split( 5228 '_' 5229 ), 5230 monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split( 5231 '_' 5232 ), 5233 weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split( 5234 '_' 5235 ), 5236 weekdaysShort: 'P_E_T_K_N_R_L'.split('_'), 5237 weekdaysMin: 'P_E_T_K_N_R_L'.split('_'), 5238 longDateFormat: { 5239 LT: 'H:mm', 5240 LTS: 'H:mm:ss', 5241 L: 'DD.MM.YYYY', 5242 LL: 'D. MMMM YYYY', 5243 LLL: 'D. MMMM YYYY H:mm', 5244 LLLL: 'dddd, D. MMMM YYYY H:mm', 5245 }, 5246 calendar: { 5247 sameDay: '[Täna,] LT', 5248 nextDay: '[Homme,] LT', 5249 nextWeek: '[Järgmine] dddd LT', 5250 lastDay: '[Eile,] LT', 5251 lastWeek: '[Eelmine] dddd LT', 5252 sameElse: 'L', 5253 }, 5254 relativeTime: { 5255 future: '%s pärast', 5256 past: '%s tagasi', 5257 s: processRelativeTime, 5258 ss: processRelativeTime, 5259 m: processRelativeTime, 5260 mm: processRelativeTime, 5261 h: processRelativeTime, 5262 hh: processRelativeTime, 5263 d: processRelativeTime, 5264 dd: '%d päeva', 5265 M: processRelativeTime, 5266 MM: processRelativeTime, 5267 y: processRelativeTime, 5268 yy: processRelativeTime, 5269 }, 5270 dayOfMonthOrdinalParse: /\d{1,2}\./, 5271 ordinal: '%d.', 5272 week: { 5273 dow: 1, // Monday is the first day of the week. 5274 doy: 4, // The week that contains Jan 4th is the first week of the year. 5275 }, 5276 }); 5277 5278 return et; 5279 5280}))); 5281 5282 5283/***/ }), 5284
vendor: 3,006 bytes, lines 5285-5367
5285/***/ "../../node_modules/moment/locale/eu.js": 5286/*!*********************************************************************************************************************************!*\ 5287 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/eu.js ***! 5288 \*********************************************************************************************************************************/ 5289/*! no static exports found */ 5290/***/ (function(module, exports, __webpack_require__) { 5291 5292//! moment.js locale configuration 5293//! locale : Basque [eu] 5294//! author : Eneko Illarramendi : https://github.com/eillarra 5295 5296;(function (global, factory) { 5297 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 5298 undefined 5299}(this, (function (moment) { 'use strict'; 5300 5301 //! moment.js locale configuration 5302 5303 var eu = moment.defineLocale('eu', { 5304 months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split( 5305 '_' 5306 ), 5307 monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split( 5308 '_' 5309 ), 5310 monthsParseExact: true, 5311 weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split( 5312 '_' 5313 ), 5314 weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'), 5315 weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'), 5316 weekdaysParseExact: true, 5317 longDateFormat: { 5318 LT: 'HH:mm', 5319 LTS: 'HH:mm:ss', 5320 L: 'YYYY-MM-DD', 5321 LL: 'YYYY[ko] MMMM[ren] D[a]', 5322 LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm', 5323 LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm', 5324 l: 'YYYY-M-D', 5325 ll: 'YYYY[ko] MMM D[a]', 5326 lll: 'YYYY[ko] MMM D[a] HH:mm', 5327 llll: 'ddd, YYYY[ko] MMM D[a] HH:mm', 5328 }, 5329 calendar: { 5330 sameDay: '[gaur] LT[etan]', 5331 nextDay: '[bihar] LT[etan]', 5332 nextWeek: 'dddd LT[etan]', 5333 lastDay: '[atzo] LT[etan]', 5334 lastWeek: '[aurreko] dddd LT[etan]', 5335 sameElse: 'L', 5336 }, 5337 relativeTime: { 5338 future: '%s barru', 5339 past: 'duela %s', 5340 s: 'segundo batzuk', 5341 ss: '%d segundo', 5342 m: 'minutu bat', 5343 mm: '%d minutu', 5344 h: 'ordu bat', 5345 hh: '%d ordu', 5346 d: 'egun bat', 5347 dd: '%d egun', 5348 M: 'hilabete bat', 5349 MM: '%d hilabete', 5350 y: 'urte bat', 5351 yy: '%d urte', 5352 }, 5353 dayOfMonthOrdinalParse: /\d{1,2}\./, 5354 ordinal: '%d.', 5355 week: { 5356 dow: 1, // Monday is the first day of the week. 5357 doy: 7, // The week that contains Jan 7th is the first week of the year. 5358 }, 5359 }); 5360 5361 return eu; 5362 5363}))); 5364 5365 5366/***/ }), 5367
vendor: 4,507 bytes, lines 5368-5497
5368/***/ "../../node_modules/moment/locale/fa.js": 5369/*!*********************************************************************************************************************************!*\ 5370 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/fa.js ***! 5371 \*********************************************************************************************************************************/ 5372/*! no static exports found */ 5373/***/ (function(module, exports, __webpack_require__) { 5374 5375//! moment.js locale configuration 5376//! locale : Persian [fa] 5377//! author : Ebrahim Byagowi : https://github.com/ebraminio 5378 5379;(function (global, factory) { 5380 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 5381 undefined 5382}(this, (function (moment) { 'use strict'; 5383 5384 //! moment.js locale configuration 5385 5386 var symbolMap = { 5387 '1': 'Û±', 5388 '2': 'Û²', 5389 '3': 'Û³', 5390 '4': 'Û´', 5391 '5': 'Ûµ', 5392 '6': 'Û¶', 5393 '7': 'Û·', 5394 '8': 'Û¸', 5395 '9': 'Û¹', 5396 '0': 'Û°', 5397 }, 5398 numberMap = { 5399 'Û±': '1', 5400 'Û²': '2', 5401 'Û³': '3', 5402 'Û´': '4', 5403 'Ûµ': '5', 5404 'Û¶': '6', 5405 'Û·': '7', 5406 'Û¸': '8', 5407 'Û¹': '9', 5408 'Û°': '0', 5409 }; 5410 5411 var fa = moment.defineLocale('fa', { 5412 months: 'ÚØ§ÙÙÛÙ_ÙÙØ±ÛÙ_٠ارس_Ø¢ÙØ±ÛÙ_Ù Ù_ÚÙØ¦Ù_ÚÙØ¦ÛÙ_Ø§ÙØª_سپتا٠بر_اکتبر_ÙÙØ§Ù بر_دسا٠بر'.split( 5413 '_' 5414 ), 5415 monthsShort: 'ÚØ§ÙÙÛÙ_ÙÙØ±ÛÙ_٠ارس_Ø¢ÙØ±ÛÙ_Ù Ù_ÚÙØ¦Ù_ÚÙØ¦ÛÙ_Ø§ÙØª_سپتا٠بر_اکتبر_ÙÙØ§Ù بر_دسا٠بر'.split( 5416 '_' 5417 ), 5418 weekdays: 'ÛÚ©\u200cØ´ÙØ¨Ù_Ø¯ÙØ´ÙبÙ_سÙ\u200cØ´ÙØ¨Ù_ÚÙØ§Ø±Ø´ÙبÙ_Ù¾ÙØ¬\u200cØ´ÙØ¨Ù_ج٠عÙ_Ø´ÙØ¨Ù'.split( 5419 '_' 5420 ), 5421 weekdaysShort: 'ÛÚ©\u200cØ´ÙØ¨Ù_Ø¯ÙØ´ÙبÙ_سÙ\u200cØ´ÙØ¨Ù_ÚÙØ§Ø±Ø´ÙبÙ_Ù¾ÙØ¬\u200cØ´ÙØ¨Ù_ج٠عÙ_Ø´ÙØ¨Ù'.split( 5422 '_' 5423 ), 5424 weekdaysMin: 'Û_د_س_Ú_Ù¾_ج_Ø´'.split('_'), 5425 weekdaysParseExact: true, 5426 longDateFormat: { 5427 LT: 'HH:mm', 5428 LTS: 'HH:mm:ss', 5429 L: 'DD/MM/YYYY', 5430 LL: 'D MMMM YYYY', 5431 LLL: 'D MMMM YYYY HH:mm', 5432 LLLL: 'dddd, D MMMM YYYY HH:mm', 5433 }, 5434 meridiemParse: /ÙØ¨Ù از Ø¸ÙØ±|بعد از Ø¸ÙØ±/, 5435 isPM: function (input) { 5436 return /بعد از Ø¸ÙØ±/.test(input); 5437 }, 5438 meridiem: function (hour, minute, isLower) { 5439 if (hour < 12) { 5440 return 'ÙØ¨Ù از Ø¸ÙØ±'; 5441 } else { 5442 return 'بعد از Ø¸ÙØ±'; 5443 } 5444 }, 5445 calendar: { 5446 sameDay: '[Ø§Ù Ø±ÙØ² ساعت] LT', 5447 nextDay: '[ÙØ±Ø¯Ø§ ساعت] LT', 5448 nextWeek: 'dddd [ساعت] LT', 5449 lastDay: '[Ø¯ÛØ±Ùز ساعت] LT', 5450 lastWeek: 'dddd [Ù¾ÛØ´] [ساعت] LT', 5451 sameElse: 'L', 5452 }, 5453 relativeTime: { 5454 future: 'در %s', 5455 past: '%s Ù¾ÛØ´', 5456 s: 'ÚÙØ¯ ثاÙÛÙ', 5457 ss: '%d ثاÙÛÙ', 5458 m: 'ÛÚ© دÙÛÙÙ', 5459 mm: '%d دÙÛÙÙ', 5460 h: 'ÛÚ© ساعت', 5461 hh: '%d ساعت', 5462 d: 'ÛÚ© Ø±ÙØ²', 5463 dd: '%d Ø±ÙØ²', 5464 M: 'ÛÚ© ٠اÙ', 5465 MM: '%d ٠اÙ', 5466 y: 'ÛÚ© ساÙ', 5467 yy: '%d ساÙ', 5468 }, 5469 preparse: function (string) { 5470 return string 5471 .replace(/[Û°-Û¹]/g, function (match) { 5472 return numberMap[match]; 5473 }) 5474 .replace(/Ø/g, ','); 5475 }, 5476 postformat: function (string) { 5477 return string 5478 .replace(/\d/g, function (match) { 5479 return symbolMap[match]; 5480 }) 5481 .replace(/,/g, 'Ø'); 5482 }, 5483 dayOfMonthOrdinalParse: /\d{1,2}Ù /, 5484 ordinal: '%dÙ ', 5485 week: { 5486 dow: 6, // Saturday is the first day of the week. 5487 doy: 12, // The week that contains Jan 12th is the first week of the year. 5488 }, 5489 }); 5490 5491 return fa; 5492 5493}))); 5494 5495 5496/***/ }), 5497
vendor: 4,944 bytes, lines 5498-5638
5498/***/ "../../node_modules/moment/locale/fi.js": 5499/*!*********************************************************************************************************************************!*\ 5500 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/fi.js ***! 5501 \*********************************************************************************************************************************/ 5502/*! no static exports found */ 5503/***/ (function(module, exports, __webpack_require__) { 5504 5505//! moment.js locale configuration 5506//! locale : Finnish [fi] 5507//! author : Tarmo Aidantausta : https://github.com/bleadof 5508 5509;(function (global, factory) { 5510 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 5511 undefined 5512}(this, (function (moment) { 'use strict'; 5513 5514 //! moment.js locale configuration 5515 5516 var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split( 5517 ' ' 5518 ), 5519 numbersFuture = [ 5520 'nolla', 5521 'yhden', 5522 'kahden', 5523 'kolmen', 5524 'neljän', 5525 'viiden', 5526 'kuuden', 5527 numbersPast[7], 5528 numbersPast[8], 5529 numbersPast[9], 5530 ]; 5531 function translate(number, withoutSuffix, key, isFuture) { 5532 var result = ''; 5533 switch (key) { 5534 case 's': 5535 return isFuture ? 'muutaman sekunnin' : 'muutama sekunti'; 5536 case 'ss': 5537 result = isFuture ? 'sekunnin' : 'sekuntia'; 5538 break; 5539 case 'm': 5540 return isFuture ? 'minuutin' : 'minuutti'; 5541 case 'mm': 5542 result = isFuture ? 'minuutin' : 'minuuttia'; 5543 break; 5544 case 'h': 5545 return isFuture ? 'tunnin' : 'tunti'; 5546 case 'hh': 5547 result = isFuture ? 'tunnin' : 'tuntia'; 5548 break; 5549 case 'd': 5550 return isFuture ? 'päivän' : 'päivä'; 5551 case 'dd': 5552 result = isFuture ? 'päivän' : 'päivää'; 5553 break; 5554 case 'M': 5555 return isFuture ? 'kuukauden' : 'kuukausi'; 5556 case 'MM': 5557 result = isFuture ? 'kuukauden' : 'kuukautta'; 5558 break; 5559 case 'y': 5560 return isFuture ? 'vuoden' : 'vuosi'; 5561 case 'yy': 5562 result = isFuture ? 'vuoden' : 'vuotta'; 5563 break; 5564 } 5565 result = verbalNumber(number, isFuture) + ' ' + result; 5566 return result; 5567 } 5568 function verbalNumber(number, isFuture) { 5569 return number < 10 5570 ? isFuture 5571 ? numbersFuture[number] 5572 : numbersPast[number] 5573 : number; 5574 } 5575 5576 var fi = moment.defineLocale('fi', { 5577 months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split( 5578 '_' 5579 ), 5580 monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split( 5581 '_' 5582 ), 5583 weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split( 5584 '_' 5585 ), 5586 weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'), 5587 weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'), 5588 longDateFormat: { 5589 LT: 'HH.mm', 5590 LTS: 'HH.mm.ss', 5591 L: 'DD.MM.YYYY', 5592 LL: 'Do MMMM[ta] YYYY', 5593 LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm', 5594 LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm', 5595 l: 'D.M.YYYY', 5596 ll: 'Do MMM YYYY', 5597 lll: 'Do MMM YYYY, [klo] HH.mm', 5598 llll: 'ddd, Do MMM YYYY, [klo] HH.mm', 5599 }, 5600 calendar: { 5601 sameDay: '[tänään] [klo] LT', 5602 nextDay: '[huomenna] [klo] LT', 5603 nextWeek: 'dddd [klo] LT', 5604 lastDay: '[eilen] [klo] LT', 5605 lastWeek: '[viime] dddd[na] [klo] LT', 5606 sameElse: 'L', 5607 }, 5608 relativeTime: { 5609 future: '%s päästä', 5610 past: '%s sitten', 5611 s: translate, 5612 ss: translate, 5613 m: translate, 5614 mm: translate, 5615 h: translate, 5616 hh: translate, 5617 d: translate, 5618 dd: translate, 5619 M: translate, 5620 MM: translate, 5621 y: translate, 5622 yy: translate, 5623 }, 5624 dayOfMonthOrdinalParse: /\d{1,2}\./, 5625 ordinal: '%d.', 5626 week: { 5627 dow: 1, // Monday is the first day of the week. 5628 doy: 4, // The week that contains Jan 4th is the first week of the year. 5629 }, 5630 }); 5631 5632 return fi; 5633 5634}))); 5635 5636 5637/***/ }), 5638
vendor: 2,827 bytes, lines 5639-5716
5639/***/ "../../node_modules/moment/locale/fil.js": 5640/*!**********************************************************************************************************************************!*\ 5641 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/fil.js ***! 5642 \**********************************************************************************************************************************/ 5643/*! no static exports found */ 5644/***/ (function(module, exports, __webpack_require__) { 5645 5646//! moment.js locale configuration 5647//! locale : Filipino [fil] 5648//! author : Dan Hagman : https://github.com/hagmandan 5649//! author : Matthew Co : https://github.com/matthewdeeco 5650 5651;(function (global, factory) { 5652 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 5653 undefined 5654}(this, (function (moment) { 'use strict'; 5655 5656 //! moment.js locale configuration 5657 5658 var fil = moment.defineLocale('fil', { 5659 months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split( 5660 '_' 5661 ), 5662 monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'), 5663 weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split( 5664 '_' 5665 ), 5666 weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'), 5667 weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'), 5668 longDateFormat: { 5669 LT: 'HH:mm', 5670 LTS: 'HH:mm:ss', 5671 L: 'MM/D/YYYY', 5672 LL: 'MMMM D, YYYY', 5673 LLL: 'MMMM D, YYYY HH:mm', 5674 LLLL: 'dddd, MMMM DD, YYYY HH:mm', 5675 }, 5676 calendar: { 5677 sameDay: 'LT [ngayong araw]', 5678 nextDay: '[Bukas ng] LT', 5679 nextWeek: 'LT [sa susunod na] dddd', 5680 lastDay: 'LT [kahapon]', 5681 lastWeek: 'LT [noong nakaraang] dddd', 5682 sameElse: 'L', 5683 }, 5684 relativeTime: { 5685 future: 'sa loob ng %s', 5686 past: '%s ang nakalipas', 5687 s: 'ilang segundo', 5688 ss: '%d segundo', 5689 m: 'isang minuto', 5690 mm: '%d minuto', 5691 h: 'isang oras', 5692 hh: '%d oras', 5693 d: 'isang araw', 5694 dd: '%d araw', 5695 M: 'isang buwan', 5696 MM: '%d buwan', 5697 y: 'isang taon', 5698 yy: '%d taon', 5699 }, 5700 dayOfMonthOrdinalParse: /\d{1,2}/, 5701 ordinal: function (number) { 5702 return number; 5703 }, 5704 week: { 5705 dow: 1, // Monday is the first day of the week. 5706 doy: 4, // The week that contains Jan 4th is the first week of the year. 5707 }, 5708 }); 5709 5710 return fil; 5711 5712}))); 5713 5714 5715/***/ }), 5716
vendor: 2,791 bytes, lines 5717-5792
5717/***/ "../../node_modules/moment/locale/fo.js": 5718/*!*********************************************************************************************************************************!*\ 5719 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/fo.js ***! 5720 \*********************************************************************************************************************************/ 5721/*! no static exports found */ 5722/***/ (function(module, exports, __webpack_require__) { 5723 5724//! moment.js locale configuration 5725//! locale : Faroese [fo] 5726//! author : Ragnar Johannesen : https://github.com/ragnar123 5727//! author : Kristian Sakarisson : https://github.com/sakarisson 5728 5729;(function (global, factory) { 5730 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 5731 undefined 5732}(this, (function (moment) { 'use strict'; 5733 5734 //! moment.js locale configuration 5735 5736 var fo = moment.defineLocale('fo', { 5737 months: 'januar_februar_mars_aprÃl_mai_juni_juli_august_september_oktober_november_desember'.split( 5738 '_' 5739 ), 5740 monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'), 5741 weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_frÃggjadagur_leygardagur'.split( 5742 '_' 5743 ), 5744 weekdaysShort: 'sun_mán_týs_mik_hós_frÃ_ley'.split('_'), 5745 weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'), 5746 longDateFormat: { 5747 LT: 'HH:mm', 5748 LTS: 'HH:mm:ss', 5749 L: 'DD/MM/YYYY', 5750 LL: 'D MMMM YYYY', 5751 LLL: 'D MMMM YYYY HH:mm', 5752 LLLL: 'dddd D. MMMM, YYYY HH:mm', 5753 }, 5754 calendar: { 5755 sameDay: '[à dag kl.] LT', 5756 nextDay: '[à morgin kl.] LT', 5757 nextWeek: 'dddd [kl.] LT', 5758 lastDay: '[à gjár kl.] LT', 5759 lastWeek: '[sÃðstu] dddd [kl] LT', 5760 sameElse: 'L', 5761 }, 5762 relativeTime: { 5763 future: 'um %s', 5764 past: '%s sÃðani', 5765 s: 'fá sekund', 5766 ss: '%d sekundir', 5767 m: 'ein minuttur', 5768 mm: '%d minuttir', 5769 h: 'ein tÃmi', 5770 hh: '%d tÃmar', 5771 d: 'ein dagur', 5772 dd: '%d dagar', 5773 M: 'ein mánaður', 5774 MM: '%d mánaðir', 5775 y: 'eitt ár', 5776 yy: '%d ár', 5777 }, 5778 dayOfMonthOrdinalParse: /\d{1,2}\./, 5779 ordinal: '%d.', 5780 week: { 5781 dow: 1, // Monday is the first day of the week. 5782 doy: 4, // The week that contains Jan 4th is the first week of the year. 5783 }, 5784 }); 5785 5786 return fo; 5787 5788}))); 5789 5790 5791/***/ }), 5792
vendor: 3,204 bytes, lines 5793-5881
5793/***/ "../../node_modules/moment/locale/fr-ca.js": 5794/*!************************************************************************************************************************************!*\ 5795 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/fr-ca.js ***! 5796 \************************************************************************************************************************************/ 5797/*! no static exports found */ 5798/***/ (function(module, exports, __webpack_require__) { 5799 5800//! moment.js locale configuration 5801//! locale : French (Canada) [fr-ca] 5802//! author : Jonathan Abourbih : https://github.com/jonbca 5803 5804;(function (global, factory) { 5805 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 5806 undefined 5807}(this, (function (moment) { 'use strict'; 5808 5809 //! moment.js locale configuration 5810 5811 var frCa = moment.defineLocale('fr-ca', { 5812 months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split( 5813 '_' 5814 ), 5815 monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split( 5816 '_' 5817 ), 5818 monthsParseExact: true, 5819 weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), 5820 weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), 5821 weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'), 5822 weekdaysParseExact: true, 5823 longDateFormat: { 5824 LT: 'HH:mm', 5825 LTS: 'HH:mm:ss', 5826 L: 'YYYY-MM-DD', 5827 LL: 'D MMMM YYYY', 5828 LLL: 'D MMMM YYYY HH:mm', 5829 LLLL: 'dddd D MMMM YYYY HH:mm', 5830 }, 5831 calendar: { 5832 sameDay: '[Aujourdâhui à ] LT', 5833 nextDay: '[Demain à ] LT', 5834 nextWeek: 'dddd [à ] LT', 5835 lastDay: '[Hier à ] LT', 5836 lastWeek: 'dddd [dernier à ] LT', 5837 sameElse: 'L', 5838 }, 5839 relativeTime: { 5840 future: 'dans %s', 5841 past: 'il y a %s', 5842 s: 'quelques secondes', 5843 ss: '%d secondes', 5844 m: 'une minute', 5845 mm: '%d minutes', 5846 h: 'une heure', 5847 hh: '%d heures', 5848 d: 'un jour', 5849 dd: '%d jours', 5850 M: 'un mois', 5851 MM: '%d mois', 5852 y: 'un an', 5853 yy: '%d ans', 5854 }, 5855 dayOfMonthOrdinalParse: /\d{1,2}(er|e)/, 5856 ordinal: function (number, period) { 5857 switch (period) { 5858 // Words with masculine grammatical gender: mois, trimestre, jour 5859 default: 5860 case 'M': 5861 case 'Q': 5862 case 'D': 5863 case 'DDD': 5864 case 'd': 5865 return number + (number === 1 ? 'er' : 'e'); 5866 5867 // Words with feminine grammatical gender: semaine 5868 case 'w': 5869 case 'W': 5870 return number + (number === 1 ? 're' : 'e'); 5871 } 5872 }, 5873 }); 5874 5875 return frCa; 5876 5877}))); 5878 5879 5880/***/ }), 5881
vendor: 3,383 bytes, lines 5882-5974
5882/***/ "../../node_modules/moment/locale/fr-ch.js": 5883/*!************************************************************************************************************************************!*\ 5884 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/fr-ch.js ***! 5885 \************************************************************************************************************************************/ 5886/*! no static exports found */ 5887/***/ (function(module, exports, __webpack_require__) { 5888 5889//! moment.js locale configuration 5890//! locale : French (Switzerland) [fr-ch] 5891//! author : Gaspard Bucher : https://github.com/gaspard 5892 5893;(function (global, factory) { 5894 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 5895 undefined 5896}(this, (function (moment) { 'use strict'; 5897 5898 //! moment.js locale configuration 5899 5900 var frCh = moment.defineLocale('fr-ch', { 5901 months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split( 5902 '_' 5903 ), 5904 monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split( 5905 '_' 5906 ), 5907 monthsParseExact: true, 5908 weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), 5909 weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), 5910 weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'), 5911 weekdaysParseExact: true, 5912 longDateFormat: { 5913 LT: 'HH:mm', 5914 LTS: 'HH:mm:ss', 5915 L: 'DD.MM.YYYY', 5916 LL: 'D MMMM YYYY', 5917 LLL: 'D MMMM YYYY HH:mm', 5918 LLLL: 'dddd D MMMM YYYY HH:mm', 5919 }, 5920 calendar: { 5921 sameDay: '[Aujourdâhui à ] LT', 5922 nextDay: '[Demain à ] LT', 5923 nextWeek: 'dddd [à ] LT', 5924 lastDay: '[Hier à ] LT', 5925 lastWeek: 'dddd [dernier à ] LT', 5926 sameElse: 'L', 5927 }, 5928 relativeTime: { 5929 future: 'dans %s', 5930 past: 'il y a %s', 5931 s: 'quelques secondes', 5932 ss: '%d secondes', 5933 m: 'une minute', 5934 mm: '%d minutes', 5935 h: 'une heure', 5936 hh: '%d heures', 5937 d: 'un jour', 5938 dd: '%d jours', 5939 M: 'un mois', 5940 MM: '%d mois', 5941 y: 'un an', 5942 yy: '%d ans', 5943 }, 5944 dayOfMonthOrdinalParse: /\d{1,2}(er|e)/, 5945 ordinal: function (number, period) { 5946 switch (period) { 5947 // Words with masculine grammatical gender: mois, trimestre, jour 5948 default: 5949 case 'M': 5950 case 'Q': 5951 case 'D': 5952 case 'DDD': 5953 case 'd': 5954 return number + (number === 1 ? 'er' : 'e'); 5955 5956 // Words with feminine grammatical gender: semaine 5957 case 'w': 5958 case 'W': 5959 return number + (number === 1 ? 're' : 'e'); 5960 } 5961 }, 5962 week: { 5963 dow: 1, // Monday is the first day of the week. 5964 doy: 4, // The week that contains Jan 4th is the first week of the year. 5965 }, 5966 }); 5967 5968 return frCh; 5969 5970}))); 5971 5972 5973/***/ }), 5974
vendor: 4,635 bytes, lines 5975-6096
5975/***/ "../../node_modules/moment/locale/fr.js": 5976/*!*********************************************************************************************************************************!*\ 5977 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/fr.js ***! 5978 \*********************************************************************************************************************************/ 5979/*! no static exports found */ 5980/***/ (function(module, exports, __webpack_require__) { 5981 5982//! moment.js locale configuration 5983//! locale : French [fr] 5984//! author : John Fischer : https://github.com/jfroffice 5985 5986;(function (global, factory) { 5987 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 5988 undefined 5989}(this, (function (moment) { 'use strict'; 5990 5991 //! moment.js locale configuration 5992 5993 var monthsStrictRegex = /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i, 5994 monthsShortStrictRegex = /(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?)/i, 5995 monthsRegex = /(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i, 5996 monthsParse = [ 5997 /^janv/i, 5998 /^févr/i, 5999 /^mars/i, 6000 /^avr/i, 6001 /^mai/i, 6002 /^juin/i, 6003 /^juil/i, 6004 /^août/i, 6005 /^sept/i, 6006 /^oct/i, 6007 /^nov/i, 6008 /^déc/i, 6009 ]; 6010 6011 var fr = moment.defineLocale('fr', { 6012 months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split( 6013 '_' 6014 ), 6015 monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split( 6016 '_' 6017 ), 6018 monthsRegex: monthsRegex, 6019 monthsShortRegex: monthsRegex, 6020 monthsStrictRegex: monthsStrictRegex, 6021 monthsShortStrictRegex: monthsShortStrictRegex, 6022 monthsParse: monthsParse, 6023 longMonthsParse: monthsParse, 6024 shortMonthsParse: monthsParse, 6025 weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'), 6026 weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'), 6027 weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'), 6028 weekdaysParseExact: true, 6029 longDateFormat: { 6030 LT: 'HH:mm', 6031 LTS: 'HH:mm:ss', 6032 L: 'DD/MM/YYYY', 6033 LL: 'D MMMM YYYY', 6034 LLL: 'D MMMM YYYY HH:mm', 6035 LLLL: 'dddd D MMMM YYYY HH:mm', 6036 }, 6037 calendar: { 6038 sameDay: '[Aujourdâhui à ] LT', 6039 nextDay: '[Demain à ] LT', 6040 nextWeek: 'dddd [à ] LT', 6041 lastDay: '[Hier à ] LT', 6042 lastWeek: 'dddd [dernier à ] LT', 6043 sameElse: 'L', 6044 }, 6045 relativeTime: { 6046 future: 'dans %s', 6047 past: 'il y a %s', 6048 s: 'quelques secondes', 6049 ss: '%d secondes', 6050 m: 'une minute', 6051 mm: '%d minutes', 6052 h: 'une heure', 6053 hh: '%d heures', 6054 d: 'un jour', 6055 dd: '%d jours', 6056 M: 'un mois', 6057 MM: '%d mois', 6058 y: 'un an', 6059 yy: '%d ans', 6060 }, 6061 dayOfMonthOrdinalParse: /\d{1,2}(er|)/, 6062 ordinal: function (number, period) { 6063 switch (period) { 6064 // TODO: Return 'e' when day of month > 1. Move this case inside 6065 // block for masculine words below. 6066 // See https://github.com/moment/moment/issues/3375 6067 case 'D': 6068 return number + (number === 1 ? 'er' : ''); 6069 6070 // Words with masculine grammatical gender: mois, trimestre, jour 6071 default: 6072 case 'M': 6073 case 'Q': 6074 case 'DDD': 6075 case 'd': 6076 return number + (number === 1 ? 'er' : 'e'); 6077 6078 // Words with feminine grammatical gender: semaine 6079 case 'w': 6080 case 'W': 6081 return number + (number === 1 ? 're' : 'e'); 6082 } 6083 }, 6084 week: { 6085 dow: 1, // Monday is the first day of the week. 6086 doy: 4, // The week that contains Jan 4th is the first week of the year. 6087 }, 6088 }); 6089 6090 return fr; 6091 6092}))); 6093 6094 6095/***/ }), 6096
vendor: 3,427 bytes, lines 6097-6193
6097/***/ "../../node_modules/moment/locale/fy.js": 6098/*!*********************************************************************************************************************************!*\ 6099 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/fy.js ***! 6100 \*********************************************************************************************************************************/ 6101/*! no static exports found */ 6102/***/ (function(module, exports, __webpack_require__) { 6103 6104//! moment.js locale configuration 6105//! locale : Frisian [fy] 6106//! author : Robin van der Vliet : https://github.com/robin0van0der0v 6107 6108;(function (global, factory) { 6109 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 6110 undefined 6111}(this, (function (moment) { 'use strict'; 6112 6113 //! moment.js locale configuration 6114 6115 var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split( 6116 '_' 6117 ), 6118 monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split( 6119 '_' 6120 ); 6121 6122 var fy = moment.defineLocale('fy', { 6123 months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split( 6124 '_' 6125 ), 6126 monthsShort: function (m, format) { 6127 if (!m) { 6128 return monthsShortWithDots; 6129 } else if (/-MMM-/.test(format)) { 6130 return monthsShortWithoutDots[m.month()]; 6131 } else { 6132 return monthsShortWithDots[m.month()]; 6133 } 6134 }, 6135 monthsParseExact: true, 6136 weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split( 6137 '_' 6138 ), 6139 weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'), 6140 weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'), 6141 weekdaysParseExact: true, 6142 longDateFormat: { 6143 LT: 'HH:mm', 6144 LTS: 'HH:mm:ss', 6145 L: 'DD-MM-YYYY', 6146 LL: 'D MMMM YYYY', 6147 LLL: 'D MMMM YYYY HH:mm', 6148 LLLL: 'dddd D MMMM YYYY HH:mm', 6149 }, 6150 calendar: { 6151 sameDay: '[hjoed om] LT', 6152 nextDay: '[moarn om] LT', 6153 nextWeek: 'dddd [om] LT', 6154 lastDay: '[juster om] LT', 6155 lastWeek: '[ôfrûne] dddd [om] LT', 6156 sameElse: 'L', 6157 }, 6158 relativeTime: { 6159 future: 'oer %s', 6160 past: '%s lyn', 6161 s: 'in pear sekonden', 6162 ss: '%d sekonden', 6163 m: 'ien minút', 6164 mm: '%d minuten', 6165 h: 'ien oere', 6166 hh: '%d oeren', 6167 d: 'ien dei', 6168 dd: '%d dagen', 6169 M: 'ien moanne', 6170 MM: '%d moannen', 6171 y: 'ien jier', 6172 yy: '%d jierren', 6173 }, 6174 dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, 6175 ordinal: function (number) { 6176 return ( 6177 number + 6178 (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de') 6179 ); 6180 }, 6181 week: { 6182 dow: 1, // Monday is the first day of the week. 6183 doy: 4, // The week that contains Jan 4th is the first week of the year. 6184 }, 6185 }); 6186 6187 return fy; 6188 6189}))); 6190 6191 6192/***/ }), 6193
vendor: 3,590 bytes, lines 6194-6308
6194/***/ "../../node_modules/moment/locale/ga.js": 6195/*!*********************************************************************************************************************************!*\ 6196 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ga.js ***! 6197 \*********************************************************************************************************************************/ 6198/*! no static exports found */ 6199/***/ (function(module, exports, __webpack_require__) { 6200 6201//! moment.js locale configuration 6202//! locale : Irish or Irish Gaelic [ga] 6203//! author : André Silva : https://github.com/askpt 6204 6205;(function (global, factory) { 6206 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 6207 undefined 6208}(this, (function (moment) { 'use strict'; 6209 6210 //! moment.js locale configuration 6211 6212 var months = [ 6213 'Eanáir', 6214 'Feabhra', 6215 'Márta', 6216 'Aibreán', 6217 'Bealtaine', 6218 'Meitheamh', 6219 'Iúil', 6220 'Lúnasa', 6221 'Meán Fómhair', 6222 'Deireadh Fómhair', 6223 'Samhain', 6224 'Nollaig', 6225 ], 6226 monthsShort = [ 6227 'Ean', 6228 'Feabh', 6229 'Márt', 6230 'Aib', 6231 'Beal', 6232 'Meith', 6233 'Iúil', 6234 'Lún', 6235 'M.F.', 6236 'D.F.', 6237 'Samh', 6238 'Noll', 6239 ], 6240 weekdays = [ 6241 'Dé Domhnaigh', 6242 'Dé Luain', 6243 'Dé Máirt', 6244 'Dé Céadaoin', 6245 'Déardaoin', 6246 'Dé hAoine', 6247 'Dé Sathairn', 6248 ], 6249 weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'], 6250 weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa']; 6251 6252 var ga = moment.defineLocale('ga', { 6253 months: months, 6254 monthsShort: monthsShort, 6255 monthsParseExact: true, 6256 weekdays: weekdays, 6257 weekdaysShort: weekdaysShort, 6258 weekdaysMin: weekdaysMin, 6259 longDateFormat: { 6260 LT: 'HH:mm', 6261 LTS: 'HH:mm:ss', 6262 L: 'DD/MM/YYYY', 6263 LL: 'D MMMM YYYY', 6264 LLL: 'D MMMM YYYY HH:mm', 6265 LLLL: 'dddd, D MMMM YYYY HH:mm', 6266 }, 6267 calendar: { 6268 sameDay: '[Inniu ag] LT', 6269 nextDay: '[Amárach ag] LT', 6270 nextWeek: 'dddd [ag] LT', 6271 lastDay: '[Inné ag] LT', 6272 lastWeek: 'dddd [seo caite] [ag] LT', 6273 sameElse: 'L', 6274 }, 6275 relativeTime: { 6276 future: 'i %s', 6277 past: '%s ó shin', 6278 s: 'cúpla soicind', 6279 ss: '%d soicind', 6280 m: 'nóiméad', 6281 mm: '%d nóiméad', 6282 h: 'uair an chloig', 6283 hh: '%d uair an chloig', 6284 d: 'lá', 6285 dd: '%d lá', 6286 M: 'mÃ', 6287 MM: '%d mÃonna', 6288 y: 'bliain', 6289 yy: '%d bliain', 6290 }, 6291 dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/, 6292 ordinal: function (number) { 6293 var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh'; 6294 return number + output; 6295 }, 6296 week: { 6297 dow: 1, // Monday is the first day of the week. 6298 doy: 4, // The week that contains Jan 4th is the first week of the year. 6299 }, 6300 }); 6301 6302 return ga; 6303 6304}))); 6305 6306 6307/***/ }), 6308
vendor: 3,610 bytes, lines 6309-6423
6309/***/ "../../node_modules/moment/locale/gd.js": 6310/*!*********************************************************************************************************************************!*\ 6311 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/gd.js ***! 6312 \*********************************************************************************************************************************/ 6313/*! no static exports found */ 6314/***/ (function(module, exports, __webpack_require__) { 6315 6316//! moment.js locale configuration 6317//! locale : Scottish Gaelic [gd] 6318//! author : Jon Ashdown : https://github.com/jonashdown 6319 6320;(function (global, factory) { 6321 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 6322 undefined 6323}(this, (function (moment) { 'use strict'; 6324 6325 //! moment.js locale configuration 6326 6327 var months = [ 6328 'Am Faoilleach', 6329 'An Gearran', 6330 'Am Mà rt', 6331 'An Giblean', 6332 'An Cèitean', 6333 'An t-Ãgmhios', 6334 'An t-Iuchar', 6335 'An Lùnastal', 6336 'An t-Sultain', 6337 'An Dà mhair', 6338 'An t-Samhain', 6339 'An Dùbhlachd', 6340 ], 6341 monthsShort = [ 6342 'Faoi', 6343 'Gear', 6344 'Mà rt', 6345 'Gibl', 6346 'Cèit', 6347 'Ãgmh', 6348 'Iuch', 6349 'Lùn', 6350 'Sult', 6351 'Dà mh', 6352 'Samh', 6353 'Dùbh', 6354 ], 6355 weekdays = [ 6356 'Didòmhnaich', 6357 'Diluain', 6358 'Dimà irt', 6359 'Diciadain', 6360 'Diardaoin', 6361 'Dihaoine', 6362 'Disathairne', 6363 ], 6364 weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'], 6365 weekdaysMin = ['Dò', 'Lu', 'Mà ', 'Ci', 'Ar', 'Ha', 'Sa']; 6366 6367 var gd = moment.defineLocale('gd', { 6368 months: months, 6369 monthsShort: monthsShort, 6370 monthsParseExact: true, 6371 weekdays: weekdays, 6372 weekdaysShort: weekdaysShort, 6373 weekdaysMin: weekdaysMin, 6374 longDateFormat: { 6375 LT: 'HH:mm', 6376 LTS: 'HH:mm:ss', 6377 L: 'DD/MM/YYYY', 6378 LL: 'D MMMM YYYY', 6379 LLL: 'D MMMM YYYY HH:mm', 6380 LLLL: 'dddd, D MMMM YYYY HH:mm', 6381 }, 6382 calendar: { 6383 sameDay: '[An-diugh aig] LT', 6384 nextDay: '[A-mà ireach aig] LT', 6385 nextWeek: 'dddd [aig] LT', 6386 lastDay: '[An-dè aig] LT', 6387 lastWeek: 'dddd [seo chaidh] [aig] LT', 6388 sameElse: 'L', 6389 }, 6390 relativeTime: { 6391 future: 'ann an %s', 6392 past: 'bho chionn %s', 6393 s: 'beagan diogan', 6394 ss: '%d diogan', 6395 m: 'mionaid', 6396 mm: '%d mionaidean', 6397 h: 'uair', 6398 hh: '%d uairean', 6399 d: 'latha', 6400 dd: '%d latha', 6401 M: 'mìos', 6402 MM: '%d mìosan', 6403 y: 'bliadhna', 6404 yy: '%d bliadhna', 6405 }, 6406 dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/, 6407 ordinal: function (number) { 6408 var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh'; 6409 return number + output; 6410 }, 6411 week: { 6412 dow: 1, // Monday is the first day of the week. 6413 doy: 4, // The week that contains Jan 4th is the first week of the year. 6414 }, 6415 }); 6416 6417 return gd; 6418 6419}))); 6420 6421 6422/***/ }), 6423
vendor: 3,460 bytes, lines 6424-6517
6424/***/ "../../node_modules/moment/locale/gl.js": 6425/*!*********************************************************************************************************************************!*\ 6426 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/gl.js ***! 6427 \*********************************************************************************************************************************/ 6428/*! no static exports found */ 6429/***/ (function(module, exports, __webpack_require__) { 6430 6431//! moment.js locale configuration 6432//! locale : Galician [gl] 6433//! author : Juan G. Hurtado : https://github.com/juanghurtado 6434 6435;(function (global, factory) { 6436 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 6437 undefined 6438}(this, (function (moment) { 'use strict'; 6439 6440 //! moment.js locale configuration 6441 6442 var gl = moment.defineLocale('gl', { 6443 months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split( 6444 '_' 6445 ), 6446 monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split( 6447 '_' 6448 ), 6449 monthsParseExact: true, 6450 weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'), 6451 weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'), 6452 weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'), 6453 weekdaysParseExact: true, 6454 longDateFormat: { 6455 LT: 'H:mm', 6456 LTS: 'H:mm:ss', 6457 L: 'DD/MM/YYYY', 6458 LL: 'D [de] MMMM [de] YYYY', 6459 LLL: 'D [de] MMMM [de] YYYY H:mm', 6460 LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm', 6461 }, 6462 calendar: { 6463 sameDay: function () { 6464 return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT'; 6465 }, 6466 nextDay: function () { 6467 return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT'; 6468 }, 6469 nextWeek: function () { 6470 return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'; 6471 }, 6472 lastDay: function () { 6473 return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT'; 6474 }, 6475 lastWeek: function () { 6476 return ( 6477 '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT' 6478 ); 6479 }, 6480 sameElse: 'L', 6481 }, 6482 relativeTime: { 6483 future: function (str) { 6484 if (str.indexOf('un') === 0) { 6485 return 'n' + str; 6486 } 6487 return 'en ' + str; 6488 }, 6489 past: 'hai %s', 6490 s: 'uns segundos', 6491 ss: '%d segundos', 6492 m: 'un minuto', 6493 mm: '%d minutos', 6494 h: 'unha hora', 6495 hh: '%d horas', 6496 d: 'un dÃa', 6497 dd: '%d dÃas', 6498 M: 'un mes', 6499 MM: '%d meses', 6500 y: 'un ano', 6501 yy: '%d anos', 6502 }, 6503 dayOfMonthOrdinalParse: /\d{1,2}º/, 6504 ordinal: '%dº', 6505 week: { 6506 dow: 1, // Monday is the first day of the week. 6507 doy: 4, // The week that contains Jan 4th is the first week of the year. 6508 }, 6509 }); 6510 6511 return gl; 6512 6513}))); 6514 6515 6516/***/ }), 6517
vendor: 6,869 bytes, lines 6518-6661
6518/***/ "../../node_modules/moment/locale/gom-deva.js": 6519/*!***************************************************************************************************************************************!*\ 6520 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/gom-deva.js ***! 6521 \***************************************************************************************************************************************/ 6522/*! no static exports found */ 6523/***/ (function(module, exports, __webpack_require__) { 6524 6525//! moment.js locale configuration 6526//! locale : Konkani Devanagari script [gom-deva] 6527//! author : The Discoverer : https://github.com/WikiDiscoverer 6528 6529;(function (global, factory) { 6530 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 6531 undefined 6532}(this, (function (moment) { 'use strict'; 6533 6534 //! moment.js locale configuration 6535 6536 function processRelativeTime(number, withoutSuffix, key, isFuture) { 6537 var format = { 6538 s: ['थà¥à¤¡à¤¯à¤¾ सॠà¤à¤à¤¡à¤¾à¤à¤¨à¥', 'थà¥à¤¡à¥ सॠà¤à¤à¤¡'], 6539 ss: [number + ' सॠà¤à¤à¤¡à¤¾à¤à¤¨à¥', number + ' सॠà¤à¤à¤¡'], 6540 m: ['à¤à¤à¤¾ मिणà¤à¤¾à¤¨', 'à¤à¤ मिनà¥à¤'], 6541 mm: [number + ' मिणà¤à¤¾à¤à¤¨à¥', number + ' मिणà¤à¤¾à¤'], 6542 h: ['à¤à¤à¤¾ वरान', 'à¤à¤ वर'], 6543 hh: [number + ' वराà¤à¤¨à¥', number + ' वराà¤'], 6544 d: ['à¤à¤à¤¾ दिसान', 'à¤à¤ दà¥à¤¸'], 6545 dd: [number + ' दिसाà¤à¤¨à¥', number + ' दà¥à¤¸'], 6546 M: ['à¤à¤à¤¾ मà¥à¤¹à¤¯à¤¨à¥à¤¯à¤¾à¤¨', 'à¤à¤ मà¥à¤¹à¤¯à¤¨à¥'], 6547 MM: [number + ' मà¥à¤¹à¤¯à¤¨à¥à¤¯à¤¾à¤¨à¥', number + ' मà¥à¤¹à¤¯à¤¨à¥'], 6548 y: ['à¤à¤à¤¾ वरà¥à¤¸à¤¾à¤¨', 'à¤à¤ वरà¥à¤¸'], 6549 yy: [number + ' वरà¥à¤¸à¤¾à¤à¤¨à¥', number + ' वरà¥à¤¸à¤¾à¤'], 6550 }; 6551 return isFuture ? format[key][0] : format[key][1]; 6552 } 6553 6554 var gomDeva = moment.defineLocale('gom-deva', { 6555 months: { 6556 standalone: 'à¤à¤¾à¤¨à¥à¤µà¤¾à¤°à¥_फà¥à¤¬à¥à¤°à¥à¤µà¤¾à¤°à¥_मारà¥à¤_à¤à¤ªà¥à¤°à¥à¤²_मà¥_à¤à¥à¤¨_à¤à¥à¤²à¤¯_à¤à¤à¤¸à¥à¤_सपà¥à¤à¥à¤à¤¬à¤°_à¤à¤à¥à¤à¥à¤¬à¤°_नà¥à¤µà¥à¤¹à¥à¤à¤¬à¤°_डिसà¥à¤à¤¬à¤°'.split( 6557 '_' 6558 ), 6559 format: 'à¤à¤¾à¤¨à¥à¤µà¤¾à¤°à¥à¤à¥à¤¯à¤¾_फà¥à¤¬à¥à¤°à¥à¤µà¤¾à¤°à¥à¤à¥à¤¯à¤¾_मारà¥à¤à¤¾à¤à¥à¤¯à¤¾_à¤à¤ªà¥à¤°à¥à¤²à¤¾à¤à¥à¤¯à¤¾_मà¥à¤¯à¤¾à¤à¥à¤¯à¤¾_à¤à¥à¤¨à¤¾à¤à¥à¤¯à¤¾_à¤à¥à¤²à¤¯à¤¾à¤à¥à¤¯à¤¾_à¤à¤à¤¸à¥à¤à¤¾à¤à¥à¤¯à¤¾_सपà¥à¤à¥à¤à¤¬à¤°à¤¾à¤à¥à¤¯à¤¾_à¤à¤à¥à¤à¥à¤¬à¤°à¤¾à¤à¥à¤¯à¤¾_नà¥à¤µà¥à¤¹à¥à¤à¤¬à¤°à¤¾à¤à¥à¤¯à¤¾_डिसà¥à¤à¤¬à¤°à¤¾à¤à¥à¤¯à¤¾'.split( 6560 '_' 6561 ), 6562 isFormat: /MMMM(\s)+D[oD]?/, 6563 }, 6564 monthsShort: 'à¤à¤¾à¤¨à¥._फà¥à¤¬à¥à¤°à¥._मारà¥à¤_à¤à¤ªà¥à¤°à¥._मà¥_à¤à¥à¤¨_à¤à¥à¤²._à¤à¤._सपà¥à¤à¥à¤._à¤à¤à¥à¤à¥._नà¥à¤µà¥à¤¹à¥à¤._डिसà¥à¤.'.split( 6565 '_' 6566 ), 6567 monthsParseExact: true, 6568 weekdays: 'à¤à¤¯à¤¤à¤¾à¤°_सà¥à¤®à¤¾à¤°_मà¤à¤à¤³à¤¾à¤°_बà¥à¤§à¤µà¤¾à¤°_बिरà¥à¤¸à¥à¤¤à¤¾à¤°_सà¥à¤à¥à¤°à¤¾à¤°_शà¥à¤¨à¤µà¤¾à¤°'.split('_'), 6569 weekdaysShort: 'à¤à¤¯à¤¤._सà¥à¤®._मà¤à¤à¤³._बà¥à¤§._बà¥à¤°à¥à¤¸à¥à¤¤._सà¥à¤à¥à¤°._शà¥à¤¨.'.split('_'), 6570 weekdaysMin: 'à¤_सà¥_मà¤_बà¥_बà¥à¤°à¥_सà¥_शà¥'.split('_'), 6571 weekdaysParseExact: true, 6572 longDateFormat: { 6573 LT: 'A h:mm [वाà¤à¤¤à¤¾à¤]', 6574 LTS: 'A h:mm:ss [वाà¤à¤¤à¤¾à¤]', 6575 L: 'DD-MM-YYYY', 6576 LL: 'D MMMM YYYY', 6577 LLL: 'D MMMM YYYY A h:mm [वाà¤à¤¤à¤¾à¤]', 6578 LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाà¤à¤¤à¤¾à¤]', 6579 llll: 'ddd, D MMM YYYY, A h:mm [वाà¤à¤¤à¤¾à¤]', 6580 }, 6581 calendar: { 6582 sameDay: '[à¤à¤¯à¤] LT', 6583 nextDay: '[फालà¥à¤¯à¤¾à¤] LT', 6584 nextWeek: '[फà¥à¤¡à¤²à¥] dddd[,] LT', 6585 lastDay: '[à¤à¤¾à¤²] LT', 6586 lastWeek: '[फाà¤à¤²à¥] dddd[,] LT', 6587 sameElse: 'L', 6588 }, 6589 relativeTime: { 6590 future: '%s', 6591 past: '%s à¤à¤¦à¥à¤', 6592 s: processRelativeTime, 6593 ss: processRelativeTime, 6594 m: processRelativeTime, 6595 mm: processRelativeTime, 6596 h: processRelativeTime, 6597 hh: processRelativeTime, 6598 d: processRelativeTime, 6599 dd: processRelativeTime, 6600 M: processRelativeTime, 6601 MM: processRelativeTime, 6602 y: processRelativeTime, 6603 yy: processRelativeTime, 6604 }, 6605 dayOfMonthOrdinalParse: /\d{1,2}(वà¥à¤°)/, 6606 ordinal: function (number, period) { 6607 switch (period) { 6608 // the ordinal 'वà¥à¤°' only applies to day of the month 6609 case 'D': 6610 return number + 'वà¥à¤°'; 6611 default: 6612 case 'M': 6613 case 'Q': 6614 case 'DDD': 6615 case 'd': 6616 case 'w': 6617 case 'W': 6618 return number; 6619 } 6620 }, 6621 week: { 6622 dow: 1, // Monday is the first day of the week. 6623 doy: 4, // The week that contains Jan 4th is the first week of the year. 6624 }, 6625 meridiemParse: /रातà¥|सà¤à¤¾à¤³à¥à¤|दनपाराà¤|साà¤à¤à¥/, 6626 meridiemHour: function (hour, meridiem) { 6627 if (hour === 12) { 6628 hour = 0; 6629 } 6630 if (meridiem === 'रातà¥') { 6631 return hour < 4 ? hour : hour + 12; 6632 } else if (meridiem === 'सà¤à¤¾à¤³à¥à¤') { 6633 return hour; 6634 } else if (meridiem === 'दनपाराà¤') { 6635 return hour > 12 ? hour : hour + 12; 6636 } else if (meridiem === 'साà¤à¤à¥') { 6637 return hour + 12; 6638 } 6639 }, 6640 meridiem: function (hour, minute, isLower) { 6641 if (hour < 4) { 6642 return 'रातà¥'; 6643 } else if (hour < 12) { 6644 return 'सà¤à¤¾à¤³à¥à¤'; 6645 } else if (hour < 16) { 6646 return 'दनपाराà¤'; 6647 } else if (hour < 20) { 6648 return 'साà¤à¤à¥'; 6649 } else { 6650 return 'रातà¥'; 6651 } 6652 }, 6653 }); 6654 6655 return gomDeva; 6656 6657}))); 6658 6659 6660/***/ }), 6661
vendor: 5,515 bytes, lines 6662-6805
6662/***/ "../../node_modules/moment/locale/gom-latn.js": 6663/*!***************************************************************************************************************************************!*\ 6664 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/gom-latn.js ***! 6665 \***************************************************************************************************************************************/ 6666/*! no static exports found */ 6667/***/ (function(module, exports, __webpack_require__) { 6668 6669//! moment.js locale configuration 6670//! locale : Konkani Latin script [gom-latn] 6671//! author : The Discoverer : https://github.com/WikiDiscoverer 6672 6673;(function (global, factory) { 6674 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 6675 undefined 6676}(this, (function (moment) { 'use strict'; 6677 6678 //! moment.js locale configuration 6679 6680 function processRelativeTime(number, withoutSuffix, key, isFuture) { 6681 var format = { 6682 s: ['thoddea sekondamni', 'thodde sekond'], 6683 ss: [number + ' sekondamni', number + ' sekond'], 6684 m: ['eka mintan', 'ek minut'], 6685 mm: [number + ' mintamni', number + ' mintam'], 6686 h: ['eka voran', 'ek vor'], 6687 hh: [number + ' voramni', number + ' voram'], 6688 d: ['eka disan', 'ek dis'], 6689 dd: [number + ' disamni', number + ' dis'], 6690 M: ['eka mhoinean', 'ek mhoino'], 6691 MM: [number + ' mhoineamni', number + ' mhoine'], 6692 y: ['eka vorsan', 'ek voros'], 6693 yy: [number + ' vorsamni', number + ' vorsam'], 6694 }; 6695 return isFuture ? format[key][0] : format[key][1]; 6696 } 6697 6698 var gomLatn = moment.defineLocale('gom-latn', { 6699 months: { 6700 standalone: 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split( 6701 '_' 6702 ), 6703 format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split( 6704 '_' 6705 ), 6706 isFormat: /MMMM(\s)+D[oD]?/, 6707 }, 6708 monthsShort: 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split( 6709 '_' 6710 ), 6711 monthsParseExact: true, 6712 weekdays: "Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var".split('_'), 6713 weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'), 6714 weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'), 6715 weekdaysParseExact: true, 6716 longDateFormat: { 6717 LT: 'A h:mm [vazta]', 6718 LTS: 'A h:mm:ss [vazta]', 6719 L: 'DD-MM-YYYY', 6720 LL: 'D MMMM YYYY', 6721 LLL: 'D MMMM YYYY A h:mm [vazta]', 6722 LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]', 6723 llll: 'ddd, D MMM YYYY, A h:mm [vazta]', 6724 }, 6725 calendar: { 6726 sameDay: '[Aiz] LT', 6727 nextDay: '[Faleam] LT', 6728 nextWeek: '[Fuddlo] dddd[,] LT', 6729 lastDay: '[Kal] LT', 6730 lastWeek: '[Fattlo] dddd[,] LT', 6731 sameElse: 'L', 6732 }, 6733 relativeTime: { 6734 future: '%s', 6735 past: '%s adim', 6736 s: processRelativeTime, 6737 ss: processRelativeTime, 6738 m: processRelativeTime, 6739 mm: processRelativeTime, 6740 h: processRelativeTime, 6741 hh: processRelativeTime, 6742 d: processRelativeTime, 6743 dd: processRelativeTime, 6744 M: processRelativeTime, 6745 MM: processRelativeTime, 6746 y: processRelativeTime, 6747 yy: processRelativeTime, 6748 }, 6749 dayOfMonthOrdinalParse: /\d{1,2}(er)/, 6750 ordinal: function (number, period) { 6751 switch (period) { 6752 // the ordinal 'er' only applies to day of the month 6753 case 'D': 6754 return number + 'er'; 6755 default: 6756 case 'M': 6757 case 'Q': 6758 case 'DDD': 6759 case 'd': 6760 case 'w': 6761 case 'W': 6762 return number; 6763 } 6764 }, 6765 week: { 6766 dow: 1, // Monday is the first day of the week. 6767 doy: 4, // The week that contains Jan 4th is the first week of the year. 6768 }, 6769 meridiemParse: /rati|sokallim|donparam|sanje/, 6770 meridiemHour: function (hour, meridiem) { 6771 if (hour === 12) { 6772 hour = 0; 6773 } 6774 if (meridiem === 'rati') { 6775 return hour < 4 ? hour : hour + 12; 6776 } else if (meridiem === 'sokallim') { 6777 return hour; 6778 } else if (meridiem === 'donparam') { 6779 return hour > 12 ? hour : hour + 12; 6780 } else if (meridiem === 'sanje') { 6781 return hour + 12; 6782 } 6783 }, 6784 meridiem: function (hour, minute, isLower) { 6785 if (hour < 4) { 6786 return 'rati'; 6787 } else if (hour < 12) { 6788 return 'sokallim'; 6789 } else if (hour < 16) { 6790 return 'donparam'; 6791 } else if (hour < 20) { 6792 return 'sanje'; 6793 } else { 6794 return 'rati'; 6795 } 6796 }, 6797 }); 6798 6799 return gomLatn; 6800 6801}))); 6802 6803 6804/***/ }), 6805
vendor: 5,496 bytes, lines 6806-6946
6806/***/ "../../node_modules/moment/locale/gu.js": 6807/*!*********************************************************************************************************************************!*\ 6808 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/gu.js ***! 6809 \*********************************************************************************************************************************/ 6810/*! no static exports found */ 6811/***/ (function(module, exports, __webpack_require__) { 6812 6813//! moment.js locale configuration 6814//! locale : Gujarati [gu] 6815//! author : Kaushik Thanki : https://github.com/Kaushik1987 6816 6817;(function (global, factory) { 6818 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 6819 undefined 6820}(this, (function (moment) { 'use strict'; 6821 6822 //! moment.js locale configuration 6823 6824 var symbolMap = { 6825 '1': 'à«§', 6826 '2': '૨', 6827 '3': 'à«©', 6828 '4': '૪', 6829 '5': 'à««', 6830 '6': '૬', 6831 '7': 'à«', 6832 '8': 'à«®', 6833 '9': '૯', 6834 '0': '૦', 6835 }, 6836 numberMap = { 6837 'à«§': '1', 6838 '૨': '2', 6839 'à«©': '3', 6840 '૪': '4', 6841 'à««': '5', 6842 '૬': '6', 6843 'à«': '7', 6844 'à«®': '8', 6845 '૯': '9', 6846 '૦': '0', 6847 }; 6848 6849 var gu = moment.defineLocale('gu', { 6850 months: 'àªàª¾àª¨à«àª¯à«àªàª°à«_ફà«àª¬à«àª°à«àªàª°à«_મારà«àª_àªàªªà«àª°àª¿àª²_મà«_àªà«àª¨_àªà«àª²àª¾àª_àªàªàª¸à«àª_સપà«àªà«àª®à«àª¬àª°_àªàªà«àªà«àª¬àª°_નવà«àª®à«àª¬àª°_ડિસà«àª®à«àª¬àª°'.split( 6851 '_' 6852 ), 6853 monthsShort: 'àªàª¾àª¨à«àª¯à«._ફà«àª¬à«àª°à«._મારà«àª_àªàªªà«àª°àª¿._મà«_àªà«àª¨_àªà«àª²àª¾._àªàª._સપà«àªà«._àªàªà«àªà«._નવà«._ડિસà«.'.split( 6854 '_' 6855 ), 6856 monthsParseExact: true, 6857 weekdays: 'રવિવાર_સà«àª®àªµàª¾àª°_મàªàªàª³àªµàª¾àª°_બà«àª§à«àªµàª¾àª°_àªà«àª°à«àªµàª¾àª°_શà«àªà«àª°àªµàª¾àª°_શનિવાર'.split( 6858 '_' 6859 ), 6860 weekdaysShort: 'રવિ_સà«àª®_મàªàªàª³_બà«àª§à«_àªà«àª°à«_શà«àªà«àª°_શનિ'.split('_'), 6861 weekdaysMin: 'ર_સà«_મàª_બà«_àªà«_શà«_શ'.split('_'), 6862 longDateFormat: { 6863 LT: 'A h:mm વાàªà«àª¯à«', 6864 LTS: 'A h:mm:ss વાàªà«àª¯à«', 6865 L: 'DD/MM/YYYY', 6866 LL: 'D MMMM YYYY', 6867 LLL: 'D MMMM YYYY, A h:mm વાàªà«àª¯à«', 6868 LLLL: 'dddd, D MMMM YYYY, A h:mm વાàªà«àª¯à«', 6869 }, 6870 calendar: { 6871 sameDay: '[àªàª] LT', 6872 nextDay: '[àªàª¾àª²à«] LT', 6873 nextWeek: 'dddd, LT', 6874 lastDay: '[àªàªàªàª¾àª²à«] LT', 6875 lastWeek: '[પાàªàª²àª¾] dddd, LT', 6876 sameElse: 'L', 6877 }, 6878 relativeTime: { 6879 future: '%s મા', 6880 past: '%s પહà«àª²àª¾', 6881 s: 'ઠમà«àª પળà«', 6882 ss: '%d સà«àªàªàª¡', 6883 m: 'àªàª મિનિàª', 6884 mm: '%d મિનિàª', 6885 h: 'àªàª àªàª²àª¾àª', 6886 hh: '%d àªàª²àª¾àª', 6887 d: 'àªàª દિવસ', 6888 dd: '%d દિવસ', 6889 M: 'àªàª મહિનà«', 6890 MM: '%d મહિનà«', 6891 y: 'àªàª વરà«àª·', 6892 yy: '%d વરà«àª·', 6893 }, 6894 preparse: function (string) { 6895 return string.replace(/[૧૨૩૪૫૬à«à«®à«¯à«¦]/g, function (match) { 6896 return numberMap[match]; 6897 }); 6898 }, 6899 postformat: function (string) { 6900 return string.replace(/\d/g, function (match) { 6901 return symbolMap[match]; 6902 }); 6903 }, 6904 // Gujarati notation for meridiems are quite fuzzy in practice. While there exists 6905 // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati. 6906 meridiemParse: /રાત|બપà«àª°|સવાર|સાàªàª/, 6907 meridiemHour: function (hour, meridiem) { 6908 if (hour === 12) { 6909 hour = 0; 6910 } 6911 if (meridiem === 'રાત') { 6912 return hour < 4 ? hour : hour + 12; 6913 } else if (meridiem === 'સવાર') { 6914 return hour; 6915 } else if (meridiem === 'બપà«àª°') { 6916 return hour >= 10 ? hour : hour + 12; 6917 } else if (meridiem === 'સાàªàª') { 6918 return hour + 12; 6919 } 6920 }, 6921 meridiem: function (hour, minute, isLower) { 6922 if (hour < 4) { 6923 return 'રાત'; 6924 } else if (hour < 10) { 6925 return 'સવાર'; 6926 } else if (hour < 17) { 6927 return 'બપà«àª°'; 6928 } else if (hour < 20) { 6929 return 'સાàªàª'; 6930 } else { 6931 return 'રાત'; 6932 } 6933 }, 6934 week: { 6935 dow: 0, // Sunday is the first day of the week. 6936 doy: 6, // The week that contains Jan 6th is the first week of the year. 6937 }, 6938 }); 6939 6940 return gu; 6941 6942}))); 6943 6944 6945/***/ }), 6946
vendor: 4,430 bytes, lines 6947-7060
6947/***/ "../../node_modules/moment/locale/he.js": 6948/*!*********************************************************************************************************************************!*\ 6949 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/he.js ***! 6950 \*********************************************************************************************************************************/ 6951/*! no static exports found */ 6952/***/ (function(module, exports, __webpack_require__) { 6953 6954//! moment.js locale configuration 6955//! locale : Hebrew [he] 6956//! author : Tomer Cohen : https://github.com/tomer 6957//! author : Moshe Simantov : https://github.com/DevelopmentIL 6958//! author : Tal Ater : https://github.com/TalAter 6959 6960;(function (global, factory) { 6961 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 6962 undefined 6963}(this, (function (moment) { 'use strict'; 6964 6965 //! moment.js locale configuration 6966 6967 var he = moment.defineLocale('he', { 6968 months: '×× ××ר_פ×ר××ר_×רץ_×פר××_×××_××× ×_××××_××××ס×_ספ×××ר_×××§×××ר_× ××××ר_×צ××ר'.split( 6969 '_' 6970 ), 6971 monthsShort: '×× ×׳_פ×ר׳_×רץ_×פר׳_×××_××× ×_××××_×××׳_ספ×׳_××ק׳_× ××׳_×צ×׳'.split( 6972 '_' 6973 ), 6974 weekdays: 'ר×ש××_×©× ×_ש××ש×_ר×××¢×_×××ש×_ש×ש×_ש×ת'.split('_'), 6975 weekdaysShort: '×׳_×׳_×׳_×׳_×׳_×׳_ש׳'.split('_'), 6976 weekdaysMin: '×_×_×_×_×_×_ש'.split('_'), 6977 longDateFormat: { 6978 LT: 'HH:mm', 6979 LTS: 'HH:mm:ss', 6980 L: 'DD/MM/YYYY', 6981 LL: 'D [×]MMMM YYYY', 6982 LLL: 'D [×]MMMM YYYY HH:mm', 6983 LLLL: 'dddd, D [×]MMMM YYYY HH:mm', 6984 l: 'D/M/YYYY', 6985 ll: 'D MMM YYYY', 6986 lll: 'D MMM YYYY HH:mm', 6987 llll: 'ddd, D MMM YYYY HH:mm', 6988 }, 6989 calendar: { 6990 sameDay: '[×××× ×Ö¾]LT', 6991 nextDay: '[××ר ×Ö¾]LT', 6992 nextWeek: 'dddd [×שע×] LT', 6993 lastDay: '[×ת××× ×Ö¾]LT', 6994 lastWeek: '[××××] dddd [×××ר×× ×שע×] LT', 6995 sameElse: 'L', 6996 }, 6997 relativeTime: { 6998 future: '××¢×× %s', 6999 past: '××¤× × %s', 7000 s: '×ספר ×©× ××ת', 7001 ss: '%d ×©× ××ת', 7002 m: '××§×', 7003 mm: '%d ××§×ת', 7004 h: 'שע×', 7005 hh: function (number) { 7006 if (number === 2) { 7007 return 'שעת×××'; 7008 } 7009 return number + ' שע×ת'; 7010 }, 7011 d: '×××', 7012 dd: function (number) { 7013 if (number === 2) { 7014 return '××××××'; 7015 } 7016 return number + ' ××××'; 7017 }, 7018 M: '×××ש', 7019 MM: function (number) { 7020 if (number === 2) { 7021 return '×××ש×××'; 7022 } 7023 return number + ' ×××ש××'; 7024 }, 7025 y: '×©× ×', 7026 yy: function (number) { 7027 if (number === 2) { 7028 return '×©× ×ª×××'; 7029 } else if (number % 10 === 0 && number !== 10) { 7030 return number + ' ×©× ×'; 7031 } 7032 return number + ' ×©× ××'; 7033 }, 7034 }, 7035 meridiemParse: /×××"צ|××¤× ×"צ|×××¨× ×צ×ר×××|××¤× × ×צ×ר×××|××¤× ×ת ××קר|×××קר|×ער×/i, 7036 isPM: function (input) { 7037 return /^(×××"צ|×××¨× ×צ×ר×××|×ער×)$/.test(input); 7038 }, 7039 meridiem: function (hour, minute, isLower) { 7040 if (hour < 5) { 7041 return '××¤× ×ת ××קר'; 7042 } else if (hour < 10) { 7043 return '×××קר'; 7044 } else if (hour < 12) { 7045 return isLower ? '××¤× ×"צ' : '××¤× × ×צ×ר×××'; 7046 } else if (hour < 18) { 7047 return isLower ? '×××"צ' : '×××¨× ×צ×ר×××'; 7048 } else { 7049 return '×ער×'; 7050 } 7051 }, 7052 }); 7053 7054 return he; 7055 7056}))); 7057 7058 7059/***/ }), 7060
vendor: 5,331 bytes, lines 7061-7199
7061/***/ "../../node_modules/moment/locale/hi.js": 7062/*!*********************************************************************************************************************************!*\ 7063 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/hi.js ***! 7064 \*********************************************************************************************************************************/ 7065/*! no static exports found */ 7066/***/ (function(module, exports, __webpack_require__) { 7067 7068//! moment.js locale configuration 7069//! locale : Hindi [hi] 7070//! author : Mayank Singhal : https://github.com/mayanksinghal 7071 7072;(function (global, factory) { 7073 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 7074 undefined 7075}(this, (function (moment) { 'use strict'; 7076 7077 //! moment.js locale configuration 7078 7079 var symbolMap = { 7080 '1': '१', 7081 '2': '२', 7082 '3': '३', 7083 '4': '४', 7084 '5': '५', 7085 '6': '६', 7086 '7': 'à¥', 7087 '8': '८', 7088 '9': '९', 7089 '0': '०', 7090 }, 7091 numberMap = { 7092 '१': '1', 7093 '२': '2', 7094 '३': '3', 7095 '४': '4', 7096 '५': '5', 7097 '६': '6', 7098 'à¥': '7', 7099 '८': '8', 7100 '९': '9', 7101 '०': '0', 7102 }; 7103 7104 var hi = moment.defineLocale('hi', { 7105 months: 'à¤à¤¨à¤µà¤°à¥_फ़रवरà¥_मारà¥à¤_ठपà¥à¤°à¥à¤²_मà¤_à¤à¥à¤¨_à¤à¥à¤²à¤¾à¤_ठà¤à¤¸à¥à¤¤_सितमà¥à¤¬à¤°_ठà¤à¥à¤à¥à¤¬à¤°_नवमà¥à¤¬à¤°_दिसमà¥à¤¬à¤°'.split( 7106 '_' 7107 ), 7108 monthsShort: 'à¤à¤¨._फ़र._मारà¥à¤_ठपà¥à¤°à¥._मà¤_à¤à¥à¤¨_à¤à¥à¤²._ठà¤._सित._ठà¤à¥à¤à¥._नव._दिस.'.split( 7109 '_' 7110 ), 7111 monthsParseExact: true, 7112 weekdays: 'रविवार_सà¥à¤®à¤µà¤¾à¤°_मà¤à¤à¤²à¤µà¤¾à¤°_बà¥à¤§à¤µà¤¾à¤°_à¤à¥à¤°à¥à¤µà¤¾à¤°_शà¥à¤à¥à¤°à¤µà¤¾à¤°_शनिवार'.split('_'), 7113 weekdaysShort: 'रवि_सà¥à¤®_मà¤à¤à¤²_बà¥à¤§_à¤à¥à¤°à¥_शà¥à¤à¥à¤°_शनि'.split('_'), 7114 weekdaysMin: 'र_सà¥_मà¤_बà¥_à¤à¥_शà¥_श'.split('_'), 7115 longDateFormat: { 7116 LT: 'A h:mm बà¤à¥', 7117 LTS: 'A h:mm:ss बà¤à¥', 7118 L: 'DD/MM/YYYY', 7119 LL: 'D MMMM YYYY', 7120 LLL: 'D MMMM YYYY, A h:mm बà¤à¥', 7121 LLLL: 'dddd, D MMMM YYYY, A h:mm बà¤à¥', 7122 }, 7123 calendar: { 7124 sameDay: '[à¤à¤] LT', 7125 nextDay: '[à¤à¤²] LT', 7126 nextWeek: 'dddd, LT', 7127 lastDay: '[à¤à¤²] LT', 7128 lastWeek: '[पिà¤à¤²à¥] dddd, LT', 7129 sameElse: 'L', 7130 }, 7131 relativeTime: { 7132 future: '%s मà¥à¤', 7133 past: '%s पहलà¥', 7134 s: 'à¤à¥à¤ हॠà¤à¥à¤·à¤£', 7135 ss: '%d सà¥à¤à¤à¤¡', 7136 m: 'à¤à¤ मिनà¤', 7137 mm: '%d मिनà¤', 7138 h: 'à¤à¤ à¤à¤à¤à¤¾', 7139 hh: '%d à¤à¤à¤à¥', 7140 d: 'à¤à¤ दिन', 7141 dd: '%d दिन', 7142 M: 'à¤à¤ महà¥à¤¨à¥', 7143 MM: '%d महà¥à¤¨à¥', 7144 y: 'à¤à¤ वरà¥à¤·', 7145 yy: '%d वरà¥à¤·', 7146 }, 7147 preparse: function (string) { 7148 return string.replace(/[१२३४५६à¥à¥®à¥¯à¥¦]/g, function (match) { 7149 return numberMap[match]; 7150 }); 7151 }, 7152 postformat: function (string) { 7153 return string.replace(/\d/g, function (match) { 7154 return symbolMap[match]; 7155 }); 7156 }, 7157 // Hindi notation for meridiems are quite fuzzy in practice. While there exists 7158 // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi. 7159 meridiemParse: /रात|सà¥à¤¬à¤¹|दà¥à¤ªà¤¹à¤°|शाम/, 7160 meridiemHour: function (hour, meridiem) { 7161 if (hour === 12) { 7162 hour = 0; 7163 } 7164 if (meridiem === 'रात') { 7165 return hour < 4 ? hour : hour + 12; 7166 } else if (meridiem === 'सà¥à¤¬à¤¹') { 7167 return hour; 7168 } else if (meridiem === 'दà¥à¤ªà¤¹à¤°') { 7169 return hour >= 10 ? hour : hour + 12; 7170 } else if (meridiem === 'शाम') { 7171 return hour + 12; 7172 } 7173 }, 7174 meridiem: function (hour, minute, isLower) { 7175 if (hour < 4) { 7176 return 'रात'; 7177 } else if (hour < 10) { 7178 return 'सà¥à¤¬à¤¹'; 7179 } else if (hour < 17) { 7180 return 'दà¥à¤ªà¤¹à¤°'; 7181 } else if (hour < 20) { 7182 return 'शाम'; 7183 } else { 7184 return 'रात'; 7185 } 7186 }, 7187 week: { 7188 dow: 0, // Sunday is the first day of the week. 7189 doy: 6, // The week that contains Jan 6th is the first week of the year. 7190 }, 7191 }); 7192 7193 return hi; 7194 7195}))); 7196 7197 7198/***/ }), 7199
vendor: 6,207 bytes, lines 7200-7373
7200/***/ "../../node_modules/moment/locale/hr.js": 7201/*!*********************************************************************************************************************************!*\ 7202 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/hr.js ***! 7203 \*********************************************************************************************************************************/ 7204/*! no static exports found */ 7205/***/ (function(module, exports, __webpack_require__) { 7206 7207//! moment.js locale configuration 7208//! locale : Croatian [hr] 7209//! author : Bojan MarkoviÄ : https://github.com/bmarkovic 7210 7211;(function (global, factory) { 7212 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 7213 undefined 7214}(this, (function (moment) { 'use strict'; 7215 7216 //! moment.js locale configuration 7217 7218 function translate(number, withoutSuffix, key) { 7219 var result = number + ' '; 7220 switch (key) { 7221 case 'ss': 7222 if (number === 1) { 7223 result += 'sekunda'; 7224 } else if (number === 2 || number === 3 || number === 4) { 7225 result += 'sekunde'; 7226 } else { 7227 result += 'sekundi'; 7228 } 7229 return result; 7230 case 'm': 7231 return withoutSuffix ? 'jedna minuta' : 'jedne minute'; 7232 case 'mm': 7233 if (number === 1) { 7234 result += 'minuta'; 7235 } else if (number === 2 || number === 3 || number === 4) { 7236 result += 'minute'; 7237 } else { 7238 result += 'minuta'; 7239 } 7240 return result; 7241 case 'h': 7242 return withoutSuffix ? 'jedan sat' : 'jednog sata'; 7243 case 'hh': 7244 if (number === 1) { 7245 result += 'sat'; 7246 } else if (number === 2 || number === 3 || number === 4) { 7247 result += 'sata'; 7248 } else { 7249 result += 'sati'; 7250 } 7251 return result; 7252 case 'dd': 7253 if (number === 1) { 7254 result += 'dan'; 7255 } else { 7256 result += 'dana'; 7257 } 7258 return result; 7259 case 'MM': 7260 if (number === 1) { 7261 result += 'mjesec'; 7262 } else if (number === 2 || number === 3 || number === 4) { 7263 result += 'mjeseca'; 7264 } else { 7265 result += 'mjeseci'; 7266 } 7267 return result; 7268 case 'yy': 7269 if (number === 1) { 7270 result += 'godina'; 7271 } else if (number === 2 || number === 3 || number === 4) { 7272 result += 'godine'; 7273 } else { 7274 result += 'godina'; 7275 } 7276 return result; 7277 } 7278 } 7279 7280 var hr = moment.defineLocale('hr', { 7281 months: { 7282 format: 'sijeÄnja_veljaÄe_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split( 7283 '_' 7284 ), 7285 standalone: 'sijeÄanj_veljaÄa_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split( 7286 '_' 7287 ), 7288 }, 7289 monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split( 7290 '_' 7291 ), 7292 monthsParseExact: true, 7293 weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_Äetvrtak_petak_subota'.split( 7294 '_' 7295 ), 7296 weekdaysShort: 'ned._pon._uto._sri._Äet._pet._sub.'.split('_'), 7297 weekdaysMin: 'ne_po_ut_sr_Äe_pe_su'.split('_'), 7298 weekdaysParseExact: true, 7299 longDateFormat: { 7300 LT: 'H:mm', 7301 LTS: 'H:mm:ss', 7302 L: 'DD.MM.YYYY', 7303 LL: 'Do MMMM YYYY', 7304 LLL: 'Do MMMM YYYY H:mm', 7305 LLLL: 'dddd, Do MMMM YYYY H:mm', 7306 }, 7307 calendar: { 7308 sameDay: '[danas u] LT', 7309 nextDay: '[sutra u] LT', 7310 nextWeek: function () { 7311 switch (this.day()) { 7312 case 0: 7313 return '[u] [nedjelju] [u] LT'; 7314 case 3: 7315 return '[u] [srijedu] [u] LT'; 7316 case 6: 7317 return '[u] [subotu] [u] LT'; 7318 case 1: 7319 case 2: 7320 case 4: 7321 case 5: 7322 return '[u] dddd [u] LT'; 7323 } 7324 }, 7325 lastDay: '[juÄer u] LT', 7326 lastWeek: function () { 7327 switch (this.day()) { 7328 case 0: 7329 return '[proÅ¡lu] [nedjelju] [u] LT'; 7330 case 3: 7331 return '[proÅ¡lu] [srijedu] [u] LT'; 7332 case 6: 7333 return '[proÅ¡le] [subote] [u] LT'; 7334 case 1: 7335 case 2: 7336 case 4: 7337 case 5: 7338 return '[proÅ¡li] dddd [u] LT'; 7339 } 7340 }, 7341 sameElse: 'L', 7342 }, 7343 relativeTime: { 7344 future: 'za %s', 7345 past: 'prije %s', 7346 s: 'par sekundi', 7347 ss: translate, 7348 m: translate, 7349 mm: translate, 7350 h: translate, 7351 hh: translate, 7352 d: 'dan', 7353 dd: translate, 7354 M: 'mjesec', 7355 MM: translate, 7356 y: 'godinu', 7357 yy: translate, 7358 }, 7359 dayOfMonthOrdinalParse: /\d{1,2}\./, 7360 ordinal: '%d.', 7361 week: { 7362 dow: 1, // Monday is the first day of the week. 7363 doy: 7, // The week that contains Jan 7th is the first week of the year. 7364 }, 7365 }); 7366 7367 return hr; 7368 7369}))); 7370 7371 7372/***/ }), 7373
vendor: 5,040 bytes, lines 7374-7509
7374/***/ "../../node_modules/moment/locale/hu.js": 7375/*!*********************************************************************************************************************************!*\ 7376 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/hu.js ***! 7377 \*********************************************************************************************************************************/ 7378/*! no static exports found */ 7379/***/ (function(module, exports, __webpack_require__) { 7380 7381//! moment.js locale configuration 7382//! locale : Hungarian [hu] 7383//! author : Adam Brunner : https://github.com/adambrunner 7384 7385;(function (global, factory) { 7386 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 7387 undefined 7388}(this, (function (moment) { 'use strict'; 7389 7390 //! moment.js locale configuration 7391 7392 var weekEndings = 'vasárnap hétfÅn kedden szerdán csütörtökön pénteken szombaton'.split( 7393 ' ' 7394 ); 7395 function translate(number, withoutSuffix, key, isFuture) { 7396 var num = number; 7397 switch (key) { 7398 case 's': 7399 return isFuture || withoutSuffix 7400 ? 'néhány másodperc' 7401 : 'néhány másodperce'; 7402 case 'ss': 7403 return num + (isFuture || withoutSuffix) 7404 ? ' másodperc' 7405 : ' másodperce'; 7406 case 'm': 7407 return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce'); 7408 case 'mm': 7409 return num + (isFuture || withoutSuffix ? ' perc' : ' perce'); 7410 case 'h': 7411 return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája'); 7412 case 'hh': 7413 return num + (isFuture || withoutSuffix ? ' óra' : ' órája'); 7414 case 'd': 7415 return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja'); 7416 case 'dd': 7417 return num + (isFuture || withoutSuffix ? ' nap' : ' napja'); 7418 case 'M': 7419 return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); 7420 case 'MM': 7421 return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja'); 7422 case 'y': 7423 return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve'); 7424 case 'yy': 7425 return num + (isFuture || withoutSuffix ? ' év' : ' éve'); 7426 } 7427 return ''; 7428 } 7429 function week(isFuture) { 7430 return ( 7431 (isFuture ? '' : '[múlt] ') + 7432 '[' + 7433 weekEndings[this.day()] + 7434 '] LT[-kor]' 7435 ); 7436 } 7437 7438 var hu = moment.defineLocale('hu', { 7439 months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split( 7440 '_' 7441 ), 7442 monthsShort: 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split( 7443 '_' 7444 ), 7445 weekdays: 'vasárnap_hétfÅ_kedd_szerda_csütörtök_péntek_szombat'.split('_'), 7446 weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'), 7447 weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'), 7448 longDateFormat: { 7449 LT: 'H:mm', 7450 LTS: 'H:mm:ss', 7451 L: 'YYYY.MM.DD.', 7452 LL: 'YYYY. MMMM D.', 7453 LLL: 'YYYY. MMMM D. H:mm', 7454 LLLL: 'YYYY. MMMM D., dddd H:mm', 7455 }, 7456 meridiemParse: /de|du/i, 7457 isPM: function (input) { 7458 return input.charAt(1).toLowerCase() === 'u'; 7459 }, 7460 meridiem: function (hours, minutes, isLower) { 7461 if (hours < 12) { 7462 return isLower === true ? 'de' : 'DE'; 7463 } else { 7464 return isLower === true ? 'du' : 'DU'; 7465 } 7466 }, 7467 calendar: { 7468 sameDay: '[ma] LT[-kor]', 7469 nextDay: '[holnap] LT[-kor]', 7470 nextWeek: function () { 7471 return week.call(this, true); 7472 }, 7473 lastDay: '[tegnap] LT[-kor]', 7474 lastWeek: function () { 7475 return week.call(this, false); 7476 }, 7477 sameElse: 'L', 7478 }, 7479 relativeTime: { 7480 future: '%s múlva', 7481 past: '%s', 7482 s: translate, 7483 ss: translate, 7484 m: translate, 7485 mm: translate, 7486 h: translate, 7487 hh: translate, 7488 d: translate, 7489 dd: translate, 7490 M: translate, 7491 MM: translate, 7492 y: translate, 7493 yy: translate, 7494 }, 7495 dayOfMonthOrdinalParse: /\d{1,2}\./, 7496 ordinal: '%d.', 7497 week: { 7498 dow: 1, // Monday is the first day of the week. 7499 doy: 4, // The week that contains Jan 4th is the first week of the year. 7500 }, 7501 }); 7502 7503 return hu; 7504 7505}))); 7506 7507 7508/***/ }), 7509
vendor: 4,435 bytes, lines 7510-7621
7510/***/ "../../node_modules/moment/locale/hy-am.js": 7511/*!************************************************************************************************************************************!*\ 7512 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/hy-am.js ***! 7513 \************************************************************************************************************************************/ 7514/*! no static exports found */ 7515/***/ (function(module, exports, __webpack_require__) { 7516 7517//! moment.js locale configuration 7518//! locale : Armenian [hy-am] 7519//! author : Armendarabyan : https://github.com/armendarabyan 7520 7521;(function (global, factory) { 7522 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 7523 undefined 7524}(this, (function (moment) { 'use strict'; 7525 7526 //! moment.js locale configuration 7527 7528 var hyAm = moment.defineLocale('hy-am', { 7529 months: { 7530 format: 'Õ°Õ¸ÖÕ¶Õ¾Õ¡ÖÕ«_ÖÕ¥Õ¿ÖÕ¾Õ¡ÖÕ«_Õ´Õ¡ÖÕ¿Õ«_Õ¡ÕºÖÕ«Õ¬Õ«_Õ´Õ¡ÕµÕ«Õ½Õ«_Õ°Õ¸ÖÕ¶Õ«Õ½Õ«_Õ°Õ¸ÖÕ¬Õ«Õ½Õ«_Ö Õ£Õ¸Õ½Õ¿Õ¸Õ½Õ«_Õ½Õ¥ÕºÕ¿Õ¥Õ´Õ¢Õ¥ÖÕ«_Õ°Õ¸Õ¯Õ¿Õ¥Õ´Õ¢Õ¥ÖÕ«_Õ¶Õ¸ÕµÕ¥Õ´Õ¢Õ¥ÖÕ«_Õ¤Õ¥Õ¯Õ¿Õ¥Õ´Õ¢Õ¥ÖÕ«'.split( 7531 '_' 7532 ), 7533 standalone: 'Õ°Õ¸ÖÕ¶Õ¾Õ¡Ö_ÖÕ¥Õ¿ÖÕ¾Õ¡Ö_Õ´Õ¡ÖÕ¿_Õ¡ÕºÖÕ«Õ¬_Õ´Õ¡ÕµÕ«Õ½_Õ°Õ¸ÖÕ¶Õ«Õ½_Õ°Õ¸ÖÕ¬Õ«Õ½_Ö Õ£Õ¸Õ½Õ¿Õ¸Õ½_Õ½Õ¥ÕºÕ¿Õ¥Õ´Õ¢Õ¥Ö_Õ°Õ¸Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö_Õ¶Õ¸ÕµÕ¥Õ´Õ¢Õ¥Ö_Õ¤Õ¥Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö'.split( 7534 '_' 7535 ), 7536 }, 7537 monthsShort: 'Õ°Õ¶Õ¾_ÖÕ¿Ö_Õ´ÖÕ¿_Õ¡ÕºÖ_Õ´ÕµÕ½_Õ°Õ¶Õ½_Õ°Õ¬Õ½_Ö Õ£Õ½_Õ½ÕºÕ¿_Õ°Õ¯Õ¿_Õ¶Õ´Õ¢_Õ¤Õ¯Õ¿'.split('_'), 7538 weekdays: 'Õ¯Õ«ÖÕ¡Õ¯Õ«_Õ¥ÖÕ¯Õ¸ÖÕ·Õ¡Õ¢Õ©Õ«_Õ¥ÖÕ¥ÖÕ·Õ¡Õ¢Õ©Õ«_Õ¹Õ¸ÖÕ¥ÖÕ·Õ¡Õ¢Õ©Õ«_Õ°Õ«Õ¶Õ£Õ·Õ¡Õ¢Õ©Õ«_Õ¸ÖÖÕ¢Õ¡Õ©_Õ·Õ¡Õ¢Õ¡Õ©'.split( 7539 '_' 7540 ), 7541 weekdaysShort: 'Õ¯ÖÕ¯_Õ¥ÖÕ¯_Õ¥ÖÖ_Õ¹ÖÖ_Õ°Õ¶Õ£_Õ¸ÖÖÕ¢_Õ·Õ¢Õ©'.split('_'), 7542 weekdaysMin: 'Õ¯ÖÕ¯_Õ¥ÖÕ¯_Õ¥ÖÖ_Õ¹ÖÖ_Õ°Õ¶Õ£_Õ¸ÖÖÕ¢_Õ·Õ¢Õ©'.split('_'), 7543 longDateFormat: { 7544 LT: 'HH:mm', 7545 LTS: 'HH:mm:ss', 7546 L: 'DD.MM.YYYY', 7547 LL: 'D MMMM YYYY Õ©.', 7548 LLL: 'D MMMM YYYY Õ©., HH:mm', 7549 LLLL: 'dddd, D MMMM YYYY Õ©., HH:mm', 7550 }, 7551 calendar: { 7552 sameDay: '[Õ¡ÕµÕ½Ö Ö] LT', 7553 nextDay: '[Õ¾Õ¡Õ²Õ¨] LT', 7554 lastDay: '[Õ¥ÖÕ¥Õ¯] LT', 7555 nextWeek: function () { 7556 return 'dddd [Ö ÖÕ¨ ÕªÕ¡Õ´Õ¨] LT'; 7557 }, 7558 lastWeek: function () { 7559 return '[Õ¡Õ¶ÖÕ¡Õ®] dddd [Ö ÖÕ¨ ÕªÕ¡Õ´Õ¨] LT'; 7560 }, 7561 sameElse: 'L', 7562 }, 7563 relativeTime: { 7564 future: '%s Õ°Õ¥Õ¿Õ¸', 7565 past: '%s Õ¡Õ¼Õ¡Õ»', 7566 s: 'Õ´Õ« ÖÕ¡Õ¶Õ« Õ¾Õ¡ÕµÖÕ¯ÕµÕ¡Õ¶', 7567 ss: '%d Õ¾Õ¡ÕµÖÕ¯ÕµÕ¡Õ¶', 7568 m: 'ÖÕ¸ÕºÕ¥', 7569 mm: '%d ÖÕ¸ÕºÕ¥', 7570 h: 'ÕªÕ¡Õ´', 7571 hh: '%d ÕªÕ¡Õ´', 7572 d: 'Ö Ö', 7573 dd: '%d Ö Ö', 7574 M: 'Õ¡Õ´Õ«Õ½', 7575 MM: '%d Õ¡Õ´Õ«Õ½', 7576 y: 'Õ¿Õ¡ÖÕ«', 7577 yy: '%d Õ¿Õ¡ÖÕ«', 7578 }, 7579 meridiemParse: /Õ£Õ«Õ·Õ¥ÖÕ¾Õ¡|Õ¡Õ¼Õ¡Õ¾Õ¸Õ¿Õ¾Õ¡|ÖÕ¥ÖÕ¥Õ¯Õ¾Õ¡|Õ¥ÖÕ¥Õ¯Õ¸ÕµÕ¡Õ¶/, 7580 isPM: function (input) { 7581 return /^(ÖÕ¥ÖÕ¥Õ¯Õ¾Õ¡|Õ¥ÖÕ¥Õ¯Õ¸ÕµÕ¡Õ¶)$/.test(input); 7582 }, 7583 meridiem: function (hour) { 7584 if (hour < 4) { 7585 return 'Õ£Õ«Õ·Õ¥ÖÕ¾Õ¡'; 7586 } else if (hour < 12) { 7587 return 'Õ¡Õ¼Õ¡Õ¾Õ¸Õ¿Õ¾Õ¡'; 7588 } else if (hour < 17) { 7589 return 'ÖÕ¥ÖÕ¥Õ¯Õ¾Õ¡'; 7590 } else { 7591 return 'Õ¥ÖÕ¥Õ¯Õ¸ÕµÕ¡Õ¶'; 7592 } 7593 }, 7594 dayOfMonthOrdinalParse: /\d{1,2}|\d{1,2}-(Õ«Õ¶|ÖÕ¤)/, 7595 ordinal: function (number, period) { 7596 switch (period) { 7597 case 'DDD': 7598 case 'w': 7599 case 'W': 7600 case 'DDDo': 7601 if (number === 1) { 7602 return number + '-Õ«Õ¶'; 7603 } 7604 return number + '-ÖÕ¤'; 7605 default: 7606 return number; 7607 } 7608 }, 7609 week: { 7610 dow: 1, // Monday is the first day of the week. 7611 doy: 7, // The week that contains Jan 7th is the first week of the year. 7612 }, 7613 }); 7614 7615 return hyAm; 7616 7617}))); 7618 7619 7620/***/ }), 7621
vendor: 3,510 bytes, lines 7622-7717
7622/***/ "../../node_modules/moment/locale/id.js": 7623/*!*********************************************************************************************************************************!*\ 7624 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/id.js ***! 7625 \*********************************************************************************************************************************/ 7626/*! no static exports found */ 7627/***/ (function(module, exports, __webpack_require__) { 7628 7629//! moment.js locale configuration 7630//! locale : Indonesian [id] 7631//! author : Mohammad Satrio Utomo : https://github.com/tyok 7632//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan 7633 7634;(function (global, factory) { 7635 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 7636 undefined 7637}(this, (function (moment) { 'use strict'; 7638 7639 //! moment.js locale configuration 7640 7641 var id = moment.defineLocale('id', { 7642 months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split( 7643 '_' 7644 ), 7645 monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'), 7646 weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'), 7647 weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'), 7648 weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'), 7649 longDateFormat: { 7650 LT: 'HH.mm', 7651 LTS: 'HH.mm.ss', 7652 L: 'DD/MM/YYYY', 7653 LL: 'D MMMM YYYY', 7654 LLL: 'D MMMM YYYY [pukul] HH.mm', 7655 LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm', 7656 }, 7657 meridiemParse: /pagi|siang|sore|malam/, 7658 meridiemHour: function (hour, meridiem) { 7659 if (hour === 12) { 7660 hour = 0; 7661 } 7662 if (meridiem === 'pagi') { 7663 return hour; 7664 } else if (meridiem === 'siang') { 7665 return hour >= 11 ? hour : hour + 12; 7666 } else if (meridiem === 'sore' || meridiem === 'malam') { 7667 return hour + 12; 7668 } 7669 }, 7670 meridiem: function (hours, minutes, isLower) { 7671 if (hours < 11) { 7672 return 'pagi'; 7673 } else if (hours < 15) { 7674 return 'siang'; 7675 } else if (hours < 19) { 7676 return 'sore'; 7677 } else { 7678 return 'malam'; 7679 } 7680 }, 7681 calendar: { 7682 sameDay: '[Hari ini pukul] LT', 7683 nextDay: '[Besok pukul] LT', 7684 nextWeek: 'dddd [pukul] LT', 7685 lastDay: '[Kemarin pukul] LT', 7686 lastWeek: 'dddd [lalu pukul] LT', 7687 sameElse: 'L', 7688 }, 7689 relativeTime: { 7690 future: 'dalam %s', 7691 past: '%s yang lalu', 7692 s: 'beberapa detik', 7693 ss: '%d detik', 7694 m: 'semenit', 7695 mm: '%d menit', 7696 h: 'sejam', 7697 hh: '%d jam', 7698 d: 'sehari', 7699 dd: '%d hari', 7700 M: 'sebulan', 7701 MM: '%d bulan', 7702 y: 'setahun', 7703 yy: '%d tahun', 7704 }, 7705 week: { 7706 dow: 0, // Sunday is the first day of the week. 7707 doy: 6, // The week that contains Jan 6th is the first week of the year. 7708 }, 7709 }); 7710 7711 return id; 7712 7713}))); 7714 7715 7716/***/ }), 7717
vendor: 5,892 bytes, lines 7718-7876
7718/***/ "../../node_modules/moment/locale/is.js": 7719/*!*********************************************************************************************************************************!*\ 7720 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/is.js ***! 7721 \*********************************************************************************************************************************/ 7722/*! no static exports found */ 7723/***/ (function(module, exports, __webpack_require__) { 7724 7725//! moment.js locale configuration 7726//! locale : Icelandic [is] 7727//! author : Hinrik Ãrn Sigurðsson : https://github.com/hinrik 7728 7729;(function (global, factory) { 7730 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 7731 undefined 7732}(this, (function (moment) { 'use strict'; 7733 7734 //! moment.js locale configuration 7735 7736 function plural(n) { 7737 if (n % 100 === 11) { 7738 return true; 7739 } else if (n % 10 === 1) { 7740 return false; 7741 } 7742 return true; 7743 } 7744 function translate(number, withoutSuffix, key, isFuture) { 7745 var result = number + ' '; 7746 switch (key) { 7747 case 's': 7748 return withoutSuffix || isFuture 7749 ? 'nokkrar sekúndur' 7750 : 'nokkrum sekúndum'; 7751 case 'ss': 7752 if (plural(number)) { 7753 return ( 7754 result + 7755 (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum') 7756 ); 7757 } 7758 return result + 'sekúnda'; 7759 case 'm': 7760 return withoutSuffix ? 'mÃnúta' : 'mÃnútu'; 7761 case 'mm': 7762 if (plural(number)) { 7763 return ( 7764 result + (withoutSuffix || isFuture ? 'mÃnútur' : 'mÃnútum') 7765 ); 7766 } else if (withoutSuffix) { 7767 return result + 'mÃnúta'; 7768 } 7769 return result + 'mÃnútu'; 7770 case 'hh': 7771 if (plural(number)) { 7772 return ( 7773 result + 7774 (withoutSuffix || isFuture 7775 ? 'klukkustundir' 7776 : 'klukkustundum') 7777 ); 7778 } 7779 return result + 'klukkustund'; 7780 case 'd': 7781 if (withoutSuffix) { 7782 return 'dagur'; 7783 } 7784 return isFuture ? 'dag' : 'degi'; 7785 case 'dd': 7786 if (plural(number)) { 7787 if (withoutSuffix) { 7788 return result + 'dagar'; 7789 } 7790 return result + (isFuture ? 'daga' : 'dögum'); 7791 } else if (withoutSuffix) { 7792 return result + 'dagur'; 7793 } 7794 return result + (isFuture ? 'dag' : 'degi'); 7795 case 'M': 7796 if (withoutSuffix) { 7797 return 'mánuður'; 7798 } 7799 return isFuture ? 'mánuð' : 'mánuði'; 7800 case 'MM': 7801 if (plural(number)) { 7802 if (withoutSuffix) { 7803 return result + 'mánuðir'; 7804 } 7805 return result + (isFuture ? 'mánuði' : 'mánuðum'); 7806 } else if (withoutSuffix) { 7807 return result + 'mánuður'; 7808 } 7809 return result + (isFuture ? 'mánuð' : 'mánuði'); 7810 case 'y': 7811 return withoutSuffix || isFuture ? 'ár' : 'ári'; 7812 case 'yy': 7813 if (plural(number)) { 7814 return result + (withoutSuffix || isFuture ? 'ár' : 'árum'); 7815 } 7816 return result + (withoutSuffix || isFuture ? 'ár' : 'ári'); 7817 } 7818 } 7819 7820 var is = moment.defineLocale('is', { 7821 months: 'janúar_febrúar_mars_aprÃl_maÃ_júnÃ_júlÃ_ágúst_september_október_nóvember_desember'.split( 7822 '_' 7823 ), 7824 monthsShort: 'jan_feb_mar_apr_maÃ_jún_júl_ágú_sep_okt_nóv_des'.split('_'), 7825 weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split( 7826 '_' 7827 ), 7828 weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'), 7829 weekdaysMin: 'Su_Má_Ãr_Mi_Fi_Fö_La'.split('_'), 7830 longDateFormat: { 7831 LT: 'H:mm', 7832 LTS: 'H:mm:ss', 7833 L: 'DD.MM.YYYY', 7834 LL: 'D. MMMM YYYY', 7835 LLL: 'D. MMMM YYYY [kl.] H:mm', 7836 LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm', 7837 }, 7838 calendar: { 7839 sameDay: '[à dag kl.] LT', 7840 nextDay: '[á morgun kl.] LT', 7841 nextWeek: 'dddd [kl.] LT', 7842 lastDay: '[à gær kl.] LT', 7843 lastWeek: '[sÃðasta] dddd [kl.] LT', 7844 sameElse: 'L', 7845 }, 7846 relativeTime: { 7847 future: 'eftir %s', 7848 past: 'fyrir %s sÃðan', 7849 s: translate, 7850 ss: translate, 7851 m: translate, 7852 mm: translate, 7853 h: 'klukkustund', 7854 hh: translate, 7855 d: translate, 7856 dd: translate, 7857 M: translate, 7858 MM: translate, 7859 y: translate, 7860 yy: translate, 7861 }, 7862 dayOfMonthOrdinalParse: /\d{1,2}\./, 7863 ordinal: '%d.', 7864 week: { 7865 dow: 1, // Monday is the first day of the week. 7866 doy: 4, // The week that contains Jan 4th is the first week of the year. 7867 }, 7868 }); 7869 7870 return is; 7871 7872}))); 7873 7874 7875/***/ }), 7876
vendor: 3,036 bytes, lines 7877-7960
7877/***/ "../../node_modules/moment/locale/it-ch.js": 7878/*!************************************************************************************************************************************!*\ 7879 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/it-ch.js ***! 7880 \************************************************************************************************************************************/ 7881/*! no static exports found */ 7882/***/ (function(module, exports, __webpack_require__) { 7883 7884//! moment.js locale configuration 7885//! locale : Italian (Switzerland) [it-ch] 7886//! author : xfh : https://github.com/xfh 7887 7888;(function (global, factory) { 7889 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 7890 undefined 7891}(this, (function (moment) { 'use strict'; 7892 7893 //! moment.js locale configuration 7894 7895 var itCh = moment.defineLocale('it-ch', { 7896 months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split( 7897 '_' 7898 ), 7899 monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'), 7900 weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split( 7901 '_' 7902 ), 7903 weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'), 7904 weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'), 7905 longDateFormat: { 7906 LT: 'HH:mm', 7907 LTS: 'HH:mm:ss', 7908 L: 'DD.MM.YYYY', 7909 LL: 'D MMMM YYYY', 7910 LLL: 'D MMMM YYYY HH:mm', 7911 LLLL: 'dddd D MMMM YYYY HH:mm', 7912 }, 7913 calendar: { 7914 sameDay: '[Oggi alle] LT', 7915 nextDay: '[Domani alle] LT', 7916 nextWeek: 'dddd [alle] LT', 7917 lastDay: '[Ieri alle] LT', 7918 lastWeek: function () { 7919 switch (this.day()) { 7920 case 0: 7921 return '[la scorsa] dddd [alle] LT'; 7922 default: 7923 return '[lo scorso] dddd [alle] LT'; 7924 } 7925 }, 7926 sameElse: 'L', 7927 }, 7928 relativeTime: { 7929 future: function (s) { 7930 return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s; 7931 }, 7932 past: '%s fa', 7933 s: 'alcuni secondi', 7934 ss: '%d secondi', 7935 m: 'un minuto', 7936 mm: '%d minuti', 7937 h: "un'ora", 7938 hh: '%d ore', 7939 d: 'un giorno', 7940 dd: '%d giorni', 7941 M: 'un mese', 7942 MM: '%d mesi', 7943 y: 'un anno', 7944 yy: '%d anni', 7945 }, 7946 dayOfMonthOrdinalParse: /\d{1,2}º/, 7947 ordinal: '%dº', 7948 week: { 7949 dow: 1, // Monday is the first day of the week. 7950 doy: 4, // The week that contains Jan 4th is the first week of the year. 7951 }, 7952 }); 7953 7954 return itCh; 7955 7956}))); 7957 7958 7959/***/ }), 7960
vendor: 4,466 bytes, lines 7961-8084
7961/***/ "../../node_modules/moment/locale/it.js": 7962/*!*********************************************************************************************************************************!*\ 7963 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/it.js ***! 7964 \*********************************************************************************************************************************/ 7965/*! no static exports found */ 7966/***/ (function(module, exports, __webpack_require__) { 7967 7968//! moment.js locale configuration 7969//! locale : Italian [it] 7970//! author : Lorenzo : https://github.com/aliem 7971//! author: Mattia Larentis: https://github.com/nostalgiaz 7972//! author: Marco : https://github.com/Manfre98 7973 7974;(function (global, factory) { 7975 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 7976 undefined 7977}(this, (function (moment) { 'use strict'; 7978 7979 //! moment.js locale configuration 7980 7981 var it = moment.defineLocale('it', { 7982 months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split( 7983 '_' 7984 ), 7985 monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'), 7986 weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split( 7987 '_' 7988 ), 7989 weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'), 7990 weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'), 7991 longDateFormat: { 7992 LT: 'HH:mm', 7993 LTS: 'HH:mm:ss', 7994 L: 'DD/MM/YYYY', 7995 LL: 'D MMMM YYYY', 7996 LLL: 'D MMMM YYYY HH:mm', 7997 LLLL: 'dddd D MMMM YYYY HH:mm', 7998 }, 7999 calendar: { 8000 sameDay: function () { 8001 return ( 8002 '[Oggi a' + 8003 (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") + 8004 ']LT' 8005 ); 8006 }, 8007 nextDay: function () { 8008 return ( 8009 '[Domani a' + 8010 (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") + 8011 ']LT' 8012 ); 8013 }, 8014 nextWeek: function () { 8015 return ( 8016 'dddd [a' + 8017 (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") + 8018 ']LT' 8019 ); 8020 }, 8021 lastDay: function () { 8022 return ( 8023 '[Ieri a' + 8024 (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") + 8025 ']LT' 8026 ); 8027 }, 8028 lastWeek: function () { 8029 switch (this.day()) { 8030 case 0: 8031 return ( 8032 '[La scorsa] dddd [a' + 8033 (this.hours() > 1 8034 ? 'lle ' 8035 : this.hours() === 0 8036 ? ' ' 8037 : "ll'") + 8038 ']LT' 8039 ); 8040 default: 8041 return ( 8042 '[Lo scorso] dddd [a' + 8043 (this.hours() > 1 8044 ? 'lle ' 8045 : this.hours() === 0 8046 ? ' ' 8047 : "ll'") + 8048 ']LT' 8049 ); 8050 } 8051 }, 8052 sameElse: 'L', 8053 }, 8054 relativeTime: { 8055 future: 'tra %s', 8056 past: '%s fa', 8057 s: 'alcuni secondi', 8058 ss: '%d secondi', 8059 m: 'un minuto', 8060 mm: '%d minuti', 8061 h: "un'ora", 8062 hh: '%d ore', 8063 d: 'un giorno', 8064 dd: '%d giorni', 8065 M: 'un mese', 8066 MM: '%d mesi', 8067 y: 'un anno', 8068 yy: '%d anni', 8069 }, 8070 dayOfMonthOrdinalParse: /\d{1,2}º/, 8071 ordinal: '%dº', 8072 week: { 8073 dow: 1, // Monday is the first day of the week. 8074 doy: 4, // The week that contains Jan 4th is the first week of the year. 8075 }, 8076 }); 8077 8078 return it; 8079 8080}))); 8081 8082 8083/***/ }), 8084
vendor: 5,454 bytes, lines 8085-8252
8085/***/ "../../node_modules/moment/locale/ja.js": 8086/*!*********************************************************************************************************************************!*\ 8087 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ja.js ***! 8088 \*********************************************************************************************************************************/ 8089/*! no static exports found */ 8090/***/ (function(module, exports, __webpack_require__) { 8091 8092//! moment.js locale configuration 8093//! locale : Japanese [ja] 8094//! author : LI Long : https://github.com/baryon 8095 8096;(function (global, factory) { 8097 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 8098 undefined 8099}(this, (function (moment) { 'use strict'; 8100 8101 //! moment.js locale configuration 8102 8103 var ja = moment.defineLocale('ja', { 8104 eras: [ 8105 { 8106 since: '2019-05-01', 8107 offset: 1, 8108 name: '令å', 8109 narrow: 'ã¿', 8110 abbr: 'R', 8111 }, 8112 { 8113 since: '1989-01-08', 8114 until: '2019-04-30', 8115 offset: 1, 8116 name: 'å¹³æ', 8117 narrow: 'ã»', 8118 abbr: 'H', 8119 }, 8120 { 8121 since: '1926-12-25', 8122 until: '1989-01-07', 8123 offset: 1, 8124 name: 'æå', 8125 narrow: 'ã¼', 8126 abbr: 'S', 8127 }, 8128 { 8129 since: '1912-07-30', 8130 until: '1926-12-24', 8131 offset: 1, 8132 name: '大æ£', 8133 narrow: 'ã½', 8134 abbr: 'T', 8135 }, 8136 { 8137 since: '1873-01-01', 8138 until: '1912-07-29', 8139 offset: 6, 8140 name: 'ææ²»', 8141 narrow: 'ã¾', 8142 abbr: 'M', 8143 }, 8144 { 8145 since: '0001-01-01', 8146 until: '1873-12-31', 8147 offset: 1, 8148 name: '西æ¦', 8149 narrow: 'AD', 8150 abbr: 'AD', 8151 }, 8152 { 8153 since: '0000-12-31', 8154 until: -Infinity, 8155 offset: 1, 8156 name: 'ç´å å', 8157 narrow: 'BC', 8158 abbr: 'BC', 8159 }, 8160 ], 8161 eraYearOrdinalRegex: /(å |\d+)å¹´/, 8162 eraYearOrdinalParse: function (input, match) { 8163 return match[1] === 'å ' ? 1 : parseInt(match[1] || input, 10); 8164 }, 8165 months: '1æ_2æ_3æ_4æ_5æ_6æ_7æ_8æ_9æ_10æ_11æ_12æ'.split('_'), 8166 monthsShort: '1æ_2æ_3æ_4æ_5æ_6æ_7æ_8æ_9æ_10æ_11æ_12æ'.split( 8167 '_' 8168 ), 8169 weekdays: 'æ¥ææ¥_æææ¥_ç«ææ¥_æ°´ææ¥_æ¨ææ¥_éææ¥_åææ¥'.split('_'), 8170 weekdaysShort: 'æ¥_æ_ç«_æ°´_æ¨_é_å'.split('_'), 8171 weekdaysMin: 'æ¥_æ_ç«_æ°´_æ¨_é_å'.split('_'), 8172 longDateFormat: { 8173 LT: 'HH:mm', 8174 LTS: 'HH:mm:ss', 8175 L: 'YYYY/MM/DD', 8176 LL: 'YYYYå¹´MæDæ¥', 8177 LLL: 'YYYYå¹´MæDæ¥ HH:mm', 8178 LLLL: 'YYYYå¹´MæDæ¥ dddd HH:mm', 8179 l: 'YYYY/MM/DD', 8180 ll: 'YYYYå¹´MæDæ¥', 8181 lll: 'YYYYå¹´MæDæ¥ HH:mm', 8182 llll: 'YYYYå¹´MæDæ¥(ddd) HH:mm', 8183 }, 8184 meridiemParse: /åå|åå¾/i, 8185 isPM: function (input) { 8186 return input === 'åå¾'; 8187 }, 8188 meridiem: function (hour, minute, isLower) { 8189 if (hour < 12) { 8190 return 'åå'; 8191 } else { 8192 return 'åå¾'; 8193 } 8194 }, 8195 calendar: { 8196 sameDay: '[仿¥] LT', 8197 nextDay: '[ææ¥] LT', 8198 nextWeek: function (now) { 8199 if (now.week() !== this.week()) { 8200 return '[æ¥é±]dddd LT'; 8201 } else { 8202 return 'dddd LT'; 8203 } 8204 }, 8205 lastDay: '[æ¨æ¥] LT', 8206 lastWeek: function (now) { 8207 if (this.week() !== now.week()) { 8208 return '[å é±]dddd LT'; 8209 } else { 8210 return 'dddd LT'; 8211 } 8212 }, 8213 sameElse: 'L', 8214 }, 8215 dayOfMonthOrdinalParse: /\d{1,2}æ¥/, 8216 ordinal: function (number, period) { 8217 switch (period) { 8218 case 'y': 8219 return number === 1 ? 'å å¹´' : number + 'å¹´'; 8220 case 'd': 8221 case 'D': 8222 case 'DDD': 8223 return number + 'æ¥'; 8224 default: 8225 return number; 8226 } 8227 }, 8228 relativeTime: { 8229 future: '%så¾', 8230 past: '%så', 8231 s: 'æ°ç§', 8232 ss: '%dç§', 8233 m: '1å', 8234 mm: '%då', 8235 h: '1æé', 8236 hh: '%dæé', 8237 d: '1æ¥', 8238 dd: '%dæ¥', 8239 M: '1ã¶æ', 8240 MM: '%dã¶æ', 8241 y: '1å¹´', 8242 yy: '%då¹´', 8243 }, 8244 }); 8245 8246 return ja; 8247 8248}))); 8249 8250 8251/***/ }), 8252
vendor: 3,519 bytes, lines 8253-8348
8253/***/ "../../node_modules/moment/locale/jv.js": 8254/*!*********************************************************************************************************************************!*\ 8255 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/jv.js ***! 8256 \*********************************************************************************************************************************/ 8257/*! no static exports found */ 8258/***/ (function(module, exports, __webpack_require__) { 8259 8260//! moment.js locale configuration 8261//! locale : Javanese [jv] 8262//! author : Rony Lantip : https://github.com/lantip 8263//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa 8264 8265;(function (global, factory) { 8266 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 8267 undefined 8268}(this, (function (moment) { 'use strict'; 8269 8270 //! moment.js locale configuration 8271 8272 var jv = moment.defineLocale('jv', { 8273 months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split( 8274 '_' 8275 ), 8276 monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'), 8277 weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'), 8278 weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'), 8279 weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'), 8280 longDateFormat: { 8281 LT: 'HH.mm', 8282 LTS: 'HH.mm.ss', 8283 L: 'DD/MM/YYYY', 8284 LL: 'D MMMM YYYY', 8285 LLL: 'D MMMM YYYY [pukul] HH.mm', 8286 LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm', 8287 }, 8288 meridiemParse: /enjing|siyang|sonten|ndalu/, 8289 meridiemHour: function (hour, meridiem) { 8290 if (hour === 12) { 8291 hour = 0; 8292 } 8293 if (meridiem === 'enjing') { 8294 return hour; 8295 } else if (meridiem === 'siyang') { 8296 return hour >= 11 ? hour : hour + 12; 8297 } else if (meridiem === 'sonten' || meridiem === 'ndalu') { 8298 return hour + 12; 8299 } 8300 }, 8301 meridiem: function (hours, minutes, isLower) { 8302 if (hours < 11) { 8303 return 'enjing'; 8304 } else if (hours < 15) { 8305 return 'siyang'; 8306 } else if (hours < 19) { 8307 return 'sonten'; 8308 } else { 8309 return 'ndalu'; 8310 } 8311 }, 8312 calendar: { 8313 sameDay: '[Dinten puniko pukul] LT', 8314 nextDay: '[Mbenjang pukul] LT', 8315 nextWeek: 'dddd [pukul] LT', 8316 lastDay: '[Kala wingi pukul] LT', 8317 lastWeek: 'dddd [kepengker pukul] LT', 8318 sameElse: 'L', 8319 }, 8320 relativeTime: { 8321 future: 'wonten ing %s', 8322 past: '%s ingkang kepengker', 8323 s: 'sawetawis detik', 8324 ss: '%d detik', 8325 m: 'setunggal menit', 8326 mm: '%d menit', 8327 h: 'setunggal jam', 8328 hh: '%d jam', 8329 d: 'sedinten', 8330 dd: '%d dinten', 8331 M: 'sewulan', 8332 MM: '%d wulan', 8333 y: 'setaun', 8334 yy: '%d taun', 8335 }, 8336 week: { 8337 dow: 1, // Monday is the first day of the week. 8338 doy: 7, // The week that contains Jan 7th is the first week of the year. 8339 }, 8340 }); 8341 8342 return jv; 8343 8344}))); 8345 8346 8347/***/ }), 8348
vendor: 4,711 bytes, lines 8349-8460
8349/***/ "../../node_modules/moment/locale/ka.js": 8350/*!*********************************************************************************************************************************!*\ 8351 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ka.js ***! 8352 \*********************************************************************************************************************************/ 8353/*! no static exports found */ 8354/***/ (function(module, exports, __webpack_require__) { 8355 8356//! moment.js locale configuration 8357//! locale : Georgian [ka] 8358//! author : Irakli Janiashvili : https://github.com/IrakliJani 8359 8360;(function (global, factory) { 8361 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 8362 undefined 8363}(this, (function (moment) { 'use strict'; 8364 8365 //! moment.js locale configuration 8366 8367 var ka = moment.defineLocale('ka', { 8368 months: 'áááááá á_ááááá áááá_ááá á¢á_ááá ááá_áááá¡á_ááááá¡á_ááááá¡á_ááááá¡á¢á_á¡áá¥á¢ááááá á_áá¥á¢ááááá á_ááááááá á_áááááááá á'.split( 8369 '_' 8370 ), 8371 monthsShort: 'ááá_ááá_ááá _ááá _ááá_ááá_ááá_ááá_á¡áá¥_áá¥á¢_ááá_ááá'.split('_'), 8372 weekdays: { 8373 standalone: 'áááá á_áá á¨ááááá_á¡ááá¨ááááá_ááá®á¨ááááá_á®á£áá¨ááááá_ááá áá¡áááá_á¨ááááá'.split( 8374 '_' 8375 ), 8376 format: 'áááá áá¡_áá á¨ááááá¡_á¡ááá¨ááááá¡_ááá®á¨ááááá¡_á®á£áá¨ááááá¡_ááá áá¡áááá¡_á¨ááááá¡'.split( 8377 '_' 8378 ), 8379 isFormat: /(á¬ááá|á¨ááááá)/, 8380 }, 8381 weekdaysShort: 'ááá_áá á¨_á¡áá_ááá®_á®á£á_ááá _á¨áá'.split('_'), 8382 weekdaysMin: 'áá_áá _á¡á_áá_á®á£_áá_á¨á'.split('_'), 8383 longDateFormat: { 8384 LT: 'HH:mm', 8385 LTS: 'HH:mm:ss', 8386 L: 'DD/MM/YYYY', 8387 LL: 'D MMMM YYYY', 8388 LLL: 'D MMMM YYYY HH:mm', 8389 LLLL: 'dddd, D MMMM YYYY HH:mm', 8390 }, 8391 calendar: { 8392 sameDay: '[áá¦áá¡] LT[-áá]', 8393 nextDay: '[á®ááá] LT[-áá]', 8394 lastDay: '[áá£á¨áá] LT[-áá]', 8395 nextWeek: '[á¨ááááá] dddd LT[-áá]', 8396 lastWeek: '[á¬ááá] dddd LT-áá', 8397 sameElse: 'L', 8398 }, 8399 relativeTime: { 8400 future: function (s) { 8401 return s.replace(/(á¬áá|á¬á£á|á¡ááá|á¬áá|áá¦|áá)(á|á)/, function ( 8402 $0, 8403 $1, 8404 $2 8405 ) { 8406 return $2 === 'á' ? $1 + 'á¨á' : $1 + $2 + 'á¨á'; 8407 }); 8408 }, 8409 past: function (s) { 8410 if (/(á¬ááá|á¬á£áá|á¡áááá|áá¦á|ááá)/.test(s)) { 8411 return s.replace(/(á|á)$/, 'áá¡ á¬áá'); 8412 } 8413 if (/á¬ááá/.test(s)) { 8414 return s.replace(/á¬ááá$/, 'á¬ááá¡ á¬áá'); 8415 } 8416 return s; 8417 }, 8418 s: 'á áááááááá á¬ááá', 8419 ss: '%d á¬ááá', 8420 m: 'á¬á£áá', 8421 mm: '%d á¬á£áá', 8422 h: 'á¡áááá', 8423 hh: '%d á¡áááá', 8424 d: 'áá¦á', 8425 dd: '%d áá¦á', 8426 M: 'ááá', 8427 MM: '%d ááá', 8428 y: 'á¬ááá', 8429 yy: '%d á¬ááá', 8430 }, 8431 dayOfMonthOrdinalParse: /0|1-áá|áá-\d{1,2}|\d{1,2}-á/, 8432 ordinal: function (number) { 8433 if (number === 0) { 8434 return number; 8435 } 8436 if (number === 1) { 8437 return number + '-áá'; 8438 } 8439 if ( 8440 number < 20 || 8441 (number <= 100 && number % 20 === 0) || 8442 number % 100 === 0 8443 ) { 8444 return 'áá-' + number; 8445 } 8446 return number + '-á'; 8447 }, 8448 week: { 8449 dow: 1, 8450 doy: 7, 8451 }, 8452 }); 8453 8454 return ka; 8455 8456}))); 8457 8458 8459/***/ }), 8460
vendor: 3,660 bytes, lines 8461-8562
8461/***/ "../../node_modules/moment/locale/kk.js": 8462/*!*********************************************************************************************************************************!*\ 8463 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/kk.js ***! 8464 \*********************************************************************************************************************************/ 8465/*! no static exports found */ 8466/***/ (function(module, exports, __webpack_require__) { 8467 8468//! moment.js locale configuration 8469//! locale : Kazakh [kk] 8470//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan 8471 8472;(function (global, factory) { 8473 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 8474 undefined 8475}(this, (function (moment) { 'use strict'; 8476 8477 //! moment.js locale configuration 8478 8479 var suffixes = { 8480 0: '-ÑÑ', 8481 1: '-ÑÑ', 8482 2: '-ÑÑ', 8483 3: '-ÑÑ', 8484 4: '-ÑÑ', 8485 5: '-ÑÑ', 8486 6: '-ÑÑ', 8487 7: '-ÑÑ', 8488 8: '-ÑÑ', 8489 9: '-ÑÑ', 8490 10: '-ÑÑ', 8491 20: '-ÑÑ', 8492 30: '-ÑÑ', 8493 40: '-ÑÑ', 8494 50: '-ÑÑ', 8495 60: '-ÑÑ', 8496 70: '-ÑÑ', 8497 80: '-ÑÑ', 8498 90: '-ÑÑ', 8499 100: '-ÑÑ', 8500 }; 8501 8502 var kk = moment.defineLocale('kk', { 8503 months: 'ÒаңÑаÑ_аÒпан_наÑÑÑз_ÑÓÑÑÑ_мамÑÑ_маÑÑÑм_ÑÑлде_ÑамÑз_ÒÑÑкүйек_Òазан_ÒаÑаÑа_желÑоÒÑан'.split( 8504 '_' 8505 ), 8506 monthsShort: 'Òаң_аÒп_наÑ_ÑÓÑ_мам_маÑ_ÑÑл_Ñам_ÒÑÑ_Òаз_ÒаÑ_жел'.split('_'), 8507 weekdays: 'жекÑенбÑ_дүйÑенбÑ_ÑейÑенбÑ_ÑÓÑÑенбÑ_бейÑенбÑ_жұма_ÑенбÑ'.split( 8508 '_' 8509 ), 8510 weekdaysShort: 'жек_дүй_Ñей_ÑÓÑ_бей_жұм_Ñен'.split('_'), 8511 weekdaysMin: 'жк_дй_Ñй_ÑÑ_бй_жм_Ñн'.split('_'), 8512 longDateFormat: { 8513 LT: 'HH:mm', 8514 LTS: 'HH:mm:ss', 8515 L: 'DD.MM.YYYY', 8516 LL: 'D MMMM YYYY', 8517 LLL: 'D MMMM YYYY HH:mm', 8518 LLLL: 'dddd, D MMMM YYYY HH:mm', 8519 }, 8520 calendar: { 8521 sameDay: '[ÐүгÑн ÑаÒаÑ] LT', 8522 nextDay: '[ÐÑÑең ÑаÒаÑ] LT', 8523 nextWeek: 'dddd [ÑаÒаÑ] LT', 8524 lastDay: '[ÐеÑе ÑаÒаÑ] LT', 8525 lastWeek: '[Ó¨Ñкен апÑанÑÒ£] dddd [ÑаÒаÑ] LT', 8526 sameElse: 'L', 8527 }, 8528 relativeTime: { 8529 future: '%s ÑÑÑнде', 8530 past: '%s бұÑÑн', 8531 s: 'бÑÑнеÑе ÑекÑнд', 8532 ss: '%d ÑекÑнд', 8533 m: 'бÑÑ Ð¼Ð¸Ð½ÑÑ', 8534 mm: '%d минÑÑ', 8535 h: 'бÑÑ ÑаÒаÑ', 8536 hh: '%d ÑаÒаÑ', 8537 d: 'бÑÑ ÐºÒ¯Ð½', 8538 dd: '%d күн', 8539 M: 'бÑÑ Ð°Ð¹', 8540 MM: '%d ай', 8541 y: 'бÑÑ Ð¶Ñл', 8542 yy: '%d жÑл', 8543 }, 8544 dayOfMonthOrdinalParse: /\d{1,2}-(ÑÑ|ÑÑ)/, 8545 ordinal: function (number) { 8546 var a = number % 10, 8547 b = number >= 100 ? 100 : null; 8548 return number + (suffixes[number] || suffixes[a] || suffixes[b]); 8549 }, 8550 week: { 8551 dow: 1, // Monday is the first day of the week. 8552 doy: 7, // The week that contains Jan 7th is the first week of the year. 8553 }, 8554 }); 8555 8556 return kk; 8557 8558}))); 8559 8560 8561/***/ }), 8562
vendor: 4,631 bytes, lines 8563-8684
8563/***/ "../../node_modules/moment/locale/km.js": 8564/*!*********************************************************************************************************************************!*\ 8565 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/km.js ***! 8566 \*********************************************************************************************************************************/ 8567/*! no static exports found */ 8568/***/ (function(module, exports, __webpack_require__) { 8569 8570//! moment.js locale configuration 8571//! locale : Cambodian [km] 8572//! author : Kruy Vanna : https://github.com/kruyvanna 8573 8574;(function (global, factory) { 8575 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 8576 undefined 8577}(this, (function (moment) { 'use strict'; 8578 8579 //! moment.js locale configuration 8580 8581 var symbolMap = { 8582 '1': 'á¡', 8583 '2': 'á¢', 8584 '3': 'á£', 8585 '4': 'á¤', 8586 '5': 'á¥', 8587 '6': 'á¦', 8588 '7': 'á§', 8589 '8': 'á¨', 8590 '9': 'á©', 8591 '0': 'á ', 8592 }, 8593 numberMap = { 8594 'á¡': '1', 8595 'á¢': '2', 8596 'á£': '3', 8597 'á¤': '4', 8598 'á¥': '5', 8599 'á¦': '6', 8600 'á§': '7', 8601 'á¨': '8', 8602 'á©': '9', 8603 'á ': '0', 8604 }; 8605 8606 var km = moment.defineLocale('km', { 8607 months: 'áááá¶_áá»áááá_áá¸áá¶_áááá¶_á§ááá¶_áá·áá»áá¶_áááááá¶_áá¸á á¶_ááááá¶_áá»áá¶_áá·á ááá·áá¶_áááá¼'.split( 8608 '_' 8609 ), 8610 monthsShort: 'áááá¶_áá»áááá_áá¸áá¶_áááá¶_á§ááá¶_áá·áá»áá¶_áááááá¶_áá¸á á¶_ááááá¶_áá»áá¶_áá·á ááá·áá¶_áááá¼'.split( 8611 '_' 8612 ), 8613 weekdays: 'á¢á¶áá·ááá_á áááá_á¢áááá¶á_áá»á_áááá ááááá·á_áá»ááá_áá áá'.split('_'), 8614 weekdaysShort: 'á¢á¶_á _á¢_á_ááá_áá»_á'.split('_'), 8615 weekdaysMin: 'á¢á¶_á _á¢_á_ááá_áá»_á'.split('_'), 8616 weekdaysParseExact: true, 8617 longDateFormat: { 8618 LT: 'HH:mm', 8619 LTS: 'HH:mm:ss', 8620 L: 'DD/MM/YYYY', 8621 LL: 'D MMMM YYYY', 8622 LLL: 'D MMMM YYYY HH:mm', 8623 LLLL: 'dddd, D MMMM YYYY HH:mm', 8624 }, 8625 meridiemParse: /áááá¹á|áááá¶á /, 8626 isPM: function (input) { 8627 return input === 'áááá¶á '; 8628 }, 8629 meridiem: function (hour, minute, isLower) { 8630 if (hour < 12) { 8631 return 'áááá¹á'; 8632 } else { 8633 return 'áááá¶á '; 8634 } 8635 }, 8636 calendar: { 8637 sameDay: '[ááááááá áááá] LT', 8638 nextDay: '[ááá¢áá áááá] LT', 8639 nextWeek: 'dddd [áááá] LT', 8640 lastDay: '[áááá·ááá·á áááá] LT', 8641 lastWeek: 'dddd [ááááá¶á ááá»á] [áááá] LT', 8642 sameElse: 'L', 8643 }, 8644 relativeTime: { 8645 future: '%sááá', 8646 past: '%sáá»á', 8647 s: 'ááá»áááá¶ááá·áá¶áá¸', 8648 ss: '%d áá·áá¶áá¸', 8649 m: 'áá½ááá¶áá¸', 8650 mm: '%d áá¶áá¸', 8651 h: 'áá½ááááá', 8652 hh: '%d áááá', 8653 d: 'áá½ááááá', 8654 dd: '%d áááá', 8655 M: 'áá½ááá', 8656 MM: '%d áá', 8657 y: 'áá½ááááá¶á', 8658 yy: '%d áááá¶á', 8659 }, 8660 dayOfMonthOrdinalParse: /áá¸\d{1,2}/, 8661 ordinal: 'áá¸%d', 8662 preparse: function (string) { 8663 return string.replace(/[á¡á¢á£á¤á¥á¦á§á¨á©á ]/g, function (match) { 8664 return numberMap[match]; 8665 }); 8666 }, 8667 postformat: function (string) { 8668 return string.replace(/\d/g, function (match) { 8669 return symbolMap[match]; 8670 }); 8671 }, 8672 week: { 8673 dow: 1, // Monday is the first day of the week. 8674 doy: 4, // The week that contains Jan 4th is the first week of the year. 8675 }, 8676 }); 8677 8678 return km; 8679 8680}))); 8681 8682 8683/***/ }), 8684
vendor: 5,626 bytes, lines 8685-8827
8685/***/ "../../node_modules/moment/locale/kn.js": 8686/*!*********************************************************************************************************************************!*\ 8687 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/kn.js ***! 8688 \*********************************************************************************************************************************/ 8689/*! no static exports found */ 8690/***/ (function(module, exports, __webpack_require__) { 8691 8692//! moment.js locale configuration 8693//! locale : Kannada [kn] 8694//! author : Rajeev Naik : https://github.com/rajeevnaikte 8695 8696;(function (global, factory) { 8697 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 8698 undefined 8699}(this, (function (moment) { 'use strict'; 8700 8701 //! moment.js locale configuration 8702 8703 var symbolMap = { 8704 '1': 'à³§', 8705 '2': '೨', 8706 '3': '೩', 8707 '4': '೪', 8708 '5': '೫', 8709 '6': '೬', 8710 '7': 'à³', 8711 '8': 'à³®', 8712 '9': '೯', 8713 '0': '೦', 8714 }, 8715 numberMap = { 8716 'à³§': '1', 8717 '೨': '2', 8718 '೩': '3', 8719 '೪': '4', 8720 '೫': '5', 8721 '೬': '6', 8722 'à³': '7', 8723 'à³®': '8', 8724 '೯': '9', 8725 '೦': '0', 8726 }; 8727 8728 var kn = moment.defineLocale('kn', { 8729 months: 'à²à²¨à²µà²°à²¿_ಫà³à²¬à³à²°à²µà²°à²¿_ಮಾರà³à²à³_à²à²ªà³à²°à²¿à²²à³_ಮà³à³_à²à³à²¨à³_à²à³à²²à³à³_à²à²à²¸à³à²à³_ಸà³à²ªà³à²à³à²à²¬à²°à³_ಠà²à³à²à³à³à³à²¬à²°à³_ನವà³à²à²¬à²°à³_ಡಿಸà³à²à²¬à²°à³'.split( 8730 '_' 8731 ), 8732 monthsShort: 'à²à²¨_ಫà³à²¬à³à²°_ಮಾರà³à²à³_à²à²ªà³à²°à²¿à²²à³_ಮà³à³_à²à³à²¨à³_à²à³à²²à³à³_à²à²à²¸à³à²à³_ಸà³à²ªà³à²à³à²_ಠà²à³à²à³à³à³_ನವà³à²_ಡಿಸà³à²'.split( 8733 '_' 8734 ), 8735 monthsParseExact: true, 8736 weekdays: 'à²à²¾à²¨à³à²µà²¾à²°_ಸà³à³à³à²®à²µà²¾à²°_ಮà²à²à²³à²µà²¾à²°_ಬà³à²§à²µà²¾à²°_à²à³à²°à³à²µà²¾à²°_ಶà³à²à³à²°à²µà²¾à²°_ಶನಿವಾರ'.split( 8737 '_' 8738 ), 8739 weekdaysShort: 'à²à²¾à²¨à³_ಸà³à³à³à²®_ಮà²à²à²³_ಬà³à²§_à²à³à²°à³_ಶà³à²à³à²°_ಶನಿ'.split('_'), 8740 weekdaysMin: 'à²à²¾_ಸà³à³à³_ಮà²_ಬà³_à²à³_ಶà³_ಶ'.split('_'), 8741 longDateFormat: { 8742 LT: 'A h:mm', 8743 LTS: 'A h:mm:ss', 8744 L: 'DD/MM/YYYY', 8745 LL: 'D MMMM YYYY', 8746 LLL: 'D MMMM YYYY, A h:mm', 8747 LLLL: 'dddd, D MMMM YYYY, A h:mm', 8748 }, 8749 calendar: { 8750 sameDay: '[à²à²à²¦à³] LT', 8751 nextDay: '[ನಾಳà³] LT', 8752 nextWeek: 'dddd, LT', 8753 lastDay: '[ನಿನà³à²¨à³] LT', 8754 lastWeek: '[à²à³à³à²¨à³à²¯] dddd, LT', 8755 sameElse: 'L', 8756 }, 8757 relativeTime: { 8758 future: '%s ನà²à²¤à²°', 8759 past: '%s ಹಿà²à²¦à³', 8760 s: 'à²à³à²²à²µà³ à²à³à²·à²£à²à²³à³', 8761 ss: '%d ಸà³à²à³à²à²¡à³à²à²³à³', 8762 m: 'à²à²à²¦à³ ನಿಮಿಷ', 8763 mm: '%d ನಿಮಿಷ', 8764 h: 'à²à²à²¦à³ à²à²à²à³', 8765 hh: '%d à²à²à²à³', 8766 d: 'à²à²à²¦à³ ದಿನ', 8767 dd: '%d ದಿನ', 8768 M: 'à²à²à²¦à³ ತಿà²à²à²³à³', 8769 MM: '%d ತಿà²à²à²³à³', 8770 y: 'à²à²à²¦à³ ವರà³à²·', 8771 yy: '%d ವರà³à²·', 8772 }, 8773 preparse: function (string) { 8774 return string.replace(/[೧೨೩೪೫೬à³à³®à³¯à³¦]/g, function (match) { 8775 return numberMap[match]; 8776 }); 8777 }, 8778 postformat: function (string) { 8779 return string.replace(/\d/g, function (match) { 8780 return symbolMap[match]; 8781 }); 8782 }, 8783 meridiemParse: /ರಾತà³à²°à²¿|ಬà³à²³à²¿à²à³à²à³|ಮಧà³à²¯à²¾à²¹à³à²¨|ಸà²à²à³/, 8784 meridiemHour: function (hour, meridiem) { 8785 if (hour === 12) { 8786 hour = 0; 8787 } 8788 if (meridiem === 'ರಾತà³à²°à²¿') { 8789 return hour < 4 ? hour : hour + 12; 8790 } else if (meridiem === 'ಬà³à²³à²¿à²à³à²à³') { 8791 return hour; 8792 } else if (meridiem === 'ಮಧà³à²¯à²¾à²¹à³à²¨') { 8793 return hour >= 10 ? hour : hour + 12; 8794 } else if (meridiem === 'ಸà²à²à³') { 8795 return hour + 12; 8796 } 8797 }, 8798 meridiem: function (hour, minute, isLower) { 8799 if (hour < 4) { 8800 return 'ರಾತà³à²°à²¿'; 8801 } else if (hour < 10) { 8802 return 'ಬà³à²³à²¿à²à³à²à³'; 8803 } else if (hour < 17) { 8804 return 'ಮಧà³à²¯à²¾à²¹à³à²¨'; 8805 } else if (hour < 20) { 8806 return 'ಸà²à²à³'; 8807 } else { 8808 return 'ರಾತà³à²°à²¿'; 8809 } 8810 }, 8811 dayOfMonthOrdinalParse: /\d{1,2}(ನà³à³)/, 8812 ordinal: function (number) { 8813 return number + 'ನà³à³'; 8814 }, 8815 week: { 8816 dow: 0, // Sunday is the first day of the week. 8817 doy: 6, // The week that contains Jan 6th is the first week of the year. 8818 }, 8819 }); 8820 8821 return kn; 8822 8823}))); 8824 8825 8826/***/ }), 8827
vendor: 3,353 bytes, lines 8828-8922
8828/***/ "../../node_modules/moment/locale/ko.js": 8829/*!*********************************************************************************************************************************!*\ 8830 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ko.js ***! 8831 \*********************************************************************************************************************************/ 8832/*! no static exports found */ 8833/***/ (function(module, exports, __webpack_require__) { 8834 8835//! moment.js locale configuration 8836//! locale : Korean [ko] 8837//! author : Kyungwook, Park : https://github.com/kyungw00k 8838//! author : Jeeeyul Lee <[email protected]> 8839 8840;(function (global, factory) { 8841 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 8842 undefined 8843}(this, (function (moment) { 'use strict'; 8844 8845 //! moment.js locale configuration 8846 8847 var ko = moment.defineLocale('ko', { 8848 months: '1ì_2ì_3ì_4ì_5ì_6ì_7ì_8ì_9ì_10ì_11ì_12ì'.split('_'), 8849 monthsShort: '1ì_2ì_3ì_4ì_5ì_6ì_7ì_8ì_9ì_10ì_11ì_12ì'.split( 8850 '_' 8851 ), 8852 weekdays: 'ì¼ìì¼_ììì¼_íìì¼_ììì¼_목ìì¼_ê¸ìì¼_í ìì¼'.split('_'), 8853 weekdaysShort: 'ì¼_ì_í_ì_목_ê¸_í '.split('_'), 8854 weekdaysMin: 'ì¼_ì_í_ì_목_ê¸_í '.split('_'), 8855 longDateFormat: { 8856 LT: 'A h:mm', 8857 LTS: 'A h:mm:ss', 8858 L: 'YYYY.MM.DD.', 8859 LL: 'YYYYë MMMM Dì¼', 8860 LLL: 'YYYYë MMMM Dì¼ A h:mm', 8861 LLLL: 'YYYYë MMMM Dì¼ dddd A h:mm', 8862 l: 'YYYY.MM.DD.', 8863 ll: 'YYYYë MMMM Dì¼', 8864 lll: 'YYYYë MMMM Dì¼ A h:mm', 8865 llll: 'YYYYë MMMM Dì¼ dddd A h:mm', 8866 }, 8867 calendar: { 8868 sameDay: 'ì¤ë LT', 8869 nextDay: 'ë´ì¼ LT', 8870 nextWeek: 'dddd LT', 8871 lastDay: 'ì´ì LT', 8872 lastWeek: 'ì§ë주 dddd LT', 8873 sameElse: 'L', 8874 }, 8875 relativeTime: { 8876 future: '%s í', 8877 past: '%s ì ', 8878 s: 'ëª ì´', 8879 ss: '%dì´', 8880 m: '1ë¶', 8881 mm: '%dë¶', 8882 h: 'í ìê°', 8883 hh: '%dìê°', 8884 d: 'í루', 8885 dd: '%dì¼', 8886 M: 'í ë¬', 8887 MM: '%dë¬', 8888 y: 'ì¼ ë ', 8889 yy: '%dë ', 8890 }, 8891 dayOfMonthOrdinalParse: /\d{1,2}(ì¼|ì|주)/, 8892 ordinal: function (number, period) { 8893 switch (period) { 8894 case 'd': 8895 case 'D': 8896 case 'DDD': 8897 return number + 'ì¼'; 8898 case 'M': 8899 return number + 'ì'; 8900 case 'w': 8901 case 'W': 8902 return number + '주'; 8903 default: 8904 return number; 8905 } 8906 }, 8907 meridiemParse: /ì¤ì |ì¤í/, 8908 isPM: function (token) { 8909 return token === 'ì¤í'; 8910 }, 8911 meridiem: function (hour, minute, isUpper) { 8912 return hour < 12 ? 'ì¤ì ' : 'ì¤í'; 8913 }, 8914 }); 8915 8916 return ko; 8917 8918}))); 8919 8920 8921/***/ }), 8922
vendor: 4,685 bytes, lines 8923-9060
8923/***/ "../../node_modules/moment/locale/ku.js": 8924/*!*********************************************************************************************************************************!*\ 8925 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ku.js ***! 8926 \*********************************************************************************************************************************/ 8927/*! no static exports found */ 8928/***/ (function(module, exports, __webpack_require__) { 8929 8930//! moment.js locale configuration 8931//! locale : Kurdish [ku] 8932//! author : Shahram Mebashar : https://github.com/ShahramMebashar 8933 8934;(function (global, factory) { 8935 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 8936 undefined 8937}(this, (function (moment) { 'use strict'; 8938 8939 //! moment.js locale configuration 8940 8941 var symbolMap = { 8942 '1': 'Ù¡', 8943 '2': 'Ù¢', 8944 '3': 'Ù£', 8945 '4': 'Ù¤', 8946 '5': 'Ù¥', 8947 '6': 'Ù¦', 8948 '7': 'Ù§', 8949 '8': 'Ù¨', 8950 '9': 'Ù©', 8951 '0': 'Ù ', 8952 }, 8953 numberMap = { 8954 'Ù¡': '1', 8955 'Ù¢': '2', 8956 'Ù£': '3', 8957 'Ù¤': '4', 8958 'Ù¥': '5', 8959 'Ù¦': '6', 8960 'Ù§': '7', 8961 'Ù¨': '8', 8962 'Ù©': '9', 8963 'Ù ': '0', 8964 }, 8965 months = [ 8966 'کاÙÙÙÛ Ø¯ÙÙÛÙ ', 8967 'Ø´ÙØ¨Ø§Øª', 8968 'ئازار', 8969 'ÙÛØ³Ø§Ù', 8970 'Ø¦Ø§ÛØ§Ø±', 8971 'ØÙزÛÛØ±Ø§Ù', 8972 'تÛÙ Ù ÙØ²', 8973 'ئاب', 8974 'ئÛÛÙÙÙÙ', 8975 'تشرÛÙÛ ÛÛÙÛÙ ', 8976 'تشرÛÙÛ Ø¯ÙÙÛÙ ', 8977 'ÙØ§ÙÙÙÛ ÛÛÚ©ÛÙ ', 8978 ]; 8979 8980 var ku = moment.defineLocale('ku', { 8981 months: months, 8982 monthsShort: months, 8983 weekdays: 'ÛÙâÙØ´ÙâÙ Ù Ùâ_دÙÙØ´ÙâÙ Ù Ùâ_Ø³ÛØ´ÙâÙ Ù Ùâ_ÚÙØ§Ø±Ø´ÙâÙ Ù Ùâ_Ù¾ÛÙØ¬Ø´ÙâÙ Ù Ùâ_ÙÙâÛÙÛ_Ø´ÙâÙ Ù Ùâ'.split( 8984 '_' 8985 ), 8986 weekdaysShort: 'ÛÙâÙØ´ÙâÙ _دÙÙØ´ÙâÙ _Ø³ÛØ´ÙâÙ _ÚÙØ§Ø±Ø´ÙâÙ _Ù¾ÛÙØ¬Ø´ÙâÙ _ÙÙâÛÙÛ_Ø´ÙâÙ Ù Ùâ'.split( 8987 '_' 8988 ), 8989 weekdaysMin: 'Û_د_س_Ú_Ù¾_Ù_Ø´'.split('_'), 8990 weekdaysParseExact: true, 8991 longDateFormat: { 8992 LT: 'HH:mm', 8993 LTS: 'HH:mm:ss', 8994 L: 'DD/MM/YYYY', 8995 LL: 'D MMMM YYYY', 8996 LLL: 'D MMMM YYYY HH:mm', 8997 LLLL: 'dddd, D MMMM YYYY HH:mm', 8998 }, 8999 meridiemParse: /ئÛÙØ§Ø±Ùâ|بÙâÛØ§ÙÛ/, 9000 isPM: function (input) { 9001 return /ئÛÙØ§Ø±Ùâ/.test(input); 9002 }, 9003 meridiem: function (hour, minute, isLower) { 9004 if (hour < 12) { 9005 return 'بÙâÛØ§ÙÛ'; 9006 } else { 9007 return 'ئÛÙØ§Ø±Ùâ'; 9008 } 9009 }, 9010 calendar: { 9011 sameDay: '[ئÙâÙ Ø±Û ÙØ§ØªÚÙ ÛØ±] LT', 9012 nextDay: '[بÙâÛØ§ÙÛ ÙØ§ØªÚÙ ÛØ±] LT', 9013 nextWeek: 'dddd [ÙØ§ØªÚÙ ÛØ±] LT', 9014 lastDay: '[دÙÛÙÛ ÙØ§ØªÚÙ ÛØ±] LT', 9015 lastWeek: 'dddd [ÙØ§ØªÚÙ ÛØ±] LT', 9016 sameElse: 'L', 9017 }, 9018 relativeTime: { 9019 future: 'ÙÙâ %s', 9020 past: '%s', 9021 s: 'ÚÙâÙØ¯ ÚØ±ÙÙâÛÙâÙ', 9022 ss: 'ÚØ±ÙÙâ %d', 9023 m: 'ÛÙâÙ Ø®ÙÙÙâÙ', 9024 mm: '%d Ø®ÙÙÙâÙ', 9025 h: 'ÛÙâÙ ÙØ§ØªÚÙ ÛØ±', 9026 hh: '%d ÙØ§ØªÚÙ ÛØ±', 9027 d: 'ÛÙâÙ ÚÛÚ', 9028 dd: '%d ÚÛÚ', 9029 M: 'ÛÙâ٠٠اÙÚ¯', 9030 MM: '%d ٠اÙÚ¯', 9031 y: 'ÛÙâ٠ساڵ', 9032 yy: '%d ساڵ', 9033 }, 9034 preparse: function (string) { 9035 return string 9036 .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) { 9037 return numberMap[match]; 9038 }) 9039 .replace(/Ø/g, ','); 9040 }, 9041 postformat: function (string) { 9042 return string 9043 .replace(/\d/g, function (match) { 9044 return symbolMap[match]; 9045 }) 9046 .replace(/,/g, 'Ø'); 9047 }, 9048 week: { 9049 dow: 6, // Saturday is the first day of the week. 9050 doy: 12, // The week that contains Jan 12th is the first week of the year. 9051 }, 9052 }); 9053 9054 return ku; 9055 9056}))); 9057 9058 9059/***/ }), 9060
vendor: 3,696 bytes, lines 9061-9164
9061/***/ "../../node_modules/moment/locale/ky.js": 9062/*!*********************************************************************************************************************************!*\ 9063 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ky.js ***! 9064 \*********************************************************************************************************************************/ 9065/*! no static exports found */ 9066/***/ (function(module, exports, __webpack_require__) { 9067 9068//! moment.js locale configuration 9069//! locale : Kyrgyz [ky] 9070//! author : Chyngyz Arystan uulu : https://github.com/chyngyz 9071 9072;(function (global, factory) { 9073 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 9074 undefined 9075}(this, (function (moment) { 'use strict'; 9076 9077 //! moment.js locale configuration 9078 9079 var suffixes = { 9080 0: '-ÑÒ¯', 9081 1: '-Ñи', 9082 2: '-Ñи', 9083 3: '-ÑÒ¯', 9084 4: '-ÑÒ¯', 9085 5: '-Ñи', 9086 6: '-ÑÑ', 9087 7: '-Ñи', 9088 8: '-Ñи', 9089 9: '-ÑÑ', 9090 10: '-ÑÑ', 9091 20: '-ÑÑ', 9092 30: '-ÑÑ', 9093 40: '-ÑÑ', 9094 50: '-ÑÒ¯', 9095 60: '-ÑÑ', 9096 70: '-Ñи', 9097 80: '-Ñи', 9098 90: '-ÑÑ', 9099 100: '-ÑÒ¯', 9100 }; 9101 9102 var ky = moment.defineLocale('ky', { 9103 months: 'ÑнваÑÑ_ÑевÑалÑ_маÑÑ_апÑелÑ_май_иÑнÑ_иÑлÑ_авгÑÑÑ_ÑенÑÑбÑÑ_окÑÑбÑÑ_ноÑбÑÑ_декабÑÑ'.split( 9104 '_' 9105 ), 9106 monthsShort: 'Ñнв_Ñев_маÑÑ_апÑ_май_иÑнÑ_иÑлÑ_авг_Ñен_окÑ_ноÑ_дек'.split( 9107 '_' 9108 ), 9109 weekdays: 'ÐекÑемби_ÐүйÑөмбү_ШейÑемби_ШаÑÑемби_ÐейÑемби_ÐÑма_ÐÑемби'.split( 9110 '_' 9111 ), 9112 weekdaysShort: 'Ðек_Ðүй_Шей_ШаÑ_Ðей_ÐÑм_ÐÑе'.split('_'), 9113 weekdaysMin: 'Ðк_Ðй_Шй_ШÑ_Ðй_Ðм_ÐÑ'.split('_'), 9114 longDateFormat: { 9115 LT: 'HH:mm', 9116 LTS: 'HH:mm:ss', 9117 L: 'DD.MM.YYYY', 9118 LL: 'D MMMM YYYY', 9119 LLL: 'D MMMM YYYY HH:mm', 9120 LLLL: 'dddd, D MMMM YYYY HH:mm', 9121 }, 9122 calendar: { 9123 sameDay: '[Ðүгүн ÑааÑ] LT', 9124 nextDay: '[ÐÑÑең ÑааÑ] LT', 9125 nextWeek: 'dddd [ÑааÑ] LT', 9126 lastDay: '[ÐеÑÑÑ ÑааÑ] LT', 9127 lastWeek: '[Ó¨Ñкөн апÑанÑн] dddd [күнү] [ÑааÑ] LT', 9128 sameElse: 'L', 9129 }, 9130 relativeTime: { 9131 future: '%s иÑинде', 9132 past: '%s мÑÑÑн', 9133 s: 'биÑнеÑе ÑекÑнд', 9134 ss: '%d ÑекÑнд', 9135 m: 'Ð±Ð¸Ñ Ð¼Ò¯Ð½Ó©Ñ', 9136 mm: '%d мүнөÑ', 9137 h: 'Ð±Ð¸Ñ ÑааÑ', 9138 hh: '%d ÑааÑ', 9139 d: 'Ð±Ð¸Ñ ÐºÒ¯Ð½', 9140 dd: '%d күн', 9141 M: 'Ð±Ð¸Ñ Ð°Ð¹', 9142 MM: '%d ай', 9143 y: 'Ð±Ð¸Ñ Ð¶Ñл', 9144 yy: '%d жÑл', 9145 }, 9146 dayOfMonthOrdinalParse: /\d{1,2}-(Ñи|ÑÑ|ÑÒ¯|ÑÑ)/, 9147 ordinal: function (number) { 9148 var a = number % 10, 9149 b = number >= 100 ? 100 : null; 9150 return number + (suffixes[number] || suffixes[a] || suffixes[b]); 9151 }, 9152 week: { 9153 dow: 1, // Monday is the first day of the week. 9154 doy: 7, // The week that contains Jan 7th is the first week of the year. 9155 }, 9156 }); 9157 9158 return ky; 9159 9160}))); 9161 9162 9163/***/ }), 9164
vendor: 5,663 bytes, lines 9165-9319
9165/***/ "../../node_modules/moment/locale/lb.js": 9166/*!*********************************************************************************************************************************!*\ 9167 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/lb.js ***! 9168 \*********************************************************************************************************************************/ 9169/*! no static exports found */ 9170/***/ (function(module, exports, __webpack_require__) { 9171 9172//! moment.js locale configuration 9173//! locale : Luxembourgish [lb] 9174//! author : mweimerskirch : https://github.com/mweimerskirch 9175//! author : David Raison : https://github.com/kwisatz 9176 9177;(function (global, factory) { 9178 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 9179 undefined 9180}(this, (function (moment) { 'use strict'; 9181 9182 //! moment.js locale configuration 9183 9184 function processRelativeTime(number, withoutSuffix, key, isFuture) { 9185 var format = { 9186 m: ['eng Minutt', 'enger Minutt'], 9187 h: ['eng Stonn', 'enger Stonn'], 9188 d: ['een Dag', 'engem Dag'], 9189 M: ['ee Mount', 'engem Mount'], 9190 y: ['ee Joer', 'engem Joer'], 9191 }; 9192 return withoutSuffix ? format[key][0] : format[key][1]; 9193 } 9194 function processFutureTime(string) { 9195 var number = string.substr(0, string.indexOf(' ')); 9196 if (eifelerRegelAppliesToNumber(number)) { 9197 return 'a ' + string; 9198 } 9199 return 'an ' + string; 9200 } 9201 function processPastTime(string) { 9202 var number = string.substr(0, string.indexOf(' ')); 9203 if (eifelerRegelAppliesToNumber(number)) { 9204 return 'viru ' + string; 9205 } 9206 return 'virun ' + string; 9207 } 9208 /** 9209 * Returns true if the word before the given number loses the '-n' ending. 9210 * e.g. 'an 10 Deeg' but 'a 5 Deeg' 9211 * 9212 * @param number {integer} 9213 * @returns {boolean} 9214 */ 9215 function eifelerRegelAppliesToNumber(number) { 9216 number = parseInt(number, 10); 9217 if (isNaN(number)) { 9218 return false; 9219 } 9220 if (number < 0) { 9221 // Negative Number --> always true 9222 return true; 9223 } else if (number < 10) { 9224 // Only 1 digit 9225 if (4 <= number && number <= 7) { 9226 return true; 9227 } 9228 return false; 9229 } else if (number < 100) { 9230 // 2 digits 9231 var lastDigit = number % 10, 9232 firstDigit = number / 10; 9233 if (lastDigit === 0) { 9234 return eifelerRegelAppliesToNumber(firstDigit); 9235 } 9236 return eifelerRegelAppliesToNumber(lastDigit); 9237 } else if (number < 10000) { 9238 // 3 or 4 digits --> recursively check first digit 9239 while (number >= 10) { 9240 number = number / 10; 9241 } 9242 return eifelerRegelAppliesToNumber(number); 9243 } else { 9244 // Anything larger than 4 digits: recursively check first n-3 digits 9245 number = number / 1000; 9246 return eifelerRegelAppliesToNumber(number); 9247 } 9248 } 9249 9250 var lb = moment.defineLocale('lb', { 9251 months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split( 9252 '_' 9253 ), 9254 monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split( 9255 '_' 9256 ), 9257 monthsParseExact: true, 9258 weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split( 9259 '_' 9260 ), 9261 weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'), 9262 weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'), 9263 weekdaysParseExact: true, 9264 longDateFormat: { 9265 LT: 'H:mm [Auer]', 9266 LTS: 'H:mm:ss [Auer]', 9267 L: 'DD.MM.YYYY', 9268 LL: 'D. MMMM YYYY', 9269 LLL: 'D. MMMM YYYY H:mm [Auer]', 9270 LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]', 9271 }, 9272 calendar: { 9273 sameDay: '[Haut um] LT', 9274 sameElse: 'L', 9275 nextDay: '[Muer um] LT', 9276 nextWeek: 'dddd [um] LT', 9277 lastDay: '[Gëschter um] LT', 9278 lastWeek: function () { 9279 // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule 9280 switch (this.day()) { 9281 case 2: 9282 case 4: 9283 return '[Leschten] dddd [um] LT'; 9284 default: 9285 return '[Leschte] dddd [um] LT'; 9286 } 9287 }, 9288 }, 9289 relativeTime: { 9290 future: processFutureTime, 9291 past: processPastTime, 9292 s: 'e puer Sekonnen', 9293 ss: '%d Sekonnen', 9294 m: processRelativeTime, 9295 mm: '%d Minutten', 9296 h: processRelativeTime, 9297 hh: '%d Stonnen', 9298 d: processRelativeTime, 9299 dd: '%d Deeg', 9300 M: processRelativeTime, 9301 MM: '%d Méint', 9302 y: processRelativeTime, 9303 yy: '%d Joer', 9304 }, 9305 dayOfMonthOrdinalParse: /\d{1,2}\./, 9306 ordinal: '%d.', 9307 week: { 9308 dow: 1, // Monday is the first day of the week. 9309 doy: 4, // The week that contains Jan 4th is the first week of the year. 9310 }, 9311 }); 9312 9313 return lb; 9314 9315}))); 9316 9317 9318/***/ }), 9319
vendor: 3,653 bytes, lines 9320-9404
9320/***/ "../../node_modules/moment/locale/lo.js": 9321/*!*********************************************************************************************************************************!*\ 9322 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/lo.js ***! 9323 \*********************************************************************************************************************************/ 9324/*! no static exports found */ 9325/***/ (function(module, exports, __webpack_require__) { 9326 9327//! moment.js locale configuration 9328//! locale : Lao [lo] 9329//! author : Ryan Hart : https://github.com/ryanhart2 9330 9331;(function (global, factory) { 9332 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 9333 undefined 9334}(this, (function (moment) { 'use strict'; 9335 9336 //! moment.js locale configuration 9337 9338 var lo = moment.defineLocale('lo', { 9339 months: 'ມັàºàºàºàº_àºàº¸àº¡àºàº²_ມີàºàº²_à»àº¡àºªàº²_àºàº¶àºàºªàº°àºàº²_ມິàºàº¸àºàº²_àºà»àº¥àº°àºàº»àº_ສິàºàº«àº²_àºàº±àºàºàº²_àºàº¸àº¥àº²_àºàº°àºàº´àº_àºàº±àºàº§àº²'.split( 9340 '_' 9341 ), 9342 monthsShort: 'ມັàºàºàºàº_àºàº¸àº¡àºàº²_ມີàºàº²_à»àº¡àºªàº²_àºàº¶àºàºªàº°àºàº²_ມິàºàº¸àºàº²_àºà»àº¥àº°àºàº»àº_ສິàºàº«àº²_àºàº±àºàºàº²_àºàº¸àº¥àº²_àºàº°àºàº´àº_àºàº±àºàº§àº²'.split( 9343 '_' 9344 ), 9345 weekdays: 'àºàº²àºàº´àº_àºàº±àº_àºàº±àºàºàº²àº_àºàº¸àº_àºàº°àº«àº±àº_ສຸàº_à»àºªàº»àº²'.split('_'), 9346 weekdaysShort: 'àºàº´àº_àºàº±àº_àºàº±àºàºàº²àº_àºàº¸àº_àºàº°àº«àº±àº_ສຸàº_à»àºªàº»àº²'.split('_'), 9347 weekdaysMin: 'àº_àº_àºàº_àº_àºàº«_ສàº_ສ'.split('_'), 9348 weekdaysParseExact: true, 9349 longDateFormat: { 9350 LT: 'HH:mm', 9351 LTS: 'HH:mm:ss', 9352 L: 'DD/MM/YYYY', 9353 LL: 'D MMMM YYYY', 9354 LLL: 'D MMMM YYYY HH:mm', 9355 LLLL: 'ວັàºdddd D MMMM YYYY HH:mm', 9356 }, 9357 meridiemParse: /àºàºàºà»àºàº»à»àº²|àºàºàºà»àº¥àº/, 9358 isPM: function (input) { 9359 return input === 'àºàºàºà»àº¥àº'; 9360 }, 9361 meridiem: function (hour, minute, isLower) { 9362 if (hour < 12) { 9363 return 'àºàºàºà»àºàº»à»àº²'; 9364 } else { 9365 return 'àºàºàºà»àº¥àº'; 9366 } 9367 }, 9368 calendar: { 9369 sameDay: '[ມືà»àºàºµà»à»àº§àº¥àº²] LT', 9370 nextDay: '[ມືà»àºàº·à»àºà»àº§àº¥àº²] LT', 9371 nextWeek: '[ວັàº]dddd[à»à»àº²à»àº§àº¥àº²] LT', 9372 lastDay: '[ມືà»àº§àº²àºàºàºµà»à»àº§àº¥àº²] LT', 9373 lastWeek: '[ວັàº]dddd[à»àº¥à»àº§àºàºµà»à»àº§àº¥àº²] LT', 9374 sameElse: 'L', 9375 }, 9376 relativeTime: { 9377 future: 'àºàºµàº %s', 9378 past: '%sàºà»àº²àºàº¡àº²', 9379 s: 'àºà»à»à»àºàº»à»àº²à»àºàº§àº´àºàº²àºàºµ', 9380 ss: '%d ວິàºàº²àºàºµ', 9381 m: '1 àºàº²àºàºµ', 9382 mm: '%d àºàº²àºàºµ', 9383 h: '1 àºàº»à»àº§à»àº¡àº', 9384 hh: '%d àºàº»à»àº§à»àº¡àº', 9385 d: '1 ມືà»', 9386 dd: '%d ມືà»', 9387 M: '1 à»àºàº·àºàº', 9388 MM: '%d à»àºàº·àºàº', 9389 y: '1 àºàºµ', 9390 yy: '%d àºàºµ', 9391 }, 9392 dayOfMonthOrdinalParse: /(àºàºµà»)\d{1,2}/, 9393 ordinal: function (number) { 9394 return 'àºàºµà»' + number; 9395 }, 9396 }); 9397 9398 return lo; 9399 9400}))); 9401 9402 9403/***/ }), 9404
vendor: 5,339 bytes, lines 9405-9547
9405/***/ "../../node_modules/moment/locale/lt.js": 9406/*!*********************************************************************************************************************************!*\ 9407 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/lt.js ***! 9408 \*********************************************************************************************************************************/ 9409/*! no static exports found */ 9410/***/ (function(module, exports, __webpack_require__) { 9411 9412//! moment.js locale configuration 9413//! locale : Lithuanian [lt] 9414//! author : Mindaugas MozÅ«ras : https://github.com/mmozuras 9415 9416;(function (global, factory) { 9417 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 9418 undefined 9419}(this, (function (moment) { 'use strict'; 9420 9421 //! moment.js locale configuration 9422 9423 var units = { 9424 ss: 'sekundÄ_sekundžių_sekundes', 9425 m: 'minutÄ_minutÄs_minutÄ', 9426 mm: 'minutÄs_minuÄių_minutes', 9427 h: 'valanda_valandos_valandÄ ', 9428 hh: 'valandos_valandų_valandas', 9429 d: 'diena_dienos_dienÄ ', 9430 dd: 'dienos_dienų_dienas', 9431 M: 'mÄnuo_mÄnesio_mÄnesį', 9432 MM: 'mÄnesiai_mÄnesių_mÄnesius', 9433 y: 'metai_metų_metus', 9434 yy: 'metai_metų_metus', 9435 }; 9436 function translateSeconds(number, withoutSuffix, key, isFuture) { 9437 if (withoutSuffix) { 9438 return 'kelios sekundÄs'; 9439 } else { 9440 return isFuture ? 'kelių sekundžių' : 'kelias sekundes'; 9441 } 9442 } 9443 function translateSingular(number, withoutSuffix, key, isFuture) { 9444 return withoutSuffix 9445 ? forms(key)[0] 9446 : isFuture 9447 ? forms(key)[1] 9448 : forms(key)[2]; 9449 } 9450 function special(number) { 9451 return number % 10 === 0 || (number > 10 && number < 20); 9452 } 9453 function forms(key) { 9454 return units[key].split('_'); 9455 } 9456 function translate(number, withoutSuffix, key, isFuture) { 9457 var result = number + ' '; 9458 if (number === 1) { 9459 return ( 9460 result + translateSingular(number, withoutSuffix, key[0], isFuture) 9461 ); 9462 } else if (withoutSuffix) { 9463 return result + (special(number) ? forms(key)[1] : forms(key)[0]); 9464 } else { 9465 if (isFuture) { 9466 return result + forms(key)[1]; 9467 } else { 9468 return result + (special(number) ? forms(key)[1] : forms(key)[2]); 9469 } 9470 } 9471 } 9472 var lt = moment.defineLocale('lt', { 9473 months: { 9474 format: 'sausio_vasario_kovo_balandžio_gegužÄs_birželio_liepos_rugpjÅ«Äio_rugsÄjo_spalio_lapkriÄio_gruodžio'.split( 9475 '_' 9476 ), 9477 standalone: 'sausis_vasaris_kovas_balandis_gegužÄ_birželis_liepa_rugpjÅ«tis_rugsÄjis_spalis_lapkritis_gruodis'.split( 9478 '_' 9479 ), 9480 isFormat: /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/, 9481 }, 9482 monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'), 9483 weekdays: { 9484 format: 'sekmadienį_pirmadienį_antradienį_treÄiadienį_ketvirtadienį_penktadienį_Å¡eÅ¡tadienį'.split( 9485 '_' 9486 ), 9487 standalone: 'sekmadienis_pirmadienis_antradienis_treÄiadienis_ketvirtadienis_penktadienis_Å¡eÅ¡tadienis'.split( 9488 '_' 9489 ), 9490 isFormat: /dddd HH:mm/, 9491 }, 9492 weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Å eÅ¡'.split('_'), 9493 weekdaysMin: 'S_P_A_T_K_Pn_Å '.split('_'), 9494 weekdaysParseExact: true, 9495 longDateFormat: { 9496 LT: 'HH:mm', 9497 LTS: 'HH:mm:ss', 9498 L: 'YYYY-MM-DD', 9499 LL: 'YYYY [m.] MMMM D [d.]', 9500 LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]', 9501 LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]', 9502 l: 'YYYY-MM-DD', 9503 ll: 'YYYY [m.] MMMM D [d.]', 9504 lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]', 9505 llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]', 9506 }, 9507 calendar: { 9508 sameDay: '[Å iandien] LT', 9509 nextDay: '[Rytoj] LT', 9510 nextWeek: 'dddd LT', 9511 lastDay: '[Vakar] LT', 9512 lastWeek: '[PraÄjusį] dddd LT', 9513 sameElse: 'L', 9514 }, 9515 relativeTime: { 9516 future: 'po %s', 9517 past: 'prieÅ¡ %s', 9518 s: translateSeconds, 9519 ss: translate, 9520 m: translateSingular, 9521 mm: translate, 9522 h: translateSingular, 9523 hh: translate, 9524 d: translateSingular, 9525 dd: translate, 9526 M: translateSingular, 9527 MM: translate, 9528 y: translateSingular, 9529 yy: translate, 9530 }, 9531 dayOfMonthOrdinalParse: /\d{1,2}-oji/, 9532 ordinal: function (number) { 9533 return number + '-oji'; 9534 }, 9535 week: { 9536 dow: 1, // Monday is the first day of the week. 9537 doy: 4, // The week that contains Jan 4th is the first week of the year. 9538 }, 9539 }); 9540 9541 return lt; 9542 9543}))); 9544 9545 9546/***/ }), 9547
vendor: 4,649 bytes, lines 9548-9660
9548/***/ "../../node_modules/moment/locale/lv.js": 9549/*!*********************************************************************************************************************************!*\ 9550 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/lv.js ***! 9551 \*********************************************************************************************************************************/ 9552/*! no static exports found */ 9553/***/ (function(module, exports, __webpack_require__) { 9554 9555//! moment.js locale configuration 9556//! locale : Latvian [lv] 9557//! author : Kristaps Karlsons : https://github.com/skakri 9558//! author : JÄnis Elmeris : https://github.com/JanisE 9559 9560;(function (global, factory) { 9561 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 9562 undefined 9563}(this, (function (moment) { 'use strict'; 9564 9565 //! moment.js locale configuration 9566 9567 var units = { 9568 ss: 'sekundes_sekundÄm_sekunde_sekundes'.split('_'), 9569 m: 'minÅ«tes_minÅ«tÄm_minÅ«te_minÅ«tes'.split('_'), 9570 mm: 'minÅ«tes_minÅ«tÄm_minÅ«te_minÅ«tes'.split('_'), 9571 h: 'stundas_stundÄm_stunda_stundas'.split('_'), 9572 hh: 'stundas_stundÄm_stunda_stundas'.split('_'), 9573 d: 'dienas_dienÄm_diena_dienas'.split('_'), 9574 dd: 'dienas_dienÄm_diena_dienas'.split('_'), 9575 M: 'mÄneÅ¡a_mÄneÅ¡iem_mÄnesis_mÄneÅ¡i'.split('_'), 9576 MM: 'mÄneÅ¡a_mÄneÅ¡iem_mÄnesis_mÄneÅ¡i'.split('_'), 9577 y: 'gada_gadiem_gads_gadi'.split('_'), 9578 yy: 'gada_gadiem_gads_gadi'.split('_'), 9579 }; 9580 /** 9581 * @param withoutSuffix boolean true = a length of time; false = before/after a period of time. 9582 */ 9583 function format(forms, number, withoutSuffix) { 9584 if (withoutSuffix) { 9585 // E.g. "21 minÅ«te", "3 minÅ«tes". 9586 return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3]; 9587 } else { 9588 // E.g. "21 minÅ«tes" as in "pÄc 21 minÅ«tes". 9589 // E.g. "3 minÅ«tÄm" as in "pÄc 3 minÅ«tÄm". 9590 return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1]; 9591 } 9592 } 9593 function relativeTimeWithPlural(number, withoutSuffix, key) { 9594 return number + ' ' + format(units[key], number, withoutSuffix); 9595 } 9596 function relativeTimeWithSingular(number, withoutSuffix, key) { 9597 return format(units[key], number, withoutSuffix); 9598 } 9599 function relativeSeconds(number, withoutSuffix) { 9600 return withoutSuffix ? 'dažas sekundes' : 'dažÄm sekundÄm'; 9601 } 9602 9603 var lv = moment.defineLocale('lv', { 9604 months: 'janvÄris_februÄris_marts_aprÄ«lis_maijs_jÅ«nijs_jÅ«lijs_augusts_septembris_oktobris_novembris_decembris'.split( 9605 '_' 9606 ), 9607 monthsShort: 'jan_feb_mar_apr_mai_jÅ«n_jÅ«l_aug_sep_okt_nov_dec'.split('_'), 9608 weekdays: 'svÄtdiena_pirmdiena_otrdiena_treÅ¡diena_ceturtdiena_piektdiena_sestdiena'.split( 9609 '_' 9610 ), 9611 weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'), 9612 weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'), 9613 weekdaysParseExact: true, 9614 longDateFormat: { 9615 LT: 'HH:mm', 9616 LTS: 'HH:mm:ss', 9617 L: 'DD.MM.YYYY.', 9618 LL: 'YYYY. [gada] D. MMMM', 9619 LLL: 'YYYY. [gada] D. MMMM, HH:mm', 9620 LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm', 9621 }, 9622 calendar: { 9623 sameDay: '[Å odien pulksten] LT', 9624 nextDay: '[RÄ«t pulksten] LT', 9625 nextWeek: 'dddd [pulksten] LT', 9626 lastDay: '[Vakar pulksten] LT', 9627 lastWeek: '[PagÄjuÅ¡Ä] dddd [pulksten] LT', 9628 sameElse: 'L', 9629 }, 9630 relativeTime: { 9631 future: 'pÄc %s', 9632 past: 'pirms %s', 9633 s: relativeSeconds, 9634 ss: relativeTimeWithPlural, 9635 m: relativeTimeWithSingular, 9636 mm: relativeTimeWithPlural, 9637 h: relativeTimeWithSingular, 9638 hh: relativeTimeWithPlural, 9639 d: relativeTimeWithSingular, 9640 dd: relativeTimeWithPlural, 9641 M: relativeTimeWithSingular, 9642 MM: relativeTimeWithPlural, 9643 y: relativeTimeWithSingular, 9644 yy: relativeTimeWithPlural, 9645 }, 9646 dayOfMonthOrdinalParse: /\d{1,2}\./, 9647 ordinal: '%d.', 9648 week: { 9649 dow: 1, // Monday is the first day of the week. 9650 doy: 4, // The week that contains Jan 4th is the first week of the year. 9651 }, 9652 }); 9653 9654 return lv; 9655 9656}))); 9657 9658 9659/***/ }), 9660
vendor: 5,008 bytes, lines 9661-9798
9661/***/ "../../node_modules/moment/locale/me.js": 9662/*!*********************************************************************************************************************************!*\ 9663 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/me.js ***! 9664 \*********************************************************************************************************************************/ 9665/*! no static exports found */ 9666/***/ (function(module, exports, __webpack_require__) { 9667 9668//! moment.js locale configuration 9669//! locale : Montenegrin [me] 9670//! author : Miodrag NikaÄ <[email protected]> : https://github.com/miodragnikac 9671 9672;(function (global, factory) { 9673 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 9674 undefined 9675}(this, (function (moment) { 'use strict'; 9676 9677 //! moment.js locale configuration 9678 9679 var translator = { 9680 words: { 9681 //Different grammatical cases 9682 ss: ['sekund', 'sekunda', 'sekundi'], 9683 m: ['jedan minut', 'jednog minuta'], 9684 mm: ['minut', 'minuta', 'minuta'], 9685 h: ['jedan sat', 'jednog sata'], 9686 hh: ['sat', 'sata', 'sati'], 9687 dd: ['dan', 'dana', 'dana'], 9688 MM: ['mjesec', 'mjeseca', 'mjeseci'], 9689 yy: ['godina', 'godine', 'godina'], 9690 }, 9691 correctGrammaticalCase: function (number, wordKey) { 9692 return number === 1 9693 ? wordKey[0] 9694 : number >= 2 && number <= 4 9695 ? wordKey[1] 9696 : wordKey[2]; 9697 }, 9698 translate: function (number, withoutSuffix, key) { 9699 var wordKey = translator.words[key]; 9700 if (key.length === 1) { 9701 return withoutSuffix ? wordKey[0] : wordKey[1]; 9702 } else { 9703 return ( 9704 number + 9705 ' ' + 9706 translator.correctGrammaticalCase(number, wordKey) 9707 ); 9708 } 9709 }, 9710 }; 9711 9712 var me = moment.defineLocale('me', { 9713 months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split( 9714 '_' 9715 ), 9716 monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split( 9717 '_' 9718 ), 9719 monthsParseExact: true, 9720 weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_Äetvrtak_petak_subota'.split( 9721 '_' 9722 ), 9723 weekdaysShort: 'ned._pon._uto._sri._Äet._pet._sub.'.split('_'), 9724 weekdaysMin: 'ne_po_ut_sr_Äe_pe_su'.split('_'), 9725 weekdaysParseExact: true, 9726 longDateFormat: { 9727 LT: 'H:mm', 9728 LTS: 'H:mm:ss', 9729 L: 'DD.MM.YYYY', 9730 LL: 'D. MMMM YYYY', 9731 LLL: 'D. MMMM YYYY H:mm', 9732 LLLL: 'dddd, D. MMMM YYYY H:mm', 9733 }, 9734 calendar: { 9735 sameDay: '[danas u] LT', 9736 nextDay: '[sjutra u] LT', 9737 9738 nextWeek: function () { 9739 switch (this.day()) { 9740 case 0: 9741 return '[u] [nedjelju] [u] LT'; 9742 case 3: 9743 return '[u] [srijedu] [u] LT'; 9744 case 6: 9745 return '[u] [subotu] [u] LT'; 9746 case 1: 9747 case 2: 9748 case 4: 9749 case 5: 9750 return '[u] dddd [u] LT'; 9751 } 9752 }, 9753 lastDay: '[juÄe u] LT', 9754 lastWeek: function () { 9755 var lastWeekDays = [ 9756 '[proÅ¡le] [nedjelje] [u] LT', 9757 '[proÅ¡log] [ponedjeljka] [u] LT', 9758 '[proÅ¡log] [utorka] [u] LT', 9759 '[proÅ¡le] [srijede] [u] LT', 9760 '[proÅ¡log] [Äetvrtka] [u] LT', 9761 '[proÅ¡log] [petka] [u] LT', 9762 '[proÅ¡le] [subote] [u] LT', 9763 ]; 9764 return lastWeekDays[this.day()]; 9765 }, 9766 sameElse: 'L', 9767 }, 9768 relativeTime: { 9769 future: 'za %s', 9770 past: 'prije %s', 9771 s: 'nekoliko sekundi', 9772 ss: translator.translate, 9773 m: translator.translate, 9774 mm: translator.translate, 9775 h: translator.translate, 9776 hh: translator.translate, 9777 d: 'dan', 9778 dd: translator.translate, 9779 M: 'mjesec', 9780 MM: translator.translate, 9781 y: 'godinu', 9782 yy: translator.translate, 9783 }, 9784 dayOfMonthOrdinalParse: /\d{1,2}\./, 9785 ordinal: '%d.', 9786 week: { 9787 dow: 1, // Monday is the first day of the week. 9788 doy: 7, // The week that contains Jan 7th is the first week of the year. 9789 }, 9790 }); 9791 9792 return me; 9793 9794}))); 9795 9796 9797/***/ }), 9798
vendor: 3,061 bytes, lines 9799-9877
9799/***/ "../../node_modules/moment/locale/mi.js": 9800/*!*********************************************************************************************************************************!*\ 9801 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/mi.js ***! 9802 \*********************************************************************************************************************************/ 9803/*! no static exports found */ 9804/***/ (function(module, exports, __webpack_require__) { 9805 9806//! moment.js locale configuration 9807//! locale : Maori [mi] 9808//! author : John Corrigan <[email protected]> : https://github.com/johnideal 9809 9810;(function (global, factory) { 9811 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 9812 undefined 9813}(this, (function (moment) { 'use strict'; 9814 9815 //! moment.js locale configuration 9816 9817 var mi = moment.defineLocale('mi', { 9818 months: 'Kohi-tÄte_Hui-tanguru_PoutÅ«-te-rangi_Paenga-whÄwhÄ_Haratua_Pipiri_HÅngoingoi_Here-turi-kÅkÄ_Mahuru_Whiringa-Ä-nuku_Whiringa-Ä-rangi_Hakihea'.split( 9819 '_' 9820 ), 9821 monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_HÅngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split( 9822 '_' 9823 ), 9824 monthsRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, 9825 monthsStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, 9826 monthsShortRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i, 9827 monthsShortStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i, 9828 weekdays: 'RÄtapu_Mane_TÅ«rei_Wenerei_TÄite_Paraire_HÄtarei'.split('_'), 9829 weekdaysShort: 'Ta_Ma_TÅ«_We_TÄi_Pa_HÄ'.split('_'), 9830 weekdaysMin: 'Ta_Ma_TÅ«_We_TÄi_Pa_HÄ'.split('_'), 9831 longDateFormat: { 9832 LT: 'HH:mm', 9833 LTS: 'HH:mm:ss', 9834 L: 'DD/MM/YYYY', 9835 LL: 'D MMMM YYYY', 9836 LLL: 'D MMMM YYYY [i] HH:mm', 9837 LLLL: 'dddd, D MMMM YYYY [i] HH:mm', 9838 }, 9839 calendar: { 9840 sameDay: '[i teie mahana, i] LT', 9841 nextDay: '[apopo i] LT', 9842 nextWeek: 'dddd [i] LT', 9843 lastDay: '[inanahi i] LT', 9844 lastWeek: 'dddd [whakamutunga i] LT', 9845 sameElse: 'L', 9846 }, 9847 relativeTime: { 9848 future: 'i roto i %s', 9849 past: '%s i mua', 9850 s: 'te hÄkona ruarua', 9851 ss: '%d hÄkona', 9852 m: 'he meneti', 9853 mm: '%d meneti', 9854 h: 'te haora', 9855 hh: '%d haora', 9856 d: 'he ra', 9857 dd: '%d ra', 9858 M: 'he marama', 9859 MM: '%d marama', 9860 y: 'he tau', 9861 yy: '%d tau', 9862 }, 9863 dayOfMonthOrdinalParse: /\d{1,2}º/, 9864 ordinal: '%dº', 9865 week: { 9866 dow: 1, // Monday is the first day of the week. 9867 doy: 4, // The week that contains Jan 4th is the first week of the year. 9868 }, 9869 }); 9870 9871 return mi; 9872 9873}))); 9874 9875 9876/***/ }), 9877
vendor: 4,207 bytes, lines 9878-9983
9878/***/ "../../node_modules/moment/locale/mk.js": 9879/*!*********************************************************************************************************************************!*\ 9880 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/mk.js ***! 9881 \*********************************************************************************************************************************/ 9882/*! no static exports found */ 9883/***/ (function(module, exports, __webpack_require__) { 9884 9885//! moment.js locale configuration 9886//! locale : Macedonian [mk] 9887//! author : Borislav Mickov : https://github.com/B0k0 9888//! author : Sashko Todorov : https://github.com/bkyceh 9889 9890;(function (global, factory) { 9891 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 9892 undefined 9893}(this, (function (moment) { 'use strict'; 9894 9895 //! moment.js locale configuration 9896 9897 var mk = moment.defineLocale('mk', { 9898 months: 'ÑанÑаÑи_ÑевÑÑаÑи_маÑÑ_апÑил_маÑ_ÑÑни_ÑÑли_авгÑÑÑ_ÑепÑемвÑи_окÑомвÑи_ноемвÑи_декемвÑи'.split( 9899 '_' 9900 ), 9901 monthsShort: 'Ñан_Ñев_маÑ_апÑ_маÑ_ÑÑн_ÑÑл_авг_Ñеп_окÑ_ное_дек'.split('_'), 9902 weekdays: 'недела_понеделник_вÑоÑник_ÑÑеда_ÑеÑвÑÑок_пеÑок_ÑабоÑа'.split( 9903 '_' 9904 ), 9905 weekdaysShort: 'нед_пон_вÑо_ÑÑе_ÑеÑ_пеÑ_Ñаб'.split('_'), 9906 weekdaysMin: 'нe_пo_вÑ_ÑÑ_Ñе_пе_Ña'.split('_'), 9907 longDateFormat: { 9908 LT: 'H:mm', 9909 LTS: 'H:mm:ss', 9910 L: 'D.MM.YYYY', 9911 LL: 'D MMMM YYYY', 9912 LLL: 'D MMMM YYYY H:mm', 9913 LLLL: 'dddd, D MMMM YYYY H:mm', 9914 }, 9915 calendar: { 9916 sameDay: '[ÐÐµÐ½ÐµÑ Ð²Ð¾] LT', 9917 nextDay: '[УÑÑе во] LT', 9918 nextWeek: '[Ðо] dddd [во] LT', 9919 lastDay: '[ÐÑеÑа во] LT', 9920 lastWeek: function () { 9921 switch (this.day()) { 9922 case 0: 9923 case 3: 9924 case 6: 9925 return '[ÐзминаÑаÑа] dddd [во] LT'; 9926 case 1: 9927 case 2: 9928 case 4: 9929 case 5: 9930 return '[ÐзминаÑиоÑ] dddd [во] LT'; 9931 } 9932 }, 9933 sameElse: 'L', 9934 }, 9935 relativeTime: { 9936 future: 'за %s', 9937 past: 'пÑед %s', 9938 s: 'Ð½ÐµÐºÐ¾Ð»ÐºÑ ÑекÑнди', 9939 ss: '%d ÑекÑнди', 9940 m: 'една минÑÑа', 9941 mm: '%d минÑÑи', 9942 h: 'еден ÑаÑ', 9943 hh: '%d ÑаÑа', 9944 d: 'еден ден', 9945 dd: '%d дена', 9946 M: 'еден меÑеÑ', 9947 MM: '%d меÑеÑи', 9948 y: 'една година', 9949 yy: '%d години', 9950 }, 9951 dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|Ñи|ви|Ñи|ми)/, 9952 ordinal: function (number) { 9953 var lastDigit = number % 10, 9954 last2Digits = number % 100; 9955 if (number === 0) { 9956 return number + '-ев'; 9957 } else if (last2Digits === 0) { 9958 return number + '-ен'; 9959 } else if (last2Digits > 10 && last2Digits < 20) { 9960 return number + '-Ñи'; 9961 } else if (lastDigit === 1) { 9962 return number + '-ви'; 9963 } else if (lastDigit === 2) { 9964 return number + '-Ñи'; 9965 } else if (lastDigit === 7 || lastDigit === 8) { 9966 return number + '-ми'; 9967 } else { 9968 return number + '-Ñи'; 9969 } 9970 }, 9971 week: { 9972 dow: 1, // Monday is the first day of the week. 9973 doy: 7, // The week that contains Jan 7th is the first week of the year. 9974 }, 9975 }); 9976 9977 return mk; 9978 9979}))); 9980 9981 9982/***/ }), 9983
vendor: 4,414 bytes, lines 9984-10083
9984/***/ "../../node_modules/moment/locale/ml.js": 9985/*!*********************************************************************************************************************************!*\ 9986 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ml.js ***! 9987 \*********************************************************************************************************************************/ 9988/*! no static exports found */ 9989/***/ (function(module, exports, __webpack_require__) { 9990 9991//! moment.js locale configuration 9992//! locale : Malayalam [ml] 9993//! author : Floyd Pink : https://github.com/floydpink 9994 9995;(function (global, factory) { 9996 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 9997 undefined 9998}(this, (function (moment) { 'use strict'; 9999 10000 //! moment.js locale configuration 10001 10002 var ml = moment.defineLocale('ml', { 10003 months: 'à´à´¨àµà´µà´°à´¿_à´«àµà´¬àµà´°àµà´µà´°à´¿_മാർà´àµà´àµ_à´à´ªàµà´°à´¿àµ½_à´®àµà´¯àµ_à´àµàµº_à´àµà´²àµ_à´à´à´¸àµà´±àµà´±àµ_à´¸àµà´ªàµà´±àµà´±à´à´¬àµ¼_à´à´àµà´àµà´¬àµ¼_നവà´à´¬àµ¼_à´¡à´¿à´¸à´à´¬àµ¼'.split( 10004 '_' 10005 ), 10006 monthsShort: 'à´à´¨àµ._à´«àµà´¬àµà´°àµ._മാർ._à´à´ªàµà´°à´¿._à´®àµà´¯àµ_à´àµàµº_à´àµà´²àµ._à´à´._à´¸àµà´ªàµà´±àµà´±._à´à´àµà´àµ._നവà´._à´¡à´¿à´¸à´.'.split( 10007 '_' 10008 ), 10009 monthsParseExact: true, 10010 weekdays: 'à´à´¾à´¯à´±à´¾à´´àµà´_തിà´àµà´à´³à´¾à´´àµà´_à´àµà´µàµà´µà´¾à´´àµà´_à´¬àµà´§à´¨à´¾à´´àµà´_à´µàµà´¯à´¾à´´à´¾à´´àµà´_à´µàµà´³àµà´³à´¿à´¯à´¾à´´àµà´_ശനിയാഴàµà´'.split( 10011 '_' 10012 ), 10013 weekdaysShort: 'à´à´¾à´¯àµ¼_തിà´àµà´àµ¾_à´àµà´µàµà´µ_à´¬àµà´§àµ»_à´µàµà´¯à´¾à´´à´_à´µàµà´³àµà´³à´¿_ശനി'.split('_'), 10014 weekdaysMin: 'à´à´¾_തി_à´àµ_à´¬àµ_à´µàµà´¯à´¾_à´µàµ_à´¶'.split('_'), 10015 longDateFormat: { 10016 LT: 'A h:mm -à´¨àµ', 10017 LTS: 'A h:mm:ss -à´¨àµ', 10018 L: 'DD/MM/YYYY', 10019 LL: 'D MMMM YYYY', 10020 LLL: 'D MMMM YYYY, A h:mm -à´¨àµ', 10021 LLLL: 'dddd, D MMMM YYYY, A h:mm -à´¨àµ', 10022 }, 10023 calendar: { 10024 sameDay: '[à´à´¨àµà´¨àµ] LT', 10025 nextDay: '[നാളàµ] LT', 10026 nextWeek: 'dddd, LT', 10027 lastDay: '[à´à´¨àµà´¨à´²àµ] LT', 10028 lastWeek: '[à´à´´à´¿à´àµà´] dddd, LT', 10029 sameElse: 'L', 10030 }, 10031 relativeTime: { 10032 future: '%s à´à´´à´¿à´àµà´àµ', 10033 past: '%s à´®àµàµ»à´ªàµ', 10034 s: 'ഠൽപ നിമിഷà´àµà´àµ¾', 10035 ss: '%d à´¸àµà´àµà´àµ»à´¡àµ', 10036 m: 'à´à´°àµ മിനിറàµà´±àµ', 10037 mm: '%d മിനിറàµà´±àµ', 10038 h: 'à´à´°àµ മണിà´àµà´àµàµ¼', 10039 hh: '%d മണിà´àµà´àµàµ¼', 10040 d: 'à´à´°àµ ദിവസà´', 10041 dd: '%d ദിവസà´', 10042 M: 'à´à´°àµ മാസà´', 10043 MM: '%d മാസà´', 10044 y: 'à´à´°àµ വർഷà´', 10045 yy: '%d വർഷà´', 10046 }, 10047 meridiemParse: /രാതàµà´°à´¿|രാവിലàµ|à´à´àµà´ à´à´´à´¿à´àµà´àµ|à´µàµà´àµà´¨àµà´¨àµà´°à´|രാതàµà´°à´¿/i, 10048 meridiemHour: function (hour, meridiem) { 10049 if (hour === 12) { 10050 hour = 0; 10051 } 10052 if ( 10053 (meridiem === 'രാതàµà´°à´¿' && hour >= 4) || 10054 meridiem === 'à´à´àµà´ à´à´´à´¿à´àµà´àµ' || 10055 meridiem === 'à´µàµà´àµà´¨àµà´¨àµà´°à´' 10056 ) { 10057 return hour + 12; 10058 } else { 10059 return hour; 10060 } 10061 }, 10062 meridiem: function (hour, minute, isLower) { 10063 if (hour < 4) { 10064 return 'രാതàµà´°à´¿'; 10065 } else if (hour < 12) { 10066 return 'രാവിലàµ'; 10067 } else if (hour < 17) { 10068 return 'à´à´àµà´ à´à´´à´¿à´àµà´àµ'; 10069 } else if (hour < 20) { 10070 return 'à´µàµà´àµà´¨àµà´¨àµà´°à´'; 10071 } else { 10072 return 'രാതàµà´°à´¿'; 10073 } 10074 }, 10075 }); 10076 10077 return ml; 10078 10079}))); 10080 10081 10082/***/ }), 10083
vendor: 4,648 bytes, lines 10084-10202
10084/***/ "../../node_modules/moment/locale/mn.js": 10085/*!*********************************************************************************************************************************!*\ 10086 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/mn.js ***! 10087 \*********************************************************************************************************************************/ 10088/*! no static exports found */ 10089/***/ (function(module, exports, __webpack_require__) { 10090 10091//! moment.js locale configuration 10092//! locale : Mongolian [mn] 10093//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7 10094 10095;(function (global, factory) { 10096 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 10097 undefined 10098}(this, (function (moment) { 'use strict'; 10099 10100 //! moment.js locale configuration 10101 10102 function translate(number, withoutSuffix, key, isFuture) { 10103 switch (key) { 10104 case 's': 10105 return withoutSuffix ? 'Ñ ÑÐ´Ñ Ñн ÑекÑнд' : 'Ñ ÑÐ´Ñ Ñн ÑекÑндÑн'; 10106 case 'ss': 10107 return number + (withoutSuffix ? ' ÑекÑнд' : ' ÑекÑндÑн'); 10108 case 'm': 10109 case 'mm': 10110 return number + (withoutSuffix ? ' минÑÑ' : ' минÑÑÑн'); 10111 case 'h': 10112 case 'hh': 10113 return number + (withoutSuffix ? ' Ñаг' : ' Ñагийн'); 10114 case 'd': 10115 case 'dd': 10116 return number + (withoutSuffix ? ' өдөÑ' : ' өдÑийн'); 10117 case 'M': 10118 case 'MM': 10119 return number + (withoutSuffix ? ' ÑаÑ' : ' ÑаÑÑн'); 10120 case 'y': 10121 case 'yy': 10122 return number + (withoutSuffix ? ' жил' : ' жилийн'); 10123 default: 10124 return number; 10125 } 10126 } 10127 10128 var mn = moment.defineLocale('mn', { 10129 months: 'ÐÑгдүгÑÑÑ ÑаÑ_ХоÑÑдÑÐ³Ð°Ð°Ñ ÑаÑ_ÐÑÑавдÑÐ³Ð°Ð°Ñ ÑаÑ_ÐÓ©ÑөвдүгÑÑÑ ÑаÑ_ТавдÑÐ³Ð°Ð°Ñ ÑаÑ_ÐÑÑгадÑÐ³Ð°Ð°Ñ ÑаÑ_ÐолдÑÐ³Ð°Ð°Ñ ÑаÑ_ÐаймдÑÐ³Ð°Ð°Ñ ÑаÑ_ÐÑдүгÑÑÑ ÑаÑ_ÐÑавдÑÐ³Ð°Ð°Ñ ÑаÑ_ÐÑван нÑгдүгÑÑÑ ÑаÑ_ÐÑван Ñ Ð¾ÑÑдÑÐ³Ð°Ð°Ñ ÑаÑ'.split( 10130 '_' 10131 ), 10132 monthsShort: '1 ÑаÑ_2 ÑаÑ_3 ÑаÑ_4 ÑаÑ_5 ÑаÑ_6 ÑаÑ_7 ÑаÑ_8 ÑаÑ_9 ÑаÑ_10 ÑаÑ_11 ÑаÑ_12 ÑаÑ'.split( 10133 '_' 10134 ), 10135 monthsParseExact: true, 10136 weekdays: 'ÐÑм_Ðаваа_ÐÑгмаÑ_ÐÑ Ð°Ð³Ð²Ð°_ÐÒ¯ÑÑв_ÐааÑан_ÐÑмба'.split('_'), 10137 weekdaysShort: 'ÐÑм_Ðав_ÐÑг_ÐÑ Ð°_ÐÒ¯Ñ_Ðаа_ÐÑм'.split('_'), 10138 weekdaysMin: 'ÐÑ_Ðа_ÐÑ_ÐÑ _ÐÒ¯_Ðа_ÐÑ'.split('_'), 10139 weekdaysParseExact: true, 10140 longDateFormat: { 10141 LT: 'HH:mm', 10142 LTS: 'HH:mm:ss', 10143 L: 'YYYY-MM-DD', 10144 LL: 'YYYY Ð¾Ð½Ñ MMMMÑн D', 10145 LLL: 'YYYY Ð¾Ð½Ñ MMMMÑн D HH:mm', 10146 LLLL: 'dddd, YYYY Ð¾Ð½Ñ MMMMÑн D HH:mm', 10147 }, 10148 meridiemParse: /Ò®Ó¨|ҮХ/i, 10149 isPM: function (input) { 10150 return input === 'ҮХ'; 10151 }, 10152 meridiem: function (hour, minute, isLower) { 10153 if (hour < 12) { 10154 return 'Ò®Ó¨'; 10155 } else { 10156 return 'ҮХ'; 10157 } 10158 }, 10159 calendar: { 10160 sameDay: '[ӨнөөдөÑ] LT', 10161 nextDay: '[ÐаÑгааÑ] LT', 10162 nextWeek: '[ÐÑÑÑ ] dddd LT', 10163 lastDay: '[Ó¨ÑигдөÑ] LT', 10164 lastWeek: '[ӨнгөÑÑөн] dddd LT', 10165 sameElse: 'L', 10166 }, 10167 relativeTime: { 10168 future: '%s даÑаа', 10169 past: '%s өмнө', 10170 s: translate, 10171 ss: translate, 10172 m: translate, 10173 mm: translate, 10174 h: translate, 10175 hh: translate, 10176 d: translate, 10177 dd: translate, 10178 M: translate, 10179 MM: translate, 10180 y: translate, 10181 yy: translate, 10182 }, 10183 dayOfMonthOrdinalParse: /\d{1,2} өдөÑ/, 10184 ordinal: function (number, period) { 10185 switch (period) { 10186 case 'd': 10187 case 'D': 10188 case 'DDD': 10189 return number + ' өдөÑ'; 10190 default: 10191 return number; 10192 } 10193 }, 10194 }); 10195 10196 return mn; 10197 10198}))); 10199 10200 10201/***/ }), 10202
vendor: 8,335 bytes, lines 10203-10424
10203/***/ "../../node_modules/moment/locale/mr.js": 10204/*!*********************************************************************************************************************************!*\ 10205 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/mr.js ***! 10206 \*********************************************************************************************************************************/ 10207/*! no static exports found */ 10208/***/ (function(module, exports, __webpack_require__) { 10209 10210//! moment.js locale configuration 10211//! locale : Marathi [mr] 10212//! author : Harshad Kale : https://github.com/kalehv 10213//! author : Vivek Athalye : https://github.com/vnathalye 10214 10215;(function (global, factory) { 10216 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 10217 undefined 10218}(this, (function (moment) { 'use strict'; 10219 10220 //! moment.js locale configuration 10221 10222 var symbolMap = { 10223 '1': '१', 10224 '2': '२', 10225 '3': '३', 10226 '4': '४', 10227 '5': '५', 10228 '6': '६', 10229 '7': 'à¥', 10230 '8': '८', 10231 '9': '९', 10232 '0': '०', 10233 }, 10234 numberMap = { 10235 '१': '1', 10236 '२': '2', 10237 '३': '3', 10238 '४': '4', 10239 '५': '5', 10240 '६': '6', 10241 'à¥': '7', 10242 '८': '8', 10243 '९': '9', 10244 '०': '0', 10245 }; 10246 10247 function relativeTimeMr(number, withoutSuffix, string, isFuture) { 10248 var output = ''; 10249 if (withoutSuffix) { 10250 switch (string) { 10251 case 's': 10252 output = 'à¤à¤¾à¤¹à¥ सà¥à¤à¤à¤¦'; 10253 break; 10254 case 'ss': 10255 output = '%d सà¥à¤à¤à¤¦'; 10256 break; 10257 case 'm': 10258 output = 'à¤à¤ मिनिà¤'; 10259 break; 10260 case 'mm': 10261 output = '%d मिनिà¤à¥'; 10262 break; 10263 case 'h': 10264 output = 'à¤à¤ तास'; 10265 break; 10266 case 'hh': 10267 output = '%d तास'; 10268 break; 10269 case 'd': 10270 output = 'à¤à¤ दिवस'; 10271 break; 10272 case 'dd': 10273 output = '%d दिवस'; 10274 break; 10275 case 'M': 10276 output = 'à¤à¤ महिना'; 10277 break; 10278 case 'MM': 10279 output = '%d महिनà¥'; 10280 break; 10281 case 'y': 10282 output = 'à¤à¤ वरà¥à¤·'; 10283 break; 10284 case 'yy': 10285 output = '%d वरà¥à¤·à¥'; 10286 break; 10287 } 10288 } else { 10289 switch (string) { 10290 case 's': 10291 output = 'à¤à¤¾à¤¹à¥ सà¥à¤à¤à¤¦à¤¾à¤'; 10292 break; 10293 case 'ss': 10294 output = '%d सà¥à¤à¤à¤¦à¤¾à¤'; 10295 break; 10296 case 'm': 10297 output = 'à¤à¤à¤¾ मिनिà¤à¤¾'; 10298 break; 10299 case 'mm': 10300 output = '%d मिनिà¤à¤¾à¤'; 10301 break; 10302 case 'h': 10303 output = 'à¤à¤à¤¾ तासा'; 10304 break; 10305 case 'hh': 10306 output = '%d तासाà¤'; 10307 break; 10308 case 'd': 10309 output = 'à¤à¤à¤¾ दिवसा'; 10310 break; 10311 case 'dd': 10312 output = '%d दिवसाà¤'; 10313 break; 10314 case 'M': 10315 output = 'à¤à¤à¤¾ महिनà¥à¤¯à¤¾'; 10316 break; 10317 case 'MM': 10318 output = '%d महिनà¥à¤¯à¤¾à¤'; 10319 break; 10320 case 'y': 10321 output = 'à¤à¤à¤¾ वरà¥à¤·à¤¾'; 10322 break; 10323 case 'yy': 10324 output = '%d वरà¥à¤·à¤¾à¤'; 10325 break; 10326 } 10327 } 10328 return output.replace(/%d/i, number); 10329 } 10330 10331 var mr = moment.defineLocale('mr', { 10332 months: 'à¤à¤¾à¤¨à¥à¤µà¤¾à¤°à¥_फà¥à¤¬à¥à¤°à¥à¤µà¤¾à¤°à¥_मारà¥à¤_à¤à¤ªà¥à¤°à¤¿à¤²_मà¥_à¤à¥à¤¨_à¤à¥à¤²à¥_à¤à¤à¤¸à¥à¤_सपà¥à¤à¥à¤à¤¬à¤°_à¤à¤à¥à¤à¥à¤¬à¤°_नà¥à¤µà¥à¤¹à¥à¤à¤¬à¤°_डिसà¥à¤à¤¬à¤°'.split( 10333 '_' 10334 ), 10335 monthsShort: 'à¤à¤¾à¤¨à¥._फà¥à¤¬à¥à¤°à¥._मारà¥à¤._à¤à¤ªà¥à¤°à¤¿._मà¥._à¤à¥à¤¨._à¤à¥à¤²à¥._à¤à¤._सपà¥à¤à¥à¤._à¤à¤à¥à¤à¥._नà¥à¤µà¥à¤¹à¥à¤._डिसà¥à¤.'.split( 10336 '_' 10337 ), 10338 monthsParseExact: true, 10339 weekdays: 'रविवार_सà¥à¤®à¤µà¤¾à¤°_मà¤à¤à¤³à¤µà¤¾à¤°_बà¥à¤§à¤µà¤¾à¤°_à¤à¥à¤°à¥à¤µà¤¾à¤°_शà¥à¤à¥à¤°à¤µà¤¾à¤°_शनिवार'.split('_'), 10340 weekdaysShort: 'रवि_सà¥à¤®_मà¤à¤à¤³_बà¥à¤§_à¤à¥à¤°à¥_शà¥à¤à¥à¤°_शनि'.split('_'), 10341 weekdaysMin: 'र_सà¥_मà¤_बà¥_à¤à¥_शà¥_श'.split('_'), 10342 longDateFormat: { 10343 LT: 'A h:mm वाà¤à¤¤à¤¾', 10344 LTS: 'A h:mm:ss वाà¤à¤¤à¤¾', 10345 L: 'DD/MM/YYYY', 10346 LL: 'D MMMM YYYY', 10347 LLL: 'D MMMM YYYY, A h:mm वाà¤à¤¤à¤¾', 10348 LLLL: 'dddd, D MMMM YYYY, A h:mm वाà¤à¤¤à¤¾', 10349 }, 10350 calendar: { 10351 sameDay: '[à¤à¤] LT', 10352 nextDay: '[à¤à¤¦à¥à¤¯à¤¾] LT', 10353 nextWeek: 'dddd, LT', 10354 lastDay: '[à¤à¤¾à¤²] LT', 10355 lastWeek: '[माà¤à¥à¤²] dddd, LT', 10356 sameElse: 'L', 10357 }, 10358 relativeTime: { 10359 future: '%sमधà¥à¤¯à¥', 10360 past: '%sपà¥à¤°à¥à¤µà¥', 10361 s: relativeTimeMr, 10362 ss: relativeTimeMr, 10363 m: relativeTimeMr, 10364 mm: relativeTimeMr, 10365 h: relativeTimeMr, 10366 hh: relativeTimeMr, 10367 d: relativeTimeMr, 10368 dd: relativeTimeMr, 10369 M: relativeTimeMr, 10370 MM: relativeTimeMr, 10371 y: relativeTimeMr, 10372 yy: relativeTimeMr, 10373 }, 10374 preparse: function (string) { 10375 return string.replace(/[१२३४५६à¥à¥®à¥¯à¥¦]/g, function (match) { 10376 return numberMap[match]; 10377 }); 10378 }, 10379 postformat: function (string) { 10380 return string.replace(/\d/g, function (match) { 10381 return symbolMap[match]; 10382 }); 10383 }, 10384 meridiemParse: /पहाà¤à¥|सà¤à¤¾à¤³à¥|दà¥à¤ªà¤¾à¤°à¥|सायà¤à¤à¤¾à¤³à¥|रातà¥à¤°à¥/, 10385 meridiemHour: function (hour, meridiem) { 10386 if (hour === 12) { 10387 hour = 0; 10388 } 10389 if (meridiem === 'पहाà¤à¥' || meridiem === 'सà¤à¤¾à¤³à¥') { 10390 return hour; 10391 } else if ( 10392 meridiem === 'दà¥à¤ªà¤¾à¤°à¥' || 10393 meridiem === 'सायà¤à¤à¤¾à¤³à¥' || 10394 meridiem === 'रातà¥à¤°à¥' 10395 ) { 10396 return hour >= 12 ? hour : hour + 12; 10397 } 10398 }, 10399 meridiem: function (hour, minute, isLower) { 10400 if (hour >= 0 && hour < 6) { 10401 return 'पहाà¤à¥'; 10402 } else if (hour < 12) { 10403 return 'सà¤à¤¾à¤³à¥'; 10404 } else if (hour < 17) { 10405 return 'दà¥à¤ªà¤¾à¤°à¥'; 10406 } else if (hour < 20) { 10407 return 'सायà¤à¤à¤¾à¤³à¥'; 10408 } else { 10409 return 'रातà¥à¤°à¥'; 10410 } 10411 }, 10412 week: { 10413 dow: 0, // Sunday is the first day of the week. 10414 doy: 6, // The week that contains Jan 6th is the first week of the year. 10415 }, 10416 }); 10417 10418 return mr; 10419 10420}))); 10421 10422 10423/***/ }), 10424
vendor: 3,481 bytes, lines 10425-10520
10425/***/ "../../node_modules/moment/locale/ms-my.js": 10426/*!************************************************************************************************************************************!*\ 10427 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ms-my.js ***! 10428 \************************************************************************************************************************************/ 10429/*! no static exports found */ 10430/***/ (function(module, exports, __webpack_require__) { 10431 10432//! moment.js locale configuration 10433//! locale : Malay [ms-my] 10434//! note : DEPRECATED, the correct one is [ms] 10435//! author : Weldan Jamili : https://github.com/weldan 10436 10437;(function (global, factory) { 10438 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 10439 undefined 10440}(this, (function (moment) { 'use strict'; 10441 10442 //! moment.js locale configuration 10443 10444 var msMy = moment.defineLocale('ms-my', { 10445 months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split( 10446 '_' 10447 ), 10448 monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), 10449 weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), 10450 weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), 10451 weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), 10452 longDateFormat: { 10453 LT: 'HH.mm', 10454 LTS: 'HH.mm.ss', 10455 L: 'DD/MM/YYYY', 10456 LL: 'D MMMM YYYY', 10457 LLL: 'D MMMM YYYY [pukul] HH.mm', 10458 LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm', 10459 }, 10460 meridiemParse: /pagi|tengahari|petang|malam/, 10461 meridiemHour: function (hour, meridiem) { 10462 if (hour === 12) { 10463 hour = 0; 10464 } 10465 if (meridiem === 'pagi') { 10466 return hour; 10467 } else if (meridiem === 'tengahari') { 10468 return hour >= 11 ? hour : hour + 12; 10469 } else if (meridiem === 'petang' || meridiem === 'malam') { 10470 return hour + 12; 10471 } 10472 }, 10473 meridiem: function (hours, minutes, isLower) { 10474 if (hours < 11) { 10475 return 'pagi'; 10476 } else if (hours < 15) { 10477 return 'tengahari'; 10478 } else if (hours < 19) { 10479 return 'petang'; 10480 } else { 10481 return 'malam'; 10482 } 10483 }, 10484 calendar: { 10485 sameDay: '[Hari ini pukul] LT', 10486 nextDay: '[Esok pukul] LT', 10487 nextWeek: 'dddd [pukul] LT', 10488 lastDay: '[Kelmarin pukul] LT', 10489 lastWeek: 'dddd [lepas pukul] LT', 10490 sameElse: 'L', 10491 }, 10492 relativeTime: { 10493 future: 'dalam %s', 10494 past: '%s yang lepas', 10495 s: 'beberapa saat', 10496 ss: '%d saat', 10497 m: 'seminit', 10498 mm: '%d minit', 10499 h: 'sejam', 10500 hh: '%d jam', 10501 d: 'sehari', 10502 dd: '%d hari', 10503 M: 'sebulan', 10504 MM: '%d bulan', 10505 y: 'setahun', 10506 yy: '%d tahun', 10507 }, 10508 week: { 10509 dow: 1, // Monday is the first day of the week. 10510 doy: 7, // The week that contains Jan 7th is the first week of the year. 10511 }, 10512 }); 10513 10514 return msMy; 10515 10516}))); 10517 10518 10519/***/ }), 10520
vendor: 3,411 bytes, lines 10521-10615
10521/***/ "../../node_modules/moment/locale/ms.js": 10522/*!*********************************************************************************************************************************!*\ 10523 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ms.js ***! 10524 \*********************************************************************************************************************************/ 10525/*! no static exports found */ 10526/***/ (function(module, exports, __webpack_require__) { 10527 10528//! moment.js locale configuration 10529//! locale : Malay [ms] 10530//! author : Weldan Jamili : https://github.com/weldan 10531 10532;(function (global, factory) { 10533 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 10534 undefined 10535}(this, (function (moment) { 'use strict'; 10536 10537 //! moment.js locale configuration 10538 10539 var ms = moment.defineLocale('ms', { 10540 months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split( 10541 '_' 10542 ), 10543 monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'), 10544 weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'), 10545 weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'), 10546 weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'), 10547 longDateFormat: { 10548 LT: 'HH.mm', 10549 LTS: 'HH.mm.ss', 10550 L: 'DD/MM/YYYY', 10551 LL: 'D MMMM YYYY', 10552 LLL: 'D MMMM YYYY [pukul] HH.mm', 10553 LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm', 10554 }, 10555 meridiemParse: /pagi|tengahari|petang|malam/, 10556 meridiemHour: function (hour, meridiem) { 10557 if (hour === 12) { 10558 hour = 0; 10559 } 10560 if (meridiem === 'pagi') { 10561 return hour; 10562 } else if (meridiem === 'tengahari') { 10563 return hour >= 11 ? hour : hour + 12; 10564 } else if (meridiem === 'petang' || meridiem === 'malam') { 10565 return hour + 12; 10566 } 10567 }, 10568 meridiem: function (hours, minutes, isLower) { 10569 if (hours < 11) { 10570 return 'pagi'; 10571 } else if (hours < 15) { 10572 return 'tengahari'; 10573 } else if (hours < 19) { 10574 return 'petang'; 10575 } else { 10576 return 'malam'; 10577 } 10578 }, 10579 calendar: { 10580 sameDay: '[Hari ini pukul] LT', 10581 nextDay: '[Esok pukul] LT', 10582 nextWeek: 'dddd [pukul] LT', 10583 lastDay: '[Kelmarin pukul] LT', 10584 lastWeek: 'dddd [lepas pukul] LT', 10585 sameElse: 'L', 10586 }, 10587 relativeTime: { 10588 future: 'dalam %s', 10589 past: '%s yang lepas', 10590 s: 'beberapa saat', 10591 ss: '%d saat', 10592 m: 'seminit', 10593 mm: '%d minit', 10594 h: 'sejam', 10595 hh: '%d jam', 10596 d: 'sehari', 10597 dd: '%d hari', 10598 M: 'sebulan', 10599 MM: '%d bulan', 10600 y: 'setahun', 10601 yy: '%d tahun', 10602 }, 10603 week: { 10604 dow: 1, // Monday is the first day of the week. 10605 doy: 7, // The week that contains Jan 7th is the first week of the year. 10606 }, 10607 }); 10608 10609 return ms; 10610 10611}))); 10612 10613 10614/***/ }), 10615
vendor: 2,702 bytes, lines 10616-10690
10616/***/ "../../node_modules/moment/locale/mt.js": 10617/*!*********************************************************************************************************************************!*\ 10618 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/mt.js ***! 10619 \*********************************************************************************************************************************/ 10620/*! no static exports found */ 10621/***/ (function(module, exports, __webpack_require__) { 10622 10623//! moment.js locale configuration 10624//! locale : Maltese (Malta) [mt] 10625//! author : Alessandro Maruccia : https://github.com/alesma 10626 10627;(function (global, factory) { 10628 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 10629 undefined 10630}(this, (function (moment) { 'use strict'; 10631 10632 //! moment.js locale configuration 10633 10634 var mt = moment.defineLocale('mt', { 10635 months: 'Jannar_Frar_Marzu_April_Mejju_Ä unju_Lulju_Awwissu_Settembru_Ottubru_Novembru_DiÄembru'.split( 10636 '_' 10637 ), 10638 monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ä un_Lul_Aww_Set_Ott_Nov_DiÄ'.split('_'), 10639 weekdays: 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ä imgħa_Is-Sibt'.split( 10640 '_' 10641 ), 10642 weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ä im_Sib'.split('_'), 10643 weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ä i_Si'.split('_'), 10644 longDateFormat: { 10645 LT: 'HH:mm', 10646 LTS: 'HH:mm:ss', 10647 L: 'DD/MM/YYYY', 10648 LL: 'D MMMM YYYY', 10649 LLL: 'D MMMM YYYY HH:mm', 10650 LLLL: 'dddd, D MMMM YYYY HH:mm', 10651 }, 10652 calendar: { 10653 sameDay: '[Illum fil-]LT', 10654 nextDay: '[Għada fil-]LT', 10655 nextWeek: 'dddd [fil-]LT', 10656 lastDay: '[Il-bieraħ fil-]LT', 10657 lastWeek: 'dddd [li għadda] [fil-]LT', 10658 sameElse: 'L', 10659 }, 10660 relativeTime: { 10661 future: 'fâ %s', 10662 past: '%s ilu', 10663 s: 'ftit sekondi', 10664 ss: '%d sekondi', 10665 m: 'minuta', 10666 mm: '%d minuti', 10667 h: 'siegħa', 10668 hh: '%d siegħat', 10669 d: 'Ä¡urnata', 10670 dd: '%d Ä¡ranet', 10671 M: 'xahar', 10672 MM: '%d xhur', 10673 y: 'sena', 10674 yy: '%d sni', 10675 }, 10676 dayOfMonthOrdinalParse: /\d{1,2}º/, 10677 ordinal: '%dº', 10678 week: { 10679 dow: 1, // Monday is the first day of the week. 10680 doy: 4, // The week that contains Jan 4th is the first week of the year. 10681 }, 10682 }); 10683 10684 return mt; 10685 10686}))); 10687 10688 10689/***/ }), 10690
vendor: 4,312 bytes, lines 10691-10801
10691/***/ "../../node_modules/moment/locale/my.js": 10692/*!*********************************************************************************************************************************!*\ 10693 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/my.js ***! 10694 \*********************************************************************************************************************************/ 10695/*! no static exports found */ 10696/***/ (function(module, exports, __webpack_require__) { 10697 10698//! moment.js locale configuration 10699//! locale : Burmese [my] 10700//! author : Squar team, mysquar.com 10701//! author : David Rossellat : https://github.com/gholadr 10702//! author : Tin Aung Lin : https://github.com/thanyawzinmin 10703 10704;(function (global, factory) { 10705 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 10706 undefined 10707}(this, (function (moment) { 'use strict'; 10708 10709 //! moment.js locale configuration 10710 10711 var symbolMap = { 10712 '1': 'á', 10713 '2': 'á', 10714 '3': 'á', 10715 '4': 'á', 10716 '5': 'á ', 10717 '6': 'á', 10718 '7': 'á', 10719 '8': 'á', 10720 '9': 'á', 10721 '0': 'á', 10722 }, 10723 numberMap = { 10724 'á': '1', 10725 'á': '2', 10726 'á': '3', 10727 'á': '4', 10728 'á ': '5', 10729 'á': '6', 10730 'á': '7', 10731 'á': '8', 10732 'á': '9', 10733 'á': '0', 10734 }; 10735 10736 var my = moment.defineLocale('my', { 10737 months: 'áááºááá«áá®_áá±áá±á¬áºáá«áá®_áááº_á§áá¼á®_áá±_áá½ááº_áá°ááá¯ááº_áá¼áá¯ááº_á ááºáááºáá¬_á¡á±á¬ááºááá¯áá¬_ááá¯áááºáá¬_áá®áááºáá¬'.split( 10738 '_' 10739 ), 10740 monthsShort: 'áááº_áá±_áááº_áá¼á®_áá±_áá½ááº_ááá¯ááº_áá¼_á ááº_á¡á±á¬ááº_ááá¯_áá®'.split('_'), 10741 weekdays: 'ááááºá¹ááá½á±_ááááºá¹áá¬_á¡ááºá¹áá«_áá¯áá¹ááá°á¸_áá¼á¬áááá±á¸_áá±á¬áá¼á¬_á áá±'.split( 10742 '_' 10743 ), 10744 weekdaysShort: 'áá½á±_áá¬_áá«_áá°á¸_áá¼á¬_áá±á¬_áá±'.split('_'), 10745 weekdaysMin: 'áá½á±_áá¬_áá«_áá°á¸_áá¼á¬_áá±á¬_áá±'.split('_'), 10746 10747 longDateFormat: { 10748 LT: 'HH:mm', 10749 LTS: 'HH:mm:ss', 10750 L: 'DD/MM/YYYY', 10751 LL: 'D MMMM YYYY', 10752 LLL: 'D MMMM YYYY HH:mm', 10753 LLLL: 'dddd D MMMM YYYY HH:mm', 10754 }, 10755 calendar: { 10756 sameDay: '[ááá±.] LT [áá¾á¬]', 10757 nextDay: '[ááááºáá¼ááº] LT [áá¾á¬]', 10758 nextWeek: 'dddd LT [áá¾á¬]', 10759 lastDay: '[ááá±.á] LT [áá¾á¬]', 10760 lastWeek: '[áá¼á®á¸áá²á·áá±á¬] dddd LT [áá¾á¬]', 10761 sameElse: 'L', 10762 }, 10763 relativeTime: { 10764 future: 'áá¬áááºá· %s áá¾á¬', 10765 past: 'áá½ááºáá²á·áá±á¬ %s á', 10766 s: 'á áá¹áááº.á¡áááºá¸áááº', 10767 ss: '%d á áá¹ááá·áº', 10768 m: 'áá áºáááá áº', 10769 mm: '%d áááá áº', 10770 h: 'áá áºáá¬áá®', 10771 hh: '%d áá¬áá®', 10772 d: 'áá áºáááº', 10773 dd: '%d áááº', 10774 M: 'áá áºá', 10775 MM: '%d á', 10776 y: 'áá áºáá¾á áº', 10777 yy: '%d áá¾á áº', 10778 }, 10779 preparse: function (string) { 10780 return string.replace(/[ááááá ááááá]/g, function (match) { 10781 return numberMap[match]; 10782 }); 10783 }, 10784 postformat: function (string) { 10785 return string.replace(/\d/g, function (match) { 10786 return symbolMap[match]; 10787 }); 10788 }, 10789 week: { 10790 dow: 1, // Monday is the first day of the week. 10791 doy: 4, // The week that contains Jan 4th is the first week of the year. 10792 }, 10793 }); 10794 10795 return my; 10796 10797}))); 10798 10799 10800/***/ }), 10801
vendor: 2,907 bytes, lines 10802-10880
10802/***/ "../../node_modules/moment/locale/nb.js": 10803/*!*********************************************************************************************************************************!*\ 10804 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/nb.js ***! 10805 \*********************************************************************************************************************************/ 10806/*! no static exports found */ 10807/***/ (function(module, exports, __webpack_require__) { 10808 10809//! moment.js locale configuration 10810//! locale : Norwegian Bokmål [nb] 10811//! authors : Espen Hovlandsdal : https://github.com/rexxars 10812//! Sigurd Gartmann : https://github.com/sigurdga 10813//! Stephen Ramthun : https://github.com/stephenramthun 10814 10815;(function (global, factory) { 10816 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 10817 undefined 10818}(this, (function (moment) { 'use strict'; 10819 10820 //! moment.js locale configuration 10821 10822 var nb = moment.defineLocale('nb', { 10823 months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split( 10824 '_' 10825 ), 10826 monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split( 10827 '_' 10828 ), 10829 monthsParseExact: true, 10830 weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'), 10831 weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'), 10832 weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'), 10833 weekdaysParseExact: true, 10834 longDateFormat: { 10835 LT: 'HH:mm', 10836 LTS: 'HH:mm:ss', 10837 L: 'DD.MM.YYYY', 10838 LL: 'D. MMMM YYYY', 10839 LLL: 'D. MMMM YYYY [kl.] HH:mm', 10840 LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm', 10841 }, 10842 calendar: { 10843 sameDay: '[i dag kl.] LT', 10844 nextDay: '[i morgen kl.] LT', 10845 nextWeek: 'dddd [kl.] LT', 10846 lastDay: '[i går kl.] LT', 10847 lastWeek: '[forrige] dddd [kl.] LT', 10848 sameElse: 'L', 10849 }, 10850 relativeTime: { 10851 future: 'om %s', 10852 past: '%s siden', 10853 s: 'noen sekunder', 10854 ss: '%d sekunder', 10855 m: 'ett minutt', 10856 mm: '%d minutter', 10857 h: 'en time', 10858 hh: '%d timer', 10859 d: 'en dag', 10860 dd: '%d dager', 10861 M: 'en måned', 10862 MM: '%d måneder', 10863 y: 'ett år', 10864 yy: '%d år', 10865 }, 10866 dayOfMonthOrdinalParse: /\d{1,2}\./, 10867 ordinal: '%d.', 10868 week: { 10869 dow: 1, // Monday is the first day of the week. 10870 doy: 4, // The week that contains Jan 4th is the first week of the year. 10871 }, 10872 }); 10873 10874 return nb; 10875 10876}))); 10877 10878 10879/***/ }), 10880
vendor: 5,390 bytes, lines 10881-11020
10881/***/ "../../node_modules/moment/locale/ne.js": 10882/*!*********************************************************************************************************************************!*\ 10883 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ne.js ***! 10884 \*********************************************************************************************************************************/ 10885/*! no static exports found */ 10886/***/ (function(module, exports, __webpack_require__) { 10887 10888//! moment.js locale configuration 10889//! locale : Nepalese [ne] 10890//! author : suvash : https://github.com/suvash 10891 10892;(function (global, factory) { 10893 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 10894 undefined 10895}(this, (function (moment) { 'use strict'; 10896 10897 //! moment.js locale configuration 10898 10899 var symbolMap = { 10900 '1': '१', 10901 '2': '२', 10902 '3': '३', 10903 '4': '४', 10904 '5': '५', 10905 '6': '६', 10906 '7': 'à¥', 10907 '8': '८', 10908 '9': '९', 10909 '0': '०', 10910 }, 10911 numberMap = { 10912 '१': '1', 10913 '२': '2', 10914 '३': '3', 10915 '४': '4', 10916 '५': '5', 10917 '६': '6', 10918 'à¥': '7', 10919 '८': '8', 10920 '९': '9', 10921 '०': '0', 10922 }; 10923 10924 var ne = moment.defineLocale('ne', { 10925 months: 'à¤à¤¨à¤µà¤°à¥_फà¥à¤¬à¥à¤°à¥à¤µà¤°à¥_मारà¥à¤_ठपà¥à¤°à¤¿à¤²_मà¤_à¤à¥à¤¨_à¤à¥à¤²à¤¾à¤_ठà¤à¤·à¥à¤_सà¥à¤ªà¥à¤à¥à¤®à¥à¤¬à¤°_ठà¤à¥à¤à¥à¤¬à¤°_नà¥à¤à¥à¤®à¥à¤¬à¤°_डिसà¥à¤®à¥à¤¬à¤°'.split( 10926 '_' 10927 ), 10928 monthsShort: 'à¤à¤¨._फà¥à¤¬à¥à¤°à¥._मारà¥à¤_ठपà¥à¤°à¤¿._मà¤_à¤à¥à¤¨_à¤à¥à¤²à¤¾à¤._ठà¤._सà¥à¤ªà¥à¤._ठà¤à¥à¤à¥._नà¥à¤à¥._डिसà¥.'.split( 10929 '_' 10930 ), 10931 monthsParseExact: true, 10932 weekdays: 'à¤à¤à¤¤à¤¬à¤¾à¤°_सà¥à¤®à¤¬à¤¾à¤°_मà¤à¥à¤à¤²à¤¬à¤¾à¤°_बà¥à¤§à¤¬à¤¾à¤°_बिहिबार_शà¥à¤à¥à¤°à¤¬à¤¾à¤°_शनिबार'.split( 10933 '_' 10934 ), 10935 weekdaysShort: 'à¤à¤à¤¤._सà¥à¤®._मà¤à¥à¤à¤²._बà¥à¤§._बिहि._शà¥à¤à¥à¤°._शनि.'.split('_'), 10936 weekdaysMin: 'à¤._सà¥._मà¤._बà¥._बि._शà¥._श.'.split('_'), 10937 weekdaysParseExact: true, 10938 longDateFormat: { 10939 LT: 'Aà¤à¥ h:mm बà¤à¥', 10940 LTS: 'Aà¤à¥ h:mm:ss बà¤à¥', 10941 L: 'DD/MM/YYYY', 10942 LL: 'D MMMM YYYY', 10943 LLL: 'D MMMM YYYY, Aà¤à¥ h:mm बà¤à¥', 10944 LLLL: 'dddd, D MMMM YYYY, Aà¤à¥ h:mm बà¤à¥', 10945 }, 10946 preparse: function (string) { 10947 return string.replace(/[१२३४५६à¥à¥®à¥¯à¥¦]/g, function (match) { 10948 return numberMap[match]; 10949 }); 10950 }, 10951 postformat: function (string) { 10952 return string.replace(/\d/g, function (match) { 10953 return symbolMap[match]; 10954 }); 10955 }, 10956 meridiemParse: /राति|बिहान|दिà¤à¤à¤¸à¥|साà¤à¤/, 10957 meridiemHour: function (hour, meridiem) { 10958 if (hour === 12) { 10959 hour = 0; 10960 } 10961 if (meridiem === 'राति') { 10962 return hour < 4 ? hour : hour + 12; 10963 } else if (meridiem === 'बिहान') { 10964 return hour; 10965 } else if (meridiem === 'दिà¤à¤à¤¸à¥') { 10966 return hour >= 10 ? hour : hour + 12; 10967 } else if (meridiem === 'साà¤à¤') { 10968 return hour + 12; 10969 } 10970 }, 10971 meridiem: function (hour, minute, isLower) { 10972 if (hour < 3) { 10973 return 'राति'; 10974 } else if (hour < 12) { 10975 return 'बिहान'; 10976 } else if (hour < 16) { 10977 return 'दिà¤à¤à¤¸à¥'; 10978 } else if (hour < 20) { 10979 return 'साà¤à¤'; 10980 } else { 10981 return 'राति'; 10982 } 10983 }, 10984 calendar: { 10985 sameDay: '[à¤à¤] LT', 10986 nextDay: '[à¤à¥à¤²à¤¿] LT', 10987 nextWeek: '[à¤à¤à¤à¤¦à¥] dddd[,] LT', 10988 lastDay: '[हिà¤à¥] LT', 10989 lastWeek: '[à¤à¤à¤à¥] dddd[,] LT', 10990 sameElse: 'L', 10991 }, 10992 relativeTime: { 10993 future: '%sमा', 10994 past: '%s ठà¤à¤¾à¤¡à¤¿', 10995 s: 'à¤à¥à¤¹à¥ à¤à¥à¤·à¤£', 10996 ss: '%d सà¥à¤à¥à¤£à¥à¤¡', 10997 m: 'à¤à¤ मिनà¥à¤', 10998 mm: '%d मिनà¥à¤', 10999 h: 'à¤à¤ à¤à¤£à¥à¤à¤¾', 11000 hh: '%d à¤à¤£à¥à¤à¤¾', 11001 d: 'à¤à¤ दिन', 11002 dd: '%d दिन', 11003 M: 'à¤à¤ महिना', 11004 MM: '%d महिना', 11005 y: 'à¤à¤ बरà¥à¤·', 11006 yy: '%d बरà¥à¤·', 11007 }, 11008 week: { 11009 dow: 0, // Sunday is the first day of the week. 11010 doy: 6, // The week that contains Jan 6th is the first week of the year. 11011 }, 11012 }); 11013 11014 return ne; 11015 11016}))); 11017 11018 11019/***/ }), 11020
vendor: 4,428 bytes, lines 11021-11142
11021/***/ "../../node_modules/moment/locale/nl-be.js": 11022/*!************************************************************************************************************************************!*\ 11023 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/nl-be.js ***! 11024 \************************************************************************************************************************************/ 11025/*! no static exports found */ 11026/***/ (function(module, exports, __webpack_require__) { 11027 11028//! moment.js locale configuration 11029//! locale : Dutch (Belgium) [nl-be] 11030//! author : Joris Röling : https://github.com/jorisroling 11031//! author : Jacob Middag : https://github.com/middagj 11032 11033;(function (global, factory) { 11034 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 11035 undefined 11036}(this, (function (moment) { 'use strict'; 11037 11038 //! moment.js locale configuration 11039 11040 var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split( 11041 '_' 11042 ), 11043 monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split( 11044 '_' 11045 ), 11046 monthsParse = [ 11047 /^jan/i, 11048 /^feb/i, 11049 /^maart|mrt.?$/i, 11050 /^apr/i, 11051 /^mei$/i, 11052 /^jun[i.]?$/i, 11053 /^jul[i.]?$/i, 11054 /^aug/i, 11055 /^sep/i, 11056 /^okt/i, 11057 /^nov/i, 11058 /^dec/i, 11059 ], 11060 monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i; 11061 11062 var nlBe = moment.defineLocale('nl-be', { 11063 months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split( 11064 '_' 11065 ), 11066 monthsShort: function (m, format) { 11067 if (!m) { 11068 return monthsShortWithDots; 11069 } else if (/-MMM-/.test(format)) { 11070 return monthsShortWithoutDots[m.month()]; 11071 } else { 11072 return monthsShortWithDots[m.month()]; 11073 } 11074 }, 11075 11076 monthsRegex: monthsRegex, 11077 monthsShortRegex: monthsRegex, 11078 monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i, 11079 monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i, 11080 11081 monthsParse: monthsParse, 11082 longMonthsParse: monthsParse, 11083 shortMonthsParse: monthsParse, 11084 11085 weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split( 11086 '_' 11087 ), 11088 weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'), 11089 weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'), 11090 weekdaysParseExact: true, 11091 longDateFormat: { 11092 LT: 'HH:mm', 11093 LTS: 'HH:mm:ss', 11094 L: 'DD/MM/YYYY', 11095 LL: 'D MMMM YYYY', 11096 LLL: 'D MMMM YYYY HH:mm', 11097 LLLL: 'dddd D MMMM YYYY HH:mm', 11098 }, 11099 calendar: { 11100 sameDay: '[vandaag om] LT', 11101 nextDay: '[morgen om] LT', 11102 nextWeek: 'dddd [om] LT', 11103 lastDay: '[gisteren om] LT', 11104 lastWeek: '[afgelopen] dddd [om] LT', 11105 sameElse: 'L', 11106 }, 11107 relativeTime: { 11108 future: 'over %s', 11109 past: '%s geleden', 11110 s: 'een paar seconden', 11111 ss: '%d seconden', 11112 m: 'één minuut', 11113 mm: '%d minuten', 11114 h: 'één uur', 11115 hh: '%d uur', 11116 d: 'één dag', 11117 dd: '%d dagen', 11118 M: 'één maand', 11119 MM: '%d maanden', 11120 y: 'één jaar', 11121 yy: '%d jaar', 11122 }, 11123 dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, 11124 ordinal: function (number) { 11125 return ( 11126 number + 11127 (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de') 11128 ); 11129 }, 11130 week: { 11131 dow: 1, // Monday is the first day of the week. 11132 doy: 4, // The week that contains Jan 4th is the first week of the year. 11133 }, 11134 }); 11135 11136 return nlBe; 11137 11138}))); 11139 11140 11141/***/ }), 11142
vendor: 4,396 bytes, lines 11143-11264
11143/***/ "../../node_modules/moment/locale/nl.js": 11144/*!*********************************************************************************************************************************!*\ 11145 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/nl.js ***! 11146 \*********************************************************************************************************************************/ 11147/*! no static exports found */ 11148/***/ (function(module, exports, __webpack_require__) { 11149 11150//! moment.js locale configuration 11151//! locale : Dutch [nl] 11152//! author : Joris Röling : https://github.com/jorisroling 11153//! author : Jacob Middag : https://github.com/middagj 11154 11155;(function (global, factory) { 11156 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 11157 undefined 11158}(this, (function (moment) { 'use strict'; 11159 11160 //! moment.js locale configuration 11161 11162 var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split( 11163 '_' 11164 ), 11165 monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split( 11166 '_' 11167 ), 11168 monthsParse = [ 11169 /^jan/i, 11170 /^feb/i, 11171 /^maart|mrt.?$/i, 11172 /^apr/i, 11173 /^mei$/i, 11174 /^jun[i.]?$/i, 11175 /^jul[i.]?$/i, 11176 /^aug/i, 11177 /^sep/i, 11178 /^okt/i, 11179 /^nov/i, 11180 /^dec/i, 11181 ], 11182 monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i; 11183 11184 var nl = moment.defineLocale('nl', { 11185 months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split( 11186 '_' 11187 ), 11188 monthsShort: function (m, format) { 11189 if (!m) { 11190 return monthsShortWithDots; 11191 } else if (/-MMM-/.test(format)) { 11192 return monthsShortWithoutDots[m.month()]; 11193 } else { 11194 return monthsShortWithDots[m.month()]; 11195 } 11196 }, 11197 11198 monthsRegex: monthsRegex, 11199 monthsShortRegex: monthsRegex, 11200 monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i, 11201 monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i, 11202 11203 monthsParse: monthsParse, 11204 longMonthsParse: monthsParse, 11205 shortMonthsParse: monthsParse, 11206 11207 weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split( 11208 '_' 11209 ), 11210 weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'), 11211 weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'), 11212 weekdaysParseExact: true, 11213 longDateFormat: { 11214 LT: 'HH:mm', 11215 LTS: 'HH:mm:ss', 11216 L: 'DD-MM-YYYY', 11217 LL: 'D MMMM YYYY', 11218 LLL: 'D MMMM YYYY HH:mm', 11219 LLLL: 'dddd D MMMM YYYY HH:mm', 11220 }, 11221 calendar: { 11222 sameDay: '[vandaag om] LT', 11223 nextDay: '[morgen om] LT', 11224 nextWeek: 'dddd [om] LT', 11225 lastDay: '[gisteren om] LT', 11226 lastWeek: '[afgelopen] dddd [om] LT', 11227 sameElse: 'L', 11228 }, 11229 relativeTime: { 11230 future: 'over %s', 11231 past: '%s geleden', 11232 s: 'een paar seconden', 11233 ss: '%d seconden', 11234 m: 'één minuut', 11235 mm: '%d minuten', 11236 h: 'één uur', 11237 hh: '%d uur', 11238 d: 'één dag', 11239 dd: '%d dagen', 11240 M: 'één maand', 11241 MM: '%d maanden', 11242 y: 'één jaar', 11243 yy: '%d jaar', 11244 }, 11245 dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/, 11246 ordinal: function (number) { 11247 return ( 11248 number + 11249 (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de') 11250 ); 11251 }, 11252 week: { 11253 dow: 1, // Monday is the first day of the week. 11254 doy: 4, // The week that contains Jan 4th is the first week of the year. 11255 }, 11256 }); 11257 11258 return nl; 11259 11260}))); 11261 11262 11263/***/ }), 11264
vendor: 2,833 bytes, lines 11265-11342
11265/***/ "../../node_modules/moment/locale/nn.js": 11266/*!*********************************************************************************************************************************!*\ 11267 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/nn.js ***! 11268 \*********************************************************************************************************************************/ 11269/*! no static exports found */ 11270/***/ (function(module, exports, __webpack_require__) { 11271 11272//! moment.js locale configuration 11273//! locale : Nynorsk [nn] 11274//! authors : https://github.com/mechuwind 11275//! Stephen Ramthun : https://github.com/stephenramthun 11276 11277;(function (global, factory) { 11278 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 11279 undefined 11280}(this, (function (moment) { 'use strict'; 11281 11282 //! moment.js locale configuration 11283 11284 var nn = moment.defineLocale('nn', { 11285 months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split( 11286 '_' 11287 ), 11288 monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split( 11289 '_' 11290 ), 11291 monthsParseExact: true, 11292 weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'), 11293 weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'), 11294 weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'), 11295 weekdaysParseExact: true, 11296 longDateFormat: { 11297 LT: 'HH:mm', 11298 LTS: 'HH:mm:ss', 11299 L: 'DD.MM.YYYY', 11300 LL: 'D. MMMM YYYY', 11301 LLL: 'D. MMMM YYYY [kl.] H:mm', 11302 LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm', 11303 }, 11304 calendar: { 11305 sameDay: '[I dag klokka] LT', 11306 nextDay: '[I morgon klokka] LT', 11307 nextWeek: 'dddd [klokka] LT', 11308 lastDay: '[I går klokka] LT', 11309 lastWeek: '[Føregåande] dddd [klokka] LT', 11310 sameElse: 'L', 11311 }, 11312 relativeTime: { 11313 future: 'om %s', 11314 past: '%s sidan', 11315 s: 'nokre sekund', 11316 ss: '%d sekund', 11317 m: 'eit minutt', 11318 mm: '%d minutt', 11319 h: 'ein time', 11320 hh: '%d timar', 11321 d: 'ein dag', 11322 dd: '%d dagar', 11323 M: 'ein månad', 11324 MM: '%d månader', 11325 y: 'eit år', 11326 yy: '%d år', 11327 }, 11328 dayOfMonthOrdinalParse: /\d{1,2}\./, 11329 ordinal: '%d.', 11330 week: { 11331 dow: 1, // Monday is the first day of the week. 11332 doy: 4, // The week that contains Jan 4th is the first week of the year. 11333 }, 11334 }); 11335 11336 return nn; 11337 11338}))); 11339 11340 11341/***/ }), 11342
vendor: 3,632 bytes, lines 11343-11445
11343/***/ "../../node_modules/moment/locale/oc-lnc.js": 11344/*!*************************************************************************************************************************************!*\ 11345 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/oc-lnc.js ***! 11346 \*************************************************************************************************************************************/ 11347/*! no static exports found */ 11348/***/ (function(module, exports, __webpack_require__) { 11349 11350//! moment.js locale configuration 11351//! locale : Occitan, lengadocian dialecte [oc-lnc] 11352//! author : Quentin PAGÃS : https://github.com/Quenty31 11353 11354;(function (global, factory) { 11355 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 11356 undefined 11357}(this, (function (moment) { 'use strict'; 11358 11359 //! moment.js locale configuration 11360 11361 var ocLnc = moment.defineLocale('oc-lnc', { 11362 months: { 11363 standalone: 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split( 11364 '_' 11365 ), 11366 format: "de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre".split( 11367 '_' 11368 ), 11369 isFormat: /D[oD]?(\s)+MMMM/, 11370 }, 11371 monthsShort: 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split( 11372 '_' 11373 ), 11374 monthsParseExact: true, 11375 weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split( 11376 '_' 11377 ), 11378 weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'), 11379 weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'), 11380 weekdaysParseExact: true, 11381 longDateFormat: { 11382 LT: 'H:mm', 11383 LTS: 'H:mm:ss', 11384 L: 'DD/MM/YYYY', 11385 LL: 'D MMMM [de] YYYY', 11386 ll: 'D MMM YYYY', 11387 LLL: 'D MMMM [de] YYYY [a] H:mm', 11388 lll: 'D MMM YYYY, H:mm', 11389 LLLL: 'dddd D MMMM [de] YYYY [a] H:mm', 11390 llll: 'ddd D MMM YYYY, H:mm', 11391 }, 11392 calendar: { 11393 sameDay: '[uèi a] LT', 11394 nextDay: '[deman a] LT', 11395 nextWeek: 'dddd [a] LT', 11396 lastDay: '[ièr a] LT', 11397 lastWeek: 'dddd [passat a] LT', 11398 sameElse: 'L', 11399 }, 11400 relativeTime: { 11401 future: "d'aquà %s", 11402 past: 'fa %s', 11403 s: 'unas segondas', 11404 ss: '%d segondas', 11405 m: 'una minuta', 11406 mm: '%d minutas', 11407 h: 'una ora', 11408 hh: '%d oras', 11409 d: 'un jorn', 11410 dd: '%d jorns', 11411 M: 'un mes', 11412 MM: '%d meses', 11413 y: 'un an', 11414 yy: '%d ans', 11415 }, 11416 dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/, 11417 ordinal: function (number, period) { 11418 var output = 11419 number === 1 11420 ? 'r' 11421 : number === 2 11422 ? 'n' 11423 : number === 3 11424 ? 'r' 11425 : number === 4 11426 ? 't' 11427 : 'è'; 11428 if (period === 'w' || period === 'W') { 11429 output = 'a'; 11430 } 11431 return number + output; 11432 }, 11433 week: { 11434 dow: 1, // Monday is the first day of the week. 11435 doy: 4, 11436 }, 11437 }); 11438 11439 return ocLnc; 11440 11441}))); 11442 11443 11444/***/ }), 11445
vendor: 5,578 bytes, lines 11446-11586
11446/***/ "../../node_modules/moment/locale/pa-in.js": 11447/*!************************************************************************************************************************************!*\ 11448 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/pa-in.js ***! 11449 \************************************************************************************************************************************/ 11450/*! no static exports found */ 11451/***/ (function(module, exports, __webpack_require__) { 11452 11453//! moment.js locale configuration 11454//! locale : Punjabi (India) [pa-in] 11455//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit 11456 11457;(function (global, factory) { 11458 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 11459 undefined 11460}(this, (function (moment) { 'use strict'; 11461 11462 //! moment.js locale configuration 11463 11464 var symbolMap = { 11465 '1': 'à©§', 11466 '2': '੨', 11467 '3': 'à©©', 11468 '4': '੪', 11469 '5': 'à©«', 11470 '6': '੬', 11471 '7': 'à©', 11472 '8': 'à©®', 11473 '9': '੯', 11474 '0': '੦', 11475 }, 11476 numberMap = { 11477 'à©§': '1', 11478 '੨': '2', 11479 'à©©': '3', 11480 '੪': '4', 11481 'à©«': '5', 11482 '੬': '6', 11483 'à©': '7', 11484 'à©®': '8', 11485 '੯': '9', 11486 '੦': '0', 11487 }; 11488 11489 var paIn = moment.defineLocale('pa-in', { 11490 // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi. 11491 months: 'à¨à¨¨à¨µà¨°à©_ਫ਼ਰਵਰà©_ਮਾਰà¨_ਠਪà©à¨°à©à¨²_ਮà¨_à¨à©à¨¨_à¨à©à¨²à¨¾à¨_ਠà¨à¨¸à¨¤_ਸਤੰਬਰ_ਠà¨à¨¤à©à¨¬à¨°_ਨਵੰਬਰ_ਦਸੰਬਰ'.split( 11492 '_' 11493 ), 11494 monthsShort: 'à¨à¨¨à¨µà¨°à©_ਫ਼ਰਵਰà©_ਮਾਰà¨_ਠਪà©à¨°à©à¨²_ਮà¨_à¨à©à¨¨_à¨à©à¨²à¨¾à¨_ਠà¨à¨¸à¨¤_ਸਤੰਬਰ_ਠà¨à¨¤à©à¨¬à¨°_ਨਵੰਬਰ_ਦਸੰਬਰ'.split( 11495 '_' 11496 ), 11497 weekdays: 'à¨à¨¤à¨µà¨¾à¨°_ਸà©à¨®à¨µà¨¾à¨°_ਮੰà¨à¨²à¨µà¨¾à¨°_ਬà©à¨§à¨µà¨¾à¨°_ਵà©à¨°à¨µà¨¾à¨°_ਸ਼à©à©±à¨à¨°à¨µà¨¾à¨°_ਸ਼ਨà©à¨à¨°à¨µà¨¾à¨°'.split( 11498 '_' 11499 ), 11500 weekdaysShort: 'à¨à¨¤_ਸà©à¨®_ਮੰà¨à¨²_ਬà©à¨§_ਵà©à¨°_ਸ਼à©à¨à¨°_ਸ਼ਨà©'.split('_'), 11501 weekdaysMin: 'à¨à¨¤_ਸà©à¨®_ਮੰà¨à¨²_ਬà©à¨§_ਵà©à¨°_ਸ਼à©à¨à¨°_ਸ਼ਨà©'.split('_'), 11502 longDateFormat: { 11503 LT: 'A h:mm ਵà¨à©', 11504 LTS: 'A h:mm:ss ਵà¨à©', 11505 L: 'DD/MM/YYYY', 11506 LL: 'D MMMM YYYY', 11507 LLL: 'D MMMM YYYY, A h:mm ਵà¨à©', 11508 LLLL: 'dddd, D MMMM YYYY, A h:mm ਵà¨à©', 11509 }, 11510 calendar: { 11511 sameDay: '[ਠà¨] LT', 11512 nextDay: '[à¨à¨²] LT', 11513 nextWeek: '[ਠà¨à¨²à¨¾] dddd, LT', 11514 lastDay: '[à¨à¨²] LT', 11515 lastWeek: '[ਪਿà¨à¨²à©] dddd, LT', 11516 sameElse: 'L', 11517 }, 11518 relativeTime: { 11519 future: '%s ਵਿੱà¨', 11520 past: '%s ਪਿà¨à¨²à©', 11521 s: 'à¨à©à¨ ਸà¨à¨¿à©°à¨', 11522 ss: '%d ਸà¨à¨¿à©°à¨', 11523 m: 'à¨à¨ ਮਿੰà¨', 11524 mm: '%d ਮਿੰà¨', 11525 h: 'à¨à©±à¨ à¨à©°à¨à¨¾', 11526 hh: '%d à¨à©°à¨à©', 11527 d: 'à¨à©±à¨ ਦਿਨ', 11528 dd: '%d ਦਿਨ', 11529 M: 'à¨à©±à¨ ਮਹà©à¨¨à¨¾', 11530 MM: '%d ਮਹà©à¨¨à©', 11531 y: 'à¨à©±à¨ ਸਾਲ', 11532 yy: '%d ਸਾਲ', 11533 }, 11534 preparse: function (string) { 11535 return string.replace(/[੧੨੩੪੫੬à©à©®à©¯à©¦]/g, function (match) { 11536 return numberMap[match]; 11537 }); 11538 }, 11539 postformat: function (string) { 11540 return string.replace(/\d/g, function (match) { 11541 return symbolMap[match]; 11542 }); 11543 }, 11544 // Punjabi notation for meridiems are quite fuzzy in practice. While there exists 11545 // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi. 11546 meridiemParse: /ਰਾਤ|ਸਵà©à¨°|ਦà©à¨ªà¨¹à¨¿à¨°|ਸ਼ਾਮ/, 11547 meridiemHour: function (hour, meridiem) { 11548 if (hour === 12) { 11549 hour = 0; 11550 } 11551 if (meridiem === 'ਰਾਤ') { 11552 return hour < 4 ? hour : hour + 12; 11553 } else if (meridiem === 'ਸਵà©à¨°') { 11554 return hour; 11555 } else if (meridiem === 'ਦà©à¨ªà¨¹à¨¿à¨°') { 11556 return hour >= 10 ? hour : hour + 12; 11557 } else if (meridiem === 'ਸ਼ਾਮ') { 11558 return hour + 12; 11559 } 11560 }, 11561 meridiem: function (hour, minute, isLower) { 11562 if (hour < 4) { 11563 return 'ਰਾਤ'; 11564 } else if (hour < 10) { 11565 return 'ਸਵà©à¨°'; 11566 } else if (hour < 17) { 11567 return 'ਦà©à¨ªà¨¹à¨¿à¨°'; 11568 } else if (hour < 20) { 11569 return 'ਸ਼ਾਮ'; 11570 } else { 11571 return 'ਰਾਤ'; 11572 } 11573 }, 11574 week: { 11575 dow: 0, // Sunday is the first day of the week. 11576 doy: 6, // The week that contains Jan 6th is the first week of the year. 11577 }, 11578 }); 11579 11580 return paIn; 11581 11582}))); 11583 11584 11585/***/ }), 11586
vendor: 5,495 bytes, lines 11587-11735
11587/***/ "../../node_modules/moment/locale/pl.js": 11588/*!*********************************************************************************************************************************!*\ 11589 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/pl.js ***! 11590 \*********************************************************************************************************************************/ 11591/*! no static exports found */ 11592/***/ (function(module, exports, __webpack_require__) { 11593 11594//! moment.js locale configuration 11595//! locale : Polish [pl] 11596//! author : Rafal Hirsz : https://github.com/evoL 11597 11598;(function (global, factory) { 11599 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 11600 undefined 11601}(this, (function (moment) { 'use strict'; 11602 11603 //! moment.js locale configuration 11604 11605 var monthsNominative = 'styczeÅ_luty_marzec_kwiecieÅ_maj_czerwiec_lipiec_sierpieÅ_wrzesieÅ_październik_listopad_grudzieÅ'.split( 11606 '_' 11607 ), 11608 monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_wrzeÅnia_października_listopada_grudnia'.split( 11609 '_' 11610 ); 11611 function plural(n) { 11612 return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1; 11613 } 11614 function translate(number, withoutSuffix, key) { 11615 var result = number + ' '; 11616 switch (key) { 11617 case 'ss': 11618 return result + (plural(number) ? 'sekundy' : 'sekund'); 11619 case 'm': 11620 return withoutSuffix ? 'minuta' : 'minutÄ'; 11621 case 'mm': 11622 return result + (plural(number) ? 'minuty' : 'minut'); 11623 case 'h': 11624 return withoutSuffix ? 'godzina' : 'godzinÄ'; 11625 case 'hh': 11626 return result + (plural(number) ? 'godziny' : 'godzin'); 11627 case 'MM': 11628 return result + (plural(number) ? 'miesiÄ ce' : 'miesiÄcy'); 11629 case 'yy': 11630 return result + (plural(number) ? 'lata' : 'lat'); 11631 } 11632 } 11633 11634 var pl = moment.defineLocale('pl', { 11635 months: function (momentToFormat, format) { 11636 if (!momentToFormat) { 11637 return monthsNominative; 11638 } else if (format === '') { 11639 // Hack: if format empty we know this is used to generate 11640 // RegExp by moment. Give then back both valid forms of months 11641 // in RegExp ready format. 11642 return ( 11643 '(' + 11644 monthsSubjective[momentToFormat.month()] + 11645 '|' + 11646 monthsNominative[momentToFormat.month()] + 11647 ')' 11648 ); 11649 } else if (/D MMMM/.test(format)) { 11650 return monthsSubjective[momentToFormat.month()]; 11651 } else { 11652 return monthsNominative[momentToFormat.month()]; 11653 } 11654 }, 11655 monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'), 11656 weekdays: 'niedziela_poniedziaÅek_wtorek_Åroda_czwartek_piÄ tek_sobota'.split( 11657 '_' 11658 ), 11659 weekdaysShort: 'ndz_pon_wt_År_czw_pt_sob'.split('_'), 11660 weekdaysMin: 'Nd_Pn_Wt_År_Cz_Pt_So'.split('_'), 11661 longDateFormat: { 11662 LT: 'HH:mm', 11663 LTS: 'HH:mm:ss', 11664 L: 'DD.MM.YYYY', 11665 LL: 'D MMMM YYYY', 11666 LLL: 'D MMMM YYYY HH:mm', 11667 LLLL: 'dddd, D MMMM YYYY HH:mm', 11668 }, 11669 calendar: { 11670 sameDay: '[DziÅ o] LT', 11671 nextDay: '[Jutro o] LT', 11672 nextWeek: function () { 11673 switch (this.day()) { 11674 case 0: 11675 return '[W niedzielÄ o] LT'; 11676 11677 case 2: 11678 return '[We wtorek o] LT'; 11679 11680 case 3: 11681 return '[W ÅrodÄ o] LT'; 11682 11683 case 6: 11684 return '[W sobotÄ o] LT'; 11685 11686 default: 11687 return '[W] dddd [o] LT'; 11688 } 11689 }, 11690 lastDay: '[Wczoraj o] LT', 11691 lastWeek: function () { 11692 switch (this.day()) { 11693 case 0: 11694 return '[W zeszÅÄ niedzielÄ o] LT'; 11695 case 3: 11696 return '[W zeszÅÄ ÅrodÄ o] LT'; 11697 case 6: 11698 return '[W zeszÅÄ sobotÄ o] LT'; 11699 default: 11700 return '[W zeszÅy] dddd [o] LT'; 11701 } 11702 }, 11703 sameElse: 'L', 11704 }, 11705 relativeTime: { 11706 future: 'za %s', 11707 past: '%s temu', 11708 s: 'kilka sekund', 11709 ss: translate, 11710 m: translate, 11711 mm: translate, 11712 h: translate, 11713 hh: translate, 11714 d: '1 dzieÅ', 11715 dd: '%d dni', 11716 M: 'miesiÄ c', 11717 MM: translate, 11718 y: 'rok', 11719 yy: translate, 11720 }, 11721 dayOfMonthOrdinalParse: /\d{1,2}\./, 11722 ordinal: '%d.', 11723 week: { 11724 dow: 1, // Monday is the first day of the week. 11725 doy: 4, // The week that contains Jan 4th is the first week of the year. 11726 }, 11727 }); 11728 11729 return pl; 11730 11731}))); 11732 11733 11734/***/ }), 11735
vendor: 2,858 bytes, lines 11736-11811
11736/***/ "../../node_modules/moment/locale/pt-br.js": 11737/*!************************************************************************************************************************************!*\ 11738 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/pt-br.js ***! 11739 \************************************************************************************************************************************/ 11740/*! no static exports found */ 11741/***/ (function(module, exports, __webpack_require__) { 11742 11743//! moment.js locale configuration 11744//! locale : Portuguese (Brazil) [pt-br] 11745//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira 11746 11747;(function (global, factory) { 11748 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 11749 undefined 11750}(this, (function (moment) { 'use strict'; 11751 11752 //! moment.js locale configuration 11753 11754 var ptBr = moment.defineLocale('pt-br', { 11755 months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split( 11756 '_' 11757 ), 11758 monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'), 11759 weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split( 11760 '_' 11761 ), 11762 weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'), 11763 weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'), 11764 weekdaysParseExact: true, 11765 longDateFormat: { 11766 LT: 'HH:mm', 11767 LTS: 'HH:mm:ss', 11768 L: 'DD/MM/YYYY', 11769 LL: 'D [de] MMMM [de] YYYY', 11770 LLL: 'D [de] MMMM [de] YYYY [à s] HH:mm', 11771 LLLL: 'dddd, D [de] MMMM [de] YYYY [à s] HH:mm', 11772 }, 11773 calendar: { 11774 sameDay: '[Hoje à s] LT', 11775 nextDay: '[Amanhã à s] LT', 11776 nextWeek: 'dddd [à s] LT', 11777 lastDay: '[Ontem à s] LT', 11778 lastWeek: function () { 11779 return this.day() === 0 || this.day() === 6 11780 ? '[Ãltimo] dddd [à s] LT' // Saturday + Sunday 11781 : '[Ãltima] dddd [à s] LT'; // Monday - Friday 11782 }, 11783 sameElse: 'L', 11784 }, 11785 relativeTime: { 11786 future: 'em %s', 11787 past: 'há %s', 11788 s: 'poucos segundos', 11789 ss: '%d segundos', 11790 m: 'um minuto', 11791 mm: '%d minutos', 11792 h: 'uma hora', 11793 hh: '%d horas', 11794 d: 'um dia', 11795 dd: '%d dias', 11796 M: 'um mês', 11797 MM: '%d meses', 11798 y: 'um ano', 11799 yy: '%d anos', 11800 }, 11801 dayOfMonthOrdinalParse: /\d{1,2}º/, 11802 ordinal: '%dº', 11803 }); 11804 11805 return ptBr; 11806 11807}))); 11808 11809 11810/***/ }), 11811
vendor: 2,960 bytes, lines 11812-11891
11812/***/ "../../node_modules/moment/locale/pt.js": 11813/*!*********************************************************************************************************************************!*\ 11814 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/pt.js ***! 11815 \*********************************************************************************************************************************/ 11816/*! no static exports found */ 11817/***/ (function(module, exports, __webpack_require__) { 11818 11819//! moment.js locale configuration 11820//! locale : Portuguese [pt] 11821//! author : Jefferson : https://github.com/jalex79 11822 11823;(function (global, factory) { 11824 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 11825 undefined 11826}(this, (function (moment) { 'use strict'; 11827 11828 //! moment.js locale configuration 11829 11830 var pt = moment.defineLocale('pt', { 11831 months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split( 11832 '_' 11833 ), 11834 monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'), 11835 weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split( 11836 '_' 11837 ), 11838 weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'), 11839 weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'), 11840 weekdaysParseExact: true, 11841 longDateFormat: { 11842 LT: 'HH:mm', 11843 LTS: 'HH:mm:ss', 11844 L: 'DD/MM/YYYY', 11845 LL: 'D [de] MMMM [de] YYYY', 11846 LLL: 'D [de] MMMM [de] YYYY HH:mm', 11847 LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm', 11848 }, 11849 calendar: { 11850 sameDay: '[Hoje à s] LT', 11851 nextDay: '[Amanhã à s] LT', 11852 nextWeek: 'dddd [à s] LT', 11853 lastDay: '[Ontem à s] LT', 11854 lastWeek: function () { 11855 return this.day() === 0 || this.day() === 6 11856 ? '[Ãltimo] dddd [à s] LT' // Saturday + Sunday 11857 : '[Ãltima] dddd [à s] LT'; // Monday - Friday 11858 }, 11859 sameElse: 'L', 11860 }, 11861 relativeTime: { 11862 future: 'em %s', 11863 past: 'há %s', 11864 s: 'segundos', 11865 ss: '%d segundos', 11866 m: 'um minuto', 11867 mm: '%d minutos', 11868 h: 'uma hora', 11869 hh: '%d horas', 11870 d: 'um dia', 11871 dd: '%d dias', 11872 M: 'um mês', 11873 MM: '%d meses', 11874 y: 'um ano', 11875 yy: '%d anos', 11876 }, 11877 dayOfMonthOrdinalParse: /\d{1,2}º/, 11878 ordinal: '%dº', 11879 week: { 11880 dow: 1, // Monday is the first day of the week. 11881 doy: 4, // The week that contains Jan 4th is the first week of the year. 11882 }, 11883 }); 11884 11885 return pt; 11886 11887}))); 11888 11889 11890/***/ }), 11891
vendor: 3,312 bytes, lines 11892-11983
11892/***/ "../../node_modules/moment/locale/ro.js": 11893/*!*********************************************************************************************************************************!*\ 11894 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ro.js ***! 11895 \*********************************************************************************************************************************/ 11896/*! no static exports found */ 11897/***/ (function(module, exports, __webpack_require__) { 11898 11899//! moment.js locale configuration 11900//! locale : Romanian [ro] 11901//! author : Vlad Gurdiga : https://github.com/gurdiga 11902//! author : Valentin Agachi : https://github.com/avaly 11903//! author : Emanuel Cepoi : https://github.com/cepem 11904 11905;(function (global, factory) { 11906 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 11907 undefined 11908}(this, (function (moment) { 'use strict'; 11909 11910 //! moment.js locale configuration 11911 11912 function relativeTimeWithPlural(number, withoutSuffix, key) { 11913 var format = { 11914 ss: 'secunde', 11915 mm: 'minute', 11916 hh: 'ore', 11917 dd: 'zile', 11918 MM: 'luni', 11919 yy: 'ani', 11920 }, 11921 separator = ' '; 11922 if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) { 11923 separator = ' de '; 11924 } 11925 return number + separator + format[key]; 11926 } 11927 11928 var ro = moment.defineLocale('ro', { 11929 months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split( 11930 '_' 11931 ), 11932 monthsShort: 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split( 11933 '_' 11934 ), 11935 monthsParseExact: true, 11936 weekdays: 'duminicÄ_luni_marÈi_miercuri_joi_vineri_sâmbÄtÄ'.split('_'), 11937 weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'), 11938 weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'), 11939 longDateFormat: { 11940 LT: 'H:mm', 11941 LTS: 'H:mm:ss', 11942 L: 'DD.MM.YYYY', 11943 LL: 'D MMMM YYYY', 11944 LLL: 'D MMMM YYYY H:mm', 11945 LLLL: 'dddd, D MMMM YYYY H:mm', 11946 }, 11947 calendar: { 11948 sameDay: '[azi la] LT', 11949 nextDay: '[mâine la] LT', 11950 nextWeek: 'dddd [la] LT', 11951 lastDay: '[ieri la] LT', 11952 lastWeek: '[fosta] dddd [la] LT', 11953 sameElse: 'L', 11954 }, 11955 relativeTime: { 11956 future: 'peste %s', 11957 past: '%s în urmÄ', 11958 s: 'câteva secunde', 11959 ss: relativeTimeWithPlural, 11960 m: 'un minut', 11961 mm: relativeTimeWithPlural, 11962 h: 'o orÄ', 11963 hh: relativeTimeWithPlural, 11964 d: 'o zi', 11965 dd: relativeTimeWithPlural, 11966 M: 'o lunÄ', 11967 MM: relativeTimeWithPlural, 11968 y: 'un an', 11969 yy: relativeTimeWithPlural, 11970 }, 11971 week: { 11972 dow: 1, // Monday is the first day of the week. 11973 doy: 7, // The week that contains Jan 7th is the first week of the year. 11974 }, 11975 }); 11976 11977 return ro; 11978 11979}))); 11980 11981 11982/***/ }), 11983
vendor: 9,955 bytes, lines 11984-12206
11984/***/ "../../node_modules/moment/locale/ru.js": 11985/*!*********************************************************************************************************************************!*\ 11986 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ru.js ***! 11987 \*********************************************************************************************************************************/ 11988/*! no static exports found */ 11989/***/ (function(module, exports, __webpack_require__) { 11990 11991//! moment.js locale configuration 11992//! locale : Russian [ru] 11993//! author : Viktorminator : https://github.com/Viktorminator 11994//! author : Menelion Elensúle : https://github.com/Oire 11995//! author : ÐоÑенбеÑг ÐаÑк : https://github.com/socketpair 11996 11997;(function (global, factory) { 11998 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 11999 undefined 12000}(this, (function (moment) { 'use strict'; 12001 12002 //! moment.js locale configuration 12003 12004 function plural(word, num) { 12005 var forms = word.split('_'); 12006 return num % 10 === 1 && num % 100 !== 11 12007 ? forms[0] 12008 : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) 12009 ? forms[1] 12010 : forms[2]; 12011 } 12012 function relativeTimeWithPlural(number, withoutSuffix, key) { 12013 var format = { 12014 ss: withoutSuffix ? 'ÑекÑнда_ÑекÑндÑ_ÑекÑнд' : 'ÑекÑндÑ_ÑекÑндÑ_ÑекÑнд', 12015 mm: withoutSuffix ? 'минÑÑа_минÑÑÑ_минÑÑ' : 'минÑÑÑ_минÑÑÑ_минÑÑ', 12016 hh: 'ÑаÑ_ÑаÑа_ÑаÑов', 12017 dd: 'денÑ_днÑ_дней', 12018 MM: 'меÑÑÑ_меÑÑÑа_меÑÑÑев', 12019 yy: 'год_года_леÑ', 12020 }; 12021 if (key === 'm') { 12022 return withoutSuffix ? 'минÑÑа' : 'минÑÑÑ'; 12023 } else { 12024 return number + ' ' + plural(format[key], +number); 12025 } 12026 } 12027 var monthsParse = [ 12028 /^Ñнв/i, 12029 /^Ñев/i, 12030 /^маÑ/i, 12031 /^апÑ/i, 12032 /^ма[йÑ]/i, 12033 /^иÑн/i, 12034 /^иÑл/i, 12035 /^авг/i, 12036 /^Ñен/i, 12037 /^окÑ/i, 12038 /^ноÑ/i, 12039 /^дек/i, 12040 ]; 12041 12042 // http://new.gramota.ru/spravka/rules/139-prop : § 103 12043 // СокÑаÑÐµÐ½Ð¸Ñ Ð¼ÐµÑÑÑев: http://new.gramota.ru/spravka/buro/search-answer?s=242637 12044 // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753 12045 var ru = moment.defineLocale('ru', { 12046 months: { 12047 format: 'ÑнваÑÑ_ÑевÑалÑ_маÑÑа_апÑелÑ_маÑ_иÑнÑ_иÑлÑ_авгÑÑÑа_ÑенÑÑбÑÑ_окÑÑбÑÑ_ноÑбÑÑ_декабÑÑ'.split( 12048 '_' 12049 ), 12050 standalone: 'ÑнваÑÑ_ÑевÑалÑ_маÑÑ_апÑелÑ_май_иÑнÑ_иÑлÑ_авгÑÑÑ_ÑенÑÑбÑÑ_окÑÑбÑÑ_ноÑбÑÑ_декабÑÑ'.split( 12051 '_' 12052 ), 12053 }, 12054 monthsShort: { 12055 // по CLDR именно "иÑл." и "иÑн.", но какой ÑмÑÑл менÑÑÑ Ð±ÑÐºÐ²Ñ Ð½Ð° ÑоÑкÑ? 12056 format: 'Ñнв._ÑевÑ._маÑ._апÑ._маÑ_иÑнÑ_иÑлÑ_авг._ÑенÑ._окÑ._ноÑб._дек.'.split( 12057 '_' 12058 ), 12059 standalone: 'Ñнв._ÑевÑ._маÑÑ_апÑ._май_иÑнÑ_иÑлÑ_авг._ÑенÑ._окÑ._ноÑб._дек.'.split( 12060 '_' 12061 ), 12062 }, 12063 weekdays: { 12064 standalone: 'воÑкÑеÑенÑе_понеделÑник_вÑоÑник_ÑÑеда_ÑеÑвеÑг_пÑÑниÑа_ÑÑббоÑа'.split( 12065 '_' 12066 ), 12067 format: 'воÑкÑеÑенÑе_понеделÑник_вÑоÑник_ÑÑедÑ_ÑеÑвеÑг_пÑÑниÑÑ_ÑÑббоÑÑ'.split( 12068 '_' 12069 ), 12070 isFormat: /\[ ?[Ðв] ?(?:пÑоÑлÑÑ|ÑледÑÑÑÑÑ|ÑÑÑ)? ?] ?dddd/, 12071 }, 12072 weekdaysShort: 'вÑ_пн_вÑ_ÑÑ_ÑÑ_пÑ_Ñб'.split('_'), 12073 weekdaysMin: 'вÑ_пн_вÑ_ÑÑ_ÑÑ_пÑ_Ñб'.split('_'), 12074 monthsParse: monthsParse, 12075 longMonthsParse: monthsParse, 12076 shortMonthsParse: monthsParse, 12077 12078 // полнÑе Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ñ Ð¿Ð°Ð´ÐµÐ¶Ð°Ð¼Ð¸, по ÑÑи бÑквÑ, Ð´Ð»Ñ Ð½ÐµÐºÐ¾ÑоÑÑÑ , по 4 бÑквÑ, ÑокÑаÑÐµÐ½Ð¸Ñ Ñ ÑоÑкой и без ÑоÑки 12079 monthsRegex: /^(ÑнваÑ[ÑÑ]|Ñнв\.?|ÑевÑал[ÑÑ]|ÑевÑ?\.?|маÑÑа?|маÑ\.?|апÑел[ÑÑ]|апÑ\.?|ма[йÑ]|иÑн[ÑÑ]|иÑн\.?|иÑл[ÑÑ]|иÑл\.?|авгÑÑÑа?|авг\.?|ÑенÑÑбÑ[ÑÑ]|ÑенÑ?\.?|окÑÑбÑ[ÑÑ]|окÑ\.?|ноÑбÑ[ÑÑ]|ноÑб?\.?|декабÑ[ÑÑ]|дек\.?)/i, 12080 12081 // ÐºÐ¾Ð¿Ð¸Ñ Ð¿ÑедÑдÑÑего 12082 monthsShortRegex: /^(ÑнваÑ[ÑÑ]|Ñнв\.?|ÑевÑал[ÑÑ]|ÑевÑ?\.?|маÑÑа?|маÑ\.?|апÑел[ÑÑ]|апÑ\.?|ма[йÑ]|иÑн[ÑÑ]|иÑн\.?|иÑл[ÑÑ]|иÑл\.?|авгÑÑÑа?|авг\.?|ÑенÑÑбÑ[ÑÑ]|ÑенÑ?\.?|окÑÑбÑ[ÑÑ]|окÑ\.?|ноÑбÑ[ÑÑ]|ноÑб?\.?|декабÑ[ÑÑ]|дек\.?)/i, 12083 12084 // полнÑе Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ñ Ð¿Ð°Ð´ÐµÐ¶Ð°Ð¼Ð¸ 12085 monthsStrictRegex: /^(ÑнваÑ[ÑÑ]|ÑевÑал[ÑÑ]|маÑÑа?|апÑел[ÑÑ]|ма[Ñй]|иÑн[ÑÑ]|иÑл[ÑÑ]|авгÑÑÑа?|ÑенÑÑбÑ[ÑÑ]|окÑÑбÑ[ÑÑ]|ноÑбÑ[ÑÑ]|декабÑ[ÑÑ])/i, 12086 12087 // ÐÑÑажение, коÑоÑое ÑооÑвеÑÑÑвÑÐµÑ ÑолÑко ÑокÑаÑÑннÑм ÑоÑмам 12088 monthsShortStrictRegex: /^(Ñнв\.|ÑевÑ?\.|маÑ[Ñ.]|апÑ\.|ма[Ñй]|иÑн[ÑÑ.]|иÑл[ÑÑ.]|авг\.|ÑенÑ?\.|окÑ\.|ноÑб?\.|дек\.)/i, 12089 longDateFormat: { 12090 LT: 'H:mm', 12091 LTS: 'H:mm:ss', 12092 L: 'DD.MM.YYYY', 12093 LL: 'D MMMM YYYY г.', 12094 LLL: 'D MMMM YYYY г., H:mm', 12095 LLLL: 'dddd, D MMMM YYYY г., H:mm', 12096 }, 12097 calendar: { 12098 sameDay: '[СегоднÑ, в] LT', 12099 nextDay: '[ÐавÑÑа, в] LT', 12100 lastDay: '[ÐÑеÑа, в] LT', 12101 nextWeek: function (now) { 12102 if (now.week() !== this.week()) { 12103 switch (this.day()) { 12104 case 0: 12105 return '[Ð ÑледÑÑÑее] dddd, [в] LT'; 12106 case 1: 12107 case 2: 12108 case 4: 12109 return '[Ð ÑледÑÑÑий] dddd, [в] LT'; 12110 case 3: 12111 case 5: 12112 case 6: 12113 return '[Ð ÑледÑÑÑÑÑ] dddd, [в] LT'; 12114 } 12115 } else { 12116 if (this.day() === 2) { 12117 return '[Ðо] dddd, [в] LT'; 12118 } else { 12119 return '[Ð] dddd, [в] LT'; 12120 } 12121 } 12122 }, 12123 lastWeek: function (now) { 12124 if (now.week() !== this.week()) { 12125 switch (this.day()) { 12126 case 0: 12127 return '[РпÑоÑлое] dddd, [в] LT'; 12128 case 1: 12129 case 2: 12130 case 4: 12131 return '[РпÑоÑлÑй] dddd, [в] LT'; 12132 case 3: 12133 case 5: 12134 case 6: 12135 return '[РпÑоÑлÑÑ] dddd, [в] LT'; 12136 } 12137 } else { 12138 if (this.day() === 2) { 12139 return '[Ðо] dddd, [в] LT'; 12140 } else { 12141 return '[Ð] dddd, [в] LT'; 12142 } 12143 } 12144 }, 12145 sameElse: 'L', 12146 }, 12147 relativeTime: { 12148 future: 'ÑеÑез %s', 12149 past: '%s назад', 12150 s: 'неÑколÑко ÑекÑнд', 12151 ss: relativeTimeWithPlural, 12152 m: relativeTimeWithPlural, 12153 mm: relativeTimeWithPlural, 12154 h: 'ÑаÑ', 12155 hh: relativeTimeWithPlural, 12156 d: 'денÑ', 12157 dd: relativeTimeWithPlural, 12158 M: 'меÑÑÑ', 12159 MM: relativeTimeWithPlural, 12160 y: 'год', 12161 yy: relativeTimeWithPlural, 12162 }, 12163 meridiemParse: /ноÑи|ÑÑÑа|днÑ|веÑеÑа/i, 12164 isPM: function (input) { 12165 return /^(днÑ|веÑеÑа)$/.test(input); 12166 }, 12167 meridiem: function (hour, minute, isLower) { 12168 if (hour < 4) { 12169 return 'ноÑи'; 12170 } else if (hour < 12) { 12171 return 'ÑÑÑа'; 12172 } else if (hour < 17) { 12173 return 'днÑ'; 12174 } else { 12175 return 'веÑеÑа'; 12176 } 12177 }, 12178 dayOfMonthOrdinalParse: /\d{1,2}-(й|го|Ñ)/, 12179 ordinal: function (number, period) { 12180 switch (period) { 12181 case 'M': 12182 case 'd': 12183 case 'DDD': 12184 return number + '-й'; 12185 case 'D': 12186 return number + '-го'; 12187 case 'w': 12188 case 'W': 12189 return number + '-Ñ'; 12190 default: 12191 return number; 12192 } 12193 }, 12194 week: { 12195 dow: 1, // Monday is the first day of the week. 12196 doy: 4, // The week that contains Jan 4th is the first week of the year. 12197 }, 12198 }); 12199 12200 return ru; 12201 12202}))); 12203 12204 12205/***/ }), 12206
vendor: 3,313 bytes, lines 12207-12307
12207/***/ "../../node_modules/moment/locale/sd.js": 12208/*!*********************************************************************************************************************************!*\ 12209 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/sd.js ***! 12210 \*********************************************************************************************************************************/ 12211/*! no static exports found */ 12212/***/ (function(module, exports, __webpack_require__) { 12213 12214//! moment.js locale configuration 12215//! locale : Sindhi [sd] 12216//! author : Narain Sagar : https://github.com/narainsagar 12217 12218;(function (global, factory) { 12219 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 12220 undefined 12221}(this, (function (moment) { 'use strict'; 12222 12223 //! moment.js locale configuration 12224 12225 var months = [ 12226 'جÙÙØ±Ù', 12227 'ÙÙØ¨Ø±ÙرÙ', 12228 '٠ارÚ', 12229 'اپرÙÙ', 12230 '٠ئÙ', 12231 'جÙÙ', 12232 'جÙÙØ§Ø¡Ù', 12233 'آگسٽ', 12234 'سÙپٽ٠بر', 12235 'Ø¢ÚªÙ½ÙØ¨Ø±', 12236 'ÙÙ٠بر', 12237 'ÚØ³Ù بر', 12238 ], 12239 days = ['Ø¢ÚØ±', 'سÙ٠ر', 'اڱارÙ', 'اربع', 'Ø®Ù ÙØ³', 'ج٠ع', 'ÚÙÚØ±']; 12240 12241 var sd = moment.defineLocale('sd', { 12242 months: months, 12243 monthsShort: months, 12244 weekdays: days, 12245 weekdaysShort: days, 12246 weekdaysMin: days, 12247 longDateFormat: { 12248 LT: 'HH:mm', 12249 LTS: 'HH:mm:ss', 12250 L: 'DD/MM/YYYY', 12251 LL: 'D MMMM YYYY', 12252 LLL: 'D MMMM YYYY HH:mm', 12253 LLLL: 'ddddØ D MMMM YYYY HH:mm', 12254 }, 12255 meridiemParse: /صبØ|شا٠/, 12256 isPM: function (input) { 12257 return 'شا٠' === input; 12258 }, 12259 meridiem: function (hour, minute, isLower) { 12260 if (hour < 12) { 12261 return 'صبØ'; 12262 } 12263 return 'شا٠'; 12264 }, 12265 calendar: { 12266 sameDay: '[اÚ] LT', 12267 nextDay: '[Ø³ÚØ§Ú»Ù] LT', 12268 nextWeek: 'dddd [اڳÙÙ ÙÙØªÙ تÙ] LT', 12269 lastDay: '[ڪاÙÙÙ] LT', 12270 lastWeek: '[گزرÙÙ ÙÙØªÙ] dddd [تÙ] LT', 12271 sameElse: 'L', 12272 }, 12273 relativeTime: { 12274 future: '%s Ù¾ÙØ¡', 12275 past: '%s اڳ', 12276 s: 'ÚÙØ¯ سÙÚªÙÚ', 12277 ss: '%d سÙÚªÙÚ', 12278 m: 'ÙÚª Ù ÙÙ½', 12279 mm: '%d Ù ÙÙ½', 12280 h: 'ÙÚª ÚªÙØ§Úª', 12281 hh: '%d ÚªÙØ§Úª', 12282 d: 'ÙÚª ÚÙÙÙÙ', 12283 dd: '%d ÚÙÙÙÙ', 12284 M: 'ÙÚª Ù ÙÙÙÙ', 12285 MM: '%d Ù ÙÙÙØ§', 12286 y: 'ÙÚª ساÙ', 12287 yy: '%d ساÙ', 12288 }, 12289 preparse: function (string) { 12290 return string.replace(/Ø/g, ','); 12291 }, 12292 postformat: function (string) { 12293 return string.replace(/,/g, 'Ø'); 12294 }, 12295 week: { 12296 dow: 1, // Monday is the first day of the week. 12297 doy: 4, // The week that contains Jan 4th is the first week of the year. 12298 }, 12299 }); 12300 12301 return sd; 12302 12303}))); 12304 12305 12306/***/ }), 12307
vendor: 2,883 bytes, lines 12308-12384
12308/***/ "../../node_modules/moment/locale/se.js": 12309/*!*********************************************************************************************************************************!*\ 12310 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/se.js ***! 12311 \*********************************************************************************************************************************/ 12312/*! no static exports found */ 12313/***/ (function(module, exports, __webpack_require__) { 12314 12315//! moment.js locale configuration 12316//! locale : Northern Sami [se] 12317//! authors : BÃ¥rd Rolstad Henriksen : https://github.com/karamell 12318 12319;(function (global, factory) { 12320 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 12321 undefined 12322}(this, (function (moment) { 'use strict'; 12323 12324 //! moment.js locale configuration 12325 12326 var se = moment.defineLocale('se', { 12327 months: 'oÄÄajagemánnu_guovvamánnu_njukÄamánnu_cuoÅománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_ÄakÄamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split( 12328 '_' 12329 ), 12330 monthsShort: 'oÄÄj_guov_njuk_cuo_mies_geas_suoi_borg_ÄakÄ_golg_skáb_juov'.split( 12331 '_' 12332 ), 12333 weekdays: 'sotnabeaivi_vuossárga_maÅÅebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split( 12334 '_' 12335 ), 12336 weekdaysShort: 'sotn_vuos_maÅ_gask_duor_bear_láv'.split('_'), 12337 weekdaysMin: 's_v_m_g_d_b_L'.split('_'), 12338 longDateFormat: { 12339 LT: 'HH:mm', 12340 LTS: 'HH:mm:ss', 12341 L: 'DD.MM.YYYY', 12342 LL: 'MMMM D. [b.] YYYY', 12343 LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm', 12344 LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm', 12345 }, 12346 calendar: { 12347 sameDay: '[otne ti] LT', 12348 nextDay: '[ihttin ti] LT', 12349 nextWeek: 'dddd [ti] LT', 12350 lastDay: '[ikte ti] LT', 12351 lastWeek: '[ovddit] dddd [ti] LT', 12352 sameElse: 'L', 12353 }, 12354 relativeTime: { 12355 future: '%s geažes', 12356 past: 'maÅit %s', 12357 s: 'moadde sekunddat', 12358 ss: '%d sekunddat', 12359 m: 'okta minuhta', 12360 mm: '%d minuhtat', 12361 h: 'okta diimmu', 12362 hh: '%d diimmut', 12363 d: 'okta beaivi', 12364 dd: '%d beaivvit', 12365 M: 'okta mánnu', 12366 MM: '%d mánut', 12367 y: 'okta jahki', 12368 yy: '%d jagit', 12369 }, 12370 dayOfMonthOrdinalParse: /\d{1,2}\./, 12371 ordinal: '%d.', 12372 week: { 12373 dow: 1, // Monday is the first day of the week. 12374 doy: 4, // The week that contains Jan 4th is the first week of the year. 12375 }, 12376 }); 12377 12378 return se; 12379 12380}))); 12381 12382 12383/***/ }), 12384
vendor: 3,764 bytes, lines 12385-12472
12385/***/ "../../node_modules/moment/locale/si.js": 12386/*!*********************************************************************************************************************************!*\ 12387 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/si.js ***! 12388 \*********************************************************************************************************************************/ 12389/*! no static exports found */ 12390/***/ (function(module, exports, __webpack_require__) { 12391 12392//! moment.js locale configuration 12393//! locale : Sinhalese [si] 12394//! author : Sampath Sitinamaluwa : https://github.com/sampathsris 12395 12396;(function (global, factory) { 12397 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 12398 undefined 12399}(this, (function (moment) { 'use strict'; 12400 12401 //! moment.js locale configuration 12402 12403 /*jshint -W100*/ 12404 var si = moment.defineLocale('si', { 12405 months: 'ජනà·à·à¶»à·_à¶´à·à¶¶à¶»à·à·à¶»à·_මà·à¶»à·à¶à·_à¶ à¶´à·âà¶»à·à¶½à·_මà·à¶ºà·_à¶¢à·à¶±à·_à¶¢à·à¶½à·_à¶ à¶à·à·à·à¶à·_à·à·à¶´à·à¶à·à¶¸à·à¶¶à¶»à·_à¶à¶à·à¶à·à¶¶à¶»à·_à¶±à·à·à·à¶¸à·à¶¶à¶»à·_දà·à·à·à¶¸à·à¶¶à¶»à·'.split( 12406 '_' 12407 ), 12408 monthsShort: 'ජන_à¶´à·à¶¶_මà·à¶»à·_à¶ à¶´à·_මà·à¶ºà·_à¶¢à·à¶±à·_à¶¢à·à¶½à·_à¶ à¶à·_à·à·à¶´à·_à¶à¶à·_à¶±à·à·à·_දà·à·à·'.split( 12409 '_' 12410 ), 12411 weekdays: 'à¶à¶»à·à¶¯à·_à·à¶³à·à¶¯à·_à¶ à¶à·à¶»à·à·à·à¶¯à·_බදà·à¶¯à·_à¶¶à·âà¶»à·à·à·à¶´à¶à·à¶±à·à¶¯à·_à·à·à¶à·à¶»à·à¶¯à·_à·à·à¶±à·à·à¶»à·à¶¯à·'.split( 12412 '_' 12413 ), 12414 weekdaysShort: 'à¶à¶»à·_à·à¶³à·_à¶ à¶_බදà·_à¶¶à·âà¶»à·_à·à·à¶à·_à·à·à¶±'.split('_'), 12415 weekdaysMin: 'à¶_à·_à¶ _à¶¶_à¶¶à·âà¶»_à·à·_à·à·'.split('_'), 12416 weekdaysParseExact: true, 12417 longDateFormat: { 12418 LT: 'a h:mm', 12419 LTS: 'a h:mm:ss', 12420 L: 'YYYY/MM/DD', 12421 LL: 'YYYY MMMM D', 12422 LLL: 'YYYY MMMM D, a h:mm', 12423 LLLL: 'YYYY MMMM D [à·à·à¶±à·] dddd, a h:mm:ss', 12424 }, 12425 calendar: { 12426 sameDay: '[චද] LT[à¶§]', 12427 nextDay: '[à·à·à¶§] LT[à¶§]', 12428 nextWeek: 'dddd LT[à¶§]', 12429 lastDay: '[à¶à¶ºà·] LT[à¶§]', 12430 lastWeek: '[à¶´à·à·à¶à·à¶º] dddd LT[à¶§]', 12431 sameElse: 'L', 12432 }, 12433 relativeTime: { 12434 future: '%sà¶à·à¶±à·', 12435 past: '%sà¶à¶§ à¶´à·à¶»', 12436 s: 'à¶à¶à·à¶´à¶» à¶à·à·à·à¶´à¶º', 12437 ss: 'à¶à¶à·à¶´à¶» %d', 12438 m: 'මà·à¶±à·à¶à·à¶à·à·', 12439 mm: 'මà·à¶±à·à¶à·à¶à· %d', 12440 h: 'à¶´à·à¶º', 12441 hh: 'à¶´à·à¶º %d', 12442 d: 'දà·à¶±à¶º', 12443 dd: 'දà·à¶± %d', 12444 M: 'මà·à·à¶º', 12445 MM: 'මà·à· %d', 12446 y: 'à·à·à¶»', 12447 yy: 'à·à·à¶» %d', 12448 }, 12449 dayOfMonthOrdinalParse: /\d{1,2} à·à·à¶±à·/, 12450 ordinal: function (number) { 12451 return number + ' à·à·à¶±à·'; 12452 }, 12453 meridiemParse: /à¶´à·à¶» à·à¶»à·|à¶´à·à· à·à¶»à·|à¶´à·.à·|à¶´.à·./, 12454 isPM: function (input) { 12455 return input === 'à¶´.à·.' || input === 'à¶´à·à· à·à¶»à·'; 12456 }, 12457 meridiem: function (hours, minutes, isLower) { 12458 if (hours > 11) { 12459 return isLower ? 'à¶´.à·.' : 'à¶´à·à· à·à¶»à·'; 12460 } else { 12461 return isLower ? 'à¶´à·.à·.' : 'à¶´à·à¶» à·à¶»à·'; 12462 } 12463 }, 12464 }); 12465 12466 return si; 12467 12468}))); 12469 12470 12471/***/ }), 12472
vendor: 6,628 bytes, lines 12473-12636
12473/***/ "../../node_modules/moment/locale/sk.js": 12474/*!*********************************************************************************************************************************!*\ 12475 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/sk.js ***! 12476 \*********************************************************************************************************************************/ 12477/*! no static exports found */ 12478/***/ (function(module, exports, __webpack_require__) { 12479 12480//! moment.js locale configuration 12481//! locale : Slovak [sk] 12482//! author : Martin Minka : https://github.com/k2s 12483//! based on work of petrbela : https://github.com/petrbela 12484 12485;(function (global, factory) { 12486 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 12487 undefined 12488}(this, (function (moment) { 'use strict'; 12489 12490 //! moment.js locale configuration 12491 12492 var months = 'január_február_marec_aprÃl_máj_jún_júl_august_september_október_november_december'.split( 12493 '_' 12494 ), 12495 monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_'); 12496 function plural(n) { 12497 return n > 1 && n < 5; 12498 } 12499 function translate(number, withoutSuffix, key, isFuture) { 12500 var result = number + ' '; 12501 switch (key) { 12502 case 's': // a few seconds / in a few seconds / a few seconds ago 12503 return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami'; 12504 case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago 12505 if (withoutSuffix || isFuture) { 12506 return result + (plural(number) ? 'sekundy' : 'sekúnd'); 12507 } else { 12508 return result + 'sekundami'; 12509 } 12510 case 'm': // a minute / in a minute / a minute ago 12511 return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou'; 12512 case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago 12513 if (withoutSuffix || isFuture) { 12514 return result + (plural(number) ? 'minúty' : 'minút'); 12515 } else { 12516 return result + 'minútami'; 12517 } 12518 case 'h': // an hour / in an hour / an hour ago 12519 return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou'; 12520 case 'hh': // 9 hours / in 9 hours / 9 hours ago 12521 if (withoutSuffix || isFuture) { 12522 return result + (plural(number) ? 'hodiny' : 'hodÃn'); 12523 } else { 12524 return result + 'hodinami'; 12525 } 12526 case 'd': // a day / in a day / a day ago 12527 return withoutSuffix || isFuture ? 'deÅ' : 'dÅom'; 12528 case 'dd': // 9 days / in 9 days / 9 days ago 12529 if (withoutSuffix || isFuture) { 12530 return result + (plural(number) ? 'dni' : 'dnÃ'); 12531 } else { 12532 return result + 'dÅami'; 12533 } 12534 case 'M': // a month / in a month / a month ago 12535 return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom'; 12536 case 'MM': // 9 months / in 9 months / 9 months ago 12537 if (withoutSuffix || isFuture) { 12538 return result + (plural(number) ? 'mesiace' : 'mesiacov'); 12539 } else { 12540 return result + 'mesiacmi'; 12541 } 12542 case 'y': // a year / in a year / a year ago 12543 return withoutSuffix || isFuture ? 'rok' : 'rokom'; 12544 case 'yy': // 9 years / in 9 years / 9 years ago 12545 if (withoutSuffix || isFuture) { 12546 return result + (plural(number) ? 'roky' : 'rokov'); 12547 } else { 12548 return result + 'rokmi'; 12549 } 12550 } 12551 } 12552 12553 var sk = moment.defineLocale('sk', { 12554 months: months, 12555 monthsShort: monthsShort, 12556 weekdays: 'nedeľa_pondelok_utorok_streda_Å¡tvrtok_piatok_sobota'.split('_'), 12557 weekdaysShort: 'ne_po_ut_st_Å¡t_pi_so'.split('_'), 12558 weekdaysMin: 'ne_po_ut_st_Å¡t_pi_so'.split('_'), 12559 longDateFormat: { 12560 LT: 'H:mm', 12561 LTS: 'H:mm:ss', 12562 L: 'DD.MM.YYYY', 12563 LL: 'D. MMMM YYYY', 12564 LLL: 'D. MMMM YYYY H:mm', 12565 LLLL: 'dddd D. MMMM YYYY H:mm', 12566 }, 12567 calendar: { 12568 sameDay: '[dnes o] LT', 12569 nextDay: '[zajtra o] LT', 12570 nextWeek: function () { 12571 switch (this.day()) { 12572 case 0: 12573 return '[v nedeľu o] LT'; 12574 case 1: 12575 case 2: 12576 return '[v] dddd [o] LT'; 12577 case 3: 12578 return '[v stredu o] LT'; 12579 case 4: 12580 return '[vo Å¡tvrtok o] LT'; 12581 case 5: 12582 return '[v piatok o] LT'; 12583 case 6: 12584 return '[v sobotu o] LT'; 12585 } 12586 }, 12587 lastDay: '[vÄera o] LT', 12588 lastWeek: function () { 12589 switch (this.day()) { 12590 case 0: 12591 return '[minulú nedeľu o] LT'; 12592 case 1: 12593 case 2: 12594 return '[minulý] dddd [o] LT'; 12595 case 3: 12596 return '[minulú stredu o] LT'; 12597 case 4: 12598 case 5: 12599 return '[minulý] dddd [o] LT'; 12600 case 6: 12601 return '[minulú sobotu o] LT'; 12602 } 12603 }, 12604 sameElse: 'L', 12605 }, 12606 relativeTime: { 12607 future: 'za %s', 12608 past: 'pred %s', 12609 s: translate, 12610 ss: translate, 12611 m: translate, 12612 mm: translate, 12613 h: translate, 12614 hh: translate, 12615 d: translate, 12616 dd: translate, 12617 M: translate, 12618 MM: translate, 12619 y: translate, 12620 yy: translate, 12621 }, 12622 dayOfMonthOrdinalParse: /\d{1,2}\./, 12623 ordinal: '%d.', 12624 week: { 12625 dow: 1, // Monday is the first day of the week. 12626 doy: 4, // The week that contains Jan 4th is the first week of the year. 12627 }, 12628 }); 12629 12630 return sk; 12631 12632}))); 12633 12634 12635/***/ }), 12636
vendor: 7,700 bytes, lines 12637-12826
12637/***/ "../../node_modules/moment/locale/sl.js": 12638/*!*********************************************************************************************************************************!*\ 12639 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/sl.js ***! 12640 \*********************************************************************************************************************************/ 12641/*! no static exports found */ 12642/***/ (function(module, exports, __webpack_require__) { 12643 12644//! moment.js locale configuration 12645//! locale : Slovenian [sl] 12646//! author : Robert SedovÅ¡ek : https://github.com/sedovsek 12647 12648;(function (global, factory) { 12649 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 12650 undefined 12651}(this, (function (moment) { 'use strict'; 12652 12653 //! moment.js locale configuration 12654 12655 function processRelativeTime(number, withoutSuffix, key, isFuture) { 12656 var result = number + ' '; 12657 switch (key) { 12658 case 's': 12659 return withoutSuffix || isFuture 12660 ? 'nekaj sekund' 12661 : 'nekaj sekundami'; 12662 case 'ss': 12663 if (number === 1) { 12664 result += withoutSuffix ? 'sekundo' : 'sekundi'; 12665 } else if (number === 2) { 12666 result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah'; 12667 } else if (number < 5) { 12668 result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah'; 12669 } else { 12670 result += 'sekund'; 12671 } 12672 return result; 12673 case 'm': 12674 return withoutSuffix ? 'ena minuta' : 'eno minuto'; 12675 case 'mm': 12676 if (number === 1) { 12677 result += withoutSuffix ? 'minuta' : 'minuto'; 12678 } else if (number === 2) { 12679 result += withoutSuffix || isFuture ? 'minuti' : 'minutama'; 12680 } else if (number < 5) { 12681 result += withoutSuffix || isFuture ? 'minute' : 'minutami'; 12682 } else { 12683 result += withoutSuffix || isFuture ? 'minut' : 'minutami'; 12684 } 12685 return result; 12686 case 'h': 12687 return withoutSuffix ? 'ena ura' : 'eno uro'; 12688 case 'hh': 12689 if (number === 1) { 12690 result += withoutSuffix ? 'ura' : 'uro'; 12691 } else if (number === 2) { 12692 result += withoutSuffix || isFuture ? 'uri' : 'urama'; 12693 } else if (number < 5) { 12694 result += withoutSuffix || isFuture ? 'ure' : 'urami'; 12695 } else { 12696 result += withoutSuffix || isFuture ? 'ur' : 'urami'; 12697 } 12698 return result; 12699 case 'd': 12700 return withoutSuffix || isFuture ? 'en dan' : 'enim dnem'; 12701 case 'dd': 12702 if (number === 1) { 12703 result += withoutSuffix || isFuture ? 'dan' : 'dnem'; 12704 } else if (number === 2) { 12705 result += withoutSuffix || isFuture ? 'dni' : 'dnevoma'; 12706 } else { 12707 result += withoutSuffix || isFuture ? 'dni' : 'dnevi'; 12708 } 12709 return result; 12710 case 'M': 12711 return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem'; 12712 case 'MM': 12713 if (number === 1) { 12714 result += withoutSuffix || isFuture ? 'mesec' : 'mesecem'; 12715 } else if (number === 2) { 12716 result += withoutSuffix || isFuture ? 'meseca' : 'mesecema'; 12717 } else if (number < 5) { 12718 result += withoutSuffix || isFuture ? 'mesece' : 'meseci'; 12719 } else { 12720 result += withoutSuffix || isFuture ? 'mesecev' : 'meseci'; 12721 } 12722 return result; 12723 case 'y': 12724 return withoutSuffix || isFuture ? 'eno leto' : 'enim letom'; 12725 case 'yy': 12726 if (number === 1) { 12727 result += withoutSuffix || isFuture ? 'leto' : 'letom'; 12728 } else if (number === 2) { 12729 result += withoutSuffix || isFuture ? 'leti' : 'letoma'; 12730 } else if (number < 5) { 12731 result += withoutSuffix || isFuture ? 'leta' : 'leti'; 12732 } else { 12733 result += withoutSuffix || isFuture ? 'let' : 'leti'; 12734 } 12735 return result; 12736 } 12737 } 12738 12739 var sl = moment.defineLocale('sl', { 12740 months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split( 12741 '_' 12742 ), 12743 monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split( 12744 '_' 12745 ), 12746 monthsParseExact: true, 12747 weekdays: 'nedelja_ponedeljek_torek_sreda_Äetrtek_petek_sobota'.split('_'), 12748 weekdaysShort: 'ned._pon._tor._sre._Äet._pet._sob.'.split('_'), 12749 weekdaysMin: 'ne_po_to_sr_Äe_pe_so'.split('_'), 12750 weekdaysParseExact: true, 12751 longDateFormat: { 12752 LT: 'H:mm', 12753 LTS: 'H:mm:ss', 12754 L: 'DD. MM. YYYY', 12755 LL: 'D. MMMM YYYY', 12756 LLL: 'D. MMMM YYYY H:mm', 12757 LLLL: 'dddd, D. MMMM YYYY H:mm', 12758 }, 12759 calendar: { 12760 sameDay: '[danes ob] LT', 12761 nextDay: '[jutri ob] LT', 12762 12763 nextWeek: function () { 12764 switch (this.day()) { 12765 case 0: 12766 return '[v] [nedeljo] [ob] LT'; 12767 case 3: 12768 return '[v] [sredo] [ob] LT'; 12769 case 6: 12770 return '[v] [soboto] [ob] LT'; 12771 case 1: 12772 case 2: 12773 case 4: 12774 case 5: 12775 return '[v] dddd [ob] LT'; 12776 } 12777 }, 12778 lastDay: '[vÄeraj ob] LT', 12779 lastWeek: function () { 12780 switch (this.day()) { 12781 case 0: 12782 return '[prejÅ¡njo] [nedeljo] [ob] LT'; 12783 case 3: 12784 return '[prejÅ¡njo] [sredo] [ob] LT'; 12785 case 6: 12786 return '[prejÅ¡njo] [soboto] [ob] LT'; 12787 case 1: 12788 case 2: 12789 case 4: 12790 case 5: 12791 return '[prejÅ¡nji] dddd [ob] LT'; 12792 } 12793 }, 12794 sameElse: 'L', 12795 }, 12796 relativeTime: { 12797 future: 'Äez %s', 12798 past: 'pred %s', 12799 s: processRelativeTime, 12800 ss: processRelativeTime, 12801 m: processRelativeTime, 12802 mm: processRelativeTime, 12803 h: processRelativeTime, 12804 hh: processRelativeTime, 12805 d: processRelativeTime, 12806 dd: processRelativeTime, 12807 M: processRelativeTime, 12808 MM: processRelativeTime, 12809 y: processRelativeTime, 12810 yy: processRelativeTime, 12811 }, 12812 dayOfMonthOrdinalParse: /\d{1,2}\./, 12813 ordinal: '%d.', 12814 week: { 12815 dow: 1, // Monday is the first day of the week. 12816 doy: 7, // The week that contains Jan 7th is the first week of the year. 12817 }, 12818 }); 12819 12820 return sl; 12821 12822}))); 12823 12824 12825/***/ }), 12826
vendor: 3,063 bytes, lines 12827-12911
12827/***/ "../../node_modules/moment/locale/sq.js": 12828/*!*********************************************************************************************************************************!*\ 12829 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/sq.js ***! 12830 \*********************************************************************************************************************************/ 12831/*! no static exports found */ 12832/***/ (function(module, exports, __webpack_require__) { 12833 12834//! moment.js locale configuration 12835//! locale : Albanian [sq] 12836//! author : Flakërim Ismani : https://github.com/flakerimi 12837//! author : Menelion Elensúle : https://github.com/Oire 12838//! author : Oerd Cukalla : https://github.com/oerd 12839 12840;(function (global, factory) { 12841 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 12842 undefined 12843}(this, (function (moment) { 'use strict'; 12844 12845 //! moment.js locale configuration 12846 12847 var sq = moment.defineLocale('sq', { 12848 months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split( 12849 '_' 12850 ), 12851 monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'), 12852 weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split( 12853 '_' 12854 ), 12855 weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'), 12856 weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'), 12857 weekdaysParseExact: true, 12858 meridiemParse: /PD|MD/, 12859 isPM: function (input) { 12860 return input.charAt(0) === 'M'; 12861 }, 12862 meridiem: function (hours, minutes, isLower) { 12863 return hours < 12 ? 'PD' : 'MD'; 12864 }, 12865 longDateFormat: { 12866 LT: 'HH:mm', 12867 LTS: 'HH:mm:ss', 12868 L: 'DD/MM/YYYY', 12869 LL: 'D MMMM YYYY', 12870 LLL: 'D MMMM YYYY HH:mm', 12871 LLLL: 'dddd, D MMMM YYYY HH:mm', 12872 }, 12873 calendar: { 12874 sameDay: '[Sot në] LT', 12875 nextDay: '[Nesër në] LT', 12876 nextWeek: 'dddd [në] LT', 12877 lastDay: '[Dje në] LT', 12878 lastWeek: 'dddd [e kaluar në] LT', 12879 sameElse: 'L', 12880 }, 12881 relativeTime: { 12882 future: 'në %s', 12883 past: '%s më parë', 12884 s: 'disa sekonda', 12885 ss: '%d sekonda', 12886 m: 'një minutë', 12887 mm: '%d minuta', 12888 h: 'një orë', 12889 hh: '%d orë', 12890 d: 'një ditë', 12891 dd: '%d ditë', 12892 M: 'një muaj', 12893 MM: '%d muaj', 12894 y: 'një vit', 12895 yy: '%d vite', 12896 }, 12897 dayOfMonthOrdinalParse: /\d{1,2}\./, 12898 ordinal: '%d.', 12899 week: { 12900 dow: 1, // Monday is the first day of the week. 12901 doy: 4, // The week that contains Jan 4th is the first week of the year. 12902 }, 12903 }); 12904 12905 return sq; 12906 12907}))); 12908 12909 12910/***/ }), 12911
vendor: 5,486 bytes, lines 12912-13046
12912/***/ "../../node_modules/moment/locale/sr-cyrl.js": 12913/*!**************************************************************************************************************************************!*\ 12914 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/sr-cyrl.js ***! 12915 \**************************************************************************************************************************************/ 12916/*! no static exports found */ 12917/***/ (function(module, exports, __webpack_require__) { 12918 12919//! moment.js locale configuration 12920//! locale : Serbian Cyrillic [sr-cyrl] 12921//! author : Milan JanaÄkoviÄ<[email protected]> : https://github.com/milan-j 12922 12923;(function (global, factory) { 12924 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 12925 undefined 12926}(this, (function (moment) { 'use strict'; 12927 12928 //! moment.js locale configuration 12929 12930 var translator = { 12931 words: { 12932 //Different grammatical cases 12933 ss: ['ÑекÑнда', 'ÑекÑнде', 'ÑекÑнди'], 12934 m: ['Ñедан минÑÑ', 'Ñедне минÑÑе'], 12935 mm: ['минÑÑ', 'минÑÑе', 'минÑÑа'], 12936 h: ['Ñедан ÑаÑ', 'Ñедног ÑаÑа'], 12937 hh: ['ÑаÑ', 'ÑаÑа', 'ÑаÑи'], 12938 dd: ['дан', 'дана', 'дана'], 12939 MM: ['меÑеÑ', 'меÑеÑа', 'меÑеÑи'], 12940 yy: ['година', 'године', 'година'], 12941 }, 12942 correctGrammaticalCase: function (number, wordKey) { 12943 return number === 1 12944 ? wordKey[0] 12945 : number >= 2 && number <= 4 12946 ? wordKey[1] 12947 : wordKey[2]; 12948 }, 12949 translate: function (number, withoutSuffix, key) { 12950 var wordKey = translator.words[key]; 12951 if (key.length === 1) { 12952 return withoutSuffix ? wordKey[0] : wordKey[1]; 12953 } else { 12954 return ( 12955 number + 12956 ' ' + 12957 translator.correctGrammaticalCase(number, wordKey) 12958 ); 12959 } 12960 }, 12961 }; 12962 12963 var srCyrl = moment.defineLocale('sr-cyrl', { 12964 months: 'ÑанÑаÑ_ÑебÑÑаÑ_маÑÑ_апÑил_маÑ_ÑÑн_ÑÑл_авгÑÑÑ_ÑепÑембаÑ_окÑобаÑ_новембаÑ_деÑембаÑ'.split( 12965 '_' 12966 ), 12967 monthsShort: 'Ñан._Ñеб._маÑ._апÑ._маÑ_ÑÑн_ÑÑл_авг._Ñеп._окÑ._нов._деÑ.'.split( 12968 '_' 12969 ), 12970 monthsParseExact: true, 12971 weekdays: 'недеÑа_понедеÑак_ÑÑоÑак_ÑÑеда_ÑеÑвÑÑак_пеÑак_ÑÑбоÑа'.split('_'), 12972 weekdaysShort: 'нед._пон._ÑÑо._ÑÑе._ÑеÑ._пеÑ._ÑÑб.'.split('_'), 12973 weekdaysMin: 'не_по_ÑÑ_ÑÑ_Ñе_пе_ÑÑ'.split('_'), 12974 weekdaysParseExact: true, 12975 longDateFormat: { 12976 LT: 'H:mm', 12977 LTS: 'H:mm:ss', 12978 L: 'DD.MM.YYYY', 12979 LL: 'D. MMMM YYYY', 12980 LLL: 'D. MMMM YYYY H:mm', 12981 LLLL: 'dddd, D. MMMM YYYY H:mm', 12982 }, 12983 calendar: { 12984 sameDay: '[Ð´Ð°Ð½Ð°Ñ Ñ] LT', 12985 nextDay: '[ÑÑÑÑа Ñ] LT', 12986 nextWeek: function () { 12987 switch (this.day()) { 12988 case 0: 12989 return '[Ñ] [недеÑÑ] [Ñ] LT'; 12990 case 3: 12991 return '[Ñ] [ÑÑедÑ] [Ñ] LT'; 12992 case 6: 12993 return '[Ñ] [ÑÑбоÑÑ] [Ñ] LT'; 12994 case 1: 12995 case 2: 12996 case 4: 12997 case 5: 12998 return '[Ñ] dddd [Ñ] LT'; 12999 } 13000 }, 13001 lastDay: '[ÑÑÑе Ñ] LT', 13002 lastWeek: function () { 13003 var lastWeekDays = [ 13004 '[пÑоÑле] [недеÑе] [Ñ] LT', 13005 '[пÑоÑлог] [понедеÑка] [Ñ] LT', 13006 '[пÑоÑлог] [ÑÑоÑка] [Ñ] LT', 13007 '[пÑоÑле] [ÑÑеде] [Ñ] LT', 13008 '[пÑоÑлог] [ÑеÑвÑÑка] [Ñ] LT', 13009 '[пÑоÑлог] [пеÑка] [Ñ] LT', 13010 '[пÑоÑле] [ÑÑбоÑе] [Ñ] LT', 13011 ]; 13012 return lastWeekDays[this.day()]; 13013 }, 13014 sameElse: 'L', 13015 }, 13016 relativeTime: { 13017 future: 'за %s', 13018 past: 'пÑе %s', 13019 s: 'неколико ÑекÑнди', 13020 ss: translator.translate, 13021 m: translator.translate, 13022 mm: translator.translate, 13023 h: translator.translate, 13024 hh: translator.translate, 13025 d: 'дан', 13026 dd: translator.translate, 13027 M: 'меÑеÑ', 13028 MM: translator.translate, 13029 y: 'годинÑ', 13030 yy: translator.translate, 13031 }, 13032 dayOfMonthOrdinalParse: /\d{1,2}\./, 13033 ordinal: '%d.', 13034 week: { 13035 dow: 1, // Monday is the first day of the week. 13036 doy: 7, // The week that contains Jan 7th is the first week of the year. 13037 }, 13038 }); 13039 13040 return srCyrl; 13041 13042}))); 13043 13044 13045/***/ }), 13046
vendor: 4,987 bytes, lines 13047-13183
13047/***/ "../../node_modules/moment/locale/sr.js": 13048/*!*********************************************************************************************************************************!*\ 13049 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/sr.js ***! 13050 \*********************************************************************************************************************************/ 13051/*! no static exports found */ 13052/***/ (function(module, exports, __webpack_require__) { 13053 13054//! moment.js locale configuration 13055//! locale : Serbian [sr] 13056//! author : Milan JanaÄkoviÄ<[email protected]> : https://github.com/milan-j 13057 13058;(function (global, factory) { 13059 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 13060 undefined 13061}(this, (function (moment) { 'use strict'; 13062 13063 //! moment.js locale configuration 13064 13065 var translator = { 13066 words: { 13067 //Different grammatical cases 13068 ss: ['sekunda', 'sekunde', 'sekundi'], 13069 m: ['jedan minut', 'jedne minute'], 13070 mm: ['minut', 'minute', 'minuta'], 13071 h: ['jedan sat', 'jednog sata'], 13072 hh: ['sat', 'sata', 'sati'], 13073 dd: ['dan', 'dana', 'dana'], 13074 MM: ['mesec', 'meseca', 'meseci'], 13075 yy: ['godina', 'godine', 'godina'], 13076 }, 13077 correctGrammaticalCase: function (number, wordKey) { 13078 return number === 1 13079 ? wordKey[0] 13080 : number >= 2 && number <= 4 13081 ? wordKey[1] 13082 : wordKey[2]; 13083 }, 13084 translate: function (number, withoutSuffix, key) { 13085 var wordKey = translator.words[key]; 13086 if (key.length === 1) { 13087 return withoutSuffix ? wordKey[0] : wordKey[1]; 13088 } else { 13089 return ( 13090 number + 13091 ' ' + 13092 translator.correctGrammaticalCase(number, wordKey) 13093 ); 13094 } 13095 }, 13096 }; 13097 13098 var sr = moment.defineLocale('sr', { 13099 months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split( 13100 '_' 13101 ), 13102 monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split( 13103 '_' 13104 ), 13105 monthsParseExact: true, 13106 weekdays: 'nedelja_ponedeljak_utorak_sreda_Äetvrtak_petak_subota'.split( 13107 '_' 13108 ), 13109 weekdaysShort: 'ned._pon._uto._sre._Äet._pet._sub.'.split('_'), 13110 weekdaysMin: 'ne_po_ut_sr_Äe_pe_su'.split('_'), 13111 weekdaysParseExact: true, 13112 longDateFormat: { 13113 LT: 'H:mm', 13114 LTS: 'H:mm:ss', 13115 L: 'DD.MM.YYYY', 13116 LL: 'D. MMMM YYYY', 13117 LLL: 'D. MMMM YYYY H:mm', 13118 LLLL: 'dddd, D. MMMM YYYY H:mm', 13119 }, 13120 calendar: { 13121 sameDay: '[danas u] LT', 13122 nextDay: '[sutra u] LT', 13123 nextWeek: function () { 13124 switch (this.day()) { 13125 case 0: 13126 return '[u] [nedelju] [u] LT'; 13127 case 3: 13128 return '[u] [sredu] [u] LT'; 13129 case 6: 13130 return '[u] [subotu] [u] LT'; 13131 case 1: 13132 case 2: 13133 case 4: 13134 case 5: 13135 return '[u] dddd [u] LT'; 13136 } 13137 }, 13138 lastDay: '[juÄe u] LT', 13139 lastWeek: function () { 13140 var lastWeekDays = [ 13141 '[proÅ¡le] [nedelje] [u] LT', 13142 '[proÅ¡log] [ponedeljka] [u] LT', 13143 '[proÅ¡log] [utorka] [u] LT', 13144 '[proÅ¡le] [srede] [u] LT', 13145 '[proÅ¡log] [Äetvrtka] [u] LT', 13146 '[proÅ¡log] [petka] [u] LT', 13147 '[proÅ¡le] [subote] [u] LT', 13148 ]; 13149 return lastWeekDays[this.day()]; 13150 }, 13151 sameElse: 'L', 13152 }, 13153 relativeTime: { 13154 future: 'za %s', 13155 past: 'pre %s', 13156 s: 'nekoliko sekundi', 13157 ss: translator.translate, 13158 m: translator.translate, 13159 mm: translator.translate, 13160 h: translator.translate, 13161 hh: translator.translate, 13162 d: 'dan', 13163 dd: translator.translate, 13164 M: 'mesec', 13165 MM: translator.translate, 13166 y: 'godinu', 13167 yy: translator.translate, 13168 }, 13169 dayOfMonthOrdinalParse: /\d{1,2}\./, 13170 ordinal: '%d.', 13171 week: { 13172 dow: 1, // Monday is the first day of the week. 13173 doy: 7, // The week that contains Jan 7th is the first week of the year. 13174 }, 13175 }); 13176 13177 return sr; 13178 13179}))); 13180 13181 13182/***/ }), 13183
vendor: 3,730 bytes, lines 13184-13286
13184/***/ "../../node_modules/moment/locale/ss.js": 13185/*!*********************************************************************************************************************************!*\ 13186 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ss.js ***! 13187 \*********************************************************************************************************************************/ 13188/*! no static exports found */ 13189/***/ (function(module, exports, __webpack_require__) { 13190 13191//! moment.js locale configuration 13192//! locale : siSwati [ss] 13193//! author : Nicolai Davies<[email protected]> : https://github.com/nicolaidavies 13194 13195;(function (global, factory) { 13196 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 13197 undefined 13198}(this, (function (moment) { 'use strict'; 13199 13200 //! moment.js locale configuration 13201 13202 var ss = moment.defineLocale('ss', { 13203 months: "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split( 13204 '_' 13205 ), 13206 monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'), 13207 weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split( 13208 '_' 13209 ), 13210 weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'), 13211 weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'), 13212 weekdaysParseExact: true, 13213 longDateFormat: { 13214 LT: 'h:mm A', 13215 LTS: 'h:mm:ss A', 13216 L: 'DD/MM/YYYY', 13217 LL: 'D MMMM YYYY', 13218 LLL: 'D MMMM YYYY h:mm A', 13219 LLLL: 'dddd, D MMMM YYYY h:mm A', 13220 }, 13221 calendar: { 13222 sameDay: '[Namuhla nga] LT', 13223 nextDay: '[Kusasa nga] LT', 13224 nextWeek: 'dddd [nga] LT', 13225 lastDay: '[Itolo nga] LT', 13226 lastWeek: 'dddd [leliphelile] [nga] LT', 13227 sameElse: 'L', 13228 }, 13229 relativeTime: { 13230 future: 'nga %s', 13231 past: 'wenteka nga %s', 13232 s: 'emizuzwana lomcane', 13233 ss: '%d mzuzwana', 13234 m: 'umzuzu', 13235 mm: '%d emizuzu', 13236 h: 'lihora', 13237 hh: '%d emahora', 13238 d: 'lilanga', 13239 dd: '%d emalanga', 13240 M: 'inyanga', 13241 MM: '%d tinyanga', 13242 y: 'umnyaka', 13243 yy: '%d iminyaka', 13244 }, 13245 meridiemParse: /ekuseni|emini|entsambama|ebusuku/, 13246 meridiem: function (hours, minutes, isLower) { 13247 if (hours < 11) { 13248 return 'ekuseni'; 13249 } else if (hours < 15) { 13250 return 'emini'; 13251 } else if (hours < 19) { 13252 return 'entsambama'; 13253 } else { 13254 return 'ebusuku'; 13255 } 13256 }, 13257 meridiemHour: function (hour, meridiem) { 13258 if (hour === 12) { 13259 hour = 0; 13260 } 13261 if (meridiem === 'ekuseni') { 13262 return hour; 13263 } else if (meridiem === 'emini') { 13264 return hour >= 11 ? hour : hour + 12; 13265 } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') { 13266 if (hour === 0) { 13267 return 0; 13268 } 13269 return hour + 12; 13270 } 13271 }, 13272 dayOfMonthOrdinalParse: /\d{1,2}/, 13273 ordinal: '%d', 13274 week: { 13275 dow: 1, // Monday is the first day of the week. 13276 doy: 4, // The week that contains Jan 4th is the first week of the year. 13277 }, 13278 }); 13279 13280 return ss; 13281 13282}))); 13283 13284 13285/***/ }), 13286
vendor: 3,165 bytes, lines 13287-13374
13287/***/ "../../node_modules/moment/locale/sv.js": 13288/*!*********************************************************************************************************************************!*\ 13289 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/sv.js ***! 13290 \*********************************************************************************************************************************/ 13291/*! no static exports found */ 13292/***/ (function(module, exports, __webpack_require__) { 13293 13294//! moment.js locale configuration 13295//! locale : Swedish [sv] 13296//! author : Jens Alm : https://github.com/ulmus 13297 13298;(function (global, factory) { 13299 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 13300 undefined 13301}(this, (function (moment) { 'use strict'; 13302 13303 //! moment.js locale configuration 13304 13305 var sv = moment.defineLocale('sv', { 13306 months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split( 13307 '_' 13308 ), 13309 monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'), 13310 weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'), 13311 weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'), 13312 weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'), 13313 longDateFormat: { 13314 LT: 'HH:mm', 13315 LTS: 'HH:mm:ss', 13316 L: 'YYYY-MM-DD', 13317 LL: 'D MMMM YYYY', 13318 LLL: 'D MMMM YYYY [kl.] HH:mm', 13319 LLLL: 'dddd D MMMM YYYY [kl.] HH:mm', 13320 lll: 'D MMM YYYY HH:mm', 13321 llll: 'ddd D MMM YYYY HH:mm', 13322 }, 13323 calendar: { 13324 sameDay: '[Idag] LT', 13325 nextDay: '[Imorgon] LT', 13326 lastDay: '[Igår] LT', 13327 nextWeek: '[På] dddd LT', 13328 lastWeek: '[I] dddd[s] LT', 13329 sameElse: 'L', 13330 }, 13331 relativeTime: { 13332 future: 'om %s', 13333 past: 'för %s sedan', 13334 s: 'några sekunder', 13335 ss: '%d sekunder', 13336 m: 'en minut', 13337 mm: '%d minuter', 13338 h: 'en timme', 13339 hh: '%d timmar', 13340 d: 'en dag', 13341 dd: '%d dagar', 13342 M: 'en månad', 13343 MM: '%d månader', 13344 y: 'ett år', 13345 yy: '%d år', 13346 }, 13347 dayOfMonthOrdinalParse: /\d{1,2}(\:e|\:a)/, 13348 ordinal: function (number) { 13349 var b = number % 10, 13350 output = 13351 ~~((number % 100) / 10) === 1 13352 ? ':e' 13353 : b === 1 13354 ? ':a' 13355 : b === 2 13356 ? ':a' 13357 : b === 3 13358 ? ':e' 13359 : ':e'; 13360 return number + output; 13361 }, 13362 week: { 13363 dow: 1, // Monday is the first day of the week. 13364 doy: 4, // The week that contains Jan 4th is the first week of the year. 13365 }, 13366 }); 13367 13368 return sv; 13369 13370}))); 13371 13372 13373/***/ }), 13374
vendor: 2,664 bytes, lines 13375-13448
13375/***/ "../../node_modules/moment/locale/sw.js": 13376/*!*********************************************************************************************************************************!*\ 13377 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/sw.js ***! 13378 \*********************************************************************************************************************************/ 13379/*! no static exports found */ 13380/***/ (function(module, exports, __webpack_require__) { 13381 13382//! moment.js locale configuration 13383//! locale : Swahili [sw] 13384//! author : Fahad Kassim : https://github.com/fadsel 13385 13386;(function (global, factory) { 13387 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 13388 undefined 13389}(this, (function (moment) { 'use strict'; 13390 13391 //! moment.js locale configuration 13392 13393 var sw = moment.defineLocale('sw', { 13394 months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split( 13395 '_' 13396 ), 13397 monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'), 13398 weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split( 13399 '_' 13400 ), 13401 weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'), 13402 weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'), 13403 weekdaysParseExact: true, 13404 longDateFormat: { 13405 LT: 'hh:mm A', 13406 LTS: 'HH:mm:ss', 13407 L: 'DD.MM.YYYY', 13408 LL: 'D MMMM YYYY', 13409 LLL: 'D MMMM YYYY HH:mm', 13410 LLLL: 'dddd, D MMMM YYYY HH:mm', 13411 }, 13412 calendar: { 13413 sameDay: '[leo saa] LT', 13414 nextDay: '[kesho saa] LT', 13415 nextWeek: '[wiki ijayo] dddd [saat] LT', 13416 lastDay: '[jana] LT', 13417 lastWeek: '[wiki iliyopita] dddd [saat] LT', 13418 sameElse: 'L', 13419 }, 13420 relativeTime: { 13421 future: '%s baadaye', 13422 past: 'tokea %s', 13423 s: 'hivi punde', 13424 ss: 'sekunde %d', 13425 m: 'dakika moja', 13426 mm: 'dakika %d', 13427 h: 'saa limoja', 13428 hh: 'masaa %d', 13429 d: 'siku moja', 13430 dd: 'siku %d', 13431 M: 'mwezi mmoja', 13432 MM: 'miezi %d', 13433 y: 'mwaka mmoja', 13434 yy: 'miaka %d', 13435 }, 13436 week: { 13437 dow: 1, // Monday is the first day of the week. 13438 doy: 7, // The week that contains Jan 7th is the first week of the year. 13439 }, 13440 }); 13441 13442 return sw; 13443 13444}))); 13445 13446 13447/***/ }), 13448
vendor: 6,188 bytes, lines 13449-13597
13449/***/ "../../node_modules/moment/locale/ta.js": 13450/*!*********************************************************************************************************************************!*\ 13451 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ta.js ***! 13452 \*********************************************************************************************************************************/ 13453/*! no static exports found */ 13454/***/ (function(module, exports, __webpack_require__) { 13455 13456//! moment.js locale configuration 13457//! locale : Tamil [ta] 13458//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404 13459 13460;(function (global, factory) { 13461 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 13462 undefined 13463}(this, (function (moment) { 'use strict'; 13464 13465 //! moment.js locale configuration 13466 13467 var symbolMap = { 13468 '1': '௧', 13469 '2': '௨', 13470 '3': '௩', 13471 '4': '௪', 13472 '5': '௫', 13473 '6': '௬', 13474 '7': 'à¯', 13475 '8': '௮', 13476 '9': '௯', 13477 '0': '௦', 13478 }, 13479 numberMap = { 13480 '௧': '1', 13481 '௨': '2', 13482 '௩': '3', 13483 '௪': '4', 13484 '௫': '5', 13485 '௬': '6', 13486 'à¯': '7', 13487 '௮': '8', 13488 '௯': '9', 13489 '௦': '0', 13490 }; 13491 13492 var ta = moment.defineLocale('ta', { 13493 months: 'à®à®©à®µà®°à®¿_பிபà¯à®°à®µà®°à®¿_மாரà¯à®à¯_à®à®ªà¯à®°à®²à¯_à®®à¯_à®à¯à®©à¯_à®à¯à®²à¯_à®à®à®¸à¯à®à¯_à®à¯à®ªà¯à®à¯à®®à¯à®ªà®°à¯_à® à®à¯à®à¯à®¾à®ªà®°à¯_நவமà¯à®ªà®°à¯_à®à®¿à®à®®à¯à®ªà®°à¯'.split( 13494 '_' 13495 ), 13496 monthsShort: 'à®à®©à®µà®°à®¿_பிபà¯à®°à®µà®°à®¿_மாரà¯à®à¯_à®à®ªà¯à®°à®²à¯_à®®à¯_à®à¯à®©à¯_à®à¯à®²à¯_à®à®à®¸à¯à®à¯_à®à¯à®ªà¯à®à¯à®®à¯à®ªà®°à¯_à® à®à¯à®à¯à®¾à®ªà®°à¯_நவமà¯à®ªà®°à¯_à®à®¿à®à®®à¯à®ªà®°à¯'.split( 13497 '_' 13498 ), 13499 weekdays: 'à®à®¾à®¯à®¿à®±à¯à®±à¯à®à¯à®à®¿à®´à®®à¯_திà®à¯à®à®à¯à®à®¿à®´à®®à¯_à®à¯à®µà¯à®µà®¾à®¯à¯à®à®¿à®´à®®à¯_பà¯à®¤à®©à¯à®à®¿à®´à®®à¯_வியாழà®à¯à®à®¿à®´à®®à¯_வà¯à®³à¯à®³à®¿à®à¯à®à®¿à®´à®®à¯_à®à®©à®¿à®à¯à®à®¿à®´à®®à¯'.split( 13500 '_' 13501 ), 13502 weekdaysShort: 'à®à®¾à®¯à®¿à®±à¯_திà®à¯à®à®³à¯_à®à¯à®µà¯à®µà®¾à®¯à¯_பà¯à®¤à®©à¯_வியாழனà¯_வà¯à®³à¯à®³à®¿_à®à®©à®¿'.split( 13503 '_' 13504 ), 13505 weekdaysMin: 'à®à®¾_தி_à®à¯_பà¯_வி_வà¯_à®'.split('_'), 13506 longDateFormat: { 13507 LT: 'HH:mm', 13508 LTS: 'HH:mm:ss', 13509 L: 'DD/MM/YYYY', 13510 LL: 'D MMMM YYYY', 13511 LLL: 'D MMMM YYYY, HH:mm', 13512 LLLL: 'dddd, D MMMM YYYY, HH:mm', 13513 }, 13514 calendar: { 13515 sameDay: '[à®à®©à¯à®±à¯] LT', 13516 nextDay: '[நாளà¯] LT', 13517 nextWeek: 'dddd, LT', 13518 lastDay: '[நà¯à®±à¯à®±à¯] LT', 13519 lastWeek: '[à®à®à®¨à¯à®¤ வாரமà¯] dddd, LT', 13520 sameElse: 'L', 13521 }, 13522 relativeTime: { 13523 future: '%s à®à®²à¯', 13524 past: '%s à®®à¯à®©à¯', 13525 s: 'à®à®°à¯ à®à®¿à®² விநாà®à®¿à®à®³à¯', 13526 ss: '%d விநாà®à®¿à®à®³à¯', 13527 m: 'à®à®°à¯ நிமிà®à®®à¯', 13528 mm: '%d நிமிà®à®à¯à®à®³à¯', 13529 h: 'à®à®°à¯ மணி நà¯à®°à®®à¯', 13530 hh: '%d மணி நà¯à®°à®®à¯', 13531 d: 'à®à®°à¯ நாளà¯', 13532 dd: '%d நாà®à¯à®à®³à¯', 13533 M: 'à®à®°à¯ மாதமà¯', 13534 MM: '%d மாதà®à¯à®à®³à¯', 13535 y: 'à®à®°à¯ வரà¯à®à®®à¯', 13536 yy: '%d à®à®£à¯à®à¯à®à®³à¯', 13537 }, 13538 dayOfMonthOrdinalParse: /\d{1,2}வதà¯/, 13539 ordinal: function (number) { 13540 return number + 'வதà¯'; 13541 }, 13542 preparse: function (string) { 13543 return string.replace(/[௧௨௩௪௫௬à¯à¯®à¯¯à¯¦]/g, function (match) { 13544 return numberMap[match]; 13545 }); 13546 }, 13547 postformat: function (string) { 13548 return string.replace(/\d/g, function (match) { 13549 return symbolMap[match]; 13550 }); 13551 }, 13552 // refer http://ta.wikipedia.org/s/1er1 13553 meridiemParse: /யாமமà¯|வà¯à®à®±à¯|à®à®¾à®²à¯|நணà¯à®ªà®à®²à¯|à®à®±à¯à®ªà®¾à®à¯|மாலà¯/, 13554 meridiem: function (hour, minute, isLower) { 13555 if (hour < 2) { 13556 return ' யாமமà¯'; 13557 } else if (hour < 6) { 13558 return ' வà¯à®à®±à¯'; // வà¯à®à®±à¯ 13559 } else if (hour < 10) { 13560 return ' à®à®¾à®²à¯'; // à®à®¾à®²à¯ 13561 } else if (hour < 14) { 13562 return ' நணà¯à®ªà®à®²à¯'; // நணà¯à®ªà®à®²à¯ 13563 } else if (hour < 18) { 13564 return ' à®à®±à¯à®ªà®¾à®à¯'; // à®à®±à¯à®ªà®¾à®à¯ 13565 } else if (hour < 22) { 13566 return ' மாலà¯'; // மால௠13567 } else { 13568 return ' யாமமà¯'; 13569 } 13570 }, 13571 meridiemHour: function (hour, meridiem) { 13572 if (hour === 12) { 13573 hour = 0; 13574 } 13575 if (meridiem === 'யாமமà¯') { 13576 return hour < 2 ? hour : hour + 12; 13577 } else if (meridiem === 'வà¯à®à®±à¯' || meridiem === 'à®à®¾à®²à¯') { 13578 return hour; 13579 } else if (meridiem === 'நணà¯à®ªà®à®²à¯') { 13580 return hour >= 10 ? hour : hour + 12; 13581 } else { 13582 return hour + 12; 13583 } 13584 }, 13585 week: { 13586 dow: 0, // Sunday is the first day of the week. 13587 doy: 6, // The week that contains Jan 6th is the first week of the year. 13588 }, 13589 }); 13590 13591 return ta; 13592 13593}))); 13594 13595 13596/***/ }), 13597
vendor: 4,549 bytes, lines 13598-13703
13598/***/ "../../node_modules/moment/locale/te.js": 13599/*!*********************************************************************************************************************************!*\ 13600 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/te.js ***! 13601 \*********************************************************************************************************************************/ 13602/*! no static exports found */ 13603/***/ (function(module, exports, __webpack_require__) { 13604 13605//! moment.js locale configuration 13606//! locale : Telugu [te] 13607//! author : Krishna Chaitanya Thota : https://github.com/kcthota 13608 13609;(function (global, factory) { 13610 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 13611 undefined 13612}(this, (function (moment) { 'use strict'; 13613 13614 //! moment.js locale configuration 13615 13616 var te = moment.defineLocale('te', { 13617 months: 'à°à°¨à°µà°°à°¿_à°«à°¿à°¬à±à°°à°µà°°à°¿_మారà±à°à°¿_à°à°ªà±à°°à°¿à°²à±_à°®à±_à°à±à°¨à±_à°à±à°²à±_à°à°à°¸à±à°à±_à°¸à±à°ªà±à°à±à°à°¬à°°à±_à° à°à±à°à±à°¬à°°à±_నవà°à°¬à°°à±_à°¡à°¿à°¸à±à°à°¬à°°à±'.split( 13618 '_' 13619 ), 13620 monthsShort: 'à°à°¨._à°«à°¿à°¬à±à°°._మారà±à°à°¿_à°à°ªà±à°°à°¿._à°®à±_à°à±à°¨à±_à°à±à°²à±_à°à°._à°¸à±à°ªà±._à° à°à±à°à±._నవ._à°¡à°¿à°¸à±.'.split( 13621 '_' 13622 ), 13623 monthsParseExact: true, 13624 weekdays: 'à°à°¦à°¿à°µà°¾à°°à°_à°¸à±à°®à°µà°¾à°°à°_à°®à°à°à°³à°µà°¾à°°à°_à°¬à±à°§à°µà°¾à°°à°_à°à±à°°à±à°µà°¾à°°à°_à°¶à±à°à±à°°à°µà°¾à°°à°_శనివారà°'.split( 13625 '_' 13626 ), 13627 weekdaysShort: 'à°à°¦à°¿_à°¸à±à°®_à°®à°à°à°³_à°¬à±à°§_à°à±à°°à±_à°¶à±à°à±à°°_శని'.split('_'), 13628 weekdaysMin: 'à°_à°¸à±_à°®à°_à°¬à±_à°à±_à°¶à±_à°¶'.split('_'), 13629 longDateFormat: { 13630 LT: 'A h:mm', 13631 LTS: 'A h:mm:ss', 13632 L: 'DD/MM/YYYY', 13633 LL: 'D MMMM YYYY', 13634 LLL: 'D MMMM YYYY, A h:mm', 13635 LLLL: 'dddd, D MMMM YYYY, A h:mm', 13636 }, 13637 calendar: { 13638 sameDay: '[à°¨à±à°¡à±] LT', 13639 nextDay: '[à°°à±à°ªà±] LT', 13640 nextWeek: 'dddd, LT', 13641 lastDay: '[నినà±à°¨] LT', 13642 lastWeek: '[à°à°¤] dddd, LT', 13643 sameElse: 'L', 13644 }, 13645 relativeTime: { 13646 future: '%s à°²à±', 13647 past: '%s à°à±à°°à°¿à°¤à°', 13648 s: 'à°à±à°¨à±à°¨à°¿ à°à±à°·à°£à°¾à°²à±', 13649 ss: '%d à°¸à±à°à°¨à±à°²à±', 13650 m: 'à°à° నిమిషà°', 13651 mm: '%d నిమిషాలà±', 13652 h: 'à°à° à°à°à°', 13653 hh: '%d à°à°à°à°²à±', 13654 d: 'à°à° à°°à±à°à±', 13655 dd: '%d à°°à±à°à±à°²à±', 13656 M: 'à°à° à°¨à±à°²', 13657 MM: '%d à°¨à±à°²à°²à±', 13658 y: 'à°à° à°¸à°à°µà°¤à±à°¸à°°à°', 13659 yy: '%d à°¸à°à°µà°¤à±à°¸à°°à°¾à°²à±', 13660 }, 13661 dayOfMonthOrdinalParse: /\d{1,2}à°µ/, 13662 ordinal: '%dà°µ', 13663 meridiemParse: /రాతà±à°°à°¿|à°à°¦à°¯à°|మధà±à°¯à°¾à°¹à±à°¨à°|సాయà°à°¤à±à°°à°/, 13664 meridiemHour: function (hour, meridiem) { 13665 if (hour === 12) { 13666 hour = 0; 13667 } 13668 if (meridiem === 'రాతà±à°°à°¿') { 13669 return hour < 4 ? hour : hour + 12; 13670 } else if (meridiem === 'à°à°¦à°¯à°') { 13671 return hour; 13672 } else if (meridiem === 'మధà±à°¯à°¾à°¹à±à°¨à°') { 13673 return hour >= 10 ? hour : hour + 12; 13674 } else if (meridiem === 'సాయà°à°¤à±à°°à°') { 13675 return hour + 12; 13676 } 13677 }, 13678 meridiem: function (hour, minute, isLower) { 13679 if (hour < 4) { 13680 return 'రాతà±à°°à°¿'; 13681 } else if (hour < 10) { 13682 return 'à°à°¦à°¯à°'; 13683 } else if (hour < 17) { 13684 return 'మధà±à°¯à°¾à°¹à±à°¨à°'; 13685 } else if (hour < 20) { 13686 return 'సాయà°à°¤à±à°°à°'; 13687 } else { 13688 return 'రాతà±à°°à°¿'; 13689 } 13690 }, 13691 week: { 13692 dow: 0, // Sunday is the first day of the week. 13693 doy: 6, // The week that contains Jan 6th is the first week of the year. 13694 }, 13695 }); 13696 13697 return te; 13698 13699}))); 13700 13701 13702/***/ }), 13703
vendor: 3,252 bytes, lines 13704-13791
13704/***/ "../../node_modules/moment/locale/tet.js": 13705/*!**********************************************************************************************************************************!*\ 13706 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/tet.js ***! 13707 \**********************************************************************************************************************************/ 13708/*! no static exports found */ 13709/***/ (function(module, exports, __webpack_require__) { 13710 13711//! moment.js locale configuration 13712//! locale : Tetun Dili (East Timor) [tet] 13713//! author : Joshua Brooks : https://github.com/joshbrooks 13714//! author : Onorio De J. Afonso : https://github.com/marobo 13715//! author : Sonia Simoes : https://github.com/soniasimoes 13716 13717;(function (global, factory) { 13718 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 13719 undefined 13720}(this, (function (moment) { 'use strict'; 13721 13722 //! moment.js locale configuration 13723 13724 var tet = moment.defineLocale('tet', { 13725 months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split( 13726 '_' 13727 ), 13728 monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'), 13729 weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'), 13730 weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'), 13731 weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'), 13732 longDateFormat: { 13733 LT: 'HH:mm', 13734 LTS: 'HH:mm:ss', 13735 L: 'DD/MM/YYYY', 13736 LL: 'D MMMM YYYY', 13737 LLL: 'D MMMM YYYY HH:mm', 13738 LLLL: 'dddd, D MMMM YYYY HH:mm', 13739 }, 13740 calendar: { 13741 sameDay: '[Ohin iha] LT', 13742 nextDay: '[Aban iha] LT', 13743 nextWeek: 'dddd [iha] LT', 13744 lastDay: '[Horiseik iha] LT', 13745 lastWeek: 'dddd [semana kotuk] [iha] LT', 13746 sameElse: 'L', 13747 }, 13748 relativeTime: { 13749 future: 'iha %s', 13750 past: '%s liuba', 13751 s: 'segundu balun', 13752 ss: 'segundu %d', 13753 m: 'minutu ida', 13754 mm: 'minutu %d', 13755 h: 'oras ida', 13756 hh: 'oras %d', 13757 d: 'loron ida', 13758 dd: 'loron %d', 13759 M: 'fulan ida', 13760 MM: 'fulan %d', 13761 y: 'tinan ida', 13762 yy: 'tinan %d', 13763 }, 13764 dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/, 13765 ordinal: function (number) { 13766 var b = number % 10, 13767 output = 13768 ~~((number % 100) / 10) === 1 13769 ? 'th' 13770 : b === 1 13771 ? 'st' 13772 : b === 2 13773 ? 'nd' 13774 : b === 3 13775 ? 'rd' 13776 : 'th'; 13777 return number + output; 13778 }, 13779 week: { 13780 dow: 1, // Monday is the first day of the week. 13781 doy: 4, // The week that contains Jan 4th is the first week of the year. 13782 }, 13783 }); 13784 13785 return tet; 13786 13787}))); 13788 13789 13790/***/ }), 13791
vendor: 4,651 bytes, lines 13792-13922
13792/***/ "../../node_modules/moment/locale/tg.js": 13793/*!*********************************************************************************************************************************!*\ 13794 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/tg.js ***! 13795 \*********************************************************************************************************************************/ 13796/*! no static exports found */ 13797/***/ (function(module, exports, __webpack_require__) { 13798 13799//! moment.js locale configuration 13800//! locale : Tajik [tg] 13801//! author : Orif N. Jr. : https://github.com/orif-jr 13802 13803;(function (global, factory) { 13804 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 13805 undefined 13806}(this, (function (moment) { 'use strict'; 13807 13808 //! moment.js locale configuration 13809 13810 var suffixes = { 13811 0: '-Ñм', 13812 1: '-Ñм', 13813 2: '-Ñм', 13814 3: '-Ñм', 13815 4: '-Ñм', 13816 5: '-Ñм', 13817 6: '-Ñм', 13818 7: '-Ñм', 13819 8: '-Ñм', 13820 9: '-Ñм', 13821 10: '-Ñм', 13822 12: '-Ñм', 13823 13: '-Ñм', 13824 20: '-Ñм', 13825 30: '-Ñм', 13826 40: '-Ñм', 13827 50: '-Ñм', 13828 60: '-Ñм', 13829 70: '-Ñм', 13830 80: '-Ñм', 13831 90: '-Ñм', 13832 100: '-Ñм', 13833 }; 13834 13835 var tg = moment.defineLocale('tg', { 13836 months: 'ÑнваÑ_ÑевÑал_маÑÑ_апÑел_май_иÑн_иÑл_авгÑÑÑ_ÑенÑÑбÑ_окÑÑбÑ_ноÑбÑ_декабÑ'.split( 13837 '_' 13838 ), 13839 monthsShort: 'Ñнв_Ñев_маÑ_апÑ_май_иÑн_иÑл_авг_Ñен_окÑ_ноÑ_дек'.split('_'), 13840 weekdays: 'ÑкÑанбе_дÑÑанбе_ÑеÑанбе_ÑоÑÑанбе_панҷÑанбе_Ò·ÑмÑа_Ñанбе'.split( 13841 '_' 13842 ), 13843 weekdaysShort: 'ÑÑб_дÑб_ÑÑб_ÑÑб_пÑб_Ò·Ñм_Ñнб'.split('_'), 13844 weekdaysMin: 'ÑÑ_дÑ_ÑÑ_ÑÑ_пÑ_ҷм_Ñб'.split('_'), 13845 longDateFormat: { 13846 LT: 'HH:mm', 13847 LTS: 'HH:mm:ss', 13848 L: 'DD/MM/YYYY', 13849 LL: 'D MMMM YYYY', 13850 LLL: 'D MMMM YYYY HH:mm', 13851 LLLL: 'dddd, D MMMM YYYY HH:mm', 13852 }, 13853 calendar: { 13854 sameDay: '[ÐмÑӯз ÑоаÑи] LT', 13855 nextDay: '[Ðагоҳ ÑоаÑи] LT', 13856 lastDay: '[ÐиÑӯз ÑоаÑи] LT', 13857 nextWeek: 'dddd[и] [ҳаÑÑаи оÑнда ÑоаÑи] LT', 13858 lastWeek: 'dddd[и] [ҳаÑÑаи гÑзаÑÑа ÑоаÑи] LT', 13859 sameElse: 'L', 13860 }, 13861 relativeTime: { 13862 future: 'баÑди %s', 13863 past: '%s пеÑ', 13864 s: 'ÑкÑанд ÑониÑ', 13865 m: 'Ñк даÒиÒа', 13866 mm: '%d даÒиÒа', 13867 h: 'Ñк ÑоаÑ', 13868 hh: '%d ÑоаÑ', 13869 d: 'Ñк Ñӯз', 13870 dd: '%d Ñӯз', 13871 M: 'Ñк моҳ', 13872 MM: '%d моҳ', 13873 y: 'Ñк Ñол', 13874 yy: '%d Ñол', 13875 }, 13876 meridiemParse: /Ñаб|ÑÑбҳ|Ñӯз|бегоҳ/, 13877 meridiemHour: function (hour, meridiem) { 13878 if (hour === 12) { 13879 hour = 0; 13880 } 13881 if (meridiem === 'Ñаб') { 13882 return hour < 4 ? hour : hour + 12; 13883 } else if (meridiem === 'ÑÑбҳ') { 13884 return hour; 13885 } else if (meridiem === 'Ñӯз') { 13886 return hour >= 11 ? hour : hour + 12; 13887 } else if (meridiem === 'бегоҳ') { 13888 return hour + 12; 13889 } 13890 }, 13891 meridiem: function (hour, minute, isLower) { 13892 if (hour < 4) { 13893 return 'Ñаб'; 13894 } else if (hour < 11) { 13895 return 'ÑÑбҳ'; 13896 } else if (hour < 16) { 13897 return 'Ñӯз'; 13898 } else if (hour < 19) { 13899 return 'бегоҳ'; 13900 } else { 13901 return 'Ñаб'; 13902 } 13903 }, 13904 dayOfMonthOrdinalParse: /\d{1,2}-(Ñм|Ñм)/, 13905 ordinal: function (number) { 13906 var a = number % 10, 13907 b = number >= 100 ? 100 : null; 13908 return number + (suffixes[number] || suffixes[a] || suffixes[b]); 13909 }, 13910 week: { 13911 dow: 1, // Monday is the first day of the week. 13912 doy: 7, // The week that contains Jan 1th is the first week of the year. 13913 }, 13914 }); 13915 13916 return tg; 13917 13918}))); 13919 13920 13921/***/ }), 13922
vendor: 3,711 bytes, lines 13923-14004
13923/***/ "../../node_modules/moment/locale/th.js": 13924/*!*********************************************************************************************************************************!*\ 13925 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/th.js ***! 13926 \*********************************************************************************************************************************/ 13927/*! no static exports found */ 13928/***/ (function(module, exports, __webpack_require__) { 13929 13930//! moment.js locale configuration 13931//! locale : Thai [th] 13932//! author : Kridsada Thanabulpong : https://github.com/sirn 13933 13934;(function (global, factory) { 13935 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 13936 undefined 13937}(this, (function (moment) { 'use strict'; 13938 13939 //! moment.js locale configuration 13940 13941 var th = moment.defineLocale('th', { 13942 months: 'มà¸à¸£à¸²à¸à¸¡_à¸à¸¸à¸¡à¸ าà¸à¸±à¸à¸à¹_มีà¸à¸²à¸à¸¡_à¹à¸¡à¸©à¸²à¸¢à¸_à¸à¸¤à¸©à¸ าà¸à¸¡_มิà¸à¸¸à¸à¸²à¸¢à¸_à¸à¸£à¸à¸à¸²à¸à¸¡_สิà¸à¸«à¸²à¸à¸¡_à¸à¸±à¸à¸¢à¸²à¸¢à¸_à¸à¸¸à¸¥à¸²à¸à¸¡_à¸à¸¤à¸¨à¸à¸´à¸à¸²à¸¢à¸_à¸à¸±à¸à¸§à¸²à¸à¸¡'.split( 13943 '_' 13944 ), 13945 monthsShort: 'ม.à¸._à¸.à¸._มี.à¸._à¹à¸¡.ย._à¸.à¸._มิ.ย._à¸.à¸._ส.à¸._à¸.ย._à¸.à¸._à¸.ย._à¸.à¸.'.split( 13946 '_' 13947 ), 13948 monthsParseExact: true, 13949 weekdays: 'à¸à¸²à¸à¸´à¸à¸¢à¹_à¸à¸±à¸à¸à¸£à¹_à¸à¸±à¸à¸à¸²à¸£_à¸à¸¸à¸_à¸à¸¤à¸«à¸±à¸ªà¸à¸à¸µ_ศุà¸à¸£à¹_à¹à¸ªà¸²à¸£à¹'.split('_'), 13950 weekdaysShort: 'à¸à¸²à¸à¸´à¸à¸¢à¹_à¸à¸±à¸à¸à¸£à¹_à¸à¸±à¸à¸à¸²à¸£_à¸à¸¸à¸_à¸à¸¤à¸«à¸±à¸ª_ศุà¸à¸£à¹_à¹à¸ªà¸²à¸£à¹'.split('_'), // yes, three characters difference 13951 weekdaysMin: 'à¸à¸²._à¸._à¸._à¸._à¸à¸¤._ศ._ส.'.split('_'), 13952 weekdaysParseExact: true, 13953 longDateFormat: { 13954 LT: 'H:mm', 13955 LTS: 'H:mm:ss', 13956 L: 'DD/MM/YYYY', 13957 LL: 'D MMMM YYYY', 13958 LLL: 'D MMMM YYYY à¹à¸§à¸¥à¸² H:mm', 13959 LLLL: 'วัà¸ddddà¸à¸µà¹ D MMMM YYYY à¹à¸§à¸¥à¸² H:mm', 13960 }, 13961 meridiemParse: /à¸à¹à¸à¸à¹à¸à¸µà¹à¸¢à¸|หลัà¸à¹à¸à¸µà¹à¸¢à¸/, 13962 isPM: function (input) { 13963 return input === 'หลัà¸à¹à¸à¸µà¹à¸¢à¸'; 13964 }, 13965 meridiem: function (hour, minute, isLower) { 13966 if (hour < 12) { 13967 return 'à¸à¹à¸à¸à¹à¸à¸µà¹à¸¢à¸'; 13968 } else { 13969 return 'หลัà¸à¹à¸à¸µà¹à¸¢à¸'; 13970 } 13971 }, 13972 calendar: { 13973 sameDay: '[วัà¸à¸à¸µà¹ à¹à¸§à¸¥à¸²] LT', 13974 nextDay: '[à¸à¸£à¸¸à¹à¸à¸à¸µà¹ à¹à¸§à¸¥à¸²] LT', 13975 nextWeek: 'dddd[หà¸à¹à¸² à¹à¸§à¸¥à¸²] LT', 13976 lastDay: '[à¹à¸¡à¸·à¹à¸à¸§à¸²à¸à¸à¸µà¹ à¹à¸§à¸¥à¸²] LT', 13977 lastWeek: '[วัà¸]dddd[à¸à¸µà¹à¹à¸¥à¹à¸§ à¹à¸§à¸¥à¸²] LT', 13978 sameElse: 'L', 13979 }, 13980 relativeTime: { 13981 future: 'à¸à¸µà¸ %s', 13982 past: '%sà¸à¸µà¹à¹à¸¥à¹à¸§', 13983 s: 'à¹à¸¡à¹à¸à¸µà¹à¸§à¸´à¸à¸²à¸à¸µ', 13984 ss: '%d วิà¸à¸²à¸à¸µ', 13985 m: '1 à¸à¸²à¸à¸µ', 13986 mm: '%d à¸à¸²à¸à¸µ', 13987 h: '1 à¸à¸±à¹à¸§à¹à¸¡à¸', 13988 hh: '%d à¸à¸±à¹à¸§à¹à¸¡à¸', 13989 d: '1 วัà¸', 13990 dd: '%d วัà¸', 13991 M: '1 à¹à¸à¸·à¸à¸', 13992 MM: '%d à¹à¸à¸·à¸à¸', 13993 y: '1 à¸à¸µ', 13994 yy: '%d à¸à¸µ', 13995 }, 13996 }); 13997 13998 return th; 13999 14000}))); 14001 14002 14003/***/ }), 14004
vendor: 3,699 bytes, lines 14005-14115
14005/***/ "../../node_modules/moment/locale/tk.js": 14006/*!*********************************************************************************************************************************!*\ 14007 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/tk.js ***! 14008 \*********************************************************************************************************************************/ 14009/*! no static exports found */ 14010/***/ (function(module, exports, __webpack_require__) { 14011 14012//! moment.js locale configuration 14013//! locale : Turkmen [trk] 14014//! author : Atamyrat Abdyrahmanov : https://github.com/atamyratabdy 14015 14016;(function (global, factory) { 14017 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 14018 undefined 14019}(this, (function (moment) { 'use strict'; 14020 14021 //! moment.js locale configuration 14022 14023 var suffixes = { 14024 1: "'inji", 14025 5: "'inji", 14026 8: "'inji", 14027 70: "'inji", 14028 80: "'inji", 14029 2: "'nji", 14030 7: "'nji", 14031 20: "'nji", 14032 50: "'nji", 14033 3: "'ünji", 14034 4: "'ünji", 14035 100: "'ünji", 14036 6: "'njy", 14037 9: "'unjy", 14038 10: "'unjy", 14039 30: "'unjy", 14040 60: "'ynjy", 14041 90: "'ynjy", 14042 }; 14043 14044 var tk = moment.defineLocale('tk', { 14045 months: 'Ãanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split( 14046 '_' 14047 ), 14048 monthsShort: 'Ãan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'), 14049 weekdays: 'ÃekÅenbe_DuÅenbe_SiÅenbe_ÃarÅenbe_PenÅenbe_Anna_Åenbe'.split( 14050 '_' 14051 ), 14052 weekdaysShort: 'Ãek_DuÅ_SiÅ_Ãar_Pen_Ann_Åen'.split('_'), 14053 weekdaysMin: 'Ãk_DÅ_SÅ_Ãr_Pn_An_Ån'.split('_'), 14054 longDateFormat: { 14055 LT: 'HH:mm', 14056 LTS: 'HH:mm:ss', 14057 L: 'DD.MM.YYYY', 14058 LL: 'D MMMM YYYY', 14059 LLL: 'D MMMM YYYY HH:mm', 14060 LLLL: 'dddd, D MMMM YYYY HH:mm', 14061 }, 14062 calendar: { 14063 sameDay: '[bugün sagat] LT', 14064 nextDay: '[ertir sagat] LT', 14065 nextWeek: '[indiki] dddd [sagat] LT', 14066 lastDay: '[düýn] LT', 14067 lastWeek: '[geçen] dddd [sagat] LT', 14068 sameElse: 'L', 14069 }, 14070 relativeTime: { 14071 future: '%s soÅ', 14072 past: '%s öÅ', 14073 s: 'birnäçe sekunt', 14074 m: 'bir minut', 14075 mm: '%d minut', 14076 h: 'bir sagat', 14077 hh: '%d sagat', 14078 d: 'bir gün', 14079 dd: '%d gün', 14080 M: 'bir aý', 14081 MM: '%d aý', 14082 y: 'bir ýyl', 14083 yy: '%d ýyl', 14084 }, 14085 ordinal: function (number, period) { 14086 switch (period) { 14087 case 'd': 14088 case 'D': 14089 case 'Do': 14090 case 'DD': 14091 return number; 14092 default: 14093 if (number === 0) { 14094 // special case for zero 14095 return number + "'unjy"; 14096 } 14097 var a = number % 10, 14098 b = (number % 100) - a, 14099 c = number >= 100 ? 100 : null; 14100 return number + (suffixes[a] || suffixes[b] || suffixes[c]); 14101 } 14102 }, 14103 week: { 14104 dow: 1, // Monday is the first day of the week. 14105 doy: 7, // The week that contains Jan 7th is the first week of the year. 14106 }, 14107 }); 14108 14109 return tk; 14110 14111}))); 14112 14113 14114/***/ }), 14115
vendor: 2,795 bytes, lines 14116-14192
14116/***/ "../../node_modules/moment/locale/tl-ph.js": 14117/*!************************************************************************************************************************************!*\ 14118 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/tl-ph.js ***! 14119 \************************************************************************************************************************************/ 14120/*! no static exports found */ 14121/***/ (function(module, exports, __webpack_require__) { 14122 14123//! moment.js locale configuration 14124//! locale : Tagalog (Philippines) [tl-ph] 14125//! author : Dan Hagman : https://github.com/hagmandan 14126 14127;(function (global, factory) { 14128 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 14129 undefined 14130}(this, (function (moment) { 'use strict'; 14131 14132 //! moment.js locale configuration 14133 14134 var tlPh = moment.defineLocale('tl-ph', { 14135 months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split( 14136 '_' 14137 ), 14138 monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'), 14139 weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split( 14140 '_' 14141 ), 14142 weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'), 14143 weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'), 14144 longDateFormat: { 14145 LT: 'HH:mm', 14146 LTS: 'HH:mm:ss', 14147 L: 'MM/D/YYYY', 14148 LL: 'MMMM D, YYYY', 14149 LLL: 'MMMM D, YYYY HH:mm', 14150 LLLL: 'dddd, MMMM DD, YYYY HH:mm', 14151 }, 14152 calendar: { 14153 sameDay: 'LT [ngayong araw]', 14154 nextDay: '[Bukas ng] LT', 14155 nextWeek: 'LT [sa susunod na] dddd', 14156 lastDay: 'LT [kahapon]', 14157 lastWeek: 'LT [noong nakaraang] dddd', 14158 sameElse: 'L', 14159 }, 14160 relativeTime: { 14161 future: 'sa loob ng %s', 14162 past: '%s ang nakalipas', 14163 s: 'ilang segundo', 14164 ss: '%d segundo', 14165 m: 'isang minuto', 14166 mm: '%d minuto', 14167 h: 'isang oras', 14168 hh: '%d oras', 14169 d: 'isang araw', 14170 dd: '%d araw', 14171 M: 'isang buwan', 14172 MM: '%d buwan', 14173 y: 'isang taon', 14174 yy: '%d taon', 14175 }, 14176 dayOfMonthOrdinalParse: /\d{1,2}/, 14177 ordinal: function (number) { 14178 return number; 14179 }, 14180 week: { 14181 dow: 1, // Monday is the first day of the week. 14182 doy: 4, // The week that contains Jan 4th is the first week of the year. 14183 }, 14184 }); 14185 14186 return tlPh; 14187 14188}))); 14189 14190 14191/***/ }), 14192
vendor: 5,121 bytes, lines 14193-14337
14193/***/ "../../node_modules/moment/locale/tlh.js": 14194/*!**********************************************************************************************************************************!*\ 14195 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/tlh.js ***! 14196 \**********************************************************************************************************************************/ 14197/*! no static exports found */ 14198/***/ (function(module, exports, __webpack_require__) { 14199 14200//! moment.js locale configuration 14201//! locale : Klingon [tlh] 14202//! author : Dominika Kruk : https://github.com/amaranthrose 14203 14204;(function (global, factory) { 14205 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 14206 undefined 14207}(this, (function (moment) { 'use strict'; 14208 14209 //! moment.js locale configuration 14210 14211 var numbersNouns = 'pagh_waâ_chaâ_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_'); 14212 14213 function translateFuture(output) { 14214 var time = output; 14215 time = 14216 output.indexOf('jaj') !== -1 14217 ? time.slice(0, -3) + 'leS' 14218 : output.indexOf('jar') !== -1 14219 ? time.slice(0, -3) + 'waQ' 14220 : output.indexOf('DIS') !== -1 14221 ? time.slice(0, -3) + 'nem' 14222 : time + ' pIq'; 14223 return time; 14224 } 14225 14226 function translatePast(output) { 14227 var time = output; 14228 time = 14229 output.indexOf('jaj') !== -1 14230 ? time.slice(0, -3) + 'Huâ' 14231 : output.indexOf('jar') !== -1 14232 ? time.slice(0, -3) + 'wen' 14233 : output.indexOf('DIS') !== -1 14234 ? time.slice(0, -3) + 'ben' 14235 : time + ' ret'; 14236 return time; 14237 } 14238 14239 function translate(number, withoutSuffix, string, isFuture) { 14240 var numberNoun = numberAsNoun(number); 14241 switch (string) { 14242 case 'ss': 14243 return numberNoun + ' lup'; 14244 case 'mm': 14245 return numberNoun + ' tup'; 14246 case 'hh': 14247 return numberNoun + ' rep'; 14248 case 'dd': 14249 return numberNoun + ' jaj'; 14250 case 'MM': 14251 return numberNoun + ' jar'; 14252 case 'yy': 14253 return numberNoun + ' DIS'; 14254 } 14255 } 14256 14257 function numberAsNoun(number) { 14258 var hundred = Math.floor((number % 1000) / 100), 14259 ten = Math.floor((number % 100) / 10), 14260 one = number % 10, 14261 word = ''; 14262 if (hundred > 0) { 14263 word += numbersNouns[hundred] + 'vatlh'; 14264 } 14265 if (ten > 0) { 14266 word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH'; 14267 } 14268 if (one > 0) { 14269 word += (word !== '' ? ' ' : '') + numbersNouns[one]; 14270 } 14271 return word === '' ? 'pagh' : word; 14272 } 14273 14274 var tlh = moment.defineLocale('tlh', { 14275 months: 'teraâ jar waâ_teraâ jar chaâ_teraâ jar wej_teraâ jar loS_teraâ jar vagh_teraâ jar jav_teraâ jar Soch_teraâ jar chorgh_teraâ jar Hut_teraâ jar waâmaH_teraâ jar waâmaH waâ_teraâ jar waâmaH chaâ'.split( 14276 '_' 14277 ), 14278 monthsShort: 'jar waâ_jar chaâ_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar waâmaH_jar waâmaH waâ_jar waâmaH chaâ'.split( 14279 '_' 14280 ), 14281 monthsParseExact: true, 14282 weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split( 14283 '_' 14284 ), 14285 weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split( 14286 '_' 14287 ), 14288 weekdaysMin: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split( 14289 '_' 14290 ), 14291 longDateFormat: { 14292 LT: 'HH:mm', 14293 LTS: 'HH:mm:ss', 14294 L: 'DD.MM.YYYY', 14295 LL: 'D MMMM YYYY', 14296 LLL: 'D MMMM YYYY HH:mm', 14297 LLLL: 'dddd, D MMMM YYYY HH:mm', 14298 }, 14299 calendar: { 14300 sameDay: '[DaHjaj] LT', 14301 nextDay: '[waâleS] LT', 14302 nextWeek: 'LLL', 14303 lastDay: '[waâHuâ] LT', 14304 lastWeek: 'LLL', 14305 sameElse: 'L', 14306 }, 14307 relativeTime: { 14308 future: translateFuture, 14309 past: translatePast, 14310 s: 'puS lup', 14311 ss: translate, 14312 m: 'waâ tup', 14313 mm: translate, 14314 h: 'waâ rep', 14315 hh: translate, 14316 d: 'waâ jaj', 14317 dd: translate, 14318 M: 'waâ jar', 14319 MM: translate, 14320 y: 'waâ DIS', 14321 yy: translate, 14322 }, 14323 dayOfMonthOrdinalParse: /\d{1,2}\./, 14324 ordinal: '%d.', 14325 week: { 14326 dow: 1, // Monday is the first day of the week. 14327 doy: 4, // The week that contains Jan 4th is the first week of the year. 14328 }, 14329 }); 14330 14331 return tlh; 14332 14333}))); 14334 14335 14336/***/ }), 14337
vendor: 4,150 bytes, lines 14338-14461
14338/***/ "../../node_modules/moment/locale/tr.js": 14339/*!*********************************************************************************************************************************!*\ 14340 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/tr.js ***! 14341 \*********************************************************************************************************************************/ 14342/*! no static exports found */ 14343/***/ (function(module, exports, __webpack_require__) { 14344 14345//! moment.js locale configuration 14346//! locale : Turkish [tr] 14347//! authors : Erhan Gundogan : https://github.com/erhangundogan, 14348//! Burak YiÄit Kaya: https://github.com/BYK 14349 14350;(function (global, factory) { 14351 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 14352 undefined 14353}(this, (function (moment) { 'use strict'; 14354 14355 //! moment.js locale configuration 14356 14357 var suffixes = { 14358 1: "'inci", 14359 5: "'inci", 14360 8: "'inci", 14361 70: "'inci", 14362 80: "'inci", 14363 2: "'nci", 14364 7: "'nci", 14365 20: "'nci", 14366 50: "'nci", 14367 3: "'üncü", 14368 4: "'üncü", 14369 100: "'üncü", 14370 6: "'ncı", 14371 9: "'uncu", 14372 10: "'uncu", 14373 30: "'uncu", 14374 60: "'ıncı", 14375 90: "'ıncı", 14376 }; 14377 14378 var tr = moment.defineLocale('tr', { 14379 months: 'Ocak_Åubat_Mart_Nisan_Mayıs_Haziran_Temmuz_AÄustos_Eylül_Ekim_Kasım_Aralık'.split( 14380 '_' 14381 ), 14382 monthsShort: 'Oca_Åub_Mar_Nis_May_Haz_Tem_AÄu_Eyl_Eki_Kas_Ara'.split('_'), 14383 weekdays: 'Pazar_Pazartesi_Salı_ÃarÅamba_PerÅembe_Cuma_Cumartesi'.split( 14384 '_' 14385 ), 14386 weekdaysShort: 'Paz_Pts_Sal_Ãar_Per_Cum_Cts'.split('_'), 14387 weekdaysMin: 'Pz_Pt_Sa_Ãa_Pe_Cu_Ct'.split('_'), 14388 meridiem: function (hours, minutes, isLower) { 14389 if (hours < 12) { 14390 return isLower ? 'öö' : 'ÃÃ'; 14391 } else { 14392 return isLower ? 'ös' : 'ÃS'; 14393 } 14394 }, 14395 meridiemParse: /öö|ÃÃ|ös|ÃS/, 14396 isPM: function (input) { 14397 return input === 'ös' || input === 'ÃS'; 14398 }, 14399 longDateFormat: { 14400 LT: 'HH:mm', 14401 LTS: 'HH:mm:ss', 14402 L: 'DD.MM.YYYY', 14403 LL: 'D MMMM YYYY', 14404 LLL: 'D MMMM YYYY HH:mm', 14405 LLLL: 'dddd, D MMMM YYYY HH:mm', 14406 }, 14407 calendar: { 14408 sameDay: '[bugün saat] LT', 14409 nextDay: '[yarın saat] LT', 14410 nextWeek: '[gelecek] dddd [saat] LT', 14411 lastDay: '[dün] LT', 14412 lastWeek: '[geçen] dddd [saat] LT', 14413 sameElse: 'L', 14414 }, 14415 relativeTime: { 14416 future: '%s sonra', 14417 past: '%s önce', 14418 s: 'birkaç saniye', 14419 ss: '%d saniye', 14420 m: 'bir dakika', 14421 mm: '%d dakika', 14422 h: 'bir saat', 14423 hh: '%d saat', 14424 d: 'bir gün', 14425 dd: '%d gün', 14426 M: 'bir ay', 14427 MM: '%d ay', 14428 y: 'bir yıl', 14429 yy: '%d yıl', 14430 }, 14431 ordinal: function (number, period) { 14432 switch (period) { 14433 case 'd': 14434 case 'D': 14435 case 'Do': 14436 case 'DD': 14437 return number; 14438 default: 14439 if (number === 0) { 14440 // special case for zero 14441 return number + "'ıncı"; 14442 } 14443 var a = number % 10, 14444 b = (number % 100) - a, 14445 c = number >= 100 ? 100 : null; 14446 return number + (suffixes[a] || suffixes[b] || suffixes[c]); 14447 } 14448 }, 14449 week: { 14450 dow: 1, // Monday is the first day of the week. 14451 doy: 7, // The week that contains Jan 7th is the first week of the year. 14452 }, 14453 }); 14454 14455 return tr; 14456 14457}))); 14458 14459 14460/***/ }), 14461
vendor: 4,311 bytes, lines 14462-14570
14462/***/ "../../node_modules/moment/locale/tzl.js": 14463/*!**********************************************************************************************************************************!*\ 14464 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/tzl.js ***! 14465 \**********************************************************************************************************************************/ 14466/*! no static exports found */ 14467/***/ (function(module, exports, __webpack_require__) { 14468 14469//! moment.js locale configuration 14470//! locale : Talossan [tzl] 14471//! author : Robin van der Vliet : https://github.com/robin0van0der0v 14472//! author : Iustì Canun 14473 14474;(function (global, factory) { 14475 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 14476 undefined 14477}(this, (function (moment) { 'use strict'; 14478 14479 //! moment.js locale configuration 14480 14481 // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals. 14482 // This is currently too difficult (maybe even impossible) to add. 14483 var tzl = moment.defineLocale('tzl', { 14484 months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split( 14485 '_' 14486 ), 14487 monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'), 14488 weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'), 14489 weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'), 14490 weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'), 14491 longDateFormat: { 14492 LT: 'HH.mm', 14493 LTS: 'HH.mm.ss', 14494 L: 'DD.MM.YYYY', 14495 LL: 'D. MMMM [dallas] YYYY', 14496 LLL: 'D. MMMM [dallas] YYYY HH.mm', 14497 LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm', 14498 }, 14499 meridiemParse: /d\'o|d\'a/i, 14500 isPM: function (input) { 14501 return "d'o" === input.toLowerCase(); 14502 }, 14503 meridiem: function (hours, minutes, isLower) { 14504 if (hours > 11) { 14505 return isLower ? "d'o" : "D'O"; 14506 } else { 14507 return isLower ? "d'a" : "D'A"; 14508 } 14509 }, 14510 calendar: { 14511 sameDay: '[oxhi à ] LT', 14512 nextDay: '[demà à ] LT', 14513 nextWeek: 'dddd [à ] LT', 14514 lastDay: '[ieiri à ] LT', 14515 lastWeek: '[sür el] dddd [lasteu à ] LT', 14516 sameElse: 'L', 14517 }, 14518 relativeTime: { 14519 future: 'osprei %s', 14520 past: 'ja%s', 14521 s: processRelativeTime, 14522 ss: processRelativeTime, 14523 m: processRelativeTime, 14524 mm: processRelativeTime, 14525 h: processRelativeTime, 14526 hh: processRelativeTime, 14527 d: processRelativeTime, 14528 dd: processRelativeTime, 14529 M: processRelativeTime, 14530 MM: processRelativeTime, 14531 y: processRelativeTime, 14532 yy: processRelativeTime, 14533 }, 14534 dayOfMonthOrdinalParse: /\d{1,2}\./, 14535 ordinal: '%d.', 14536 week: { 14537 dow: 1, // Monday is the first day of the week. 14538 doy: 4, // The week that contains Jan 4th is the first week of the year. 14539 }, 14540 }); 14541 14542 function processRelativeTime(number, withoutSuffix, key, isFuture) { 14543 var format = { 14544 s: ['viensas secunds', "'iensas secunds"], 14545 ss: [number + ' secunds', '' + number + ' secunds'], 14546 m: ["'n mÃut", "'iens mÃut"], 14547 mm: [number + ' mÃuts', '' + number + ' mÃuts'], 14548 h: ["'n þora", "'iensa þora"], 14549 hh: [number + ' þoras', '' + number + ' þoras'], 14550 d: ["'n ziua", "'iensa ziua"], 14551 dd: [number + ' ziuas', '' + number + ' ziuas'], 14552 M: ["'n mes", "'iens mes"], 14553 MM: [number + ' mesen', '' + number + ' mesen'], 14554 y: ["'n ar", "'iens ar"], 14555 yy: [number + ' ars', '' + number + ' ars'], 14556 }; 14557 return isFuture 14558 ? format[key][0] 14559 : withoutSuffix 14560 ? format[key][0] 14561 : format[key][1]; 14562 } 14563 14564 return tzl; 14565 14566}))); 14567 14568 14569/***/ }), 14570
vendor: 2,733 bytes, lines 14571-14643
14571/***/ "../../node_modules/moment/locale/tzm-latn.js": 14572/*!***************************************************************************************************************************************!*\ 14573 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/tzm-latn.js ***! 14574 \***************************************************************************************************************************************/ 14575/*! no static exports found */ 14576/***/ (function(module, exports, __webpack_require__) { 14577 14578//! moment.js locale configuration 14579//! locale : Central Atlas Tamazight Latin [tzm-latn] 14580//! author : Abdel Said : https://github.com/abdelsaid 14581 14582;(function (global, factory) { 14583 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 14584 undefined 14585}(this, (function (moment) { 'use strict'; 14586 14587 //! moment.js locale configuration 14588 14589 var tzmLatn = moment.defineLocale('tzm-latn', { 14590 months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_É£wÅ¡t_Å¡wtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split( 14591 '_' 14592 ), 14593 monthsShort: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_É£wÅ¡t_Å¡wtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split( 14594 '_' 14595 ), 14596 weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiá¸yas'.split('_'), 14597 weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiá¸yas'.split('_'), 14598 weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiá¸yas'.split('_'), 14599 longDateFormat: { 14600 LT: 'HH:mm', 14601 LTS: 'HH:mm:ss', 14602 L: 'DD/MM/YYYY', 14603 LL: 'D MMMM YYYY', 14604 LLL: 'D MMMM YYYY HH:mm', 14605 LLLL: 'dddd D MMMM YYYY HH:mm', 14606 }, 14607 calendar: { 14608 sameDay: '[asdkh g] LT', 14609 nextDay: '[aska g] LT', 14610 nextWeek: 'dddd [g] LT', 14611 lastDay: '[assant g] LT', 14612 lastWeek: 'dddd [g] LT', 14613 sameElse: 'L', 14614 }, 14615 relativeTime: { 14616 future: 'dadkh s yan %s', 14617 past: 'yan %s', 14618 s: 'imik', 14619 ss: '%d imik', 14620 m: 'minuá¸', 14621 mm: '%d minuá¸', 14622 h: 'saÉa', 14623 hh: '%d tassaÉin', 14624 d: 'ass', 14625 dd: '%d ossan', 14626 M: 'ayowr', 14627 MM: '%d iyyirn', 14628 y: 'asgas', 14629 yy: '%d isgasn', 14630 }, 14631 week: { 14632 dow: 6, // Saturday is the first day of the week. 14633 doy: 12, // The week that contains Jan 12th is the first week of the year. 14634 }, 14635 }); 14636 14637 return tzmLatn; 14638 14639}))); 14640 14641 14642/***/ }), 14643
vendor: 3,336 bytes, lines 14644-14716
14644/***/ "../../node_modules/moment/locale/tzm.js": 14645/*!**********************************************************************************************************************************!*\ 14646 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/tzm.js ***! 14647 \**********************************************************************************************************************************/ 14648/*! no static exports found */ 14649/***/ (function(module, exports, __webpack_require__) { 14650 14651//! moment.js locale configuration 14652//! locale : Central Atlas Tamazight [tzm] 14653//! author : Abdel Said : https://github.com/abdelsaid 14654 14655;(function (global, factory) { 14656 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 14657 undefined 14658}(this, (function (moment) { 'use strict'; 14659 14660 //! moment.js locale configuration 14661 14662 var tzm = moment.defineLocale('tzm', { 14663 months: 'âµâµâµâ´°âµ¢âµ_â´±âµâ´°âµ¢âµ_âµâ´°âµâµ_âµâ´±âµâµâµ_âµâ´°âµ¢âµ¢âµ_âµ¢âµâµâµ¢âµ_âµ¢âµâµâµ¢âµâµ£_âµâµâµâµ_âµâµâµâ´°âµâ´±âµâµ_â´½âµâµâ´±âµ_âµâµâµ¡â´°âµâ´±âµâµ_â´·âµâµâµâ´±âµâµ'.split( 14664 '_' 14665 ), 14666 monthsShort: 'âµâµâµâ´°âµ¢âµ_â´±âµâ´°âµ¢âµ_âµâ´°âµâµ_âµâ´±âµâµâµ_âµâ´°âµ¢âµ¢âµ_âµ¢âµâµâµ¢âµ_âµ¢âµâµâµ¢âµâµ£_âµâµâµâµ_âµâµâµâ´°âµâ´±âµâµ_â´½âµâµâ´±âµ_âµâµâµ¡â´°âµâ´±âµâµ_â´·âµâµâµâ´±âµâµ'.split( 14667 '_' 14668 ), 14669 weekdays: 'â´°âµâ´°âµâ´°âµ_â´°âµ¢âµâ´°âµ_â´°âµâµâµâ´°âµ_â´°â´½âµâ´°âµ_ⴰⴽⵡⴰâµ_â´°âµâµâµâµ¡â´°âµ_â´°âµâµâ´¹âµ¢â´°âµ'.split('_'), 14670 weekdaysShort: 'â´°âµâ´°âµâ´°âµ_â´°âµ¢âµâ´°âµ_â´°âµâµâµâ´°âµ_â´°â´½âµâ´°âµ_ⴰⴽⵡⴰâµ_â´°âµâµâµâµ¡â´°âµ_â´°âµâµâ´¹âµ¢â´°âµ'.split('_'), 14671 weekdaysMin: 'â´°âµâ´°âµâ´°âµ_â´°âµ¢âµâ´°âµ_â´°âµâµâµâ´°âµ_â´°â´½âµâ´°âµ_ⴰⴽⵡⴰâµ_â´°âµâµâµâµ¡â´°âµ_â´°âµâµâ´¹âµ¢â´°âµ'.split('_'), 14672 longDateFormat: { 14673 LT: 'HH:mm', 14674 LTS: 'HH:mm:ss', 14675 L: 'DD/MM/YYYY', 14676 LL: 'D MMMM YYYY', 14677 LLL: 'D MMMM YYYY HH:mm', 14678 LLLL: 'dddd D MMMM YYYY HH:mm', 14679 }, 14680 calendar: { 14681 sameDay: '[â´°âµâ´·âµ â´´] LT', 14682 nextDay: '[â´°âµâ´½â´° â´´] LT', 14683 nextWeek: 'dddd [â´´] LT', 14684 lastDay: '[â´°âµâ´°âµâµ â´´] LT', 14685 lastWeek: 'dddd [â´´] LT', 14686 sameElse: 'L', 14687 }, 14688 relativeTime: { 14689 future: 'ⴷⴰⴷⵠⵠⵢⴰⵠ%s', 14690 past: 'ⵢⴰⵠ%s', 14691 s: 'âµâµâµâ´½', 14692 ss: '%d âµâµâµâ´½', 14693 m: 'âµâµâµâµâ´º', 14694 mm: '%d âµâµâµâµâ´º', 14695 h: 'âµâ´°âµâ´°', 14696 hh: '%d âµâ´°âµâµâ´°âµâµâµ', 14697 d: 'â´°âµâµ', 14698 dd: '%d oâµâµâ´°âµ', 14699 M: 'â´°âµ¢oâµâµ', 14700 MM: '%d âµâµ¢âµ¢âµâµâµ', 14701 y: 'â´°âµâ´³â´°âµ', 14702 yy: '%d âµâµâ´³â´°âµâµ', 14703 }, 14704 week: { 14705 dow: 6, // Saturday is the first day of the week. 14706 doy: 12, // The week that contains Jan 12th is the first week of the year. 14707 }, 14708 }); 14709 14710 return tzm; 14711 14712}))); 14713 14714 14715/***/ }), 14716
vendor: 5,189 bytes, lines 14717-14846
14717/***/ "../../node_modules/moment/locale/ug-cn.js": 14718/*!************************************************************************************************************************************!*\ 14719 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ug-cn.js ***! 14720 \************************************************************************************************************************************/ 14721/*! no static exports found */ 14722/***/ (function(module, exports, __webpack_require__) { 14723 14724//! moment.js language configuration 14725//! locale : Uyghur (China) [ug-cn] 14726//! author: boyaq : https://github.com/boyaq 14727 14728;(function (global, factory) { 14729 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 14730 undefined 14731}(this, (function (moment) { 'use strict'; 14732 14733 //! moment.js language configuration 14734 14735 var ugCn = moment.defineLocale('ug-cn', { 14736 months: 'ÙØ§ÙÛØ§Ø±_ÙÛÛØ±Ø§Ù_٠ارت_ئاپرÛÙ_٠اÙ_ئÙÙÛÙ_ئÙÙÛÙ_Ø¦Ø§ÛØºÛست_سÛÙØªÛØ¨ÙØ±_ئÛÙØªÛØ¨ÙØ±_ÙÙÙØ§Ø¨Ùر_دÛÙØ§Ø¨Ùر'.split( 14737 '_' 14738 ), 14739 monthsShort: 'ÙØ§ÙÛØ§Ø±_ÙÛÛØ±Ø§Ù_٠ارت_ئاپرÛÙ_٠اÙ_ئÙÙÛÙ_ئÙÙÛÙ_Ø¦Ø§ÛØºÛست_سÛÙØªÛØ¨ÙØ±_ئÛÙØªÛØ¨ÙØ±_ÙÙÙØ§Ø¨Ùر_دÛÙØ§Ø¨Ùر'.split( 14740 '_' 14741 ), 14742 weekdays: 'ÙÛÙØ´ÛÙØ¨Û_Ø¯ÛØ´ÛÙØ¨Û_سÛÙØ´ÛÙØ¨Û_ÚØ§Ø±Ø´ÛÙØ¨Û_Ù¾ÛÙØ´ÛÙØ¨Û_جÛÙ Û_Ø´ÛÙØ¨Û'.split( 14743 '_' 14744 ), 14745 weekdaysShort: 'ÙÛ_دÛ_سÛ_ÚØ§_Ù¾Û_جÛ_Ø´Û'.split('_'), 14746 weekdaysMin: 'ÙÛ_دÛ_سÛ_ÚØ§_Ù¾Û_جÛ_Ø´Û'.split('_'), 14747 longDateFormat: { 14748 LT: 'HH:mm', 14749 LTS: 'HH:mm:ss', 14750 L: 'YYYY-MM-DD', 14751 LL: 'YYYY-ÙÙÙÙM-ئاÙÙÙÚD-ÙÛÙÙ', 14752 LLL: 'YYYY-ÙÙÙÙM-ئاÙÙÙÚD-ÙÛÙÙØ HH:mm', 14753 LLLL: 'ddddØ YYYY-ÙÙÙÙM-ئاÙÙÙÚD-ÙÛÙÙØ HH:mm', 14754 }, 14755 meridiemParse: /ÙÛØ±ÙÙ ÙÛÚÛ|سÛÚ¾ÛØ±|ÚÛØ´ØªÙÙ Ø¨ÛØ±ÛÙ|ÚÛØ´|ÚÛØ´ØªÙÙ ÙÛÙÙÙ|ÙÛÚ/, 14756 meridiemHour: function (hour, meridiem) { 14757 if (hour === 12) { 14758 hour = 0; 14759 } 14760 if ( 14761 meridiem === 'ÙÛØ±ÙÙ ÙÛÚÛ' || 14762 meridiem === 'سÛÚ¾ÛØ±' || 14763 meridiem === 'ÚÛØ´ØªÙÙ Ø¨ÛØ±ÛÙ' 14764 ) { 14765 return hour; 14766 } else if (meridiem === 'ÚÛØ´ØªÙÙ ÙÛÙÙÙ' || meridiem === 'ÙÛÚ') { 14767 return hour + 12; 14768 } else { 14769 return hour >= 11 ? hour : hour + 12; 14770 } 14771 }, 14772 meridiem: function (hour, minute, isLower) { 14773 var hm = hour * 100 + minute; 14774 if (hm < 600) { 14775 return 'ÙÛØ±ÙÙ ÙÛÚÛ'; 14776 } else if (hm < 900) { 14777 return 'سÛÚ¾ÛØ±'; 14778 } else if (hm < 1130) { 14779 return 'ÚÛØ´ØªÙÙ Ø¨ÛØ±ÛÙ'; 14780 } else if (hm < 1230) { 14781 return 'ÚÛØ´'; 14782 } else if (hm < 1800) { 14783 return 'ÚÛØ´ØªÙÙ ÙÛÙÙÙ'; 14784 } else { 14785 return 'ÙÛÚ'; 14786 } 14787 }, 14788 calendar: { 14789 sameDay: '[بÛÚ¯ÛÙ Ø³Ø§Ø¦ÛØª] LT', 14790 nextDay: '[Ø¦ÛØªÛ Ø³Ø§Ø¦ÛØª] LT', 14791 nextWeek: '[ÙÛÙÛØ±ÙÙ] dddd [Ø³Ø§Ø¦ÛØª] LT', 14792 lastDay: '[تÛÙÛÚ¯ÛÙ] LT', 14793 lastWeek: '[Ø¦Ø§ÙØ¯ÙÙÙÙ] dddd [Ø³Ø§Ø¦ÛØª] LT', 14794 sameElse: 'L', 14795 }, 14796 relativeTime: { 14797 future: '%s ÙÛÙÙÙ', 14798 past: '%s Ø¨ÛØ±ÛÙ', 14799 s: 'ÙÛÚÚÛ Ø³ÛÙÙÙØª', 14800 ss: '%d سÛÙÙÙØª', 14801 m: 'Ø¨ÙØ± Ù ÙÙÛØª', 14802 mm: '%d Ù ÙÙÛØª', 14803 h: 'Ø¨ÙØ± Ø³Ø§Ø¦ÛØª', 14804 hh: '%d Ø³Ø§Ø¦ÛØª', 14805 d: 'Ø¨ÙØ± ÙÛÙ', 14806 dd: '%d ÙÛÙ', 14807 M: 'Ø¨ÙØ± ئاÙ', 14808 MM: '%d ئاÙ', 14809 y: 'Ø¨ÙØ± ÙÙÙ', 14810 yy: '%d ÙÙÙ', 14811 }, 14812 14813 dayOfMonthOrdinalParse: /\d{1,2}(-ÙÛÙÙ|-ئاÙ|-Ú¾ÛپتÛ)/, 14814 ordinal: function (number, period) { 14815 switch (period) { 14816 case 'd': 14817 case 'D': 14818 case 'DDD': 14819 return number + '-ÙÛÙÙ'; 14820 case 'w': 14821 case 'W': 14822 return number + '-Ú¾ÛپتÛ'; 14823 default: 14824 return number; 14825 } 14826 }, 14827 preparse: function (string) { 14828 return string.replace(/Ø/g, ','); 14829 }, 14830 postformat: function (string) { 14831 return string.replace(/,/g, 'Ø'); 14832 }, 14833 week: { 14834 // GB/T 7408-1994ãæ°æ®å åäº¤æ¢æ ¼å¼Â·ä¿¡æ¯äº¤æ¢Â·æ¥æåæ¶é´è¡¨ç¤ºæ³ãä¸ISO 8601:1988çæ 14835 dow: 1, // Monday is the first day of the week. 14836 doy: 7, // The week that contains Jan 1st is the first week of the year. 14837 }, 14838 }); 14839 14840 return ugCn; 14841 14842}))); 14843 14844 14845/***/ }), 14846
vendor: 7,421 bytes, lines 14847-15029
14847/***/ "../../node_modules/moment/locale/uk.js": 14848/*!*********************************************************************************************************************************!*\ 14849 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/uk.js ***! 14850 \*********************************************************************************************************************************/ 14851/*! no static exports found */ 14852/***/ (function(module, exports, __webpack_require__) { 14853 14854//! moment.js locale configuration 14855//! locale : Ukrainian [uk] 14856//! author : zemlanin : https://github.com/zemlanin 14857//! Author : Menelion Elensúle : https://github.com/Oire 14858 14859;(function (global, factory) { 14860 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 14861 undefined 14862}(this, (function (moment) { 'use strict'; 14863 14864 //! moment.js locale configuration 14865 14866 function plural(word, num) { 14867 var forms = word.split('_'); 14868 return num % 10 === 1 && num % 100 !== 11 14869 ? forms[0] 14870 : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) 14871 ? forms[1] 14872 : forms[2]; 14873 } 14874 function relativeTimeWithPlural(number, withoutSuffix, key) { 14875 var format = { 14876 ss: withoutSuffix ? 'ÑекÑнда_ÑекÑнди_ÑекÑнд' : 'ÑекÑндÑ_ÑекÑнди_ÑекÑнд', 14877 mm: withoutSuffix ? 'Ñ Ð²Ð¸Ð»Ð¸Ð½Ð°_Ñ Ð²Ð¸Ð»Ð¸Ð½Ð¸_Ñ Ð²Ð¸Ð»Ð¸Ð½' : 'Ñ Ð²Ð¸Ð»Ð¸Ð½Ñ_Ñ Ð²Ð¸Ð»Ð¸Ð½Ð¸_Ñ Ð²Ð¸Ð»Ð¸Ð½', 14878 hh: withoutSuffix ? 'година_години_годин' : 'годинÑ_години_годин', 14879 dd: 'денÑ_днÑ_днÑв', 14880 MM: 'мÑÑÑÑÑ_мÑÑÑÑÑ_мÑÑÑÑÑв', 14881 yy: 'ÑÑк_Ñоки_ÑокÑв', 14882 }; 14883 if (key === 'm') { 14884 return withoutSuffix ? 'Ñ Ð²Ð¸Ð»Ð¸Ð½Ð°' : 'Ñ Ð²Ð¸Ð»Ð¸Ð½Ñ'; 14885 } else if (key === 'h') { 14886 return withoutSuffix ? 'година' : 'годинÑ'; 14887 } else { 14888 return number + ' ' + plural(format[key], +number); 14889 } 14890 } 14891 function weekdaysCaseReplace(m, format) { 14892 var weekdays = { 14893 nominative: 'недÑлÑ_понедÑлок_вÑвÑоÑок_ÑеÑеда_ÑеÑвеÑ_пâÑÑниÑÑ_ÑÑбоÑа'.split( 14894 '_' 14895 ), 14896 accusative: 'недÑлÑ_понедÑлок_вÑвÑоÑок_ÑеÑедÑ_ÑеÑвеÑ_пâÑÑниÑÑ_ÑÑбоÑÑ'.split( 14897 '_' 14898 ), 14899 genitive: 'недÑлÑ_понедÑлка_вÑвÑоÑка_ÑеÑеди_ÑеÑвеÑга_пâÑÑниÑÑ_ÑÑбоÑи'.split( 14900 '_' 14901 ), 14902 }, 14903 nounCase; 14904 14905 if (m === true) { 14906 return weekdays['nominative'] 14907 .slice(1, 7) 14908 .concat(weekdays['nominative'].slice(0, 1)); 14909 } 14910 if (!m) { 14911 return weekdays['nominative']; 14912 } 14913 14914 nounCase = /(\[[ÐвУÑ]\]) ?dddd/.test(format) 14915 ? 'accusative' 14916 : /\[?(?:минÑлоÑ|наÑÑÑпноÑ)? ?\] ?dddd/.test(format) 14917 ? 'genitive' 14918 : 'nominative'; 14919 return weekdays[nounCase][m.day()]; 14920 } 14921 function processHoursFunction(str) { 14922 return function () { 14923 return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT'; 14924 }; 14925 } 14926 14927 var uk = moment.defineLocale('uk', { 14928 months: { 14929 format: 'ÑÑÑнÑ_лÑÑого_беÑезнÑ_квÑÑнÑ_ÑÑавнÑ_ÑеÑвнÑ_липнÑ_ÑеÑпнÑ_веÑеÑнÑ_жовÑнÑ_лиÑÑопада_гÑÑднÑ'.split( 14930 '_' 14931 ), 14932 standalone: 'ÑÑÑенÑ_лÑÑий_беÑезенÑ_квÑÑенÑ_ÑÑавенÑ_ÑеÑвенÑ_липенÑ_ÑеÑпенÑ_веÑеÑенÑ_жовÑенÑ_лиÑÑопад_гÑÑденÑ'.split( 14933 '_' 14934 ), 14935 }, 14936 monthsShort: 'ÑÑÑ_лÑÑ_беÑ_квÑÑ_ÑÑав_ÑеÑв_лип_ÑеÑп_веÑ_жовÑ_лиÑÑ_гÑÑд'.split( 14937 '_' 14938 ), 14939 weekdays: weekdaysCaseReplace, 14940 weekdaysShort: 'нд_пн_вÑ_ÑÑ_ÑÑ_пÑ_Ñб'.split('_'), 14941 weekdaysMin: 'нд_пн_вÑ_ÑÑ_ÑÑ_пÑ_Ñб'.split('_'), 14942 longDateFormat: { 14943 LT: 'HH:mm', 14944 LTS: 'HH:mm:ss', 14945 L: 'DD.MM.YYYY', 14946 LL: 'D MMMM YYYY Ñ.', 14947 LLL: 'D MMMM YYYY Ñ., HH:mm', 14948 LLLL: 'dddd, D MMMM YYYY Ñ., HH:mm', 14949 }, 14950 calendar: { 14951 sameDay: processHoursFunction('[СÑÐ¾Ð³Ð¾Ð´Ð½Ñ '), 14952 nextDay: processHoursFunction('[ÐавÑÑа '), 14953 lastDay: processHoursFunction('[ÐÑоÑа '), 14954 nextWeek: processHoursFunction('[У] dddd ['), 14955 lastWeek: function () { 14956 switch (this.day()) { 14957 case 0: 14958 case 3: 14959 case 5: 14960 case 6: 14961 return processHoursFunction('[ÐинÑлоÑ] dddd [').call(this); 14962 case 1: 14963 case 2: 14964 case 4: 14965 return processHoursFunction('[ÐинÑлого] dddd [').call(this); 14966 } 14967 }, 14968 sameElse: 'L', 14969 }, 14970 relativeTime: { 14971 future: 'за %s', 14972 past: '%s ÑомÑ', 14973 s: 'декÑлÑка ÑекÑнд', 14974 ss: relativeTimeWithPlural, 14975 m: relativeTimeWithPlural, 14976 mm: relativeTimeWithPlural, 14977 h: 'годинÑ', 14978 hh: relativeTimeWithPlural, 14979 d: 'денÑ', 14980 dd: relativeTimeWithPlural, 14981 M: 'мÑÑÑÑÑ', 14982 MM: relativeTimeWithPlural, 14983 y: 'ÑÑк', 14984 yy: relativeTimeWithPlural, 14985 }, 14986 // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason 14987 meridiemParse: /ноÑÑ|ÑанкÑ|днÑ|веÑоÑа/, 14988 isPM: function (input) { 14989 return /^(днÑ|веÑоÑа)$/.test(input); 14990 }, 14991 meridiem: function (hour, minute, isLower) { 14992 if (hour < 4) { 14993 return 'ноÑÑ'; 14994 } else if (hour < 12) { 14995 return 'ÑанкÑ'; 14996 } else if (hour < 17) { 14997 return 'днÑ'; 14998 } else { 14999 return 'веÑоÑа'; 15000 } 15001 }, 15002 dayOfMonthOrdinalParse: /\d{1,2}-(й|го)/, 15003 ordinal: function (number, period) { 15004 switch (period) { 15005 case 'M': 15006 case 'd': 15007 case 'DDD': 15008 case 'w': 15009 case 'W': 15010 return number + '-й'; 15011 case 'D': 15012 return number + '-го'; 15013 default: 15014 return number; 15015 } 15016 }, 15017 week: { 15018 dow: 1, // Monday is the first day of the week. 15019 doy: 7, // The week that contains Jan 7th is the first week of the year. 15020 }, 15021 }); 15022 15023 return uk; 15024 15025}))); 15026 15027 15028/***/ }), 15029
vendor: 3,361 bytes, lines 15030-15131
15030/***/ "../../node_modules/moment/locale/ur.js": 15031/*!*********************************************************************************************************************************!*\ 15032 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/ur.js ***! 15033 \*********************************************************************************************************************************/ 15034/*! no static exports found */ 15035/***/ (function(module, exports, __webpack_require__) { 15036 15037//! moment.js locale configuration 15038//! locale : Urdu [ur] 15039//! author : Sawood Alam : https://github.com/ibnesayeed 15040//! author : Zack : https://github.com/ZackVision 15041 15042;(function (global, factory) { 15043 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 15044 undefined 15045}(this, (function (moment) { 'use strict'; 15046 15047 //! moment.js locale configuration 15048 15049 var months = [ 15050 'جÙÙØ±Û', 15051 'ÙØ±ÙرÛ', 15052 '٠ارÚ', 15053 'اپرÛÙ', 15054 '٠ئÛ', 15055 'جÙÙ', 15056 'جÙÙØ§Ø¦Û', 15057 'اگست', 15058 'ست٠بر', 15059 'Ø§Ú©ØªÙØ¨Ø±', 15060 'ÙÙ٠بر', 15061 'دس٠بر', 15062 ], 15063 days = ['Ø§ØªÙØ§Ø±', 'Ù¾ÛØ±', 'Ù ÙÚ¯Ù', 'بدھ', 'ج٠عرات', 'ج٠عÛ', 'ÛÙØªÛ']; 15064 15065 var ur = moment.defineLocale('ur', { 15066 months: months, 15067 monthsShort: months, 15068 weekdays: days, 15069 weekdaysShort: days, 15070 weekdaysMin: days, 15071 longDateFormat: { 15072 LT: 'HH:mm', 15073 LTS: 'HH:mm:ss', 15074 L: 'DD/MM/YYYY', 15075 LL: 'D MMMM YYYY', 15076 LLL: 'D MMMM YYYY HH:mm', 15077 LLLL: 'ddddØ D MMMM YYYY HH:mm', 15078 }, 15079 meridiemParse: /صبØ|شا٠/, 15080 isPM: function (input) { 15081 return 'شا٠' === input; 15082 }, 15083 meridiem: function (hour, minute, isLower) { 15084 if (hour < 12) { 15085 return 'صبØ'; 15086 } 15087 return 'شا٠'; 15088 }, 15089 calendar: { 15090 sameDay: '[آج بÙÙØª] LT', 15091 nextDay: '[ک٠بÙÙØª] LT', 15092 nextWeek: 'dddd [بÙÙØª] LT', 15093 lastDay: '[Ú¯Ø°Ø´ØªÛ Ø±ÙØ² بÙÙØª] LT', 15094 lastWeek: '[گذشتÛ] dddd [بÙÙØª] LT', 15095 sameElse: 'L', 15096 }, 15097 relativeTime: { 15098 future: '%s بعد', 15099 past: '%s ÙØ¨Ù', 15100 s: 'ÚÙØ¯ سÛÚ©ÙÚ', 15101 ss: '%d سÛÚ©ÙÚ', 15102 m: 'اÛÚ© Ù ÙÙ¹', 15103 mm: '%d Ù ÙÙ¹', 15104 h: 'اÛÚ© Ú¯Ú¾ÙÙ¹Û', 15105 hh: '%d Ú¯Ú¾ÙÙ¹Û', 15106 d: 'اÛÚ© دÙ', 15107 dd: '%d دÙ', 15108 M: 'اÛÚ© ٠اÛ', 15109 MM: '%d ٠اÛ', 15110 y: 'اÛÚ© ساÙ', 15111 yy: '%d ساÙ', 15112 }, 15113 preparse: function (string) { 15114 return string.replace(/Ø/g, ','); 15115 }, 15116 postformat: function (string) { 15117 return string.replace(/,/g, 'Ø'); 15118 }, 15119 week: { 15120 dow: 1, // Monday is the first day of the week. 15121 doy: 4, // The week that contains Jan 4th is the first week of the year. 15122 }, 15123 }); 15124 15125 return ur; 15126 15127}))); 15128 15129 15130/***/ }), 15131
vendor: 2,675 bytes, lines 15132-15204
15132/***/ "../../node_modules/moment/locale/uz-latn.js": 15133/*!**************************************************************************************************************************************!*\ 15134 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/uz-latn.js ***! 15135 \**************************************************************************************************************************************/ 15136/*! no static exports found */ 15137/***/ (function(module, exports, __webpack_require__) { 15138 15139//! moment.js locale configuration 15140//! locale : Uzbek Latin [uz-latn] 15141//! author : Rasulbek Mirzayev : github.com/Rasulbeeek 15142 15143;(function (global, factory) { 15144 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 15145 undefined 15146}(this, (function (moment) { 'use strict'; 15147 15148 //! moment.js locale configuration 15149 15150 var uzLatn = moment.defineLocale('uz-latn', { 15151 months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split( 15152 '_' 15153 ), 15154 monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'), 15155 weekdays: 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split( 15156 '_' 15157 ), 15158 weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'), 15159 weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'), 15160 longDateFormat: { 15161 LT: 'HH:mm', 15162 LTS: 'HH:mm:ss', 15163 L: 'DD/MM/YYYY', 15164 LL: 'D MMMM YYYY', 15165 LLL: 'D MMMM YYYY HH:mm', 15166 LLLL: 'D MMMM YYYY, dddd HH:mm', 15167 }, 15168 calendar: { 15169 sameDay: '[Bugun soat] LT [da]', 15170 nextDay: '[Ertaga] LT [da]', 15171 nextWeek: 'dddd [kuni soat] LT [da]', 15172 lastDay: '[Kecha soat] LT [da]', 15173 lastWeek: "[O'tgan] dddd [kuni soat] LT [da]", 15174 sameElse: 'L', 15175 }, 15176 relativeTime: { 15177 future: 'Yaqin %s ichida', 15178 past: 'Bir necha %s oldin', 15179 s: 'soniya', 15180 ss: '%d soniya', 15181 m: 'bir daqiqa', 15182 mm: '%d daqiqa', 15183 h: 'bir soat', 15184 hh: '%d soat', 15185 d: 'bir kun', 15186 dd: '%d kun', 15187 M: 'bir oy', 15188 MM: '%d oy', 15189 y: 'bir yil', 15190 yy: '%d yil', 15191 }, 15192 week: { 15193 dow: 1, // Monday is the first day of the week. 15194 doy: 7, // The week that contains Jan 7th is the first week of the year. 15195 }, 15196 }); 15197 15198 return uzLatn; 15199 15200}))); 15201 15202 15203/***/ }), 15204
vendor: 2,899 bytes, lines 15205-15275
15205/***/ "../../node_modules/moment/locale/uz.js": 15206/*!*********************************************************************************************************************************!*\ 15207 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/uz.js ***! 15208 \*********************************************************************************************************************************/ 15209/*! no static exports found */ 15210/***/ (function(module, exports, __webpack_require__) { 15211 15212//! moment.js locale configuration 15213//! locale : Uzbek [uz] 15214//! author : Sardor Muminov : https://github.com/muminoff 15215 15216;(function (global, factory) { 15217 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 15218 undefined 15219}(this, (function (moment) { 'use strict'; 15220 15221 //! moment.js locale configuration 15222 15223 var uz = moment.defineLocale('uz', { 15224 months: 'ÑнваÑ_ÑевÑал_маÑÑ_апÑел_май_иÑн_иÑл_авгÑÑÑ_ÑенÑÑбÑ_окÑÑбÑ_ноÑбÑ_декабÑ'.split( 15225 '_' 15226 ), 15227 monthsShort: 'Ñнв_Ñев_маÑ_апÑ_май_иÑн_иÑл_авг_Ñен_окÑ_ноÑ_дек'.split('_'), 15228 weekdays: 'ЯкÑанба_ÐÑÑанба_СеÑанба_ЧоÑÑанба_ÐайÑанба_ÐÑма_Шанба'.split('_'), 15229 weekdaysShort: 'ЯкÑ_ÐÑÑ_СеÑ_ЧоÑ_Ðай_ÐÑм_Шан'.split('_'), 15230 weekdaysMin: 'Як_ÐÑ_Се_Чо_Ðа_ÐÑ_Ша'.split('_'), 15231 longDateFormat: { 15232 LT: 'HH:mm', 15233 LTS: 'HH:mm:ss', 15234 L: 'DD/MM/YYYY', 15235 LL: 'D MMMM YYYY', 15236 LLL: 'D MMMM YYYY HH:mm', 15237 LLLL: 'D MMMM YYYY, dddd HH:mm', 15238 }, 15239 calendar: { 15240 sameDay: '[ÐÑгÑн ÑоаÑ] LT [да]', 15241 nextDay: '[ÐÑÑага] LT [да]', 15242 nextWeek: 'dddd [кÑни ÑоаÑ] LT [да]', 15243 lastDay: '[ÐеÑа ÑоаÑ] LT [да]', 15244 lastWeek: '[УÑган] dddd [кÑни ÑоаÑ] LT [да]', 15245 sameElse: 'L', 15246 }, 15247 relativeTime: { 15248 future: 'Якин %s иÑида', 15249 past: 'ÐÐ¸Ñ Ð½ÐµÑа %s олдин', 15250 s: 'ÑÑÑÑаÑ', 15251 ss: '%d ÑÑÑÑаÑ', 15252 m: 'Ð±Ð¸Ñ Ð´Ð°ÐºÐ¸ÐºÐ°', 15253 mm: '%d дакика', 15254 h: 'Ð±Ð¸Ñ ÑоаÑ', 15255 hh: '%d ÑоаÑ', 15256 d: 'Ð±Ð¸Ñ ÐºÑн', 15257 dd: '%d кÑн', 15258 M: 'Ð±Ð¸Ñ Ð¾Ð¹', 15259 MM: '%d ой', 15260 y: 'Ð±Ð¸Ñ Ð¹Ð¸Ð»', 15261 yy: '%d йил', 15262 }, 15263 week: { 15264 dow: 1, // Monday is the first day of the week. 15265 doy: 7, // The week that contains Jan 4th is the first week of the year. 15266 }, 15267 }); 15268 15269 return uz; 15270 15271}))); 15272 15273 15274/***/ }), 15275
vendor: 3,502 bytes, lines 15276-15372
15276/***/ "../../node_modules/moment/locale/vi.js": 15277/*!*********************************************************************************************************************************!*\ 15278 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/vi.js ***! 15279 \*********************************************************************************************************************************/ 15280/*! no static exports found */ 15281/***/ (function(module, exports, __webpack_require__) { 15282 15283//! moment.js locale configuration 15284//! locale : Vietnamese [vi] 15285//! author : Bang Nguyen : https://github.com/bangnk 15286//! author : Chien Kira : https://github.com/chienkira 15287 15288;(function (global, factory) { 15289 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 15290 undefined 15291}(this, (function (moment) { 'use strict'; 15292 15293 //! moment.js locale configuration 15294 15295 var vi = moment.defineLocale('vi', { 15296 months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split( 15297 '_' 15298 ), 15299 monthsShort: 'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split( 15300 '_' 15301 ), 15302 monthsParseExact: true, 15303 weekdays: 'chá»§ nháºt_thứ hai_thứ ba_thứ tư_thứ nÄm_thứ sáu_thứ bảy'.split( 15304 '_' 15305 ), 15306 weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'), 15307 weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'), 15308 weekdaysParseExact: true, 15309 meridiemParse: /sa|ch/i, 15310 isPM: function (input) { 15311 return /^ch$/i.test(input); 15312 }, 15313 meridiem: function (hours, minutes, isLower) { 15314 if (hours < 12) { 15315 return isLower ? 'sa' : 'SA'; 15316 } else { 15317 return isLower ? 'ch' : 'CH'; 15318 } 15319 }, 15320 longDateFormat: { 15321 LT: 'HH:mm', 15322 LTS: 'HH:mm:ss', 15323 L: 'DD/MM/YYYY', 15324 LL: 'D MMMM [nÄm] YYYY', 15325 LLL: 'D MMMM [nÄm] YYYY HH:mm', 15326 LLLL: 'dddd, D MMMM [nÄm] YYYY HH:mm', 15327 l: 'DD/M/YYYY', 15328 ll: 'D MMM YYYY', 15329 lll: 'D MMM YYYY HH:mm', 15330 llll: 'ddd, D MMM YYYY HH:mm', 15331 }, 15332 calendar: { 15333 sameDay: '[Hôm nay lúc] LT', 15334 nextDay: '[Ngà y mai lúc] LT', 15335 nextWeek: 'dddd [tuần tá»i lúc] LT', 15336 lastDay: '[Hôm qua lúc] LT', 15337 lastWeek: 'dddd [tuần trưá»c lúc] LT', 15338 sameElse: 'L', 15339 }, 15340 relativeTime: { 15341 future: '%s tá»i', 15342 past: '%s trưá»c', 15343 s: 'và i giây', 15344 ss: '%d giây', 15345 m: 'má»t phút', 15346 mm: '%d phút', 15347 h: 'má»t giá»', 15348 hh: '%d giá»', 15349 d: 'má»t ngà y', 15350 dd: '%d ngà y', 15351 M: 'má»t tháng', 15352 MM: '%d tháng', 15353 y: 'má»t nÄm', 15354 yy: '%d nÄm', 15355 }, 15356 dayOfMonthOrdinalParse: /\d{1,2}/, 15357 ordinal: function (number) { 15358 return number; 15359 }, 15360 week: { 15361 dow: 1, // Monday is the first day of the week. 15362 doy: 4, // The week that contains Jan 4th is the first week of the year. 15363 }, 15364 }); 15365 15366 return vi; 15367 15368}))); 15369 15370 15371/***/ }), 15372
vendor: 3,464 bytes, lines 15373-15463
15373/***/ "../../node_modules/moment/locale/x-pseudo.js": 15374/*!***************************************************************************************************************************************!*\ 15375 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/x-pseudo.js ***! 15376 \***************************************************************************************************************************************/ 15377/*! no static exports found */ 15378/***/ (function(module, exports, __webpack_require__) { 15379 15380//! moment.js locale configuration 15381//! locale : Pseudo [x-pseudo] 15382//! author : Andrew Hood : https://github.com/andrewhood125 15383 15384;(function (global, factory) { 15385 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 15386 undefined 15387}(this, (function (moment) { 'use strict'; 15388 15389 //! moment.js locale configuration 15390 15391 var xPseudo = moment.defineLocale('x-pseudo', { 15392 months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Ãp~rÃl_~Máý_~Júñé~_Júl~ý_Ãú~gúst~_Sép~témb~ér_Ã~ctób~ér_Ã~óvém~bér_~Décé~mbér'.split( 15393 '_' 15394 ), 15395 monthsShort: 'J~áñ_~Féb_~Már_~Ãpr_~Máý_~Júñ_~Júl_~Ãúg_~Sép_~Ãct_~Ãóv_~Déc'.split( 15396 '_' 15397 ), 15398 monthsParseExact: true, 15399 weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~FrÃd~áý_S~átúr~dáý'.split( 15400 '_' 15401 ), 15402 weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~FrÃ_~Sát'.split('_'), 15403 weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'), 15404 weekdaysParseExact: true, 15405 longDateFormat: { 15406 LT: 'HH:mm', 15407 L: 'DD/MM/YYYY', 15408 LL: 'D MMMM YYYY', 15409 LLL: 'D MMMM YYYY HH:mm', 15410 LLLL: 'dddd, D MMMM YYYY HH:mm', 15411 }, 15412 calendar: { 15413 sameDay: '[T~ódá~ý át] LT', 15414 nextDay: '[T~ómó~rró~w át] LT', 15415 nextWeek: 'dddd [át] LT', 15416 lastDay: '[Ã~ést~érdá~ý át] LT', 15417 lastWeek: '[L~ást] dddd [át] LT', 15418 sameElse: 'L', 15419 }, 15420 relativeTime: { 15421 future: 'Ã~ñ %s', 15422 past: '%s á~gó', 15423 s: 'á ~féw ~sécó~ñds', 15424 ss: '%d s~écóñ~ds', 15425 m: 'á ~mÃñ~úté', 15426 mm: '%d m~Ãñú~tés', 15427 h: 'á~ñ hó~úr', 15428 hh: '%d h~óúrs', 15429 d: 'á ~dáý', 15430 dd: '%d d~áýs', 15431 M: 'á ~móñ~th', 15432 MM: '%d m~óñt~hs', 15433 y: 'á ~ýéár', 15434 yy: '%d ý~éárs', 15435 }, 15436 dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, 15437 ordinal: function (number) { 15438 var b = number % 10, 15439 output = 15440 ~~((number % 100) / 10) === 1 15441 ? 'th' 15442 : b === 1 15443 ? 'st' 15444 : b === 2 15445 ? 'nd' 15446 : b === 3 15447 ? 'rd' 15448 : 'th'; 15449 return number + output; 15450 }, 15451 week: { 15452 dow: 1, // Monday is the first day of the week. 15453 doy: 4, // The week that contains Jan 4th is the first week of the year. 15454 }, 15455 }); 15456 15457 return xPseudo; 15458 15459}))); 15460 15461 15462/***/ }), 15463
vendor: 2,911 bytes, lines 15464-15536
15464/***/ "../../node_modules/moment/locale/yo.js": 15465/*!*********************************************************************************************************************************!*\ 15466 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/yo.js ***! 15467 \*********************************************************************************************************************************/ 15468/*! no static exports found */ 15469/***/ (function(module, exports, __webpack_require__) { 15470 15471//! moment.js locale configuration 15472//! locale : Yoruba Nigeria [yo] 15473//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe 15474 15475;(function (global, factory) { 15476 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 15477 undefined 15478}(this, (function (moment) { 'use strict'; 15479 15480 //! moment.js locale configuration 15481 15482 var yo = moment.defineLocale('yo', { 15483 months: 'SẹÌrẹÌ_EÌreÌleÌ_ẸrẹÌnaÌ_IÌgbeÌ_EÌbibi_OÌkuÌdu_Agẹmo_OÌguÌn_Owewe_á»ÌwaÌraÌ_BeÌluÌ_á»ÌpẹÌÌ'.split( 15484 '_' 15485 ), 15486 monthsShort: 'SẹÌr_EÌrl_Ẹrn_IÌgb_EÌbi_OÌkuÌ_Agẹ_OÌguÌ_Owe_á»ÌwaÌ_BeÌl_á»ÌpẹÌÌ'.split('_'), 15487 weekdays: 'AÌiÌkuÌ_AjeÌ_IÌsẹÌgun_á»já»ÌruÌ_á»já»Ìbá»_ẸtiÌ_AÌbaÌmẹÌta'.split('_'), 15488 weekdaysShort: 'AÌiÌk_AjeÌ_IÌsẹÌ_á»jr_á»jb_ẸtiÌ_AÌbaÌ'.split('_'), 15489 weekdaysMin: 'AÌiÌ_Aj_IÌs_á»r_á»b_Ẹt_AÌb'.split('_'), 15490 longDateFormat: { 15491 LT: 'h:mm A', 15492 LTS: 'h:mm:ss A', 15493 L: 'DD/MM/YYYY', 15494 LL: 'D MMMM YYYY', 15495 LLL: 'D MMMM YYYY h:mm A', 15496 LLLL: 'dddd, D MMMM YYYY h:mm A', 15497 }, 15498 calendar: { 15499 sameDay: '[OÌniÌ ni] LT', 15500 nextDay: '[á»Ìla ni] LT', 15501 nextWeek: "dddd [á»sáº¹Ì toÌn'bá»] [ni] LT", 15502 lastDay: '[AÌna ni] LT', 15503 lastWeek: 'dddd [á»sáº¹Ì toÌlá»Ì] [ni] LT', 15504 sameElse: 'L', 15505 }, 15506 relativeTime: { 15507 future: 'niÌ %s', 15508 past: '%s ká»jaÌ', 15509 s: 'iÌsẹjuÌ aayaÌ die', 15510 ss: 'aayaÌ %d', 15511 m: 'iÌsẹjuÌ kan', 15512 mm: 'iÌsẹjuÌ %d', 15513 h: 'waÌkati kan', 15514 hh: 'waÌkati %d', 15515 d: 'á»já»Ì kan', 15516 dd: 'á»já»Ì %d', 15517 M: 'osuÌ kan', 15518 MM: 'osuÌ %d', 15519 y: 'á»duÌn kan', 15520 yy: 'á»duÌn %d', 15521 }, 15522 dayOfMonthOrdinalParse: /á»já»Ì\s\d{1,2}/, 15523 ordinal: 'á»já»Ì %d', 15524 week: { 15525 dow: 1, // Monday is the first day of the week. 15526 doy: 4, // The week that contains Jan 4th is the first week of the year. 15527 }, 15528 }); 15529 15530 return yo; 15531 15532}))); 15533 15534 15535/***/ }), 15536
vendor: 5,026 bytes, lines 15537-15674
15537/***/ "../../node_modules/moment/locale/zh-cn.js": 15538/*!************************************************************************************************************************************!*\ 15539 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/zh-cn.js ***! 15540 \************************************************************************************************************************************/ 15541/*! no static exports found */ 15542/***/ (function(module, exports, __webpack_require__) { 15543 15544//! moment.js locale configuration 15545//! locale : Chinese (China) [zh-cn] 15546//! author : suupic : https://github.com/suupic 15547//! author : Zeno Zeng : https://github.com/zenozeng 15548//! author : uu109 : https://github.com/uu109 15549 15550;(function (global, factory) { 15551 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 15552 undefined 15553}(this, (function (moment) { 'use strict'; 15554 15555 //! moment.js locale configuration 15556 15557 var zhCn = moment.defineLocale('zh-cn', { 15558 months: '䏿_äºæ_䏿_åæ_äºæ_å æ_䏿_å «æ_乿_åæ_å䏿_åäºæ'.split( 15559 '_' 15560 ), 15561 monthsShort: '1æ_2æ_3æ_4æ_5æ_6æ_7æ_8æ_9æ_10æ_11æ_12æ'.split( 15562 '_' 15563 ), 15564 weekdays: 'æææ¥_ææä¸_ææäº_ææä¸_ææå_ææäº_ææå '.split('_'), 15565 weekdaysShort: '卿¥_å¨ä¸_å¨äº_å¨ä¸_å¨å_å¨äº_å¨å '.split('_'), 15566 weekdaysMin: 'æ¥_ä¸_äº_ä¸_å_äº_å '.split('_'), 15567 longDateFormat: { 15568 LT: 'HH:mm', 15569 LTS: 'HH:mm:ss', 15570 L: 'YYYY/MM/DD', 15571 LL: 'YYYYå¹´MæDæ¥', 15572 LLL: 'YYYYå¹´MæDæ¥Ahç¹mmå', 15573 LLLL: 'YYYYå¹´MæDæ¥ddddAhç¹mmå', 15574 l: 'YYYY/M/D', 15575 ll: 'YYYYå¹´MæDæ¥', 15576 lll: 'YYYYå¹´MæDæ¥ HH:mm', 15577 llll: 'YYYYå¹´MæDæ¥dddd HH:mm', 15578 }, 15579 meridiemParse: /忍|æ©ä¸|ä¸å|ä¸å|ä¸å|æä¸/, 15580 meridiemHour: function (hour, meridiem) { 15581 if (hour === 12) { 15582 hour = 0; 15583 } 15584 if (meridiem === '忍' || meridiem === 'æ©ä¸' || meridiem === 'ä¸å') { 15585 return hour; 15586 } else if (meridiem === 'ä¸å' || meridiem === 'æä¸') { 15587 return hour + 12; 15588 } else { 15589 // 'ä¸å' 15590 return hour >= 11 ? hour : hour + 12; 15591 } 15592 }, 15593 meridiem: function (hour, minute, isLower) { 15594 var hm = hour * 100 + minute; 15595 if (hm < 600) { 15596 return '忍'; 15597 } else if (hm < 900) { 15598 return 'æ©ä¸'; 15599 } else if (hm < 1130) { 15600 return 'ä¸å'; 15601 } else if (hm < 1230) { 15602 return 'ä¸å'; 15603 } else if (hm < 1800) { 15604 return 'ä¸å'; 15605 } else { 15606 return 'æä¸'; 15607 } 15608 }, 15609 calendar: { 15610 sameDay: '[ä»å¤©]LT', 15611 nextDay: '[æå¤©]LT', 15612 nextWeek: function (now) { 15613 if (now.week() !== this.week()) { 15614 return '[ä¸]dddLT'; 15615 } else { 15616 return '[æ¬]dddLT'; 15617 } 15618 }, 15619 lastDay: '[æ¨å¤©]LT', 15620 lastWeek: function (now) { 15621 if (this.week() !== now.week()) { 15622 return '[ä¸]dddLT'; 15623 } else { 15624 return '[æ¬]dddLT'; 15625 } 15626 }, 15627 sameElse: 'L', 15628 }, 15629 dayOfMonthOrdinalParse: /\d{1,2}(æ¥|æ|å¨)/, 15630 ordinal: function (number, period) { 15631 switch (period) { 15632 case 'd': 15633 case 'D': 15634 case 'DDD': 15635 return number + 'æ¥'; 15636 case 'M': 15637 return number + 'æ'; 15638 case 'w': 15639 case 'W': 15640 return number + 'å¨'; 15641 default: 15642 return number; 15643 } 15644 }, 15645 relativeTime: { 15646 future: '%så', 15647 past: '%så', 15648 s: 'å ç§', 15649 ss: '%d ç§', 15650 m: '1 åé', 15651 mm: '%d åé', 15652 h: '1 å°æ¶', 15653 hh: '%d å°æ¶', 15654 d: '1 天', 15655 dd: '%d 天', 15656 M: '1 个æ', 15657 MM: '%d 个æ', 15658 y: '1 å¹´', 15659 yy: '%d å¹´', 15660 }, 15661 week: { 15662 // GB/T 7408-1994ãæ°æ®å åäº¤æ¢æ ¼å¼Â·ä¿¡æ¯äº¤æ¢Â·æ¥æåæ¶é´è¡¨ç¤ºæ³ãä¸ISO 8601:1988çæ 15663 dow: 1, // Monday is the first day of the week. 15664 doy: 4, // The week that contains Jan 4th is the first week of the year. 15665 }, 15666 }); 15667 15668 return zhCn; 15669 15670}))); 15671 15672 15673/***/ }), 15674
vendor: 4,384 bytes, lines 15675-15795
15675/***/ "../../node_modules/moment/locale/zh-hk.js": 15676/*!************************************************************************************************************************************!*\ 15677 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/zh-hk.js ***! 15678 \************************************************************************************************************************************/ 15679/*! no static exports found */ 15680/***/ (function(module, exports, __webpack_require__) { 15681 15682//! moment.js locale configuration 15683//! locale : Chinese (Hong Kong) [zh-hk] 15684//! author : Ben : https://github.com/ben-lin 15685//! author : Chris Lam : https://github.com/hehachris 15686//! author : Konstantin : https://github.com/skfd 15687//! author : Anthony : https://github.com/anthonylau 15688 15689;(function (global, factory) { 15690 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 15691 undefined 15692}(this, (function (moment) { 'use strict'; 15693 15694 //! moment.js locale configuration 15695 15696 var zhHk = moment.defineLocale('zh-hk', { 15697 months: '䏿_äºæ_䏿_åæ_äºæ_å æ_䏿_å «æ_乿_åæ_å䏿_åäºæ'.split( 15698 '_' 15699 ), 15700 monthsShort: '1æ_2æ_3æ_4æ_5æ_6æ_7æ_8æ_9æ_10æ_11æ_12æ'.split( 15701 '_' 15702 ), 15703 weekdays: 'æææ¥_ææä¸_ææäº_ææä¸_ææå_ææäº_ææå '.split('_'), 15704 weekdaysShort: '鱿¥_é±ä¸_é±äº_é±ä¸_é±å_é±äº_é±å '.split('_'), 15705 weekdaysMin: 'æ¥_ä¸_äº_ä¸_å_äº_å '.split('_'), 15706 longDateFormat: { 15707 LT: 'HH:mm', 15708 LTS: 'HH:mm:ss', 15709 L: 'YYYY/MM/DD', 15710 LL: 'YYYYå¹´MæDæ¥', 15711 LLL: 'YYYYå¹´MæDæ¥ HH:mm', 15712 LLLL: 'YYYYå¹´MæDæ¥dddd HH:mm', 15713 l: 'YYYY/M/D', 15714 ll: 'YYYYå¹´MæDæ¥', 15715 lll: 'YYYYå¹´MæDæ¥ HH:mm', 15716 llll: 'YYYYå¹´MæDæ¥dddd HH:mm', 15717 }, 15718 meridiemParse: /忍|æ©ä¸|ä¸å|ä¸å|ä¸å|æä¸/, 15719 meridiemHour: function (hour, meridiem) { 15720 if (hour === 12) { 15721 hour = 0; 15722 } 15723 if (meridiem === '忍' || meridiem === 'æ©ä¸' || meridiem === 'ä¸å') { 15724 return hour; 15725 } else if (meridiem === 'ä¸å') { 15726 return hour >= 11 ? hour : hour + 12; 15727 } else if (meridiem === 'ä¸å' || meridiem === 'æä¸') { 15728 return hour + 12; 15729 } 15730 }, 15731 meridiem: function (hour, minute, isLower) { 15732 var hm = hour * 100 + minute; 15733 if (hm < 600) { 15734 return '忍'; 15735 } else if (hm < 900) { 15736 return 'æ©ä¸'; 15737 } else if (hm < 1200) { 15738 return 'ä¸å'; 15739 } else if (hm === 1200) { 15740 return 'ä¸å'; 15741 } else if (hm < 1800) { 15742 return 'ä¸å'; 15743 } else { 15744 return 'æä¸'; 15745 } 15746 }, 15747 calendar: { 15748 sameDay: '[ä»å¤©]LT', 15749 nextDay: '[æå¤©]LT', 15750 nextWeek: '[ä¸]ddddLT', 15751 lastDay: '[æ¨å¤©]LT', 15752 lastWeek: '[ä¸]ddddLT', 15753 sameElse: 'L', 15754 }, 15755 dayOfMonthOrdinalParse: /\d{1,2}(æ¥|æ|é±)/, 15756 ordinal: function (number, period) { 15757 switch (period) { 15758 case 'd': 15759 case 'D': 15760 case 'DDD': 15761 return number + 'æ¥'; 15762 case 'M': 15763 return number + 'æ'; 15764 case 'w': 15765 case 'W': 15766 return number + 'é±'; 15767 default: 15768 return number; 15769 } 15770 }, 15771 relativeTime: { 15772 future: '%så¾', 15773 past: '%så', 15774 s: 'å¹¾ç§', 15775 ss: '%d ç§', 15776 m: '1 åé', 15777 mm: '%d åé', 15778 h: '1 å°æ', 15779 hh: '%d å°æ', 15780 d: '1 天', 15781 dd: '%d 天', 15782 M: '1 åæ', 15783 MM: '%d åæ', 15784 y: '1 å¹´', 15785 yy: '%d å¹´', 15786 }, 15787 }); 15788 15789 return zhHk; 15790 15791}))); 15792 15793 15794/***/ }), 15795
vendor: 4,333 bytes, lines 15796-15915
15796/***/ "../../node_modules/moment/locale/zh-mo.js": 15797/*!************************************************************************************************************************************!*\ 15798 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/zh-mo.js ***! 15799 \************************************************************************************************************************************/ 15800/*! no static exports found */ 15801/***/ (function(module, exports, __webpack_require__) { 15802 15803//! moment.js locale configuration 15804//! locale : Chinese (Macau) [zh-mo] 15805//! author : Ben : https://github.com/ben-lin 15806//! author : Chris Lam : https://github.com/hehachris 15807//! author : Tan Yuanhong : https://github.com/le0tan 15808 15809;(function (global, factory) { 15810 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 15811 undefined 15812}(this, (function (moment) { 'use strict'; 15813 15814 //! moment.js locale configuration 15815 15816 var zhMo = moment.defineLocale('zh-mo', { 15817 months: '䏿_äºæ_䏿_åæ_äºæ_å æ_䏿_å «æ_乿_åæ_å䏿_åäºæ'.split( 15818 '_' 15819 ), 15820 monthsShort: '1æ_2æ_3æ_4æ_5æ_6æ_7æ_8æ_9æ_10æ_11æ_12æ'.split( 15821 '_' 15822 ), 15823 weekdays: 'æææ¥_ææä¸_ææäº_ææä¸_ææå_ææäº_ææå '.split('_'), 15824 weekdaysShort: '鱿¥_é±ä¸_é±äº_é±ä¸_é±å_é±äº_é±å '.split('_'), 15825 weekdaysMin: 'æ¥_ä¸_äº_ä¸_å_äº_å '.split('_'), 15826 longDateFormat: { 15827 LT: 'HH:mm', 15828 LTS: 'HH:mm:ss', 15829 L: 'DD/MM/YYYY', 15830 LL: 'YYYYå¹´MæDæ¥', 15831 LLL: 'YYYYå¹´MæDæ¥ HH:mm', 15832 LLLL: 'YYYYå¹´MæDæ¥dddd HH:mm', 15833 l: 'D/M/YYYY', 15834 ll: 'YYYYå¹´MæDæ¥', 15835 lll: 'YYYYå¹´MæDæ¥ HH:mm', 15836 llll: 'YYYYå¹´MæDæ¥dddd HH:mm', 15837 }, 15838 meridiemParse: /忍|æ©ä¸|ä¸å|ä¸å|ä¸å|æä¸/, 15839 meridiemHour: function (hour, meridiem) { 15840 if (hour === 12) { 15841 hour = 0; 15842 } 15843 if (meridiem === '忍' || meridiem === 'æ©ä¸' || meridiem === 'ä¸å') { 15844 return hour; 15845 } else if (meridiem === 'ä¸å') { 15846 return hour >= 11 ? hour : hour + 12; 15847 } else if (meridiem === 'ä¸å' || meridiem === 'æä¸') { 15848 return hour + 12; 15849 } 15850 }, 15851 meridiem: function (hour, minute, isLower) { 15852 var hm = hour * 100 + minute; 15853 if (hm < 600) { 15854 return '忍'; 15855 } else if (hm < 900) { 15856 return 'æ©ä¸'; 15857 } else if (hm < 1130) { 15858 return 'ä¸å'; 15859 } else if (hm < 1230) { 15860 return 'ä¸å'; 15861 } else if (hm < 1800) { 15862 return 'ä¸å'; 15863 } else { 15864 return 'æä¸'; 15865 } 15866 }, 15867 calendar: { 15868 sameDay: '[ä»å¤©] LT', 15869 nextDay: '[æå¤©] LT', 15870 nextWeek: '[ä¸]dddd LT', 15871 lastDay: '[æ¨å¤©] LT', 15872 lastWeek: '[ä¸]dddd LT', 15873 sameElse: 'L', 15874 }, 15875 dayOfMonthOrdinalParse: /\d{1,2}(æ¥|æ|é±)/, 15876 ordinal: function (number, period) { 15877 switch (period) { 15878 case 'd': 15879 case 'D': 15880 case 'DDD': 15881 return number + 'æ¥'; 15882 case 'M': 15883 return number + 'æ'; 15884 case 'w': 15885 case 'W': 15886 return number + 'é±'; 15887 default: 15888 return number; 15889 } 15890 }, 15891 relativeTime: { 15892 future: '%så §', 15893 past: '%så', 15894 s: 'å¹¾ç§', 15895 ss: '%d ç§', 15896 m: '1 åé', 15897 mm: '%d åé', 15898 h: '1 å°æ', 15899 hh: '%d å°æ', 15900 d: '1 天', 15901 dd: '%d 天', 15902 M: '1 åæ', 15903 MM: '%d åæ', 15904 y: '1 å¹´', 15905 yy: '%d å¹´', 15906 }, 15907 }); 15908 15909 return zhMo; 15910 15911}))); 15912 15913 15914/***/ }), 15915
vendor: 4,279 bytes, lines 15916-16034
15916/***/ "../../node_modules/moment/locale/zh-tw.js": 15917/*!************************************************************************************************************************************!*\ 15918 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/locale/zh-tw.js ***! 15919 \************************************************************************************************************************************/ 15920/*! no static exports found */ 15921/***/ (function(module, exports, __webpack_require__) { 15922 15923//! moment.js locale configuration 15924//! locale : Chinese (Taiwan) [zh-tw] 15925//! author : Ben : https://github.com/ben-lin 15926//! author : Chris Lam : https://github.com/hehachris 15927 15928;(function (global, factory) { 15929 true ? factory(__webpack_require__(/*! ../moment */ "../../node_modules/moment/moment.js")) : 15930 undefined 15931}(this, (function (moment) { 'use strict'; 15932 15933 //! moment.js locale configuration 15934 15935 var zhTw = moment.defineLocale('zh-tw', { 15936 months: '䏿_äºæ_䏿_åæ_äºæ_å æ_䏿_å «æ_乿_åæ_å䏿_åäºæ'.split( 15937 '_' 15938 ), 15939 monthsShort: '1æ_2æ_3æ_4æ_5æ_6æ_7æ_8æ_9æ_10æ_11æ_12æ'.split( 15940 '_' 15941 ), 15942 weekdays: 'æææ¥_ææä¸_ææäº_ææä¸_ææå_ææäº_ææå '.split('_'), 15943 weekdaysShort: '鱿¥_é±ä¸_é±äº_é±ä¸_é±å_é±äº_é±å '.split('_'), 15944 weekdaysMin: 'æ¥_ä¸_äº_ä¸_å_äº_å '.split('_'), 15945 longDateFormat: { 15946 LT: 'HH:mm', 15947 LTS: 'HH:mm:ss', 15948 L: 'YYYY/MM/DD', 15949 LL: 'YYYYå¹´MæDæ¥', 15950 LLL: 'YYYYå¹´MæDæ¥ HH:mm', 15951 LLLL: 'YYYYå¹´MæDæ¥dddd HH:mm', 15952 l: 'YYYY/M/D', 15953 ll: 'YYYYå¹´MæDæ¥', 15954 lll: 'YYYYå¹´MæDæ¥ HH:mm', 15955 llll: 'YYYYå¹´MæDæ¥dddd HH:mm', 15956 }, 15957 meridiemParse: /忍|æ©ä¸|ä¸å|ä¸å|ä¸å|æä¸/, 15958 meridiemHour: function (hour, meridiem) { 15959 if (hour === 12) { 15960 hour = 0; 15961 } 15962 if (meridiem === '忍' || meridiem === 'æ©ä¸' || meridiem === 'ä¸å') { 15963 return hour; 15964 } else if (meridiem === 'ä¸å') { 15965 return hour >= 11 ? hour : hour + 12; 15966 } else if (meridiem === 'ä¸å' || meridiem === 'æä¸') { 15967 return hour + 12; 15968 } 15969 }, 15970 meridiem: function (hour, minute, isLower) { 15971 var hm = hour * 100 + minute; 15972 if (hm < 600) { 15973 return '忍'; 15974 } else if (hm < 900) { 15975 return 'æ©ä¸'; 15976 } else if (hm < 1130) { 15977 return 'ä¸å'; 15978 } else if (hm < 1230) { 15979 return 'ä¸å'; 15980 } else if (hm < 1800) { 15981 return 'ä¸å'; 15982 } else { 15983 return 'æä¸'; 15984 } 15985 }, 15986 calendar: { 15987 sameDay: '[ä»å¤©] LT', 15988 nextDay: '[æå¤©] LT', 15989 nextWeek: '[ä¸]dddd LT', 15990 lastDay: '[æ¨å¤©] LT', 15991 lastWeek: '[ä¸]dddd LT', 15992 sameElse: 'L', 15993 }, 15994 dayOfMonthOrdinalParse: /\d{1,2}(æ¥|æ|é±)/, 15995 ordinal: function (number, period) { 15996 switch (period) { 15997 case 'd': 15998 case 'D': 15999 case 'DDD': 16000 return number + 'æ¥'; 16001 case 'M': 16002 return number + 'æ'; 16003 case 'w': 16004 case 'W': 16005 return number + 'é±'; 16006 default: 16007 return number; 16008 } 16009 }, 16010 relativeTime: { 16011 future: '%så¾', 16012 past: '%så', 16013 s: 'å¹¾ç§', 16014 ss: '%d ç§', 16015 m: '1 åé', 16016 mm: '%d åé', 16017 h: '1 å°æ', 16018 hh: '%d å°æ', 16019 d: '1 天', 16020 dd: '%d 天', 16021 M: '1 åæ', 16022 MM: '%d åæ', 16023 y: '1 å¹´', 16024 yy: '%d å¹´', 16025 }, 16026 }); 16027 16028 return zhTw; 16029 16030}))); 16031 16032 16033/***/ }), 16034
vendor: 180,181 bytes, lines 16035-21713
16035/***/ "../../node_modules/moment/moment.js": 16036/*!******************************************************************************************************************************!*\ 16037 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/moment/moment.js ***! 16038 \******************************************************************************************************************************/ 16039/*! no static exports found */ 16040/***/ (function(module, exports, __webpack_require__) { 16041 16042/* WEBPACK VAR INJECTION */(function(module) {var require;//! moment.js 16043//! version : 2.27.0 16044//! authors : Tim Wood, Iskren Chernev, Moment.js contributors 16045//! license : MIT 16046//! momentjs.com 16047 16048;(function (global, factory) { 16049 true ? module.exports = factory() : 16050 undefined 16051}(this, (function () { 'use strict'; 16052 16053 var hookCallback; 16054 16055 function hooks() { 16056 return hookCallback.apply(null, arguments); 16057 } 16058 16059 // This is done to register the method called with moment() 16060 // without creating circular dependencies. 16061 function setHookCallback(callback) { 16062 hookCallback = callback; 16063 } 16064 16065 function isArray(input) { 16066 return ( 16067 input instanceof Array || 16068 Object.prototype.toString.call(input) === '[object Array]' 16069 ); 16070 } 16071 16072 function isObject(input) { 16073 // IE8 will treat undefined and null as object if it wasn't for 16074 // input != null 16075 return ( 16076 input != null && 16077 Object.prototype.toString.call(input) === '[object Object]' 16078 ); 16079 } 16080 16081 function hasOwnProp(a, b) { 16082 return Object.prototype.hasOwnProperty.call(a, b); 16083 } 16084 16085 function isObjectEmpty(obj) { 16086 if (Object.getOwnPropertyNames) { 16087 return Object.getOwnPropertyNames(obj).length === 0; 16088 } else { 16089 var k; 16090 for (k in obj) { 16091 if (hasOwnProp(obj, k)) { 16092 return false; 16093 } 16094 } 16095 return true; 16096 } 16097 } 16098 16099 function isUndefined(input) { 16100 return input === void 0; 16101 } 16102 16103 function isNumber(input) { 16104 return ( 16105 typeof input === 'number' || 16106 Object.prototype.toString.call(input) === '[object Number]' 16107 ); 16108 } 16109 16110 function isDate(input) { 16111 return ( 16112 input instanceof Date || 16113 Object.prototype.toString.call(input) === '[object Date]' 16114 ); 16115 } 16116 16117 function map(arr, fn) { 16118 var res = [], 16119 i; 16120 for (i = 0; i < arr.length; ++i) { 16121 res.push(fn(arr[i], i)); 16122 } 16123 return res; 16124 } 16125 16126 function extend(a, b) { 16127 for (var i in b) { 16128 if (hasOwnProp(b, i)) { 16129 a[i] = b[i]; 16130 } 16131 } 16132 16133 if (hasOwnProp(b, 'toString')) { 16134 a.toString = b.toString; 16135 } 16136 16137 if (hasOwnProp(b, 'valueOf')) { 16138 a.valueOf = b.valueOf; 16139 } 16140 16141 return a; 16142 } 16143 16144 function createUTC(input, format, locale, strict) { 16145 return createLocalOrUTC(input, format, locale, strict, true).utc(); 16146 } 16147 16148 function defaultParsingFlags() { 16149 // We need to deep clone this object. 16150 return { 16151 empty: false, 16152 unusedTokens: [], 16153 unusedInput: [], 16154 overflow: -2, 16155 charsLeftOver: 0, 16156 nullInput: false, 16157 invalidEra: null, 16158 invalidMonth: null, 16159 invalidFormat: false, 16160 userInvalidated: false, 16161 iso: false, 16162 parsedDateParts: [], 16163 era: null, 16164 meridiem: null, 16165 rfc2822: false, 16166 weekdayMismatch: false, 16167 }; 16168 } 16169 16170 function getParsingFlags(m) { 16171 if (m._pf == null) { 16172 m._pf = defaultParsingFlags(); 16173 } 16174 return m._pf; 16175 } 16176 16177 var some; 16178 if (Array.prototype.some) { 16179 some = Array.prototype.some; 16180 } else { 16181 some = function (fun) { 16182 var t = Object(this), 16183 len = t.length >>> 0, 16184 i; 16185 16186 for (i = 0; i < len; i++) { 16187 if (i in t && fun.call(this, t[i], i, t)) { 16188 return true; 16189 } 16190 } 16191 16192 return false; 16193 }; 16194 } 16195 16196 function isValid(m) { 16197 if (m._isValid == null) { 16198 var flags = getParsingFlags(m), 16199 parsedParts = some.call(flags.parsedDateParts, function (i) { 16200 return i != null; 16201 }), 16202 isNowValid = 16203 !isNaN(m._d.getTime()) && 16204 flags.overflow < 0 && 16205 !flags.empty && 16206 !flags.invalidEra && 16207 !flags.invalidMonth && 16208 !flags.invalidWeekday && 16209 !flags.weekdayMismatch && 16210 !flags.nullInput && 16211 !flags.invalidFormat && 16212 !flags.userInvalidated && 16213 (!flags.meridiem || (flags.meridiem && parsedParts)); 16214 16215 if (m._strict) { 16216 isNowValid = 16217 isNowValid && 16218 flags.charsLeftOver === 0 && 16219 flags.unusedTokens.length === 0 && 16220 flags.bigHour === undefined; 16221 } 16222 16223 if (Object.isFrozen == null || !Object.isFrozen(m)) { 16224 m._isValid = isNowValid; 16225 } else { 16226 return isNowValid; 16227 } 16228 } 16229 return m._isValid; 16230 } 16231 16232 function createInvalid(flags) { 16233 var m = createUTC(NaN); 16234 if (flags != null) { 16235 extend(getParsingFlags(m), flags); 16236 } else { 16237 getParsingFlags(m).userInvalidated = true; 16238 } 16239 16240 return m; 16241 } 16242 16243 // Plugins that add properties should also add the key here (null value), 16244 // so we can properly clone ourselves. 16245 var momentProperties = (hooks.momentProperties = []), 16246 updateInProgress = false; 16247 16248 function copyConfig(to, from) { 16249 var i, prop, val; 16250 16251 if (!isUndefined(from._isAMomentObject)) { 16252 to._isAMomentObject = from._isAMomentObject; 16253 } 16254 if (!isUndefined(from._i)) { 16255 to._i = from._i; 16256 } 16257 if (!isUndefined(from._f)) { 16258 to._f = from._f; 16259 } 16260 if (!isUndefined(from._l)) { 16261 to._l = from._l; 16262 } 16263 if (!isUndefined(from._strict)) { 16264 to._strict = from._strict; 16265 } 16266 if (!isUndefined(from._tzm)) { 16267 to._tzm = from._tzm; 16268 } 16269 if (!isUndefined(from._isUTC)) { 16270 to._isUTC = from._isUTC; 16271 } 16272 if (!isUndefined(from._offset)) { 16273 to._offset = from._offset; 16274 } 16275 if (!isUndefined(from._pf)) { 16276 to._pf = getParsingFlags(from); 16277 } 16278 if (!isUndefined(from._locale)) { 16279 to._locale = from._locale; 16280 } 16281 16282 if (momentProperties.length > 0) { 16283 for (i = 0; i < momentProperties.length; i++) { 16284 prop = momentProperties[i]; 16285 val = from[prop]; 16286 if (!isUndefined(val)) { 16287 to[prop] = val; 16288 } 16289 } 16290 } 16291 16292 return to; 16293 } 16294 16295 // Moment prototype object 16296 function Moment(config) { 16297 copyConfig(this, config); 16298 this._d = new Date(config._d != null ? config._d.getTime() : NaN); 16299 if (!this.isValid()) { 16300 this._d = new Date(NaN); 16301 } 16302 // Prevent infinite loop in case updateOffset creates new moment 16303 // objects. 16304 if (updateInProgress === false) { 16305 updateInProgress = true; 16306 hooks.updateOffset(this); 16307 updateInProgress = false; 16308 } 16309 } 16310 16311 function isMoment(obj) { 16312 return ( 16313 obj instanceof Moment || (obj != null && obj._isAMomentObject != null) 16314 ); 16315 } 16316 16317 function warn(msg) { 16318 if ( 16319 hooks.suppressDeprecationWarnings === false && 16320 typeof console !== 'undefined' && 16321 console.warn 16322 ) { 16323 console.warn('Deprecation warning: ' + msg); 16324 } 16325 } 16326 16327 function deprecate(msg, fn) { 16328 var firstTime = true; 16329 16330 return extend(function () { 16331 if (hooks.deprecationHandler != null) { 16332 hooks.deprecationHandler(null, msg); 16333 } 16334 if (firstTime) { 16335 var args = [], 16336 arg, 16337 i, 16338 key; 16339 for (i = 0; i < arguments.length; i++) { 16340 arg = ''; 16341 if (typeof arguments[i] === 'object') { 16342 arg += '\n[' + i + '] '; 16343 for (key in arguments[0]) { 16344 if (hasOwnProp(arguments[0], key)) { 16345 arg += key + ': ' + arguments[0][key] + ', '; 16346 } 16347 } 16348 arg = arg.slice(0, -2); // Remove trailing comma and space 16349 } else { 16350 arg = arguments[i]; 16351 } 16352 args.push(arg); 16353 } 16354 warn( 16355 msg + 16356 '\nArguments: ' + 16357 Array.prototype.slice.call(args).join('') + 16358 '\n' + 16359 new Error().stack 16360 ); 16361 firstTime = false; 16362 } 16363 return fn.apply(this, arguments); 16364 }, fn); 16365 } 16366 16367 var deprecations = {}; 16368 16369 function deprecateSimple(name, msg) { 16370 if (hooks.deprecationHandler != null) { 16371 hooks.deprecationHandler(name, msg); 16372 } 16373 if (!deprecations[name]) { 16374 warn(msg); 16375 deprecations[name] = true; 16376 } 16377 } 16378 16379 hooks.suppressDeprecationWarnings = false; 16380 hooks.deprecationHandler = null; 16381 16382 function isFunction(input) { 16383 return ( 16384 (typeof Function !== 'undefined' && input instanceof Function) || 16385 Object.prototype.toString.call(input) === '[object Function]' 16386 ); 16387 } 16388 16389 function set(config) { 16390 var prop, i; 16391 for (i in config) { 16392 if (hasOwnProp(config, i)) { 16393 prop = config[i]; 16394 if (isFunction(prop)) { 16395 this[i] = prop; 16396 } else { 16397 this['_' + i] = prop; 16398 } 16399 } 16400 } 16401 this._config = config; 16402 // Lenient ordinal parsing accepts just a number in addition to 16403 // number + (possibly) stuff coming from _dayOfMonthOrdinalParse. 16404 // TODO: Remove "ordinalParse" fallback in next major release. 16405 this._dayOfMonthOrdinalParseLenient = new RegExp( 16406 (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + 16407 '|' + 16408 /\d{1,2}/.source 16409 ); 16410 } 16411 16412 function mergeConfigs(parentConfig, childConfig) { 16413 var res = extend({}, parentConfig), 16414 prop; 16415 for (prop in childConfig) { 16416 if (hasOwnProp(childConfig, prop)) { 16417 if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) { 16418 res[prop] = {}; 16419 extend(res[prop], parentConfig[prop]); 16420 extend(res[prop], childConfig[prop]); 16421 } else if (childConfig[prop] != null) { 16422 res[prop] = childConfig[prop]; 16423 } else { 16424 delete res[prop]; 16425 } 16426 } 16427 } 16428 for (prop in parentConfig) { 16429 if ( 16430 hasOwnProp(parentConfig, prop) && 16431 !hasOwnProp(childConfig, prop) && 16432 isObject(parentConfig[prop]) 16433 ) { 16434 // make sure changes to properties don't modify parent config 16435 res[prop] = extend({}, res[prop]); 16436 } 16437 } 16438 return res; 16439 } 16440 16441 function Locale(config) { 16442 if (config != null) { 16443 this.set(config); 16444 } 16445 } 16446 16447 var keys; 16448 16449 if (Object.keys) { 16450 keys = Object.keys; 16451 } else { 16452 keys = function (obj) { 16453 var i, 16454 res = []; 16455 for (i in obj) { 16456 if (hasOwnProp(obj, i)) { 16457 res.push(i); 16458 } 16459 } 16460 return res; 16461 }; 16462 } 16463 16464 var defaultCalendar = { 16465 sameDay: '[Today at] LT', 16466 nextDay: '[Tomorrow at] LT', 16467 nextWeek: 'dddd [at] LT', 16468 lastDay: '[Yesterday at] LT', 16469 lastWeek: '[Last] dddd [at] LT', 16470 sameElse: 'L', 16471 }; 16472 16473 function calendar(key, mom, now) { 16474 var output = this._calendar[key] || this._calendar['sameElse']; 16475 return isFunction(output) ? output.call(mom, now) : output; 16476 } 16477 16478 function zeroFill(number, targetLength, forceSign) { 16479 var absNumber = '' + Math.abs(number), 16480 zerosToFill = targetLength - absNumber.length, 16481 sign = number >= 0; 16482 return ( 16483 (sign ? (forceSign ? '+' : '') : '-') + 16484 Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + 16485 absNumber 16486 ); 16487 } 16488 16489 var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g, 16490 localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, 16491 formatFunctions = {}, 16492 formatTokenFunctions = {}; 16493 16494 // token: 'M' 16495 // padded: ['MM', 2] 16496 // ordinal: 'Mo' 16497 // callback: function () { this.month() + 1 } 16498 function addFormatToken(token, padded, ordinal, callback) { 16499 var func = callback; 16500 if (typeof callback === 'string') { 16501 func = function () { 16502 return this[callback](); 16503 }; 16504 } 16505 if (token) { 16506 formatTokenFunctions[token] = func; 16507 } 16508 if (padded) { 16509 formatTokenFunctions[padded[0]] = function () { 16510 return zeroFill(func.apply(this, arguments), padded[1], padded[2]); 16511 }; 16512 } 16513 if (ordinal) { 16514 formatTokenFunctions[ordinal] = function () { 16515 return this.localeData().ordinal( 16516 func.apply(this, arguments), 16517 token 16518 ); 16519 }; 16520 } 16521 } 16522 16523 function removeFormattingTokens(input) { 16524 if (input.match(/\[[\s\S]/)) { 16525 return input.replace(/^\[|\]$/g, ''); 16526 } 16527 return input.replace(/\\/g, ''); 16528 } 16529 16530 function makeFormatFunction(format) { 16531 var array = format.match(formattingTokens), 16532 i, 16533 length; 16534 16535 for (i = 0, length = array.length; i < length; i++) { 16536 if (formatTokenFunctions[array[i]]) { 16537 array[i] = formatTokenFunctions[array[i]]; 16538 } else { 16539 array[i] = removeFormattingTokens(array[i]); 16540 } 16541 } 16542 16543 return function (mom) { 16544 var output = '', 16545 i; 16546 for (i = 0; i < length; i++) { 16547 output += isFunction(array[i]) 16548 ? array[i].call(mom, format) 16549 : array[i]; 16550 } 16551 return output; 16552 }; 16553 } 16554 16555 // format date using native date object 16556 function formatMoment(m, format) { 16557 if (!m.isValid()) { 16558 return m.localeData().invalidDate(); 16559 } 16560 16561 format = expandFormat(format, m.localeData()); 16562 formatFunctions[format] = 16563 formatFunctions[format] || makeFormatFunction(format); 16564 16565 return formatFunctions[format](m); 16566 } 16567 16568 function expandFormat(format, locale) { 16569 var i = 5; 16570 16571 function replaceLongDateFormatTokens(input) { 16572 return locale.longDateFormat(input) || input; 16573 } 16574 16575 localFormattingTokens.lastIndex = 0; 16576 while (i >= 0 && localFormattingTokens.test(format)) { 16577 format = format.replace( 16578 localFormattingTokens, 16579 replaceLongDateFormatTokens 16580 ); 16581 localFormattingTokens.lastIndex = 0; 16582 i -= 1; 16583 } 16584 16585 return format; 16586 } 16587 16588 var defaultLongDateFormat = { 16589 LTS: 'h:mm:ss A', 16590 LT: 'h:mm A', 16591 L: 'MM/DD/YYYY', 16592 LL: 'MMMM D, YYYY', 16593 LLL: 'MMMM D, YYYY h:mm A', 16594 LLLL: 'dddd, MMMM D, YYYY h:mm A', 16595 }; 16596 16597 function longDateFormat(key) { 16598 var format = this._longDateFormat[key], 16599 formatUpper = this._longDateFormat[key.toUpperCase()]; 16600 16601 if (format || !formatUpper) { 16602 return format; 16603 } 16604 16605 this._longDateFormat[key] = formatUpper 16606 .match(formattingTokens) 16607 .map(function (tok) { 16608 if ( 16609 tok === 'MMMM' || 16610 tok === 'MM' || 16611 tok === 'DD' || 16612 tok === 'dddd' 16613 ) { 16614 return tok.slice(1); 16615 } 16616 return tok; 16617 }) 16618 .join(''); 16619 16620 return this._longDateFormat[key]; 16621 } 16622 16623 var defaultInvalidDate = 'Invalid date'; 16624 16625 function invalidDate() { 16626 return this._invalidDate; 16627 } 16628 16629 var defaultOrdinal = '%d', 16630 defaultDayOfMonthOrdinalParse = /\d{1,2}/; 16631 16632 function ordinal(number) { 16633 return this._ordinal.replace('%d', number); 16634 } 16635 16636 var defaultRelativeTime = { 16637 future: 'in %s', 16638 past: '%s ago', 16639 s: 'a few seconds', 16640 ss: '%d seconds', 16641 m: 'a minute', 16642 mm: '%d minutes', 16643 h: 'an hour', 16644 hh: '%d hours', 16645 d: 'a day', 16646 dd: '%d days', 16647 w: 'a week', 16648 ww: '%d weeks', 16649 M: 'a month', 16650 MM: '%d months', 16651 y: 'a year', 16652 yy: '%d years', 16653 }; 16654 16655 function relativeTime(number, withoutSuffix, string, isFuture) { 16656 var output = this._relativeTime[string]; 16657 return isFunction(output) 16658 ? output(number, withoutSuffix, string, isFuture) 16659 : output.replace(/%d/i, number); 16660 } 16661 16662 function pastFuture(diff, output) { 16663 var format = this._relativeTime[diff > 0 ? 'future' : 'past']; 16664 return isFunction(format) ? format(output) : format.replace(/%s/i, output); 16665 } 16666 16667 var aliases = {}; 16668 16669 function addUnitAlias(unit, shorthand) { 16670 var lowerCase = unit.toLowerCase(); 16671 aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit; 16672 } 16673 16674 function normalizeUnits(units) { 16675 return typeof units === 'string' 16676 ? aliases[units] || aliases[units.toLowerCase()] 16677 : undefined; 16678 } 16679 16680 function normalizeObjectUnits(inputObject) { 16681 var normalizedInput = {}, 16682 normalizedProp, 16683 prop; 16684 16685 for (prop in inputObject) { 16686 if (hasOwnProp(inputObject, prop)) { 16687 normalizedProp = normalizeUnits(prop); 16688 if (normalizedProp) { 16689 normalizedInput[normalizedProp] = inputObject[prop]; 16690 } 16691 } 16692 } 16693 16694 return normalizedInput; 16695 } 16696 16697 var priorities = {}; 16698 16699 function addUnitPriority(unit, priority) { 16700 priorities[unit] = priority; 16701 } 16702 16703 function getPrioritizedUnits(unitsObj) { 16704 var units = [], 16705 u; 16706 for (u in unitsObj) { 16707 if (hasOwnProp(unitsObj, u)) { 16708 units.push({ unit: u, priority: priorities[u] }); 16709 } 16710 } 16711 units.sort(function (a, b) { 16712 return a.priority - b.priority; 16713 }); 16714 return units; 16715 } 16716 16717 function isLeapYear(year) { 16718 return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0; 16719 } 16720 16721 function absFloor(number) { 16722 if (number < 0) { 16723 // -0 -> 0 16724 return Math.ceil(number) || 0; 16725 } else { 16726 return Math.floor(number); 16727 } 16728 } 16729 16730 function toInt(argumentForCoercion) { 16731 var coercedNumber = +argumentForCoercion, 16732 value = 0; 16733 16734 if (coercedNumber !== 0 && isFinite(coercedNumber)) { 16735 value = absFloor(coercedNumber); 16736 } 16737 16738 return value; 16739 } 16740 16741 function makeGetSet(unit, keepTime) { 16742 return function (value) { 16743 if (value != null) { 16744 set$1(this, unit, value); 16745 hooks.updateOffset(this, keepTime); 16746 return this; 16747 } else { 16748 return get(this, unit); 16749 } 16750 }; 16751 } 16752 16753 function get(mom, unit) { 16754 return mom.isValid() 16755 ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() 16756 : NaN; 16757 } 16758 16759 function set$1(mom, unit, value) { 16760 if (mom.isValid() && !isNaN(value)) { 16761 if ( 16762 unit === 'FullYear' && 16763 isLeapYear(mom.year()) && 16764 mom.month() === 1 && 16765 mom.date() === 29 16766 ) { 16767 value = toInt(value); 16768 mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit]( 16769 value, 16770 mom.month(), 16771 daysInMonth(value, mom.month()) 16772 ); 16773 } else { 16774 mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value); 16775 } 16776 } 16777 } 16778 16779 // MOMENTS 16780 16781 function stringGet(units) { 16782 units = normalizeUnits(units); 16783 if (isFunction(this[units])) { 16784 return this[units](); 16785 } 16786 return this; 16787 } 16788 16789 function stringSet(units, value) { 16790 if (typeof units === 'object') { 16791 units = normalizeObjectUnits(units); 16792 var prioritized = getPrioritizedUnits(units), 16793 i; 16794 for (i = 0; i < prioritized.length; i++) { 16795 this[prioritized[i].unit](units[prioritized[i].unit]); 16796 } 16797 } else { 16798 units = normalizeUnits(units); 16799 if (isFunction(this[units])) { 16800 return this[units](value); 16801 } 16802 } 16803 return this; 16804 } 16805 16806 var match1 = /\d/, // 0 - 9 16807 match2 = /\d\d/, // 00 - 99 16808 match3 = /\d{3}/, // 000 - 999 16809 match4 = /\d{4}/, // 0000 - 9999 16810 match6 = /[+-]?\d{6}/, // -999999 - 999999 16811 match1to2 = /\d\d?/, // 0 - 99 16812 match3to4 = /\d\d\d\d?/, // 999 - 9999 16813 match5to6 = /\d\d\d\d\d\d?/, // 99999 - 999999 16814 match1to3 = /\d{1,3}/, // 0 - 999 16815 match1to4 = /\d{1,4}/, // 0 - 9999 16816 match1to6 = /[+-]?\d{1,6}/, // -999999 - 999999 16817 matchUnsigned = /\d+/, // 0 - inf 16818 matchSigned = /[+-]?\d+/, // -inf - inf 16819 matchOffset = /Z|[+-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z 16820 matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z 16821 matchTimestamp = /[+-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123 16822 // any word (or two) characters or numbers including two/three word month in arabic. 16823 // includes scottish gaelic two word and hyphenated months 16824 matchWord = /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i, 16825 regexes; 16826 16827 regexes = {}; 16828 16829 function addRegexToken(token, regex, strictRegex) { 16830 regexes[token] = isFunction(regex) 16831 ? regex 16832 : function (isStrict, localeData) { 16833 return isStrict && strictRegex ? strictRegex : regex; 16834 }; 16835 } 16836 16837 function getParseRegexForToken(token, config) { 16838 if (!hasOwnProp(regexes, token)) { 16839 return new RegExp(unescapeFormat(token)); 16840 } 16841 16842 return regexes[token](config._strict, config._locale); 16843 } 16844 16845 // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript 16846 function unescapeFormat(s) { 16847 return regexEscape( 16848 s 16849 .replace('\\', '') 16850 .replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function ( 16851 matched, 16852 p1, 16853 p2, 16854 p3, 16855 p4 16856 ) { 16857 return p1 || p2 || p3 || p4; 16858 }) 16859 ); 16860 } 16861 16862 function regexEscape(s) { 16863 return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); 16864 } 16865 16866 var tokens = {}; 16867 16868 function addParseToken(token, callback) { 16869 var i, 16870 func = callback; 16871 if (typeof token === 'string') { 16872 token = [token]; 16873 } 16874 if (isNumber(callback)) { 16875 func = function (input, array) { 16876 array[callback] = toInt(input); 16877 }; 16878 } 16879 for (i = 0; i < token.length; i++) { 16880 tokens[token[i]] = func; 16881 } 16882 } 16883 16884 function addWeekParseToken(token, callback) { 16885 addParseToken(token, function (input, array, config, token) { 16886 config._w = config._w || {}; 16887 callback(input, config._w, config, token); 16888 }); 16889 } 16890 16891 function addTimeToArrayFromToken(token, input, config) { 16892 if (input != null && hasOwnProp(tokens, token)) { 16893 tokens[token](input, config._a, config, token); 16894 } 16895 } 16896 16897 var YEAR = 0, 16898 MONTH = 1, 16899 DATE = 2, 16900 HOUR = 3, 16901 MINUTE = 4, 16902 SECOND = 5, 16903 MILLISECOND = 6, 16904 WEEK = 7, 16905 WEEKDAY = 8; 16906 16907 function mod(n, x) { 16908 return ((n % x) + x) % x; 16909 } 16910 16911 var indexOf; 16912 16913 if (Array.prototype.indexOf) { 16914 indexOf = Array.prototype.indexOf; 16915 } else { 16916 indexOf = function (o) { 16917 // I know 16918 var i; 16919 for (i = 0; i < this.length; ++i) { 16920 if (this[i] === o) { 16921 return i; 16922 } 16923 } 16924 return -1; 16925 }; 16926 } 16927 16928 function daysInMonth(year, month) { 16929 if (isNaN(year) || isNaN(month)) { 16930 return NaN; 16931 } 16932 var modMonth = mod(month, 12); 16933 year += (month - modMonth) / 12; 16934 return modMonth === 1 16935 ? isLeapYear(year) 16936 ? 29 16937 : 28 16938 : 31 - ((modMonth % 7) % 2); 16939 } 16940 16941 // FORMATTING 16942 16943 addFormatToken('M', ['MM', 2], 'Mo', function () { 16944 return this.month() + 1; 16945 }); 16946 16947 addFormatToken('MMM', 0, 0, function (format) { 16948 return this.localeData().monthsShort(this, format); 16949 }); 16950 16951 addFormatToken('MMMM', 0, 0, function (format) { 16952 return this.localeData().months(this, format); 16953 }); 16954 16955 // ALIASES 16956 16957 addUnitAlias('month', 'M'); 16958 16959 // PRIORITY 16960 16961 addUnitPriority('month', 8); 16962 16963 // PARSING 16964 16965 addRegexToken('M', match1to2); 16966 addRegexToken('MM', match1to2, match2); 16967 addRegexToken('MMM', function (isStrict, locale) { 16968 return locale.monthsShortRegex(isStrict); 16969 }); 16970 addRegexToken('MMMM', function (isStrict, locale) { 16971 return locale.monthsRegex(isStrict); 16972 }); 16973 16974 addParseToken(['M', 'MM'], function (input, array) { 16975 array[MONTH] = toInt(input) - 1; 16976 }); 16977 16978 addParseToken(['MMM', 'MMMM'], function (input, array, config, token) { 16979 var month = config._locale.monthsParse(input, token, config._strict); 16980 // if we didn't find a month name, mark the date as invalid. 16981 if (month != null) { 16982 array[MONTH] = month; 16983 } else { 16984 getParsingFlags(config).invalidMonth = input; 16985 } 16986 }); 16987 16988 // LOCALES 16989 16990 var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split( 16991 '_' 16992 ), 16993 defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split( 16994 '_' 16995 ), 16996 MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/, 16997 defaultMonthsShortRegex = matchWord, 16998 defaultMonthsRegex = matchWord; 16999 17000 function localeMonths(m, format) { 17001 if (!m) { 17002 return isArray(this._months) 17003 ? this._months 17004 : this._months['standalone']; 17005 } 17006 return isArray(this._months) 17007 ? this._months[m.month()] 17008 : this._months[ 17009 (this._months.isFormat || MONTHS_IN_FORMAT).test(format) 17010 ? 'format' 17011 : 'standalone' 17012 ][m.month()]; 17013 } 17014 17015 function localeMonthsShort(m, format) { 17016 if (!m) { 17017 return isArray(this._monthsShort) 17018 ? this._monthsShort 17019 : this._monthsShort['standalone']; 17020 } 17021 return isArray(this._monthsShort) 17022 ? this._monthsShort[m.month()] 17023 : this._monthsShort[ 17024 MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone' 17025 ][m.month()]; 17026 } 17027 17028 function handleStrictParse(monthName, format, strict) { 17029 var i, 17030 ii, 17031 mom, 17032 llc = monthName.toLocaleLowerCase(); 17033 if (!this._monthsParse) { 17034 // this is not used 17035 this._monthsParse = []; 17036 this._longMonthsParse = []; 17037 this._shortMonthsParse = []; 17038 for (i = 0; i < 12; ++i) { 17039 mom = createUTC([2000, i]); 17040 this._shortMonthsParse[i] = this.monthsShort( 17041 mom, 17042 '' 17043 ).toLocaleLowerCase(); 17044 this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase(); 17045 } 17046 } 17047 17048 if (strict) { 17049 if (format === 'MMM') { 17050 ii = indexOf.call(this._shortMonthsParse, llc); 17051 return ii !== -1 ? ii : null; 17052 } else { 17053 ii = indexOf.call(this._longMonthsParse, llc); 17054 return ii !== -1 ? ii : null; 17055 } 17056 } else { 17057 if (format === 'MMM') { 17058 ii = indexOf.call(this._shortMonthsParse, llc); 17059 if (ii !== -1) { 17060 return ii; 17061 } 17062 ii = indexOf.call(this._longMonthsParse, llc); 17063 return ii !== -1 ? ii : null; 17064 } else { 17065 ii = indexOf.call(this._longMonthsParse, llc); 17066 if (ii !== -1) { 17067 return ii; 17068 } 17069 ii = indexOf.call(this._shortMonthsParse, llc); 17070 return ii !== -1 ? ii : null; 17071 } 17072 } 17073 } 17074 17075 function localeMonthsParse(monthName, format, strict) { 17076 var i, mom, regex; 17077 17078 if (this._monthsParseExact) { 17079 return handleStrictParse.call(this, monthName, format, strict); 17080 } 17081 17082 if (!this._monthsParse) { 17083 this._monthsParse = []; 17084 this._longMonthsParse = []; 17085 this._shortMonthsParse = []; 17086 } 17087 17088 // TODO: add sorting 17089 // Sorting makes sure if one month (or abbr) is a prefix of another 17090 // see sorting in computeMonthsParse 17091 for (i = 0; i < 12; i++) { 17092 // make the regex if we don't have it already 17093 mom = createUTC([2000, i]); 17094 if (strict && !this._longMonthsParse[i]) { 17095 this._longMonthsParse[i] = new RegExp( 17096 '^' + this.months(mom, '').replace('.', '') + '$', 17097 'i' 17098 ); 17099 this._shortMonthsParse[i] = new RegExp( 17100 '^' + this.monthsShort(mom, '').replace('.', '') + '$', 17101 'i' 17102 ); 17103 } 17104 if (!strict && !this._monthsParse[i]) { 17105 regex = 17106 '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, ''); 17107 this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i'); 17108 } 17109 // test the regex 17110 if ( 17111 strict && 17112 format === 'MMMM' && 17113 this._longMonthsParse[i].test(monthName) 17114 ) { 17115 return i; 17116 } else if ( 17117 strict && 17118 format === 'MMM' && 17119 this._shortMonthsParse[i].test(monthName) 17120 ) { 17121 return i; 17122 } else if (!strict && this._monthsParse[i].test(monthName)) { 17123 return i; 17124 } 17125 } 17126 } 17127 17128 // MOMENTS 17129 17130 function setMonth(mom, value) { 17131 var dayOfMonth; 17132 17133 if (!mom.isValid()) { 17134 // No op 17135 return mom; 17136 } 17137 17138 if (typeof value === 'string') { 17139 if (/^\d+$/.test(value)) { 17140 value = toInt(value); 17141 } else { 17142 value = mom.localeData().monthsParse(value); 17143 // TODO: Another silent failure? 17144 if (!isNumber(value)) { 17145 return mom; 17146 } 17147 } 17148 } 17149 17150 dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value)); 17151 mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth); 17152 return mom; 17153 } 17154 17155 function getSetMonth(value) { 17156 if (value != null) { 17157 setMonth(this, value); 17158 hooks.updateOffset(this, true); 17159 return this; 17160 } else { 17161 return get(this, 'Month'); 17162 } 17163 } 17164 17165 function getDaysInMonth() { 17166 return daysInMonth(this.year(), this.month()); 17167 } 17168 17169 function monthsShortRegex(isStrict) { 17170 if (this._monthsParseExact) { 17171 if (!hasOwnProp(this, '_monthsRegex')) { 17172 computeMonthsParse.call(this); 17173 } 17174 if (isStrict) { 17175 return this._monthsShortStrictRegex; 17176 } else { 17177 return this._monthsShortRegex; 17178 } 17179 } else { 17180 if (!hasOwnProp(this, '_monthsShortRegex')) { 17181 this._monthsShortRegex = defaultMonthsShortRegex; 17182 } 17183 return this._monthsShortStrictRegex && isStrict 17184 ? this._monthsShortStrictRegex 17185 : this._monthsShortRegex; 17186 } 17187 } 17188 17189 function monthsRegex(isStrict) { 17190 if (this._monthsParseExact) { 17191 if (!hasOwnProp(this, '_monthsRegex')) { 17192 computeMonthsParse.call(this); 17193 } 17194 if (isStrict) { 17195 return this._monthsStrictRegex; 17196 } else { 17197 return this._monthsRegex; 17198 } 17199 } else { 17200 if (!hasOwnProp(this, '_monthsRegex')) { 17201 this._monthsRegex = defaultMonthsRegex; 17202 } 17203 return this._monthsStrictRegex && isStrict 17204 ? this._monthsStrictRegex 17205 : this._monthsRegex; 17206 } 17207 } 17208 17209 function computeMonthsParse() { 17210 function cmpLenRev(a, b) { 17211 return b.length - a.length; 17212 } 17213 17214 var shortPieces = [], 17215 longPieces = [], 17216 mixedPieces = [], 17217 i, 17218 mom; 17219 for (i = 0; i < 12; i++) { 17220 // make the regex if we don't have it already 17221 mom = createUTC([2000, i]); 17222 shortPieces.push(this.monthsShort(mom, '')); 17223 longPieces.push(this.months(mom, '')); 17224 mixedPieces.push(this.months(mom, '')); 17225 mixedPieces.push(this.monthsShort(mom, '')); 17226 } 17227 // Sorting makes sure if one month (or abbr) is a prefix of another it 17228 // will match the longer piece. 17229 shortPieces.sort(cmpLenRev); 17230 longPieces.sort(cmpLenRev); 17231 mixedPieces.sort(cmpLenRev); 17232 for (i = 0; i < 12; i++) { 17233 shortPieces[i] = regexEscape(shortPieces[i]); 17234 longPieces[i] = regexEscape(longPieces[i]); 17235 } 17236 for (i = 0; i < 24; i++) { 17237 mixedPieces[i] = regexEscape(mixedPieces[i]); 17238 } 17239 17240 this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); 17241 this._monthsShortRegex = this._monthsRegex; 17242 this._monthsStrictRegex = new RegExp( 17243 '^(' + longPieces.join('|') + ')', 17244 'i' 17245 ); 17246 this._monthsShortStrictRegex = new RegExp( 17247 '^(' + shortPieces.join('|') + ')', 17248 'i' 17249 ); 17250 } 17251 17252 // FORMATTING 17253 17254 addFormatToken('Y', 0, 0, function () { 17255 var y = this.year(); 17256 return y <= 9999 ? zeroFill(y, 4) : '+' + y; 17257 }); 17258 17259 addFormatToken(0, ['YY', 2], 0, function () { 17260 return this.year() % 100; 17261 }); 17262 17263 addFormatToken(0, ['YYYY', 4], 0, 'year'); 17264 addFormatToken(0, ['YYYYY', 5], 0, 'year'); 17265 addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); 17266 17267 // ALIASES 17268 17269 addUnitAlias('year', 'y'); 17270 17271 // PRIORITIES 17272 17273 addUnitPriority('year', 1); 17274 17275 // PARSING 17276 17277 addRegexToken('Y', matchSigned); 17278 addRegexToken('YY', match1to2, match2); 17279 addRegexToken('YYYY', match1to4, match4); 17280 addRegexToken('YYYYY', match1to6, match6); 17281 addRegexToken('YYYYYY', match1to6, match6); 17282 17283 addParseToken(['YYYYY', 'YYYYYY'], YEAR); 17284 addParseToken('YYYY', function (input, array) { 17285 array[YEAR] = 17286 input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input); 17287 }); 17288 addParseToken('YY', function (input, array) { 17289 array[YEAR] = hooks.parseTwoDigitYear(input); 17290 }); 17291 addParseToken('Y', function (input, array) { 17292 array[YEAR] = parseInt(input, 10); 17293 }); 17294 17295 // HELPERS 17296 17297 function daysInYear(year) { 17298 return isLeapYear(year) ? 366 : 365; 17299 } 17300 17301 // HOOKS 17302 17303 hooks.parseTwoDigitYear = function (input) { 17304 return toInt(input) + (toInt(input) > 68 ? 1900 : 2000); 17305 }; 17306 17307 // MOMENTS 17308 17309 var getSetYear = makeGetSet('FullYear', true); 17310 17311 function getIsLeapYear() { 17312 return isLeapYear(this.year()); 17313 } 17314 17315 function createDate(y, m, d, h, M, s, ms) { 17316 // can't just apply() to create a date: 17317 // https://stackoverflow.com/q/181348 17318 var date; 17319 // the date constructor remaps years 0-99 to 1900-1999 17320 if (y < 100 && y >= 0) { 17321 // preserve leap years using a full 400 year cycle, then reset 17322 date = new Date(y + 400, m, d, h, M, s, ms); 17323 if (isFinite(date.getFullYear())) { 17324 date.setFullYear(y); 17325 } 17326 } else { 17327 date = new Date(y, m, d, h, M, s, ms); 17328 } 17329 17330 return date; 17331 } 17332 17333 function createUTCDate(y) { 17334 var date, args; 17335 // the Date.UTC function remaps years 0-99 to 1900-1999 17336 if (y < 100 && y >= 0) { 17337 args = Array.prototype.slice.call(arguments); 17338 // preserve leap years using a full 400 year cycle, then reset 17339 args[0] = y + 400; 17340 date = new Date(Date.UTC.apply(null, args)); 17341 if (isFinite(date.getUTCFullYear())) { 17342 date.setUTCFullYear(y); 17343 } 17344 } else { 17345 date = new Date(Date.UTC.apply(null, arguments)); 17346 } 17347 17348 return date; 17349 } 17350 17351 // start-of-first-week - start-of-year 17352 function firstWeekOffset(year, dow, doy) { 17353 var // first-week day -- which january is always in the first week (4 for iso, 1 for other) 17354 fwd = 7 + dow - doy, 17355 // first-week day local weekday -- which local weekday is fwd 17356 fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7; 17357 17358 return -fwdlw + fwd - 1; 17359 } 17360 17361 // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday 17362 function dayOfYearFromWeeks(year, week, weekday, dow, doy) { 17363 var localWeekday = (7 + weekday - dow) % 7, 17364 weekOffset = firstWeekOffset(year, dow, doy), 17365 dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset, 17366 resYear, 17367 resDayOfYear; 17368 17369 if (dayOfYear <= 0) { 17370 resYear = year - 1; 17371 resDayOfYear = daysInYear(resYear) + dayOfYear; 17372 } else if (dayOfYear > daysInYear(year)) { 17373 resYear = year + 1; 17374 resDayOfYear = dayOfYear - daysInYear(year); 17375 } else { 17376 resYear = year; 17377 resDayOfYear = dayOfYear; 17378 } 17379 17380 return { 17381 year: resYear, 17382 dayOfYear: resDayOfYear, 17383 }; 17384 } 17385 17386 function weekOfYear(mom, dow, doy) { 17387 var weekOffset = firstWeekOffset(mom.year(), dow, doy), 17388 week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1, 17389 resWeek, 17390 resYear; 17391 17392 if (week < 1) { 17393 resYear = mom.year() - 1; 17394 resWeek = week + weeksInYear(resYear, dow, doy); 17395 } else if (week > weeksInYear(mom.year(), dow, doy)) { 17396 resWeek = week - weeksInYear(mom.year(), dow, doy); 17397 resYear = mom.year() + 1; 17398 } else { 17399 resYear = mom.year(); 17400 resWeek = week; 17401 } 17402 17403 return { 17404 week: resWeek, 17405 year: resYear, 17406 }; 17407 } 17408 17409 function weeksInYear(year, dow, doy) { 17410 var weekOffset = firstWeekOffset(year, dow, doy), 17411 weekOffsetNext = firstWeekOffset(year + 1, dow, doy); 17412 return (daysInYear(year) - weekOffset + weekOffsetNext) / 7; 17413 } 17414 17415 // FORMATTING 17416 17417 addFormatToken('w', ['ww', 2], 'wo', 'week'); 17418 addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); 17419 17420 // ALIASES 17421 17422 addUnitAlias('week', 'w'); 17423 addUnitAlias('isoWeek', 'W'); 17424 17425 // PRIORITIES 17426 17427 addUnitPriority('week', 5); 17428 addUnitPriority('isoWeek', 5); 17429 17430 // PARSING 17431 17432 addRegexToken('w', match1to2); 17433 addRegexToken('ww', match1to2, match2); 17434 addRegexToken('W', match1to2); 17435 addRegexToken('WW', match1to2, match2); 17436 17437 addWeekParseToken(['w', 'ww', 'W', 'WW'], function ( 17438 input, 17439 week, 17440 config, 17441 token 17442 ) { 17443 week[token.substr(0, 1)] = toInt(input); 17444 }); 17445 17446 // HELPERS 17447 17448 // LOCALES 17449 17450 function localeWeek(mom) { 17451 return weekOfYear(mom, this._week.dow, this._week.doy).week; 17452 } 17453 17454 var defaultLocaleWeek = { 17455 dow: 0, // Sunday is the first day of the week. 17456 doy: 6, // The week that contains Jan 6th is the first week of the year. 17457 }; 17458 17459 function localeFirstDayOfWeek() { 17460 return this._week.dow; 17461 } 17462 17463 function localeFirstDayOfYear() { 17464 return this._week.doy; 17465 } 17466 17467 // MOMENTS 17468 17469 function getSetWeek(input) { 17470 var week = this.localeData().week(this); 17471 return input == null ? week : this.add((input - week) * 7, 'd'); 17472 } 17473 17474 function getSetISOWeek(input) { 17475 var week = weekOfYear(this, 1, 4).week; 17476 return input == null ? week : this.add((input - week) * 7, 'd'); 17477 } 17478 17479 // FORMATTING 17480 17481 addFormatToken('d', 0, 'do', 'day'); 17482 17483 addFormatToken('dd', 0, 0, function (format) { 17484 return this.localeData().weekdaysMin(this, format); 17485 }); 17486 17487 addFormatToken('ddd', 0, 0, function (format) { 17488 return this.localeData().weekdaysShort(this, format); 17489 }); 17490 17491 addFormatToken('dddd', 0, 0, function (format) { 17492 return this.localeData().weekdays(this, format); 17493 }); 17494 17495 addFormatToken('e', 0, 0, 'weekday'); 17496 addFormatToken('E', 0, 0, 'isoWeekday'); 17497 17498 // ALIASES 17499 17500 addUnitAlias('day', 'd'); 17501 addUnitAlias('weekday', 'e'); 17502 addUnitAlias('isoWeekday', 'E'); 17503 17504 // PRIORITY 17505 addUnitPriority('day', 11); 17506 addUnitPriority('weekday', 11); 17507 addUnitPriority('isoWeekday', 11); 17508 17509 // PARSING 17510 17511 addRegexToken('d', match1to2); 17512 addRegexToken('e', match1to2); 17513 addRegexToken('E', match1to2); 17514 addRegexToken('dd', function (isStrict, locale) { 17515 return locale.weekdaysMinRegex(isStrict); 17516 }); 17517 addRegexToken('ddd', function (isStrict, locale) { 17518 return locale.weekdaysShortRegex(isStrict); 17519 }); 17520 addRegexToken('dddd', function (isStrict, locale) { 17521 return locale.weekdaysRegex(isStrict); 17522 }); 17523 17524 addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) { 17525 var weekday = config._locale.weekdaysParse(input, token, config._strict); 17526 // if we didn't get a weekday name, mark the date as invalid 17527 if (weekday != null) { 17528 week.d = weekday; 17529 } else { 17530 getParsingFlags(config).invalidWeekday = input; 17531 } 17532 }); 17533 17534 addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) { 17535 week[token] = toInt(input); 17536 }); 17537 17538 // HELPERS 17539 17540 function parseWeekday(input, locale) { 17541 if (typeof input !== 'string') { 17542 return input; 17543 } 17544 17545 if (!isNaN(input)) { 17546 return parseInt(input, 10); 17547 } 17548 17549 input = locale.weekdaysParse(input); 17550 if (typeof input === 'number') { 17551 return input; 17552 } 17553 17554 return null; 17555 } 17556 17557 function parseIsoWeekday(input, locale) { 17558 if (typeof input === 'string') { 17559 return locale.weekdaysParse(input) % 7 || 7; 17560 } 17561 return isNaN(input) ? null : input; 17562 } 17563 17564 // LOCALES 17565 function shiftWeekdays(ws, n) { 17566 return ws.slice(n, 7).concat(ws.slice(0, n)); 17567 } 17568 17569 var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split( 17570 '_' 17571 ), 17572 defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'), 17573 defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'), 17574 defaultWeekdaysRegex = matchWord, 17575 defaultWeekdaysShortRegex = matchWord, 17576 defaultWeekdaysMinRegex = matchWord; 17577 17578 function localeWeekdays(m, format) { 17579 var weekdays = isArray(this._weekdays) 17580 ? this._weekdays 17581 : this._weekdays[ 17582 m && m !== true && this._weekdays.isFormat.test(format) 17583 ? 'format' 17584 : 'standalone' 17585 ]; 17586 return m === true 17587 ? shiftWeekdays(weekdays, this._week.dow) 17588 : m 17589 ? weekdays[m.day()] 17590 : weekdays; 17591 } 17592 17593 function localeWeekdaysShort(m) { 17594 return m === true 17595 ? shiftWeekdays(this._weekdaysShort, this._week.dow) 17596 : m 17597 ? this._weekdaysShort[m.day()] 17598 : this._weekdaysShort; 17599 } 17600 17601 function localeWeekdaysMin(m) { 17602 return m === true 17603 ? shiftWeekdays(this._weekdaysMin, this._week.dow) 17604 : m 17605 ? this._weekdaysMin[m.day()] 17606 : this._weekdaysMin; 17607 } 17608 17609 function handleStrictParse$1(weekdayName, format, strict) { 17610 var i, 17611 ii, 17612 mom, 17613 llc = weekdayName.toLocaleLowerCase(); 17614 if (!this._weekdaysParse) { 17615 this._weekdaysParse = []; 17616 this._shortWeekdaysParse = []; 17617 this._minWeekdaysParse = []; 17618 17619 for (i = 0; i < 7; ++i) { 17620 mom = createUTC([2000, 1]).day(i); 17621 this._minWeekdaysParse[i] = this.weekdaysMin( 17622 mom, 17623 '' 17624 ).toLocaleLowerCase(); 17625 this._shortWeekdaysParse[i] = this.weekdaysShort( 17626 mom, 17627 '' 17628 ).toLocaleLowerCase(); 17629 this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase(); 17630 } 17631 } 17632 17633 if (strict) { 17634 if (format === 'dddd') { 17635 ii = indexOf.call(this._weekdaysParse, llc); 17636 return ii !== -1 ? ii : null; 17637 } else if (format === 'ddd') { 17638 ii = indexOf.call(this._shortWeekdaysParse, llc); 17639 return ii !== -1 ? ii : null; 17640 } else { 17641 ii = indexOf.call(this._minWeekdaysParse, llc); 17642 return ii !== -1 ? ii : null; 17643 } 17644 } else { 17645 if (format === 'dddd') { 17646 ii = indexOf.call(this._weekdaysParse, llc); 17647 if (ii !== -1) { 17648 return ii; 17649 } 17650 ii = indexOf.call(this._shortWeekdaysParse, llc); 17651 if (ii !== -1) { 17652 return ii; 17653 } 17654 ii = indexOf.call(this._minWeekdaysParse, llc); 17655 return ii !== -1 ? ii : null; 17656 } else if (format === 'ddd') { 17657 ii = indexOf.call(this._shortWeekdaysParse, llc); 17658 if (ii !== -1) { 17659 return ii; 17660 } 17661 ii = indexOf.call(this._weekdaysParse, llc); 17662 if (ii !== -1) { 17663 return ii; 17664 } 17665 ii = indexOf.call(this._minWeekdaysParse, llc); 17666 return ii !== -1 ? ii : null; 17667 } else { 17668 ii = indexOf.call(this._minWeekdaysParse, llc); 17669 if (ii !== -1) { 17670 return ii; 17671 } 17672 ii = indexOf.call(this._weekdaysParse, llc); 17673 if (ii !== -1) { 17674 return ii; 17675 } 17676 ii = indexOf.call(this._shortWeekdaysParse, llc); 17677 return ii !== -1 ? ii : null; 17678 } 17679 } 17680 } 17681 17682 function localeWeekdaysParse(weekdayName, format, strict) { 17683 var i, mom, regex; 17684 17685 if (this._weekdaysParseExact) { 17686 return handleStrictParse$1.call(this, weekdayName, format, strict); 17687 } 17688 17689 if (!this._weekdaysParse) { 17690 this._weekdaysParse = []; 17691 this._minWeekdaysParse = []; 17692 this._shortWeekdaysParse = []; 17693 this._fullWeekdaysParse = []; 17694 } 17695 17696 for (i = 0; i < 7; i++) { 17697 // make the regex if we don't have it already 17698 17699 mom = createUTC([2000, 1]).day(i); 17700 if (strict && !this._fullWeekdaysParse[i]) { 17701 this._fullWeekdaysParse[i] = new RegExp( 17702 '^' + this.weekdays(mom, '').replace('.', '\\.?') + '$', 17703 'i' 17704 ); 17705 this._shortWeekdaysParse[i] = new RegExp( 17706 '^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$', 17707 'i' 17708 ); 17709 this._minWeekdaysParse[i] = new RegExp( 17710 '^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$', 17711 'i' 17712 ); 17713 } 17714 if (!this._weekdaysParse[i]) { 17715 regex = 17716 '^' + 17717 this.weekdays(mom, '') + 17718 '|^' + 17719 this.weekdaysShort(mom, '') + 17720 '|^' + 17721 this.weekdaysMin(mom, ''); 17722 this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i'); 17723 } 17724 // test the regex 17725 if ( 17726 strict && 17727 format === 'dddd' && 17728 this._fullWeekdaysParse[i].test(weekdayName) 17729 ) { 17730 return i; 17731 } else if ( 17732 strict && 17733 format === 'ddd' && 17734 this._shortWeekdaysParse[i].test(weekdayName) 17735 ) { 17736 return i; 17737 } else if ( 17738 strict && 17739 format === 'dd' && 17740 this._minWeekdaysParse[i].test(weekdayName) 17741 ) { 17742 return i; 17743 } else if (!strict && this._weekdaysParse[i].test(weekdayName)) { 17744 return i; 17745 } 17746 } 17747 } 17748 17749 // MOMENTS 17750 17751 function getSetDayOfWeek(input) { 17752 if (!this.isValid()) { 17753 return input != null ? this : NaN; 17754 } 17755 var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay(); 17756 if (input != null) { 17757 input = parseWeekday(input, this.localeData()); 17758 return this.add(input - day, 'd'); 17759 } else { 17760 return day; 17761 } 17762 } 17763 17764 function getSetLocaleDayOfWeek(input) { 17765 if (!this.isValid()) { 17766 return input != null ? this : NaN; 17767 } 17768 var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7; 17769 return input == null ? weekday : this.add(input - weekday, 'd'); 17770 } 17771 17772 function getSetISODayOfWeek(input) { 17773 if (!this.isValid()) { 17774 return input != null ? this : NaN; 17775 } 17776 17777 // behaves the same as moment#day except 17778 // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6) 17779 // as a setter, sunday should belong to the previous week. 17780 17781 if (input != null) { 17782 var weekday = parseIsoWeekday(input, this.localeData()); 17783 return this.day(this.day() % 7 ? weekday : weekday - 7); 17784 } else { 17785 return this.day() || 7; 17786 } 17787 } 17788 17789 function weekdaysRegex(isStrict) { 17790 if (this._weekdaysParseExact) { 17791 if (!hasOwnProp(this, '_weekdaysRegex')) { 17792 computeWeekdaysParse.call(this); 17793 } 17794 if (isStrict) { 17795 return this._weekdaysStrictRegex; 17796 } else { 17797 return this._weekdaysRegex; 17798 } 17799 } else { 17800 if (!hasOwnProp(this, '_weekdaysRegex')) { 17801 this._weekdaysRegex = defaultWeekdaysRegex; 17802 } 17803 return this._weekdaysStrictRegex && isStrict 17804 ? this._weekdaysStrictRegex 17805 : this._weekdaysRegex; 17806 } 17807 } 17808 17809 function weekdaysShortRegex(isStrict) { 17810 if (this._weekdaysParseExact) { 17811 if (!hasOwnProp(this, '_weekdaysRegex')) { 17812 computeWeekdaysParse.call(this); 17813 } 17814 if (isStrict) { 17815 return this._weekdaysShortStrictRegex; 17816 } else { 17817 return this._weekdaysShortRegex; 17818 } 17819 } else { 17820 if (!hasOwnProp(this, '_weekdaysShortRegex')) { 17821 this._weekdaysShortRegex = defaultWeekdaysShortRegex; 17822 } 17823 return this._weekdaysShortStrictRegex && isStrict 17824 ? this._weekdaysShortStrictRegex 17825 : this._weekdaysShortRegex; 17826 } 17827 } 17828 17829 function weekdaysMinRegex(isStrict) { 17830 if (this._weekdaysParseExact) { 17831 if (!hasOwnProp(this, '_weekdaysRegex')) { 17832 computeWeekdaysParse.call(this); 17833 } 17834 if (isStrict) { 17835 return this._weekdaysMinStrictRegex; 17836 } else { 17837 return this._weekdaysMinRegex; 17838 } 17839 } else { 17840 if (!hasOwnProp(this, '_weekdaysMinRegex')) { 17841 this._weekdaysMinRegex = defaultWeekdaysMinRegex; 17842 } 17843 return this._weekdaysMinStrictRegex && isStrict 17844 ? this._weekdaysMinStrictRegex 17845 : this._weekdaysMinRegex; 17846 } 17847 } 17848 17849 function computeWeekdaysParse() { 17850 function cmpLenRev(a, b) { 17851 return b.length - a.length; 17852 } 17853 17854 var minPieces = [], 17855 shortPieces = [], 17856 longPieces = [], 17857 mixedPieces = [], 17858 i, 17859 mom, 17860 minp, 17861 shortp, 17862 longp; 17863 for (i = 0; i < 7; i++) { 17864 // make the regex if we don't have it already 17865 mom = createUTC([2000, 1]).day(i); 17866 minp = regexEscape(this.weekdaysMin(mom, '')); 17867 shortp = regexEscape(this.weekdaysShort(mom, '')); 17868 longp = regexEscape(this.weekdays(mom, '')); 17869 minPieces.push(minp); 17870 shortPieces.push(shortp); 17871 longPieces.push(longp); 17872 mixedPieces.push(minp); 17873 mixedPieces.push(shortp); 17874 mixedPieces.push(longp); 17875 } 17876 // Sorting makes sure if one weekday (or abbr) is a prefix of another it 17877 // will match the longer piece. 17878 minPieces.sort(cmpLenRev); 17879 shortPieces.sort(cmpLenRev); 17880 longPieces.sort(cmpLenRev); 17881 mixedPieces.sort(cmpLenRev); 17882 17883 this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); 17884 this._weekdaysShortRegex = this._weekdaysRegex; 17885 this._weekdaysMinRegex = this._weekdaysRegex; 17886 17887 this._weekdaysStrictRegex = new RegExp( 17888 '^(' + longPieces.join('|') + ')', 17889 'i' 17890 ); 17891 this._weekdaysShortStrictRegex = new RegExp( 17892 '^(' + shortPieces.join('|') + ')', 17893 'i' 17894 ); 17895 this._weekdaysMinStrictRegex = new RegExp( 17896 '^(' + minPieces.join('|') + ')', 17897 'i' 17898 ); 17899 } 17900 17901 // FORMATTING 17902 17903 function hFormat() { 17904 return this.hours() % 12 || 12; 17905 } 17906 17907 function kFormat() { 17908 return this.hours() || 24; 17909 } 17910 17911 addFormatToken('H', ['HH', 2], 0, 'hour'); 17912 addFormatToken('h', ['hh', 2], 0, hFormat); 17913 addFormatToken('k', ['kk', 2], 0, kFormat); 17914 17915 addFormatToken('hmm', 0, 0, function () { 17916 return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2); 17917 }); 17918 17919 addFormatToken('hmmss', 0, 0, function () { 17920 return ( 17921 '' + 17922 hFormat.apply(this) + 17923 zeroFill(this.minutes(), 2) + 17924 zeroFill(this.seconds(), 2) 17925 ); 17926 }); 17927 17928 addFormatToken('Hmm', 0, 0, function () { 17929 return '' + this.hours() + zeroFill(this.minutes(), 2); 17930 }); 17931 17932 addFormatToken('Hmmss', 0, 0, function () { 17933 return ( 17934 '' + 17935 this.hours() + 17936 zeroFill(this.minutes(), 2) + 17937 zeroFill(this.seconds(), 2) 17938 ); 17939 }); 17940 17941 function meridiem(token, lowercase) { 17942 addFormatToken(token, 0, 0, function () { 17943 return this.localeData().meridiem( 17944 this.hours(), 17945 this.minutes(), 17946 lowercase 17947 ); 17948 }); 17949 } 17950 17951 meridiem('a', true); 17952 meridiem('A', false); 17953 17954 // ALIASES 17955 17956 addUnitAlias('hour', 'h'); 17957 17958 // PRIORITY 17959 addUnitPriority('hour', 13); 17960 17961 // PARSING 17962 17963 function matchMeridiem(isStrict, locale) { 17964 return locale._meridiemParse; 17965 } 17966 17967 addRegexToken('a', matchMeridiem); 17968 addRegexToken('A', matchMeridiem); 17969 addRegexToken('H', match1to2); 17970 addRegexToken('h', match1to2); 17971 addRegexToken('k', match1to2); 17972 addRegexToken('HH', match1to2, match2); 17973 addRegexToken('hh', match1to2, match2); 17974 addRegexToken('kk', match1to2, match2); 17975 17976 addRegexToken('hmm', match3to4); 17977 addRegexToken('hmmss', match5to6); 17978 addRegexToken('Hmm', match3to4); 17979 addRegexToken('Hmmss', match5to6); 17980 17981 addParseToken(['H', 'HH'], HOUR); 17982 addParseToken(['k', 'kk'], function (input, array, config) { 17983 var kInput = toInt(input); 17984 array[HOUR] = kInput === 24 ? 0 : kInput; 17985 }); 17986 addParseToken(['a', 'A'], function (input, array, config) { 17987 config._isPm = config._locale.isPM(input); 17988 config._meridiem = input; 17989 }); 17990 addParseToken(['h', 'hh'], function (input, array, config) { 17991 array[HOUR] = toInt(input); 17992 getParsingFlags(config).bigHour = true; 17993 }); 17994 addParseToken('hmm', function (input, array, config) { 17995 var pos = input.length - 2; 17996 array[HOUR] = toInt(input.substr(0, pos)); 17997 array[MINUTE] = toInt(input.substr(pos)); 17998 getParsingFlags(config).bigHour = true; 17999 }); 18000 addParseToken('hmmss', function (input, array, config) { 18001 var pos1 = input.length - 4, 18002 pos2 = input.length - 2; 18003 array[HOUR] = toInt(input.substr(0, pos1)); 18004 array[MINUTE] = toInt(input.substr(pos1, 2)); 18005 array[SECOND] = toInt(input.substr(pos2)); 18006 getParsingFlags(config).bigHour = true; 18007 }); 18008 addParseToken('Hmm', function (input, array, config) { 18009 var pos = input.length - 2; 18010 array[HOUR] = toInt(input.substr(0, pos)); 18011 array[MINUTE] = toInt(input.substr(pos)); 18012 }); 18013 addParseToken('Hmmss', function (input, array, config) { 18014 var pos1 = input.length - 4, 18015 pos2 = input.length - 2; 18016 array[HOUR] = toInt(input.substr(0, pos1)); 18017 array[MINUTE] = toInt(input.substr(pos1, 2)); 18018 array[SECOND] = toInt(input.substr(pos2)); 18019 }); 18020 18021 // LOCALES 18022 18023 function localeIsPM(input) { 18024 // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays 18025 // Using charAt should be more compatible. 18026 return (input + '').toLowerCase().charAt(0) === 'p'; 18027 } 18028 18029 var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i, 18030 // Setting the hour should keep the time, because the user explicitly 18031 // specified which hour they want. So trying to maintain the same hour (in 18032 // a new timezone) makes sense. Adding/subtracting hours does not follow 18033 // this rule. 18034 getSetHour = makeGetSet('Hours', true); 18035 18036 function localeMeridiem(hours, minutes, isLower) { 18037 if (hours > 11) { 18038 return isLower ? 'pm' : 'PM'; 18039 } else { 18040 return isLower ? 'am' : 'AM'; 18041 } 18042 } 18043 18044 var baseConfig = { 18045 calendar: defaultCalendar, 18046 longDateFormat: defaultLongDateFormat, 18047 invalidDate: defaultInvalidDate, 18048 ordinal: defaultOrdinal, 18049 dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse, 18050 relativeTime: defaultRelativeTime, 18051 18052 months: defaultLocaleMonths, 18053 monthsShort: defaultLocaleMonthsShort, 18054 18055 week: defaultLocaleWeek, 18056 18057 weekdays: defaultLocaleWeekdays, 18058 weekdaysMin: defaultLocaleWeekdaysMin, 18059 weekdaysShort: defaultLocaleWeekdaysShort, 18060 18061 meridiemParse: defaultLocaleMeridiemParse, 18062 }; 18063 18064 // internal storage for locale config files 18065 var locales = {}, 18066 localeFamilies = {}, 18067 globalLocale; 18068 18069 function commonPrefix(arr1, arr2) { 18070 var i, 18071 minl = Math.min(arr1.length, arr2.length); 18072 for (i = 0; i < minl; i += 1) { 18073 if (arr1[i] !== arr2[i]) { 18074 return i; 18075 } 18076 } 18077 return minl; 18078 } 18079 18080 function normalizeLocale(key) { 18081 return key ? key.toLowerCase().replace('_', '-') : key; 18082 } 18083 18084 // pick the locale from the array 18085 // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each 18086 // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root 18087 function chooseLocale(names) { 18088 var i = 0, 18089 j, 18090 next, 18091 locale, 18092 split; 18093 18094 while (i < names.length) { 18095 split = normalizeLocale(names[i]).split('-'); 18096 j = split.length; 18097 next = normalizeLocale(names[i + 1]); 18098 next = next ? next.split('-') : null; 18099 while (j > 0) { 18100 locale = loadLocale(split.slice(0, j).join('-')); 18101 if (locale) { 18102 return locale; 18103 } 18104 if ( 18105 next && 18106 next.length >= j && 18107 commonPrefix(split, next) >= j - 1 18108 ) { 18109 //the next array item is better than a shallower substring of this one 18110 break; 18111 } 18112 j--; 18113 } 18114 i++; 18115 } 18116 return globalLocale; 18117 } 18118 18119 function loadLocale(name) { 18120 var oldLocale = null, 18121 aliasedRequire; 18122 // TODO: Find a better way to register and load all the locales in Node 18123 if ( 18124 locales[name] === undefined && 18125 typeof module !== 'undefined' && 18126 module && 18127 module.exports 18128 ) { 18129 try { 18130 oldLocale = globalLocale._abbr; 18131 aliasedRequire = require; 18132 __webpack_require__("../../node_modules/moment/locale sync recursive ^\\.\\/.*$")("./" + name); 18133 getSetGlobalLocale(oldLocale); 18134 } catch (e) { 18135 // mark as not found to avoid repeating expensive file require call causing high CPU 18136 // when trying to find en-US, en_US, en-us for every format call 18137 locales[name] = null; // null means not found 18138 } 18139 } 18140 return locales[name]; 18141 } 18142 18143 // This function will load locale and then set the global locale. If 18144 // no arguments are passed in, it will simply return the current global 18145 // locale key. 18146 function getSetGlobalLocale(key, values) { 18147 var data; 18148 if (key) { 18149 if (isUndefined(values)) { 18150 data = getLocale(key); 18151 } else { 18152 data = defineLocale(key, values); 18153 } 18154 18155 if (data) { 18156 // moment.duration._locale = moment._locale = data; 18157 globalLocale = data; 18158 } else { 18159 if (typeof console !== 'undefined' && console.warn) { 18160 //warn user if arguments are passed but the locale could not be set 18161 console.warn( 18162 'Locale ' + key + ' not found. Did you forget to load it?' 18163 ); 18164 } 18165 } 18166 } 18167 18168 return globalLocale._abbr; 18169 } 18170 18171 function defineLocale(name, config) { 18172 if (config !== null) { 18173 var locale, 18174 parentConfig = baseConfig; 18175 config.abbr = name; 18176 if (locales[name] != null) { 18177 deprecateSimple( 18178 'defineLocaleOverride', 18179 'use moment.updateLocale(localeName, config) to change ' + 18180 'an existing locale. moment.defineLocale(localeName, ' + 18181 'config) should only be used for creating a new locale ' + 18182 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.' 18183 ); 18184 parentConfig = locales[name]._config; 18185 } else if (config.parentLocale != null) { 18186 if (locales[config.parentLocale] != null) { 18187 parentConfig = locales[config.parentLocale]._config; 18188 } else { 18189 locale = loadLocale(config.parentLocale); 18190 if (locale != null) { 18191 parentConfig = locale._config; 18192 } else { 18193 if (!localeFamilies[config.parentLocale]) { 18194 localeFamilies[config.parentLocale] = []; 18195 } 18196 localeFamilies[config.parentLocale].push({ 18197 name: name, 18198 config: config, 18199 }); 18200 return null; 18201 } 18202 } 18203 } 18204 locales[name] = new Locale(mergeConfigs(parentConfig, config)); 18205 18206 if (localeFamilies[name]) { 18207 localeFamilies[name].forEach(function (x) { 18208 defineLocale(x.name, x.config); 18209 }); 18210 } 18211 18212 // backwards compat for now: also set the locale 18213 // make sure we set the locale AFTER all child locales have been 18214 // created, so we won't end up with the child locale set. 18215 getSetGlobalLocale(name); 18216 18217 return locales[name]; 18218 } else { 18219 // useful for testing 18220 delete locales[name]; 18221 return null; 18222 } 18223 } 18224 18225 function updateLocale(name, config) { 18226 if (config != null) { 18227 var locale, 18228 tmpLocale, 18229 parentConfig = baseConfig; 18230 18231 if (locales[name] != null && locales[name].parentLocale != null) { 18232 // Update existing child locale in-place to avoid memory-leaks 18233 locales[name].set(mergeConfigs(locales[name]._config, config)); 18234 } else { 18235 // MERGE 18236 tmpLocale = loadLocale(name); 18237 if (tmpLocale != null) { 18238 parentConfig = tmpLocale._config; 18239 } 18240 config = mergeConfigs(parentConfig, config); 18241 if (tmpLocale == null) { 18242 // updateLocale is called for creating a new locale 18243 // Set abbr so it will have a name (getters return 18244 // undefined otherwise). 18245 config.abbr = name; 18246 } 18247 locale = new Locale(config); 18248 locale.parentLocale = locales[name]; 18249 locales[name] = locale; 18250 } 18251 18252 // backwards compat for now: also set the locale 18253 getSetGlobalLocale(name); 18254 } else { 18255 // pass null for config to unupdate, useful for tests 18256 if (locales[name] != null) { 18257 if (locales[name].parentLocale != null) { 18258 locales[name] = locales[name].parentLocale; 18259 if (name === getSetGlobalLocale()) { 18260 getSetGlobalLocale(name); 18261 } 18262 } else if (locales[name] != null) { 18263 delete locales[name]; 18264 } 18265 } 18266 } 18267 return locales[name]; 18268 } 18269 18270 // returns locale data 18271 function getLocale(key) { 18272 var locale; 18273 18274 if (key && key._locale && key._locale._abbr) { 18275 key = key._locale._abbr; 18276 } 18277 18278 if (!key) { 18279 return globalLocale; 18280 } 18281 18282 if (!isArray(key)) { 18283 //short-circuit everything else 18284 locale = loadLocale(key); 18285 if (locale) { 18286 return locale; 18287 } 18288 key = [key]; 18289 } 18290 18291 return chooseLocale(key); 18292 } 18293 18294 function listLocales() { 18295 return keys(locales); 18296 } 18297 18298 function checkOverflow(m) { 18299 var overflow, 18300 a = m._a; 18301 18302 if (a && getParsingFlags(m).overflow === -2) { 18303 overflow = 18304 a[MONTH] < 0 || a[MONTH] > 11 18305 ? MONTH 18306 : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) 18307 ? DATE 18308 : a[HOUR] < 0 || 18309 a[HOUR] > 24 || 18310 (a[HOUR] === 24 && 18311 (a[MINUTE] !== 0 || 18312 a[SECOND] !== 0 || 18313 a[MILLISECOND] !== 0)) 18314 ? HOUR 18315 : a[MINUTE] < 0 || a[MINUTE] > 59 18316 ? MINUTE 18317 : a[SECOND] < 0 || a[SECOND] > 59 18318 ? SECOND 18319 : a[MILLISECOND] < 0 || a[MILLISECOND] > 999 18320 ? MILLISECOND 18321 : -1; 18322 18323 if ( 18324 getParsingFlags(m)._overflowDayOfYear && 18325 (overflow < YEAR || overflow > DATE) 18326 ) { 18327 overflow = DATE; 18328 } 18329 if (getParsingFlags(m)._overflowWeeks && overflow === -1) { 18330 overflow = WEEK; 18331 } 18332 if (getParsingFlags(m)._overflowWeekday && overflow === -1) { 18333 overflow = WEEKDAY; 18334 } 18335 18336 getParsingFlags(m).overflow = overflow; 18337 } 18338 18339 return m; 18340 } 18341 18342 // iso 8601 regex 18343 // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00) 18344 var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/, 18345 basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/, 18346 tzRegex = /Z|[+-]\d\d(?::?\d\d)?/, 18347 isoDates = [ 18348 ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/], 18349 ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/], 18350 ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/], 18351 ['GGGG-[W]WW', /\d{4}-W\d\d/, false], 18352 ['YYYY-DDD', /\d{4}-\d{3}/], 18353 ['YYYY-MM', /\d{4}-\d\d/, false], 18354 ['YYYYYYMMDD', /[+-]\d{10}/], 18355 ['YYYYMMDD', /\d{8}/], 18356 ['GGGG[W]WWE', /\d{4}W\d{3}/], 18357 ['GGGG[W]WW', /\d{4}W\d{2}/, false], 18358 ['YYYYDDD', /\d{7}/], 18359 ['YYYYMM', /\d{6}/, false], 18360 ['YYYY', /\d{4}/, false], 18361 ], 18362 // iso time formats and regexes 18363 isoTimes = [ 18364 ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/], 18365 ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/], 18366 ['HH:mm:ss', /\d\d:\d\d:\d\d/], 18367 ['HH:mm', /\d\d:\d\d/], 18368 ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/], 18369 ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/], 18370 ['HHmmss', /\d\d\d\d\d\d/], 18371 ['HHmm', /\d\d\d\d/], 18372 ['HH', /\d\d/], 18373 ], 18374 aspNetJsonRegex = /^\/?Date\((-?\d+)/i, 18375 // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3 18376 rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/, 18377 obsOffsets = { 18378 UT: 0, 18379 GMT: 0, 18380 EDT: -4 * 60, 18381 EST: -5 * 60, 18382 CDT: -5 * 60, 18383 CST: -6 * 60, 18384 MDT: -6 * 60, 18385 MST: -7 * 60, 18386 PDT: -7 * 60, 18387 PST: -8 * 60, 18388 }; 18389 18390 // date from iso format 18391 function configFromISO(config) { 18392 var i, 18393 l, 18394 string = config._i, 18395 match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string), 18396 allowTime, 18397 dateFormat, 18398 timeFormat, 18399 tzFormat; 18400 18401 if (match) { 18402 getParsingFlags(config).iso = true; 18403 18404 for (i = 0, l = isoDates.length; i < l; i++) { 18405 if (isoDates[i][1].exec(match[1])) { 18406 dateFormat = isoDates[i][0]; 18407 allowTime = isoDates[i][2] !== false; 18408 break; 18409 } 18410 } 18411 if (dateFormat == null) { 18412 config._isValid = false; 18413 return; 18414 } 18415 if (match[3]) { 18416 for (i = 0, l = isoTimes.length; i < l; i++) { 18417 if (isoTimes[i][1].exec(match[3])) { 18418 // match[2] should be 'T' or space 18419 timeFormat = (match[2] || ' ') + isoTimes[i][0]; 18420 break; 18421 } 18422 } 18423 if (timeFormat == null) { 18424 config._isValid = false; 18425 return; 18426 } 18427 } 18428 if (!allowTime && timeFormat != null) { 18429 config._isValid = false; 18430 return; 18431 } 18432 if (match[4]) { 18433 if (tzRegex.exec(match[4])) { 18434 tzFormat = 'Z'; 18435 } else { 18436 config._isValid = false; 18437 return; 18438 } 18439 } 18440 config._f = dateFormat + (timeFormat || '') + (tzFormat || ''); 18441 configFromStringAndFormat(config); 18442 } else { 18443 config._isValid = false; 18444 } 18445 } 18446 18447 function extractFromRFC2822Strings( 18448 yearStr, 18449 monthStr, 18450 dayStr, 18451 hourStr, 18452 minuteStr, 18453 secondStr 18454 ) { 18455 var result = [ 18456 untruncateYear(yearStr), 18457 defaultLocaleMonthsShort.indexOf(monthStr), 18458 parseInt(dayStr, 10), 18459 parseInt(hourStr, 10), 18460 parseInt(minuteStr, 10), 18461 ]; 18462 18463 if (secondStr) { 18464 result.push(parseInt(secondStr, 10)); 18465 } 18466 18467 return result; 18468 } 18469 18470 function untruncateYear(yearStr) { 18471 var year = parseInt(yearStr, 10); 18472 if (year <= 49) { 18473 return 2000 + year; 18474 } else if (year <= 999) { 18475 return 1900 + year; 18476 } 18477 return year; 18478 } 18479 18480 function preprocessRFC2822(s) { 18481 // Remove comments and folding whitespace and replace multiple-spaces with a single space 18482 return s 18483 .replace(/\([^)]*\)|[\n\t]/g, ' ') 18484 .replace(/(\s\s+)/g, ' ') 18485 .replace(/^\s\s*/, '') 18486 .replace(/\s\s*$/, ''); 18487 } 18488 18489 function checkWeekday(weekdayStr, parsedInput, config) { 18490 if (weekdayStr) { 18491 // TODO: Replace the vanilla JS Date object with an independent day-of-week check. 18492 var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr), 18493 weekdayActual = new Date( 18494 parsedInput[0], 18495 parsedInput[1], 18496 parsedInput[2] 18497 ).getDay(); 18498 if (weekdayProvided !== weekdayActual) { 18499 getParsingFlags(config).weekdayMismatch = true; 18500 config._isValid = false; 18501 return false; 18502 } 18503 } 18504 return true; 18505 } 18506 18507 function calculateOffset(obsOffset, militaryOffset, numOffset) { 18508 if (obsOffset) { 18509 return obsOffsets[obsOffset]; 18510 } else if (militaryOffset) { 18511 // the only allowed military tz is Z 18512 return 0; 18513 } else { 18514 var hm = parseInt(numOffset, 10), 18515 m = hm % 100, 18516 h = (hm - m) / 100; 18517 return h * 60 + m; 18518 } 18519 } 18520 18521 // date and time from ref 2822 format 18522 function configFromRFC2822(config) { 18523 var match = rfc2822.exec(preprocessRFC2822(config._i)), 18524 parsedArray; 18525 if (match) { 18526 parsedArray = extractFromRFC2822Strings( 18527 match[4], 18528 match[3], 18529 match[2], 18530 match[5], 18531 match[6], 18532 match[7] 18533 ); 18534 if (!checkWeekday(match[1], parsedArray, config)) { 18535 return; 18536 } 18537 18538 config._a = parsedArray; 18539 config._tzm = calculateOffset(match[8], match[9], match[10]); 18540 18541 config._d = createUTCDate.apply(null, config._a); 18542 config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); 18543 18544 getParsingFlags(config).rfc2822 = true; 18545 } else { 18546 config._isValid = false; 18547 } 18548 } 18549 18550 // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict 18551 function configFromString(config) { 18552 var matched = aspNetJsonRegex.exec(config._i); 18553 if (matched !== null) { 18554 config._d = new Date(+matched[1]); 18555 return; 18556 } 18557 18558 configFromISO(config); 18559 if (config._isValid === false) { 18560 delete config._isValid; 18561 } else { 18562 return; 18563 } 18564 18565 configFromRFC2822(config); 18566 if (config._isValid === false) { 18567 delete config._isValid; 18568 } else { 18569 return; 18570 } 18571 18572 if (config._strict) { 18573 config._isValid = false; 18574 } else { 18575 // Final attempt, use Input Fallback 18576 hooks.createFromInputFallback(config); 18577 } 18578 } 18579 18580 hooks.createFromInputFallback = deprecate( 18581 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' + 18582 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' + 18583 'discouraged and will be removed in an upcoming major release. Please refer to ' + 18584 'http://momentjs.com/guides/#/warnings/js-date/ for more info.', 18585 function (config) { 18586 config._d = new Date(config._i + (config._useUTC ? ' UTC' : '')); 18587 } 18588 ); 18589 18590 // Pick the first defined of two or three arguments. 18591 function defaults(a, b, c) { 18592 if (a != null) { 18593 return a; 18594 } 18595 if (b != null) { 18596 return b; 18597 } 18598 return c; 18599 } 18600 18601 function currentDateArray(config) { 18602 // hooks is actually the exported moment object 18603 var nowValue = new Date(hooks.now()); 18604 if (config._useUTC) { 18605 return [ 18606 nowValue.getUTCFullYear(), 18607 nowValue.getUTCMonth(), 18608 nowValue.getUTCDate(), 18609 ]; 18610 } 18611 return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()]; 18612 } 18613 18614 // convert an array to a date. 18615 // the array should mirror the parameters below 18616 // note: all values past the year are optional and will default to the lowest possible value. 18617 // [year, month, day , hour, minute, second, millisecond] 18618 function configFromArray(config) { 18619 var i, 18620 date, 18621 input = [], 18622 currentDate, 18623 expectedWeekday, 18624 yearToUse; 18625 18626 if (config._d) { 18627 return; 18628 } 18629 18630 currentDate = currentDateArray(config); 18631 18632 //compute day of the year from weeks and weekdays 18633 if (config._w && config._a[DATE] == null && config._a[MONTH] == null) { 18634 dayOfYearFromWeekInfo(config); 18635 } 18636 18637 //if the day of the year is set, figure out what it is 18638 if (config._dayOfYear != null) { 18639 yearToUse = defaults(config._a[YEAR], currentDate[YEAR]); 18640 18641 if ( 18642 config._dayOfYear > daysInYear(yearToUse) || 18643 config._dayOfYear === 0 18644 ) { 18645 getParsingFlags(config)._overflowDayOfYear = true; 18646 } 18647 18648 date = createUTCDate(yearToUse, 0, config._dayOfYear); 18649 config._a[MONTH] = date.getUTCMonth(); 18650 config._a[DATE] = date.getUTCDate(); 18651 } 18652 18653 // Default to current date. 18654 // * if no year, month, day of month are given, default to today 18655 // * if day of month is given, default month and year 18656 // * if month is given, default only year 18657 // * if year is given, don't default anything 18658 for (i = 0; i < 3 && config._a[i] == null; ++i) { 18659 config._a[i] = input[i] = currentDate[i]; 18660 } 18661 18662 // Zero out whatever was not defaulted, including time 18663 for (; i < 7; i++) { 18664 config._a[i] = input[i] = 18665 config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i]; 18666 } 18667 18668 // Check for 24:00:00.000 18669 if ( 18670 config._a[HOUR] === 24 && 18671 config._a[MINUTE] === 0 && 18672 config._a[SECOND] === 0 && 18673 config._a[MILLISECOND] === 0 18674 ) { 18675 config._nextDay = true; 18676 config._a[HOUR] = 0; 18677 } 18678 18679 config._d = (config._useUTC ? createUTCDate : createDate).apply( 18680 null, 18681 input 18682 ); 18683 expectedWeekday = config._useUTC 18684 ? config._d.getUTCDay() 18685 : config._d.getDay(); 18686 18687 // Apply timezone offset from input. The actual utcOffset can be changed 18688 // with parseZone. 18689 if (config._tzm != null) { 18690 config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm); 18691 } 18692 18693 if (config._nextDay) { 18694 config._a[HOUR] = 24; 18695 } 18696 18697 // check for mismatching day of week 18698 if ( 18699 config._w && 18700 typeof config._w.d !== 'undefined' && 18701 config._w.d !== expectedWeekday 18702 ) { 18703 getParsingFlags(config).weekdayMismatch = true; 18704 } 18705 } 18706 18707 function dayOfYearFromWeekInfo(config) { 18708 var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek; 18709 18710 w = config._w; 18711 if (w.GG != null || w.W != null || w.E != null) { 18712 dow = 1; 18713 doy = 4; 18714 18715 // TODO: We need to take the current isoWeekYear, but that depends on 18716 // how we interpret now (local, utc, fixed offset). So create 18717 // a now version of current config (take local/utc/offset flags, and 18718 // create now). 18719 weekYear = defaults( 18720 w.GG, 18721 config._a[YEAR], 18722 weekOfYear(createLocal(), 1, 4).year 18723 ); 18724 week = defaults(w.W, 1); 18725 weekday = defaults(w.E, 1); 18726 if (weekday < 1 || weekday > 7) { 18727 weekdayOverflow = true; 18728 } 18729 } else { 18730 dow = config._locale._week.dow; 18731 doy = config._locale._week.doy; 18732 18733 curWeek = weekOfYear(createLocal(), dow, doy); 18734 18735 weekYear = defaults(w.gg, config._a[YEAR], curWeek.year); 18736 18737 // Default to current week. 18738 week = defaults(w.w, curWeek.week); 18739 18740 if (w.d != null) { 18741 // weekday -- low day numbers are considered next week 18742 weekday = w.d; 18743 if (weekday < 0 || weekday > 6) { 18744 weekdayOverflow = true; 18745 } 18746 } else if (w.e != null) { 18747 // local weekday -- counting starts from beginning of week 18748 weekday = w.e + dow; 18749 if (w.e < 0 || w.e > 6) { 18750 weekdayOverflow = true; 18751 } 18752 } else { 18753 // default to beginning of week 18754 weekday = dow; 18755 } 18756 } 18757 if (week < 1 || week > weeksInYear(weekYear, dow, doy)) { 18758 getParsingFlags(config)._overflowWeeks = true; 18759 } else if (weekdayOverflow != null) { 18760 getParsingFlags(config)._overflowWeekday = true; 18761 } else { 18762 temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy); 18763 config._a[YEAR] = temp.year; 18764 config._dayOfYear = temp.dayOfYear; 18765 } 18766 } 18767 18768 // constant that refers to the ISO standard 18769 hooks.ISO_8601 = function () {}; 18770 18771 // constant that refers to the RFC 2822 form 18772 hooks.RFC_2822 = function () {}; 18773 18774 // date from string and format string 18775 function configFromStringAndFormat(config) { 18776 // TODO: Move this to another part of the creation flow to prevent circular deps 18777 if (config._f === hooks.ISO_8601) { 18778 configFromISO(config); 18779 return; 18780 } 18781 if (config._f === hooks.RFC_2822) { 18782 configFromRFC2822(config); 18783 return; 18784 } 18785 config._a = []; 18786 getParsingFlags(config).empty = true; 18787 18788 // This array is used to make a Date, either with `new Date` or `Date.UTC` 18789 var string = '' + config._i, 18790 i, 18791 parsedInput, 18792 tokens, 18793 token, 18794 skipped, 18795 stringLength = string.length, 18796 totalParsedInputLength = 0, 18797 era; 18798 18799 tokens = 18800 expandFormat(config._f, config._locale).match(formattingTokens) || []; 18801 18802 for (i = 0; i < tokens.length; i++) { 18803 token = tokens[i]; 18804 parsedInput = (string.match(getParseRegexForToken(token, config)) || 18805 [])[0]; 18806 if (parsedInput) { 18807 skipped = string.substr(0, string.indexOf(parsedInput)); 18808 if (skipped.length > 0) { 18809 getParsingFlags(config).unusedInput.push(skipped); 18810 } 18811 string = string.slice( 18812 string.indexOf(parsedInput) + parsedInput.length 18813 ); 18814 totalParsedInputLength += parsedInput.length; 18815 } 18816 // don't parse if it's not a known token 18817 if (formatTokenFunctions[token]) { 18818 if (parsedInput) { 18819 getParsingFlags(config).empty = false; 18820 } else { 18821 getParsingFlags(config).unusedTokens.push(token); 18822 } 18823 addTimeToArrayFromToken(token, parsedInput, config); 18824 } else if (config._strict && !parsedInput) { 18825 getParsingFlags(config).unusedTokens.push(token); 18826 } 18827 } 18828 18829 // add remaining unparsed input length to the string 18830 getParsingFlags(config).charsLeftOver = 18831 stringLength - totalParsedInputLength; 18832 if (string.length > 0) { 18833 getParsingFlags(config).unusedInput.push(string); 18834 } 18835 18836 // clear _12h flag if hour is <= 12 18837 if ( 18838 config._a[HOUR] <= 12 && 18839 getParsingFlags(config).bigHour === true && 18840 config._a[HOUR] > 0 18841 ) { 18842 getParsingFlags(config).bigHour = undefined; 18843 } 18844 18845 getParsingFlags(config).parsedDateParts = config._a.slice(0); 18846 getParsingFlags(config).meridiem = config._meridiem; 18847 // handle meridiem 18848 config._a[HOUR] = meridiemFixWrap( 18849 config._locale, 18850 config._a[HOUR], 18851 config._meridiem 18852 ); 18853 18854 // handle era 18855 era = getParsingFlags(config).era; 18856 if (era !== null) { 18857 config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]); 18858 } 18859 18860 configFromArray(config); 18861 checkOverflow(config); 18862 } 18863 18864 function meridiemFixWrap(locale, hour, meridiem) { 18865 var isPm; 18866 18867 if (meridiem == null) { 18868 // nothing to do 18869 return hour; 18870 } 18871 if (locale.meridiemHour != null) { 18872 return locale.meridiemHour(hour, meridiem); 18873 } else if (locale.isPM != null) { 18874 // Fallback 18875 isPm = locale.isPM(meridiem); 18876 if (isPm && hour < 12) { 18877 hour += 12; 18878 } 18879 if (!isPm && hour === 12) { 18880 hour = 0; 18881 } 18882 return hour; 18883 } else { 18884 // this is not supposed to happen 18885 return hour; 18886 } 18887 } 18888 18889 // date from string and array of format strings 18890 function configFromStringAndArray(config) { 18891 var tempConfig, 18892 bestMoment, 18893 scoreToBeat, 18894 i, 18895 currentScore, 18896 validFormatFound, 18897 bestFormatIsValid = false; 18898 18899 if (config._f.length === 0) { 18900 getParsingFlags(config).invalidFormat = true; 18901 config._d = new Date(NaN); 18902 return; 18903 } 18904 18905 for (i = 0; i < config._f.length; i++) { 18906 currentScore = 0; 18907 validFormatFound = false; 18908 tempConfig = copyConfig({}, config); 18909 if (config._useUTC != null) { 18910 tempConfig._useUTC = config._useUTC; 18911 } 18912 tempConfig._f = config._f[i]; 18913 configFromStringAndFormat(tempConfig); 18914 18915 if (isValid(tempConfig)) { 18916 validFormatFound = true; 18917 } 18918 18919 // if there is any input that was not parsed add a penalty for that format 18920 currentScore += getParsingFlags(tempConfig).charsLeftOver; 18921 18922 //or tokens 18923 currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10; 18924 18925 getParsingFlags(tempConfig).score = currentScore; 18926 18927 if (!bestFormatIsValid) { 18928 if ( 18929 scoreToBeat == null || 18930 currentScore < scoreToBeat || 18931 validFormatFound 18932 ) { 18933 scoreToBeat = currentScore; 18934 bestMoment = tempConfig; 18935 if (validFormatFound) { 18936 bestFormatIsValid = true; 18937 } 18938 } 18939 } else { 18940 if (currentScore < scoreToBeat) { 18941 scoreToBeat = currentScore; 18942 bestMoment = tempConfig; 18943 } 18944 } 18945 } 18946 18947 extend(config, bestMoment || tempConfig); 18948 } 18949 18950 function configFromObject(config) { 18951 if (config._d) { 18952 return; 18953 } 18954 18955 var i = normalizeObjectUnits(config._i), 18956 dayOrDate = i.day === undefined ? i.date : i.day; 18957 config._a = map( 18958 [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond], 18959 function (obj) { 18960 return obj && parseInt(obj, 10); 18961 } 18962 ); 18963 18964 configFromArray(config); 18965 } 18966 18967 function createFromConfig(config) { 18968 var res = new Moment(checkOverflow(prepareConfig(config))); 18969 if (res._nextDay) { 18970 // Adding is smart enough around DST 18971 res.add(1, 'd'); 18972 res._nextDay = undefined; 18973 } 18974 18975 return res; 18976 } 18977 18978 function prepareConfig(config) { 18979 var input = config._i, 18980 format = config._f; 18981 18982 config._locale = config._locale || getLocale(config._l); 18983 18984 if (input === null || (format === undefined && input === '')) { 18985 return createInvalid({ nullInput: true }); 18986 } 18987 18988 if (typeof input === 'string') { 18989 config._i = input = config._locale.preparse(input); 18990 } 18991 18992 if (isMoment(input)) { 18993 return new Moment(checkOverflow(input)); 18994 } else if (isDate(input)) { 18995 config._d = input; 18996 } else if (isArray(format)) { 18997 configFromStringAndArray(config); 18998 } else if (format) { 18999 configFromStringAndFormat(config); 19000 } else { 19001 configFromInput(config); 19002 } 19003 19004 if (!isValid(config)) { 19005 config._d = null; 19006 } 19007 19008 return config; 19009 } 19010 19011 function configFromInput(config) { 19012 var input = config._i; 19013 if (isUndefined(input)) { 19014 config._d = new Date(hooks.now()); 19015 } else if (isDate(input)) { 19016 config._d = new Date(input.valueOf()); 19017 } else if (typeof input === 'string') { 19018 configFromString(config); 19019 } else if (isArray(input)) { 19020 config._a = map(input.slice(0), function (obj) { 19021 return parseInt(obj, 10); 19022 }); 19023 configFromArray(config); 19024 } else if (isObject(input)) { 19025 configFromObject(config); 19026 } else if (isNumber(input)) { 19027 // from milliseconds 19028 config._d = new Date(input); 19029 } else { 19030 hooks.createFromInputFallback(config); 19031 } 19032 } 19033 19034 function createLocalOrUTC(input, format, locale, strict, isUTC) { 19035 var c = {}; 19036 19037 if (format === true || format === false) { 19038 strict = format; 19039 format = undefined; 19040 } 19041 19042 if (locale === true || locale === false) { 19043 strict = locale; 19044 locale = undefined; 19045 } 19046 19047 if ( 19048 (isObject(input) && isObjectEmpty(input)) || 19049 (isArray(input) && input.length === 0) 19050 ) { 19051 input = undefined; 19052 } 19053 // object construction must be done this way. 19054 // https://github.com/moment/moment/issues/1423 19055 c._isAMomentObject = true; 19056 c._useUTC = c._isUTC = isUTC; 19057 c._l = locale; 19058 c._i = input; 19059 c._f = format; 19060 c._strict = strict; 19061 19062 return createFromConfig(c); 19063 } 19064 19065 function createLocal(input, format, locale, strict) { 19066 return createLocalOrUTC(input, format, locale, strict, false); 19067 } 19068 19069 var prototypeMin = deprecate( 19070 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/', 19071 function () { 19072 var other = createLocal.apply(null, arguments); 19073 if (this.isValid() && other.isValid()) { 19074 return other < this ? this : other; 19075 } else { 19076 return createInvalid(); 19077 } 19078 } 19079 ), 19080 prototypeMax = deprecate( 19081 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/', 19082 function () { 19083 var other = createLocal.apply(null, arguments); 19084 if (this.isValid() && other.isValid()) { 19085 return other > this ? this : other; 19086 } else { 19087 return createInvalid(); 19088 } 19089 } 19090 ); 19091 19092 // Pick a moment m from moments so that m[fn](other) is true for all 19093 // other. This relies on the function fn to be transitive. 19094 // 19095 // moments should either be an array of moment objects or an array, whose 19096 // first element is an array of moment objects. 19097 function pickBy(fn, moments) { 19098 var res, i; 19099 if (moments.length === 1 && isArray(moments[0])) { 19100 moments = moments[0]; 19101 } 19102 if (!moments.length) { 19103 return createLocal(); 19104 } 19105 res = moments[0]; 19106 for (i = 1; i < moments.length; ++i) { 19107 if (!moments[i].isValid() || moments[i][fn](res)) { 19108 res = moments[i]; 19109 } 19110 } 19111 return res; 19112 } 19113 19114 // TODO: Use [].sort instead? 19115 function min() { 19116 var args = [].slice.call(arguments, 0); 19117 19118 return pickBy('isBefore', args); 19119 } 19120 19121 function max() { 19122 var args = [].slice.call(arguments, 0); 19123 19124 return pickBy('isAfter', args); 19125 } 19126 19127 var now = function () { 19128 return Date.now ? Date.now() : +new Date(); 19129 }; 19130 19131 var ordering = [ 19132 'year', 19133 'quarter', 19134 'month', 19135 'week', 19136 'day', 19137 'hour', 19138 'minute', 19139 'second', 19140 'millisecond', 19141 ]; 19142 19143 function isDurationValid(m) { 19144 var key, 19145 unitHasDecimal = false, 19146 i; 19147 for (key in m) { 19148 if ( 19149 hasOwnProp(m, key) && 19150 !( 19151 indexOf.call(ordering, key) !== -1 && 19152 (m[key] == null || !isNaN(m[key])) 19153 ) 19154 ) { 19155 return false; 19156 } 19157 } 19158 19159 for (i = 0; i < ordering.length; ++i) { 19160 if (m[ordering[i]]) { 19161 if (unitHasDecimal) { 19162 return false; // only allow non-integers for smallest unit 19163 } 19164 if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) { 19165 unitHasDecimal = true; 19166 } 19167 } 19168 } 19169 19170 return true; 19171 } 19172 19173 function isValid$1() { 19174 return this._isValid; 19175 } 19176 19177 function createInvalid$1() { 19178 return createDuration(NaN); 19179 } 19180 19181 function Duration(duration) { 19182 var normalizedInput = normalizeObjectUnits(duration), 19183 years = normalizedInput.year || 0, 19184 quarters = normalizedInput.quarter || 0, 19185 months = normalizedInput.month || 0, 19186 weeks = normalizedInput.week || normalizedInput.isoWeek || 0, 19187 days = normalizedInput.day || 0, 19188 hours = normalizedInput.hour || 0, 19189 minutes = normalizedInput.minute || 0, 19190 seconds = normalizedInput.second || 0, 19191 milliseconds = normalizedInput.millisecond || 0; 19192 19193 this._isValid = isDurationValid(normalizedInput); 19194 19195 // representation for dateAddRemove 19196 this._milliseconds = 19197 +milliseconds + 19198 seconds * 1e3 + // 1000 19199 minutes * 6e4 + // 1000 * 60 19200 hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978 19201 // Because of dateAddRemove treats 24 hours as different from a 19202 // day when working around DST, we need to store them separately 19203 this._days = +days + weeks * 7; 19204 // It is impossible to translate months into days without knowing 19205 // which months you are are talking about, so we have to store 19206 // it separately. 19207 this._months = +months + quarters * 3 + years * 12; 19208 19209 this._data = {}; 19210 19211 this._locale = getLocale(); 19212 19213 this._bubble(); 19214 } 19215 19216 function isDuration(obj) { 19217 return obj instanceof Duration; 19218 } 19219 19220 function absRound(number) { 19221 if (number < 0) { 19222 return Math.round(-1 * number) * -1; 19223 } else { 19224 return Math.round(number); 19225 } 19226 } 19227 19228 // compare two arrays, return the number of differences 19229 function compareArrays(array1, array2, dontConvert) { 19230 var len = Math.min(array1.length, array2.length), 19231 lengthDiff = Math.abs(array1.length - array2.length), 19232 diffs = 0, 19233 i; 19234 for (i = 0; i < len; i++) { 19235 if ( 19236 (dontConvert && array1[i] !== array2[i]) || 19237 (!dontConvert && toInt(array1[i]) !== toInt(array2[i])) 19238 ) { 19239 diffs++; 19240 } 19241 } 19242 return diffs + lengthDiff; 19243 } 19244 19245 // FORMATTING 19246 19247 function offset(token, separator) { 19248 addFormatToken(token, 0, 0, function () { 19249 var offset = this.utcOffset(), 19250 sign = '+'; 19251 if (offset < 0) { 19252 offset = -offset; 19253 sign = '-'; 19254 } 19255 return ( 19256 sign + 19257 zeroFill(~~(offset / 60), 2) + 19258 separator + 19259 zeroFill(~~offset % 60, 2) 19260 ); 19261 }); 19262 } 19263 19264 offset('Z', ':'); 19265 offset('ZZ', ''); 19266 19267 // PARSING 19268 19269 addRegexToken('Z', matchShortOffset); 19270 addRegexToken('ZZ', matchShortOffset); 19271 addParseToken(['Z', 'ZZ'], function (input, array, config) { 19272 config._useUTC = true; 19273 config._tzm = offsetFromString(matchShortOffset, input); 19274 }); 19275 19276 // HELPERS 19277 19278 // timezone chunker 19279 // '+10:00' > ['10', '00'] 19280 // '-1530' > ['-15', '30'] 19281 var chunkOffset = /([\+\-]|\d\d)/gi; 19282 19283 function offsetFromString(matcher, string) { 19284 var matches = (string || '').match(matcher), 19285 chunk, 19286 parts, 19287 minutes; 19288 19289 if (matches === null) { 19290 return null; 19291 } 19292 19293 chunk = matches[matches.length - 1] || []; 19294 parts = (chunk + '').match(chunkOffset) || ['-', 0, 0]; 19295 minutes = +(parts[1] * 60) + toInt(parts[2]); 19296 19297 return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes; 19298 } 19299 19300 // Return a moment from input, that is local/utc/zone equivalent to model. 19301 function cloneWithOffset(input, model) { 19302 var res, diff; 19303 if (model._isUTC) { 19304 res = model.clone(); 19305 diff = 19306 (isMoment(input) || isDate(input) 19307 ? input.valueOf() 19308 : createLocal(input).valueOf()) - res.valueOf(); 19309 // Use low-level api, because this fn is low-level api. 19310 res._d.setTime(res._d.valueOf() + diff); 19311 hooks.updateOffset(res, false); 19312 return res; 19313 } else { 19314 return createLocal(input).local(); 19315 } 19316 } 19317 19318 function getDateOffset(m) { 19319 // On Firefox.24 Date#getTimezoneOffset returns a floating point. 19320 // https://github.com/moment/moment/pull/1871 19321 return -Math.round(m._d.getTimezoneOffset()); 19322 } 19323 19324 // HOOKS 19325 19326 // This function will be called whenever a moment is mutated. 19327 // It is intended to keep the offset in sync with the timezone. 19328 hooks.updateOffset = function () {}; 19329 19330 // MOMENTS 19331 19332 // keepLocalTime = true means only change the timezone, without 19333 // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]--> 19334 // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset 19335 // +0200, so we adjust the time as needed, to be valid. 19336 // 19337 // Keeping the time actually adds/subtracts (one hour) 19338 // from the actual represented time. That is why we call updateOffset 19339 // a second time. In case it wants us to change the offset again 19340 // _changeInProgress == true case, then we have to adjust, because 19341 // there is no such time in the given timezone. 19342 function getSetOffset(input, keepLocalTime, keepMinutes) { 19343 var offset = this._offset || 0, 19344 localAdjust; 19345 if (!this.isValid()) { 19346 return input != null ? this : NaN; 19347 } 19348 if (input != null) { 19349 if (typeof input === 'string') { 19350 input = offsetFromString(matchShortOffset, input); 19351 if (input === null) { 19352 return this; 19353 } 19354 } else if (Math.abs(input) < 16 && !keepMinutes) { 19355 input = input * 60; 19356 } 19357 if (!this._isUTC && keepLocalTime) { 19358 localAdjust = getDateOffset(this); 19359 } 19360 this._offset = input; 19361 this._isUTC = true; 19362 if (localAdjust != null) { 19363 this.add(localAdjust, 'm'); 19364 } 19365 if (offset !== input) { 19366 if (!keepLocalTime || this._changeInProgress) { 19367 addSubtract( 19368 this, 19369 createDuration(input - offset, 'm'), 19370 1, 19371 false 19372 ); 19373 } else if (!this._changeInProgress) { 19374 this._changeInProgress = true; 19375 hooks.updateOffset(this, true); 19376 this._changeInProgress = null; 19377 } 19378 } 19379 return this; 19380 } else { 19381 return this._isUTC ? offset : getDateOffset(this); 19382 } 19383 } 19384 19385 function getSetZone(input, keepLocalTime) { 19386 if (input != null) { 19387 if (typeof input !== 'string') { 19388 input = -input; 19389 } 19390 19391 this.utcOffset(input, keepLocalTime); 19392 19393 return this; 19394 } else { 19395 return -this.utcOffset(); 19396 } 19397 } 19398 19399 function setOffsetToUTC(keepLocalTime) { 19400 return this.utcOffset(0, keepLocalTime); 19401 } 19402 19403 function setOffsetToLocal(keepLocalTime) { 19404 if (this._isUTC) { 19405 this.utcOffset(0, keepLocalTime); 19406 this._isUTC = false; 19407 19408 if (keepLocalTime) { 19409 this.subtract(getDateOffset(this), 'm'); 19410 } 19411 } 19412 return this; 19413 } 19414 19415 function setOffsetToParsedOffset() { 19416 if (this._tzm != null) { 19417 this.utcOffset(this._tzm, false, true); 19418 } else if (typeof this._i === 'string') { 19419 var tZone = offsetFromString(matchOffset, this._i); 19420 if (tZone != null) { 19421 this.utcOffset(tZone); 19422 } else { 19423 this.utcOffset(0, true); 19424 } 19425 } 19426 return this; 19427 } 19428 19429 function hasAlignedHourOffset(input) { 19430 if (!this.isValid()) { 19431 return false; 19432 } 19433 input = input ? createLocal(input).utcOffset() : 0; 19434 19435 return (this.utcOffset() - input) % 60 === 0; 19436 } 19437 19438 function isDaylightSavingTime() { 19439 return ( 19440 this.utcOffset() > this.clone().month(0).utcOffset() || 19441 this.utcOffset() > this.clone().month(5).utcOffset() 19442 ); 19443 } 19444 19445 function isDaylightSavingTimeShifted() { 19446 if (!isUndefined(this._isDSTShifted)) { 19447 return this._isDSTShifted; 19448 } 19449 19450 var c = {}, 19451 other; 19452 19453 copyConfig(c, this); 19454 c = prepareConfig(c); 19455 19456 if (c._a) { 19457 other = c._isUTC ? createUTC(c._a) : createLocal(c._a); 19458 this._isDSTShifted = 19459 this.isValid() && compareArrays(c._a, other.toArray()) > 0; 19460 } else { 19461 this._isDSTShifted = false; 19462 } 19463 19464 return this._isDSTShifted; 19465 } 19466 19467 function isLocal() { 19468 return this.isValid() ? !this._isUTC : false; 19469 } 19470 19471 function isUtcOffset() { 19472 return this.isValid() ? this._isUTC : false; 19473 } 19474 19475 function isUtc() { 19476 return this.isValid() ? this._isUTC && this._offset === 0 : false; 19477 } 19478 19479 // ASP.NET json date format regex 19480 var aspNetRegex = /^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/, 19481 // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html 19482 // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere 19483 // and further modified to allow for strings containing both week and day 19484 isoRegex = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/; 19485 19486 function createDuration(input, key) { 19487 var duration = input, 19488 // matching against regexp is expensive, do it on demand 19489 match = null, 19490 sign, 19491 ret, 19492 diffRes; 19493 19494 if (isDuration(input)) { 19495 duration = { 19496 ms: input._milliseconds, 19497 d: input._days, 19498 M: input._months, 19499 }; 19500 } else if (isNumber(input) || !isNaN(+input)) { 19501 duration = {}; 19502 if (key) { 19503 duration[key] = +input; 19504 } else { 19505 duration.milliseconds = +input; 19506 } 19507 } else if ((match = aspNetRegex.exec(input))) { 19508 sign = match[1] === '-' ? -1 : 1; 19509 duration = { 19510 y: 0, 19511 d: toInt(match[DATE]) * sign, 19512 h: toInt(match[HOUR]) * sign, 19513 m: toInt(match[MINUTE]) * sign, 19514 s: toInt(match[SECOND]) * sign, 19515 ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match 19516 }; 19517 } else if ((match = isoRegex.exec(input))) { 19518 sign = match[1] === '-' ? -1 : 1; 19519 duration = { 19520 y: parseIso(match[2], sign), 19521 M: parseIso(match[3], sign), 19522 w: parseIso(match[4], sign), 19523 d: parseIso(match[5], sign), 19524 h: parseIso(match[6], sign), 19525 m: parseIso(match[7], sign), 19526 s: parseIso(match[8], sign), 19527 }; 19528 } else if (duration == null) { 19529 // checks for null or undefined 19530 duration = {}; 19531 } else if ( 19532 typeof duration === 'object' && 19533 ('from' in duration || 'to' in duration) 19534 ) { 19535 diffRes = momentsDifference( 19536 createLocal(duration.from), 19537 createLocal(duration.to) 19538 ); 19539 19540 duration = {}; 19541 duration.ms = diffRes.milliseconds; 19542 duration.M = diffRes.months; 19543 } 19544 19545 ret = new Duration(duration); 19546 19547 if (isDuration(input) && hasOwnProp(input, '_locale')) { 19548 ret._locale = input._locale; 19549 } 19550 19551 if (isDuration(input) && hasOwnProp(input, '_isValid')) { 19552 ret._isValid = input._isValid; 19553 } 19554 19555 return ret; 19556 } 19557 19558 createDuration.fn = Duration.prototype; 19559 createDuration.invalid = createInvalid$1; 19560 19561 function parseIso(inp, sign) { 19562 // We'd normally use ~~inp for this, but unfortunately it also 19563 // converts floats to ints. 19564 // inp may be undefined, so careful calling replace on it. 19565 var res = inp && parseFloat(inp.replace(',', '.')); 19566 // apply sign while we're at it 19567 return (isNaN(res) ? 0 : res) * sign; 19568 } 19569 19570 function positiveMomentsDifference(base, other) { 19571 var res = {}; 19572 19573 res.months = 19574 other.month() - base.month() + (other.year() - base.year()) * 12; 19575 if (base.clone().add(res.months, 'M').isAfter(other)) { 19576 --res.months; 19577 } 19578 19579 res.milliseconds = +other - +base.clone().add(res.months, 'M'); 19580 19581 return res; 19582 } 19583 19584 function momentsDifference(base, other) { 19585 var res; 19586 if (!(base.isValid() && other.isValid())) { 19587 return { milliseconds: 0, months: 0 }; 19588 } 19589 19590 other = cloneWithOffset(other, base); 19591 if (base.isBefore(other)) { 19592 res = positiveMomentsDifference(base, other); 19593 } else { 19594 res = positiveMomentsDifference(other, base); 19595 res.milliseconds = -res.milliseconds; 19596 res.months = -res.months; 19597 } 19598 19599 return res; 19600 } 19601 19602 // TODO: remove 'name' arg after deprecation is removed 19603 function createAdder(direction, name) { 19604 return function (val, period) { 19605 var dur, tmp; 19606 //invert the arguments, but complain about it 19607 if (period !== null && !isNaN(+period)) { 19608 deprecateSimple( 19609 name, 19610 'moment().' + 19611 name + 19612 '(period, number) is deprecated. Please use moment().' + 19613 name + 19614 '(number, period). ' + 19615 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.' 19616 ); 19617 tmp = val; 19618 val = period; 19619 period = tmp; 19620 } 19621 19622 dur = createDuration(val, period); 19623 addSubtract(this, dur, direction); 19624 return this; 19625 }; 19626 } 19627 19628 function addSubtract(mom, duration, isAdding, updateOffset) { 19629 var milliseconds = duration._milliseconds, 19630 days = absRound(duration._days), 19631 months = absRound(duration._months); 19632 19633 if (!mom.isValid()) { 19634 // No op 19635 return; 19636 } 19637 19638 updateOffset = updateOffset == null ? true : updateOffset; 19639 19640 if (months) { 19641 setMonth(mom, get(mom, 'Month') + months * isAdding); 19642 } 19643 if (days) { 19644 set$1(mom, 'Date', get(mom, 'Date') + days * isAdding); 19645 } 19646 if (milliseconds) { 19647 mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding); 19648 } 19649 if (updateOffset) { 19650 hooks.updateOffset(mom, days || months); 19651 } 19652 } 19653 19654 var add = createAdder(1, 'add'), 19655 subtract = createAdder(-1, 'subtract'); 19656 19657 function isString(input) { 19658 return typeof input === 'string' || input instanceof String; 19659 } 19660 19661 // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined 19662 function isMomentInput(input) { 19663 return ( 19664 isMoment(input) || 19665 isDate(input) || 19666 isString(input) || 19667 isNumber(input) || 19668 isNumberOrStringArray(input) || 19669 isMomentInputObject(input) || 19670 input === null || 19671 input === undefined 19672 ); 19673 } 19674 19675 function isMomentInputObject(input) { 19676 var objectTest = isObject(input) && !isObjectEmpty(input), 19677 propertyTest = false, 19678 properties = [ 19679 'years', 19680 'year', 19681 'y', 19682 'months', 19683 'month', 19684 'M', 19685 'days', 19686 'day', 19687 'd', 19688 'dates', 19689 'date', 19690 'D', 19691 'hours', 19692 'hour', 19693 'h', 19694 'minutes', 19695 'minute', 19696 'm', 19697 'seconds', 19698 'second', 19699 's', 19700 'milliseconds', 19701 'millisecond', 19702 'ms', 19703 ], 19704 i, 19705 property; 19706 19707 for (i = 0; i < properties.length; i += 1) { 19708 property = properties[i]; 19709 propertyTest = propertyTest || hasOwnProp(input, property); 19710 } 19711 19712 return objectTest && propertyTest; 19713 } 19714 19715 function isNumberOrStringArray(input) { 19716 var arrayTest = isArray(input), 19717 dataTypeTest = false; 19718 if (arrayTest) { 19719 dataTypeTest = 19720 input.filter(function (item) { 19721 return !isNumber(item) && isString(input); 19722 }).length === 0; 19723 } 19724 return arrayTest && dataTypeTest; 19725 } 19726 19727 function isCalendarSpec(input) { 19728 var objectTest = isObject(input) && !isObjectEmpty(input), 19729 propertyTest = false, 19730 properties = [ 19731 'sameDay', 19732 'nextDay', 19733 'lastDay', 19734 'nextWeek', 19735 'lastWeek', 19736 'sameElse', 19737 ], 19738 i, 19739 property; 19740 19741 for (i = 0; i < properties.length; i += 1) { 19742 property = properties[i]; 19743 propertyTest = propertyTest || hasOwnProp(input, property); 19744 } 19745 19746 return objectTest && propertyTest; 19747 } 19748 19749 function getCalendarFormat(myMoment, now) { 19750 var diff = myMoment.diff(now, 'days', true); 19751 return diff < -6 19752 ? 'sameElse' 19753 : diff < -1 19754 ? 'lastWeek' 19755 : diff < 0 19756 ? 'lastDay' 19757 : diff < 1 19758 ? 'sameDay' 19759 : diff < 2 19760 ? 'nextDay' 19761 : diff < 7 19762 ? 'nextWeek' 19763 : 'sameElse'; 19764 } 19765 19766 function calendar$1(time, formats) { 19767 // Support for single parameter, formats only overload to the calendar function 19768 if (arguments.length === 1) { 19769 if (isMomentInput(arguments[0])) { 19770 time = arguments[0]; 19771 formats = undefined; 19772 } else if (isCalendarSpec(arguments[0])) { 19773 formats = arguments[0]; 19774 time = undefined; 19775 } 19776 } 19777 // We want to compare the start of today, vs this. 19778 // Getting start-of-today depends on whether we're local/utc/offset or not. 19779 var now = time || createLocal(), 19780 sod = cloneWithOffset(now, this).startOf('day'), 19781 format = hooks.calendarFormat(this, sod) || 'sameElse', 19782 output = 19783 formats && 19784 (isFunction(formats[format]) 19785 ? formats[format].call(this, now) 19786 : formats[format]); 19787 19788 return this.format( 19789 output || this.localeData().calendar(format, this, createLocal(now)) 19790 ); 19791 } 19792 19793 function clone() { 19794 return new Moment(this); 19795 } 19796 19797 function isAfter(input, units) { 19798 var localInput = isMoment(input) ? input : createLocal(input); 19799 if (!(this.isValid() && localInput.isValid())) { 19800 return false; 19801 } 19802 units = normalizeUnits(units) || 'millisecond'; 19803 if (units === 'millisecond') { 19804 return this.valueOf() > localInput.valueOf(); 19805 } else { 19806 return localInput.valueOf() < this.clone().startOf(units).valueOf(); 19807 } 19808 } 19809 19810 function isBefore(input, units) { 19811 var localInput = isMoment(input) ? input : createLocal(input); 19812 if (!(this.isValid() && localInput.isValid())) { 19813 return false; 19814 } 19815 units = normalizeUnits(units) || 'millisecond'; 19816 if (units === 'millisecond') { 19817 return this.valueOf() < localInput.valueOf(); 19818 } else { 19819 return this.clone().endOf(units).valueOf() < localInput.valueOf(); 19820 } 19821 } 19822 19823 function isBetween(from, to, units, inclusivity) { 19824 var localFrom = isMoment(from) ? from : createLocal(from), 19825 localTo = isMoment(to) ? to : createLocal(to); 19826 if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) { 19827 return false; 19828 } 19829 inclusivity = inclusivity || '()'; 19830 return ( 19831 (inclusivity[0] === '(' 19832 ? this.isAfter(localFrom, units) 19833 : !this.isBefore(localFrom, units)) && 19834 (inclusivity[1] === ')' 19835 ? this.isBefore(localTo, units) 19836 : !this.isAfter(localTo, units)) 19837 ); 19838 } 19839 19840 function isSame(input, units) { 19841 var localInput = isMoment(input) ? input : createLocal(input), 19842 inputMs; 19843 if (!(this.isValid() && localInput.isValid())) { 19844 return false; 19845 } 19846 units = normalizeUnits(units) || 'millisecond'; 19847 if (units === 'millisecond') { 19848 return this.valueOf() === localInput.valueOf(); 19849 } else { 19850 inputMs = localInput.valueOf(); 19851 return ( 19852 this.clone().startOf(units).valueOf() <= inputMs && 19853 inputMs <= this.clone().endOf(units).valueOf() 19854 ); 19855 } 19856 } 19857 19858 function isSameOrAfter(input, units) { 19859 return this.isSame(input, units) || this.isAfter(input, units); 19860 } 19861 19862 function isSameOrBefore(input, units) { 19863 return this.isSame(input, units) || this.isBefore(input, units); 19864 } 19865 19866 function diff(input, units, asFloat) { 19867 var that, zoneDelta, output; 19868 19869 if (!this.isValid()) { 19870 return NaN; 19871 } 19872 19873 that = cloneWithOffset(input, this); 19874 19875 if (!that.isValid()) { 19876 return NaN; 19877 } 19878 19879 zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4; 19880 19881 units = normalizeUnits(units); 19882 19883 switch (units) { 19884 case 'year': 19885 output = monthDiff(this, that) / 12; 19886 break; 19887 case 'month': 19888 output = monthDiff(this, that); 19889 break; 19890 case 'quarter': 19891 output = monthDiff(this, that) / 3; 19892 break; 19893 case 'second': 19894 output = (this - that) / 1e3; 19895 break; // 1000 19896 case 'minute': 19897 output = (this - that) / 6e4; 19898 break; // 1000 * 60 19899 case 'hour': 19900 output = (this - that) / 36e5; 19901 break; // 1000 * 60 * 60 19902 case 'day': 19903 output = (this - that - zoneDelta) / 864e5; 19904 break; // 1000 * 60 * 60 * 24, negate dst 19905 case 'week': 19906 output = (this - that - zoneDelta) / 6048e5; 19907 break; // 1000 * 60 * 60 * 24 * 7, negate dst 19908 default: 19909 output = this - that; 19910 } 19911 19912 return asFloat ? output : absFloor(output); 19913 } 19914 19915 function monthDiff(a, b) { 19916 if (a.date() < b.date()) { 19917 // end-of-month calculations work correct when the start month has more 19918 // days than the end month. 19919 return -monthDiff(b, a); 19920 } 19921 // difference in months 19922 var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()), 19923 // b is in (anchor - 1 month, anchor + 1 month) 19924 anchor = a.clone().add(wholeMonthDiff, 'months'), 19925 anchor2, 19926 adjust; 19927 19928 if (b - anchor < 0) { 19929 anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); 19930 // linear across the month 19931 adjust = (b - anchor) / (anchor - anchor2); 19932 } else { 19933 anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); 19934 // linear across the month 19935 adjust = (b - anchor) / (anchor2 - anchor); 19936 } 19937 19938 //check for negative zero, return zero if negative zero 19939 return -(wholeMonthDiff + adjust) || 0; 19940 } 19941 19942 hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ'; 19943 hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]'; 19944 19945 function toString() { 19946 return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ'); 19947 } 19948 19949 function toISOString(keepOffset) { 19950 if (!this.isValid()) { 19951 return null; 19952 } 19953 var utc = keepOffset !== true, 19954 m = utc ? this.clone().utc() : this; 19955 if (m.year() < 0 || m.year() > 9999) { 19956 return formatMoment( 19957 m, 19958 utc 19959 ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' 19960 : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ' 19961 ); 19962 } 19963 if (isFunction(Date.prototype.toISOString)) { 19964 // native implementation is ~50x faster, use it when we can 19965 if (utc) { 19966 return this.toDate().toISOString(); 19967 } else { 19968 return new Date(this.valueOf() + this.utcOffset() * 60 * 1000) 19969 .toISOString() 19970 .replace('Z', formatMoment(m, 'Z')); 19971 } 19972 } 19973 return formatMoment( 19974 m, 19975 utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ' 19976 ); 19977 } 19978 19979 /** 19980 * Return a human readable representation of a moment that can 19981 * also be evaluated to get a new moment which is the same 19982 * 19983 * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects 19984 */ 19985 function inspect() { 19986 if (!this.isValid()) { 19987 return 'moment.invalid(/* ' + this._i + ' */)'; 19988 } 19989 var func = 'moment', 19990 zone = '', 19991 prefix, 19992 year, 19993 datetime, 19994 suffix; 19995 if (!this.isLocal()) { 19996 func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone'; 19997 zone = 'Z'; 19998 } 19999 prefix = '[' + func + '("]'; 20000 year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY'; 20001 datetime = '-MM-DD[T]HH:mm:ss.SSS'; 20002 suffix = zone + '[")]'; 20003 20004 return this.format(prefix + year + datetime + suffix); 20005 } 20006 20007 function format(inputString) { 20008 if (!inputString) { 20009 inputString = this.isUtc() 20010 ? hooks.defaultFormatUtc 20011 : hooks.defaultFormat; 20012 } 20013 var output = formatMoment(this, inputString); 20014 return this.localeData().postformat(output); 20015 } 20016 20017 function from(time, withoutSuffix) { 20018 if ( 20019 this.isValid() && 20020 ((isMoment(time) && time.isValid()) || createLocal(time).isValid()) 20021 ) { 20022 return createDuration({ to: this, from: time }) 20023 .locale(this.locale()) 20024 .humanize(!withoutSuffix); 20025 } else { 20026 return this.localeData().invalidDate(); 20027 } 20028 } 20029 20030 function fromNow(withoutSuffix) { 20031 return this.from(createLocal(), withoutSuffix); 20032 } 20033 20034 function to(time, withoutSuffix) { 20035 if ( 20036 this.isValid() && 20037 ((isMoment(time) && time.isValid()) || createLocal(time).isValid()) 20038 ) { 20039 return createDuration({ from: this, to: time }) 20040 .locale(this.locale()) 20041 .humanize(!withoutSuffix); 20042 } else { 20043 return this.localeData().invalidDate(); 20044 } 20045 } 20046 20047 function toNow(withoutSuffix) { 20048 return this.to(createLocal(), withoutSuffix); 20049 } 20050 20051 // If passed a locale key, it will set the locale for this 20052 // instance. Otherwise, it will return the locale configuration 20053 // variables for this instance. 20054 function locale(key) { 20055 var newLocaleData; 20056 20057 if (key === undefined) { 20058 return this._locale._abbr; 20059 } else { 20060 newLocaleData = getLocale(key); 20061 if (newLocaleData != null) { 20062 this._locale = newLocaleData; 20063 } 20064 return this; 20065 } 20066 } 20067 20068 var lang = deprecate( 20069 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', 20070 function (key) { 20071 if (key === undefined) { 20072 return this.localeData(); 20073 } else { 20074 return this.locale(key); 20075 } 20076 } 20077 ); 20078 20079 function localeData() { 20080 return this._locale; 20081 } 20082 20083 var MS_PER_SECOND = 1000, 20084 MS_PER_MINUTE = 60 * MS_PER_SECOND, 20085 MS_PER_HOUR = 60 * MS_PER_MINUTE, 20086 MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR; 20087 20088 // actual modulo - handles negative numbers (for dates before 1970): 20089 function mod$1(dividend, divisor) { 20090 return ((dividend % divisor) + divisor) % divisor; 20091 } 20092 20093 function localStartOfDate(y, m, d) { 20094 // the date constructor remaps years 0-99 to 1900-1999 20095 if (y < 100 && y >= 0) { 20096 // preserve leap years using a full 400 year cycle, then reset 20097 return new Date(y + 400, m, d) - MS_PER_400_YEARS; 20098 } else { 20099 return new Date(y, m, d).valueOf(); 20100 } 20101 } 20102 20103 function utcStartOfDate(y, m, d) { 20104 // Date.UTC remaps years 0-99 to 1900-1999 20105 if (y < 100 && y >= 0) { 20106 // preserve leap years using a full 400 year cycle, then reset 20107 return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS; 20108 } else { 20109 return Date.UTC(y, m, d); 20110 } 20111 } 20112 20113 function startOf(units) { 20114 var time, startOfDate; 20115 units = normalizeUnits(units); 20116 if (units === undefined || units === 'millisecond' || !this.isValid()) { 20117 return this; 20118 } 20119 20120 startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate; 20121 20122 switch (units) { 20123 case 'year': 20124 time = startOfDate(this.year(), 0, 1); 20125 break; 20126 case 'quarter': 20127 time = startOfDate( 20128 this.year(), 20129 this.month() - (this.month() % 3), 20130 1 20131 ); 20132 break; 20133 case 'month': 20134 time = startOfDate(this.year(), this.month(), 1); 20135 break; 20136 case 'week': 20137 time = startOfDate( 20138 this.year(), 20139 this.month(), 20140 this.date() - this.weekday() 20141 ); 20142 break; 20143 case 'isoWeek': 20144 time = startOfDate( 20145 this.year(), 20146 this.month(), 20147 this.date() - (this.isoWeekday() - 1) 20148 ); 20149 break; 20150 case 'day': 20151 case 'date': 20152 time = startOfDate(this.year(), this.month(), this.date()); 20153 break; 20154 case 'hour': 20155 time = this._d.valueOf(); 20156 time -= mod$1( 20157 time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), 20158 MS_PER_HOUR 20159 ); 20160 break; 20161 case 'minute': 20162 time = this._d.valueOf(); 20163 time -= mod$1(time, MS_PER_MINUTE); 20164 break; 20165 case 'second': 20166 time = this._d.valueOf(); 20167 time -= mod$1(time, MS_PER_SECOND); 20168 break; 20169 } 20170 20171 this._d.setTime(time); 20172 hooks.updateOffset(this, true); 20173 return this; 20174 } 20175 20176 function endOf(units) { 20177 var time, startOfDate; 20178 units = normalizeUnits(units); 20179 if (units === undefined || units === 'millisecond' || !this.isValid()) { 20180 return this; 20181 } 20182 20183 startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate; 20184 20185 switch (units) { 20186 case 'year': 20187 time = startOfDate(this.year() + 1, 0, 1) - 1; 20188 break; 20189 case 'quarter': 20190 time = 20191 startOfDate( 20192 this.year(), 20193 this.month() - (this.month() % 3) + 3, 20194 1 20195 ) - 1; 20196 break; 20197 case 'month': 20198 time = startOfDate(this.year(), this.month() + 1, 1) - 1; 20199 break; 20200 case 'week': 20201 time = 20202 startOfDate( 20203 this.year(), 20204 this.month(), 20205 this.date() - this.weekday() + 7 20206 ) - 1; 20207 break; 20208 case 'isoWeek': 20209 time = 20210 startOfDate( 20211 this.year(), 20212 this.month(), 20213 this.date() - (this.isoWeekday() - 1) + 7 20214 ) - 1; 20215 break; 20216 case 'day': 20217 case 'date': 20218 time = startOfDate(this.year(), this.month(), this.date() + 1) - 1; 20219 break; 20220 case 'hour': 20221 time = this._d.valueOf(); 20222 time += 20223 MS_PER_HOUR - 20224 mod$1( 20225 time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), 20226 MS_PER_HOUR 20227 ) - 20228 1; 20229 break; 20230 case 'minute': 20231 time = this._d.valueOf(); 20232 time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1; 20233 break; 20234 case 'second': 20235 time = this._d.valueOf(); 20236 time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1; 20237 break; 20238 } 20239 20240 this._d.setTime(time); 20241 hooks.updateOffset(this, true); 20242 return this; 20243 } 20244 20245 function valueOf() { 20246 return this._d.valueOf() - (this._offset || 0) * 60000; 20247 } 20248 20249 function unix() { 20250 return Math.floor(this.valueOf() / 1000); 20251 } 20252 20253 function toDate() { 20254 return new Date(this.valueOf()); 20255 } 20256 20257 function toArray() { 20258 var m = this; 20259 return [ 20260 m.year(), 20261 m.month(), 20262 m.date(), 20263 m.hour(), 20264 m.minute(), 20265 m.second(), 20266 m.millisecond(), 20267 ]; 20268 } 20269 20270 function toObject() { 20271 var m = this; 20272 return { 20273 years: m.year(), 20274 months: m.month(), 20275 date: m.date(), 20276 hours: m.hours(), 20277 minutes: m.minutes(), 20278 seconds: m.seconds(), 20279 milliseconds: m.milliseconds(), 20280 }; 20281 } 20282 20283 function toJSON() { 20284 // new Date(NaN).toJSON() === null 20285 return this.isValid() ? this.toISOString() : null; 20286 } 20287 20288 function isValid$2() { 20289 return isValid(this); 20290 } 20291 20292 function parsingFlags() { 20293 return extend({}, getParsingFlags(this)); 20294 } 20295 20296 function invalidAt() { 20297 return getParsingFlags(this).overflow; 20298 } 20299 20300 function creationData() { 20301 return { 20302 input: this._i, 20303 format: this._f, 20304 locale: this._locale, 20305 isUTC: this._isUTC, 20306 strict: this._strict, 20307 }; 20308 } 20309 20310 addFormatToken('N', 0, 0, 'eraAbbr'); 20311 addFormatToken('NN', 0, 0, 'eraAbbr'); 20312 addFormatToken('NNN', 0, 0, 'eraAbbr'); 20313 addFormatToken('NNNN', 0, 0, 'eraName'); 20314 addFormatToken('NNNNN', 0, 0, 'eraNarrow'); 20315 20316 addFormatToken('y', ['y', 1], 'yo', 'eraYear'); 20317 addFormatToken('y', ['yy', 2], 0, 'eraYear'); 20318 addFormatToken('y', ['yyy', 3], 0, 'eraYear'); 20319 addFormatToken('y', ['yyyy', 4], 0, 'eraYear'); 20320 20321 addRegexToken('N', matchEraAbbr); 20322 addRegexToken('NN', matchEraAbbr); 20323 addRegexToken('NNN', matchEraAbbr); 20324 addRegexToken('NNNN', matchEraName); 20325 addRegexToken('NNNNN', matchEraNarrow); 20326 20327 addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function ( 20328 input, 20329 array, 20330 config, 20331 token 20332 ) { 20333 var era = config._locale.erasParse(input, token, config._strict); 20334 if (era) { 20335 getParsingFlags(config).era = era; 20336 } else { 20337 getParsingFlags(config).invalidEra = input; 20338 } 20339 }); 20340 20341 addRegexToken('y', matchUnsigned); 20342 addRegexToken('yy', matchUnsigned); 20343 addRegexToken('yyy', matchUnsigned); 20344 addRegexToken('yyyy', matchUnsigned); 20345 addRegexToken('yo', matchEraYearOrdinal); 20346 20347 addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR); 20348 addParseToken(['yo'], function (input, array, config, token) { 20349 var match; 20350 if (config._locale._eraYearOrdinalRegex) { 20351 match = input.match(config._locale._eraYearOrdinalRegex); 20352 } 20353 20354 if (config._locale.eraYearOrdinalParse) { 20355 array[YEAR] = config._locale.eraYearOrdinalParse(input, match); 20356 } else { 20357 array[YEAR] = parseInt(input, 10); 20358 } 20359 }); 20360 20361 function localeEras(m, format) { 20362 var i, 20363 l, 20364 date, 20365 eras = this._eras || getLocale('en')._eras; 20366 for (i = 0, l = eras.length; i < l; ++i) { 20367 switch (typeof eras[i].since) { 20368 case 'string': 20369 // truncate time 20370 date = hooks(eras[i].since).startOf('day'); 20371 eras[i].since = date.valueOf(); 20372 break; 20373 } 20374 20375 switch (typeof eras[i].until) { 20376 case 'undefined': 20377 eras[i].until = +Infinity; 20378 break; 20379 case 'string': 20380 // truncate time 20381 date = hooks(eras[i].until).startOf('day').valueOf(); 20382 eras[i].until = date.valueOf(); 20383 break; 20384 } 20385 } 20386 return eras; 20387 } 20388 20389 function localeErasParse(eraName, format, strict) { 20390 var i, 20391 l, 20392 eras = this.eras(), 20393 name, 20394 abbr, 20395 narrow; 20396 eraName = eraName.toUpperCase(); 20397 20398 for (i = 0, l = eras.length; i < l; ++i) { 20399 name = eras[i].name.toUpperCase(); 20400 abbr = eras[i].abbr.toUpperCase(); 20401 narrow = eras[i].narrow.toUpperCase(); 20402 20403 if (strict) { 20404 switch (format) { 20405 case 'N': 20406 case 'NN': 20407 case 'NNN': 20408 if (abbr === eraName) { 20409 return eras[i]; 20410 } 20411 break; 20412 20413 case 'NNNN': 20414 if (name === eraName) { 20415 return eras[i]; 20416 } 20417 break; 20418 20419 case 'NNNNN': 20420 if (narrow === eraName) { 20421 return eras[i]; 20422 } 20423 break; 20424 } 20425 } else if ([name, abbr, narrow].indexOf(eraName) >= 0) { 20426 return eras[i]; 20427 } 20428 } 20429 } 20430 20431 function localeErasConvertYear(era, year) { 20432 var dir = era.since <= era.until ? +1 : -1; 20433 if (year === undefined) { 20434 return hooks(era.since).year(); 20435 } else { 20436 return hooks(era.since).year() + (year - era.offset) * dir; 20437 } 20438 } 20439 20440 function getEraName() { 20441 var i, 20442 l, 20443 val, 20444 eras = this.localeData().eras(); 20445 for (i = 0, l = eras.length; i < l; ++i) { 20446 // truncate time 20447 val = this.startOf('day').valueOf(); 20448 20449 if (eras[i].since <= val && val <= eras[i].until) { 20450 return eras[i].name; 20451 } 20452 if (eras[i].until <= val && val <= eras[i].since) { 20453 return eras[i].name; 20454 } 20455 } 20456 20457 return ''; 20458 } 20459 20460 function getEraNarrow() { 20461 var i, 20462 l, 20463 val, 20464 eras = this.localeData().eras(); 20465 for (i = 0, l = eras.length; i < l; ++i) { 20466 // truncate time 20467 val = this.startOf('day').valueOf(); 20468 20469 if (eras[i].since <= val && val <= eras[i].until) { 20470 return eras[i].narrow; 20471 } 20472 if (eras[i].until <= val && val <= eras[i].since) { 20473 return eras[i].narrow; 20474 } 20475 } 20476 20477 return ''; 20478 } 20479 20480 function getEraAbbr() { 20481 var i, 20482 l, 20483 val, 20484 eras = this.localeData().eras(); 20485 for (i = 0, l = eras.length; i < l; ++i) { 20486 // truncate time 20487 val = this.startOf('day').valueOf(); 20488 20489 if (eras[i].since <= val && val <= eras[i].until) { 20490 return eras[i].abbr; 20491 } 20492 if (eras[i].until <= val && val <= eras[i].since) { 20493 return eras[i].abbr; 20494 } 20495 } 20496 20497 return ''; 20498 } 20499 20500 function getEraYear() { 20501 var i, 20502 l, 20503 dir, 20504 val, 20505 eras = this.localeData().eras(); 20506 for (i = 0, l = eras.length; i < l; ++i) { 20507 dir = eras[i].since <= eras[i].until ? +1 : -1; 20508 20509 // truncate time 20510 val = this.startOf('day').valueOf(); 20511 20512 if ( 20513 (eras[i].since <= val && val <= eras[i].until) || 20514 (eras[i].until <= val && val <= eras[i].since) 20515 ) { 20516 return ( 20517 (this.year() - hooks(eras[i].since).year()) * dir + 20518 eras[i].offset 20519 ); 20520 } 20521 } 20522 20523 return this.year(); 20524 } 20525 20526 function erasNameRegex(isStrict) { 20527 if (!hasOwnProp(this, '_erasNameRegex')) { 20528 computeErasParse.call(this); 20529 } 20530 return isStrict ? this._erasNameRegex : this._erasRegex; 20531 } 20532 20533 function erasAbbrRegex(isStrict) { 20534 if (!hasOwnProp(this, '_erasAbbrRegex')) { 20535 computeErasParse.call(this); 20536 } 20537 return isStrict ? this._erasAbbrRegex : this._erasRegex; 20538 } 20539 20540 function erasNarrowRegex(isStrict) { 20541 if (!hasOwnProp(this, '_erasNarrowRegex')) { 20542 computeErasParse.call(this); 20543 } 20544 return isStrict ? this._erasNarrowRegex : this._erasRegex; 20545 } 20546 20547 function matchEraAbbr(isStrict, locale) { 20548 return locale.erasAbbrRegex(isStrict); 20549 } 20550 20551 function matchEraName(isStrict, locale) { 20552 return locale.erasNameRegex(isStrict); 20553 } 20554 20555 function matchEraNarrow(isStrict, locale) { 20556 return locale.erasNarrowRegex(isStrict); 20557 } 20558 20559 function matchEraYearOrdinal(isStrict, locale) { 20560 return locale._eraYearOrdinalRegex || matchUnsigned; 20561 } 20562 20563 function computeErasParse() { 20564 var abbrPieces = [], 20565 namePieces = [], 20566 narrowPieces = [], 20567 mixedPieces = [], 20568 i, 20569 l, 20570 eras = this.eras(); 20571 20572 for (i = 0, l = eras.length; i < l; ++i) { 20573 namePieces.push(regexEscape(eras[i].name)); 20574 abbrPieces.push(regexEscape(eras[i].abbr)); 20575 narrowPieces.push(regexEscape(eras[i].narrow)); 20576 20577 mixedPieces.push(regexEscape(eras[i].name)); 20578 mixedPieces.push(regexEscape(eras[i].abbr)); 20579 mixedPieces.push(regexEscape(eras[i].narrow)); 20580 } 20581 20582 this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i'); 20583 this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i'); 20584 this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i'); 20585 this._erasNarrowRegex = new RegExp( 20586 '^(' + narrowPieces.join('|') + ')', 20587 'i' 20588 ); 20589 } 20590 20591 // FORMATTING 20592 20593 addFormatToken(0, ['gg', 2], 0, function () { 20594 return this.weekYear() % 100; 20595 }); 20596 20597 addFormatToken(0, ['GG', 2], 0, function () { 20598 return this.isoWeekYear() % 100; 20599 }); 20600 20601 function addWeekYearFormatToken(token, getter) { 20602 addFormatToken(0, [token, token.length], 0, getter); 20603 } 20604 20605 addWeekYearFormatToken('gggg', 'weekYear'); 20606 addWeekYearFormatToken('ggggg', 'weekYear'); 20607 addWeekYearFormatToken('GGGG', 'isoWeekYear'); 20608 addWeekYearFormatToken('GGGGG', 'isoWeekYear'); 20609 20610 // ALIASES 20611 20612 addUnitAlias('weekYear', 'gg'); 20613 addUnitAlias('isoWeekYear', 'GG'); 20614 20615 // PRIORITY 20616 20617 addUnitPriority('weekYear', 1); 20618 addUnitPriority('isoWeekYear', 1); 20619 20620 // PARSING 20621 20622 addRegexToken('G', matchSigned); 20623 addRegexToken('g', matchSigned); 20624 addRegexToken('GG', match1to2, match2); 20625 addRegexToken('gg', match1to2, match2); 20626 addRegexToken('GGGG', match1to4, match4); 20627 addRegexToken('gggg', match1to4, match4); 20628 addRegexToken('GGGGG', match1to6, match6); 20629 addRegexToken('ggggg', match1to6, match6); 20630 20631 addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function ( 20632 input, 20633 week, 20634 config, 20635 token 20636 ) { 20637 week[token.substr(0, 2)] = toInt(input); 20638 }); 20639 20640 addWeekParseToken(['gg', 'GG'], function (input, week, config, token) { 20641 week[token] = hooks.parseTwoDigitYear(input); 20642 }); 20643 20644 // MOMENTS 20645 20646 function getSetWeekYear(input) { 20647 return getSetWeekYearHelper.call( 20648 this, 20649 input, 20650 this.week(), 20651 this.weekday(), 20652 this.localeData()._week.dow, 20653 this.localeData()._week.doy 20654 ); 20655 } 20656 20657 function getSetISOWeekYear(input) { 20658 return getSetWeekYearHelper.call( 20659 this, 20660 input, 20661 this.isoWeek(), 20662 this.isoWeekday(), 20663 1, 20664 4 20665 ); 20666 } 20667 20668 function getISOWeeksInYear() { 20669 return weeksInYear(this.year(), 1, 4); 20670 } 20671 20672 function getISOWeeksInISOWeekYear() { 20673 return weeksInYear(this.isoWeekYear(), 1, 4); 20674 } 20675 20676 function getWeeksInYear() { 20677 var weekInfo = this.localeData()._week; 20678 return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy); 20679 } 20680 20681 function getWeeksInWeekYear() { 20682 var weekInfo = this.localeData()._week; 20683 return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy); 20684 } 20685 20686 function getSetWeekYearHelper(input, week, weekday, dow, doy) { 20687 var weeksTarget; 20688 if (input == null) { 20689 return weekOfYear(this, dow, doy).year; 20690 } else { 20691 weeksTarget = weeksInYear(input, dow, doy); 20692 if (week > weeksTarget) { 20693 week = weeksTarget; 20694 } 20695 return setWeekAll.call(this, input, week, weekday, dow, doy); 20696 } 20697 } 20698 20699 function setWeekAll(weekYear, week, weekday, dow, doy) { 20700 var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy), 20701 date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear); 20702 20703 this.year(date.getUTCFullYear()); 20704 this.month(date.getUTCMonth()); 20705 this.date(date.getUTCDate()); 20706 return this; 20707 } 20708 20709 // FORMATTING 20710 20711 addFormatToken('Q', 0, 'Qo', 'quarter'); 20712 20713 // ALIASES 20714 20715 addUnitAlias('quarter', 'Q'); 20716 20717 // PRIORITY 20718 20719 addUnitPriority('quarter', 7); 20720 20721 // PARSING 20722 20723 addRegexToken('Q', match1); 20724 addParseToken('Q', function (input, array) { 20725 array[MONTH] = (toInt(input) - 1) * 3; 20726 }); 20727 20728 // MOMENTS 20729 20730 function getSetQuarter(input) { 20731 return input == null 20732 ? Math.ceil((this.month() + 1) / 3) 20733 : this.month((input - 1) * 3 + (this.month() % 3)); 20734 } 20735 20736 // FORMATTING 20737 20738 addFormatToken('D', ['DD', 2], 'Do', 'date'); 20739 20740 // ALIASES 20741 20742 addUnitAlias('date', 'D'); 20743 20744 // PRIORITY 20745 addUnitPriority('date', 9); 20746 20747 // PARSING 20748 20749 addRegexToken('D', match1to2); 20750 addRegexToken('DD', match1to2, match2); 20751 addRegexToken('Do', function (isStrict, locale) { 20752 // TODO: Remove "ordinalParse" fallback in next major release. 20753 return isStrict 20754 ? locale._dayOfMonthOrdinalParse || locale._ordinalParse 20755 : locale._dayOfMonthOrdinalParseLenient; 20756 }); 20757 20758 addParseToken(['D', 'DD'], DATE); 20759 addParseToken('Do', function (input, array) { 20760 array[DATE] = toInt(input.match(match1to2)[0]); 20761 }); 20762 20763 // MOMENTS 20764 20765 var getSetDayOfMonth = makeGetSet('Date', true); 20766 20767 // FORMATTING 20768 20769 addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); 20770 20771 // ALIASES 20772 20773 addUnitAlias('dayOfYear', 'DDD'); 20774 20775 // PRIORITY 20776 addUnitPriority('dayOfYear', 4); 20777 20778 // PARSING 20779 20780 addRegexToken('DDD', match1to3); 20781 addRegexToken('DDDD', match3); 20782 addParseToken(['DDD', 'DDDD'], function (input, array, config) { 20783 config._dayOfYear = toInt(input); 20784 }); 20785 20786 // HELPERS 20787 20788 // MOMENTS 20789 20790 function getSetDayOfYear(input) { 20791 var dayOfYear = 20792 Math.round( 20793 (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5 20794 ) + 1; 20795 return input == null ? dayOfYear : this.add(input - dayOfYear, 'd'); 20796 } 20797 20798 // FORMATTING 20799 20800 addFormatToken('m', ['mm', 2], 0, 'minute'); 20801 20802 // ALIASES 20803 20804 addUnitAlias('minute', 'm'); 20805 20806 // PRIORITY 20807 20808 addUnitPriority('minute', 14); 20809 20810 // PARSING 20811 20812 addRegexToken('m', match1to2); 20813 addRegexToken('mm', match1to2, match2); 20814 addParseToken(['m', 'mm'], MINUTE); 20815 20816 // MOMENTS 20817 20818 var getSetMinute = makeGetSet('Minutes', false); 20819 20820 // FORMATTING 20821 20822 addFormatToken('s', ['ss', 2], 0, 'second'); 20823 20824 // ALIASES 20825 20826 addUnitAlias('second', 's'); 20827 20828 // PRIORITY 20829 20830 addUnitPriority('second', 15); 20831 20832 // PARSING 20833 20834 addRegexToken('s', match1to2); 20835 addRegexToken('ss', match1to2, match2); 20836 addParseToken(['s', 'ss'], SECOND); 20837 20838 // MOMENTS 20839 20840 var getSetSecond = makeGetSet('Seconds', false); 20841 20842 // FORMATTING 20843 20844 addFormatToken('S', 0, 0, function () { 20845 return ~~(this.millisecond() / 100); 20846 }); 20847 20848 addFormatToken(0, ['SS', 2], 0, function () { 20849 return ~~(this.millisecond() / 10); 20850 }); 20851 20852 addFormatToken(0, ['SSS', 3], 0, 'millisecond'); 20853 addFormatToken(0, ['SSSS', 4], 0, function () { 20854 return this.millisecond() * 10; 20855 }); 20856 addFormatToken(0, ['SSSSS', 5], 0, function () { 20857 return this.millisecond() * 100; 20858 }); 20859 addFormatToken(0, ['SSSSSS', 6], 0, function () { 20860 return this.millisecond() * 1000; 20861 }); 20862 addFormatToken(0, ['SSSSSSS', 7], 0, function () { 20863 return this.millisecond() * 10000; 20864 }); 20865 addFormatToken(0, ['SSSSSSSS', 8], 0, function () { 20866 return this.millisecond() * 100000; 20867 }); 20868 addFormatToken(0, ['SSSSSSSSS', 9], 0, function () { 20869 return this.millisecond() * 1000000; 20870 }); 20871 20872 // ALIASES 20873 20874 addUnitAlias('millisecond', 'ms'); 20875 20876 // PRIORITY 20877 20878 addUnitPriority('millisecond', 16); 20879 20880 // PARSING 20881 20882 addRegexToken('S', match1to3, match1); 20883 addRegexToken('SS', match1to3, match2); 20884 addRegexToken('SSS', match1to3, match3); 20885 20886 var token, getSetMillisecond; 20887 for (token = 'SSSS'; token.length <= 9; token += 'S') { 20888 addRegexToken(token, matchUnsigned); 20889 } 20890 20891 function parseMs(input, array) { 20892 array[MILLISECOND] = toInt(('0.' + input) * 1000); 20893 } 20894 20895 for (token = 'S'; token.length <= 9; token += 'S') { 20896 addParseToken(token, parseMs); 20897 } 20898 20899 getSetMillisecond = makeGetSet('Milliseconds', false); 20900 20901 // FORMATTING 20902 20903 addFormatToken('z', 0, 0, 'zoneAbbr'); 20904 addFormatToken('zz', 0, 0, 'zoneName'); 20905 20906 // MOMENTS 20907 20908 function getZoneAbbr() { 20909 return this._isUTC ? 'UTC' : ''; 20910 } 20911 20912 function getZoneName() { 20913 return this._isUTC ? 'Coordinated Universal Time' : ''; 20914 } 20915 20916 var proto = Moment.prototype; 20917 20918 proto.add = add; 20919 proto.calendar = calendar$1; 20920 proto.clone = clone; 20921 proto.diff = diff; 20922 proto.endOf = endOf; 20923 proto.format = format; 20924 proto.from = from; 20925 proto.fromNow = fromNow; 20926 proto.to = to; 20927 proto.toNow = toNow; 20928 proto.get = stringGet; 20929 proto.invalidAt = invalidAt; 20930 proto.isAfter = isAfter; 20931 proto.isBefore = isBefore; 20932 proto.isBetween = isBetween; 20933 proto.isSame = isSame; 20934 proto.isSameOrAfter = isSameOrAfter; 20935 proto.isSameOrBefore = isSameOrBefore; 20936 proto.isValid = isValid$2; 20937 proto.lang = lang; 20938 proto.locale = locale; 20939 proto.localeData = localeData; 20940 proto.max = prototypeMax; 20941 proto.min = prototypeMin; 20942 proto.parsingFlags = parsingFlags; 20943 proto.set = stringSet; 20944 proto.startOf = startOf; 20945 proto.subtract = subtract; 20946 proto.toArray = toArray; 20947 proto.toObject = toObject; 20948 proto.toDate = toDate; 20949 proto.toISOString = toISOString; 20950 proto.inspect = inspect; 20951 if (typeof Symbol !== 'undefined' && Symbol.for != null) { 20952 proto[Symbol.for('nodejs.util.inspect.custom')] = function () { 20953 return 'Moment<' + this.format() + '>'; 20954 }; 20955 } 20956 proto.toJSON = toJSON; 20957 proto.toString = toString; 20958 proto.unix = unix; 20959 proto.valueOf = valueOf; 20960 proto.creationData = creationData; 20961 proto.eraName = getEraName; 20962 proto.eraNarrow = getEraNarrow; 20963 proto.eraAbbr = getEraAbbr; 20964 proto.eraYear = getEraYear; 20965 proto.year = getSetYear; 20966 proto.isLeapYear = getIsLeapYear; 20967 proto.weekYear = getSetWeekYear; 20968 proto.isoWeekYear = getSetISOWeekYear; 20969 proto.quarter = proto.quarters = getSetQuarter; 20970 proto.month = getSetMonth; 20971 proto.daysInMonth = getDaysInMonth; 20972 proto.week = proto.weeks = getSetWeek; 20973 proto.isoWeek = proto.isoWeeks = getSetISOWeek; 20974 proto.weeksInYear = getWeeksInYear; 20975 proto.weeksInWeekYear = getWeeksInWeekYear; 20976 proto.isoWeeksInYear = getISOWeeksInYear; 20977 proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear; 20978 proto.date = getSetDayOfMonth; 20979 proto.day = proto.days = getSetDayOfWeek; 20980 proto.weekday = getSetLocaleDayOfWeek; 20981 proto.isoWeekday = getSetISODayOfWeek; 20982 proto.dayOfYear = getSetDayOfYear; 20983 proto.hour = proto.hours = getSetHour; 20984 proto.minute = proto.minutes = getSetMinute; 20985 proto.second = proto.seconds = getSetSecond; 20986 proto.millisecond = proto.milliseconds = getSetMillisecond; 20987 proto.utcOffset = getSetOffset; 20988 proto.utc = setOffsetToUTC; 20989 proto.local = setOffsetToLocal; 20990 proto.parseZone = setOffsetToParsedOffset; 20991 proto.hasAlignedHourOffset = hasAlignedHourOffset; 20992 proto.isDST = isDaylightSavingTime; 20993 proto.isLocal = isLocal; 20994 proto.isUtcOffset = isUtcOffset; 20995 proto.isUtc = isUtc; 20996 proto.isUTC = isUtc; 20997 proto.zoneAbbr = getZoneAbbr; 20998 proto.zoneName = getZoneName; 20999 proto.dates = deprecate( 21000 'dates accessor is deprecated. Use date instead.', 21001 getSetDayOfMonth 21002 ); 21003 proto.months = deprecate( 21004 'months accessor is deprecated. Use month instead', 21005 getSetMonth 21006 ); 21007 proto.years = deprecate( 21008 'years accessor is deprecated. Use year instead', 21009 getSetYear 21010 ); 21011 proto.zone = deprecate( 21012 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', 21013 getSetZone 21014 ); 21015 proto.isDSTShifted = deprecate( 21016 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', 21017 isDaylightSavingTimeShifted 21018 ); 21019 21020 function createUnix(input) { 21021 return createLocal(input * 1000); 21022 } 21023 21024 function createInZone() { 21025 return createLocal.apply(null, arguments).parseZone(); 21026 } 21027 21028 function preParsePostFormat(string) { 21029 return string; 21030 } 21031 21032 var proto$1 = Locale.prototype; 21033 21034 proto$1.calendar = calendar; 21035 proto$1.longDateFormat = longDateFormat; 21036 proto$1.invalidDate = invalidDate; 21037 proto$1.ordinal = ordinal; 21038 proto$1.preparse = preParsePostFormat; 21039 proto$1.postformat = preParsePostFormat; 21040 proto$1.relativeTime = relativeTime; 21041 proto$1.pastFuture = pastFuture; 21042 proto$1.set = set; 21043 proto$1.eras = localeEras; 21044 proto$1.erasParse = localeErasParse; 21045 proto$1.erasConvertYear = localeErasConvertYear; 21046 proto$1.erasAbbrRegex = erasAbbrRegex; 21047 proto$1.erasNameRegex = erasNameRegex; 21048 proto$1.erasNarrowRegex = erasNarrowRegex; 21049 21050 proto$1.months = localeMonths; 21051 proto$1.monthsShort = localeMonthsShort; 21052 proto$1.monthsParse = localeMonthsParse; 21053 proto$1.monthsRegex = monthsRegex; 21054 proto$1.monthsShortRegex = monthsShortRegex; 21055 proto$1.week = localeWeek; 21056 proto$1.firstDayOfYear = localeFirstDayOfYear; 21057 proto$1.firstDayOfWeek = localeFirstDayOfWeek; 21058 21059 proto$1.weekdays = localeWeekdays; 21060 proto$1.weekdaysMin = localeWeekdaysMin; 21061 proto$1.weekdaysShort = localeWeekdaysShort; 21062 proto$1.weekdaysParse = localeWeekdaysParse; 21063 21064 proto$1.weekdaysRegex = weekdaysRegex; 21065 proto$1.weekdaysShortRegex = weekdaysShortRegex; 21066 proto$1.weekdaysMinRegex = weekdaysMinRegex; 21067 21068 proto$1.isPM = localeIsPM; 21069 proto$1.meridiem = localeMeridiem; 21070 21071 function get$1(format, index, field, setter) { 21072 var locale = getLocale(), 21073 utc = createUTC().set(setter, index); 21074 return locale[field](utc, format); 21075 } 21076 21077 function listMonthsImpl(format, index, field) { 21078 if (isNumber(format)) { 21079 index = format; 21080 format = undefined; 21081 } 21082 21083 format = format || ''; 21084 21085 if (index != null) { 21086 return get$1(format, index, field, 'month'); 21087 } 21088 21089 var i, 21090 out = []; 21091 for (i = 0; i < 12; i++) { 21092 out[i] = get$1(format, i, field, 'month'); 21093 } 21094 return out; 21095 } 21096 21097 // () 21098 // (5) 21099 // (fmt, 5) 21100 // (fmt) 21101 // (true) 21102 // (true, 5) 21103 // (true, fmt, 5) 21104 // (true, fmt) 21105 function listWeekdaysImpl(localeSorted, format, index, field) { 21106 if (typeof localeSorted === 'boolean') { 21107 if (isNumber(format)) { 21108 index = format; 21109 format = undefined; 21110 } 21111 21112 format = format || ''; 21113 } else { 21114 format = localeSorted; 21115 index = format; 21116 localeSorted = false; 21117 21118 if (isNumber(format)) { 21119 index = format; 21120 format = undefined; 21121 } 21122 21123 format = format || ''; 21124 } 21125 21126 var locale = getLocale(), 21127 shift = localeSorted ? locale._week.dow : 0, 21128 i, 21129 out = []; 21130 21131 if (index != null) { 21132 return get$1(format, (index + shift) % 7, field, 'day'); 21133 } 21134 21135 for (i = 0; i < 7; i++) { 21136 out[i] = get$1(format, (i + shift) % 7, field, 'day'); 21137 } 21138 return out; 21139 } 21140 21141 function listMonths(format, index) { 21142 return listMonthsImpl(format, index, 'months'); 21143 } 21144 21145 function listMonthsShort(format, index) { 21146 return listMonthsImpl(format, index, 'monthsShort'); 21147 } 21148 21149 function listWeekdays(localeSorted, format, index) { 21150 return listWeekdaysImpl(localeSorted, format, index, 'weekdays'); 21151 } 21152 21153 function listWeekdaysShort(localeSorted, format, index) { 21154 return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort'); 21155 } 21156 21157 function listWeekdaysMin(localeSorted, format, index) { 21158 return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin'); 21159 } 21160 21161 getSetGlobalLocale('en', { 21162 eras: [ 21163 { 21164 since: '0001-01-01', 21165 until: +Infinity, 21166 offset: 1, 21167 name: 'Anno Domini', 21168 narrow: 'AD', 21169 abbr: 'AD', 21170 }, 21171 { 21172 since: '0000-12-31', 21173 until: -Infinity, 21174 offset: 1, 21175 name: 'Before Christ', 21176 narrow: 'BC', 21177 abbr: 'BC', 21178 }, 21179 ], 21180 dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/, 21181 ordinal: function (number) { 21182 var b = number % 10, 21183 output = 21184 toInt((number % 100) / 10) === 1 21185 ? 'th' 21186 : b === 1 21187 ? 'st' 21188 : b === 2 21189 ? 'nd' 21190 : b === 3 21191 ? 'rd' 21192 : 'th'; 21193 return number + output; 21194 }, 21195 }); 21196 21197 // Side effect imports 21198 21199 hooks.lang = deprecate( 21200 'moment.lang is deprecated. Use moment.locale instead.', 21201 getSetGlobalLocale 21202 ); 21203 hooks.langData = deprecate( 21204 'moment.langData is deprecated. Use moment.localeData instead.', 21205 getLocale 21206 ); 21207 21208 var mathAbs = Math.abs; 21209 21210 function abs() { 21211 var data = this._data; 21212 21213 this._milliseconds = mathAbs(this._milliseconds); 21214 this._days = mathAbs(this._days); 21215 this._months = mathAbs(this._months); 21216 21217 data.milliseconds = mathAbs(data.milliseconds); 21218 data.seconds = mathAbs(data.seconds); 21219 data.minutes = mathAbs(data.minutes); 21220 data.hours = mathAbs(data.hours); 21221 data.months = mathAbs(data.months); 21222 data.years = mathAbs(data.years); 21223 21224 return this; 21225 } 21226 21227 function addSubtract$1(duration, input, value, direction) { 21228 var other = createDuration(input, value); 21229 21230 duration._milliseconds += direction * other._milliseconds; 21231 duration._days += direction * other._days; 21232 duration._months += direction * other._months; 21233 21234 return duration._bubble(); 21235 } 21236 21237 // supports only 2.0-style add(1, 's') or add(duration) 21238 function add$1(input, value) { 21239 return addSubtract$1(this, input, value, 1); 21240 } 21241 21242 // supports only 2.0-style subtract(1, 's') or subtract(duration) 21243 function subtract$1(input, value) { 21244 return addSubtract$1(this, input, value, -1); 21245 } 21246 21247 function absCeil(number) { 21248 if (number < 0) { 21249 return Math.floor(number); 21250 } else { 21251 return Math.ceil(number); 21252 } 21253 } 21254 21255 function bubble() { 21256 var milliseconds = this._milliseconds, 21257 days = this._days, 21258 months = this._months, 21259 data = this._data, 21260 seconds, 21261 minutes, 21262 hours, 21263 years, 21264 monthsFromDays; 21265 21266 // if we have a mix of positive and negative values, bubble down first 21267 // check: https://github.com/moment/moment/issues/2166 21268 if ( 21269 !( 21270 (milliseconds >= 0 && days >= 0 && months >= 0) || 21271 (milliseconds <= 0 && days <= 0 && months <= 0) 21272 ) 21273 ) { 21274 milliseconds += absCeil(monthsToDays(months) + days) * 864e5; 21275 days = 0; 21276 months = 0; 21277 } 21278 21279 // The following code bubbles up values, see the tests for 21280 // examples of what that means. 21281 data.milliseconds = milliseconds % 1000; 21282 21283 seconds = absFloor(milliseconds / 1000); 21284 data.seconds = seconds % 60; 21285 21286 minutes = absFloor(seconds / 60); 21287 data.minutes = minutes % 60; 21288 21289 hours = absFloor(minutes / 60); 21290 data.hours = hours % 24; 21291 21292 days += absFloor(hours / 24); 21293 21294 // convert days to months 21295 monthsFromDays = absFloor(daysToMonths(days)); 21296 months += monthsFromDays; 21297 days -= absCeil(monthsToDays(monthsFromDays)); 21298 21299 // 12 months -> 1 year 21300 years = absFloor(months / 12); 21301 months %= 12; 21302 21303 data.days = days; 21304 data.months = months; 21305 data.years = years; 21306 21307 return this; 21308 } 21309 21310 function daysToMonths(days) { 21311 // 400 years have 146097 days (taking into account leap year rules) 21312 // 400 years have 12 months === 4800 21313 return (days * 4800) / 146097; 21314 } 21315 21316 function monthsToDays(months) { 21317 // the reverse of daysToMonths 21318 return (months * 146097) / 4800; 21319 } 21320 21321 function as(units) { 21322 if (!this.isValid()) { 21323 return NaN; 21324 } 21325 var days, 21326 months, 21327 milliseconds = this._milliseconds; 21328 21329 units = normalizeUnits(units); 21330 21331 if (units === 'month' || units === 'quarter' || units === 'year') { 21332 days = this._days + milliseconds / 864e5; 21333 months = this._months + daysToMonths(days); 21334 switch (units) { 21335 case 'month': 21336 return months; 21337 case 'quarter': 21338 return months / 3; 21339 case 'year': 21340 return months / 12; 21341 } 21342 } else { 21343 // handle milliseconds separately because of floating point math errors (issue #1867) 21344 days = this._days + Math.round(monthsToDays(this._months)); 21345 switch (units) { 21346 case 'week': 21347 return days / 7 + milliseconds / 6048e5; 21348 case 'day': 21349 return days + milliseconds / 864e5; 21350 case 'hour': 21351 return days * 24 + milliseconds / 36e5; 21352 case 'minute': 21353 return days * 1440 + milliseconds / 6e4; 21354 case 'second': 21355 return days * 86400 + milliseconds / 1000; 21356 // Math.floor prevents floating point math errors here 21357 case 'millisecond': 21358 return Math.floor(days * 864e5) + milliseconds; 21359 default: 21360 throw new Error('Unknown unit ' + units); 21361 } 21362 } 21363 } 21364 21365 // TODO: Use this.as('ms')? 21366 function valueOf$1() { 21367 if (!this.isValid()) { 21368 return NaN; 21369 } 21370 return ( 21371 this._milliseconds + 21372 this._days * 864e5 + 21373 (this._months % 12) * 2592e6 + 21374 toInt(this._months / 12) * 31536e6 21375 ); 21376 } 21377 21378 function makeAs(alias) { 21379 return function () { 21380 return this.as(alias); 21381 }; 21382 } 21383 21384 var asMilliseconds = makeAs('ms'), 21385 asSeconds = makeAs('s'), 21386 asMinutes = makeAs('m'), 21387 asHours = makeAs('h'), 21388 asDays = makeAs('d'), 21389 asWeeks = makeAs('w'), 21390 asMonths = makeAs('M'), 21391 asQuarters = makeAs('Q'), 21392 asYears = makeAs('y'); 21393 21394 function clone$1() { 21395 return createDuration(this); 21396 } 21397 21398 function get$2(units) { 21399 units = normalizeUnits(units); 21400 return this.isValid() ? this[units + 's']() : NaN; 21401 } 21402 21403 function makeGetter(name) { 21404 return function () { 21405 return this.isValid() ? this._data[name] : NaN; 21406 }; 21407 } 21408 21409 var milliseconds = makeGetter('milliseconds'), 21410 seconds = makeGetter('seconds'), 21411 minutes = makeGetter('minutes'), 21412 hours = makeGetter('hours'), 21413 days = makeGetter('days'), 21414 months = makeGetter('months'), 21415 years = makeGetter('years'); 21416 21417 function weeks() { 21418 return absFloor(this.days() / 7); 21419 } 21420 21421 var round = Math.round, 21422 thresholds = { 21423 ss: 44, // a few seconds to seconds 21424 s: 45, // seconds to minute 21425 m: 45, // minutes to hour 21426 h: 22, // hours to day 21427 d: 26, // days to month/week 21428 w: null, // weeks to month 21429 M: 11, // months to year 21430 }; 21431 21432 // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize 21433 function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) { 21434 return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture); 21435 } 21436 21437 function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) { 21438 var duration = createDuration(posNegDuration).abs(), 21439 seconds = round(duration.as('s')), 21440 minutes = round(duration.as('m')), 21441 hours = round(duration.as('h')), 21442 days = round(duration.as('d')), 21443 months = round(duration.as('M')), 21444 weeks = round(duration.as('w')), 21445 years = round(duration.as('y')), 21446 a = 21447 (seconds <= thresholds.ss && ['s', seconds]) || 21448 (seconds < thresholds.s && ['ss', seconds]) || 21449 (minutes <= 1 && ['m']) || 21450 (minutes < thresholds.m && ['mm', minutes]) || 21451 (hours <= 1 && ['h']) || 21452 (hours < thresholds.h && ['hh', hours]) || 21453 (days <= 1 && ['d']) || 21454 (days < thresholds.d && ['dd', days]); 21455 21456 if (thresholds.w != null) { 21457 a = 21458 a || 21459 (weeks <= 1 && ['w']) || 21460 (weeks < thresholds.w && ['ww', weeks]); 21461 } 21462 a = a || 21463 (months <= 1 && ['M']) || 21464 (months < thresholds.M && ['MM', months]) || 21465 (years <= 1 && ['y']) || ['yy', years]; 21466 21467 a[2] = withoutSuffix; 21468 a[3] = +posNegDuration > 0; 21469 a[4] = locale; 21470 return substituteTimeAgo.apply(null, a); 21471 } 21472 21473 // This function allows you to set the rounding function for relative time strings 21474 function getSetRelativeTimeRounding(roundingFunction) { 21475 if (roundingFunction === undefined) { 21476 return round; 21477 } 21478 if (typeof roundingFunction === 'function') { 21479 round = roundingFunction; 21480 return true; 21481 } 21482 return false; 21483 } 21484 21485 // This function allows you to set a threshold for relative time strings 21486 function getSetRelativeTimeThreshold(threshold, limit) { 21487 if (thresholds[threshold] === undefined) { 21488 return false; 21489 } 21490 if (limit === undefined) { 21491 return thresholds[threshold]; 21492 } 21493 thresholds[threshold] = limit; 21494 if (threshold === 's') { 21495 thresholds.ss = limit - 1; 21496 } 21497 return true; 21498 } 21499 21500 function humanize(argWithSuffix, argThresholds) { 21501 if (!this.isValid()) { 21502 return this.localeData().invalidDate(); 21503 } 21504 21505 var withSuffix = false, 21506 th = thresholds, 21507 locale, 21508 output; 21509 21510 if (typeof argWithSuffix === 'object') { 21511 argThresholds = argWithSuffix; 21512 argWithSuffix = false; 21513 } 21514 if (typeof argWithSuffix === 'boolean') { 21515 withSuffix = argWithSuffix; 21516 } 21517 if (typeof argThresholds === 'object') { 21518 th = Object.assign({}, thresholds, argThresholds); 21519 if (argThresholds.s != null && argThresholds.ss == null) { 21520 th.ss = argThresholds.s - 1; 21521 } 21522 } 21523 21524 locale = this.localeData(); 21525 output = relativeTime$1(this, !withSuffix, th, locale); 21526 21527 if (withSuffix) { 21528 output = locale.pastFuture(+this, output); 21529 } 21530 21531 return locale.postformat(output); 21532 } 21533 21534 var abs$1 = Math.abs; 21535 21536 function sign(x) { 21537 return (x > 0) - (x < 0) || +x; 21538 } 21539 21540 function toISOString$1() { 21541 // for ISO strings we do not use the normal bubbling rules: 21542 // * milliseconds bubble up until they become hours 21543 // * days do not bubble at all 21544 // * months bubble up until they become years 21545 // This is because there is no context-free conversion between hours and days 21546 // (think of clock changes) 21547 // and also not between days and months (28-31 days per month) 21548 if (!this.isValid()) { 21549 return this.localeData().invalidDate(); 21550 } 21551 21552 var seconds = abs$1(this._milliseconds) / 1000, 21553 days = abs$1(this._days), 21554 months = abs$1(this._months), 21555 minutes, 21556 hours, 21557 years, 21558 s, 21559 total = this.asSeconds(), 21560 totalSign, 21561 ymSign, 21562 daysSign, 21563 hmsSign; 21564 21565 if (!total) { 21566 // this is the same as C#'s (Noda) and python (isodate)... 21567 // but not other JS (goog.date) 21568 return 'P0D'; 21569 } 21570 21571 // 3600 seconds -> 60 minutes -> 1 hour 21572 minutes = absFloor(seconds / 60); 21573 hours = absFloor(minutes / 60); 21574 seconds %= 60; 21575 minutes %= 60; 21576 21577 // 12 months -> 1 year 21578 years = absFloor(months / 12); 21579 months %= 12; 21580 21581 // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js 21582 s = seconds ? seconds.toFixed(3).replace(/\.?0+$/, '') : ''; 21583 21584 totalSign = total < 0 ? '-' : ''; 21585 ymSign = sign(this._months) !== sign(total) ? '-' : ''; 21586 daysSign = sign(this._days) !== sign(total) ? '-' : ''; 21587 hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : ''; 21588 21589 return ( 21590 totalSign + 21591 'P' + 21592 (years ? ymSign + years + 'Y' : '') + 21593 (months ? ymSign + months + 'M' : '') + 21594 (days ? daysSign + days + 'D' : '') + 21595 (hours || minutes || seconds ? 'T' : '') + 21596 (hours ? hmsSign + hours + 'H' : '') + 21597 (minutes ? hmsSign + minutes + 'M' : '') + 21598 (seconds ? hmsSign + s + 'S' : '') 21599 ); 21600 } 21601 21602 var proto$2 = Duration.prototype; 21603 21604 proto$2.isValid = isValid$1; 21605 proto$2.abs = abs; 21606 proto$2.add = add$1; 21607 proto$2.subtract = subtract$1; 21608 proto$2.as = as; 21609 proto$2.asMilliseconds = asMilliseconds; 21610 proto$2.asSeconds = asSeconds; 21611 proto$2.asMinutes = asMinutes; 21612 proto$2.asHours = asHours; 21613 proto$2.asDays = asDays; 21614 proto$2.asWeeks = asWeeks; 21615 proto$2.asMonths = asMonths; 21616 proto$2.asQuarters = asQuarters; 21617 proto$2.asYears = asYears; 21618 proto$2.valueOf = valueOf$1; 21619 proto$2._bubble = bubble; 21620 proto$2.clone = clone$1; 21621 proto$2.get = get$2; 21622 proto$2.milliseconds = milliseconds; 21623 proto$2.seconds = seconds; 21624 proto$2.minutes = minutes; 21625 proto$2.hours = hours; 21626 proto$2.days = days; 21627 proto$2.weeks = weeks; 21628 proto$2.months = months; 21629 proto$2.years = years; 21630 proto$2.humanize = humanize; 21631 proto$2.toISOString = toISOString$1; 21632 proto$2.toString = toISOString$1; 21633 proto$2.toJSON = toISOString$1; 21634 proto$2.locale = locale; 21635 proto$2.localeData = localeData; 21636 21637 proto$2.toIsoString = deprecate( 21638 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', 21639 toISOString$1 21640 ); 21641 proto$2.lang = lang; 21642 21643 // FORMATTING 21644 21645 addFormatToken('X', 0, 0, 'unix'); 21646 addFormatToken('x', 0, 0, 'valueOf'); 21647 21648 // PARSING 21649 21650 addRegexToken('x', matchSigned); 21651 addRegexToken('X', matchTimestamp); 21652 addParseToken('X', function (input, array, config) { 21653 config._d = new Date(parseFloat(input) * 1000); 21654 }); 21655 addParseToken('x', function (input, array, config) { 21656 config._d = new Date(toInt(input)); 21657 }); 21658 21659 //! moment.js 21660 21661 hooks.version = '2.27.0'; 21662 21663 setHookCallback(createLocal); 21664 21665 hooks.fn = proto; 21666 hooks.min = min; 21667 hooks.max = max; 21668 hooks.now = now; 21669 hooks.utc = createUTC; 21670 hooks.unix = createUnix; 21671 hooks.months = listMonths; 21672 hooks.isDate = isDate; 21673 hooks.locale = getSetGlobalLocale; 21674 hooks.invalid = createInvalid; 21675 hooks.duration = createDuration; 21676 hooks.isMoment = isMoment; 21677 hooks.weekdays = listWeekdays; 21678 hooks.parseZone = createInZone; 21679 hooks.localeData = getLocale; 21680 hooks.isDuration = isDuration; 21681 hooks.monthsShort = listMonthsShort; 21682 hooks.weekdaysMin = listWeekdaysMin; 21683 hooks.defineLocale = defineLocale; 21684 hooks.updateLocale = updateLocale; 21685 hooks.locales = listLocales; 21686 hooks.weekdaysShort = listWeekdaysShort; 21687 hooks.normalizeUnits = normalizeUnits; 21688 hooks.relativeTimeRounding = getSetRelativeTimeRounding; 21689 hooks.relativeTimeThreshold = getSetRelativeTimeThreshold; 21690 hooks.calendarFormat = getCalendarFormat; 21691 hooks.prototype = proto; 21692 21693 // currently HTML5 input type only supports 24-hour formats 21694 hooks.HTML5_FMT = { 21695 DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type="datetime-local" /> 21696 DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type="datetime-local" step="1" /> 21697 DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type="datetime-local" step="0.001" /> 21698 DATE: 'YYYY-MM-DD', // <input type="date" /> 21699 TIME: 'HH:mm', // <input type="time" /> 21700 TIME_SECONDS: 'HH:mm:ss', // <input type="time" step="1" /> 21701 TIME_MS: 'HH:mm:ss.SSS', // <input type="time" step="0.001" /> 21702 WEEK: 'GGGG-[W]WW', // <input type="week" /> 21703 MONTH: 'YYYY-MM', // <input type="month" /> 21704 }; 21705 21706 return hooks; 21707 21708}))); 21709 21710/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/module.js */ "../../node_modules/webpack/buildin/module.js")(module))) 21711 21712/***/ }), 21713
vendor: 2,776 bytes, lines 21714-21815
21714/***/ "../../node_modules/object-assign/index.js": 21715/*!************************************************************************************************************************************!*\ 21716 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/object-assign/index.js ***! 21717 \************************************************************************************************************************************/ 21718/*! no static exports found */ 21719/***/ (function(module, exports, __webpack_require__) { 21720 21721"use strict"; 21722/* 21723object-assign 21724(c) Sindre Sorhus 21725@license MIT 21726*/ 21727 21728 21729/* eslint-disable no-unused-vars */ 21730var getOwnPropertySymbols = Object.getOwnPropertySymbols; 21731var hasOwnProperty = Object.prototype.hasOwnProperty; 21732var propIsEnumerable = Object.prototype.propertyIsEnumerable; 21733 21734function toObject(val) { 21735 if (val === null || val === undefined) { 21736 throw new TypeError('Object.assign cannot be called with null or undefined'); 21737 } 21738 21739 return Object(val); 21740} 21741 21742function shouldUseNative() { 21743 try { 21744 if (!Object.assign) { 21745 return false; 21746 } 21747 21748 // Detect buggy property enumeration order in older V8 versions. 21749 21750 // https://bugs.chromium.org/p/v8/issues/detail?id=4118 21751 var test1 = new String('abc'); // eslint-disable-line no-new-wrappers 21752 test1[5] = 'de'; 21753 if (Object.getOwnPropertyNames(test1)[0] === '5') { 21754 return false; 21755 } 21756 21757 // https://bugs.chromium.org/p/v8/issues/detail?id=3056 21758 var test2 = {}; 21759 for (var i = 0; i < 10; i++) { 21760 test2['_' + String.fromCharCode(i)] = i; 21761 } 21762 var order2 = Object.getOwnPropertyNames(test2).map(function (n) { 21763 return test2[n]; 21764 }); 21765 if (order2.join('') !== '0123456789') { 21766 return false; 21767 } 21768 21769 // https://bugs.chromium.org/p/v8/issues/detail?id=3056 21770 var test3 = {}; 21771 'abcdefghijklmnopqrst'.split('').forEach(function (letter) { 21772 test3[letter] = letter; 21773 }); 21774 if (Object.keys(Object.assign({}, test3)).join('') !== 21775 'abcdefghijklmnopqrst') { 21776 return false; 21777 } 21778 21779 return true; 21780 } catch (err) { 21781 // We don't expect any of the above to throw, but better to be safe. 21782 return false; 21783 } 21784} 21785 21786module.exports = shouldUseNative() ? Object.assign : function (target, source) { 21787 var from; 21788 var to = toObject(target); 21789 var symbols; 21790 21791 for (var s = 1; s < arguments.length; s++) { 21792 from = Object(arguments[s]); 21793 21794 for (var key in from) { 21795 if (hasOwnProperty.call(from, key)) { 21796 to[key] = from[key]; 21797 } 21798 } 21799 21800 if (getOwnPropertySymbols) { 21801 symbols = getOwnPropertySymbols(from); 21802 for (var i = 0; i < symbols.length; i++) { 21803 if (propIsEnumerable.call(from, symbols[i])) { 21804 to[symbols[i]] = from[symbols[i]]; 21805 } 21806 } 21807 } 21808 } 21809 21810 return to; 21811}; 21812 21813 21814/***/ }), 21815
vendor: 4,463 bytes, lines 21816-21929
21816/***/ "../../node_modules/prop-types/checkPropTypes.js": 21817/*!******************************************************************************************************************************************!*\ 21818 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/prop-types/checkPropTypes.js ***! 21819 \******************************************************************************************************************************************/ 21820/*! no static exports found */ 21821/***/ (function(module, exports, __webpack_require__) { 21822 21823"use strict"; 21824/** 21825 * Copyright (c) 2013-present, Facebook, Inc. 21826 * 21827 * This source code is licensed under the MIT license found in the 21828 * LICENSE file in the root directory of this source tree. 21829 */ 21830 21831 21832 21833var printWarning = function() {}; 21834 21835if (true) { 21836 var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ "../../node_modules/prop-types/lib/ReactPropTypesSecret.js"); 21837 var loggedTypeFailures = {}; 21838 var has = Function.call.bind(Object.prototype.hasOwnProperty); 21839 21840 printWarning = function(text) { 21841 var message = 'Warning: ' + text; 21842 if (typeof console !== 'undefined') { 21843 console.error(message); 21844 } 21845 try { 21846 // --- Welcome to debugging React --- 21847 // This error was thrown as a convenience so that you can use this stack 21848 // to find the callsite that caused this warning to fire. 21849 throw new Error(message); 21850 } catch (x) {} 21851 }; 21852} 21853 21854/** 21855 * Assert that the values match with the type specs. 21856 * Error messages are memorized and will only be shown once. 21857 * 21858 * @param {object} typeSpecs Map of name to a ReactPropType 21859 * @param {object} values Runtime values that need to be type-checked 21860 * @param {string} location e.g. "prop", "context", "child context" 21861 * @param {string} componentName Name of the component for error messages. 21862 * @param {?Function} getStack Returns the component stack. 21863 * @private 21864 */ 21865function checkPropTypes(typeSpecs, values, location, componentName, getStack) { 21866 if (true) { 21867 for (var typeSpecName in typeSpecs) { 21868 if (has(typeSpecs, typeSpecName)) { 21869 var error; 21870 // Prop type validation may throw. In case they do, we don't want to 21871 // fail the render phase where it didn't fail before. So we log it. 21872 // After these have been cleaned up, we'll let them throw. 21873 try { 21874 // This is intentionally an invariant that gets caught. It's the same 21875 // behavior as without this statement except with a better message. 21876 if (typeof typeSpecs[typeSpecName] !== 'function') { 21877 var err = Error( 21878 (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 21879 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' 21880 ); 21881 err.name = 'Invariant Violation'; 21882 throw err; 21883 } 21884 error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret); 21885 } catch (ex) { 21886 error = ex; 21887 } 21888 if (error && !(error instanceof Error)) { 21889 printWarning( 21890 (componentName || 'React class') + ': type specification of ' + 21891 location + ' `' + typeSpecName + '` is invalid; the type checker ' + 21892 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' + 21893 'You may have forgotten to pass an argument to the type checker ' + 21894 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 21895 'shape all require an argument).' 21896 ); 21897 } 21898 if (error instanceof Error && !(error.message in loggedTypeFailures)) { 21899 // Only monitor this failure once because there tends to be a lot of the 21900 // same error. 21901 loggedTypeFailures[error.message] = true; 21902 21903 var stack = getStack ? getStack() : ''; 21904 21905 printWarning( 21906 'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '') 21907 ); 21908 } 21909 } 21910 } 21911 } 21912} 21913 21914/** 21915 * Resets warning cache when testing. 21916 * 21917 * @private 21918 */ 21919checkPropTypes.resetWarningCache = function() { 21920 if (true) { 21921 loggedTypeFailures = {}; 21922 } 21923} 21924 21925module.exports = checkPropTypes; 21926 21927 21928/***/ }), 21929
vendor: 968 bytes, lines 21930-21953
21930/***/ "../../node_modules/prop-types/lib/ReactPropTypesSecret.js": 21931/*!****************************************************************************************************************************************************!*\ 21932 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/prop-types/lib/ReactPropTypesSecret.js ***! 21933 \****************************************************************************************************************************************************/ 21934/*! no static exports found */ 21935/***/ (function(module, exports, __webpack_require__) { 21936 21937"use strict"; 21938/** 21939 * Copyright (c) 2013-present, Facebook, Inc. 21940 * 21941 * This source code is licensed under the MIT license found in the 21942 * LICENSE file in the root directory of this source tree. 21943 */ 21944 21945 21946 21947var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; 21948 21949module.exports = ReactPropTypesSecret; 21950 21951 21952/***/ }), 21953
vendor: 884,733 bytes, lines 21954-46977
21954/***/ "../../node_modules/react-dom/cjs/react-dom.development.js": 21955/*!****************************************************************************************************************************************************!*\ 21956 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/react-dom/cjs/react-dom.development.js ***! 21957 \****************************************************************************************************************************************************/ 21958/*! no static exports found */ 21959/***/ (function(module, exports, __webpack_require__) { 21960 21961"use strict"; 21962/** @license React v16.13.1 21963 * react-dom.development.js 21964 * 21965 * Copyright (c) Facebook, Inc. and its affiliates. 21966 * 21967 * This source code is licensed under the MIT license found in the 21968 * LICENSE file in the root directory of this source tree. 21969 */ 21970 21971 21972 21973 21974 21975if (true) { 21976 (function() { 21977'use strict'; 21978 21979var React = __webpack_require__(/*! react */ "../../node_modules/react/index.js"); 21980var _assign = __webpack_require__(/*! object-assign */ "../../node_modules/object-assign/index.js"); 21981var Scheduler = __webpack_require__(/*! scheduler */ "../../node_modules/scheduler/index.js"); 21982var checkPropTypes = __webpack_require__(/*! prop-types/checkPropTypes */ "../../node_modules/prop-types/checkPropTypes.js"); 21983var tracing = __webpack_require__(/*! scheduler/tracing */ "../../node_modules/scheduler/tracing.js"); 21984 21985var ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED; // Prevent newer renderers from RTE when used with older react package versions. 21986// Current owner and dispatcher used to share the same ref, 21987// but PR #14548 split them out to better support the react-debug-tools package. 21988 21989if (!ReactSharedInternals.hasOwnProperty('ReactCurrentDispatcher')) { 21990 ReactSharedInternals.ReactCurrentDispatcher = { 21991 current: null 21992 }; 21993} 21994 21995if (!ReactSharedInternals.hasOwnProperty('ReactCurrentBatchConfig')) { 21996 ReactSharedInternals.ReactCurrentBatchConfig = { 21997 suspense: null 21998 }; 21999} 22000 22001// by calls to these methods by a Babel plugin. 22002// 22003// In PROD (or in packages without access to React internals), 22004// they are left as they are instead. 22005 22006function warn(format) { 22007 { 22008 for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { 22009 args[_key - 1] = arguments[_key]; 22010 } 22011 22012 printWarning('warn', format, args); 22013 } 22014} 22015function error(format) { 22016 { 22017 for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { 22018 args[_key2 - 1] = arguments[_key2]; 22019 } 22020 22021 printWarning('error', format, args); 22022 } 22023} 22024 22025function printWarning(level, format, args) { 22026 // When changing this logic, you might want to also 22027 // update consoleWithStackDev.www.js as well. 22028 { 22029 var hasExistingStack = args.length > 0 && typeof args[args.length - 1] === 'string' && args[args.length - 1].indexOf('\n in') === 0; 22030 22031 if (!hasExistingStack) { 22032 var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame; 22033 var stack = ReactDebugCurrentFrame.getStackAddendum(); 22034 22035 if (stack !== '') { 22036 format += '%s'; 22037 args = args.concat([stack]); 22038 } 22039 } 22040 22041 var argsWithFormat = args.map(function (item) { 22042 return '' + item; 22043 }); // Careful: RN currently depends on this prefix 22044 22045 argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it 22046 // breaks IE9: https://github.com/facebook/react/issues/13610 22047 // eslint-disable-next-line react-internal/no-production-logging 22048 22049 Function.prototype.apply.call(console[level], console, argsWithFormat); 22050 22051 try { 22052 // --- Welcome to debugging React --- 22053 // This error was thrown as a convenience so that you can use this stack 22054 // to find the callsite that caused this warning to fire. 22055 var argIndex = 0; 22056 var message = 'Warning: ' + format.replace(/%s/g, function () { 22057 return args[argIndex++]; 22058 }); 22059 throw new Error(message); 22060 } catch (x) {} 22061 } 22062} 22063 22064if (!React) { 22065 { 22066 throw Error( "ReactDOM was loaded before React. Make sure you load the React package before loading ReactDOM." ); 22067 } 22068} 22069 22070var invokeGuardedCallbackImpl = function (name, func, context, a, b, c, d, e, f) { 22071 var funcArgs = Array.prototype.slice.call(arguments, 3); 22072 22073 try { 22074 func.apply(context, funcArgs); 22075 } catch (error) { 22076 this.onError(error); 22077 } 22078}; 22079 22080{ 22081 // In DEV mode, we swap out invokeGuardedCallback for a special version 22082 // that plays more nicely with the browser's DevTools. The idea is to preserve 22083 // "Pause on exceptions" behavior. Because React wraps all user-provided 22084 // functions in invokeGuardedCallback, and the production version of 22085 // invokeGuardedCallback uses a try-catch, all user exceptions are treated 22086 // like caught exceptions, and the DevTools won't pause unless the developer 22087 // takes the extra step of enabling pause on caught exceptions. This is 22088 // unintuitive, though, because even though React has caught the error, from 22089 // the developer's perspective, the error is uncaught. 22090 // 22091 // To preserve the expected "Pause on exceptions" behavior, we don't use a 22092 // try-catch in DEV. Instead, we synchronously dispatch a fake event to a fake 22093 // DOM node, and call the user-provided callback from inside an event handler 22094 // for that fake event. If the callback throws, the error is "captured" using 22095 // a global event handler. But because the error happens in a different 22096 // event loop context, it does not interrupt the normal program flow. 22097 // Effectively, this gives us try-catch behavior without actually using 22098 // try-catch. Neat! 22099 // Check that the browser supports the APIs we need to implement our special 22100 // DEV version of invokeGuardedCallback 22101 if (typeof window !== 'undefined' && typeof window.dispatchEvent === 'function' && typeof document !== 'undefined' && typeof document.createEvent === 'function') { 22102 var fakeNode = document.createElement('react'); 22103 22104 var invokeGuardedCallbackDev = function (name, func, context, a, b, c, d, e, f) { 22105 // If document doesn't exist we know for sure we will crash in this method 22106 // when we call document.createEvent(). However this can cause confusing 22107 // errors: https://github.com/facebookincubator/create-react-app/issues/3482 22108 // So we preemptively throw with a better message instead. 22109 if (!(typeof document !== 'undefined')) { 22110 { 22111 throw Error( "The `document` global was defined when React was initialized, but is not defined anymore. This can happen in a test environment if a component schedules an update from an asynchronous callback, but the test has already finished running. To solve this, you can either unmount the component at the end of your test (and ensure that any asynchronous operations get canceled in `componentWillUnmount`), or you can change the test itself to be asynchronous." ); 22112 } 22113 } 22114 22115 var evt = document.createEvent('Event'); // Keeps track of whether the user-provided callback threw an error. We 22116 // set this to true at the beginning, then set it to false right after 22117 // calling the function. If the function errors, `didError` will never be 22118 // set to false. This strategy works even if the browser is flaky and 22119 // fails to call our global error handler, because it doesn't rely on 22120 // the error event at all. 22121 22122 var didError = true; // Keeps track of the value of window.event so that we can reset it 22123 // during the callback to let user code access window.event in the 22124 // browsers that support it. 22125 22126 var windowEvent = window.event; // Keeps track of the descriptor of window.event to restore it after event 22127 // dispatching: https://github.com/facebook/react/issues/13688 22128 22129 var windowEventDescriptor = Object.getOwnPropertyDescriptor(window, 'event'); // Create an event handler for our fake event. We will synchronously 22130 // dispatch our fake event using `dispatchEvent`. Inside the handler, we 22131 // call the user-provided callback. 22132 22133 var funcArgs = Array.prototype.slice.call(arguments, 3); 22134 22135 function callCallback() { 22136 // We immediately remove the callback from event listeners so that 22137 // nested `invokeGuardedCallback` calls do not clash. Otherwise, a 22138 // nested call would trigger the fake event handlers of any call higher 22139 // in the stack. 22140 fakeNode.removeEventListener(evtType, callCallback, false); // We check for window.hasOwnProperty('event') to prevent the 22141 // window.event assignment in both IE <= 10 as they throw an error 22142 // "Member not found" in strict mode, and in Firefox which does not 22143 // support window.event. 22144 22145 if (typeof window.event !== 'undefined' && window.hasOwnProperty('event')) { 22146 window.event = windowEvent; 22147 } 22148 22149 func.apply(context, funcArgs); 22150 didError = false; 22151 } // Create a global error event handler. We use this to capture the value 22152 // that was thrown. It's possible that this error handler will fire more 22153 // than once; for example, if non-React code also calls `dispatchEvent` 22154 // and a handler for that event throws. We should be resilient to most of 22155 // those cases. Even if our error event handler fires more than once, the 22156 // last error event is always used. If the callback actually does error, 22157 // we know that the last error event is the correct one, because it's not 22158 // possible for anything else to have happened in between our callback 22159 // erroring and the code that follows the `dispatchEvent` call below. If 22160 // the callback doesn't error, but the error event was fired, we know to 22161 // ignore it because `didError` will be false, as described above. 22162 22163 22164 var error; // Use this to track whether the error event is ever called. 22165 22166 var didSetError = false; 22167 var isCrossOriginError = false; 22168 22169 function handleWindowError(event) { 22170 error = event.error; 22171 didSetError = true; 22172 22173 if (error === null && event.colno === 0 && event.lineno === 0) { 22174 isCrossOriginError = true; 22175 } 22176 22177 if (event.defaultPrevented) { 22178 // Some other error handler has prevented default. 22179 // Browsers silence the error report if this happens. 22180 // We'll remember this to later decide whether to log it or not. 22181 if (error != null && typeof error === 'object') { 22182 try { 22183 error._suppressLogging = true; 22184 } catch (inner) {// Ignore. 22185 } 22186 } 22187 } 22188 } // Create a fake event type. 22189 22190 22191 var evtType = "react-" + (name ? name : 'invokeguardedcallback'); // Attach our event handlers 22192 22193 window.addEventListener('error', handleWindowError); 22194 fakeNode.addEventListener(evtType, callCallback, false); // Synchronously dispatch our fake event. If the user-provided function 22195 // errors, it will trigger our global error handler. 22196 22197 evt.initEvent(evtType, false, false); 22198 fakeNode.dispatchEvent(evt); 22199 22200 if (windowEventDescriptor) { 22201 Object.defineProperty(window, 'event', windowEventDescriptor); 22202 } 22203 22204 if (didError) { 22205 if (!didSetError) { 22206 // The callback errored, but the error event never fired. 22207 error = new Error('An error was thrown inside one of your components, but React ' + "doesn't know what it was. This is likely due to browser " + 'flakiness. React does its best to preserve the "Pause on ' + 'exceptions" behavior of the DevTools, which requires some ' + "DEV-mode only tricks. It's possible that these don't work in " + 'your browser. Try triggering the error in production mode, ' + 'or switching to a modern browser. If you suspect that this is ' + 'actually an issue with React, please file an issue.'); 22208 } else if (isCrossOriginError) { 22209 error = new Error("A cross-origin error was thrown. React doesn't have access to " + 'the actual error object in development. ' + 'See https://fb.me/react-crossorigin-error for more information.'); 22210 } 22211 22212 this.onError(error); 22213 } // Remove our event listeners 22214 22215 22216 window.removeEventListener('error', handleWindowError); 22217 }; 22218 22219 invokeGuardedCallbackImpl = invokeGuardedCallbackDev; 22220 } 22221} 22222 22223var invokeGuardedCallbackImpl$1 = invokeGuardedCallbackImpl; 22224 22225var hasError = false; 22226var caughtError = null; // Used by event system to capture/rethrow the first error. 22227 22228var hasRethrowError = false; 22229var rethrowError = null; 22230var reporter = { 22231 onError: function (error) { 22232 hasError = true; 22233 caughtError = error; 22234 } 22235}; 22236/** 22237 * Call a function while guarding against errors that happens within it. 22238 * Returns an error if it throws, otherwise null. 22239 * 22240 * In production, this is implemented using a try-catch. The reason we don't 22241 * use a try-catch directly is so that we can swap out a different 22242 * implementation in DEV mode. 22243 * 22244 * @param {String} name of the guard to use for logging or debugging 22245 * @param {Function} func The function to invoke 22246 * @param {*} context The context to use when calling the function 22247 * @param {...*} args Arguments for function 22248 */ 22249 22250function invokeGuardedCallback(name, func, context, a, b, c, d, e, f) { 22251 hasError = false; 22252 caughtError = null; 22253 invokeGuardedCallbackImpl$1.apply(reporter, arguments); 22254} 22255/** 22256 * Same as invokeGuardedCallback, but instead of returning an error, it stores 22257 * it in a global so it can be rethrown by `rethrowCaughtError` later. 22258 * TODO: See if caughtError and rethrowError can be unified. 22259 * 22260 * @param {String} name of the guard to use for logging or debugging 22261 * @param {Function} func The function to invoke 22262 * @param {*} context The context to use when calling the function 22263 * @param {...*} args Arguments for function 22264 */ 22265 22266function invokeGuardedCallbackAndCatchFirstError(name, func, context, a, b, c, d, e, f) { 22267 invokeGuardedCallback.apply(this, arguments); 22268 22269 if (hasError) { 22270 var error = clearCaughtError(); 22271 22272 if (!hasRethrowError) { 22273 hasRethrowError = true; 22274 rethrowError = error; 22275 } 22276 } 22277} 22278/** 22279 * During execution of guarded functions we will capture the first error which 22280 * we will rethrow to be handled by the top level error handler. 22281 */ 22282 22283function rethrowCaughtError() { 22284 if (hasRethrowError) { 22285 var error = rethrowError; 22286 hasRethrowError = false; 22287 rethrowError = null; 22288 throw error; 22289 } 22290} 22291function hasCaughtError() { 22292 return hasError; 22293} 22294function clearCaughtError() { 22295 if (hasError) { 22296 var error = caughtError; 22297 hasError = false; 22298 caughtError = null; 22299 return error; 22300 } else { 22301 { 22302 { 22303 throw Error( "clearCaughtError was called but no error was captured. This error is likely caused by a bug in React. Please file an issue." ); 22304 } 22305 } 22306 } 22307} 22308 22309var getFiberCurrentPropsFromNode = null; 22310var getInstanceFromNode = null; 22311var getNodeFromInstance = null; 22312function setComponentTree(getFiberCurrentPropsFromNodeImpl, getInstanceFromNodeImpl, getNodeFromInstanceImpl) { 22313 getFiberCurrentPropsFromNode = getFiberCurrentPropsFromNodeImpl; 22314 getInstanceFromNode = getInstanceFromNodeImpl; 22315 getNodeFromInstance = getNodeFromInstanceImpl; 22316 22317 { 22318 if (!getNodeFromInstance || !getInstanceFromNode) { 22319 error('EventPluginUtils.setComponentTree(...): Injected ' + 'module is missing getNodeFromInstance or getInstanceFromNode.'); 22320 } 22321 } 22322} 22323var validateEventDispatches; 22324 22325{ 22326 validateEventDispatches = function (event) { 22327 var dispatchListeners = event._dispatchListeners; 22328 var dispatchInstances = event._dispatchInstances; 22329 var listenersIsArr = Array.isArray(dispatchListeners); 22330 var listenersLen = listenersIsArr ? dispatchListeners.length : dispatchListeners ? 1 : 0; 22331 var instancesIsArr = Array.isArray(dispatchInstances); 22332 var instancesLen = instancesIsArr ? dispatchInstances.length : dispatchInstances ? 1 : 0; 22333 22334 if (instancesIsArr !== listenersIsArr || instancesLen !== listenersLen) { 22335 error('EventPluginUtils: Invalid `event`.'); 22336 } 22337 }; 22338} 22339/** 22340 * Dispatch the event to the listener. 22341 * @param {SyntheticEvent} event SyntheticEvent to handle 22342 * @param {function} listener Application-level callback 22343 * @param {*} inst Internal component instance 22344 */ 22345 22346 22347function executeDispatch(event, listener, inst) { 22348 var type = event.type || 'unknown-event'; 22349 event.currentTarget = getNodeFromInstance(inst); 22350 invokeGuardedCallbackAndCatchFirstError(type, listener, undefined, event); 22351 event.currentTarget = null; 22352} 22353/** 22354 * Standard/simple iteration through an event's collected dispatches. 22355 */ 22356 22357function executeDispatchesInOrder(event) { 22358 var dispatchListeners = event._dispatchListeners; 22359 var dispatchInstances = event._dispatchInstances; 22360 22361 { 22362 validateEventDispatches(event); 22363 } 22364 22365 if (Array.isArray(dispatchListeners)) { 22366 for (var i = 0; i < dispatchListeners.length; i++) { 22367 if (event.isPropagationStopped()) { 22368 break; 22369 } // Listeners and Instances are two parallel arrays that are always in sync. 22370 22371 22372 executeDispatch(event, dispatchListeners[i], dispatchInstances[i]); 22373 } 22374 } else if (dispatchListeners) { 22375 executeDispatch(event, dispatchListeners, dispatchInstances); 22376 } 22377 22378 event._dispatchListeners = null; 22379 event._dispatchInstances = null; 22380} 22381 22382var FunctionComponent = 0; 22383var ClassComponent = 1; 22384var IndeterminateComponent = 2; // Before we know whether it is function or class 22385 22386var HostRoot = 3; // Root of a host tree. Could be nested inside another node. 22387 22388var HostPortal = 4; // A subtree. Could be an entry point to a different renderer. 22389 22390var HostComponent = 5; 22391var HostText = 6; 22392var Fragment = 7; 22393var Mode = 8; 22394var ContextConsumer = 9; 22395var ContextProvider = 10; 22396var ForwardRef = 11; 22397var Profiler = 12; 22398var SuspenseComponent = 13; 22399var MemoComponent = 14; 22400var SimpleMemoComponent = 15; 22401var LazyComponent = 16; 22402var IncompleteClassComponent = 17; 22403var DehydratedFragment = 18; 22404var SuspenseListComponent = 19; 22405var FundamentalComponent = 20; 22406var ScopeComponent = 21; 22407var Block = 22; 22408 22409/** 22410 * Injectable ordering of event plugins. 22411 */ 22412var eventPluginOrder = null; 22413/** 22414 * Injectable mapping from names to event plugin modules. 22415 */ 22416 22417var namesToPlugins = {}; 22418/** 22419 * Recomputes the plugin list using the injected plugins and plugin ordering. 22420 * 22421 * @private 22422 */ 22423 22424function recomputePluginOrdering() { 22425 if (!eventPluginOrder) { 22426 // Wait until an `eventPluginOrder` is injected. 22427 return; 22428 } 22429 22430 for (var pluginName in namesToPlugins) { 22431 var pluginModule = namesToPlugins[pluginName]; 22432 var pluginIndex = eventPluginOrder.indexOf(pluginName); 22433 22434 if (!(pluginIndex > -1)) { 22435 { 22436 throw Error( "EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `" + pluginName + "`." ); 22437 } 22438 } 22439 22440 if (plugins[pluginIndex]) { 22441 continue; 22442 } 22443 22444 if (!pluginModule.extractEvents) { 22445 { 22446 throw Error( "EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `" + pluginName + "` does not." ); 22447 } 22448 } 22449 22450 plugins[pluginIndex] = pluginModule; 22451 var publishedEvents = pluginModule.eventTypes; 22452 22453 for (var eventName in publishedEvents) { 22454 if (!publishEventForPlugin(publishedEvents[eventName], pluginModule, eventName)) { 22455 { 22456 throw Error( "EventPluginRegistry: Failed to publish event `" + eventName + "` for plugin `" + pluginName + "`." ); 22457 } 22458 } 22459 } 22460 } 22461} 22462/** 22463 * Publishes an event so that it can be dispatched by the supplied plugin. 22464 * 22465 * @param {object} dispatchConfig Dispatch configuration for the event. 22466 * @param {object} PluginModule Plugin publishing the event. 22467 * @return {boolean} True if the event was successfully published. 22468 * @private 22469 */ 22470 22471 22472function publishEventForPlugin(dispatchConfig, pluginModule, eventName) { 22473 if (!!eventNameDispatchConfigs.hasOwnProperty(eventName)) { 22474 { 22475 throw Error( "EventPluginRegistry: More than one plugin attempted to publish the same event name, `" + eventName + "`." ); 22476 } 22477 } 22478 22479 eventNameDispatchConfigs[eventName] = dispatchConfig; 22480 var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames; 22481 22482 if (phasedRegistrationNames) { 22483 for (var phaseName in phasedRegistrationNames) { 22484 if (phasedRegistrationNames.hasOwnProperty(phaseName)) { 22485 var phasedRegistrationName = phasedRegistrationNames[phaseName]; 22486 publishRegistrationName(phasedRegistrationName, pluginModule, eventName); 22487 } 22488 } 22489 22490 return true; 22491 } else if (dispatchConfig.registrationName) { 22492 publishRegistrationName(dispatchConfig.registrationName, pluginModule, eventName); 22493 return true; 22494 } 22495 22496 return false; 22497} 22498/** 22499 * Publishes a registration name that is used to identify dispatched events. 22500 * 22501 * @param {string} registrationName Registration name to add. 22502 * @param {object} PluginModule Plugin publishing the event. 22503 * @private 22504 */ 22505 22506 22507function publishRegistrationName(registrationName, pluginModule, eventName) { 22508 if (!!registrationNameModules[registrationName]) { 22509 { 22510 throw Error( "EventPluginRegistry: More than one plugin attempted to publish the same registration name, `" + registrationName + "`." ); 22511 } 22512 } 22513 22514 registrationNameModules[registrationName] = pluginModule; 22515 registrationNameDependencies[registrationName] = pluginModule.eventTypes[eventName].dependencies; 22516 22517 { 22518 var lowerCasedName = registrationName.toLowerCase(); 22519 possibleRegistrationNames[lowerCasedName] = registrationName; 22520 22521 if (registrationName === 'onDoubleClick') { 22522 possibleRegistrationNames.ondblclick = registrationName; 22523 } 22524 } 22525} 22526/** 22527 * Registers plugins so that they can extract and dispatch events. 22528 */ 22529 22530/** 22531 * Ordered list of injected plugins. 22532 */ 22533 22534 22535var plugins = []; 22536/** 22537 * Mapping from event name to dispatch config 22538 */ 22539 22540var eventNameDispatchConfigs = {}; 22541/** 22542 * Mapping from registration name to plugin module 22543 */ 22544 22545var registrationNameModules = {}; 22546/** 22547 * Mapping from registration name to event name 22548 */ 22549 22550var registrationNameDependencies = {}; 22551/** 22552 * Mapping from lowercase registration names to the properly cased version, 22553 * used to warn in the case of missing event handlers. Available 22554 * only in true. 22555 * @type {Object} 22556 */ 22557 22558var possibleRegistrationNames = {} ; // Trust the developer to only use possibleRegistrationNames in true 22559 22560/** 22561 * Injects an ordering of plugins (by plugin name). This allows the ordering 22562 * to be decoupled from injection of the actual plugins so that ordering is 22563 * always deterministic regardless of packaging, on-the-fly injection, etc. 22564 * 22565 * @param {array} InjectedEventPluginOrder 22566 * @internal 22567 */ 22568 22569function injectEventPluginOrder(injectedEventPluginOrder) { 22570 if (!!eventPluginOrder) { 22571 { 22572 throw Error( "EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React." ); 22573 } 22574 } // Clone the ordering so it cannot be dynamically mutated. 22575 22576 22577 eventPluginOrder = Array.prototype.slice.call(injectedEventPluginOrder); 22578 recomputePluginOrdering(); 22579} 22580/** 22581 * Injects plugins to be used by plugin event system. The plugin names must be 22582 * in the ordering injected by `injectEventPluginOrder`. 22583 * 22584 * Plugins can be injected as part of page initialization or on-the-fly. 22585 * 22586 * @param {object} injectedNamesToPlugins Map from names to plugin modules. 22587 * @internal 22588 */ 22589 22590function injectEventPluginsByName(injectedNamesToPlugins) { 22591 var isOrderingDirty = false; 22592 22593 for (var pluginName in injectedNamesToPlugins) { 22594 if (!injectedNamesToPlugins.hasOwnProperty(pluginName)) { 22595 continue; 22596 } 22597 22598 var pluginModule = injectedNamesToPlugins[pluginName]; 22599 22600 if (!namesToPlugins.hasOwnProperty(pluginName) || namesToPlugins[pluginName] !== pluginModule) { 22601 if (!!namesToPlugins[pluginName]) { 22602 { 22603 throw Error( "EventPluginRegistry: Cannot inject two different event plugins using the same name, `" + pluginName + "`." ); 22604 } 22605 } 22606 22607 namesToPlugins[pluginName] = pluginModule; 22608 isOrderingDirty = true; 22609 } 22610 } 22611 22612 if (isOrderingDirty) { 22613 recomputePluginOrdering(); 22614 } 22615} 22616 22617var canUseDOM = !!(typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined'); 22618 22619var PLUGIN_EVENT_SYSTEM = 1; 22620var IS_REPLAYED = 1 << 5; 22621var IS_FIRST_ANCESTOR = 1 << 6; 22622 22623var restoreImpl = null; 22624var restoreTarget = null; 22625var restoreQueue = null; 22626 22627function restoreStateOfTarget(target) { 22628 // We perform this translation at the end of the event loop so that we 22629 // always receive the correct fiber here 22630 var internalInstance = getInstanceFromNode(target); 22631 22632 if (!internalInstance) { 22633 // Unmounted 22634 return; 22635 } 22636 22637 if (!(typeof restoreImpl === 'function')) { 22638 { 22639 throw Error( "setRestoreImplementation() needs to be called to handle a target for controlled events. This error is likely caused by a bug in React. Please file an issue." ); 22640 } 22641 } 22642 22643 var stateNode = internalInstance.stateNode; // Guard against Fiber being unmounted. 22644 22645 if (stateNode) { 22646 var _props = getFiberCurrentPropsFromNode(stateNode); 22647 22648 restoreImpl(internalInstance.stateNode, internalInstance.type, _props); 22649 } 22650} 22651 22652function setRestoreImplementation(impl) { 22653 restoreImpl = impl; 22654} 22655function enqueueStateRestore(target) { 22656 if (restoreTarget) { 22657 if (restoreQueue) { 22658 restoreQueue.push(target); 22659 } else { 22660 restoreQueue = [target]; 22661 } 22662 } else { 22663 restoreTarget = target; 22664 } 22665} 22666function needsStateRestore() { 22667 return restoreTarget !== null || restoreQueue !== null; 22668} 22669function restoreStateIfNeeded() { 22670 if (!restoreTarget) { 22671 return; 22672 } 22673 22674 var target = restoreTarget; 22675 var queuedTargets = restoreQueue; 22676 restoreTarget = null; 22677 restoreQueue = null; 22678 restoreStateOfTarget(target); 22679 22680 if (queuedTargets) { 22681 for (var i = 0; i < queuedTargets.length; i++) { 22682 restoreStateOfTarget(queuedTargets[i]); 22683 } 22684 } 22685} 22686 22687var enableProfilerTimer = true; // Trace which interactions trigger each commit. 22688 22689var enableDeprecatedFlareAPI = false; // Experimental Host Component support. 22690 22691var enableFundamentalAPI = false; // Experimental Scope support. 22692var warnAboutStringRefs = false; 22693 22694// the renderer. Such as when we're dispatching events or if third party 22695// libraries need to call batchedUpdates. Eventually, this API will go away when 22696// everything is batched by default. We'll then have a similar API to opt-out of 22697// scheduled work and instead do synchronous work. 22698// Defaults 22699 22700var batchedUpdatesImpl = function (fn, bookkeeping) { 22701 return fn(bookkeeping); 22702}; 22703 22704var discreteUpdatesImpl = function (fn, a, b, c, d) { 22705 return fn(a, b, c, d); 22706}; 22707 22708var flushDiscreteUpdatesImpl = function () {}; 22709 22710var batchedEventUpdatesImpl = batchedUpdatesImpl; 22711var isInsideEventHandler = false; 22712var isBatchingEventUpdates = false; 22713 22714function finishEventHandler() { 22715 // Here we wait until all updates have propagated, which is important 22716 // when using controlled components within layers: 22717 // https://github.com/facebook/react/issues/1698 22718 // Then we restore state of any controlled component. 22719 var controlledComponentsHavePendingUpdates = needsStateRestore(); 22720 22721 if (controlledComponentsHavePendingUpdates) { 22722 // If a controlled event was fired, we may need to restore the state of 22723 // the DOM node back to the controlled value. This is necessary when React 22724 // bails out of the update without touching the DOM. 22725 flushDiscreteUpdatesImpl(); 22726 restoreStateIfNeeded(); 22727 } 22728} 22729 22730function batchedUpdates(fn, bookkeeping) { 22731 if (isInsideEventHandler) { 22732 // If we are currently inside another batch, we need to wait until it 22733 // fully completes before restoring state. 22734 return fn(bookkeeping); 22735 } 22736 22737 isInsideEventHandler = true; 22738 22739 try { 22740 return batchedUpdatesImpl(fn, bookkeeping); 22741 } finally { 22742 isInsideEventHandler = false; 22743 finishEventHandler(); 22744 } 22745} 22746function batchedEventUpdates(fn, a, b) { 22747 if (isBatchingEventUpdates) { 22748 // If we are currently inside another batch, we need to wait until it 22749 // fully completes before restoring state. 22750 return fn(a, b); 22751 } 22752 22753 isBatchingEventUpdates = true; 22754 22755 try { 22756 return batchedEventUpdatesImpl(fn, a, b); 22757 } finally { 22758 isBatchingEventUpdates = false; 22759 finishEventHandler(); 22760 } 22761} // This is for the React Flare event system 22762function discreteUpdates(fn, a, b, c, d) { 22763 var prevIsInsideEventHandler = isInsideEventHandler; 22764 isInsideEventHandler = true; 22765 22766 try { 22767 return discreteUpdatesImpl(fn, a, b, c, d); 22768 } finally { 22769 isInsideEventHandler = prevIsInsideEventHandler; 22770 22771 if (!isInsideEventHandler) { 22772 finishEventHandler(); 22773 } 22774 } 22775} 22776function flushDiscreteUpdatesIfNeeded(timeStamp) { 22777 // event.timeStamp isn't overly reliable due to inconsistencies in 22778 // how different browsers have historically provided the time stamp. 22779 // Some browsers provide high-resolution time stamps for all events, 22780 // some provide low-resolution time stamps for all events. FF < 52 22781 // even mixes both time stamps together. Some browsers even report 22782 // negative time stamps or time stamps that are 0 (iOS9) in some cases. 22783 // Given we are only comparing two time stamps with equality (!==), 22784 // we are safe from the resolution differences. If the time stamp is 0 22785 // we bail-out of preventing the flush, which can affect semantics, 22786 // such as if an earlier flush removes or adds event listeners that 22787 // are fired in the subsequent flush. However, this is the same 22788 // behaviour as we had before this change, so the risks are low. 22789 if (!isInsideEventHandler && (!enableDeprecatedFlareAPI )) { 22790 flushDiscreteUpdatesImpl(); 22791 } 22792} 22793function setBatchingImplementation(_batchedUpdatesImpl, _discreteUpdatesImpl, _flushDiscreteUpdatesImpl, _batchedEventUpdatesImpl) { 22794 batchedUpdatesImpl = _batchedUpdatesImpl; 22795 discreteUpdatesImpl = _discreteUpdatesImpl; 22796 flushDiscreteUpdatesImpl = _flushDiscreteUpdatesImpl; 22797 batchedEventUpdatesImpl = _batchedEventUpdatesImpl; 22798} 22799 22800var DiscreteEvent = 0; 22801var UserBlockingEvent = 1; 22802var ContinuousEvent = 2; 22803 22804// A reserved attribute. 22805// It is handled by React separately and shouldn't be written to the DOM. 22806var RESERVED = 0; // A simple string attribute. 22807// Attributes that aren't in the whitelist are presumed to have this type. 22808 22809var STRING = 1; // A string attribute that accepts booleans in React. In HTML, these are called 22810// "enumerated" attributes with "true" and "false" as possible values. 22811// When true, it should be set to a "true" string. 22812// When false, it should be set to a "false" string. 22813 22814var BOOLEANISH_STRING = 2; // A real boolean attribute. 22815// When true, it should be present (set either to an empty string or its name). 22816// When false, it should be omitted. 22817 22818var BOOLEAN = 3; // An attribute that can be used as a flag as well as with a value. 22819// When true, it should be present (set either to an empty string or its name). 22820// When false, it should be omitted. 22821// For any other value, should be present with that value. 22822 22823var OVERLOADED_BOOLEAN = 4; // An attribute that must be numeric or parse as a numeric. 22824// When falsy, it should be removed. 22825 22826var NUMERIC = 5; // An attribute that must be positive numeric or parse as a positive numeric. 22827// When falsy, it should be removed. 22828 22829var POSITIVE_NUMERIC = 6; 22830 22831/* eslint-disable max-len */ 22832var ATTRIBUTE_NAME_START_CHAR = ":A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD"; 22833/* eslint-enable max-len */ 22834 22835var ATTRIBUTE_NAME_CHAR = ATTRIBUTE_NAME_START_CHAR + "\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040"; 22836var ROOT_ATTRIBUTE_NAME = 'data-reactroot'; 22837var VALID_ATTRIBUTE_NAME_REGEX = new RegExp('^[' + ATTRIBUTE_NAME_START_CHAR + '][' + ATTRIBUTE_NAME_CHAR + ']*$'); 22838var hasOwnProperty = Object.prototype.hasOwnProperty; 22839var illegalAttributeNameCache = {}; 22840var validatedAttributeNameCache = {}; 22841function isAttributeNameSafe(attributeName) { 22842 if (hasOwnProperty.call(validatedAttributeNameCache, attributeName)) { 22843 return true; 22844 } 22845 22846 if (hasOwnProperty.call(illegalAttributeNameCache, attributeName)) { 22847 return false; 22848 } 22849 22850 if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) { 22851 validatedAttributeNameCache[attributeName] = true; 22852 return true; 22853 } 22854 22855 illegalAttributeNameCache[attributeName] = true; 22856 22857 { 22858 error('Invalid attribute name: `%s`', attributeName); 22859 } 22860 22861 return false; 22862} 22863function shouldIgnoreAttribute(name, propertyInfo, isCustomComponentTag) { 22864 if (propertyInfo !== null) { 22865 return propertyInfo.type === RESERVED; 22866 } 22867 22868 if (isCustomComponentTag) { 22869 return false; 22870 } 22871 22872 if (name.length > 2 && (name[0] === 'o' || name[0] === 'O') && (name[1] === 'n' || name[1] === 'N')) { 22873 return true; 22874 } 22875 22876 return false; 22877} 22878function shouldRemoveAttributeWithWarning(name, value, propertyInfo, isCustomComponentTag) { 22879 if (propertyInfo !== null && propertyInfo.type === RESERVED) { 22880 return false; 22881 } 22882 22883 switch (typeof value) { 22884 case 'function': // $FlowIssue symbol is perfectly valid here 22885 22886 case 'symbol': 22887 // eslint-disable-line 22888 return true; 22889 22890 case 'boolean': 22891 { 22892 if (isCustomComponentTag) { 22893 return false; 22894 } 22895 22896 if (propertyInfo !== null) { 22897 return !propertyInfo.acceptsBooleans; 22898 } else { 22899 var prefix = name.toLowerCase().slice(0, 5); 22900 return prefix !== 'data-' && prefix !== 'aria-'; 22901 } 22902 } 22903 22904 default: 22905 return false; 22906 } 22907} 22908function shouldRemoveAttribute(name, value, propertyInfo, isCustomComponentTag) { 22909 if (value === null || typeof value === 'undefined') { 22910 return true; 22911 } 22912 22913 if (shouldRemoveAttributeWithWarning(name, value, propertyInfo, isCustomComponentTag)) { 22914 return true; 22915 } 22916 22917 if (isCustomComponentTag) { 22918 return false; 22919 } 22920 22921 if (propertyInfo !== null) { 22922 switch (propertyInfo.type) { 22923 case BOOLEAN: 22924 return !value; 22925 22926 case OVERLOADED_BOOLEAN: 22927 return value === false; 22928 22929 case NUMERIC: 22930 return isNaN(value); 22931 22932 case POSITIVE_NUMERIC: 22933 return isNaN(value) || value < 1; 22934 } 22935 } 22936 22937 return false; 22938} 22939function getPropertyInfo(name) { 22940 return properties.hasOwnProperty(name) ? properties[name] : null; 22941} 22942 22943function PropertyInfoRecord(name, type, mustUseProperty, attributeName, attributeNamespace, sanitizeURL) { 22944 this.acceptsBooleans = type === BOOLEANISH_STRING || type === BOOLEAN || type === OVERLOADED_BOOLEAN; 22945 this.attributeName = attributeName; 22946 this.attributeNamespace = attributeNamespace; 22947 this.mustUseProperty = mustUseProperty; 22948 this.propertyName = name; 22949 this.type = type; 22950 this.sanitizeURL = sanitizeURL; 22951} // When adding attributes to this list, be sure to also add them to 22952// the `possibleStandardNames` module to ensure casing and incorrect 22953// name warnings. 22954 22955 22956var properties = {}; // These props are reserved by React. They shouldn't be written to the DOM. 22957 22958var reservedProps = ['children', 'dangerouslySetInnerHTML', // TODO: This prevents the assignment of defaultValue to regular 22959// elements (not just inputs). Now that ReactDOMInput assigns to the 22960// defaultValue property -- do we need this? 22961'defaultValue', 'defaultChecked', 'innerHTML', 'suppressContentEditableWarning', 'suppressHydrationWarning', 'style']; 22962 22963reservedProps.forEach(function (name) { 22964 properties[name] = new PropertyInfoRecord(name, RESERVED, false, // mustUseProperty 22965 name, // attributeName 22966 null, // attributeNamespace 22967 false); 22968}); // A few React string attributes have a different name. 22969// This is a mapping from React prop names to the attribute names. 22970 22971[['acceptCharset', 'accept-charset'], ['className', 'class'], ['htmlFor', 'for'], ['httpEquiv', 'http-equiv']].forEach(function (_ref) { 22972 var name = _ref[0], 22973 attributeName = _ref[1]; 22974 properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty 22975 attributeName, // attributeName 22976 null, // attributeNamespace 22977 false); 22978}); // These are "enumerated" HTML attributes that accept "true" and "false". 22979// In React, we let users pass `true` and `false` even though technically 22980// these aren't boolean attributes (they are coerced to strings). 22981 22982['contentEditable', 'draggable', 'spellCheck', 'value'].forEach(function (name) { 22983 properties[name] = new PropertyInfoRecord(name, BOOLEANISH_STRING, false, // mustUseProperty 22984 name.toLowerCase(), // attributeName 22985 null, // attributeNamespace 22986 false); 22987}); // These are "enumerated" SVG attributes that accept "true" and "false". 22988// In React, we let users pass `true` and `false` even though technically 22989// these aren't boolean attributes (they are coerced to strings). 22990// Since these are SVG attributes, their attribute names are case-sensitive. 22991 22992['autoReverse', 'externalResourcesRequired', 'focusable', 'preserveAlpha'].forEach(function (name) { 22993 properties[name] = new PropertyInfoRecord(name, BOOLEANISH_STRING, false, // mustUseProperty 22994 name, // attributeName 22995 null, // attributeNamespace 22996 false); 22997}); // These are HTML boolean attributes. 22998 22999['allowFullScreen', 'async', // Note: there is a special case that prevents it from being written to the DOM 23000// on the client side because the browsers are inconsistent. Instead we call focus(). 23001'autoFocus', 'autoPlay', 'controls', 'default', 'defer', 'disabled', 'disablePictureInPicture', 'formNoValidate', 'hidden', 'loop', 'noModule', 'noValidate', 'open', 'playsInline', 'readOnly', 'required', 'reversed', 'scoped', 'seamless', // Microdata 23002'itemScope'].forEach(function (name) { 23003 properties[name] = new PropertyInfoRecord(name, BOOLEAN, false, // mustUseProperty 23004 name.toLowerCase(), // attributeName 23005 null, // attributeNamespace 23006 false); 23007}); // These are the few React props that we set as DOM properties 23008// rather than attributes. These are all booleans. 23009 23010['checked', // Note: `option.selected` is not updated if `select.multiple` is 23011// disabled with `removeAttribute`. We have special logic for handling this. 23012'multiple', 'muted', 'selected' // NOTE: if you add a camelCased prop to this list, 23013// you'll need to set attributeName to name.toLowerCase() 23014// instead in the assignment below. 23015].forEach(function (name) { 23016 properties[name] = new PropertyInfoRecord(name, BOOLEAN, true, // mustUseProperty 23017 name, // attributeName 23018 null, // attributeNamespace 23019 false); 23020}); // These are HTML attributes that are "overloaded booleans": they behave like 23021// booleans, but can also accept a string value. 23022 23023['capture', 'download' // NOTE: if you add a camelCased prop to this list, 23024// you'll need to set attributeName to name.toLowerCase() 23025// instead in the assignment below. 23026].forEach(function (name) { 23027 properties[name] = new PropertyInfoRecord(name, OVERLOADED_BOOLEAN, false, // mustUseProperty 23028 name, // attributeName 23029 null, // attributeNamespace 23030 false); 23031}); // These are HTML attributes that must be positive numbers. 23032 23033['cols', 'rows', 'size', 'span' // NOTE: if you add a camelCased prop to this list, 23034// you'll need to set attributeName to name.toLowerCase() 23035// instead in the assignment below. 23036].forEach(function (name) { 23037 properties[name] = new PropertyInfoRecord(name, POSITIVE_NUMERIC, false, // mustUseProperty 23038 name, // attributeName 23039 null, // attributeNamespace 23040 false); 23041}); // These are HTML attributes that must be numbers. 23042 23043['rowSpan', 'start'].forEach(function (name) { 23044 properties[name] = new PropertyInfoRecord(name, NUMERIC, false, // mustUseProperty 23045 name.toLowerCase(), // attributeName 23046 null, // attributeNamespace 23047 false); 23048}); 23049var CAMELIZE = /[\-\:]([a-z])/g; 23050 23051var capitalize = function (token) { 23052 return token[1].toUpperCase(); 23053}; // This is a list of all SVG attributes that need special casing, namespacing, 23054// or boolean value assignment. Regular attributes that just accept strings 23055// and have the same names are omitted, just like in the HTML whitelist. 23056// Some of these attributes can be hard to find. This list was created by 23057// scraping the MDN documentation. 23058 23059 23060['accent-height', 'alignment-baseline', 'arabic-form', 'baseline-shift', 'cap-height', 'clip-path', 'clip-rule', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'dominant-baseline', 'enable-background', 'fill-opacity', 'fill-rule', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'glyph-name', 'glyph-orientation-horizontal', 'glyph-orientation-vertical', 'horiz-adv-x', 'horiz-origin-x', 'image-rendering', 'letter-spacing', 'lighting-color', 'marker-end', 'marker-mid', 'marker-start', 'overline-position', 'overline-thickness', 'paint-order', 'panose-1', 'pointer-events', 'rendering-intent', 'shape-rendering', 'stop-color', 'stop-opacity', 'strikethrough-position', 'strikethrough-thickness', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'text-anchor', 'text-decoration', 'text-rendering', 'underline-position', 'underline-thickness', 'unicode-bidi', 'unicode-range', 'units-per-em', 'v-alphabetic', 'v-hanging', 'v-ideographic', 'v-mathematical', 'vector-effect', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'word-spacing', 'writing-mode', 'xmlns:xlink', 'x-height' // NOTE: if you add a camelCased prop to this list, 23061// you'll need to set attributeName to name.toLowerCase() 23062// instead in the assignment below. 23063].forEach(function (attributeName) { 23064 var name = attributeName.replace(CAMELIZE, capitalize); 23065 properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty 23066 attributeName, null, // attributeNamespace 23067 false); 23068}); // String SVG attributes with the xlink namespace. 23069 23070['xlink:actuate', 'xlink:arcrole', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type' // NOTE: if you add a camelCased prop to this list, 23071// you'll need to set attributeName to name.toLowerCase() 23072// instead in the assignment below. 23073].forEach(function (attributeName) { 23074 var name = attributeName.replace(CAMELIZE, capitalize); 23075 properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty 23076 attributeName, 'http://www.w3.org/1999/xlink', false); 23077}); // String SVG attributes with the xml namespace. 23078 23079['xml:base', 'xml:lang', 'xml:space' // NOTE: if you add a camelCased prop to this list, 23080// you'll need to set attributeName to name.toLowerCase() 23081// instead in the assignment below. 23082].forEach(function (attributeName) { 23083 var name = attributeName.replace(CAMELIZE, capitalize); 23084 properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty 23085 attributeName, 'http://www.w3.org/XML/1998/namespace', false); 23086}); // These attribute exists both in HTML and SVG. 23087// The attribute name is case-sensitive in SVG so we can't just use 23088// the React name like we do for attributes that exist only in HTML. 23089 23090['tabIndex', 'crossOrigin'].forEach(function (attributeName) { 23091 properties[attributeName] = new PropertyInfoRecord(attributeName, STRING, false, // mustUseProperty 23092 attributeName.toLowerCase(), // attributeName 23093 null, // attributeNamespace 23094 false); 23095}); // These attributes accept URLs. These must not allow javascript: URLS. 23096// These will also need to accept Trusted Types object in the future. 23097 23098var xlinkHref = 'xlinkHref'; 23099properties[xlinkHref] = new PropertyInfoRecord('xlinkHref', STRING, false, // mustUseProperty 23100'xlink:href', 'http://www.w3.org/1999/xlink', true); 23101['src', 'href', 'action', 'formAction'].forEach(function (attributeName) { 23102 properties[attributeName] = new PropertyInfoRecord(attributeName, STRING, false, // mustUseProperty 23103 attributeName.toLowerCase(), // attributeName 23104 null, // attributeNamespace 23105 true); 23106}); 23107 23108var ReactDebugCurrentFrame = null; 23109 23110{ 23111 ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame; 23112} // A javascript: URL can contain leading C0 control or \u0020 SPACE, 23113// and any newline or tab are filtered out as if they're not part of the URL. 23114// https://url.spec.whatwg.org/#url-parsing 23115// Tab or newline are defined as \r\n\t: 23116// https://infra.spec.whatwg.org/#ascii-tab-or-newline 23117// A C0 control is a code point in the range \u0000 NULL to \u001F 23118// INFORMATION SEPARATOR ONE, inclusive: 23119// https://infra.spec.whatwg.org/#c0-control-or-space 23120 23121/* eslint-disable max-len */ 23122 23123 23124var isJavaScriptProtocol = /^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*\:/i; 23125var didWarn = false; 23126 23127function sanitizeURL(url) { 23128 { 23129 if (!didWarn && isJavaScriptProtocol.test(url)) { 23130 didWarn = true; 23131 23132 error('A future version of React will block javascript: URLs as a security precaution. ' + 'Use event handlers instead if you can. If you need to generate unsafe HTML try ' + 'using dangerouslySetInnerHTML instead. React was passed %s.', JSON.stringify(url)); 23133 } 23134 } 23135} 23136 23137/** 23138 * Get the value for a property on a node. Only used in DEV for SSR validation. 23139 * The "expected" argument is used as a hint of what the expected value is. 23140 * Some properties have multiple equivalent values. 23141 */ 23142function getValueForProperty(node, name, expected, propertyInfo) { 23143 { 23144 if (propertyInfo.mustUseProperty) { 23145 var propertyName = propertyInfo.propertyName; 23146 return node[propertyName]; 23147 } else { 23148 if ( propertyInfo.sanitizeURL) { 23149 // If we haven't fully disabled javascript: URLs, and if 23150 // the hydration is successful of a javascript: URL, we 23151 // still want to warn on the client. 23152 sanitizeURL('' + expected); 23153 } 23154 23155 var attributeName = propertyInfo.attributeName; 23156 var stringValue = null; 23157 23158 if (propertyInfo.type === OVERLOADED_BOOLEAN) { 23159 if (node.hasAttribute(attributeName)) { 23160 var value = node.getAttribute(attributeName); 23161 23162 if (value === '') { 23163 return true; 23164 } 23165 23166 if (shouldRemoveAttribute(name, expected, propertyInfo, false)) { 23167 return value; 23168 } 23169 23170 if (value === '' + expected) { 23171 return expected; 23172 } 23173 23174 return value; 23175 } 23176 } else if (node.hasAttribute(attributeName)) { 23177 if (shouldRemoveAttribute(name, expected, propertyInfo, false)) { 23178 // We had an attribute but shouldn't have had one, so read it 23179 // for the error message. 23180 return node.getAttribute(attributeName); 23181 } 23182 23183 if (propertyInfo.type === BOOLEAN) { 23184 // If this was a boolean, it doesn't matter what the value is 23185 // the fact that we have it is the same as the expected. 23186 return expected; 23187 } // Even if this property uses a namespace we use getAttribute 23188 // because we assume its namespaced name is the same as our config. 23189 // To use getAttributeNS we need the local name which we don't have 23190 // in our config atm. 23191 23192 23193 stringValue = node.getAttribute(attributeName); 23194 } 23195 23196 if (shouldRemoveAttribute(name, expected, propertyInfo, false)) { 23197 return stringValue === null ? expected : stringValue; 23198 } else if (stringValue === '' + expected) { 23199 return expected; 23200 } else { 23201 return stringValue; 23202 } 23203 } 23204 } 23205} 23206/** 23207 * Get the value for a attribute on a node. Only used in DEV for SSR validation. 23208 * The third argument is used as a hint of what the expected value is. Some 23209 * attributes have multiple equivalent values. 23210 */ 23211 23212function getValueForAttribute(node, name, expected) { 23213 { 23214 if (!isAttributeNameSafe(name)) { 23215 return; 23216 } 23217 23218 if (!node.hasAttribute(name)) { 23219 return expected === undefined ? undefined : null; 23220 } 23221 23222 var value = node.getAttribute(name); 23223 23224 if (value === '' + expected) { 23225 return expected; 23226 } 23227 23228 return value; 23229 } 23230} 23231/** 23232 * Sets the value for a property on a node. 23233 * 23234 * @param {DOMElement} node 23235 * @param {string} name 23236 * @param {*} value 23237 */ 23238 23239function setValueForProperty(node, name, value, isCustomComponentTag) { 23240 var propertyInfo = getPropertyInfo(name); 23241 23242 if (shouldIgnoreAttribute(name, propertyInfo, isCustomComponentTag)) { 23243 return; 23244 } 23245 23246 if (shouldRemoveAttribute(name, value, propertyInfo, isCustomComponentTag)) { 23247 value = null; 23248 } // If the prop isn't in the special list, treat it as a simple attribute. 23249 23250 23251 if (isCustomComponentTag || propertyInfo === null) { 23252 if (isAttributeNameSafe(name)) { 23253 var _attributeName = name; 23254 23255 if (value === null) { 23256 node.removeAttribute(_attributeName); 23257 } else { 23258 node.setAttribute(_attributeName, '' + value); 23259 } 23260 } 23261 23262 return; 23263 } 23264 23265 var mustUseProperty = propertyInfo.mustUseProperty; 23266 23267 if (mustUseProperty) { 23268 var propertyName = propertyInfo.propertyName; 23269 23270 if (value === null) { 23271 var type = propertyInfo.type; 23272 node[propertyName] = type === BOOLEAN ? false : ''; 23273 } else { 23274 // Contrary to `setAttribute`, object properties are properly 23275 // `toString`ed by IE8/9. 23276 node[propertyName] = value; 23277 } 23278 23279 return; 23280 } // The rest are treated as attributes with special cases. 23281 23282 23283 var attributeName = propertyInfo.attributeName, 23284 attributeNamespace = propertyInfo.attributeNamespace; 23285 23286 if (value === null) { 23287 node.removeAttribute(attributeName); 23288 } else { 23289 var _type = propertyInfo.type; 23290 var attributeValue; 23291 23292 if (_type === BOOLEAN || _type === OVERLOADED_BOOLEAN && value === true) { 23293 // If attribute type is boolean, we know for sure it won't be an execution sink 23294 // and we won't require Trusted Type here. 23295 attributeValue = ''; 23296 } else { 23297 // `setAttribute` with objects becomes only `[object]` in IE8/9, 23298 // ('' + value) makes it output the correct toString()-value. 23299 { 23300 attributeValue = '' + value; 23301 } 23302 23303 if (propertyInfo.sanitizeURL) { 23304 sanitizeURL(attributeValue.toString()); 23305 } 23306 } 23307 23308 if (attributeNamespace) { 23309 node.setAttributeNS(attributeNamespace, attributeName, attributeValue); 23310 } else { 23311 node.setAttribute(attributeName, attributeValue); 23312 } 23313 } 23314} 23315 23316var BEFORE_SLASH_RE = /^(.*)[\\\/]/; 23317function describeComponentFrame (name, source, ownerName) { 23318 var sourceInfo = ''; 23319 23320 if (source) { 23321 var path = source.fileName; 23322 var fileName = path.replace(BEFORE_SLASH_RE, ''); 23323 23324 { 23325 // In DEV, include code for a common special case: 23326 // prefer "folder/index.js" instead of just "index.js". 23327 if (/^index\./.test(fileName)) { 23328 var match = path.match(BEFORE_SLASH_RE); 23329 23330 if (match) { 23331 var pathBeforeSlash = match[1]; 23332 23333 if (pathBeforeSlash) { 23334 var folderName = pathBeforeSlash.replace(BEFORE_SLASH_RE, ''); 23335 fileName = folderName + '/' + fileName; 23336 } 23337 } 23338 } 23339 } 23340 23341 sourceInfo = ' (at ' + fileName + ':' + source.lineNumber + ')'; 23342 } else if (ownerName) { 23343 sourceInfo = ' (created by ' + ownerName + ')'; 23344 } 23345 23346 return '\n in ' + (name || 'Unknown') + sourceInfo; 23347} 23348 23349// The Symbol used to tag the ReactElement-like types. If there is no native Symbol 23350// nor polyfill, then a plain number is used for performance. 23351var hasSymbol = typeof Symbol === 'function' && Symbol.for; 23352var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7; 23353var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca; 23354var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb; 23355var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc; 23356var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2; 23357var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd; 23358var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary 23359var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf; 23360var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0; 23361var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1; 23362var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8; 23363var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3; 23364var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4; 23365var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9; 23366var MAYBE_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator; 23367var FAUX_ITERATOR_SYMBOL = '@@iterator'; 23368function getIteratorFn(maybeIterable) { 23369 if (maybeIterable === null || typeof maybeIterable !== 'object') { 23370 return null; 23371 } 23372 23373 var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]; 23374 23375 if (typeof maybeIterator === 'function') { 23376 return maybeIterator; 23377 } 23378 23379 return null; 23380} 23381 23382var Uninitialized = -1; 23383var Pending = 0; 23384var Resolved = 1; 23385var Rejected = 2; 23386function refineResolvedLazyComponent(lazyComponent) { 23387 return lazyComponent._status === Resolved ? lazyComponent._result : null; 23388} 23389function initializeLazyComponentType(lazyComponent) { 23390 if (lazyComponent._status === Uninitialized) { 23391 lazyComponent._status = Pending; 23392 var ctor = lazyComponent._ctor; 23393 var thenable = ctor(); 23394 lazyComponent._result = thenable; 23395 thenable.then(function (moduleObject) { 23396 if (lazyComponent._status === Pending) { 23397 var defaultExport = moduleObject.default; 23398 23399 { 23400 if (defaultExport === undefined) { 23401 error('lazy: Expected the result of a dynamic import() call. ' + 'Instead received: %s\n\nYour code should look like: \n ' + "const MyComponent = lazy(() => import('./MyComponent'))", moduleObject); 23402 } 23403 } 23404 23405 lazyComponent._status = Resolved; 23406 lazyComponent._result = defaultExport; 23407 } 23408 }, function (error) { 23409 if (lazyComponent._status === Pending) { 23410 lazyComponent._status = Rejected; 23411 lazyComponent._result = error; 23412 } 23413 }); 23414 } 23415} 23416 23417function getWrappedName(outerType, innerType, wrapperName) { 23418 var functionName = innerType.displayName || innerType.name || ''; 23419 return outerType.displayName || (functionName !== '' ? wrapperName + "(" + functionName + ")" : wrapperName); 23420} 23421 23422function getComponentName(type) { 23423 if (type == null) { 23424 // Host root, text node or just invalid type. 23425 return null; 23426 } 23427 23428 { 23429 if (typeof type.tag === 'number') { 23430 error('Received an unexpected object in getComponentName(). ' + 'This is likely a bug in React. Please file an issue.'); 23431 } 23432 } 23433 23434 if (typeof type === 'function') { 23435 return type.displayName || type.name || null; 23436 } 23437 23438 if (typeof type === 'string') { 23439 return type; 23440 } 23441 23442 switch (type) { 23443 case REACT_FRAGMENT_TYPE: 23444 return 'Fragment'; 23445 23446 case REACT_PORTAL_TYPE: 23447 return 'Portal'; 23448 23449 case REACT_PROFILER_TYPE: 23450 return "Profiler"; 23451 23452 case REACT_STRICT_MODE_TYPE: 23453 return 'StrictMode'; 23454 23455 case REACT_SUSPENSE_TYPE: 23456 return 'Suspense'; 23457 23458 case REACT_SUSPENSE_LIST_TYPE: 23459 return 'SuspenseList'; 23460 } 23461 23462 if (typeof type === 'object') { 23463 switch (type.$$typeof) { 23464 case REACT_CONTEXT_TYPE: 23465 return 'Context.Consumer'; 23466 23467 case REACT_PROVIDER_TYPE: 23468 return 'Context.Provider'; 23469 23470 case REACT_FORWARD_REF_TYPE: 23471 return getWrappedName(type, type.render, 'ForwardRef'); 23472 23473 case REACT_MEMO_TYPE: 23474 return getComponentName(type.type); 23475 23476 case REACT_BLOCK_TYPE: 23477 return getComponentName(type.render); 23478 23479 case REACT_LAZY_TYPE: 23480 { 23481 var thenable = type; 23482 var resolvedThenable = refineResolvedLazyComponent(thenable); 23483 23484 if (resolvedThenable) { 23485 return getComponentName(resolvedThenable); 23486 } 23487 23488 break; 23489 } 23490 } 23491 } 23492 23493 return null; 23494} 23495 23496var ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame; 23497 23498function describeFiber(fiber) { 23499 switch (fiber.tag) { 23500 case HostRoot: 23501 case HostPortal: 23502 case HostText: 23503 case Fragment: 23504 case ContextProvider: 23505 case ContextConsumer: 23506 return ''; 23507 23508 default: 23509 var owner = fiber._debugOwner; 23510 var source = fiber._debugSource; 23511 var name = getComponentName(fiber.type); 23512 var ownerName = null; 23513 23514 if (owner) { 23515 ownerName = getComponentName(owner.type); 23516 } 23517 23518 return describeComponentFrame(name, source, ownerName); 23519 } 23520} 23521 23522function getStackByFiberInDevAndProd(workInProgress) { 23523 var info = ''; 23524 var node = workInProgress; 23525 23526 do { 23527 info += describeFiber(node); 23528 node = node.return; 23529 } while (node); 23530 23531 return info; 23532} 23533var current = null; 23534var isRendering = false; 23535function getCurrentFiberOwnerNameInDevOrNull() { 23536 { 23537 if (current === null) { 23538 return null; 23539 } 23540 23541 var owner = current._debugOwner; 23542 23543 if (owner !== null && typeof owner !== 'undefined') { 23544 return getComponentName(owner.type); 23545 } 23546 } 23547 23548 return null; 23549} 23550function getCurrentFiberStackInDev() { 23551 { 23552 if (current === null) { 23553 return ''; 23554 } // Safe because if current fiber exists, we are reconciling, 23555 // and it is guaranteed to be the work-in-progress version. 23556 23557 23558 return getStackByFiberInDevAndProd(current); 23559 } 23560} 23561function resetCurrentFiber() { 23562 { 23563 ReactDebugCurrentFrame$1.getCurrentStack = null; 23564 current = null; 23565 isRendering = false; 23566 } 23567} 23568function setCurrentFiber(fiber) { 23569 { 23570 ReactDebugCurrentFrame$1.getCurrentStack = getCurrentFiberStackInDev; 23571 current = fiber; 23572 isRendering = false; 23573 } 23574} 23575function setIsRendering(rendering) { 23576 { 23577 isRendering = rendering; 23578 } 23579} 23580 23581// Flow does not allow string concatenation of most non-string types. To work 23582// around this limitation, we use an opaque type that can only be obtained by 23583// passing the value through getToStringValue first. 23584function toString(value) { 23585 return '' + value; 23586} 23587function getToStringValue(value) { 23588 switch (typeof value) { 23589 case 'boolean': 23590 case 'number': 23591 case 'object': 23592 case 'string': 23593 case 'undefined': 23594 return value; 23595 23596 default: 23597 // function, symbol are assigned as empty strings 23598 return ''; 23599 } 23600} 23601 23602var ReactDebugCurrentFrame$2 = null; 23603var ReactControlledValuePropTypes = { 23604 checkPropTypes: null 23605}; 23606 23607{ 23608 ReactDebugCurrentFrame$2 = ReactSharedInternals.ReactDebugCurrentFrame; 23609 var hasReadOnlyValue = { 23610 button: true, 23611 checkbox: true, 23612 image: true, 23613 hidden: true, 23614 radio: true, 23615 reset: true, 23616 submit: true 23617 }; 23618 var propTypes = { 23619 value: function (props, propName, componentName) { 23620 if (hasReadOnlyValue[props.type] || props.onChange || props.readOnly || props.disabled || props[propName] == null || enableDeprecatedFlareAPI ) { 23621 return null; 23622 } 23623 23624 return new Error('You provided a `value` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultValue`. Otherwise, ' + 'set either `onChange` or `readOnly`.'); 23625 }, 23626 checked: function (props, propName, componentName) { 23627 if (props.onChange || props.readOnly || props.disabled || props[propName] == null || enableDeprecatedFlareAPI ) { 23628 return null; 23629 } 23630 23631 return new Error('You provided a `checked` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultChecked`. Otherwise, ' + 'set either `onChange` or `readOnly`.'); 23632 } 23633 }; 23634 /** 23635 * Provide a linked `value` attribute for controlled forms. You should not use 23636 * this outside of the ReactDOM controlled form components. 23637 */ 23638 23639 ReactControlledValuePropTypes.checkPropTypes = function (tagName, props) { 23640 checkPropTypes(propTypes, props, 'prop', tagName, ReactDebugCurrentFrame$2.getStackAddendum); 23641 }; 23642} 23643 23644function isCheckable(elem) { 23645 var type = elem.type; 23646 var nodeName = elem.nodeName; 23647 return nodeName && nodeName.toLowerCase() === 'input' && (type === 'checkbox' || type === 'radio'); 23648} 23649 23650function getTracker(node) { 23651 return node._valueTracker; 23652} 23653 23654function detachTracker(node) { 23655 node._valueTracker = null; 23656} 23657 23658function getValueFromNode(node) { 23659 var value = ''; 23660 23661 if (!node) { 23662 return value; 23663 } 23664 23665 if (isCheckable(node)) { 23666 value = node.checked ? 'true' : 'false'; 23667 } else { 23668 value = node.value; 23669 } 23670 23671 return value; 23672} 23673 23674function trackValueOnNode(node) { 23675 var valueField = isCheckable(node) ? 'checked' : 'value'; 23676 var descriptor = Object.getOwnPropertyDescriptor(node.constructor.prototype, valueField); 23677 var currentValue = '' + node[valueField]; // if someone has already defined a value or Safari, then bail 23678 // and don't track value will cause over reporting of changes, 23679 // but it's better then a hard failure 23680 // (needed for certain tests that spyOn input values and Safari) 23681 23682 if (node.hasOwnProperty(valueField) || typeof descriptor === 'undefined' || typeof descriptor.get !== 'function' || typeof descriptor.set !== 'function') { 23683 return; 23684 } 23685 23686 var get = descriptor.get, 23687 set = descriptor.set; 23688 Object.defineProperty(node, valueField, { 23689 configurable: true, 23690 get: function () { 23691 return get.call(this); 23692 }, 23693 set: function (value) { 23694 currentValue = '' + value; 23695 set.call(this, value); 23696 } 23697 }); // We could've passed this the first time 23698 // but it triggers a bug in IE11 and Edge 14/15. 23699 // Calling defineProperty() again should be equivalent. 23700 // https://github.com/facebook/react/issues/11768 23701 23702 Object.defineProperty(node, valueField, { 23703 enumerable: descriptor.enumerable 23704 }); 23705 var tracker = { 23706 getValue: function () { 23707 return currentValue; 23708 }, 23709 setValue: function (value) { 23710 currentValue = '' + value; 23711 }, 23712 stopTracking: function () { 23713 detachTracker(node); 23714 delete node[valueField]; 23715 } 23716 }; 23717 return tracker; 23718} 23719 23720function track(node) { 23721 if (getTracker(node)) { 23722 return; 23723 } // TODO: Once it's just Fiber we can move this to node._wrapperState 23724 23725 23726 node._valueTracker = trackValueOnNode(node); 23727} 23728function updateValueIfChanged(node) { 23729 if (!node) { 23730 return false; 23731 } 23732 23733 var tracker = getTracker(node); // if there is no tracker at this point it's unlikely 23734 // that trying again will succeed 23735 23736 if (!tracker) { 23737 return true; 23738 } 23739 23740 var lastValue = tracker.getValue(); 23741 var nextValue = getValueFromNode(node); 23742 23743 if (nextValue !== lastValue) { 23744 tracker.setValue(nextValue); 23745 return true; 23746 } 23747 23748 return false; 23749} 23750 23751var didWarnValueDefaultValue = false; 23752var didWarnCheckedDefaultChecked = false; 23753var didWarnControlledToUncontrolled = false; 23754var didWarnUncontrolledToControlled = false; 23755 23756function isControlled(props) { 23757 var usesChecked = props.type === 'checkbox' || props.type === 'radio'; 23758 return usesChecked ? props.checked != null : props.value != null; 23759} 23760/** 23761 * Implements an <input> host component that allows setting these optional 23762 * props: `checked`, `value`, `defaultChecked`, and `defaultValue`. 23763 * 23764 * If `checked` or `value` are not supplied (or null/undefined), user actions 23765 * that affect the checked state or value will trigger updates to the element. 23766 * 23767 * If they are supplied (and not null/undefined), the rendered element will not 23768 * trigger updates to the element. Instead, the props must change in order for 23769 * the rendered element to be updated. 23770 * 23771 * The rendered element will be initialized as unchecked (or `defaultChecked`) 23772 * with an empty value (or `defaultValue`). 23773 * 23774 * See http://www.w3.org/TR/2012/WD-html5-20121025/the-input-element.html 23775 */ 23776 23777 23778function getHostProps(element, props) { 23779 var node = element; 23780 var checked = props.checked; 23781 23782 var hostProps = _assign({}, props, { 23783 defaultChecked: undefined, 23784 defaultValue: undefined, 23785 value: undefined, 23786 checked: checked != null ? checked : node._wrapperState.initialChecked 23787 }); 23788 23789 return hostProps; 23790} 23791function initWrapperState(element, props) { 23792 { 23793 ReactControlledValuePropTypes.checkPropTypes('input', props); 23794 23795 if (props.checked !== undefined && props.defaultChecked !== undefined && !didWarnCheckedDefaultChecked) { 23796 error('%s contains an input of type %s with both checked and defaultChecked props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the checked prop, or the defaultChecked prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', getCurrentFiberOwnerNameInDevOrNull() || 'A component', props.type); 23797 23798 didWarnCheckedDefaultChecked = true; 23799 } 23800 23801 if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) { 23802 error('%s contains an input of type %s with both value and defaultValue props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', getCurrentFiberOwnerNameInDevOrNull() || 'A component', props.type); 23803 23804 didWarnValueDefaultValue = true; 23805 } 23806 } 23807 23808 var node = element; 23809 var defaultValue = props.defaultValue == null ? '' : props.defaultValue; 23810 node._wrapperState = { 23811 initialChecked: props.checked != null ? props.checked : props.defaultChecked, 23812 initialValue: getToStringValue(props.value != null ? props.value : defaultValue), 23813 controlled: isControlled(props) 23814 }; 23815} 23816function updateChecked(element, props) { 23817 var node = element; 23818 var checked = props.checked; 23819 23820 if (checked != null) { 23821 setValueForProperty(node, 'checked', checked, false); 23822 } 23823} 23824function updateWrapper(element, props) { 23825 var node = element; 23826 23827 { 23828 var controlled = isControlled(props); 23829 23830 if (!node._wrapperState.controlled && controlled && !didWarnUncontrolledToControlled) { 23831 error('A component is changing an uncontrolled input of type %s to be controlled. ' + 'Input elements should not switch from uncontrolled to controlled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', props.type); 23832 23833 didWarnUncontrolledToControlled = true; 23834 } 23835 23836 if (node._wrapperState.controlled && !controlled && !didWarnControlledToUncontrolled) { 23837 error('A component is changing a controlled input of type %s to be uncontrolled. ' + 'Input elements should not switch from controlled to uncontrolled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', props.type); 23838 23839 didWarnControlledToUncontrolled = true; 23840 } 23841 } 23842 23843 updateChecked(element, props); 23844 var value = getToStringValue(props.value); 23845 var type = props.type; 23846 23847 if (value != null) { 23848 if (type === 'number') { 23849 if (value === 0 && node.value === '' || // We explicitly want to coerce to number here if possible. 23850 // eslint-disable-next-line 23851 node.value != value) { 23852 node.value = toString(value); 23853 } 23854 } else if (node.value !== toString(value)) { 23855 node.value = toString(value); 23856 } 23857 } else if (type === 'submit' || type === 'reset') { 23858 // Submit/reset inputs need the attribute removed completely to avoid 23859 // blank-text buttons. 23860 node.removeAttribute('value'); 23861 return; 23862 } 23863 23864 { 23865 // When syncing the value attribute, the value comes from a cascade of 23866 // properties: 23867 // 1. The value React property 23868 // 2. The defaultValue React property 23869 // 3. Otherwise there should be no change 23870 if (props.hasOwnProperty('value')) { 23871 setDefaultValue(node, props.type, value); 23872 } else if (props.hasOwnProperty('defaultValue')) { 23873 setDefaultValue(node, props.type, getToStringValue(props.defaultValue)); 23874 } 23875 } 23876 23877 { 23878 // When syncing the checked attribute, it only changes when it needs 23879 // to be removed, such as transitioning from a checkbox into a text input 23880 if (props.checked == null && props.defaultChecked != null) { 23881 node.defaultChecked = !!props.defaultChecked; 23882 } 23883 } 23884} 23885function postMountWrapper(element, props, isHydrating) { 23886 var node = element; // Do not assign value if it is already set. This prevents user text input 23887 // from being lost during SSR hydration. 23888 23889 if (props.hasOwnProperty('value') || props.hasOwnProperty('defaultValue')) { 23890 var type = props.type; 23891 var isButton = type === 'submit' || type === 'reset'; // Avoid setting value attribute on submit/reset inputs as it overrides the 23892 // default value provided by the browser. See: #12872 23893 23894 if (isButton && (props.value === undefined || props.value === null)) { 23895 return; 23896 } 23897 23898 var initialValue = toString(node._wrapperState.initialValue); // Do not assign value if it is already set. This prevents user text input 23899 // from being lost during SSR hydration. 23900 23901 if (!isHydrating) { 23902 { 23903 // When syncing the value attribute, the value property should use 23904 // the wrapperState._initialValue property. This uses: 23905 // 23906 // 1. The value React property when present 23907 // 2. The defaultValue React property when present 23908 // 3. An empty string 23909 if (initialValue !== node.value) { 23910 node.value = initialValue; 23911 } 23912 } 23913 } 23914 23915 { 23916 // Otherwise, the value attribute is synchronized to the property, 23917 // so we assign defaultValue to the same thing as the value property 23918 // assignment step above. 23919 node.defaultValue = initialValue; 23920 } 23921 } // Normally, we'd just do `node.checked = node.checked` upon initial mount, less this bug 23922 // this is needed to work around a chrome bug where setting defaultChecked 23923 // will sometimes influence the value of checked (even after detachment). 23924 // Reference: https://bugs.chromium.org/p/chromium/issues/detail?id=608416 23925 // We need to temporarily unset name to avoid disrupting radio button groups. 23926 23927 23928 var name = node.name; 23929 23930 if (name !== '') { 23931 node.name = ''; 23932 } 23933 23934 { 23935 // When syncing the checked attribute, both the checked property and 23936 // attribute are assigned at the same time using defaultChecked. This uses: 23937 // 23938 // 1. The checked React property when present 23939 // 2. The defaultChecked React property when present 23940 // 3. Otherwise, false 23941 node.defaultChecked = !node.defaultChecked; 23942 node.defaultChecked = !!node._wrapperState.initialChecked; 23943 } 23944 23945 if (name !== '') { 23946 node.name = name; 23947 } 23948} 23949function restoreControlledState(element, props) { 23950 var node = element; 23951 updateWrapper(node, props); 23952 updateNamedCousins(node, props); 23953} 23954 23955function updateNamedCousins(rootNode, props) { 23956 var name = props.name; 23957 23958 if (props.type === 'radio' && name != null) { 23959 var queryRoot = rootNode; 23960 23961 while (queryRoot.parentNode) { 23962 queryRoot = queryRoot.parentNode; 23963 } // If `rootNode.form` was non-null, then we could try `form.elements`, 23964 // but that sometimes behaves strangely in IE8. We could also try using 23965 // `form.getElementsByName`, but that will only return direct children 23966 // and won't include inputs that use the HTML5 `form=` attribute. Since 23967 // the input might not even be in a form. It might not even be in the 23968 // document. Let's just use the local `querySelectorAll` to ensure we don't 23969 // miss anything. 23970 23971 23972 var group = queryRoot.querySelectorAll('input[name=' + JSON.stringify('' + name) + '][type="radio"]'); 23973 23974 for (var i = 0; i < group.length; i++) { 23975 var otherNode = group[i]; 23976 23977 if (otherNode === rootNode || otherNode.form !== rootNode.form) { 23978 continue; 23979 } // This will throw if radio buttons rendered by different copies of React 23980 // and the same name are rendered into the same form (same as #1939). 23981 // That's probably okay; we don't support it just as we don't support 23982 // mixing React radio buttons with non-React ones. 23983 23984 23985 var otherProps = getFiberCurrentPropsFromNode$1(otherNode); 23986 23987 if (!otherProps) { 23988 { 23989 throw Error( "ReactDOMInput: Mixing React and non-React radio inputs with the same `name` is not supported." ); 23990 } 23991 } // We need update the tracked value on the named cousin since the value 23992 // was changed but the input saw no event or value set 23993 23994 23995 updateValueIfChanged(otherNode); // If this is a controlled radio button group, forcing the input that 23996 // was previously checked to update will cause it to be come re-checked 23997 // as appropriate. 23998 23999 updateWrapper(otherNode, otherProps); 24000 } 24001 } 24002} // In Chrome, assigning defaultValue to certain input types triggers input validation. 24003// For number inputs, the display value loses trailing decimal points. For email inputs, 24004// Chrome raises "The specified value <x> is not a valid email address". 24005// 24006// Here we check to see if the defaultValue has actually changed, avoiding these problems 24007// when the user is inputting text 24008// 24009// https://github.com/facebook/react/issues/7253 24010 24011 24012function setDefaultValue(node, type, value) { 24013 if ( // Focused number inputs synchronize on blur. See ChangeEventPlugin.js 24014 type !== 'number' || node.ownerDocument.activeElement !== node) { 24015 if (value == null) { 24016 node.defaultValue = toString(node._wrapperState.initialValue); 24017 } else if (node.defaultValue !== toString(value)) { 24018 node.defaultValue = toString(value); 24019 } 24020 } 24021} 24022 24023var didWarnSelectedSetOnOption = false; 24024var didWarnInvalidChild = false; 24025 24026function flattenChildren(children) { 24027 var content = ''; // Flatten children. We'll warn if they are invalid 24028 // during validateProps() which runs for hydration too. 24029 // Note that this would throw on non-element objects. 24030 // Elements are stringified (which is normally irrelevant 24031 // but matters for <fbt>). 24032 24033 React.Children.forEach(children, function (child) { 24034 if (child == null) { 24035 return; 24036 } 24037 24038 content += child; // Note: we don't warn about invalid children here. 24039 // Instead, this is done separately below so that 24040 // it happens during the hydration codepath too. 24041 }); 24042 return content; 24043} 24044/** 24045 * Implements an <option> host component that warns when `selected` is set. 24046 */ 24047 24048 24049function validateProps(element, props) { 24050 { 24051 // This mirrors the codepath above, but runs for hydration too. 24052 // Warn about invalid children here so that client and hydration are consistent. 24053 // TODO: this seems like it could cause a DEV-only throw for hydration 24054 // if children contains a non-element object. We should try to avoid that. 24055 if (typeof props.children === 'object' && props.children !== null) { 24056 React.Children.forEach(props.children, function (child) { 24057 if (child == null) { 24058 return; 24059 } 24060 24061 if (typeof child === 'string' || typeof child === 'number') { 24062 return; 24063 } 24064 24065 if (typeof child.type !== 'string') { 24066 return; 24067 } 24068 24069 if (!didWarnInvalidChild) { 24070 didWarnInvalidChild = true; 24071 24072 error('Only strings and numbers are supported as <option> children.'); 24073 } 24074 }); 24075 } // TODO: Remove support for `selected` in <option>. 24076 24077 24078 if (props.selected != null && !didWarnSelectedSetOnOption) { 24079 error('Use the `defaultValue` or `value` props on <select> instead of ' + 'setting `selected` on <option>.'); 24080 24081 didWarnSelectedSetOnOption = true; 24082 } 24083 } 24084} 24085function postMountWrapper$1(element, props) { 24086 // value="" should make a value attribute (#6219) 24087 if (props.value != null) { 24088 element.setAttribute('value', toString(getToStringValue(props.value))); 24089 } 24090} 24091function getHostProps$1(element, props) { 24092 var hostProps = _assign({ 24093 children: undefined 24094 }, props); 24095 24096 var content = flattenChildren(props.children); 24097 24098 if (content) { 24099 hostProps.children = content; 24100 } 24101 24102 return hostProps; 24103} 24104 24105var didWarnValueDefaultValue$1; 24106 24107{ 24108 didWarnValueDefaultValue$1 = false; 24109} 24110 24111function getDeclarationErrorAddendum() { 24112 var ownerName = getCurrentFiberOwnerNameInDevOrNull(); 24113 24114 if (ownerName) { 24115 return '\n\nCheck the render method of `' + ownerName + '`.'; 24116 } 24117 24118 return ''; 24119} 24120 24121var valuePropNames = ['value', 'defaultValue']; 24122/** 24123 * Validation function for `value` and `defaultValue`. 24124 */ 24125 24126function checkSelectPropTypes(props) { 24127 { 24128 ReactControlledValuePropTypes.checkPropTypes('select', props); 24129 24130 for (var i = 0; i < valuePropNames.length; i++) { 24131 var propName = valuePropNames[i]; 24132 24133 if (props[propName] == null) { 24134 continue; 24135 } 24136 24137 var isArray = Array.isArray(props[propName]); 24138 24139 if (props.multiple && !isArray) { 24140 error('The `%s` prop supplied to <select> must be an array if ' + '`multiple` is true.%s', propName, getDeclarationErrorAddendum()); 24141 } else if (!props.multiple && isArray) { 24142 error('The `%s` prop supplied to <select> must be a scalar ' + 'value if `multiple` is false.%s', propName, getDeclarationErrorAddendum()); 24143 } 24144 } 24145 } 24146} 24147 24148function updateOptions(node, multiple, propValue, setDefaultSelected) { 24149 var options = node.options; 24150 24151 if (multiple) { 24152 var selectedValues = propValue; 24153 var selectedValue = {}; 24154 24155 for (var i = 0; i < selectedValues.length; i++) { 24156 // Prefix to avoid chaos with special keys. 24157 selectedValue['$' + selectedValues[i]] = true; 24158 } 24159 24160 for (var _i = 0; _i < options.length; _i++) { 24161 var selected = selectedValue.hasOwnProperty('$' + options[_i].value); 24162 24163 if (options[_i].selected !== selected) { 24164 options[_i].selected = selected; 24165 } 24166 24167 if (selected && setDefaultSelected) { 24168 options[_i].defaultSelected = true; 24169 } 24170 } 24171 } else { 24172 // Do not set `select.value` as exact behavior isn't consistent across all 24173 // browsers for all cases. 24174 var _selectedValue = toString(getToStringValue(propValue)); 24175 24176 var defaultSelected = null; 24177 24178 for (var _i2 = 0; _i2 < options.length; _i2++) { 24179 if (options[_i2].value === _selectedValue) { 24180 options[_i2].selected = true; 24181 24182 if (setDefaultSelected) { 24183 options[_i2].defaultSelected = true; 24184 } 24185 24186 return; 24187 } 24188 24189 if (defaultSelected === null && !options[_i2].disabled) { 24190 defaultSelected = options[_i2]; 24191 } 24192 } 24193 24194 if (defaultSelected !== null) { 24195 defaultSelected.selected = true; 24196 } 24197 } 24198} 24199/** 24200 * Implements a <select> host component that allows optionally setting the 24201 * props `value` and `defaultValue`. If `multiple` is false, the prop must be a 24202 * stringable. If `multiple` is true, the prop must be an array of stringables. 24203 * 24204 * If `value` is not supplied (or null/undefined), user actions that change the 24205 * selected option will trigger updates to the rendered options. 24206 * 24207 * If it is supplied (and not null/undefined), the rendered options will not 24208 * update in response to user actions. Instead, the `value` prop must change in 24209 * order for the rendered options to update. 24210 * 24211 * If `defaultValue` is provided, any options with the supplied values will be 24212 * selected. 24213 */ 24214 24215 24216function getHostProps$2(element, props) { 24217 return _assign({}, props, { 24218 value: undefined 24219 }); 24220} 24221function initWrapperState$1(element, props) { 24222 var node = element; 24223 24224 { 24225 checkSelectPropTypes(props); 24226 } 24227 24228 node._wrapperState = { 24229 wasMultiple: !!props.multiple 24230 }; 24231 24232 { 24233 if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue$1) { 24234 error('Select elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled select ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components'); 24235 24236 didWarnValueDefaultValue$1 = true; 24237 } 24238 } 24239} 24240function postMountWrapper$2(element, props) { 24241 var node = element; 24242 node.multiple = !!props.multiple; 24243 var value = props.value; 24244 24245 if (value != null) { 24246 updateOptions(node, !!props.multiple, value, false); 24247 } else if (props.defaultValue != null) { 24248 updateOptions(node, !!props.multiple, props.defaultValue, true); 24249 } 24250} 24251function postUpdateWrapper(element, props) { 24252 var node = element; 24253 var wasMultiple = node._wrapperState.wasMultiple; 24254 node._wrapperState.wasMultiple = !!props.multiple; 24255 var value = props.value; 24256 24257 if (value != null) { 24258 updateOptions(node, !!props.multiple, value, false); 24259 } else if (wasMultiple !== !!props.multiple) { 24260 // For simplicity, reapply `defaultValue` if `multiple` is toggled. 24261 if (props.defaultValue != null) { 24262 updateOptions(node, !!props.multiple, props.defaultValue, true); 24263 } else { 24264 // Revert the select back to its default unselected state. 24265 updateOptions(node, !!props.multiple, props.multiple ? [] : '', false); 24266 } 24267 } 24268} 24269function restoreControlledState$1(element, props) { 24270 var node = element; 24271 var value = props.value; 24272 24273 if (value != null) { 24274 updateOptions(node, !!props.multiple, value, false); 24275 } 24276} 24277 24278var didWarnValDefaultVal = false; 24279 24280/** 24281 * Implements a <textarea> host component that allows setting `value`, and 24282 * `defaultValue`. This differs from the traditional DOM API because value is 24283 * usually set as PCDATA children. 24284 * 24285 * If `value` is not supplied (or null/undefined), user actions that affect the 24286 * value will trigger updates to the element. 24287 * 24288 * If `value` is supplied (and not null/undefined), the rendered element will 24289 * not trigger updates to the element. Instead, the `value` prop must change in 24290 * order for the rendered element to be updated. 24291 * 24292 * The rendered element will be initialized with an empty value, the prop 24293 * `defaultValue` if specified, or the children content (deprecated). 24294 */ 24295function getHostProps$3(element, props) { 24296 var node = element; 24297 24298 if (!(props.dangerouslySetInnerHTML == null)) { 24299 { 24300 throw Error( "`dangerouslySetInnerHTML` does not make sense on <textarea>." ); 24301 } 24302 } // Always set children to the same thing. In IE9, the selection range will 24303 // get reset if `textContent` is mutated. We could add a check in setTextContent 24304 // to only set the value if/when the value differs from the node value (which would 24305 // completely solve this IE9 bug), but Sebastian+Sophie seemed to like this 24306 // solution. The value can be a boolean or object so that's why it's forced 24307 // to be a string. 24308 24309 24310 var hostProps = _assign({}, props, { 24311 value: undefined, 24312 defaultValue: undefined, 24313 children: toString(node._wrapperState.initialValue) 24314 }); 24315 24316 return hostProps; 24317} 24318function initWrapperState$2(element, props) { 24319 var node = element; 24320 24321 { 24322 ReactControlledValuePropTypes.checkPropTypes('textarea', props); 24323 24324 if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValDefaultVal) { 24325 error('%s contains a textarea with both value and defaultValue props. ' + 'Textarea elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled textarea ' + 'and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', getCurrentFiberOwnerNameInDevOrNull() || 'A component'); 24326 24327 didWarnValDefaultVal = true; 24328 } 24329 } 24330 24331 var initialValue = props.value; // Only bother fetching default value if we're going to use it 24332 24333 if (initialValue == null) { 24334 var children = props.children, 24335 defaultValue = props.defaultValue; 24336 24337 if (children != null) { 24338 { 24339 error('Use the `defaultValue` or `value` props instead of setting ' + 'children on <textarea>.'); 24340 } 24341 24342 { 24343 if (!(defaultValue == null)) { 24344 { 24345 throw Error( "If you supply `defaultValue` on a <textarea>, do not pass children." ); 24346 } 24347 } 24348 24349 if (Array.isArray(children)) { 24350 if (!(children.length <= 1)) { 24351 { 24352 throw Error( "<textarea> can only have at most one child." ); 24353 } 24354 } 24355 24356 children = children[0]; 24357 } 24358 24359 defaultValue = children; 24360 } 24361 } 24362 24363 if (defaultValue == null) { 24364 defaultValue = ''; 24365 } 24366 24367 initialValue = defaultValue; 24368 } 24369 24370 node._wrapperState = { 24371 initialValue: getToStringValue(initialValue) 24372 }; 24373} 24374function updateWrapper$1(element, props) { 24375 var node = element; 24376 var value = getToStringValue(props.value); 24377 var defaultValue = getToStringValue(props.defaultValue); 24378 24379 if (value != null) { 24380 // Cast `value` to a string to ensure the value is set correctly. While 24381 // browsers typically do this as necessary, jsdom doesn't. 24382 var newValue = toString(value); // To avoid side effects (such as losing text selection), only set value if changed 24383 24384 if (newValue !== node.value) { 24385 node.value = newValue; 24386 } 24387 24388 if (props.defaultValue == null && node.defaultValue !== newValue) { 24389 node.defaultValue = newValue; 24390 } 24391 } 24392 24393 if (defaultValue != null) { 24394 node.defaultValue = toString(defaultValue); 24395 } 24396} 24397function postMountWrapper$3(element, props) { 24398 var node = element; // This is in postMount because we need access to the DOM node, which is not 24399 // available until after the component has mounted. 24400 24401 var textContent = node.textContent; // Only set node.value if textContent is equal to the expected 24402 // initial value. In IE10/IE11 there is a bug where the placeholder attribute 24403 // will populate textContent as well. 24404 // https://developer.microsoft.com/microsoft-edge/platform/issues/101525/ 24405 24406 if (textContent === node._wrapperState.initialValue) { 24407 if (textContent !== '' && textContent !== null) { 24408 node.value = textContent; 24409 } 24410 } 24411} 24412function restoreControlledState$2(element, props) { 24413 // DOM component is still mounted; update 24414 updateWrapper$1(element, props); 24415} 24416 24417var HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml'; 24418var MATH_NAMESPACE = 'http://www.w3.org/1998/Math/MathML'; 24419var SVG_NAMESPACE = 'http://www.w3.org/2000/svg'; 24420var Namespaces = { 24421 html: HTML_NAMESPACE, 24422 mathml: MATH_NAMESPACE, 24423 svg: SVG_NAMESPACE 24424}; // Assumes there is no parent namespace. 24425 24426function getIntrinsicNamespace(type) { 24427 switch (type) { 24428 case 'svg': 24429 return SVG_NAMESPACE; 24430 24431 case 'math': 24432 return MATH_NAMESPACE; 24433 24434 default: 24435 return HTML_NAMESPACE; 24436 } 24437} 24438function getChildNamespace(parentNamespace, type) { 24439 if (parentNamespace == null || parentNamespace === HTML_NAMESPACE) { 24440 // No (or default) parent namespace: potential entry point. 24441 return getIntrinsicNamespace(type); 24442 } 24443 24444 if (parentNamespace === SVG_NAMESPACE && type === 'foreignObject') { 24445 // We're leaving SVG. 24446 return HTML_NAMESPACE; 24447 } // By default, pass namespace below. 24448 24449 24450 return parentNamespace; 24451} 24452 24453/* globals MSApp */ 24454 24455/** 24456 * Create a function which has 'unsafe' privileges (required by windows8 apps) 24457 */ 24458var createMicrosoftUnsafeLocalFunction = function (func) { 24459 if (typeof MSApp !== 'undefined' && MSApp.execUnsafeLocalFunction) { 24460 return function (arg0, arg1, arg2, arg3) { 24461 MSApp.execUnsafeLocalFunction(function () { 24462 return func(arg0, arg1, arg2, arg3); 24463 }); 24464 }; 24465 } else { 24466 return func; 24467 } 24468}; 24469 24470var reusableSVGContainer; 24471/** 24472 * Set the innerHTML property of a node 24473 * 24474 * @param {DOMElement} node 24475 * @param {string} html 24476 * @internal 24477 */ 24478 24479var setInnerHTML = createMicrosoftUnsafeLocalFunction(function (node, html) { 24480 if (node.namespaceURI === Namespaces.svg) { 24481 24482 if (!('innerHTML' in node)) { 24483 // IE does not have innerHTML for SVG nodes, so instead we inject the 24484 // new markup in a temp node and then move the child nodes across into 24485 // the target node 24486 reusableSVGContainer = reusableSVGContainer || document.createElement('div'); 24487 reusableSVGContainer.innerHTML = '<svg>' + html.valueOf().toString() + '</svg>'; 24488 var svgNode = reusableSVGContainer.firstChild; 24489 24490 while (node.firstChild) { 24491 node.removeChild(node.firstChild); 24492 } 24493 24494 while (svgNode.firstChild) { 24495 node.appendChild(svgNode.firstChild); 24496 } 24497 24498 return; 24499 } 24500 } 24501 24502 node.innerHTML = html; 24503}); 24504 24505/** 24506 * HTML nodeType values that represent the type of the node 24507 */ 24508var ELEMENT_NODE = 1; 24509var TEXT_NODE = 3; 24510var COMMENT_NODE = 8; 24511var DOCUMENT_NODE = 9; 24512var DOCUMENT_FRAGMENT_NODE = 11; 24513 24514/** 24515 * Set the textContent property of a node. For text updates, it's faster 24516 * to set the `nodeValue` of the Text node directly instead of using 24517 * `.textContent` which will remove the existing node and create a new one. 24518 * 24519 * @param {DOMElement} node 24520 * @param {string} text 24521 * @internal 24522 */ 24523 24524var setTextContent = function (node, text) { 24525 if (text) { 24526 var firstChild = node.firstChild; 24527 24528 if (firstChild && firstChild === node.lastChild && firstChild.nodeType === TEXT_NODE) { 24529 firstChild.nodeValue = text; 24530 return; 24531 } 24532 } 24533 24534 node.textContent = text; 24535}; 24536 24537// Do not use the below two methods directly! 24538// Instead use constants exported from DOMTopLevelEventTypes in ReactDOM. 24539// (It is the only module that is allowed to access these methods.) 24540function unsafeCastStringToDOMTopLevelType(topLevelType) { 24541 return topLevelType; 24542} 24543function unsafeCastDOMTopLevelTypeToString(topLevelType) { 24544 return topLevelType; 24545} 24546 24547/** 24548 * Generate a mapping of standard vendor prefixes using the defined style property and event name. 24549 * 24550 * @param {string} styleProp 24551 * @param {string} eventName 24552 * @returns {object} 24553 */ 24554 24555function makePrefixMap(styleProp, eventName) { 24556 var prefixes = {}; 24557 prefixes[styleProp.toLowerCase()] = eventName.toLowerCase(); 24558 prefixes['Webkit' + styleProp] = 'webkit' + eventName; 24559 prefixes['Moz' + styleProp] = 'moz' + eventName; 24560 return prefixes; 24561} 24562/** 24563 * A list of event names to a configurable list of vendor prefixes. 24564 */ 24565 24566 24567var vendorPrefixes = { 24568 animationend: makePrefixMap('Animation', 'AnimationEnd'), 24569 animationiteration: makePrefixMap('Animation', 'AnimationIteration'), 24570 animationstart: makePrefixMap('Animation', 'AnimationStart'), 24571 transitionend: makePrefixMap('Transition', 'TransitionEnd') 24572}; 24573/** 24574 * Event names that have already been detected and prefixed (if applicable). 24575 */ 24576 24577var prefixedEventNames = {}; 24578/** 24579 * Element to check for prefixes on. 24580 */ 24581 24582var style = {}; 24583/** 24584 * Bootstrap if a DOM exists. 24585 */ 24586 24587if (canUseDOM) { 24588 style = document.createElement('div').style; // On some platforms, in particular some releases of Android 4.x, 24589 // the un-prefixed "animation" and "transition" properties are defined on the 24590 // style object but the events that fire will still be prefixed, so we need 24591 // to check if the un-prefixed events are usable, and if not remove them from the map. 24592 24593 if (!('AnimationEvent' in window)) { 24594 delete vendorPrefixes.animationend.animation; 24595 delete vendorPrefixes.animationiteration.animation; 24596 delete vendorPrefixes.animationstart.animation; 24597 } // Same as above 24598 24599 24600 if (!('TransitionEvent' in window)) { 24601 delete vendorPrefixes.transitionend.transition; 24602 } 24603} 24604/** 24605 * Attempts to determine the correct vendor prefixed event name. 24606 * 24607 * @param {string} eventName 24608 * @returns {string} 24609 */ 24610 24611 24612function getVendorPrefixedEventName(eventName) { 24613 if (prefixedEventNames[eventName]) { 24614 return prefixedEventNames[eventName]; 24615 } else if (!vendorPrefixes[eventName]) { 24616 return eventName; 24617 } 24618 24619 var prefixMap = vendorPrefixes[eventName]; 24620 24621 for (var styleProp in prefixMap) { 24622 if (prefixMap.hasOwnProperty(styleProp) && styleProp in style) { 24623 return prefixedEventNames[eventName] = prefixMap[styleProp]; 24624 } 24625 } 24626 24627 return eventName; 24628} 24629 24630/** 24631 * To identify top level events in ReactDOM, we use constants defined by this 24632 * module. This is the only module that uses the unsafe* methods to express 24633 * that the constants actually correspond to the browser event names. This lets 24634 * us save some bundle size by avoiding a top level type -> event name map. 24635 * The rest of ReactDOM code should import top level types from this file. 24636 */ 24637 24638var TOP_ABORT = unsafeCastStringToDOMTopLevelType('abort'); 24639var TOP_ANIMATION_END = unsafeCastStringToDOMTopLevelType(getVendorPrefixedEventName('animationend')); 24640var TOP_ANIMATION_ITERATION = unsafeCastStringToDOMTopLevelType(getVendorPrefixedEventName('animationiteration')); 24641var TOP_ANIMATION_START = unsafeCastStringToDOMTopLevelType(getVendorPrefixedEventName('animationstart')); 24642var TOP_BLUR = unsafeCastStringToDOMTopLevelType('blur'); 24643var TOP_CAN_PLAY = unsafeCastStringToDOMTopLevelType('canplay'); 24644var TOP_CAN_PLAY_THROUGH = unsafeCastStringToDOMTopLevelType('canplaythrough'); 24645var TOP_CANCEL = unsafeCastStringToDOMTopLevelType('cancel'); 24646var TOP_CHANGE = unsafeCastStringToDOMTopLevelType('change'); 24647var TOP_CLICK = unsafeCastStringToDOMTopLevelType('click'); 24648var TOP_CLOSE = unsafeCastStringToDOMTopLevelType('close'); 24649var TOP_COMPOSITION_END = unsafeCastStringToDOMTopLevelType('compositionend'); 24650var TOP_COMPOSITION_START = unsafeCastStringToDOMTopLevelType('compositionstart'); 24651var TOP_COMPOSITION_UPDATE = unsafeCastStringToDOMTopLevelType('compositionupdate'); 24652var TOP_CONTEXT_MENU = unsafeCastStringToDOMTopLevelType('contextmenu'); 24653var TOP_COPY = unsafeCastStringToDOMTopLevelType('copy'); 24654var TOP_CUT = unsafeCastStringToDOMTopLevelType('cut'); 24655var TOP_DOUBLE_CLICK = unsafeCastStringToDOMTopLevelType('dblclick'); 24656var TOP_AUX_CLICK = unsafeCastStringToDOMTopLevelType('auxclick'); 24657var TOP_DRAG = unsafeCastStringToDOMTopLevelType('drag'); 24658var TOP_DRAG_END = unsafeCastStringToDOMTopLevelType('dragend'); 24659var TOP_DRAG_ENTER = unsafeCastStringToDOMTopLevelType('dragenter'); 24660var TOP_DRAG_EXIT = unsafeCastStringToDOMTopLevelType('dragexit'); 24661var TOP_DRAG_LEAVE = unsafeCastStringToDOMTopLevelType('dragleave'); 24662var TOP_DRAG_OVER = unsafeCastStringToDOMTopLevelType('dragover'); 24663var TOP_DRAG_START = unsafeCastStringToDOMTopLevelType('dragstart'); 24664var TOP_DROP = unsafeCastStringToDOMTopLevelType('drop'); 24665var TOP_DURATION_CHANGE = unsafeCastStringToDOMTopLevelType('durationchange'); 24666var TOP_EMPTIED = unsafeCastStringToDOMTopLevelType('emptied'); 24667var TOP_ENCRYPTED = unsafeCastStringToDOMTopLevelType('encrypted'); 24668var TOP_ENDED = unsafeCastStringToDOMTopLevelType('ended'); 24669var TOP_ERROR = unsafeCastStringToDOMTopLevelType('error'); 24670var TOP_FOCUS = unsafeCastStringToDOMTopLevelType('focus'); 24671var TOP_GOT_POINTER_CAPTURE = unsafeCastStringToDOMTopLevelType('gotpointercapture'); 24672var TOP_INPUT = unsafeCastStringToDOMTopLevelType('input'); 24673var TOP_INVALID = unsafeCastStringToDOMTopLevelType('invalid'); 24674var TOP_KEY_DOWN = unsafeCastStringToDOMTopLevelType('keydown'); 24675var TOP_KEY_PRESS = unsafeCastStringToDOMTopLevelType('keypress'); 24676var TOP_KEY_UP = unsafeCastStringToDOMTopLevelType('keyup'); 24677var TOP_LOAD = unsafeCastStringToDOMTopLevelType('load'); 24678var TOP_LOAD_START = unsafeCastStringToDOMTopLevelType('loadstart'); 24679var TOP_LOADED_DATA = unsafeCastStringToDOMTopLevelType('loadeddata'); 24680var TOP_LOADED_METADATA = unsafeCastStringToDOMTopLevelType('loadedmetadata'); 24681var TOP_LOST_POINTER_CAPTURE = unsafeCastStringToDOMTopLevelType('lostpointercapture'); 24682var TOP_MOUSE_DOWN = unsafeCastStringToDOMTopLevelType('mousedown'); 24683var TOP_MOUSE_MOVE = unsafeCastStringToDOMTopLevelType('mousemove'); 24684var TOP_MOUSE_OUT = unsafeCastStringToDOMTopLevelType('mouseout'); 24685var TOP_MOUSE_OVER = unsafeCastStringToDOMTopLevelType('mouseover'); 24686var TOP_MOUSE_UP = unsafeCastStringToDOMTopLevelType('mouseup'); 24687var TOP_PASTE = unsafeCastStringToDOMTopLevelType('paste'); 24688var TOP_PAUSE = unsafeCastStringToDOMTopLevelType('pause'); 24689var TOP_PLAY = unsafeCastStringToDOMTopLevelType('play'); 24690var TOP_PLAYING = unsafeCastStringToDOMTopLevelType('playing'); 24691var TOP_POINTER_CANCEL = unsafeCastStringToDOMTopLevelType('pointercancel'); 24692var TOP_POINTER_DOWN = unsafeCastStringToDOMTopLevelType('pointerdown'); 24693var TOP_POINTER_MOVE = unsafeCastStringToDOMTopLevelType('pointermove'); 24694var TOP_POINTER_OUT = unsafeCastStringToDOMTopLevelType('pointerout'); 24695var TOP_POINTER_OVER = unsafeCastStringToDOMTopLevelType('pointerover'); 24696var TOP_POINTER_UP = unsafeCastStringToDOMTopLevelType('pointerup'); 24697var TOP_PROGRESS = unsafeCastStringToDOMTopLevelType('progress'); 24698var TOP_RATE_CHANGE = unsafeCastStringToDOMTopLevelType('ratechange'); 24699var TOP_RESET = unsafeCastStringToDOMTopLevelType('reset'); 24700var TOP_SCROLL = unsafeCastStringToDOMTopLevelType('scroll'); 24701var TOP_SEEKED = unsafeCastStringToDOMTopLevelType('seeked'); 24702var TOP_SEEKING = unsafeCastStringToDOMTopLevelType('seeking'); 24703var TOP_SELECTION_CHANGE = unsafeCastStringToDOMTopLevelType('selectionchange'); 24704var TOP_STALLED = unsafeCastStringToDOMTopLevelType('stalled'); 24705var TOP_SUBMIT = unsafeCastStringToDOMTopLevelType('submit'); 24706var TOP_SUSPEND = unsafeCastStringToDOMTopLevelType('suspend'); 24707var TOP_TEXT_INPUT = unsafeCastStringToDOMTopLevelType('textInput'); 24708var TOP_TIME_UPDATE = unsafeCastStringToDOMTopLevelType('timeupdate'); 24709var TOP_TOGGLE = unsafeCastStringToDOMTopLevelType('toggle'); 24710var TOP_TOUCH_CANCEL = unsafeCastStringToDOMTopLevelType('touchcancel'); 24711var TOP_TOUCH_END = unsafeCastStringToDOMTopLevelType('touchend'); 24712var TOP_TOUCH_MOVE = unsafeCastStringToDOMTopLevelType('touchmove'); 24713var TOP_TOUCH_START = unsafeCastStringToDOMTopLevelType('touchstart'); 24714var TOP_TRANSITION_END = unsafeCastStringToDOMTopLevelType(getVendorPrefixedEventName('transitionend')); 24715var TOP_VOLUME_CHANGE = unsafeCastStringToDOMTopLevelType('volumechange'); 24716var TOP_WAITING = unsafeCastStringToDOMTopLevelType('waiting'); 24717var TOP_WHEEL = unsafeCastStringToDOMTopLevelType('wheel'); // List of events that need to be individually attached to media elements. 24718// Note that events in this list will *not* be listened to at the top level 24719// unless they're explicitly whitelisted in `ReactBrowserEventEmitter.listenTo`. 24720 24721var mediaEventTypes = [TOP_ABORT, TOP_CAN_PLAY, TOP_CAN_PLAY_THROUGH, TOP_DURATION_CHANGE, TOP_EMPTIED, TOP_ENCRYPTED, TOP_ENDED, TOP_ERROR, TOP_LOADED_DATA, TOP_LOADED_METADATA, TOP_LOAD_START, TOP_PAUSE, TOP_PLAY, TOP_PLAYING, TOP_PROGRESS, TOP_RATE_CHANGE, TOP_SEEKED, TOP_SEEKING, TOP_STALLED, TOP_SUSPEND, TOP_TIME_UPDATE, TOP_VOLUME_CHANGE, TOP_WAITING]; 24722function getRawEventName(topLevelType) { 24723 return unsafeCastDOMTopLevelTypeToString(topLevelType); 24724} 24725 24726var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map; // prettier-ignore 24727 24728var elementListenerMap = new PossiblyWeakMap(); 24729function getListenerMapForElement(element) { 24730 var listenerMap = elementListenerMap.get(element); 24731 24732 if (listenerMap === undefined) { 24733 listenerMap = new Map(); 24734 elementListenerMap.set(element, listenerMap); 24735 } 24736 24737 return listenerMap; 24738} 24739 24740/** 24741 * `ReactInstanceMap` maintains a mapping from a public facing stateful 24742 * instance (key) and the internal representation (value). This allows public 24743 * methods to accept the user facing instance as an argument and map them back 24744 * to internal methods. 24745 * 24746 * Note that this module is currently shared and assumed to be stateless. 24747 * If this becomes an actual Map, that will break. 24748 */ 24749function get(key) { 24750 return key._reactInternalFiber; 24751} 24752function has(key) { 24753 return key._reactInternalFiber !== undefined; 24754} 24755function set(key, value) { 24756 key._reactInternalFiber = value; 24757} 24758 24759// Don't change these two values. They're used by React Dev Tools. 24760var NoEffect = 24761/* */ 247620; 24763var PerformedWork = 24764/* */ 247651; // You can change the rest (and add more). 24766 24767var Placement = 24768/* */ 247692; 24770var Update = 24771/* */ 247724; 24773var PlacementAndUpdate = 24774/* */ 247756; 24776var Deletion = 24777/* */ 247788; 24779var ContentReset = 24780/* */ 2478116; 24782var Callback = 24783/* */ 2478432; 24785var DidCapture = 24786/* */ 2478764; 24788var Ref = 24789/* */ 24790128; 24791var Snapshot = 24792/* */ 24793256; 24794var Passive = 24795/* */ 24796512; 24797var Hydrating = 24798/* */ 247991024; 24800var HydratingAndUpdate = 24801/* */ 248021028; // Passive & Update & Callback & Ref & Snapshot 24803 24804var LifecycleEffectMask = 24805/* */ 24806932; // Union of all host effects 24807 24808var HostEffectMask = 24809/* */ 248102047; 24811var Incomplete = 24812/* */ 248132048; 24814var ShouldCapture = 24815/* */ 248164096; 24817 24818var ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner; 24819function getNearestMountedFiber(fiber) { 24820 var node = fiber; 24821 var nearestMounted = fiber; 24822 24823 if (!fiber.alternate) { 24824 // If there is no alternate, this might be a new tree that isn't inserted 24825 // yet. If it is, then it will have a pending insertion effect on it. 24826 var nextNode = node; 24827 24828 do { 24829 node = nextNode; 24830 24831 if ((node.effectTag & (Placement | Hydrating)) !== NoEffect) { 24832 // This is an insertion or in-progress hydration. The nearest possible 24833 // mounted fiber is the parent but we need to continue to figure out 24834 // if that one is still mounted. 24835 nearestMounted = node.return; 24836 } 24837 24838 nextNode = node.return; 24839 } while (nextNode); 24840 } else { 24841 while (node.return) { 24842 node = node.return; 24843 } 24844 } 24845 24846 if (node.tag === HostRoot) { 24847 // TODO: Check if this was a nested HostRoot when used with 24848 // renderContainerIntoSubtree. 24849 return nearestMounted; 24850 } // If we didn't hit the root, that means that we're in an disconnected tree 24851 // that has been unmounted. 24852 24853 24854 return null; 24855} 24856function getSuspenseInstanceFromFiber(fiber) { 24857 if (fiber.tag === SuspenseComponent) { 24858 var suspenseState = fiber.memoizedState; 24859 24860 if (suspenseState === null) { 24861 var current = fiber.alternate; 24862 24863 if (current !== null) { 24864 suspenseState = current.memoizedState; 24865 } 24866 } 24867 24868 if (suspenseState !== null) { 24869 return suspenseState.dehydrated; 24870 } 24871 } 24872 24873 return null; 24874} 24875function getContainerFromFiber(fiber) { 24876 return fiber.tag === HostRoot ? fiber.stateNode.containerInfo : null; 24877} 24878function isFiberMounted(fiber) { 24879 return getNearestMountedFiber(fiber) === fiber; 24880} 24881function isMounted(component) { 24882 { 24883 var owner = ReactCurrentOwner.current; 24884 24885 if (owner !== null && owner.tag === ClassComponent) { 24886 var ownerFiber = owner; 24887 var instance = ownerFiber.stateNode; 24888 24889 if (!instance._warnedAboutRefsInRender) { 24890 error('%s is accessing isMounted inside its render() function. ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', getComponentName(ownerFiber.type) || 'A component'); 24891 } 24892 24893 instance._warnedAboutRefsInRender = true; 24894 } 24895 } 24896 24897 var fiber = get(component); 24898 24899 if (!fiber) { 24900 return false; 24901 } 24902 24903 return getNearestMountedFiber(fiber) === fiber; 24904} 24905 24906function assertIsMounted(fiber) { 24907 if (!(getNearestMountedFiber(fiber) === fiber)) { 24908 { 24909 throw Error( "Unable to find node on an unmounted component." ); 24910 } 24911 } 24912} 24913 24914function findCurrentFiberUsingSlowPath(fiber) { 24915 var alternate = fiber.alternate; 24916 24917 if (!alternate) { 24918 // If there is no alternate, then we only need to check if it is mounted. 24919 var nearestMounted = getNearestMountedFiber(fiber); 24920 24921 if (!(nearestMounted !== null)) { 24922 { 24923 throw Error( "Unable to find node on an unmounted component." ); 24924 } 24925 } 24926 24927 if (nearestMounted !== fiber) { 24928 return null; 24929 } 24930 24931 return fiber; 24932 } // If we have two possible branches, we'll walk backwards up to the root 24933 // to see what path the root points to. On the way we may hit one of the 24934 // special cases and we'll deal with them. 24935 24936 24937 var a = fiber; 24938 var b = alternate; 24939 24940 while (true) { 24941 var parentA = a.return; 24942 24943 if (parentA === null) { 24944 // We're at the root. 24945 break; 24946 } 24947 24948 var parentB = parentA.alternate; 24949 24950 if (parentB === null) { 24951 // There is no alternate. This is an unusual case. Currently, it only 24952 // happens when a Suspense component is hidden. An extra fragment fiber 24953 // is inserted in between the Suspense fiber and its children. Skip 24954 // over this extra fragment fiber and proceed to the next parent. 24955 var nextParent = parentA.return; 24956 24957 if (nextParent !== null) { 24958 a = b = nextParent; 24959 continue; 24960 } // If there's no parent, we're at the root. 24961 24962 24963 break; 24964 } // If both copies of the parent fiber point to the same child, we can 24965 // assume that the child is current. This happens when we bailout on low 24966 // priority: the bailed out fiber's child reuses the current child. 24967 24968 24969 if (parentA.child === parentB.child) { 24970 var child = parentA.child; 24971 24972 while (child) { 24973 if (child === a) { 24974 // We've determined that A is the current branch. 24975 assertIsMounted(parentA); 24976 return fiber; 24977 } 24978 24979 if (child === b) { 24980 // We've determined that B is the current branch. 24981 assertIsMounted(parentA); 24982 return alternate; 24983 } 24984 24985 child = child.sibling; 24986 } // We should never have an alternate for any mounting node. So the only 24987 // way this could possibly happen is if this was unmounted, if at all. 24988 24989 24990 { 24991 { 24992 throw Error( "Unable to find node on an unmounted component." ); 24993 } 24994 } 24995 } 24996 24997 if (a.return !== b.return) { 24998 // The return pointer of A and the return pointer of B point to different 24999 // fibers. We assume that return pointers never criss-cross, so A must 25000 // belong to the child set of A.return, and B must belong to the child 25001 // set of B.return. 25002 a = parentA; 25003 b = parentB; 25004 } else { 25005 // The return pointers point to the same fiber. We'll have to use the 25006 // default, slow path: scan the child sets of each parent alternate to see 25007 // which child belongs to which set. 25008 // 25009 // Search parent A's child set 25010 var didFindChild = false; 25011 var _child = parentA.child; 25012 25013 while (_child) { 25014 if (_child === a) { 25015 didFindChild = true; 25016 a = parentA; 25017 b = parentB; 25018 break; 25019 } 25020 25021 if (_child === b) { 25022 didFindChild = true; 25023 b = parentA; 25024 a = parentB; 25025 break; 25026 } 25027 25028 _child = _child.sibling; 25029 } 25030 25031 if (!didFindChild) { 25032 // Search parent B's child set 25033 _child = parentB.child; 25034 25035 while (_child) { 25036 if (_child === a) { 25037 didFindChild = true; 25038 a = parentB; 25039 b = parentA; 25040 break; 25041 } 25042 25043 if (_child === b) { 25044 didFindChild = true; 25045 b = parentB; 25046 a = parentA; 25047 break; 25048 } 25049 25050 _child = _child.sibling; 25051 } 25052 25053 if (!didFindChild) { 25054 { 25055 throw Error( "Child was not found in either parent set. This indicates a bug in React related to the return pointer. Please file an issue." ); 25056 } 25057 } 25058 } 25059 } 25060 25061 if (!(a.alternate === b)) { 25062 { 25063 throw Error( "Return fibers should always be each others' alternates. This error is likely caused by a bug in React. Please file an issue." ); 25064 } 25065 } 25066 } // If the root is not a host container, we're in a disconnected tree. I.e. 25067 // unmounted. 25068 25069 25070 if (!(a.tag === HostRoot)) { 25071 { 25072 throw Error( "Unable to find node on an unmounted component." ); 25073 } 25074 } 25075 25076 if (a.stateNode.current === a) { 25077 // We've determined that A is the current branch. 25078 return fiber; 25079 } // Otherwise B has to be current branch. 25080 25081 25082 return alternate; 25083} 25084function findCurrentHostFiber(parent) { 25085 var currentParent = findCurrentFiberUsingSlowPath(parent); 25086 25087 if (!currentParent) { 25088 return null; 25089 } // Next we'll drill down this component to find the first HostComponent/Text. 25090 25091 25092 var node = currentParent; 25093 25094 while (true) { 25095 if (node.tag === HostComponent || node.tag === HostText) { 25096 return node; 25097 } else if (node.child) { 25098 node.child.return = node; 25099 node = node.child; 25100 continue; 25101 } 25102 25103 if (node === currentParent) { 25104 return null; 25105 } 25106 25107 while (!node.sibling) { 25108 if (!node.return || node.return === currentParent) { 25109 return null; 25110 } 25111 25112 node = node.return; 25113 } 25114 25115 node.sibling.return = node.return; 25116 node = node.sibling; 25117 } // Flow needs the return null here, but ESLint complains about it. 25118 // eslint-disable-next-line no-unreachable 25119 25120 25121 return null; 25122} 25123function findCurrentHostFiberWithNoPortals(parent) { 25124 var currentParent = findCurrentFiberUsingSlowPath(parent); 25125 25126 if (!currentParent) { 25127 return null; 25128 } // Next we'll drill down this component to find the first HostComponent/Text. 25129 25130 25131 var node = currentParent; 25132 25133 while (true) { 25134 if (node.tag === HostComponent || node.tag === HostText || enableFundamentalAPI ) { 25135 return node; 25136 } else if (node.child && node.tag !== HostPortal) { 25137 node.child.return = node; 25138 node = node.child; 25139 continue; 25140 } 25141 25142 if (node === currentParent) { 25143 return null; 25144 } 25145 25146 while (!node.sibling) { 25147 if (!node.return || node.return === currentParent) { 25148 return null; 25149 } 25150 25151 node = node.return; 25152 } 25153 25154 node.sibling.return = node.return; 25155 node = node.sibling; 25156 } // Flow needs the return null here, but ESLint complains about it. 25157 // eslint-disable-next-line no-unreachable 25158 25159 25160 return null; 25161} 25162 25163/** 25164 * Accumulates items that must not be null or undefined into the first one. This 25165 * is used to conserve memory by avoiding array allocations, and thus sacrifices 25166 * API cleanness. Since `current` can be null before being passed in and not 25167 * null after this function, make sure to assign it back to `current`: 25168 * 25169 * `a = accumulateInto(a, b);` 25170 * 25171 * This API should be sparingly used. Try `accumulate` for something cleaner. 25172 * 25173 * @return {*|array<*>} An accumulation of items. 25174 */ 25175 25176function accumulateInto(current, next) { 25177 if (!(next != null)) { 25178 { 25179 throw Error( "accumulateInto(...): Accumulated items must not be null or undefined." ); 25180 } 25181 } 25182 25183 if (current == null) { 25184 return next; 25185 } // Both are not empty. Warning: Never call x.concat(y) when you are not 25186 // certain that x is an Array (x could be a string with concat method). 25187 25188 25189 if (Array.isArray(current)) { 25190 if (Array.isArray(next)) { 25191 current.push.apply(current, next); 25192 return current; 25193 } 25194 25195 current.push(next); 25196 return current; 25197 } 25198 25199 if (Array.isArray(next)) { 25200 // A bit too dangerous to mutate `next`. 25201 return [current].concat(next); 25202 } 25203 25204 return [current, next]; 25205} 25206 25207/** 25208 * @param {array} arr an "accumulation" of items which is either an Array or 25209 * a single item. Useful when paired with the `accumulate` module. This is a 25210 * simple utility that allows us to reason about a collection of items, but 25211 * handling the case when there is exactly one item (and we do not need to 25212 * allocate an array). 25213 * @param {function} cb Callback invoked with each element or a collection. 25214 * @param {?} [scope] Scope used as `this` in a callback. 25215 */ 25216function forEachAccumulated(arr, cb, scope) { 25217 if (Array.isArray(arr)) { 25218 arr.forEach(cb, scope); 25219 } else if (arr) { 25220 cb.call(scope, arr); 25221 } 25222} 25223 25224/** 25225 * Internal queue of events that have accumulated their dispatches and are 25226 * waiting to have their dispatches executed. 25227 */ 25228 25229var eventQueue = null; 25230/** 25231 * Dispatches an event and releases it back into the pool, unless persistent. 25232 * 25233 * @param {?object} event Synthetic event to be dispatched. 25234 * @private 25235 */ 25236 25237var executeDispatchesAndRelease = function (event) { 25238 if (event) { 25239 executeDispatchesInOrder(event); 25240 25241 if (!event.isPersistent()) { 25242 event.constructor.release(event); 25243 } 25244 } 25245}; 25246 25247var executeDispatchesAndReleaseTopLevel = function (e) { 25248 return executeDispatchesAndRelease(e); 25249}; 25250 25251function runEventsInBatch(events) { 25252 if (events !== null) { 25253 eventQueue = accumulateInto(eventQueue, events); 25254 } // Set `eventQueue` to null before processing it so that we can tell if more 25255 // events get enqueued while processing. 25256 25257 25258 var processingEventQueue = eventQueue; 25259 eventQueue = null; 25260 25261 if (!processingEventQueue) { 25262 return; 25263 } 25264 25265 forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseTopLevel); 25266 25267 if (!!eventQueue) { 25268 { 25269 throw Error( "processEventQueue(): Additional events were enqueued while processing an event queue. Support for this has not yet been implemented." ); 25270 } 25271 } // This would be a good time to rethrow if any of the event handlers threw. 25272 25273 25274 rethrowCaughtError(); 25275} 25276 25277/** 25278 * Gets the target node from a native browser event by accounting for 25279 * inconsistencies in browser DOM APIs. 25280 * 25281 * @param {object} nativeEvent Native browser event. 25282 * @return {DOMEventTarget} Target node. 25283 */ 25284 25285function getEventTarget(nativeEvent) { 25286 // Fallback to nativeEvent.srcElement for IE9 25287 // https://github.com/facebook/react/issues/12506 25288 var target = nativeEvent.target || nativeEvent.srcElement || window; // Normalize SVG <use> element events #4963 25289 25290 if (target.correspondingUseElement) { 25291 target = target.correspondingUseElement; 25292 } // Safari may fire events on text nodes (Node.TEXT_NODE is 3). 25293 // @see http://www.quirksmode.org/js/events_properties.html 25294 25295 25296 return target.nodeType === TEXT_NODE ? target.parentNode : target; 25297} 25298 25299/** 25300 * Checks if an event is supported in the current execution environment. 25301 * 25302 * NOTE: This will not work correctly for non-generic events such as `change`, 25303 * `reset`, `load`, `error`, and `select`. 25304 * 25305 * Borrows from Modernizr. 25306 * 25307 * @param {string} eventNameSuffix Event name, e.g. "click". 25308 * @return {boolean} True if the event is supported. 25309 * @internal 25310 * @license Modernizr 3.0.0pre (Custom Build) | MIT 25311 */ 25312 25313function isEventSupported(eventNameSuffix) { 25314 if (!canUseDOM) { 25315 return false; 25316 } 25317 25318 var eventName = 'on' + eventNameSuffix; 25319 var isSupported = eventName in document; 25320 25321 if (!isSupported) { 25322 var element = document.createElement('div'); 25323 element.setAttribute(eventName, 'return;'); 25324 isSupported = typeof element[eventName] === 'function'; 25325 } 25326 25327 return isSupported; 25328} 25329 25330/** 25331 * Summary of `DOMEventPluginSystem` event handling: 25332 * 25333 * - Top-level delegation is used to trap most native browser events. This 25334 * may only occur in the main thread and is the responsibility of 25335 * ReactDOMEventListener, which is injected and can therefore support 25336 * pluggable event sources. This is the only work that occurs in the main 25337 * thread. 25338 * 25339 * - We normalize and de-duplicate events to account for browser quirks. This 25340 * may be done in the worker thread. 25341 * 25342 * - Forward these native events (with the associated top-level type used to 25343 * trap it) to `EventPluginRegistry`, which in turn will ask plugins if they want 25344 * to extract any synthetic events. 25345 * 25346 * - The `EventPluginRegistry` will then process each event by annotating them with 25347 * "dispatches", a sequence of listeners and IDs that care about that event. 25348 * 25349 * - The `EventPluginRegistry` then dispatches the events. 25350 * 25351 * Overview of React and the event system: 25352 * 25353 * +------------+ . 25354 * | DOM | . 25355 * +------------+ . 25356 * | . 25357 * v . 25358 * +------------+ . 25359 * | ReactEvent | . 25360 * | Listener | . 25361 * +------------+ . +-----------+ 25362 * | . +--------+|SimpleEvent| 25363 * | . | |Plugin | 25364 * +-----|------+ . v +-----------+ 25365 * | | | . +--------------+ +------------+ 25366 * | +-----------.--->|PluginRegistry| | Event | 25367 * | | . | | +-----------+ | Propagators| 25368 * | ReactEvent | . | | |TapEvent | |------------| 25369 * | Emitter | . | |<---+|Plugin | |other plugin| 25370 * | | . | | +-----------+ | utilities | 25371 * | +-----------.--->| | +------------+ 25372 * | | | . +--------------+ 25373 * +-----|------+ . ^ +-----------+ 25374 * | . | |Enter/Leave| 25375 * + . +-------+|Plugin | 25376 * +-------------+ . +-----------+ 25377 * | application | . 25378 * |-------------| . 25379 * | | . 25380 * | | . 25381 * +-------------+ . 25382 * . 25383 * React Core . General Purpose Event Plugin System 25384 */ 25385 25386var CALLBACK_BOOKKEEPING_POOL_SIZE = 10; 25387var callbackBookkeepingPool = []; 25388 25389function releaseTopLevelCallbackBookKeeping(instance) { 25390 instance.topLevelType = null; 25391 instance.nativeEvent = null; 25392 instance.targetInst = null; 25393 instance.ancestors.length = 0; 25394 25395 if (callbackBookkeepingPool.length < CALLBACK_BOOKKEEPING_POOL_SIZE) { 25396 callbackBookkeepingPool.push(instance); 25397 } 25398} // Used to store ancestor hierarchy in top level callback 25399 25400 25401function getTopLevelCallbackBookKeeping(topLevelType, nativeEvent, targetInst, eventSystemFlags) { 25402 if (callbackBookkeepingPool.length) { 25403 var instance = callbackBookkeepingPool.pop(); 25404 instance.topLevelType = topLevelType; 25405 instance.eventSystemFlags = eventSystemFlags; 25406 instance.nativeEvent = nativeEvent; 25407 instance.targetInst = targetInst; 25408 return instance; 25409 } 25410 25411 return { 25412 topLevelType: topLevelType, 25413 eventSystemFlags: eventSystemFlags, 25414 nativeEvent: nativeEvent, 25415 targetInst: targetInst, 25416 ancestors: [] 25417 }; 25418} 25419/** 25420 * Find the deepest React component completely containing the root of the 25421 * passed-in instance (for use when entire React trees are nested within each 25422 * other). If React trees are not nested, returns null. 25423 */ 25424 25425 25426function findRootContainerNode(inst) { 25427 if (inst.tag === HostRoot) { 25428 return inst.stateNode.containerInfo; 25429 } // TODO: It may be a good idea to cache this to prevent unnecessary DOM 25430 // traversal, but caching is difficult to do correctly without using a 25431 // mutation observer to listen for all DOM changes. 25432 25433 25434 while (inst.return) { 25435 inst = inst.return; 25436 } 25437 25438 if (inst.tag !== HostRoot) { 25439 // This can happen if we're in a detached tree. 25440 return null; 25441 } 25442 25443 return inst.stateNode.containerInfo; 25444} 25445/** 25446 * Allows registered plugins an opportunity to extract events from top-level 25447 * native browser events. 25448 * 25449 * @return {*} An accumulation of synthetic events. 25450 * @internal 25451 */ 25452 25453 25454function extractPluginEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags) { 25455 var events = null; 25456 25457 for (var i = 0; i < plugins.length; i++) { 25458 // Not every plugin in the ordering may be loaded at runtime. 25459 var possiblePlugin = plugins[i]; 25460 25461 if (possiblePlugin) { 25462 var extractedEvents = possiblePlugin.extractEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags); 25463 25464 if (extractedEvents) { 25465 events = accumulateInto(events, extractedEvents); 25466 } 25467 } 25468 } 25469 25470 return events; 25471} 25472 25473function runExtractedPluginEventsInBatch(topLevelType, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags) { 25474 var events = extractPluginEvents(topLevelType, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags); 25475 runEventsInBatch(events); 25476} 25477 25478function handleTopLevel(bookKeeping) { 25479 var targetInst = bookKeeping.targetInst; // Loop through the hierarchy, in case there's any nested components. 25480 // It's important that we build the array of ancestors before calling any 25481 // event handlers, because event handlers can modify the DOM, leading to 25482 // inconsistencies with ReactMount's node cache. See #1105. 25483 25484 var ancestor = targetInst; 25485 25486 do { 25487 if (!ancestor) { 25488 var ancestors = bookKeeping.ancestors; 25489 ancestors.push(ancestor); 25490 break; 25491 } 25492 25493 var root = findRootContainerNode(ancestor); 25494 25495 if (!root) { 25496 break; 25497 } 25498 25499 var tag = ancestor.tag; 25500 25501 if (tag === HostComponent || tag === HostText) { 25502 bookKeeping.ancestors.push(ancestor); 25503 } 25504 25505 ancestor = getClosestInstanceFromNode(root); 25506 } while (ancestor); 25507 25508 for (var i = 0; i < bookKeeping.ancestors.length; i++) { 25509 targetInst = bookKeeping.ancestors[i]; 25510 var eventTarget = getEventTarget(bookKeeping.nativeEvent); 25511 var topLevelType = bookKeeping.topLevelType; 25512 var nativeEvent = bookKeeping.nativeEvent; 25513 var eventSystemFlags = bookKeeping.eventSystemFlags; // If this is the first ancestor, we mark it on the system flags 25514 25515 if (i === 0) { 25516 eventSystemFlags |= IS_FIRST_ANCESTOR; 25517 } 25518 25519 runExtractedPluginEventsInBatch(topLevelType, targetInst, nativeEvent, eventTarget, eventSystemFlags); 25520 } 25521} 25522 25523function dispatchEventForLegacyPluginEventSystem(topLevelType, eventSystemFlags, nativeEvent, targetInst) { 25524 var bookKeeping = getTopLevelCallbackBookKeeping(topLevelType, nativeEvent, targetInst, eventSystemFlags); 25525 25526 try { 25527 // Event queue being processed in the same cycle allows 25528 // `preventDefault`. 25529 batchedEventUpdates(handleTopLevel, bookKeeping); 25530 } finally { 25531 releaseTopLevelCallbackBookKeeping(bookKeeping); 25532 } 25533} 25534/** 25535 * We listen for bubbled touch events on the document object. 25536 * 25537 * Firefox v8.01 (and possibly others) exhibited strange behavior when 25538 * mounting `onmousemove` events at some node that was not the document 25539 * element. The symptoms were that if your mouse is not moving over something 25540 * contained within that mount point (for example on the background) the 25541 * top-level listeners for `onmousemove` won't be called. However, if you 25542 * register the `mousemove` on the document object, then it will of course 25543 * catch all `mousemove`s. This along with iOS quirks, justifies restricting 25544 * top-level listeners to the document object only, at least for these 25545 * movement types of events and possibly all events. 25546 * 25547 * @see http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html 25548 * 25549 * Also, `keyup`/`keypress`/`keydown` do not bubble to the window on IE, but 25550 * they bubble to document. 25551 * 25552 * @param {string} registrationName Name of listener (e.g. `onClick`). 25553 * @param {object} mountAt Container where to mount the listener 25554 */ 25555 25556function legacyListenToEvent(registrationName, mountAt) { 25557 var listenerMap = getListenerMapForElement(mountAt); 25558 var dependencies = registrationNameDependencies[registrationName]; 25559 25560 for (var i = 0; i < dependencies.length; i++) { 25561 var dependency = dependencies[i]; 25562 legacyListenToTopLevelEvent(dependency, mountAt, listenerMap); 25563 } 25564} 25565function legacyListenToTopLevelEvent(topLevelType, mountAt, listenerMap) { 25566 if (!listenerMap.has(topLevelType)) { 25567 switch (topLevelType) { 25568 case TOP_SCROLL: 25569 trapCapturedEvent(TOP_SCROLL, mountAt); 25570 break; 25571 25572 case TOP_FOCUS: 25573 case TOP_BLUR: 25574 trapCapturedEvent(TOP_FOCUS, mountAt); 25575 trapCapturedEvent(TOP_BLUR, mountAt); // We set the flag for a single dependency later in this function, 25576 // but this ensures we mark both as attached rather than just one. 25577 25578 listenerMap.set(TOP_BLUR, null); 25579 listenerMap.set(TOP_FOCUS, null); 25580 break; 25581 25582 case TOP_CANCEL: 25583 case TOP_CLOSE: 25584 if (isEventSupported(getRawEventName(topLevelType))) { 25585 trapCapturedEvent(topLevelType, mountAt); 25586 } 25587 25588 break; 25589 25590 case TOP_INVALID: 25591 case TOP_SUBMIT: 25592 case TOP_RESET: 25593 // We listen to them on the target DOM elements. 25594 // Some of them bubble so we don't want them to fire twice. 25595 break; 25596 25597 default: 25598 // By default, listen on the top level to all non-media events. 25599 // Media events don't bubble so adding the listener wouldn't do anything. 25600 var isMediaEvent = mediaEventTypes.indexOf(topLevelType) !== -1; 25601 25602 if (!isMediaEvent) { 25603 trapBubbledEvent(topLevelType, mountAt); 25604 } 25605 25606 break; 25607 } 25608 25609 listenerMap.set(topLevelType, null); 25610 } 25611} 25612function isListeningToAllDependencies(registrationName, mountAt) { 25613 var listenerMap = getListenerMapForElement(mountAt); 25614 var dependencies = registrationNameDependencies[registrationName]; 25615 25616 for (var i = 0; i < dependencies.length; i++) { 25617 var dependency = dependencies[i]; 25618 25619 if (!listenerMap.has(dependency)) { 25620 return false; 25621 } 25622 } 25623 25624 return true; 25625} 25626 25627var attemptUserBlockingHydration; 25628function setAttemptUserBlockingHydration(fn) { 25629 attemptUserBlockingHydration = fn; 25630} 25631var attemptContinuousHydration; 25632function setAttemptContinuousHydration(fn) { 25633 attemptContinuousHydration = fn; 25634} 25635var attemptHydrationAtCurrentPriority; 25636function setAttemptHydrationAtCurrentPriority(fn) { 25637 attemptHydrationAtCurrentPriority = fn; 25638} // TODO: Upgrade this definition once we're on a newer version of Flow that 25639var hasScheduledReplayAttempt = false; // The queue of discrete events to be replayed. 25640 25641var queuedDiscreteEvents = []; // Indicates if any continuous event targets are non-null for early bailout. 25642// if the last target was dehydrated. 25643 25644var queuedFocus = null; 25645var queuedDrag = null; 25646var queuedMouse = null; // For pointer events there can be one latest event per pointerId. 25647 25648var queuedPointers = new Map(); 25649var queuedPointerCaptures = new Map(); // We could consider replaying selectionchange and touchmoves too. 25650 25651var queuedExplicitHydrationTargets = []; 25652function hasQueuedDiscreteEvents() { 25653 return queuedDiscreteEvents.length > 0; 25654} 25655var discreteReplayableEvents = [TOP_MOUSE_DOWN, TOP_MOUSE_UP, TOP_TOUCH_CANCEL, TOP_TOUCH_END, TOP_TOUCH_START, TOP_AUX_CLICK, TOP_DOUBLE_CLICK, TOP_POINTER_CANCEL, TOP_POINTER_DOWN, TOP_POINTER_UP, TOP_DRAG_END, TOP_DRAG_START, TOP_DROP, TOP_COMPOSITION_END, TOP_COMPOSITION_START, TOP_KEY_DOWN, TOP_KEY_PRESS, TOP_KEY_UP, TOP_INPUT, TOP_TEXT_INPUT, TOP_CLOSE, TOP_CANCEL, TOP_COPY, TOP_CUT, TOP_PASTE, TOP_CLICK, TOP_CHANGE, TOP_CONTEXT_MENU, TOP_RESET, TOP_SUBMIT]; 25656var continuousReplayableEvents = [TOP_FOCUS, TOP_BLUR, TOP_DRAG_ENTER, TOP_DRAG_LEAVE, TOP_MOUSE_OVER, TOP_MOUSE_OUT, TOP_POINTER_OVER, TOP_POINTER_OUT, TOP_GOT_POINTER_CAPTURE, TOP_LOST_POINTER_CAPTURE]; 25657function isReplayableDiscreteEvent(eventType) { 25658 return discreteReplayableEvents.indexOf(eventType) > -1; 25659} 25660 25661function trapReplayableEventForDocument(topLevelType, document, listenerMap) { 25662 legacyListenToTopLevelEvent(topLevelType, document, listenerMap); 25663} 25664 25665function eagerlyTrapReplayableEvents(container, document) { 25666 var listenerMapForDoc = getListenerMapForElement(document); // Discrete 25667 25668 discreteReplayableEvents.forEach(function (topLevelType) { 25669 trapReplayableEventForDocument(topLevelType, document, listenerMapForDoc); 25670 }); // Continuous 25671 25672 continuousReplayableEvents.forEach(function (topLevelType) { 25673 trapReplayableEventForDocument(topLevelType, document, listenerMapForDoc); 25674 }); 25675} 25676 25677function createQueuedReplayableEvent(blockedOn, topLevelType, eventSystemFlags, container, nativeEvent) { 25678 return { 25679 blockedOn: blockedOn, 25680 topLevelType: topLevelType, 25681 eventSystemFlags: eventSystemFlags | IS_REPLAYED, 25682 nativeEvent: nativeEvent, 25683 container: container 25684 }; 25685} 25686 25687function queueDiscreteEvent(blockedOn, topLevelType, eventSystemFlags, container, nativeEvent) { 25688 var queuedEvent = createQueuedReplayableEvent(blockedOn, topLevelType, eventSystemFlags, container, nativeEvent); 25689 queuedDiscreteEvents.push(queuedEvent); 25690} // Resets the replaying for this type of continuous event to no event. 25691 25692function clearIfContinuousEvent(topLevelType, nativeEvent) { 25693 switch (topLevelType) { 25694 case TOP_FOCUS: 25695 case TOP_BLUR: 25696 queuedFocus = null; 25697 break; 25698 25699 case TOP_DRAG_ENTER: 25700 case TOP_DRAG_LEAVE: 25701 queuedDrag = null; 25702 break; 25703 25704 case TOP_MOUSE_OVER: 25705 case TOP_MOUSE_OUT: 25706 queuedMouse = null; 25707 break; 25708 25709 case TOP_POINTER_OVER: 25710 case TOP_POINTER_OUT: 25711 { 25712 var pointerId = nativeEvent.pointerId; 25713 queuedPointers.delete(pointerId); 25714 break; 25715 } 25716 25717 case TOP_GOT_POINTER_CAPTURE: 25718 case TOP_LOST_POINTER_CAPTURE: 25719 { 25720 var _pointerId = nativeEvent.pointerId; 25721 queuedPointerCaptures.delete(_pointerId); 25722 break; 25723 } 25724 } 25725} 25726 25727function accumulateOrCreateContinuousQueuedReplayableEvent(existingQueuedEvent, blockedOn, topLevelType, eventSystemFlags, container, nativeEvent) { 25728 if (existingQueuedEvent === null || existingQueuedEvent.nativeEvent !== nativeEvent) { 25729 var queuedEvent = createQueuedReplayableEvent(blockedOn, topLevelType, eventSystemFlags, container, nativeEvent); 25730 25731 if (blockedOn !== null) { 25732 var _fiber2 = getInstanceFromNode$1(blockedOn); 25733 25734 if (_fiber2 !== null) { 25735 // Attempt to increase the priority of this target. 25736 attemptContinuousHydration(_fiber2); 25737 } 25738 } 25739 25740 return queuedEvent; 25741 } // If we have already queued this exact event, then it's because 25742 // the different event systems have different DOM event listeners. 25743 // We can accumulate the flags and store a single event to be 25744 // replayed. 25745 25746 25747 existingQueuedEvent.eventSystemFlags |= eventSystemFlags; 25748 return existingQueuedEvent; 25749} 25750 25751function queueIfContinuousEvent(blockedOn, topLevelType, eventSystemFlags, container, nativeEvent) { 25752 // These set relatedTarget to null because the replayed event will be treated as if we 25753 // moved from outside the window (no target) onto the target once it hydrates. 25754 // Instead of mutating we could clone the event. 25755 switch (topLevelType) { 25756 case TOP_FOCUS: 25757 { 25758 var focusEvent = nativeEvent; 25759 queuedFocus = accumulateOrCreateContinuousQueuedReplayableEvent(queuedFocus, blockedOn, topLevelType, eventSystemFlags, container, focusEvent); 25760 return true; 25761 } 25762 25763 case TOP_DRAG_ENTER: 25764 { 25765 var dragEvent = nativeEvent; 25766 queuedDrag = accumulateOrCreateContinuousQueuedReplayableEvent(queuedDrag, blockedOn, topLevelType, eventSystemFlags, container, dragEvent); 25767 return true; 25768 } 25769 25770 case TOP_MOUSE_OVER: 25771 { 25772 var mouseEvent = nativeEvent; 25773 queuedMouse = accumulateOrCreateContinuousQueuedReplayableEvent(queuedMouse, blockedOn, topLevelType, eventSystemFlags, container, mouseEvent); 25774 return true; 25775 } 25776 25777 case TOP_POINTER_OVER: 25778 { 25779 var pointerEvent = nativeEvent; 25780 var pointerId = pointerEvent.pointerId; 25781 queuedPointers.set(pointerId, accumulateOrCreateContinuousQueuedReplayableEvent(queuedPointers.get(pointerId) || null, blockedOn, topLevelType, eventSystemFlags, container, pointerEvent)); 25782 return true; 25783 } 25784 25785 case TOP_GOT_POINTER_CAPTURE: 25786 { 25787 var _pointerEvent = nativeEvent; 25788 var _pointerId2 = _pointerEvent.pointerId; 25789 queuedPointerCaptures.set(_pointerId2, accumulateOrCreateContinuousQueuedReplayableEvent(queuedPointerCaptures.get(_pointerId2) || null, blockedOn, topLevelType, eventSystemFlags, container, _pointerEvent)); 25790 return true; 25791 } 25792 } 25793 25794 return false; 25795} // Check if this target is unblocked. Returns true if it's unblocked. 25796 25797function attemptExplicitHydrationTarget(queuedTarget) { 25798 // TODO: This function shares a lot of logic with attemptToDispatchEvent. 25799 // Try to unify them. It's a bit tricky since it would require two return 25800 // values. 25801 var targetInst = getClosestInstanceFromNode(queuedTarget.target); 25802 25803 if (targetInst !== null) { 25804 var nearestMounted = getNearestMountedFiber(targetInst); 25805 25806 if (nearestMounted !== null) { 25807 var tag = nearestMounted.tag; 25808 25809 if (tag === SuspenseComponent) { 25810 var instance = getSuspenseInstanceFromFiber(nearestMounted); 25811 25812 if (instance !== null) { 25813 // We're blocked on hydrating this boundary. 25814 // Increase its priority. 25815 queuedTarget.blockedOn = instance; 25816 Scheduler.unstable_runWithPriority(queuedTarget.priority, function () { 25817 attemptHydrationAtCurrentPriority(nearestMounted); 25818 }); 25819 return; 25820 } 25821 } else if (tag === HostRoot) { 25822 var root = nearestMounted.stateNode; 25823 25824 if (root.hydrate) { 25825 queuedTarget.blockedOn = getContainerFromFiber(nearestMounted); // We don't currently have a way to increase the priority of 25826 // a root other than sync. 25827 25828 return; 25829 } 25830 } 25831 } 25832 } 25833 25834 queuedTarget.blockedOn = null; 25835} 25836 25837function attemptReplayContinuousQueuedEvent(queuedEvent) { 25838 if (queuedEvent.blockedOn !== null) { 25839 return false; 25840 } 25841 25842 var nextBlockedOn = attemptToDispatchEvent(queuedEvent.topLevelType, queuedEvent.eventSystemFlags, queuedEvent.container, queuedEvent.nativeEvent); 25843 25844 if (nextBlockedOn !== null) { 25845 // We're still blocked. Try again later. 25846 var _fiber3 = getInstanceFromNode$1(nextBlockedOn); 25847 25848 if (_fiber3 !== null) { 25849 attemptContinuousHydration(_fiber3); 25850 } 25851 25852 queuedEvent.blockedOn = nextBlockedOn; 25853 return false; 25854 } 25855 25856 return true; 25857} 25858 25859function attemptReplayContinuousQueuedEventInMap(queuedEvent, key, map) { 25860 if (attemptReplayContinuousQueuedEvent(queuedEvent)) { 25861 map.delete(key); 25862 } 25863} 25864 25865function replayUnblockedEvents() { 25866 hasScheduledReplayAttempt = false; // First replay discrete events. 25867 25868 while (queuedDiscreteEvents.length > 0) { 25869 var nextDiscreteEvent = queuedDiscreteEvents[0]; 25870 25871 if (nextDiscreteEvent.blockedOn !== null) { 25872 // We're still blocked. 25873 // Increase the priority of this boundary to unblock 25874 // the next discrete event. 25875 var _fiber4 = getInstanceFromNode$1(nextDiscreteEvent.blockedOn); 25876 25877 if (_fiber4 !== null) { 25878 attemptUserBlockingHydration(_fiber4); 25879 } 25880 25881 break; 25882 } 25883 25884 var nextBlockedOn = attemptToDispatchEvent(nextDiscreteEvent.topLevelType, nextDiscreteEvent.eventSystemFlags, nextDiscreteEvent.container, nextDiscreteEvent.nativeEvent); 25885 25886 if (nextBlockedOn !== null) { 25887 // We're still blocked. Try again later. 25888 nextDiscreteEvent.blockedOn = nextBlockedOn; 25889 } else { 25890 // We've successfully replayed the first event. Let's try the next one. 25891 queuedDiscreteEvents.shift(); 25892 } 25893 } // Next replay any continuous events. 25894 25895 25896 if (queuedFocus !== null && attemptReplayContinuousQueuedEvent(queuedFocus)) { 25897 queuedFocus = null; 25898 } 25899 25900 if (queuedDrag !== null && attemptReplayContinuousQueuedEvent(queuedDrag)) { 25901 queuedDrag = null; 25902 } 25903 25904 if (queuedMouse !== null && attemptReplayContinuousQueuedEvent(queuedMouse)) { 25905 queuedMouse = null; 25906 } 25907 25908 queuedPointers.forEach(attemptReplayContinuousQueuedEventInMap); 25909 queuedPointerCaptures.forEach(attemptReplayContinuousQueuedEventInMap); 25910} 25911 25912function scheduleCallbackIfUnblocked(queuedEvent, unblocked) { 25913 if (queuedEvent.blockedOn === unblocked) { 25914 queuedEvent.blockedOn = null; 25915 25916 if (!hasScheduledReplayAttempt) { 25917 hasScheduledReplayAttempt = true; // Schedule a callback to attempt replaying as many events as are 25918 // now unblocked. This first might not actually be unblocked yet. 25919 // We could check it early to avoid scheduling an unnecessary callback. 25920 25921 Scheduler.unstable_scheduleCallback(Scheduler.unstable_NormalPriority, replayUnblockedEvents); 25922 } 25923 } 25924} 25925 25926function retryIfBlockedOn(unblocked) { 25927 // Mark anything that was blocked on this as no longer blocked 25928 // and eligible for a replay. 25929 if (queuedDiscreteEvents.length > 0) { 25930 scheduleCallbackIfUnblocked(queuedDiscreteEvents[0], unblocked); // This is a exponential search for each boundary that commits. I think it's 25931 // worth it because we expect very few discrete events to queue up and once 25932 // we are actually fully unblocked it will be fast to replay them. 25933 25934 for (var i = 1; i < queuedDiscreteEvents.length; i++) { 25935 var queuedEvent = queuedDiscreteEvents[i]; 25936 25937 if (queuedEvent.blockedOn === unblocked) { 25938 queuedEvent.blockedOn = null; 25939 } 25940 } 25941 } 25942 25943 if (queuedFocus !== null) { 25944 scheduleCallbackIfUnblocked(queuedFocus, unblocked); 25945 } 25946 25947 if (queuedDrag !== null) { 25948 scheduleCallbackIfUnblocked(queuedDrag, unblocked); 25949 } 25950 25951 if (queuedMouse !== null) { 25952 scheduleCallbackIfUnblocked(queuedMouse, unblocked); 25953 } 25954 25955 var unblock = function (queuedEvent) { 25956 return scheduleCallbackIfUnblocked(queuedEvent, unblocked); 25957 }; 25958 25959 queuedPointers.forEach(unblock); 25960 queuedPointerCaptures.forEach(unblock); 25961 25962 for (var _i = 0; _i < queuedExplicitHydrationTargets.length; _i++) { 25963 var queuedTarget = queuedExplicitHydrationTargets[_i]; 25964 25965 if (queuedTarget.blockedOn === unblocked) { 25966 queuedTarget.blockedOn = null; 25967 } 25968 } 25969 25970 while (queuedExplicitHydrationTargets.length > 0) { 25971 var nextExplicitTarget = queuedExplicitHydrationTargets[0]; 25972 25973 if (nextExplicitTarget.blockedOn !== null) { 25974 // We're still blocked. 25975 break; 25976 } else { 25977 attemptExplicitHydrationTarget(nextExplicitTarget); 25978 25979 if (nextExplicitTarget.blockedOn === null) { 25980 // We're unblocked. 25981 queuedExplicitHydrationTargets.shift(); 25982 } 25983 } 25984 } 25985} 25986 25987function addEventBubbleListener(element, eventType, listener) { 25988 element.addEventListener(eventType, listener, false); 25989} 25990function addEventCaptureListener(element, eventType, listener) { 25991 element.addEventListener(eventType, listener, true); 25992} 25993 25994// do it in two places, which duplicates logic 25995// and increases the bundle size, we do it all 25996// here once. If we remove or refactor the 25997// SimpleEventPlugin, we should also remove or 25998// update the below line. 25999 26000var simpleEventPluginEventTypes = {}; 26001var topLevelEventsToDispatchConfig = new Map(); 26002var eventPriorities = new Map(); // We store most of the events in this module in pairs of two strings so we can re-use 26003// the code required to apply the same logic for event prioritization and that of the 26004// SimpleEventPlugin. This complicates things slightly, but the aim is to reduce code 26005// duplication (for which there would be quite a bit). For the events that are not needed 26006// for the SimpleEventPlugin (otherDiscreteEvents) we process them separately as an 26007// array of top level events. 26008// Lastly, we ignore prettier so we can keep the formatting sane. 26009// prettier-ignore 26010 26011var discreteEventPairsForSimpleEventPlugin = [TOP_BLUR, 'blur', TOP_CANCEL, 'cancel', TOP_CLICK, 'click', TOP_CLOSE, 'close', TOP_CONTEXT_MENU, 'contextMenu', TOP_COPY, 'copy', TOP_CUT, 'cut', TOP_AUX_CLICK, 'auxClick', TOP_DOUBLE_CLICK, 'doubleClick', TOP_DRAG_END, 'dragEnd', TOP_DRAG_START, 'dragStart', TOP_DROP, 'drop', TOP_FOCUS, 'focus', TOP_INPUT, 'input', TOP_INVALID, 'invalid', TOP_KEY_DOWN, 'keyDown', TOP_KEY_PRESS, 'keyPress', TOP_KEY_UP, 'keyUp', TOP_MOUSE_DOWN, 'mouseDown', TOP_MOUSE_UP, 'mouseUp', TOP_PASTE, 'paste', TOP_PAUSE, 'pause', TOP_PLAY, 'play', TOP_POINTER_CANCEL, 'pointerCancel', TOP_POINTER_DOWN, 'pointerDown', TOP_POINTER_UP, 'pointerUp', TOP_RATE_CHANGE, 'rateChange', TOP_RESET, 'reset', TOP_SEEKED, 'seeked', TOP_SUBMIT, 'submit', TOP_TOUCH_CANCEL, 'touchCancel', TOP_TOUCH_END, 'touchEnd', TOP_TOUCH_START, 'touchStart', TOP_VOLUME_CHANGE, 'volumeChange']; 26012var otherDiscreteEvents = [TOP_CHANGE, TOP_SELECTION_CHANGE, TOP_TEXT_INPUT, TOP_COMPOSITION_START, TOP_COMPOSITION_END, TOP_COMPOSITION_UPDATE]; // prettier-ignore 26013 26014var userBlockingPairsForSimpleEventPlugin = [TOP_DRAG, 'drag', TOP_DRAG_ENTER, 'dragEnter', TOP_DRAG_EXIT, 'dragExit', TOP_DRAG_LEAVE, 'dragLeave', TOP_DRAG_OVER, 'dragOver', TOP_MOUSE_MOVE, 'mouseMove', TOP_MOUSE_OUT, 'mouseOut', TOP_MOUSE_OVER, 'mouseOver', TOP_POINTER_MOVE, 'pointerMove', TOP_POINTER_OUT, 'pointerOut', TOP_POINTER_OVER, 'pointerOver', TOP_SCROLL, 'scroll', TOP_TOGGLE, 'toggle', TOP_TOUCH_MOVE, 'touchMove', TOP_WHEEL, 'wheel']; // prettier-ignore 26015 26016var continuousPairsForSimpleEventPlugin = [TOP_ABORT, 'abort', TOP_ANIMATION_END, 'animationEnd', TOP_ANIMATION_ITERATION, 'animationIteration', TOP_ANIMATION_START, 'animationStart', TOP_CAN_PLAY, 'canPlay', TOP_CAN_PLAY_THROUGH, 'canPlayThrough', TOP_DURATION_CHANGE, 'durationChange', TOP_EMPTIED, 'emptied', TOP_ENCRYPTED, 'encrypted', TOP_ENDED, 'ended', TOP_ERROR, 'error', TOP_GOT_POINTER_CAPTURE, 'gotPointerCapture', TOP_LOAD, 'load', TOP_LOADED_DATA, 'loadedData', TOP_LOADED_METADATA, 'loadedMetadata', TOP_LOAD_START, 'loadStart', TOP_LOST_POINTER_CAPTURE, 'lostPointerCapture', TOP_PLAYING, 'playing', TOP_PROGRESS, 'progress', TOP_SEEKING, 'seeking', TOP_STALLED, 'stalled', TOP_SUSPEND, 'suspend', TOP_TIME_UPDATE, 'timeUpdate', TOP_TRANSITION_END, 'transitionEnd', TOP_WAITING, 'waiting']; 26017/** 26018 * Turns 26019 * ['abort', ...] 26020 * into 26021 * eventTypes = { 26022 * 'abort': { 26023 * phasedRegistrationNames: { 26024 * bubbled: 'onAbort', 26025 * captured: 'onAbortCapture', 26026 * }, 26027 * dependencies: [TOP_ABORT], 26028 * }, 26029 * ... 26030 * }; 26031 * topLevelEventsToDispatchConfig = new Map([ 26032 * [TOP_ABORT, { sameConfig }], 26033 * ]); 26034 */ 26035 26036function processSimpleEventPluginPairsByPriority(eventTypes, priority) { 26037 // As the event types are in pairs of two, we need to iterate 26038 // through in twos. The events are in pairs of two to save code 26039 // and improve init perf of processing this array, as it will 26040 // result in far fewer object allocations and property accesses 26041 // if we only use three arrays to process all the categories of 26042 // instead of tuples. 26043 for (var i = 0; i < eventTypes.length; i += 2) { 26044 var topEvent = eventTypes[i]; 26045 var event = eventTypes[i + 1]; 26046 var capitalizedEvent = event[0].toUpperCase() + event.slice(1); 26047 var onEvent = 'on' + capitalizedEvent; 26048 var config = { 26049 phasedRegistrationNames: { 26050 bubbled: onEvent, 26051 captured: onEvent + 'Capture' 26052 }, 26053 dependencies: [topEvent], 26054 eventPriority: priority 26055 }; 26056 eventPriorities.set(topEvent, priority); 26057 topLevelEventsToDispatchConfig.set(topEvent, config); 26058 simpleEventPluginEventTypes[event] = config; 26059 } 26060} 26061 26062function processTopEventPairsByPriority(eventTypes, priority) { 26063 for (var i = 0; i < eventTypes.length; i++) { 26064 eventPriorities.set(eventTypes[i], priority); 26065 } 26066} // SimpleEventPlugin 26067 26068 26069processSimpleEventPluginPairsByPriority(discreteEventPairsForSimpleEventPlugin, DiscreteEvent); 26070processSimpleEventPluginPairsByPriority(userBlockingPairsForSimpleEventPlugin, UserBlockingEvent); 26071processSimpleEventPluginPairsByPriority(continuousPairsForSimpleEventPlugin, ContinuousEvent); // Not used by SimpleEventPlugin 26072 26073processTopEventPairsByPriority(otherDiscreteEvents, DiscreteEvent); 26074function getEventPriorityForPluginSystem(topLevelType) { 26075 var priority = eventPriorities.get(topLevelType); // Default to a ContinuousEvent. Note: we might 26076 // want to warn if we can't detect the priority 26077 // for the event. 26078 26079 return priority === undefined ? ContinuousEvent : priority; 26080} 26081 26082// Intentionally not named imports because Rollup would use dynamic dispatch for 26083var UserBlockingPriority = Scheduler.unstable_UserBlockingPriority, 26084 runWithPriority = Scheduler.unstable_runWithPriority; // TODO: can we stop exporting these? 26085 26086var _enabled = true; 26087function setEnabled(enabled) { 26088 _enabled = !!enabled; 26089} 26090function isEnabled() { 26091 return _enabled; 26092} 26093function trapBubbledEvent(topLevelType, element) { 26094 trapEventForPluginEventSystem(element, topLevelType, false); 26095} 26096function trapCapturedEvent(topLevelType, element) { 26097 trapEventForPluginEventSystem(element, topLevelType, true); 26098} 26099 26100function trapEventForPluginEventSystem(container, topLevelType, capture) { 26101 var listener; 26102 26103 switch (getEventPriorityForPluginSystem(topLevelType)) { 26104 case DiscreteEvent: 26105 listener = dispatchDiscreteEvent.bind(null, topLevelType, PLUGIN_EVENT_SYSTEM, container); 26106 break; 26107 26108 case UserBlockingEvent: 26109 listener = dispatchUserBlockingUpdate.bind(null, topLevelType, PLUGIN_EVENT_SYSTEM, container); 26110 break; 26111 26112 case ContinuousEvent: 26113 default: 26114 listener = dispatchEvent.bind(null, topLevelType, PLUGIN_EVENT_SYSTEM, container); 26115 break; 26116 } 26117 26118 var rawEventName = getRawEventName(topLevelType); 26119 26120 if (capture) { 26121 addEventCaptureListener(container, rawEventName, listener); 26122 } else { 26123 addEventBubbleListener(container, rawEventName, listener); 26124 } 26125} 26126 26127function dispatchDiscreteEvent(topLevelType, eventSystemFlags, container, nativeEvent) { 26128 flushDiscreteUpdatesIfNeeded(nativeEvent.timeStamp); 26129 discreteUpdates(dispatchEvent, topLevelType, eventSystemFlags, container, nativeEvent); 26130} 26131 26132function dispatchUserBlockingUpdate(topLevelType, eventSystemFlags, container, nativeEvent) { 26133 runWithPriority(UserBlockingPriority, dispatchEvent.bind(null, topLevelType, eventSystemFlags, container, nativeEvent)); 26134} 26135 26136function dispatchEvent(topLevelType, eventSystemFlags, container, nativeEvent) { 26137 if (!_enabled) { 26138 return; 26139 } 26140 26141 if (hasQueuedDiscreteEvents() && isReplayableDiscreteEvent(topLevelType)) { 26142 // If we already have a queue of discrete events, and this is another discrete 26143 // event, then we can't dispatch it regardless of its target, since they 26144 // need to dispatch in order. 26145 queueDiscreteEvent(null, // Flags that we're not actually blocked on anything as far as we know. 26146 topLevelType, eventSystemFlags, container, nativeEvent); 26147 return; 26148 } 26149 26150 var blockedOn = attemptToDispatchEvent(topLevelType, eventSystemFlags, container, nativeEvent); 26151 26152 if (blockedOn === null) { 26153 // We successfully dispatched this event. 26154 clearIfContinuousEvent(topLevelType, nativeEvent); 26155 return; 26156 } 26157 26158 if (isReplayableDiscreteEvent(topLevelType)) { 26159 // This this to be replayed later once the target is available. 26160 queueDiscreteEvent(blockedOn, topLevelType, eventSystemFlags, container, nativeEvent); 26161 return; 26162 } 26163 26164 if (queueIfContinuousEvent(blockedOn, topLevelType, eventSystemFlags, container, nativeEvent)) { 26165 return; 26166 } // We need to clear only if we didn't queue because 26167 // queueing is accummulative. 26168 26169 26170 clearIfContinuousEvent(topLevelType, nativeEvent); // This is not replayable so we'll invoke it but without a target, 26171 // in case the event system needs to trace it. 26172 26173 { 26174 dispatchEventForLegacyPluginEventSystem(topLevelType, eventSystemFlags, nativeEvent, null); 26175 } 26176} // Attempt dispatching an event. Returns a SuspenseInstance or Container if it's blocked. 26177 26178function attemptToDispatchEvent(topLevelType, eventSystemFlags, container, nativeEvent) { 26179 // TODO: Warn if _enabled is false. 26180 var nativeEventTarget = getEventTarget(nativeEvent); 26181 var targetInst = getClosestInstanceFromNode(nativeEventTarget); 26182 26183 if (targetInst !== null) { 26184 var nearestMounted = getNearestMountedFiber(targetInst); 26185 26186 if (nearestMounted === null) { 26187 // This tree has been unmounted already. Dispatch without a target. 26188 targetInst = null; 26189 } else { 26190 var tag = nearestMounted.tag; 26191 26192 if (tag === SuspenseComponent) { 26193 var instance = getSuspenseInstanceFromFiber(nearestMounted); 26194 26195 if (instance !== null) { 26196 // Queue the event to be replayed later. Abort dispatching since we 26197 // don't want this event dispatched twice through the event system. 26198 // TODO: If this is the first discrete event in the queue. Schedule an increased 26199 // priority for this boundary. 26200 return instance; 26201 } // This shouldn't happen, something went wrong but to avoid blocking 26202 // the whole system, dispatch the event without a target. 26203 // TODO: Warn. 26204 26205 26206 targetInst = null; 26207 } else if (tag === HostRoot) { 26208 var root = nearestMounted.stateNode; 26209 26210 if (root.hydrate) { 26211 // If this happens during a replay something went wrong and it might block 26212 // the whole system. 26213 return getContainerFromFiber(nearestMounted); 26214 } 26215 26216 targetInst = null; 26217 } else if (nearestMounted !== targetInst) { 26218 // If we get an event (ex: img onload) before committing that 26219 // component's mount, ignore it for now (that is, treat it as if it was an 26220 // event on a non-React tree). We might also consider queueing events and 26221 // dispatching them after the mount. 26222 targetInst = null; 26223 } 26224 } 26225 } 26226 26227 { 26228 dispatchEventForLegacyPluginEventSystem(topLevelType, eventSystemFlags, nativeEvent, targetInst); 26229 } // We're not blocked on anything. 26230 26231 26232 return null; 26233} 26234 26235// List derived from Gecko source code: 26236// https://github.com/mozilla/gecko-dev/blob/4e638efc71/layout/style/test/property_database.js 26237var shorthandToLonghand = { 26238 animation: ['animationDelay', 'animationDirection', 'animationDuration', 'animationFillMode', 'animationIterationCount', 'animationName', 'animationPlayState', 'animationTimingFunction'], 26239 background: ['backgroundAttachment', 'backgroundClip', 'backgroundColor', 'backgroundImage', 'backgroundOrigin', 'backgroundPositionX', 'backgroundPositionY', 'backgroundRepeat', 'backgroundSize'], 26240 backgroundPosition: ['backgroundPositionX', 'backgroundPositionY'], 26241 border: ['borderBottomColor', 'borderBottomStyle', 'borderBottomWidth', 'borderImageOutset', 'borderImageRepeat', 'borderImageSlice', 'borderImageSource', 'borderImageWidth', 'borderLeftColor', 'borderLeftStyle', 'borderLeftWidth', 'borderRightColor', 'borderRightStyle', 'borderRightWidth', 'borderTopColor', 'borderTopStyle', 'borderTopWidth'], 26242 borderBlockEnd: ['borderBlockEndColor', 'borderBlockEndStyle', 'borderBlockEndWidth'], 26243 borderBlockStart: ['borderBlockStartColor', 'borderBlockStartStyle', 'borderBlockStartWidth'], 26244 borderBottom: ['borderBottomColor', 'borderBottomStyle', 'borderBottomWidth'], 26245 borderColor: ['borderBottomColor', 'borderLeftColor', 'borderRightColor', 'borderTopColor'], 26246 borderImage: ['borderImageOutset', 'borderImageRepeat', 'borderImageSlice', 'borderImageSource', 'borderImageWidth'], 26247 borderInlineEnd: ['borderInlineEndColor', 'borderInlineEndStyle', 'borderInlineEndWidth'], 26248 borderInlineStart: ['borderInlineStartColor', 'borderInlineStartStyle', 'borderInlineStartWidth'], 26249 borderLeft: ['borderLeftColor', 'borderLeftStyle', 'borderLeftWidth'], 26250 borderRadius: ['borderBottomLeftRadius', 'borderBottomRightRadius', 'borderTopLeftRadius', 'borderTopRightRadius'], 26251 borderRight: ['borderRightColor', 'borderRightStyle', 'borderRightWidth'], 26252 borderStyle: ['borderBottomStyle', 'borderLeftStyle', 'borderRightStyle', 'borderTopStyle'], 26253 borderTop: ['borderTopColor', 'borderTopStyle', 'borderTopWidth'], 26254 borderWidth: ['borderBottomWidth', 'borderLeftWidth', 'borderRightWidth', 'borderTopWidth'], 26255 columnRule: ['columnRuleColor', 'columnRuleStyle', 'columnRuleWidth'], 26256 columns: ['columnCount', 'columnWidth'], 26257 flex: ['flexBasis', 'flexGrow', 'flexShrink'], 26258 flexFlow: ['flexDirection', 'flexWrap'], 26259 font: ['fontFamily', 'fontFeatureSettings', 'fontKerning', 'fontLanguageOverride', 'fontSize', 'fontSizeAdjust', 'fontStretch', 'fontStyle', 'fontVariant', 'fontVariantAlternates', 'fontVariantCaps', 'fontVariantEastAsian', 'fontVariantLigatures', 'fontVariantNumeric', 'fontVariantPosition', 'fontWeight', 'lineHeight'], 26260 fontVariant: ['fontVariantAlternates', 'fontVariantCaps', 'fontVariantEastAsian', 'fontVariantLigatures', 'fontVariantNumeric', 'fontVariantPosition'], 26261 gap: ['columnGap', 'rowGap'], 26262 grid: ['gridAutoColumns', 'gridAutoFlow', 'gridAutoRows', 'gridTemplateAreas', 'gridTemplateColumns', 'gridTemplateRows'], 26263 gridArea: ['gridColumnEnd', 'gridColumnStart', 'gridRowEnd', 'gridRowStart'], 26264 gridColumn: ['gridColumnEnd', 'gridColumnStart'], 26265 gridColumnGap: ['columnGap'], 26266 gridGap: ['columnGap', 'rowGap'], 26267 gridRow: ['gridRowEnd', 'gridRowStart'], 26268 gridRowGap: ['rowGap'], 26269 gridTemplate: ['gridTemplateAreas', 'gridTemplateColumns', 'gridTemplateRows'], 26270 listStyle: ['listStyleImage', 'listStylePosition', 'listStyleType'], 26271 margin: ['marginBottom', 'marginLeft', 'marginRight', 'marginTop'], 26272 marker: ['markerEnd', 'markerMid', 'markerStart'], 26273 mask: ['maskClip', 'maskComposite', 'maskImage', 'maskMode', 'maskOrigin', 'maskPositionX', 'maskPositionY', 'maskRepeat', 'maskSize'], 26274 maskPosition: ['maskPositionX', 'maskPositionY'], 26275 outline: ['outlineColor', 'outlineStyle', 'outlineWidth'], 26276 overflow: ['overflowX', 'overflowY'], 26277 padding: ['paddingBottom', 'paddingLeft', 'paddingRight', 'paddingTop'], 26278 placeContent: ['alignContent', 'justifyContent'], 26279 placeItems: ['alignItems', 'justifyItems'], 26280 placeSelf: ['alignSelf', 'justifySelf'], 26281 textDecoration: ['textDecorationColor', 'textDecorationLine', 'textDecorationStyle'], 26282 textEmphasis: ['textEmphasisColor', 'textEmphasisStyle'], 26283 transition: ['transitionDelay', 'transitionDuration', 'transitionProperty', 'transitionTimingFunction'], 26284 wordWrap: ['overflowWrap'] 26285}; 26286 26287/** 26288 * CSS properties which accept numbers but are not in units of "px". 26289 */ 26290var isUnitlessNumber = { 26291 animationIterationCount: true, 26292 borderImageOutset: true, 26293 borderImageSlice: true, 26294 borderImageWidth: true, 26295 boxFlex: true, 26296 boxFlexGroup: true, 26297 boxOrdinalGroup: true, 26298 columnCount: true, 26299 columns: true, 26300 flex: true, 26301 flexGrow: true, 26302 flexPositive: true, 26303 flexShrink: true, 26304 flexNegative: true, 26305 flexOrder: true, 26306 gridArea: true, 26307 gridRow: true, 26308 gridRowEnd: true, 26309 gridRowSpan: true, 26310 gridRowStart: true, 26311 gridColumn: true, 26312 gridColumnEnd: true, 26313 gridColumnSpan: true, 26314 gridColumnStart: true, 26315 fontWeight: true, 26316 lineClamp: true, 26317 lineHeight: true, 26318 opacity: true, 26319 order: true, 26320 orphans: true, 26321 tabSize: true, 26322 widows: true, 26323 zIndex: true, 26324 zoom: true, 26325 // SVG-related properties 26326 fillOpacity: true, 26327 floodOpacity: true, 26328 stopOpacity: true, 26329 strokeDasharray: true, 26330 strokeDashoffset: true, 26331 strokeMiterlimit: true, 26332 strokeOpacity: true, 26333 strokeWidth: true 26334}; 26335/** 26336 * @param {string} prefix vendor-specific prefix, eg: Webkit 26337 * @param {string} key style name, eg: transitionDuration 26338 * @return {string} style name prefixed with `prefix`, properly camelCased, eg: 26339 * WebkitTransitionDuration 26340 */ 26341 26342function prefixKey(prefix, key) { 26343 return prefix + key.charAt(0).toUpperCase() + key.substring(1); 26344} 26345/** 26346 * Support style names that may come passed in prefixed by adding permutations 26347 * of vendor prefixes. 26348 */ 26349 26350 26351var prefixes = ['Webkit', 'ms', 'Moz', 'O']; // Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an 26352// infinite loop, because it iterates over the newly added props too. 26353 26354Object.keys(isUnitlessNumber).forEach(function (prop) { 26355 prefixes.forEach(function (prefix) { 26356 isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop]; 26357 }); 26358}); 26359 26360/** 26361 * Convert a value into the proper css writable value. The style name `name` 26362 * should be logical (no hyphens), as specified 26363 * in `CSSProperty.isUnitlessNumber`. 26364 * 26365 * @param {string} name CSS property name such as `topMargin`. 26366 * @param {*} value CSS property value such as `10px`. 26367 * @return {string} Normalized style value with dimensions applied. 26368 */ 26369 26370function dangerousStyleValue(name, value, isCustomProperty) { 26371 // Note that we've removed escapeTextForBrowser() calls here since the 26372 // whole string will be escaped when the attribute is injected into 26373 // the markup. If you provide unsafe user data here they can inject 26374 // arbitrary CSS which may be problematic (I couldn't repro this): 26375 // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet 26376 // http://www.thespanner.co.uk/2007/11/26/ultimate-xss-css-injection/ 26377 // This is not an XSS hole but instead a potential CSS injection issue 26378 // which has lead to a greater discussion about how we're going to 26379 // trust URLs moving forward. See #2115901 26380 var isEmpty = value == null || typeof value === 'boolean' || value === ''; 26381 26382 if (isEmpty) { 26383 return ''; 26384 } 26385 26386 if (!isCustomProperty && typeof value === 'number' && value !== 0 && !(isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name])) { 26387 return value + 'px'; // Presumes implicit 'px' suffix for unitless numbers 26388 } 26389 26390 return ('' + value).trim(); 26391} 26392 26393var uppercasePattern = /([A-Z])/g; 26394var msPattern = /^ms-/; 26395/** 26396 * Hyphenates a camelcased CSS property name, for example: 26397 * 26398 * > hyphenateStyleName('backgroundColor') 26399 * < "background-color" 26400 * > hyphenateStyleName('MozTransition') 26401 * < "-moz-transition" 26402 * > hyphenateStyleName('msTransition') 26403 * < "-ms-transition" 26404 * 26405 * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix 26406 * is converted to `-ms-`. 26407 */ 26408 26409function hyphenateStyleName(name) { 26410 return name.replace(uppercasePattern, '-$1').toLowerCase().replace(msPattern, '-ms-'); 26411} 26412 26413var warnValidStyle = function () {}; 26414 26415{ 26416 // 'msTransform' is correct, but the other prefixes should be capitalized 26417 var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/; 26418 var msPattern$1 = /^-ms-/; 26419 var hyphenPattern = /-(.)/g; // style values shouldn't contain a semicolon 26420 26421 var badStyleValueWithSemicolonPattern = /;\s*$/; 26422 var warnedStyleNames = {}; 26423 var warnedStyleValues = {}; 26424 var warnedForNaNValue = false; 26425 var warnedForInfinityValue = false; 26426 26427 var camelize = function (string) { 26428 return string.replace(hyphenPattern, function (_, character) { 26429 return character.toUpperCase(); 26430 }); 26431 }; 26432 26433 var warnHyphenatedStyleName = function (name) { 26434 if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) { 26435 return; 26436 } 26437 26438 warnedStyleNames[name] = true; 26439 26440 error('Unsupported style property %s. Did you mean %s?', name, // As Andi Smith suggests 26441 // (http://www.andismith.com/blog/2012/02/modernizr-prefixed/), an `-ms` prefix 26442 // is converted to lowercase `ms`. 26443 camelize(name.replace(msPattern$1, 'ms-'))); 26444 }; 26445 26446 var warnBadVendoredStyleName = function (name) { 26447 if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) { 26448 return; 26449 } 26450 26451 warnedStyleNames[name] = true; 26452 26453 error('Unsupported vendor-prefixed style property %s. Did you mean %s?', name, name.charAt(0).toUpperCase() + name.slice(1)); 26454 }; 26455 26456 var warnStyleValueWithSemicolon = function (name, value) { 26457 if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) { 26458 return; 26459 } 26460 26461 warnedStyleValues[value] = true; 26462 26463 error("Style property values shouldn't contain a semicolon. " + 'Try "%s: %s" instead.', name, value.replace(badStyleValueWithSemicolonPattern, '')); 26464 }; 26465 26466 var warnStyleValueIsNaN = function (name, value) { 26467 if (warnedForNaNValue) { 26468 return; 26469 } 26470 26471 warnedForNaNValue = true; 26472 26473 error('`NaN` is an invalid value for the `%s` css style property.', name); 26474 }; 26475 26476 var warnStyleValueIsInfinity = function (name, value) { 26477 if (warnedForInfinityValue) { 26478 return; 26479 } 26480 26481 warnedForInfinityValue = true; 26482 26483 error('`Infinity` is an invalid value for the `%s` css style property.', name); 26484 }; 26485 26486 warnValidStyle = function (name, value) { 26487 if (name.indexOf('-') > -1) { 26488 warnHyphenatedStyleName(name); 26489 } else if (badVendoredStyleNamePattern.test(name)) { 26490 warnBadVendoredStyleName(name); 26491 } else if (badStyleValueWithSemicolonPattern.test(value)) { 26492 warnStyleValueWithSemicolon(name, value); 26493 } 26494 26495 if (typeof value === 'number') { 26496 if (isNaN(value)) { 26497 warnStyleValueIsNaN(name, value); 26498 } else if (!isFinite(value)) { 26499 warnStyleValueIsInfinity(name, value); 26500 } 26501 } 26502 }; 26503} 26504 26505var warnValidStyle$1 = warnValidStyle; 26506 26507/** 26508 * Operations for dealing with CSS properties. 26509 */ 26510 26511/** 26512 * This creates a string that is expected to be equivalent to the style 26513 * attribute generated by server-side rendering. It by-passes warnings and 26514 * security checks so it's not safe to use this value for anything other than 26515 * comparison. It is only used in DEV for SSR validation. 26516 */ 26517 26518function createDangerousStringForStyles(styles) { 26519 { 26520 var serialized = ''; 26521 var delimiter = ''; 26522 26523 for (var styleName in styles) { 26524 if (!styles.hasOwnProperty(styleName)) { 26525 continue; 26526 } 26527 26528 var styleValue = styles[styleName]; 26529 26530 if (styleValue != null) { 26531 var isCustomProperty = styleName.indexOf('--') === 0; 26532 serialized += delimiter + (isCustomProperty ? styleName : hyphenateStyleName(styleName)) + ':'; 26533 serialized += dangerousStyleValue(styleName, styleValue, isCustomProperty); 26534 delimiter = ';'; 26535 } 26536 } 26537 26538 return serialized || null; 26539 } 26540} 26541/** 26542 * Sets the value for multiple styles on a node. If a value is specified as 26543 * '' (empty string), the corresponding style property will be unset. 26544 * 26545 * @param {DOMElement} node 26546 * @param {object} styles 26547 */ 26548 26549function setValueForStyles(node, styles) { 26550 var style = node.style; 26551 26552 for (var styleName in styles) { 26553 if (!styles.hasOwnProperty(styleName)) { 26554 continue; 26555 } 26556 26557 var isCustomProperty = styleName.indexOf('--') === 0; 26558 26559 { 26560 if (!isCustomProperty) { 26561 warnValidStyle$1(styleName, styles[styleName]); 26562 } 26563 } 26564 26565 var styleValue = dangerousStyleValue(styleName, styles[styleName], isCustomProperty); 26566 26567 if (styleName === 'float') { 26568 styleName = 'cssFloat'; 26569 } 26570 26571 if (isCustomProperty) { 26572 style.setProperty(styleName, styleValue); 26573 } else { 26574 style[styleName] = styleValue; 26575 } 26576 } 26577} 26578 26579function isValueEmpty(value) { 26580 return value == null || typeof value === 'boolean' || value === ''; 26581} 26582/** 26583 * Given {color: 'red', overflow: 'hidden'} returns { 26584 * color: 'color', 26585 * overflowX: 'overflow', 26586 * overflowY: 'overflow', 26587 * }. This can be read as "the overflowY property was set by the overflow 26588 * shorthand". That is, the values are the property that each was derived from. 26589 */ 26590 26591 26592function expandShorthandMap(styles) { 26593 var expanded = {}; 26594 26595 for (var key in styles) { 26596 var longhands = shorthandToLonghand[key] || [key]; 26597 26598 for (var i = 0; i < longhands.length; i++) { 26599 expanded[longhands[i]] = key; 26600 } 26601 } 26602 26603 return expanded; 26604} 26605/** 26606 * When mixing shorthand and longhand property names, we warn during updates if 26607 * we expect an incorrect result to occur. In particular, we warn for: 26608 * 26609 * Updating a shorthand property (longhand gets overwritten): 26610 * {font: 'foo', fontVariant: 'bar'} -> {font: 'baz', fontVariant: 'bar'} 26611 * becomes .style.font = 'baz' 26612 * Removing a shorthand property (longhand gets lost too): 26613 * {font: 'foo', fontVariant: 'bar'} -> {fontVariant: 'bar'} 26614 * becomes .style.font = '' 26615 * Removing a longhand property (should revert to shorthand; doesn't): 26616 * {font: 'foo', fontVariant: 'bar'} -> {font: 'foo'} 26617 * becomes .style.fontVariant = '' 26618 */ 26619 26620 26621function validateShorthandPropertyCollisionInDev(styleUpdates, nextStyles) { 26622 { 26623 26624 if (!nextStyles) { 26625 return; 26626 } 26627 26628 var expandedUpdates = expandShorthandMap(styleUpdates); 26629 var expandedStyles = expandShorthandMap(nextStyles); 26630 var warnedAbout = {}; 26631 26632 for (var key in expandedUpdates) { 26633 var originalKey = expandedUpdates[key]; 26634 var correctOriginalKey = expandedStyles[key]; 26635 26636 if (correctOriginalKey && originalKey !== correctOriginalKey) { 26637 var warningKey = originalKey + ',' + correctOriginalKey; 26638 26639 if (warnedAbout[warningKey]) { 26640 continue; 26641 } 26642 26643 warnedAbout[warningKey] = true; 26644 26645 error('%s a style property during rerender (%s) when a ' + 'conflicting property is set (%s) can lead to styling bugs. To ' + "avoid this, don't mix shorthand and non-shorthand properties " + 'for the same value; instead, replace the shorthand with ' + 'separate values.', isValueEmpty(styleUpdates[originalKey]) ? 'Removing' : 'Updating', originalKey, correctOriginalKey); 26646 } 26647 } 26648 } 26649} 26650 26651// For HTML, certain tags should omit their close tag. We keep a whitelist for 26652// those special-case tags. 26653var omittedCloseTags = { 26654 area: true, 26655 base: true, 26656 br: true, 26657 col: true, 26658 embed: true, 26659 hr: true, 26660 img: true, 26661 input: true, 26662 keygen: true, 26663 link: true, 26664 meta: true, 26665 param: true, 26666 source: true, 26667 track: true, 26668 wbr: true // NOTE: menuitem's close tag should be omitted, but that causes problems. 26669 26670}; 26671 26672// `omittedCloseTags` except that `menuitem` should still have its closing tag. 26673 26674var voidElementTags = _assign({ 26675 menuitem: true 26676}, omittedCloseTags); 26677 26678var HTML = '__html'; 26679var ReactDebugCurrentFrame$3 = null; 26680 26681{ 26682 ReactDebugCurrentFrame$3 = ReactSharedInternals.ReactDebugCurrentFrame; 26683} 26684 26685function assertValidProps(tag, props) { 26686 if (!props) { 26687 return; 26688 } // Note the use of `==` which checks for null or undefined. 26689 26690 26691 if (voidElementTags[tag]) { 26692 if (!(props.children == null && props.dangerouslySetInnerHTML == null)) { 26693 { 26694 throw Error( tag + " is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`." + ( ReactDebugCurrentFrame$3.getStackAddendum() ) ); 26695 } 26696 } 26697 } 26698 26699 if (props.dangerouslySetInnerHTML != null) { 26700 if (!(props.children == null)) { 26701 { 26702 throw Error( "Can only set one of `children` or `props.dangerouslySetInnerHTML`." ); 26703 } 26704 } 26705 26706 if (!(typeof props.dangerouslySetInnerHTML === 'object' && HTML in props.dangerouslySetInnerHTML)) { 26707 { 26708 throw Error( "`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://fb.me/react-invariant-dangerously-set-inner-html for more information." ); 26709 } 26710 } 26711 } 26712 26713 { 26714 if (!props.suppressContentEditableWarning && props.contentEditable && props.children != null) { 26715 error('A component is `contentEditable` and contains `children` managed by ' + 'React. It is now your responsibility to guarantee that none of ' + 'those nodes are unexpectedly modified or duplicated. This is ' + 'probably not intentional.'); 26716 } 26717 } 26718 26719 if (!(props.style == null || typeof props.style === 'object')) { 26720 { 26721 throw Error( "The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + 'em'}} when using JSX." + ( ReactDebugCurrentFrame$3.getStackAddendum() ) ); 26722 } 26723 } 26724} 26725 26726function isCustomComponent(tagName, props) { 26727 if (tagName.indexOf('-') === -1) { 26728 return typeof props.is === 'string'; 26729 } 26730 26731 switch (tagName) { 26732 // These are reserved SVG and MathML elements. 26733 // We don't mind this whitelist too much because we expect it to never grow. 26734 // The alternative is to track the namespace in a few places which is convoluted. 26735 // https://w3c.github.io/webcomponents/spec/custom/#custom-elements-core-concepts 26736 case 'annotation-xml': 26737 case 'color-profile': 26738 case 'font-face': 26739 case 'font-face-src': 26740 case 'font-face-uri': 26741 case 'font-face-format': 26742 case 'font-face-name': 26743 case 'missing-glyph': 26744 return false; 26745 26746 default: 26747 return true; 26748 } 26749} 26750 26751// When adding attributes to the HTML or SVG whitelist, be sure to 26752// also add them to this module to ensure casing and incorrect name 26753// warnings. 26754var possibleStandardNames = { 26755 // HTML 26756 accept: 'accept', 26757 acceptcharset: 'acceptCharset', 26758 'accept-charset': 'acceptCharset', 26759 accesskey: 'accessKey', 26760 action: 'action', 26761 allowfullscreen: 'allowFullScreen', 26762 alt: 'alt', 26763 as: 'as', 26764 async: 'async', 26765 autocapitalize: 'autoCapitalize', 26766 autocomplete: 'autoComplete', 26767 autocorrect: 'autoCorrect', 26768 autofocus: 'autoFocus', 26769 autoplay: 'autoPlay', 26770 autosave: 'autoSave', 26771 capture: 'capture', 26772 cellpadding: 'cellPadding', 26773 cellspacing: 'cellSpacing', 26774 challenge: 'challenge', 26775 charset: 'charSet', 26776 checked: 'checked', 26777 children: 'children', 26778 cite: 'cite', 26779 class: 'className', 26780 classid: 'classID', 26781 classname: 'className', 26782 cols: 'cols', 26783 colspan: 'colSpan', 26784 content: 'content', 26785 contenteditable: 'contentEditable', 26786 contextmenu: 'contextMenu', 26787 controls: 'controls', 26788 controlslist: 'controlsList', 26789 coords: 'coords', 26790 crossorigin: 'crossOrigin', 26791 dangerouslysetinnerhtml: 'dangerouslySetInnerHTML', 26792 data: 'data', 26793 datetime: 'dateTime', 26794 default: 'default', 26795 defaultchecked: 'defaultChecked', 26796 defaultvalue: 'defaultValue', 26797 defer: 'defer', 26798 dir: 'dir', 26799 disabled: 'disabled', 26800 disablepictureinpicture: 'disablePictureInPicture', 26801 download: 'download', 26802 draggable: 'draggable', 26803 enctype: 'encType', 26804 for: 'htmlFor', 26805 form: 'form', 26806 formmethod: 'formMethod', 26807 formaction: 'formAction', 26808 formenctype: 'formEncType', 26809 formnovalidate: 'formNoValidate', 26810 formtarget: 'formTarget', 26811 frameborder: 'frameBorder', 26812 headers: 'headers', 26813 height: 'height', 26814 hidden: 'hidden', 26815 high: 'high', 26816 href: 'href', 26817 hreflang: 'hrefLang', 26818 htmlfor: 'htmlFor', 26819 httpequiv: 'httpEquiv', 26820 'http-equiv': 'httpEquiv', 26821 icon: 'icon', 26822 id: 'id', 26823 innerhtml: 'innerHTML', 26824 inputmode: 'inputMode', 26825 integrity: 'integrity', 26826 is: 'is', 26827 itemid: 'itemID', 26828 itemprop: 'itemProp', 26829 itemref: 'itemRef', 26830 itemscope: 'itemScope', 26831 itemtype: 'itemType', 26832 keyparams: 'keyParams', 26833 keytype: 'keyType', 26834 kind: 'kind', 26835 label: 'label', 26836 lang: 'lang', 26837 list: 'list', 26838 loop: 'loop', 26839 low: 'low', 26840 manifest: 'manifest', 26841 marginwidth: 'marginWidth', 26842 marginheight: 'marginHeight', 26843 max: 'max', 26844 maxlength: 'maxLength', 26845 media: 'media', 26846 mediagroup: 'mediaGroup', 26847 method: 'method', 26848 min: 'min', 26849 minlength: 'minLength', 26850 multiple: 'multiple', 26851 muted: 'muted', 26852 name: 'name', 26853 nomodule: 'noModule', 26854 nonce: 'nonce', 26855 novalidate: 'noValidate', 26856 open: 'open', 26857 optimum: 'optimum', 26858 pattern: 'pattern', 26859 placeholder: 'placeholder', 26860 playsinline: 'playsInline', 26861 poster: 'poster', 26862 preload: 'preload', 26863 profile: 'profile', 26864 radiogroup: 'radioGroup', 26865 readonly: 'readOnly', 26866 referrerpolicy: 'referrerPolicy', 26867 rel: 'rel', 26868 required: 'required', 26869 reversed: 'reversed', 26870 role: 'role', 26871 rows: 'rows', 26872 rowspan: 'rowSpan', 26873 sandbox: 'sandbox', 26874 scope: 'scope', 26875 scoped: 'scoped', 26876 scrolling: 'scrolling', 26877 seamless: 'seamless', 26878 selected: 'selected', 26879 shape: 'shape', 26880 size: 'size', 26881 sizes: 'sizes', 26882 span: 'span', 26883 spellcheck: 'spellCheck', 26884 src: 'src', 26885 srcdoc: 'srcDoc', 26886 srclang: 'srcLang', 26887 srcset: 'srcSet', 26888 start: 'start', 26889 step: 'step', 26890 style: 'style', 26891 summary: 'summary', 26892 tabindex: 'tabIndex', 26893 target: 'target', 26894 title: 'title', 26895 type: 'type', 26896 usemap: 'useMap', 26897 value: 'value', 26898 width: 'width', 26899 wmode: 'wmode', 26900 wrap: 'wrap', 26901 // SVG 26902 about: 'about', 26903 accentheight: 'accentHeight', 26904 'accent-height': 'accentHeight', 26905 accumulate: 'accumulate', 26906 additive: 'additive', 26907 alignmentbaseline: 'alignmentBaseline', 26908 'alignment-baseline': 'alignmentBaseline', 26909 allowreorder: 'allowReorder', 26910 alphabetic: 'alphabetic', 26911 amplitude: 'amplitude', 26912 arabicform: 'arabicForm', 26913 'arabic-form': 'arabicForm', 26914 ascent: 'ascent', 26915 attributename: 'attributeName', 26916 attributetype: 'attributeType', 26917 autoreverse: 'autoReverse', 26918 azimuth: 'azimuth', 26919 basefrequency: 'baseFrequency', 26920 baselineshift: 'baselineShift', 26921 'baseline-shift': 'baselineShift', 26922 baseprofile: 'baseProfile', 26923 bbox: 'bbox', 26924 begin: 'begin', 26925 bias: 'bias', 26926 by: 'by', 26927 calcmode: 'calcMode', 26928 capheight: 'capHeight', 26929 'cap-height': 'capHeight', 26930 clip: 'clip', 26931 clippath: 'clipPath', 26932 'clip-path': 'clipPath', 26933 clippathunits: 'clipPathUnits', 26934 cliprule: 'clipRule', 26935 'clip-rule': 'clipRule', 26936 color: 'color', 26937 colorinterpolation: 'colorInterpolation', 26938 'color-interpolation': 'colorInterpolation', 26939 colorinterpolationfilters: 'colorInterpolationFilters', 26940 'color-interpolation-filters': 'colorInterpolationFilters', 26941 colorprofile: 'colorProfile', 26942 'color-profile': 'colorProfile', 26943 colorrendering: 'colorRendering', 26944 'color-rendering': 'colorRendering', 26945 contentscripttype: 'contentScriptType', 26946 contentstyletype: 'contentStyleType', 26947 cursor: 'cursor', 26948 cx: 'cx', 26949 cy: 'cy', 26950 d: 'd', 26951 datatype: 'datatype', 26952 decelerate: 'decelerate', 26953 descent: 'descent', 26954 diffuseconstant: 'diffuseConstant', 26955 direction: 'direction', 26956 display: 'display', 26957 divisor: 'divisor', 26958 dominantbaseline: 'dominantBaseline', 26959 'dominant-baseline': 'dominantBaseline', 26960 dur: 'dur', 26961 dx: 'dx', 26962 dy: 'dy', 26963 edgemode: 'edgeMode', 26964 elevation: 'elevation', 26965 enablebackground: 'enableBackground', 26966 'enable-background': 'enableBackground', 26967 end: 'end', 26968 exponent: 'exponent', 26969 externalresourcesrequired: 'externalResourcesRequired', 26970 fill: 'fill', 26971 fillopacity: 'fillOpacity', 26972 'fill-opacity': 'fillOpacity', 26973 fillrule: 'fillRule', 26974 'fill-rule': 'fillRule', 26975 filter: 'filter', 26976 filterres: 'filterRes', 26977 filterunits: 'filterUnits', 26978 floodopacity: 'floodOpacity', 26979 'flood-opacity': 'floodOpacity', 26980 floodcolor: 'floodColor', 26981 'flood-color': 'floodColor', 26982 focusable: 'focusable', 26983 fontfamily: 'fontFamily', 26984 'font-family': 'fontFamily', 26985 fontsize: 'fontSize', 26986 'font-size': 'fontSize', 26987 fontsizeadjust: 'fontSizeAdjust', 26988 'font-size-adjust': 'fontSizeAdjust', 26989 fontstretch: 'fontStretch', 26990 'font-stretch': 'fontStretch', 26991 fontstyle: 'fontStyle', 26992 'font-style': 'fontStyle', 26993 fontvariant: 'fontVariant', 26994 'font-variant': 'fontVariant', 26995 fontweight: 'fontWeight', 26996 'font-weight': 'fontWeight', 26997 format: 'format', 26998 from: 'from', 26999 fx: 'fx', 27000 fy: 'fy', 27001 g1: 'g1', 27002 g2: 'g2', 27003 glyphname: 'glyphName', 27004 'glyph-name': 'glyphName', 27005 glyphorientationhorizontal: 'glyphOrientationHorizontal', 27006 'glyph-orientation-horizontal': 'glyphOrientationHorizontal', 27007 glyphorientationvertical: 'glyphOrientationVertical', 27008 'glyph-orientation-vertical': 'glyphOrientationVertical', 27009 glyphref: 'glyphRef', 27010 gradienttransform: 'gradientTransform', 27011 gradientunits: 'gradientUnits', 27012 hanging: 'hanging', 27013 horizadvx: 'horizAdvX', 27014 'horiz-adv-x': 'horizAdvX', 27015 horizoriginx: 'horizOriginX', 27016 'horiz-origin-x': 'horizOriginX', 27017 ideographic: 'ideographic', 27018 imagerendering: 'imageRendering', 27019 'image-rendering': 'imageRendering', 27020 in2: 'in2', 27021 in: 'in', 27022 inlist: 'inlist', 27023 intercept: 'intercept', 27024 k1: 'k1', 27025 k2: 'k2', 27026 k3: 'k3', 27027 k4: 'k4', 27028 k: 'k', 27029 kernelmatrix: 'kernelMatrix', 27030 kernelunitlength: 'kernelUnitLength', 27031 kerning: 'kerning', 27032 keypoints: 'keyPoints', 27033 keysplines: 'keySplines', 27034 keytimes: 'keyTimes', 27035 lengthadjust: 'lengthAdjust', 27036 letterspacing: 'letterSpacing', 27037 'letter-spacing': 'letterSpacing', 27038 lightingcolor: 'lightingColor', 27039 'lighting-color': 'lightingColor', 27040 limitingconeangle: 'limitingConeAngle', 27041 local: 'local', 27042 markerend: 'markerEnd', 27043 'marker-end': 'markerEnd', 27044 markerheight: 'markerHeight', 27045 markermid: 'markerMid', 27046 'marker-mid': 'markerMid', 27047 markerstart: 'markerStart', 27048 'marker-start': 'markerStart', 27049 markerunits: 'markerUnits', 27050 markerwidth: 'markerWidth', 27051 mask: 'mask', 27052 maskcontentunits: 'maskContentUnits', 27053 maskunits: 'maskUnits', 27054 mathematical: 'mathematical', 27055 mode: 'mode', 27056 numoctaves: 'numOctaves', 27057 offset: 'offset', 27058 opacity: 'opacity', 27059 operator: 'operator', 27060 order: 'order', 27061 orient: 'orient', 27062 orientation: 'orientation', 27063 origin: 'origin', 27064 overflow: 'overflow', 27065 overlineposition: 'overlinePosition', 27066 'overline-position': 'overlinePosition', 27067 overlinethickness: 'overlineThickness', 27068 'overline-thickness': 'overlineThickness', 27069 paintorder: 'paintOrder', 27070 'paint-order': 'paintOrder', 27071 panose1: 'panose1', 27072 'panose-1': 'panose1', 27073 pathlength: 'pathLength', 27074 patterncontentunits: 'patternContentUnits', 27075 patterntransform: 'patternTransform', 27076 patternunits: 'patternUnits', 27077 pointerevents: 'pointerEvents', 27078 'pointer-events': 'pointerEvents', 27079 points: 'points', 27080 pointsatx: 'pointsAtX', 27081 pointsaty: 'pointsAtY', 27082 pointsatz: 'pointsAtZ', 27083 prefix: 'prefix', 27084 preservealpha: 'preserveAlpha', 27085 preserveaspectratio: 'preserveAspectRatio', 27086 primitiveunits: 'primitiveUnits', 27087 property: 'property', 27088 r: 'r', 27089 radius: 'radius', 27090 refx: 'refX', 27091 refy: 'refY', 27092 renderingintent: 'renderingIntent', 27093 'rendering-intent': 'renderingIntent', 27094 repeatcount: 'repeatCount', 27095 repeatdur: 'repeatDur', 27096 requiredextensions: 'requiredExtensions', 27097 requiredfeatures: 'requiredFeatures', 27098 resource: 'resource', 27099 restart: 'restart', 27100 result: 'result', 27101 results: 'results', 27102 rotate: 'rotate', 27103 rx: 'rx', 27104 ry: 'ry', 27105 scale: 'scale', 27106 security: 'security', 27107 seed: 'seed', 27108 shaperendering: 'shapeRendering', 27109 'shape-rendering': 'shapeRendering', 27110 slope: 'slope', 27111 spacing: 'spacing', 27112 specularconstant: 'specularConstant', 27113 specularexponent: 'specularExponent', 27114 speed: 'speed', 27115 spreadmethod: 'spreadMethod', 27116 startoffset: 'startOffset', 27117 stddeviation: 'stdDeviation', 27118 stemh: 'stemh', 27119 stemv: 'stemv', 27120 stitchtiles: 'stitchTiles', 27121 stopcolor: 'stopColor', 27122 'stop-color': 'stopColor', 27123 stopopacity: 'stopOpacity', 27124 'stop-opacity': 'stopOpacity', 27125 strikethroughposition: 'strikethroughPosition', 27126 'strikethrough-position': 'strikethroughPosition', 27127 strikethroughthickness: 'strikethroughThickness', 27128 'strikethrough-thickness': 'strikethroughThickness', 27129 string: 'string', 27130 stroke: 'stroke', 27131 strokedasharray: 'strokeDasharray', 27132 'stroke-dasharray': 'strokeDasharray', 27133 strokedashoffset: 'strokeDashoffset', 27134 'stroke-dashoffset': 'strokeDashoffset', 27135 strokelinecap: 'strokeLinecap', 27136 'stroke-linecap': 'strokeLinecap', 27137 strokelinejoin: 'strokeLinejoin', 27138 'stroke-linejoin': 'strokeLinejoin', 27139 strokemiterlimit: 'strokeMiterlimit', 27140 'stroke-miterlimit': 'strokeMiterlimit', 27141 strokewidth: 'strokeWidth', 27142 'stroke-width': 'strokeWidth', 27143 strokeopacity: 'strokeOpacity', 27144 'stroke-opacity': 'strokeOpacity', 27145 suppresscontenteditablewarning: 'suppressContentEditableWarning', 27146 suppresshydrationwarning: 'suppressHydrationWarning', 27147 surfacescale: 'surfaceScale', 27148 systemlanguage: 'systemLanguage', 27149 tablevalues: 'tableValues', 27150 targetx: 'targetX', 27151 targety: 'targetY', 27152 textanchor: 'textAnchor', 27153 'text-anchor': 'textAnchor', 27154 textdecoration: 'textDecoration', 27155 'text-decoration': 'textDecoration', 27156 textlength: 'textLength', 27157 textrendering: 'textRendering', 27158 'text-rendering': 'textRendering', 27159 to: 'to', 27160 transform: 'transform', 27161 typeof: 'typeof', 27162 u1: 'u1', 27163 u2: 'u2', 27164 underlineposition: 'underlinePosition', 27165 'underline-position': 'underlinePosition', 27166 underlinethickness: 'underlineThickness', 27167 'underline-thickness': 'underlineThickness', 27168 unicode: 'unicode', 27169 unicodebidi: 'unicodeBidi', 27170 'unicode-bidi': 'unicodeBidi', 27171 unicoderange: 'unicodeRange', 27172 'unicode-range': 'unicodeRange', 27173 unitsperem: 'unitsPerEm', 27174 'units-per-em': 'unitsPerEm', 27175 unselectable: 'unselectable', 27176 valphabetic: 'vAlphabetic', 27177 'v-alphabetic': 'vAlphabetic', 27178 values: 'values', 27179 vectoreffect: 'vectorEffect', 27180 'vector-effect': 'vectorEffect', 27181 version: 'version', 27182 vertadvy: 'vertAdvY', 27183 'vert-adv-y': 'vertAdvY', 27184 vertoriginx: 'vertOriginX', 27185 'vert-origin-x': 'vertOriginX', 27186 vertoriginy: 'vertOriginY', 27187 'vert-origin-y': 'vertOriginY', 27188 vhanging: 'vHanging', 27189 'v-hanging': 'vHanging', 27190 videographic: 'vIdeographic', 27191 'v-ideographic': 'vIdeographic', 27192 viewbox: 'viewBox', 27193 viewtarget: 'viewTarget', 27194 visibility: 'visibility', 27195 vmathematical: 'vMathematical', 27196 'v-mathematical': 'vMathematical', 27197 vocab: 'vocab', 27198 widths: 'widths', 27199 wordspacing: 'wordSpacing', 27200 'word-spacing': 'wordSpacing', 27201 writingmode: 'writingMode', 27202 'writing-mode': 'writingMode', 27203 x1: 'x1', 27204 x2: 'x2', 27205 x: 'x', 27206 xchannelselector: 'xChannelSelector', 27207 xheight: 'xHeight', 27208 'x-height': 'xHeight', 27209 xlinkactuate: 'xlinkActuate', 27210 'xlink:actuate': 'xlinkActuate', 27211 xlinkarcrole: 'xlinkArcrole', 27212 'xlink:arcrole': 'xlinkArcrole', 27213 xlinkhref: 'xlinkHref', 27214 'xlink:href': 'xlinkHref', 27215 xlinkrole: 'xlinkRole', 27216 'xlink:role': 'xlinkRole', 27217 xlinkshow: 'xlinkShow', 27218 'xlink:show': 'xlinkShow', 27219 xlinktitle: 'xlinkTitle', 27220 'xlink:title': 'xlinkTitle', 27221 xlinktype: 'xlinkType', 27222 'xlink:type': 'xlinkType', 27223 xmlbase: 'xmlBase', 27224 'xml:base': 'xmlBase', 27225 xmllang: 'xmlLang', 27226 'xml:lang': 'xmlLang', 27227 xmlns: 'xmlns', 27228 'xml:space': 'xmlSpace', 27229 xmlnsxlink: 'xmlnsXlink', 27230 'xmlns:xlink': 'xmlnsXlink', 27231 xmlspace: 'xmlSpace', 27232 y1: 'y1', 27233 y2: 'y2', 27234 y: 'y', 27235 ychannelselector: 'yChannelSelector', 27236 z: 'z', 27237 zoomandpan: 'zoomAndPan' 27238}; 27239 27240var ariaProperties = { 27241 'aria-current': 0, 27242 // state 27243 'aria-details': 0, 27244 'aria-disabled': 0, 27245 // state 27246 'aria-hidden': 0, 27247 // state 27248 'aria-invalid': 0, 27249 // state 27250 'aria-keyshortcuts': 0, 27251 'aria-label': 0, 27252 'aria-roledescription': 0, 27253 // Widget Attributes 27254 'aria-autocomplete': 0, 27255 'aria-checked': 0, 27256 'aria-expanded': 0, 27257 'aria-haspopup': 0, 27258 'aria-level': 0, 27259 'aria-modal': 0, 27260 'aria-multiline': 0, 27261 'aria-multiselectable': 0, 27262 'aria-orientation': 0, 27263 'aria-placeholder': 0, 27264 'aria-pressed': 0, 27265 'aria-readonly': 0, 27266 'aria-required': 0, 27267 'aria-selected': 0, 27268 'aria-sort': 0, 27269 'aria-valuemax': 0, 27270 'aria-valuemin': 0, 27271 'aria-valuenow': 0, 27272 'aria-valuetext': 0, 27273 // Live Region Attributes 27274 'aria-atomic': 0, 27275 'aria-busy': 0, 27276 'aria-live': 0, 27277 'aria-relevant': 0, 27278 // Drag-and-Drop Attributes 27279 'aria-dropeffect': 0, 27280 'aria-grabbed': 0, 27281 // Relationship Attributes 27282 'aria-activedescendant': 0, 27283 'aria-colcount': 0, 27284 'aria-colindex': 0, 27285 'aria-colspan': 0, 27286 'aria-controls': 0, 27287 'aria-describedby': 0, 27288 'aria-errormessage': 0, 27289 'aria-flowto': 0, 27290 'aria-labelledby': 0, 27291 'aria-owns': 0, 27292 'aria-posinset': 0, 27293 'aria-rowcount': 0, 27294 'aria-rowindex': 0, 27295 'aria-rowspan': 0, 27296 'aria-setsize': 0 27297}; 27298 27299var warnedProperties = {}; 27300var rARIA = new RegExp('^(aria)-[' + ATTRIBUTE_NAME_CHAR + ']*$'); 27301var rARIACamel = new RegExp('^(aria)[A-Z][' + ATTRIBUTE_NAME_CHAR + ']*$'); 27302var hasOwnProperty$1 = Object.prototype.hasOwnProperty; 27303 27304function validateProperty(tagName, name) { 27305 { 27306 if (hasOwnProperty$1.call(warnedProperties, name) && warnedProperties[name]) { 27307 return true; 27308 } 27309 27310 if (rARIACamel.test(name)) { 27311 var ariaName = 'aria-' + name.slice(4).toLowerCase(); 27312 var correctName = ariaProperties.hasOwnProperty(ariaName) ? ariaName : null; // If this is an aria-* attribute, but is not listed in the known DOM 27313 // DOM properties, then it is an invalid aria-* attribute. 27314 27315 if (correctName == null) { 27316 error('Invalid ARIA attribute `%s`. ARIA attributes follow the pattern aria-* and must be lowercase.', name); 27317 27318 warnedProperties[name] = true; 27319 return true; 27320 } // aria-* attributes should be lowercase; suggest the lowercase version. 27321 27322 27323 if (name !== correctName) { 27324 error('Invalid ARIA attribute `%s`. Did you mean `%s`?', name, correctName); 27325 27326 warnedProperties[name] = true; 27327 return true; 27328 } 27329 } 27330 27331 if (rARIA.test(name)) { 27332 var lowerCasedName = name.toLowerCase(); 27333 var standardName = ariaProperties.hasOwnProperty(lowerCasedName) ? lowerCasedName : null; // If this is an aria-* attribute, but is not listed in the known DOM 27334 // DOM properties, then it is an invalid aria-* attribute. 27335 27336 if (standardName == null) { 27337 warnedProperties[name] = true; 27338 return false; 27339 } // aria-* attributes should be lowercase; suggest the lowercase version. 27340 27341 27342 if (name !== standardName) { 27343 error('Unknown ARIA attribute `%s`. Did you mean `%s`?', name, standardName); 27344 27345 warnedProperties[name] = true; 27346 return true; 27347 } 27348 } 27349 } 27350 27351 return true; 27352} 27353 27354function warnInvalidARIAProps(type, props) { 27355 { 27356 var invalidProps = []; 27357 27358 for (var key in props) { 27359 var isValid = validateProperty(type, key); 27360 27361 if (!isValid) { 27362 invalidProps.push(key); 27363 } 27364 } 27365 27366 var unknownPropString = invalidProps.map(function (prop) { 27367 return '`' + prop + '`'; 27368 }).join(', '); 27369 27370 if (invalidProps.length === 1) { 27371 error('Invalid aria prop %s on <%s> tag. ' + 'For details, see https://fb.me/invalid-aria-prop', unknownPropString, type); 27372 } else if (invalidProps.length > 1) { 27373 error('Invalid aria props %s on <%s> tag. ' + 'For details, see https://fb.me/invalid-aria-prop', unknownPropString, type); 27374 } 27375 } 27376} 27377 27378function validateProperties(type, props) { 27379 if (isCustomComponent(type, props)) { 27380 return; 27381 } 27382 27383 warnInvalidARIAProps(type, props); 27384} 27385 27386var didWarnValueNull = false; 27387function validateProperties$1(type, props) { 27388 { 27389 if (type !== 'input' && type !== 'textarea' && type !== 'select') { 27390 return; 27391 } 27392 27393 if (props != null && props.value === null && !didWarnValueNull) { 27394 didWarnValueNull = true; 27395 27396 if (type === 'select' && props.multiple) { 27397 error('`value` prop on `%s` should not be null. ' + 'Consider using an empty array when `multiple` is set to `true` ' + 'to clear the component or `undefined` for uncontrolled components.', type); 27398 } else { 27399 error('`value` prop on `%s` should not be null. ' + 'Consider using an empty string to clear the component or `undefined` ' + 'for uncontrolled components.', type); 27400 } 27401 } 27402 } 27403} 27404 27405var validateProperty$1 = function () {}; 27406 27407{ 27408 var warnedProperties$1 = {}; 27409 var _hasOwnProperty = Object.prototype.hasOwnProperty; 27410 var EVENT_NAME_REGEX = /^on./; 27411 var INVALID_EVENT_NAME_REGEX = /^on[^A-Z]/; 27412 var rARIA$1 = new RegExp('^(aria)-[' + ATTRIBUTE_NAME_CHAR + ']*$'); 27413 var rARIACamel$1 = new RegExp('^(aria)[A-Z][' + ATTRIBUTE_NAME_CHAR + ']*$'); 27414 27415 validateProperty$1 = function (tagName, name, value, canUseEventSystem) { 27416 if (_hasOwnProperty.call(warnedProperties$1, name) && warnedProperties$1[name]) { 27417 return true; 27418 } 27419 27420 var lowerCasedName = name.toLowerCase(); 27421 27422 if (lowerCasedName === 'onfocusin' || lowerCasedName === 'onfocusout') { 27423 error('React uses onFocus and onBlur instead of onFocusIn and onFocusOut. ' + 'All React events are normalized to bubble, so onFocusIn and onFocusOut ' + 'are not needed/supported by React.'); 27424 27425 warnedProperties$1[name] = true; 27426 return true; 27427 } // We can't rely on the event system being injected on the server. 27428 27429 27430 if (canUseEventSystem) { 27431 if (registrationNameModules.hasOwnProperty(name)) { 27432 return true; 27433 } 27434 27435 var registrationName = possibleRegistrationNames.hasOwnProperty(lowerCasedName) ? possibleRegistrationNames[lowerCasedName] : null; 27436 27437 if (registrationName != null) { 27438 error('Invalid event handler property `%s`. Did you mean `%s`?', name, registrationName); 27439 27440 warnedProperties$1[name] = true; 27441 return true; 27442 } 27443 27444 if (EVENT_NAME_REGEX.test(name)) { 27445 error('Unknown event handler property `%s`. It will be ignored.', name); 27446 27447 warnedProperties$1[name] = true; 27448 return true; 27449 } 27450 } else if (EVENT_NAME_REGEX.test(name)) { 27451 // If no event plugins have been injected, we are in a server environment. 27452 // So we can't tell if the event name is correct for sure, but we can filter 27453 // out known bad ones like `onclick`. We can't suggest a specific replacement though. 27454 if (INVALID_EVENT_NAME_REGEX.test(name)) { 27455 error('Invalid event handler property `%s`. ' + 'React events use the camelCase naming convention, for example `onClick`.', name); 27456 } 27457 27458 warnedProperties$1[name] = true; 27459 return true; 27460 } // Let the ARIA attribute hook validate ARIA attributes 27461 27462 27463 if (rARIA$1.test(name) || rARIACamel$1.test(name)) { 27464 return true; 27465 } 27466 27467 if (lowerCasedName === 'innerhtml') { 27468 error('Directly setting property `innerHTML` is not permitted. ' + 'For more information, lookup documentation on `dangerouslySetInnerHTML`.'); 27469 27470 warnedProperties$1[name] = true; 27471 return true; 27472 } 27473 27474 if (lowerCasedName === 'aria') { 27475 error('The `aria` attribute is reserved for future use in React. ' + 'Pass individual `aria-` attributes instead.'); 27476 27477 warnedProperties$1[name] = true; 27478 return true; 27479 } 27480 27481 if (lowerCasedName === 'is' && value !== null && value !== undefined && typeof value !== 'string') { 27482 error('Received a `%s` for a string attribute `is`. If this is expected, cast ' + 'the value to a string.', typeof value); 27483 27484 warnedProperties$1[name] = true; 27485 return true; 27486 } 27487 27488 if (typeof value === 'number' && isNaN(value)) { 27489 error('Received NaN for the `%s` attribute. If this is expected, cast ' + 'the value to a string.', name); 27490 27491 warnedProperties$1[name] = true; 27492 return true; 27493 } 27494 27495 var propertyInfo = getPropertyInfo(name); 27496 var isReserved = propertyInfo !== null && propertyInfo.type === RESERVED; // Known attributes should match the casing specified in the property config. 27497 27498 if (possibleStandardNames.hasOwnProperty(lowerCasedName)) { 27499 var standardName = possibleStandardNames[lowerCasedName]; 27500 27501 if (standardName !== name) { 27502 error('Invalid DOM property `%s`. Did you mean `%s`?', name, standardName); 27503 27504 warnedProperties$1[name] = true; 27505 return true; 27506 } 27507 } else if (!isReserved && name !== lowerCasedName) { 27508 // Unknown attributes should have lowercase casing since that's how they 27509 // will be cased anyway with server rendering. 27510 error('React does not recognize the `%s` prop on a DOM element. If you ' + 'intentionally want it to appear in the DOM as a custom ' + 'attribute, spell it as lowercase `%s` instead. ' + 'If you accidentally passed it from a parent component, remove ' + 'it from the DOM element.', name, lowerCasedName); 27511 27512 warnedProperties$1[name] = true; 27513 return true; 27514 } 27515 27516 if (typeof value === 'boolean' && shouldRemoveAttributeWithWarning(name, value, propertyInfo, false)) { 27517 if (value) { 27518 error('Received `%s` for a non-boolean attribute `%s`.\n\n' + 'If you want to write it to the DOM, pass a string instead: ' + '%s="%s" or %s={value.toString()}.', value, name, name, value, name); 27519 } else { 27520 error('Received `%s` for a non-boolean attribute `%s`.\n\n' + 'If you want to write it to the DOM, pass a string instead: ' + '%s="%s" or %s={value.toString()}.\n\n' + 'If you used to conditionally omit it with %s={condition && value}, ' + 'pass %s={condition ? value : undefined} instead.', value, name, name, value, name, name, name); 27521 } 27522 27523 warnedProperties$1[name] = true; 27524 return true; 27525 } // Now that we've validated casing, do not validate 27526 // data types for reserved props 27527 27528 27529 if (isReserved) { 27530 return true; 27531 } // Warn when a known attribute is a bad type 27532 27533 27534 if (shouldRemoveAttributeWithWarning(name, value, propertyInfo, false)) { 27535 warnedProperties$1[name] = true; 27536 return false; 27537 } // Warn when passing the strings 'false' or 'true' into a boolean prop 27538 27539 27540 if ((value === 'false' || value === 'true') && propertyInfo !== null && propertyInfo.type === BOOLEAN) { 27541 error('Received the string `%s` for the boolean attribute `%s`. ' + '%s ' + 'Did you mean %s={%s}?', value, name, value === 'false' ? 'The browser will interpret it as a truthy value.' : 'Although this works, it will not work as expected if you pass the string "false".', name, value); 27542 27543 warnedProperties$1[name] = true; 27544 return true; 27545 } 27546 27547 return true; 27548 }; 27549} 27550 27551var warnUnknownProperties = function (type, props, canUseEventSystem) { 27552 { 27553 var unknownProps = []; 27554 27555 for (var key in props) { 27556 var isValid = validateProperty$1(type, key, props[key], canUseEventSystem); 27557 27558 if (!isValid) { 27559 unknownProps.push(key); 27560 } 27561 } 27562 27563 var unknownPropString = unknownProps.map(function (prop) { 27564 return '`' + prop + '`'; 27565 }).join(', '); 27566 27567 if (unknownProps.length === 1) { 27568 error('Invalid value for prop %s on <%s> tag. Either remove it from the element, ' + 'or pass a string or number value to keep it in the DOM. ' + 'For details, see https://fb.me/react-attribute-behavior', unknownPropString, type); 27569 } else if (unknownProps.length > 1) { 27570 error('Invalid values for props %s on <%s> tag. Either remove them from the element, ' + 'or pass a string or number value to keep them in the DOM. ' + 'For details, see https://fb.me/react-attribute-behavior', unknownPropString, type); 27571 } 27572 } 27573}; 27574 27575function validateProperties$2(type, props, canUseEventSystem) { 27576 if (isCustomComponent(type, props)) { 27577 return; 27578 } 27579 27580 warnUnknownProperties(type, props, canUseEventSystem); 27581} 27582 27583var didWarnInvalidHydration = false; 27584var DANGEROUSLY_SET_INNER_HTML = 'dangerouslySetInnerHTML'; 27585var SUPPRESS_CONTENT_EDITABLE_WARNING = 'suppressContentEditableWarning'; 27586var SUPPRESS_HYDRATION_WARNING = 'suppressHydrationWarning'; 27587var AUTOFOCUS = 'autoFocus'; 27588var CHILDREN = 'children'; 27589var STYLE = 'style'; 27590var HTML$1 = '__html'; 27591var HTML_NAMESPACE$1 = Namespaces.html; 27592var warnedUnknownTags; 27593var suppressHydrationWarning; 27594var validatePropertiesInDevelopment; 27595var warnForTextDifference; 27596var warnForPropDifference; 27597var warnForExtraAttributes; 27598var warnForInvalidEventListener; 27599var canDiffStyleForHydrationWarning; 27600var normalizeMarkupForTextOrAttribute; 27601var normalizeHTML; 27602 27603{ 27604 warnedUnknownTags = { 27605 // Chrome is the only major browser not shipping <time>. But as of July 27606 // 2017 it intends to ship it due to widespread usage. We intentionally 27607 // *don't* warn for <time> even if it's unrecognized by Chrome because 27608 // it soon will be, and many apps have been using it anyway. 27609 time: true, 27610 // There are working polyfills for <dialog>. Let people use it. 27611 dialog: true, 27612 // Electron ships a custom <webview> tag to display external web content in 27613 // an isolated frame and process. 27614 // This tag is not present in non Electron environments such as JSDom which 27615 // is often used for testing purposes. 27616 // @see https://electronjs.org/docs/api/webview-tag 27617 webview: true 27618 }; 27619 27620 validatePropertiesInDevelopment = function (type, props) { 27621 validateProperties(type, props); 27622 validateProperties$1(type, props); 27623 validateProperties$2(type, props, 27624 /* canUseEventSystem */ 27625 true); 27626 }; // IE 11 parses & normalizes the style attribute as opposed to other 27627 // browsers. It adds spaces and sorts the properties in some 27628 // non-alphabetical order. Handling that would require sorting CSS 27629 // properties in the client & server versions or applying 27630 // `expectedStyle` to a temporary DOM node to read its `style` attribute 27631 // normalized. Since it only affects IE, we're skipping style warnings 27632 // in that browser completely in favor of doing all that work. 27633 // See https://github.com/facebook/react/issues/11807 27634 27635 27636 canDiffStyleForHydrationWarning = canUseDOM && !document.documentMode; // HTML parsing normalizes CR and CRLF to LF. 27637 // It also can turn \u0000 into \uFFFD inside attributes. 27638 // https://www.w3.org/TR/html5/single-page.html#preprocessing-the-input-stream 27639 // If we have a mismatch, it might be caused by that. 27640 // We will still patch up in this case but not fire the warning. 27641 27642 var NORMALIZE_NEWLINES_REGEX = /\r\n?/g; 27643 var NORMALIZE_NULL_AND_REPLACEMENT_REGEX = /\u0000|\uFFFD/g; 27644 27645 normalizeMarkupForTextOrAttribute = function (markup) { 27646 var markupString = typeof markup === 'string' ? markup : '' + markup; 27647 return markupString.replace(NORMALIZE_NEWLINES_REGEX, '\n').replace(NORMALIZE_NULL_AND_REPLACEMENT_REGEX, ''); 27648 }; 27649 27650 warnForTextDifference = function (serverText, clientText) { 27651 if (didWarnInvalidHydration) { 27652 return; 27653 } 27654 27655 var normalizedClientText = normalizeMarkupForTextOrAttribute(clientText); 27656 var normalizedServerText = normalizeMarkupForTextOrAttribute(serverText); 27657 27658 if (normalizedServerText === normalizedClientText) { 27659 return; 27660 } 27661 27662 didWarnInvalidHydration = true; 27663 27664 error('Text content did not match. Server: "%s" Client: "%s"', normalizedServerText, normalizedClientText); 27665 }; 27666 27667 warnForPropDifference = function (propName, serverValue, clientValue) { 27668 if (didWarnInvalidHydration) { 27669 return; 27670 } 27671 27672 var normalizedClientValue = normalizeMarkupForTextOrAttribute(clientValue); 27673 var normalizedServerValue = normalizeMarkupForTextOrAttribute(serverValue); 27674 27675 if (normalizedServerValue === normalizedClientValue) { 27676 return; 27677 } 27678 27679 didWarnInvalidHydration = true; 27680 27681 error('Prop `%s` did not match. Server: %s Client: %s', propName, JSON.stringify(normalizedServerValue), JSON.stringify(normalizedClientValue)); 27682 }; 27683 27684 warnForExtraAttributes = function (attributeNames) { 27685 if (didWarnInvalidHydration) { 27686 return; 27687 } 27688 27689 didWarnInvalidHydration = true; 27690 var names = []; 27691 attributeNames.forEach(function (name) { 27692 names.push(name); 27693 }); 27694 27695 error('Extra attributes from the server: %s', names); 27696 }; 27697 27698 warnForInvalidEventListener = function (registrationName, listener) { 27699 if (listener === false) { 27700 error('Expected `%s` listener to be a function, instead got `false`.\n\n' + 'If you used to conditionally omit it with %s={condition && value}, ' + 'pass %s={condition ? value : undefined} instead.', registrationName, registrationName, registrationName); 27701 } else { 27702 error('Expected `%s` listener to be a function, instead got a value of `%s` type.', registrationName, typeof listener); 27703 } 27704 }; // Parse the HTML and read it back to normalize the HTML string so that it 27705 // can be used for comparison. 27706 27707 27708 normalizeHTML = function (parent, html) { 27709 // We could have created a separate document here to avoid 27710 // re-initializing custom elements if they exist. But this breaks 27711 // how <noscript> is being handled. So we use the same document. 27712 // See the discussion in https://github.com/facebook/react/pull/11157. 27713 var testElement = parent.namespaceURI === HTML_NAMESPACE$1 ? parent.ownerDocument.createElement(parent.tagName) : parent.ownerDocument.createElementNS(parent.namespaceURI, parent.tagName); 27714 testElement.innerHTML = html; 27715 return testElement.innerHTML; 27716 }; 27717} 27718 27719function ensureListeningTo(rootContainerElement, registrationName) { 27720 var isDocumentOrFragment = rootContainerElement.nodeType === DOCUMENT_NODE || rootContainerElement.nodeType === DOCUMENT_FRAGMENT_NODE; 27721 var doc = isDocumentOrFragment ? rootContainerElement : rootContainerElement.ownerDocument; 27722 legacyListenToEvent(registrationName, doc); 27723} 27724 27725function getOwnerDocumentFromRootContainer(rootContainerElement) { 27726 return rootContainerElement.nodeType === DOCUMENT_NODE ? rootContainerElement : rootContainerElement.ownerDocument; 27727} 27728 27729function noop() {} 27730 27731function trapClickOnNonInteractiveElement(node) { 27732 // Mobile Safari does not fire properly bubble click events on 27733 // non-interactive elements, which means delegated click listeners do not 27734 // fire. The workaround for this bug involves attaching an empty click 27735 // listener on the target node. 27736 // http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html 27737 // Just set it using the onclick property so that we don't have to manage any 27738 // bookkeeping for it. Not sure if we need to clear it when the listener is 27739 // removed. 27740 // TODO: Only do this for the relevant Safaris maybe? 27741 node.onclick = noop; 27742} 27743 27744function setInitialDOMProperties(tag, domElement, rootContainerElement, nextProps, isCustomComponentTag) { 27745 for (var propKey in nextProps) { 27746 if (!nextProps.hasOwnProperty(propKey)) { 27747 continue; 27748 } 27749 27750 var nextProp = nextProps[propKey]; 27751 27752 if (propKey === STYLE) { 27753 { 27754 if (nextProp) { 27755 // Freeze the next style object so that we can assume it won't be 27756 // mutated. We have already warned for this in the past. 27757 Object.freeze(nextProp); 27758 } 27759 } // Relies on `updateStylesByID` not mutating `styleUpdates`. 27760 27761 27762 setValueForStyles(domElement, nextProp); 27763 } else if (propKey === DANGEROUSLY_SET_INNER_HTML) { 27764 var nextHtml = nextProp ? nextProp[HTML$1] : undefined; 27765 27766 if (nextHtml != null) { 27767 setInnerHTML(domElement, nextHtml); 27768 } 27769 } else if (propKey === CHILDREN) { 27770 if (typeof nextProp === 'string') { 27771 // Avoid setting initial textContent when the text is empty. In IE11 setting 27772 // textContent on a <textarea> will cause the placeholder to not 27773 // show within the <textarea> until it has been focused and blurred again. 27774 // https://github.com/facebook/react/issues/6731#issuecomment-254874553 27775 var canSetTextContent = tag !== 'textarea' || nextProp !== ''; 27776 27777 if (canSetTextContent) { 27778 setTextContent(domElement, nextProp); 27779 } 27780 } else if (typeof nextProp === 'number') { 27781 setTextContent(domElement, '' + nextProp); 27782 } 27783 } else if ( propKey === SUPPRESS_CONTENT_EDITABLE_WARNING || propKey === SUPPRESS_HYDRATION_WARNING) ; else if (propKey === AUTOFOCUS) ; else if (registrationNameModules.hasOwnProperty(propKey)) { 27784 if (nextProp != null) { 27785 if ( typeof nextProp !== 'function') { 27786 warnForInvalidEventListener(propKey, nextProp); 27787 } 27788 27789 ensureListeningTo(rootContainerElement, propKey); 27790 } 27791 } else if (nextProp != null) { 27792 setValueForProperty(domElement, propKey, nextProp, isCustomComponentTag); 27793 } 27794 } 27795} 27796 27797function updateDOMProperties(domElement, updatePayload, wasCustomComponentTag, isCustomComponentTag) { 27798 // TODO: Handle wasCustomComponentTag 27799 for (var i = 0; i < updatePayload.length; i += 2) { 27800 var propKey = updatePayload[i]; 27801 var propValue = updatePayload[i + 1]; 27802 27803 if (propKey === STYLE) { 27804 setValueForStyles(domElement, propValue); 27805 } else if (propKey === DANGEROUSLY_SET_INNER_HTML) { 27806 setInnerHTML(domElement, propValue); 27807 } else if (propKey === CHILDREN) { 27808 setTextContent(domElement, propValue); 27809 } else { 27810 setValueForProperty(domElement, propKey, propValue, isCustomComponentTag); 27811 } 27812 } 27813} 27814 27815function createElement(type, props, rootContainerElement, parentNamespace) { 27816 var isCustomComponentTag; // We create tags in the namespace of their parent container, except HTML 27817 // tags get no namespace. 27818 27819 var ownerDocument = getOwnerDocumentFromRootContainer(rootContainerElement); 27820 var domElement; 27821 var namespaceURI = parentNamespace; 27822 27823 if (namespaceURI === HTML_NAMESPACE$1) { 27824 namespaceURI = getIntrinsicNamespace(type); 27825 } 27826 27827 if (namespaceURI === HTML_NAMESPACE$1) { 27828 { 27829 isCustomComponentTag = isCustomComponent(type, props); // Should this check be gated by parent namespace? Not sure we want to 27830 // allow <SVG> or <mATH>. 27831 27832 if (!isCustomComponentTag && type !== type.toLowerCase()) { 27833 error('<%s /> is using incorrect casing. ' + 'Use PascalCase for React components, ' + 'or lowercase for HTML elements.', type); 27834 } 27835 } 27836 27837 if (type === 'script') { 27838 // Create the script via .innerHTML so its "parser-inserted" flag is 27839 // set to true and it does not execute 27840 var div = ownerDocument.createElement('div'); 27841 27842 div.innerHTML = '<script><' + '/script>'; // eslint-disable-line 27843 // This is guaranteed to yield a script element. 27844 27845 var firstChild = div.firstChild; 27846 domElement = div.removeChild(firstChild); 27847 } else if (typeof props.is === 'string') { 27848 // $FlowIssue `createElement` should be updated for Web Components 27849 domElement = ownerDocument.createElement(type, { 27850 is: props.is 27851 }); 27852 } else { 27853 // Separate else branch instead of using `props.is || undefined` above because of a Firefox bug. 27854 // See discussion in https://github.com/facebook/react/pull/6896 27855 // and discussion in https://bugzilla.mozilla.org/show_bug.cgi?id=1276240 27856 domElement = ownerDocument.createElement(type); // Normally attributes are assigned in `setInitialDOMProperties`, however the `multiple` and `size` 27857 // attributes on `select`s needs to be added before `option`s are inserted. 27858 // This prevents: 27859 // - a bug where the `select` does not scroll to the correct option because singular 27860 // `select` elements automatically pick the first item #13222 27861 // - a bug where the `select` set the first item as selected despite the `size` attribute #14239 27862 // See https://github.com/facebook/react/issues/13222 27863 // and https://github.com/facebook/react/issues/14239 27864 27865 if (type === 'select') { 27866 var node = domElement; 27867 27868 if (props.multiple) { 27869 node.multiple = true; 27870 } else if (props.size) { 27871 // Setting a size greater than 1 causes a select to behave like `multiple=true`, where 27872 // it is possible that no option is selected. 27873 // 27874 // This is only necessary when a select in "single selection mode". 27875 node.size = props.size; 27876 } 27877 } 27878 } 27879 } else { 27880 domElement = ownerDocument.createElementNS(namespaceURI, type); 27881 } 27882 27883 { 27884 if (namespaceURI === HTML_NAMESPACE$1) { 27885 if (!isCustomComponentTag && Object.prototype.toString.call(domElement) === '[object HTMLUnknownElement]' && !Object.prototype.hasOwnProperty.call(warnedUnknownTags, type)) { 27886 warnedUnknownTags[type] = true; 27887 27888 error('The tag <%s> is unrecognized in this browser. ' + 'If you meant to render a React component, start its name with ' + 'an uppercase letter.', type); 27889 } 27890 } 27891 } 27892 27893 return domElement; 27894} 27895function createTextNode(text, rootContainerElement) { 27896 return getOwnerDocumentFromRootContainer(rootContainerElement).createTextNode(text); 27897} 27898function setInitialProperties(domElement, tag, rawProps, rootContainerElement) { 27899 var isCustomComponentTag = isCustomComponent(tag, rawProps); 27900 27901 { 27902 validatePropertiesInDevelopment(tag, rawProps); 27903 } // TODO: Make sure that we check isMounted before firing any of these events. 27904 27905 27906 var props; 27907 27908 switch (tag) { 27909 case 'iframe': 27910 case 'object': 27911 case 'embed': 27912 trapBubbledEvent(TOP_LOAD, domElement); 27913 props = rawProps; 27914 break; 27915 27916 case 'video': 27917 case 'audio': 27918 // Create listener for each media event 27919 for (var i = 0; i < mediaEventTypes.length; i++) { 27920 trapBubbledEvent(mediaEventTypes[i], domElement); 27921 } 27922 27923 props = rawProps; 27924 break; 27925 27926 case 'source': 27927 trapBubbledEvent(TOP_ERROR, domElement); 27928 props = rawProps; 27929 break; 27930 27931 case 'img': 27932 case 'image': 27933 case 'link': 27934 trapBubbledEvent(TOP_ERROR, domElement); 27935 trapBubbledEvent(TOP_LOAD, domElement); 27936 props = rawProps; 27937 break; 27938 27939 case 'form': 27940 trapBubbledEvent(TOP_RESET, domElement); 27941 trapBubbledEvent(TOP_SUBMIT, domElement); 27942 props = rawProps; 27943 break; 27944 27945 case 'details': 27946 trapBubbledEvent(TOP_TOGGLE, domElement); 27947 props = rawProps; 27948 break; 27949 27950 case 'input': 27951 initWrapperState(domElement, rawProps); 27952 props = getHostProps(domElement, rawProps); 27953 trapBubbledEvent(TOP_INVALID, domElement); // For controlled components we always need to ensure we're listening 27954 // to onChange. Even if there is no listener. 27955 27956 ensureListeningTo(rootContainerElement, 'onChange'); 27957 break; 27958 27959 case 'option': 27960 validateProps(domElement, rawProps); 27961 props = getHostProps$1(domElement, rawProps); 27962 break; 27963 27964 case 'select': 27965 initWrapperState$1(domElement, rawProps); 27966 props = getHostProps$2(domElement, rawProps); 27967 trapBubbledEvent(TOP_INVALID, domElement); // For controlled components we always need to ensure we're listening 27968 // to onChange. Even if there is no listener. 27969 27970 ensureListeningTo(rootContainerElement, 'onChange'); 27971 break; 27972 27973 case 'textarea': 27974 initWrapperState$2(domElement, rawProps); 27975 props = getHostProps$3(domElement, rawProps); 27976 trapBubbledEvent(TOP_INVALID, domElement); // For controlled components we always need to ensure we're listening 27977 // to onChange. Even if there is no listener. 27978 27979 ensureListeningTo(rootContainerElement, 'onChange'); 27980 break; 27981 27982 default: 27983 props = rawProps; 27984 } 27985 27986 assertValidProps(tag, props); 27987 setInitialDOMProperties(tag, domElement, rootContainerElement, props, isCustomComponentTag); 27988 27989 switch (tag) { 27990 case 'input': 27991 // TODO: Make sure we check if this is still unmounted or do any clean 27992 // up necessary since we never stop tracking anymore. 27993 track(domElement); 27994 postMountWrapper(domElement, rawProps, false); 27995 break; 27996 27997 case 'textarea': 27998 // TODO: Make sure we check if this is still unmounted or do any clean 27999 // up necessary since we never stop tracking anymore. 28000 track(domElement); 28001 postMountWrapper$3(domElement); 28002 break; 28003 28004 case 'option': 28005 postMountWrapper$1(domElement, rawProps); 28006 break; 28007 28008 case 'select': 28009 postMountWrapper$2(domElement, rawProps); 28010 break; 28011 28012 default: 28013 if (typeof props.onClick === 'function') { 28014 // TODO: This cast may not be sound for SVG, MathML or custom elements. 28015 trapClickOnNonInteractiveElement(domElement); 28016 } 28017 28018 break; 28019 } 28020} // Calculate the diff between the two objects. 28021 28022function diffProperties(domElement, tag, lastRawProps, nextRawProps, rootContainerElement) { 28023 { 28024 validatePropertiesInDevelopment(tag, nextRawProps); 28025 } 28026 28027 var updatePayload = null; 28028 var lastProps; 28029 var nextProps; 28030 28031 switch (tag) { 28032 case 'input': 28033 lastProps = getHostProps(domElement, lastRawProps); 28034 nextProps = getHostProps(domElement, nextRawProps); 28035 updatePayload = []; 28036 break; 28037 28038 case 'option': 28039 lastProps = getHostProps$1(domElement, lastRawProps); 28040 nextProps = getHostProps$1(domElement, nextRawProps); 28041 updatePayload = []; 28042 break; 28043 28044 case 'select': 28045 lastProps = getHostProps$2(domElement, lastRawProps); 28046 nextProps = getHostProps$2(domElement, nextRawProps); 28047 updatePayload = []; 28048 break; 28049 28050 case 'textarea': 28051 lastProps = getHostProps$3(domElement, lastRawProps); 28052 nextProps = getHostProps$3(domElement, nextRawProps); 28053 updatePayload = []; 28054 break; 28055 28056 default: 28057 lastProps = lastRawProps; 28058 nextProps = nextRawProps; 28059 28060 if (typeof lastProps.onClick !== 'function' && typeof nextProps.onClick === 'function') { 28061 // TODO: This cast may not be sound for SVG, MathML or custom elements. 28062 trapClickOnNonInteractiveElement(domElement); 28063 } 28064 28065 break; 28066 } 28067 28068 assertValidProps(tag, nextProps); 28069 var propKey; 28070 var styleName; 28071 var styleUpdates = null; 28072 28073 for (propKey in lastProps) { 28074 if (nextProps.hasOwnProperty(propKey) || !lastProps.hasOwnProperty(propKey) || lastProps[propKey] == null) { 28075 continue; 28076 } 28077 28078 if (propKey === STYLE) { 28079 var lastStyle = lastProps[propKey]; 28080 28081 for (styleName in lastStyle) { 28082 if (lastStyle.hasOwnProperty(styleName)) { 28083 if (!styleUpdates) { 28084 styleUpdates = {}; 28085 } 28086 28087 styleUpdates[styleName] = ''; 28088 } 28089 } 28090 } else if (propKey === DANGEROUSLY_SET_INNER_HTML || propKey === CHILDREN) ; else if ( propKey === SUPPRESS_CONTENT_EDITABLE_WARNING || propKey === SUPPRESS_HYDRATION_WARNING) ; else if (propKey === AUTOFOCUS) ; else if (registrationNameModules.hasOwnProperty(propKey)) { 28091 // This is a special case. If any listener updates we need to ensure 28092 // that the "current" fiber pointer gets updated so we need a commit 28093 // to update this element. 28094 if (!updatePayload) { 28095 updatePayload = []; 28096 } 28097 } else { 28098 // For all other deleted properties we add it to the queue. We use 28099 // the whitelist in the commit phase instead. 28100 (updatePayload = updatePayload || []).push(propKey, null); 28101 } 28102 } 28103 28104 for (propKey in nextProps) { 28105 var nextProp = nextProps[propKey]; 28106 var lastProp = lastProps != null ? lastProps[propKey] : undefined; 28107 28108 if (!nextProps.hasOwnProperty(propKey) || nextProp === lastProp || nextProp == null && lastProp == null) { 28109 continue; 28110 } 28111 28112 if (propKey === STYLE) { 28113 { 28114 if (nextProp) { 28115 // Freeze the next style object so that we can assume it won't be 28116 // mutated. We have already warned for this in the past. 28117 Object.freeze(nextProp); 28118 } 28119 } 28120 28121 if (lastProp) { 28122 // Unset styles on `lastProp` but not on `nextProp`. 28123 for (styleName in lastProp) { 28124 if (lastProp.hasOwnProperty(styleName) && (!nextProp || !nextProp.hasOwnProperty(styleName))) { 28125 if (!styleUpdates) { 28126 styleUpdates = {}; 28127 } 28128 28129 styleUpdates[styleName] = ''; 28130 } 28131 } // Update styles that changed since `lastProp`. 28132 28133 28134 for (styleName in nextProp) { 28135 if (nextProp.hasOwnProperty(styleName) && lastProp[styleName] !== nextProp[styleName]) { 28136 if (!styleUpdates) { 28137 styleUpdates = {}; 28138 } 28139 28140 styleUpdates[styleName] = nextProp[styleName]; 28141 } 28142 } 28143 } else { 28144 // Relies on `updateStylesByID` not mutating `styleUpdates`. 28145 if (!styleUpdates) { 28146 if (!updatePayload) { 28147 updatePayload = []; 28148 } 28149 28150 updatePayload.push(propKey, styleUpdates); 28151 } 28152 28153 styleUpdates = nextProp; 28154 } 28155 } else if (propKey === DANGEROUSLY_SET_INNER_HTML) { 28156 var nextHtml = nextProp ? nextProp[HTML$1] : undefined; 28157 var lastHtml = lastProp ? lastProp[HTML$1] : undefined; 28158 28159 if (nextHtml != null) { 28160 if (lastHtml !== nextHtml) { 28161 (updatePayload = updatePayload || []).push(propKey, nextHtml); 28162 } 28163 } 28164 } else if (propKey === CHILDREN) { 28165 if (lastProp !== nextProp && (typeof nextProp === 'string' || typeof nextProp === 'number')) { 28166 (updatePayload = updatePayload || []).push(propKey, '' + nextProp); 28167 } 28168 } else if ( propKey === SUPPRESS_CONTENT_EDITABLE_WARNING || propKey === SUPPRESS_HYDRATION_WARNING) ; else if (registrationNameModules.hasOwnProperty(propKey)) { 28169 if (nextProp != null) { 28170 // We eagerly listen to this even though we haven't committed yet. 28171 if ( typeof nextProp !== 'function') { 28172 warnForInvalidEventListener(propKey, nextProp); 28173 } 28174 28175 ensureListeningTo(rootContainerElement, propKey); 28176 } 28177 28178 if (!updatePayload && lastProp !== nextProp) { 28179 // This is a special case. If any listener updates we need to ensure 28180 // that the "current" props pointer gets updated so we need a commit 28181 // to update this element. 28182 updatePayload = []; 28183 } 28184 } else { 28185 // For any other property we always add it to the queue and then we 28186 // filter it out using the whitelist during the commit. 28187 (updatePayload = updatePayload || []).push(propKey, nextProp); 28188 } 28189 } 28190 28191 if (styleUpdates) { 28192 { 28193 validateShorthandPropertyCollisionInDev(styleUpdates, nextProps[STYLE]); 28194 } 28195 28196 (updatePayload = updatePayload || []).push(STYLE, styleUpdates); 28197 } 28198 28199 return updatePayload; 28200} // Apply the diff. 28201 28202function updateProperties(domElement, updatePayload, tag, lastRawProps, nextRawProps) { 28203 // Update checked *before* name. 28204 // In the middle of an update, it is possible to have multiple checked. 28205 // When a checked radio tries to change name, browser makes another radio's checked false. 28206 if (tag === 'input' && nextRawProps.type === 'radio' && nextRawProps.name != null) { 28207 updateChecked(domElement, nextRawProps); 28208 } 28209 28210 var wasCustomComponentTag = isCustomComponent(tag, lastRawProps); 28211 var isCustomComponentTag = isCustomComponent(tag, nextRawProps); // Apply the diff. 28212 28213 updateDOMProperties(domElement, updatePayload, wasCustomComponentTag, isCustomComponentTag); // TODO: Ensure that an update gets scheduled if any of the special props 28214 // changed. 28215 28216 switch (tag) { 28217 case 'input': 28218 // Update the wrapper around inputs *after* updating props. This has to 28219 // happen after `updateDOMProperties`. Otherwise HTML5 input validations 28220 // raise warnings and prevent the new value from being assigned. 28221 updateWrapper(domElement, nextRawProps); 28222 break; 28223 28224 case 'textarea': 28225 updateWrapper$1(domElement, nextRawProps); 28226 break; 28227 28228 case 'select': 28229 // <select> value update needs to occur after <option> children 28230 // reconciliation 28231 postUpdateWrapper(domElement, nextRawProps); 28232 break; 28233 } 28234} 28235 28236function getPossibleStandardName(propName) { 28237 { 28238 var lowerCasedName = propName.toLowerCase(); 28239 28240 if (!possibleStandardNames.hasOwnProperty(lowerCasedName)) { 28241 return null; 28242 } 28243 28244 return possibleStandardNames[lowerCasedName] || null; 28245 } 28246} 28247 28248function diffHydratedProperties(domElement, tag, rawProps, parentNamespace, rootContainerElement) { 28249 var isCustomComponentTag; 28250 var extraAttributeNames; 28251 28252 { 28253 suppressHydrationWarning = rawProps[SUPPRESS_HYDRATION_WARNING] === true; 28254 isCustomComponentTag = isCustomComponent(tag, rawProps); 28255 validatePropertiesInDevelopment(tag, rawProps); 28256 } // TODO: Make sure that we check isMounted before firing any of these events. 28257 28258 28259 switch (tag) { 28260 case 'iframe': 28261 case 'object': 28262 case 'embed': 28263 trapBubbledEvent(TOP_LOAD, domElement); 28264 break; 28265 28266 case 'video': 28267 case 'audio': 28268 // Create listener for each media event 28269 for (var i = 0; i < mediaEventTypes.length; i++) { 28270 trapBubbledEvent(mediaEventTypes[i], domElement); 28271 } 28272 28273 break; 28274 28275 case 'source': 28276 trapBubbledEvent(TOP_ERROR, domElement); 28277 break; 28278 28279 case 'img': 28280 case 'image': 28281 case 'link': 28282 trapBubbledEvent(TOP_ERROR, domElement); 28283 trapBubbledEvent(TOP_LOAD, domElement); 28284 break; 28285 28286 case 'form': 28287 trapBubbledEvent(TOP_RESET, domElement); 28288 trapBubbledEvent(TOP_SUBMIT, domElement); 28289 break; 28290 28291 case 'details': 28292 trapBubbledEvent(TOP_TOGGLE, domElement); 28293 break; 28294 28295 case 'input': 28296 initWrapperState(domElement, rawProps); 28297 trapBubbledEvent(TOP_INVALID, domElement); // For controlled components we always need to ensure we're listening 28298 // to onChange. Even if there is no listener. 28299 28300 ensureListeningTo(rootContainerElement, 'onChange'); 28301 break; 28302 28303 case 'option': 28304 validateProps(domElement, rawProps); 28305 break; 28306 28307 case 'select': 28308 initWrapperState$1(domElement, rawProps); 28309 trapBubbledEvent(TOP_INVALID, domElement); // For controlled components we always need to ensure we're listening 28310 // to onChange. Even if there is no listener. 28311 28312 ensureListeningTo(rootContainerElement, 'onChange'); 28313 break; 28314 28315 case 'textarea': 28316 initWrapperState$2(domElement, rawProps); 28317 trapBubbledEvent(TOP_INVALID, domElement); // For controlled components we always need to ensure we're listening 28318 // to onChange. Even if there is no listener. 28319 28320 ensureListeningTo(rootContainerElement, 'onChange'); 28321 break; 28322 } 28323 28324 assertValidProps(tag, rawProps); 28325 28326 { 28327 extraAttributeNames = new Set(); 28328 var attributes = domElement.attributes; 28329 28330 for (var _i = 0; _i < attributes.length; _i++) { 28331 var name = attributes[_i].name.toLowerCase(); 28332 28333 switch (name) { 28334 // Built-in SSR attribute is whitelisted 28335 case 'data-reactroot': 28336 break; 28337 // Controlled attributes are not validated 28338 // TODO: Only ignore them on controlled tags. 28339 28340 case 'value': 28341 break; 28342 28343 case 'checked': 28344 break; 28345 28346 case 'selected': 28347 break; 28348 28349 default: 28350 // Intentionally use the original name. 28351 // See discussion in https://github.com/facebook/react/pull/10676. 28352 extraAttributeNames.add(attributes[_i].name); 28353 } 28354 } 28355 } 28356 28357 var updatePayload = null; 28358 28359 for (var propKey in rawProps) { 28360 if (!rawProps.hasOwnProperty(propKey)) { 28361 continue; 28362 } 28363 28364 var nextProp = rawProps[propKey]; 28365 28366 if (propKey === CHILDREN) { 28367 // For text content children we compare against textContent. This 28368 // might match additional HTML that is hidden when we read it using 28369 // textContent. E.g. "foo" will match "f<span>oo</span>" but that still 28370 // satisfies our requirement. Our requirement is not to produce perfect 28371 // HTML and attributes. Ideally we should preserve structure but it's 28372 // ok not to if the visible content is still enough to indicate what 28373 // even listeners these nodes might be wired up to. 28374 // TODO: Warn if there is more than a single textNode as a child. 28375 // TODO: Should we use domElement.firstChild.nodeValue to compare? 28376 if (typeof nextProp === 'string') { 28377 if (domElement.textContent !== nextProp) { 28378 if ( !suppressHydrationWarning) { 28379 warnForTextDifference(domElement.textContent, nextProp); 28380 } 28381 28382 updatePayload = [CHILDREN, nextProp]; 28383 } 28384 } else if (typeof nextProp === 'number') { 28385 if (domElement.textContent !== '' + nextProp) { 28386 if ( !suppressHydrationWarning) { 28387 warnForTextDifference(domElement.textContent, nextProp); 28388 } 28389 28390 updatePayload = [CHILDREN, '' + nextProp]; 28391 } 28392 } 28393 } else if (registrationNameModules.hasOwnProperty(propKey)) { 28394 if (nextProp != null) { 28395 if ( typeof nextProp !== 'function') { 28396 warnForInvalidEventListener(propKey, nextProp); 28397 } 28398 28399 ensureListeningTo(rootContainerElement, propKey); 28400 } 28401 } else if ( // Convince Flow we've calculated it (it's DEV-only in this method.) 28402 typeof isCustomComponentTag === 'boolean') { 28403 // Validate that the properties correspond to their expected values. 28404 var serverValue = void 0; 28405 var propertyInfo = getPropertyInfo(propKey); 28406 28407 if (suppressHydrationWarning) ; else if ( propKey === SUPPRESS_CONTENT_EDITABLE_WARNING || propKey === SUPPRESS_HYDRATION_WARNING || // Controlled attributes are not validated 28408 // TODO: Only ignore them on controlled tags. 28409 propKey === 'value' || propKey === 'checked' || propKey === 'selected') ; else if (propKey === DANGEROUSLY_SET_INNER_HTML) { 28410 var serverHTML = domElement.innerHTML; 28411 var nextHtml = nextProp ? nextProp[HTML$1] : undefined; 28412 var expectedHTML = normalizeHTML(domElement, nextHtml != null ? nextHtml : ''); 28413 28414 if (expectedHTML !== serverHTML) { 28415 warnForPropDifference(propKey, serverHTML, expectedHTML); 28416 } 28417 } else if (propKey === STYLE) { 28418 // $FlowFixMe - Should be inferred as not undefined. 28419 extraAttributeNames.delete(propKey); 28420 28421 if (canDiffStyleForHydrationWarning) { 28422 var expectedStyle = createDangerousStringForStyles(nextProp); 28423 serverValue = domElement.getAttribute('style'); 28424 28425 if (expectedStyle !== serverValue) { 28426 warnForPropDifference(propKey, serverValue, expectedStyle); 28427 } 28428 } 28429 } else if (isCustomComponentTag) { 28430 // $FlowFixMe - Should be inferred as not undefined. 28431 extraAttributeNames.delete(propKey.toLowerCase()); 28432 serverValue = getValueForAttribute(domElement, propKey, nextProp); 28433 28434 if (nextProp !== serverValue) { 28435 warnForPropDifference(propKey, serverValue, nextProp); 28436 } 28437 } else if (!shouldIgnoreAttribute(propKey, propertyInfo, isCustomComponentTag) && !shouldRemoveAttribute(propKey, nextProp, propertyInfo, isCustomComponentTag)) { 28438 var isMismatchDueToBadCasing = false; 28439 28440 if (propertyInfo !== null) { 28441 // $FlowFixMe - Should be inferred as not undefined. 28442 extraAttributeNames.delete(propertyInfo.attributeName); 28443 serverValue = getValueForProperty(domElement, propKey, nextProp, propertyInfo); 28444 } else { 28445 var ownNamespace = parentNamespace; 28446 28447 if (ownNamespace === HTML_NAMESPACE$1) { 28448 ownNamespace = getIntrinsicNamespace(tag); 28449 } 28450 28451 if (ownNamespace === HTML_NAMESPACE$1) { 28452 // $FlowFixMe - Should be inferred as not undefined. 28453 extraAttributeNames.delete(propKey.toLowerCase()); 28454 } else { 28455 var standardName = getPossibleStandardName(propKey); 28456 28457 if (standardName !== null && standardName !== propKey) { 28458 // If an SVG prop is supplied with bad casing, it will 28459 // be successfully parsed from HTML, but will produce a mismatch 28460 // (and would be incorrectly rendered on the client). 28461 // However, we already warn about bad casing elsewhere. 28462 // So we'll skip the misleading extra mismatch warning in this case. 28463 isMismatchDueToBadCasing = true; // $FlowFixMe - Should be inferred as not undefined. 28464 28465 extraAttributeNames.delete(standardName); 28466 } // $FlowFixMe - Should be inferred as not undefined. 28467 28468 28469 extraAttributeNames.delete(propKey); 28470 } 28471 28472 serverValue = getValueForAttribute(domElement, propKey, nextProp); 28473 } 28474 28475 if (nextProp !== serverValue && !isMismatchDueToBadCasing) { 28476 warnForPropDifference(propKey, serverValue, nextProp); 28477 } 28478 } 28479 } 28480 } 28481 28482 { 28483 // $FlowFixMe - Should be inferred as not undefined. 28484 if (extraAttributeNames.size > 0 && !suppressHydrationWarning) { 28485 // $FlowFixMe - Should be inferred as not undefined. 28486 warnForExtraAttributes(extraAttributeNames); 28487 } 28488 } 28489 28490 switch (tag) { 28491 case 'input': 28492 // TODO: Make sure we check if this is still unmounted or do any clean 28493 // up necessary since we never stop tracking anymore. 28494 track(domElement); 28495 postMountWrapper(domElement, rawProps, true); 28496 break; 28497 28498 case 'textarea': 28499 // TODO: Make sure we check if this is still unmounted or do any clean 28500 // up necessary since we never stop tracking anymore. 28501 track(domElement); 28502 postMountWrapper$3(domElement); 28503 break; 28504 28505 case 'select': 28506 case 'option': 28507 // For input and textarea we current always set the value property at 28508 // post mount to force it to diverge from attributes. However, for 28509 // option and select we don't quite do the same thing and select 28510 // is not resilient to the DOM state changing so we don't do that here. 28511 // TODO: Consider not doing this for input and textarea. 28512 break; 28513 28514 default: 28515 if (typeof rawProps.onClick === 'function') { 28516 // TODO: This cast may not be sound for SVG, MathML or custom elements. 28517 trapClickOnNonInteractiveElement(domElement); 28518 } 28519 28520 break; 28521 } 28522 28523 return updatePayload; 28524} 28525function diffHydratedText(textNode, text) { 28526 var isDifferent = textNode.nodeValue !== text; 28527 return isDifferent; 28528} 28529function warnForUnmatchedText(textNode, text) { 28530 { 28531 warnForTextDifference(textNode.nodeValue, text); 28532 } 28533} 28534function warnForDeletedHydratableElement(parentNode, child) { 28535 { 28536 if (didWarnInvalidHydration) { 28537 return; 28538 } 28539 28540 didWarnInvalidHydration = true; 28541 28542 error('Did not expect server HTML to contain a <%s> in <%s>.', child.nodeName.toLowerCase(), parentNode.nodeName.toLowerCase()); 28543 } 28544} 28545function warnForDeletedHydratableText(parentNode, child) { 28546 { 28547 if (didWarnInvalidHydration) { 28548 return; 28549 } 28550 28551 didWarnInvalidHydration = true; 28552 28553 error('Did not expect server HTML to contain the text node "%s" in <%s>.', child.nodeValue, parentNode.nodeName.toLowerCase()); 28554 } 28555} 28556function warnForInsertedHydratedElement(parentNode, tag, props) { 28557 { 28558 if (didWarnInvalidHydration) { 28559 return; 28560 } 28561 28562 didWarnInvalidHydration = true; 28563 28564 error('Expected server HTML to contain a matching <%s> in <%s>.', tag, parentNode.nodeName.toLowerCase()); 28565 } 28566} 28567function warnForInsertedHydratedText(parentNode, text) { 28568 { 28569 if (text === '') { 28570 // We expect to insert empty text nodes since they're not represented in 28571 // the HTML. 28572 // TODO: Remove this special case if we can just avoid inserting empty 28573 // text nodes. 28574 return; 28575 } 28576 28577 if (didWarnInvalidHydration) { 28578 return; 28579 } 28580 28581 didWarnInvalidHydration = true; 28582 28583 error('Expected server HTML to contain a matching text node for "%s" in <%s>.', text, parentNode.nodeName.toLowerCase()); 28584 } 28585} 28586function restoreControlledState$3(domElement, tag, props) { 28587 switch (tag) { 28588 case 'input': 28589 restoreControlledState(domElement, props); 28590 return; 28591 28592 case 'textarea': 28593 restoreControlledState$2(domElement, props); 28594 return; 28595 28596 case 'select': 28597 restoreControlledState$1(domElement, props); 28598 return; 28599 } 28600} 28601 28602function getActiveElement(doc) { 28603 doc = doc || (typeof document !== 'undefined' ? document : undefined); 28604 28605 if (typeof doc === 'undefined') { 28606 return null; 28607 } 28608 28609 try { 28610 return doc.activeElement || doc.body; 28611 } catch (e) { 28612 return doc.body; 28613 } 28614} 28615 28616/** 28617 * Given any node return the first leaf node without children. 28618 * 28619 * @param {DOMElement|DOMTextNode} node 28620 * @return {DOMElement|DOMTextNode} 28621 */ 28622 28623function getLeafNode(node) { 28624 while (node && node.firstChild) { 28625 node = node.firstChild; 28626 } 28627 28628 return node; 28629} 28630/** 28631 * Get the next sibling within a container. This will walk up the 28632 * DOM if a node's siblings have been exhausted. 28633 * 28634 * @param {DOMElement|DOMTextNode} node 28635 * @return {?DOMElement|DOMTextNode} 28636 */ 28637 28638 28639function getSiblingNode(node) { 28640 while (node) { 28641 if (node.nextSibling) { 28642 return node.nextSibling; 28643 } 28644 28645 node = node.parentNode; 28646 } 28647} 28648/** 28649 * Get object describing the nodes which contain characters at offset. 28650 * 28651 * @param {DOMElement|DOMTextNode} root 28652 * @param {number} offset 28653 * @return {?object} 28654 */ 28655 28656 28657function getNodeForCharacterOffset(root, offset) { 28658 var node = getLeafNode(root); 28659 var nodeStart = 0; 28660 var nodeEnd = 0; 28661 28662 while (node) { 28663 if (node.nodeType === TEXT_NODE) { 28664 nodeEnd = nodeStart + node.textContent.length; 28665 28666 if (nodeStart <= offset && nodeEnd >= offset) { 28667 return { 28668 node: node, 28669 offset: offset - nodeStart 28670 }; 28671 } 28672 28673 nodeStart = nodeEnd; 28674 } 28675 28676 node = getLeafNode(getSiblingNode(node)); 28677 } 28678} 28679 28680/** 28681 * @param {DOMElement} outerNode 28682 * @return {?object} 28683 */ 28684 28685function getOffsets(outerNode) { 28686 var ownerDocument = outerNode.ownerDocument; 28687 var win = ownerDocument && ownerDocument.defaultView || window; 28688 var selection = win.getSelection && win.getSelection(); 28689 28690 if (!selection || selection.rangeCount === 0) { 28691 return null; 28692 } 28693 28694 var anchorNode = selection.anchorNode, 28695 anchorOffset = selection.anchorOffset, 28696 focusNode = selection.focusNode, 28697 focusOffset = selection.focusOffset; // In Firefox, anchorNode and focusNode can be "anonymous divs", e.g. the 28698 // up/down buttons on an <input type="number">. Anonymous divs do not seem to 28699 // expose properties, triggering a "Permission denied error" if any of its 28700 // properties are accessed. The only seemingly possible way to avoid erroring 28701 // is to access a property that typically works for non-anonymous divs and 28702 // catch any error that may otherwise arise. See 28703 // https://bugzilla.mozilla.org/show_bug.cgi?id=208427 28704 28705 try { 28706 /* eslint-disable no-unused-expressions */ 28707 anchorNode.nodeType; 28708 focusNode.nodeType; 28709 /* eslint-enable no-unused-expressions */ 28710 } catch (e) { 28711 return null; 28712 } 28713 28714 return getModernOffsetsFromPoints(outerNode, anchorNode, anchorOffset, focusNode, focusOffset); 28715} 28716/** 28717 * Returns {start, end} where `start` is the character/codepoint index of 28718 * (anchorNode, anchorOffset) within the textContent of `outerNode`, and 28719 * `end` is the index of (focusNode, focusOffset). 28720 * 28721 * Returns null if you pass in garbage input but we should probably just crash. 28722 * 28723 * Exported only for testing. 28724 */ 28725 28726function getModernOffsetsFromPoints(outerNode, anchorNode, anchorOffset, focusNode, focusOffset) { 28727 var length = 0; 28728 var start = -1; 28729 var end = -1; 28730 var indexWithinAnchor = 0; 28731 var indexWithinFocus = 0; 28732 var node = outerNode; 28733 var parentNode = null; 28734 28735 outer: while (true) { 28736 var next = null; 28737 28738 while (true) { 28739 if (node === anchorNode && (anchorOffset === 0 || node.nodeType === TEXT_NODE)) { 28740 start = length + anchorOffset; 28741 } 28742 28743 if (node === focusNode && (focusOffset === 0 || node.nodeType === TEXT_NODE)) { 28744 end = length + focusOffset; 28745 } 28746 28747 if (node.nodeType === TEXT_NODE) { 28748 length += node.nodeValue.length; 28749 } 28750 28751 if ((next = node.firstChild) === null) { 28752 break; 28753 } // Moving from `node` to its first child `next`. 28754 28755 28756 parentNode = node; 28757 node = next; 28758 } 28759 28760 while (true) { 28761 if (node === outerNode) { 28762 // If `outerNode` has children, this is always the second time visiting 28763 // it. If it has no children, this is still the first loop, and the only 28764 // valid selection is anchorNode and focusNode both equal to this node 28765 // and both offsets 0, in which case we will have handled above. 28766 break outer; 28767 } 28768 28769 if (parentNode === anchorNode && ++indexWithinAnchor === anchorOffset) { 28770 start = length; 28771 } 28772 28773 if (parentNode === focusNode && ++indexWithinFocus === focusOffset) { 28774 end = length; 28775 } 28776 28777 if ((next = node.nextSibling) !== null) { 28778 break; 28779 } 28780 28781 node = parentNode; 28782 parentNode = node.parentNode; 28783 } // Moving from `node` to its next sibling `next`. 28784 28785 28786 node = next; 28787 } 28788 28789 if (start === -1 || end === -1) { 28790 // This should never happen. (Would happen if the anchor/focus nodes aren't 28791 // actually inside the passed-in node.) 28792 return null; 28793 } 28794 28795 return { 28796 start: start, 28797 end: end 28798 }; 28799} 28800/** 28801 * In modern non-IE browsers, we can support both forward and backward 28802 * selections. 28803 * 28804 * Note: IE10+ supports the Selection object, but it does not support 28805 * the `extend` method, which means that even in modern IE, it's not possible 28806 * to programmatically create a backward selection. Thus, for all IE 28807 * versions, we use the old IE API to create our selections. 28808 * 28809 * @param {DOMElement|DOMTextNode} node 28810 * @param {object} offsets 28811 */ 28812 28813function setOffsets(node, offsets) { 28814 var doc = node.ownerDocument || document; 28815 var win = doc && doc.defaultView || window; // Edge fails with "Object expected" in some scenarios. 28816 // (For instance: TinyMCE editor used in a list component that supports pasting to add more, 28817 // fails when pasting 100+ items) 28818 28819 if (!win.getSelection) { 28820 return; 28821 } 28822 28823 var selection = win.getSelection(); 28824 var length = node.textContent.length; 28825 var start = Math.min(offsets.start, length); 28826 var end = offsets.end === undefined ? start : Math.min(offsets.end, length); // IE 11 uses modern selection, but doesn't support the extend method. 28827 // Flip backward selections, so we can set with a single range. 28828 28829 if (!selection.extend && start > end) { 28830 var temp = end; 28831 end = start; 28832 start = temp; 28833 } 28834 28835 var startMarker = getNodeForCharacterOffset(node, start); 28836 var endMarker = getNodeForCharacterOffset(node, end); 28837 28838 if (startMarker && endMarker) { 28839 if (selection.rangeCount === 1 && selection.anchorNode === startMarker.node && selection.anchorOffset === startMarker.offset && selection.focusNode === endMarker.node && selection.focusOffset === endMarker.offset) { 28840 return; 28841 } 28842 28843 var range = doc.createRange(); 28844 range.setStart(startMarker.node, startMarker.offset); 28845 selection.removeAllRanges(); 28846 28847 if (start > end) { 28848 selection.addRange(range); 28849 selection.extend(endMarker.node, endMarker.offset); 28850 } else { 28851 range.setEnd(endMarker.node, endMarker.offset); 28852 selection.addRange(range); 28853 } 28854 } 28855} 28856 28857function isTextNode(node) { 28858 return node && node.nodeType === TEXT_NODE; 28859} 28860 28861function containsNode(outerNode, innerNode) { 28862 if (!outerNode || !innerNode) { 28863 return false; 28864 } else if (outerNode === innerNode) { 28865 return true; 28866 } else if (isTextNode(outerNode)) { 28867 return false; 28868 } else if (isTextNode(innerNode)) { 28869 return containsNode(outerNode, innerNode.parentNode); 28870 } else if ('contains' in outerNode) { 28871 return outerNode.contains(innerNode); 28872 } else if (outerNode.compareDocumentPosition) { 28873 return !!(outerNode.compareDocumentPosition(innerNode) & 16); 28874 } else { 28875 return false; 28876 } 28877} 28878 28879function isInDocument(node) { 28880 return node && node.ownerDocument && containsNode(node.ownerDocument.documentElement, node); 28881} 28882 28883function isSameOriginFrame(iframe) { 28884 try { 28885 // Accessing the contentDocument of a HTMLIframeElement can cause the browser 28886 // to throw, e.g. if it has a cross-origin src attribute. 28887 // Safari will show an error in the console when the access results in "Blocked a frame with origin". e.g: 28888 // iframe.contentDocument.defaultView; 28889 // A safety way is to access one of the cross origin properties: Window or Location 28890 // Which might result in "SecurityError" DOM Exception and it is compatible to Safari. 28891 // https://html.spec.whatwg.org/multipage/browsers.html#integration-with-idl 28892 return typeof iframe.contentWindow.location.href === 'string'; 28893 } catch (err) { 28894 return false; 28895 } 28896} 28897 28898function getActiveElementDeep() { 28899 var win = window; 28900 var element = getActiveElement(); 28901 28902 while (element instanceof win.HTMLIFrameElement) { 28903 if (isSameOriginFrame(element)) { 28904 win = element.contentWindow; 28905 } else { 28906 return element; 28907 } 28908 28909 element = getActiveElement(win.document); 28910 } 28911 28912 return element; 28913} 28914/** 28915 * @ReactInputSelection: React input selection module. Based on Selection.js, 28916 * but modified to be suitable for react and has a couple of bug fixes (doesn't 28917 * assume buttons have range selections allowed). 28918 * Input selection module for React. 28919 */ 28920 28921/** 28922 * @hasSelectionCapabilities: we get the element types that support selection 28923 * from https://html.spec.whatwg.org/#do-not-apply, looking at `selectionStart` 28924 * and `selectionEnd` rows. 28925 */ 28926 28927 28928function hasSelectionCapabilities(elem) { 28929 var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase(); 28930 return nodeName && (nodeName === 'input' && (elem.type === 'text' || elem.type === 'search' || elem.type === 'tel' || elem.type === 'url' || elem.type === 'password') || nodeName === 'textarea' || elem.contentEditable === 'true'); 28931} 28932function getSelectionInformation() { 28933 var focusedElem = getActiveElementDeep(); 28934 return { 28935 // Used by Flare 28936 activeElementDetached: null, 28937 focusedElem: focusedElem, 28938 selectionRange: hasSelectionCapabilities(focusedElem) ? getSelection(focusedElem) : null 28939 }; 28940} 28941/** 28942 * @restoreSelection: If any selection information was potentially lost, 28943 * restore it. This is useful when performing operations that could remove dom 28944 * nodes and place them back in, resulting in focus being lost. 28945 */ 28946 28947function restoreSelection(priorSelectionInformation) { 28948 var curFocusedElem = getActiveElementDeep(); 28949 var priorFocusedElem = priorSelectionInformation.focusedElem; 28950 var priorSelectionRange = priorSelectionInformation.selectionRange; 28951 28952 if (curFocusedElem !== priorFocusedElem && isInDocument(priorFocusedElem)) { 28953 if (priorSelectionRange !== null && hasSelectionCapabilities(priorFocusedElem)) { 28954 setSelection(priorFocusedElem, priorSelectionRange); 28955 } // Focusing a node can change the scroll position, which is undesirable 28956 28957 28958 var ancestors = []; 28959 var ancestor = priorFocusedElem; 28960 28961 while (ancestor = ancestor.parentNode) { 28962 if (ancestor.nodeType === ELEMENT_NODE) { 28963 ancestors.push({ 28964 element: ancestor, 28965 left: ancestor.scrollLeft, 28966 top: ancestor.scrollTop 28967 }); 28968 } 28969 } 28970 28971 if (typeof priorFocusedElem.focus === 'function') { 28972 priorFocusedElem.focus(); 28973 } 28974 28975 for (var i = 0; i < ancestors.length; i++) { 28976 var info = ancestors[i]; 28977 info.element.scrollLeft = info.left; 28978 info.element.scrollTop = info.top; 28979 } 28980 } 28981} 28982/** 28983 * @getSelection: Gets the selection bounds of a focused textarea, input or 28984 * contentEditable node. 28985 * -@input: Look up selection bounds of this input 28986 * -@return {start: selectionStart, end: selectionEnd} 28987 */ 28988 28989function getSelection(input) { 28990 var selection; 28991 28992 if ('selectionStart' in input) { 28993 // Modern browser with input or textarea. 28994 selection = { 28995 start: input.selectionStart, 28996 end: input.selectionEnd 28997 }; 28998 } else { 28999 // Content editable or old IE textarea. 29000 selection = getOffsets(input); 29001 } 29002 29003 return selection || { 29004 start: 0, 29005 end: 0 29006 }; 29007} 29008/** 29009 * @setSelection: Sets the selection bounds of a textarea or input and focuses 29010 * the input. 29011 * -@input Set selection bounds of this input or textarea 29012 * -@offsets Object of same form that is returned from get* 29013 */ 29014 29015function setSelection(input, offsets) { 29016 var start = offsets.start, 29017 end = offsets.end; 29018 29019 if (end === undefined) { 29020 end = start; 29021 } 29022 29023 if ('selectionStart' in input) { 29024 input.selectionStart = start; 29025 input.selectionEnd = Math.min(end, input.value.length); 29026 } else { 29027 setOffsets(input, offsets); 29028 } 29029} 29030 29031var validateDOMNesting = function () {}; 29032 29033var updatedAncestorInfo = function () {}; 29034 29035{ 29036 // This validation code was written based on the HTML5 parsing spec: 29037 // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope 29038 // 29039 // Note: this does not catch all invalid nesting, nor does it try to (as it's 29040 // not clear what practical benefit doing so provides); instead, we warn only 29041 // for cases where the parser will give a parse tree differing from what React 29042 // intended. For example, <b><div></div></b> is invalid but we don't warn 29043 // because it still parses correctly; we do warn for other cases like nested 29044 // <p> tags where the beginning of the second element implicitly closes the 29045 // first, causing a confusing mess. 29046 // https://html.spec.whatwg.org/multipage/syntax.html#special 29047 var specialTags = ['address', 'applet', 'area', 'article', 'aside', 'base', 'basefont', 'bgsound', 'blockquote', 'body', 'br', 'button', 'caption', 'center', 'col', 'colgroup', 'dd', 'details', 'dir', 'div', 'dl', 'dt', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'frame', 'frameset', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'iframe', 'img', 'input', 'isindex', 'li', 'link', 'listing', 'main', 'marquee', 'menu', 'menuitem', 'meta', 'nav', 'noembed', 'noframes', 'noscript', 'object', 'ol', 'p', 'param', 'plaintext', 'pre', 'script', 'section', 'select', 'source', 'style', 'summary', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'title', 'tr', 'track', 'ul', 'wbr', 'xmp']; // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope 29048 29049 var inScopeTags = ['applet', 'caption', 'html', 'table', 'td', 'th', 'marquee', 'object', 'template', // https://html.spec.whatwg.org/multipage/syntax.html#html-integration-point 29050 // TODO: Distinguish by namespace here -- for <title>, including it here 29051 // errs on the side of fewer warnings 29052 'foreignObject', 'desc', 'title']; // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-button-scope 29053 29054 var buttonScopeTags = inScopeTags.concat(['button']); // https://html.spec.whatwg.org/multipage/syntax.html#generate-implied-end-tags 29055 29056 var impliedEndTags = ['dd', 'dt', 'li', 'option', 'optgroup', 'p', 'rp', 'rt']; 29057 var emptyAncestorInfo = { 29058 current: null, 29059 formTag: null, 29060 aTagInScope: null, 29061 buttonTagInScope: null, 29062 nobrTagInScope: null, 29063 pTagInButtonScope: null, 29064 listItemTagAutoclosing: null, 29065 dlItemTagAutoclosing: null 29066 }; 29067 29068 updatedAncestorInfo = function (oldInfo, tag) { 29069 var ancestorInfo = _assign({}, oldInfo || emptyAncestorInfo); 29070 29071 var info = { 29072 tag: tag 29073 }; 29074 29075 if (inScopeTags.indexOf(tag) !== -1) { 29076 ancestorInfo.aTagInScope = null; 29077 ancestorInfo.buttonTagInScope = null; 29078 ancestorInfo.nobrTagInScope = null; 29079 } 29080 29081 if (buttonScopeTags.indexOf(tag) !== -1) { 29082 ancestorInfo.pTagInButtonScope = null; 29083 } // See rules for 'li', 'dd', 'dt' start tags in 29084 // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody 29085 29086 29087 if (specialTags.indexOf(tag) !== -1 && tag !== 'address' && tag !== 'div' && tag !== 'p') { 29088 ancestorInfo.listItemTagAutoclosing = null; 29089 ancestorInfo.dlItemTagAutoclosing = null; 29090 } 29091 29092 ancestorInfo.current = info; 29093 29094 if (tag === 'form') { 29095 ancestorInfo.formTag = info; 29096 } 29097 29098 if (tag === 'a') { 29099 ancestorInfo.aTagInScope = info; 29100 } 29101 29102 if (tag === 'button') { 29103 ancestorInfo.buttonTagInScope = info; 29104 } 29105 29106 if (tag === 'nobr') { 29107 ancestorInfo.nobrTagInScope = info; 29108 } 29109 29110 if (tag === 'p') { 29111 ancestorInfo.pTagInButtonScope = info; 29112 } 29113 29114 if (tag === 'li') { 29115 ancestorInfo.listItemTagAutoclosing = info; 29116 } 29117 29118 if (tag === 'dd' || tag === 'dt') { 29119 ancestorInfo.dlItemTagAutoclosing = info; 29120 } 29121 29122 return ancestorInfo; 29123 }; 29124 /** 29125 * Returns whether 29126 */ 29127 29128 29129 var isTagValidWithParent = function (tag, parentTag) { 29130 // First, let's check if we're in an unusual parsing mode... 29131 switch (parentTag) { 29132 // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inselect 29133 case 'select': 29134 return tag === 'option' || tag === 'optgroup' || tag === '#text'; 29135 29136 case 'optgroup': 29137 return tag === 'option' || tag === '#text'; 29138 // Strictly speaking, seeing an <option> doesn't mean we're in a <select> 29139 // but 29140 29141 case 'option': 29142 return tag === '#text'; 29143 // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intd 29144 // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incaption 29145 // No special behavior since these rules fall back to "in body" mode for 29146 // all except special table nodes which cause bad parsing behavior anyway. 29147 // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intr 29148 29149 case 'tr': 29150 return tag === 'th' || tag === 'td' || tag === 'style' || tag === 'script' || tag === 'template'; 29151 // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intbody 29152 29153 case 'tbody': 29154 case 'thead': 29155 case 'tfoot': 29156 return tag === 'tr' || tag === 'style' || tag === 'script' || tag === 'template'; 29157 // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incolgroup 29158 29159 case 'colgroup': 29160 return tag === 'col' || tag === 'template'; 29161 // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intable 29162 29163 case 'table': 29164 return tag === 'caption' || tag === 'colgroup' || tag === 'tbody' || tag === 'tfoot' || tag === 'thead' || tag === 'style' || tag === 'script' || tag === 'template'; 29165 // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inhead 29166 29167 case 'head': 29168 return tag === 'base' || tag === 'basefont' || tag === 'bgsound' || tag === 'link' || tag === 'meta' || tag === 'title' || tag === 'noscript' || tag === 'noframes' || tag === 'style' || tag === 'script' || tag === 'template'; 29169 // https://html.spec.whatwg.org/multipage/semantics.html#the-html-element 29170 29171 case 'html': 29172 return tag === 'head' || tag === 'body' || tag === 'frameset'; 29173 29174 case 'frameset': 29175 return tag === 'frame'; 29176 29177 case '#document': 29178 return tag === 'html'; 29179 } // Probably in the "in body" parsing mode, so we outlaw only tag combos 29180 // where the parsing rules cause implicit opens or closes to be added. 29181 // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody 29182 29183 29184 switch (tag) { 29185 case 'h1': 29186 case 'h2': 29187 case 'h3': 29188 case 'h4': 29189 case 'h5': 29190 case 'h6': 29191 return parentTag !== 'h1' && parentTag !== 'h2' && parentTag !== 'h3' && parentTag !== 'h4' && parentTag !== 'h5' && parentTag !== 'h6'; 29192 29193 case 'rp': 29194 case 'rt': 29195 return impliedEndTags.indexOf(parentTag) === -1; 29196 29197 case 'body': 29198 case 'caption': 29199 case 'col': 29200 case 'colgroup': 29201 case 'frameset': 29202 case 'frame': 29203 case 'head': 29204 case 'html': 29205 case 'tbody': 29206 case 'td': 29207 case 'tfoot': 29208 case 'th': 29209 case 'thead': 29210 case 'tr': 29211 // These tags are only valid with a few parents that have special child 29212 // parsing rules -- if we're down here, then none of those matched and 29213 // so we allow it only if we don't know what the parent is, as all other 29214 // cases are invalid. 29215 return parentTag == null; 29216 } 29217 29218 return true; 29219 }; 29220 /** 29221 * Returns whether 29222 */ 29223 29224 29225 var findInvalidAncestorForTag = function (tag, ancestorInfo) { 29226 switch (tag) { 29227 case 'address': 29228 case 'article': 29229 case 'aside': 29230 case 'blockquote': 29231 case 'center': 29232 case 'details': 29233 case 'dialog': 29234 case 'dir': 29235 case 'div': 29236 case 'dl': 29237 case 'fieldset': 29238 case 'figcaption': 29239 case 'figure': 29240 case 'footer': 29241 case 'header': 29242 case 'hgroup': 29243 case 'main': 29244 case 'menu': 29245 case 'nav': 29246 case 'ol': 29247 case 'p': 29248 case 'section': 29249 case 'summary': 29250 case 'ul': 29251 case 'pre': 29252 case 'listing': 29253 case 'table': 29254 case 'hr': 29255 case 'xmp': 29256 case 'h1': 29257 case 'h2': 29258 case 'h3': 29259 case 'h4': 29260 case 'h5': 29261 case 'h6': 29262 return ancestorInfo.pTagInButtonScope; 29263 29264 case 'form': 29265 return ancestorInfo.formTag || ancestorInfo.pTagInButtonScope; 29266 29267 case 'li': 29268 return ancestorInfo.listItemTagAutoclosing; 29269 29270 case 'dd': 29271 case 'dt': 29272 return ancestorInfo.dlItemTagAutoclosing; 29273 29274 case 'button': 29275 return ancestorInfo.buttonTagInScope; 29276 29277 case 'a': 29278 // Spec says something about storing a list of markers, but it sounds 29279 // equivalent to this check. 29280 return ancestorInfo.aTagInScope; 29281 29282 case 'nobr': 29283 return ancestorInfo.nobrTagInScope; 29284 } 29285 29286 return null; 29287 }; 29288 29289 var didWarn$1 = {}; 29290 29291 validateDOMNesting = function (childTag, childText, ancestorInfo) { 29292 ancestorInfo = ancestorInfo || emptyAncestorInfo; 29293 var parentInfo = ancestorInfo.current; 29294 var parentTag = parentInfo && parentInfo.tag; 29295 29296 if (childText != null) { 29297 if (childTag != null) { 29298 error('validateDOMNesting: when childText is passed, childTag should be null'); 29299 } 29300 29301 childTag = '#text'; 29302 } 29303 29304 var invalidParent = isTagValidWithParent(childTag, parentTag) ? null : parentInfo; 29305 var invalidAncestor = invalidParent ? null : findInvalidAncestorForTag(childTag, ancestorInfo); 29306 var invalidParentOrAncestor = invalidParent || invalidAncestor; 29307 29308 if (!invalidParentOrAncestor) { 29309 return; 29310 } 29311 29312 var ancestorTag = invalidParentOrAncestor.tag; 29313 var addendum = getCurrentFiberStackInDev(); 29314 var warnKey = !!invalidParent + '|' + childTag + '|' + ancestorTag + '|' + addendum; 29315 29316 if (didWarn$1[warnKey]) { 29317 return; 29318 } 29319 29320 didWarn$1[warnKey] = true; 29321 var tagDisplayName = childTag; 29322 var whitespaceInfo = ''; 29323 29324 if (childTag === '#text') { 29325 if (/\S/.test(childText)) { 29326 tagDisplayName = 'Text nodes'; 29327 } else { 29328 tagDisplayName = 'Whitespace text nodes'; 29329 whitespaceInfo = " Make sure you don't have any extra whitespace between tags on " + 'each line of your source code.'; 29330 } 29331 } else { 29332 tagDisplayName = '<' + childTag + '>'; 29333 } 29334 29335 if (invalidParent) { 29336 var info = ''; 29337 29338 if (ancestorTag === 'table' && childTag === 'tr') { 29339 info += ' Add a <tbody>, <thead> or <tfoot> to your code to match the DOM tree generated by ' + 'the browser.'; 29340 } 29341 29342 error('validateDOMNesting(...): %s cannot appear as a child of <%s>.%s%s', tagDisplayName, ancestorTag, whitespaceInfo, info); 29343 } else { 29344 error('validateDOMNesting(...): %s cannot appear as a descendant of ' + '<%s>.', tagDisplayName, ancestorTag); 29345 } 29346 }; 29347} 29348 29349var SUPPRESS_HYDRATION_WARNING$1; 29350 29351{ 29352 SUPPRESS_HYDRATION_WARNING$1 = 'suppressHydrationWarning'; 29353} 29354 29355var SUSPENSE_START_DATA = '$'; 29356var SUSPENSE_END_DATA = '/$'; 29357var SUSPENSE_PENDING_START_DATA = '$?'; 29358var SUSPENSE_FALLBACK_START_DATA = '$!'; 29359var STYLE$1 = 'style'; 29360var eventsEnabled = null; 29361var selectionInformation = null; 29362 29363function shouldAutoFocusHostComponent(type, props) { 29364 switch (type) { 29365 case 'button': 29366 case 'input': 29367 case 'select': 29368 case 'textarea': 29369 return !!props.autoFocus; 29370 } 29371 29372 return false; 29373} 29374function getRootHostContext(rootContainerInstance) { 29375 var type; 29376 var namespace; 29377 var nodeType = rootContainerInstance.nodeType; 29378 29379 switch (nodeType) { 29380 case DOCUMENT_NODE: 29381 case DOCUMENT_FRAGMENT_NODE: 29382 { 29383 type = nodeType === DOCUMENT_NODE ? '#document' : '#fragment'; 29384 var root = rootContainerInstance.documentElement; 29385 namespace = root ? root.namespaceURI : getChildNamespace(null, ''); 29386 break; 29387 } 29388 29389 default: 29390 { 29391 var container = nodeType === COMMENT_NODE ? rootContainerInstance.parentNode : rootContainerInstance; 29392 var ownNamespace = container.namespaceURI || null; 29393 type = container.tagName; 29394 namespace = getChildNamespace(ownNamespace, type); 29395 break; 29396 } 29397 } 29398 29399 { 29400 var validatedTag = type.toLowerCase(); 29401 var ancestorInfo = updatedAncestorInfo(null, validatedTag); 29402 return { 29403 namespace: namespace, 29404 ancestorInfo: ancestorInfo 29405 }; 29406 } 29407} 29408function getChildHostContext(parentHostContext, type, rootContainerInstance) { 29409 { 29410 var parentHostContextDev = parentHostContext; 29411 var namespace = getChildNamespace(parentHostContextDev.namespace, type); 29412 var ancestorInfo = updatedAncestorInfo(parentHostContextDev.ancestorInfo, type); 29413 return { 29414 namespace: namespace, 29415 ancestorInfo: ancestorInfo 29416 }; 29417 } 29418} 29419function getPublicInstance(instance) { 29420 return instance; 29421} 29422function prepareForCommit(containerInfo) { 29423 eventsEnabled = isEnabled(); 29424 selectionInformation = getSelectionInformation(); 29425 setEnabled(false); 29426} 29427function resetAfterCommit(containerInfo) { 29428 restoreSelection(selectionInformation); 29429 setEnabled(eventsEnabled); 29430 eventsEnabled = null; 29431 29432 selectionInformation = null; 29433} 29434function createInstance(type, props, rootContainerInstance, hostContext, internalInstanceHandle) { 29435 var parentNamespace; 29436 29437 { 29438 // TODO: take namespace into account when validating. 29439 var hostContextDev = hostContext; 29440 validateDOMNesting(type, null, hostContextDev.ancestorInfo); 29441 29442 if (typeof props.children === 'string' || typeof props.children === 'number') { 29443 var string = '' + props.children; 29444 var ownAncestorInfo = updatedAncestorInfo(hostContextDev.ancestorInfo, type); 29445 validateDOMNesting(null, string, ownAncestorInfo); 29446 } 29447 29448 parentNamespace = hostContextDev.namespace; 29449 } 29450 29451 var domElement = createElement(type, props, rootContainerInstance, parentNamespace); 29452 precacheFiberNode(internalInstanceHandle, domElement); 29453 updateFiberProps(domElement, props); 29454 return domElement; 29455} 29456function appendInitialChild(parentInstance, child) { 29457 parentInstance.appendChild(child); 29458} 29459function finalizeInitialChildren(domElement, type, props, rootContainerInstance, hostContext) { 29460 setInitialProperties(domElement, type, props, rootContainerInstance); 29461 return shouldAutoFocusHostComponent(type, props); 29462} 29463function prepareUpdate(domElement, type, oldProps, newProps, rootContainerInstance, hostContext) { 29464 { 29465 var hostContextDev = hostContext; 29466 29467 if (typeof newProps.children !== typeof oldProps.children && (typeof newProps.children === 'string' || typeof newProps.children === 'number')) { 29468 var string = '' + newProps.children; 29469 var ownAncestorInfo = updatedAncestorInfo(hostContextDev.ancestorInfo, type); 29470 validateDOMNesting(null, string, ownAncestorInfo); 29471 } 29472 } 29473 29474 return diffProperties(domElement, type, oldProps, newProps, rootContainerInstance); 29475} 29476function shouldSetTextContent(type, props) { 29477 return type === 'textarea' || type === 'option' || type === 'noscript' || typeof props.children === 'string' || typeof props.children === 'number' || typeof props.dangerouslySetInnerHTML === 'object' && props.dangerouslySetInnerHTML !== null && props.dangerouslySetInnerHTML.__html != null; 29478} 29479function shouldDeprioritizeSubtree(type, props) { 29480 return !!props.hidden; 29481} 29482function createTextInstance(text, rootContainerInstance, hostContext, internalInstanceHandle) { 29483 { 29484 var hostContextDev = hostContext; 29485 validateDOMNesting(null, text, hostContextDev.ancestorInfo); 29486 } 29487 29488 var textNode = createTextNode(text, rootContainerInstance); 29489 precacheFiberNode(internalInstanceHandle, textNode); 29490 return textNode; 29491} 29492// if a component just imports ReactDOM (e.g. for findDOMNode). 29493// Some environments might not have setTimeout or clearTimeout. 29494 29495var scheduleTimeout = typeof setTimeout === 'function' ? setTimeout : undefined; 29496var cancelTimeout = typeof clearTimeout === 'function' ? clearTimeout : undefined; 29497var noTimeout = -1; // ------------------- 29498function commitMount(domElement, type, newProps, internalInstanceHandle) { 29499 // Despite the naming that might imply otherwise, this method only 29500 // fires if there is an `Update` effect scheduled during mounting. 29501 // This happens if `finalizeInitialChildren` returns `true` (which it 29502 // does to implement the `autoFocus` attribute on the client). But 29503 // there are also other cases when this might happen (such as patching 29504 // up text content during hydration mismatch). So we'll check this again. 29505 if (shouldAutoFocusHostComponent(type, newProps)) { 29506 domElement.focus(); 29507 } 29508} 29509function commitUpdate(domElement, updatePayload, type, oldProps, newProps, internalInstanceHandle) { 29510 // Update the props handle so that we know which props are the ones with 29511 // with current event handlers. 29512 updateFiberProps(domElement, newProps); // Apply the diff to the DOM node. 29513 29514 updateProperties(domElement, updatePayload, type, oldProps, newProps); 29515} 29516function resetTextContent(domElement) { 29517 setTextContent(domElement, ''); 29518} 29519function commitTextUpdate(textInstance, oldText, newText) { 29520 textInstance.nodeValue = newText; 29521} 29522function appendChild(parentInstance, child) { 29523 parentInstance.appendChild(child); 29524} 29525function appendChildToContainer(container, child) { 29526 var parentNode; 29527 29528 if (container.nodeType === COMMENT_NODE) { 29529 parentNode = container.parentNode; 29530 parentNode.insertBefore(child, container); 29531 } else { 29532 parentNode = container; 29533 parentNode.appendChild(child); 29534 } // This container might be used for a portal. 29535 // If something inside a portal is clicked, that click should bubble 29536 // through the React tree. However, on Mobile Safari the click would 29537 // never bubble through the *DOM* tree unless an ancestor with onclick 29538 // event exists. So we wouldn't see it and dispatch it. 29539 // This is why we ensure that non React root containers have inline onclick 29540 // defined. 29541 // https://github.com/facebook/react/issues/11918 29542 29543 29544 var reactRootContainer = container._reactRootContainer; 29545 29546 if ((reactRootContainer === null || reactRootContainer === undefined) && parentNode.onclick === null) { 29547 // TODO: This cast may not be sound for SVG, MathML or custom elements. 29548 trapClickOnNonInteractiveElement(parentNode); 29549 } 29550} 29551function insertBefore(parentInstance, child, beforeChild) { 29552 parentInstance.insertBefore(child, beforeChild); 29553} 29554function insertInContainerBefore(container, child, beforeChild) { 29555 if (container.nodeType === COMMENT_NODE) { 29556 container.parentNode.insertBefore(child, beforeChild); 29557 } else { 29558 container.insertBefore(child, beforeChild); 29559 } 29560} 29561function removeChild(parentInstance, child) { 29562 parentInstance.removeChild(child); 29563} 29564function removeChildFromContainer(container, child) { 29565 if (container.nodeType === COMMENT_NODE) { 29566 container.parentNode.removeChild(child); 29567 } else { 29568 container.removeChild(child); 29569 } 29570} 29571 29572function hideInstance(instance) { 29573 // pass host context to this method? 29574 29575 29576 instance = instance; 29577 var style = instance.style; 29578 29579 if (typeof style.setProperty === 'function') { 29580 style.setProperty('display', 'none', 'important'); 29581 } else { 29582 style.display = 'none'; 29583 } 29584} 29585function hideTextInstance(textInstance) { 29586 textInstance.nodeValue = ''; 29587} 29588function unhideInstance(instance, props) { 29589 instance = instance; 29590 var styleProp = props[STYLE$1]; 29591 var display = styleProp !== undefined && styleProp !== null && styleProp.hasOwnProperty('display') ? styleProp.display : null; 29592 instance.style.display = dangerousStyleValue('display', display); 29593} 29594function unhideTextInstance(textInstance, text) { 29595 textInstance.nodeValue = text; 29596} // ------------------- 29597function canHydrateInstance(instance, type, props) { 29598 if (instance.nodeType !== ELEMENT_NODE || type.toLowerCase() !== instance.nodeName.toLowerCase()) { 29599 return null; 29600 } // This has now been refined to an element node. 29601 29602 29603 return instance; 29604} 29605function canHydrateTextInstance(instance, text) { 29606 if (text === '' || instance.nodeType !== TEXT_NODE) { 29607 // Empty strings are not parsed by HTML so there won't be a correct match here. 29608 return null; 29609 } // This has now been refined to a text node. 29610 29611 29612 return instance; 29613} 29614function isSuspenseInstancePending(instance) { 29615 return instance.data === SUSPENSE_PENDING_START_DATA; 29616} 29617function isSuspenseInstanceFallback(instance) { 29618 return instance.data === SUSPENSE_FALLBACK_START_DATA; 29619} 29620 29621function getNextHydratable(node) { 29622 // Skip non-hydratable nodes. 29623 for (; node != null; node = node.nextSibling) { 29624 var nodeType = node.nodeType; 29625 29626 if (nodeType === ELEMENT_NODE || nodeType === TEXT_NODE) { 29627 break; 29628 } 29629 } 29630 29631 return node; 29632} 29633 29634function getNextHydratableSibling(instance) { 29635 return getNextHydratable(instance.nextSibling); 29636} 29637function getFirstHydratableChild(parentInstance) { 29638 return getNextHydratable(parentInstance.firstChild); 29639} 29640function hydrateInstance(instance, type, props, rootContainerInstance, hostContext, internalInstanceHandle) { 29641 precacheFiberNode(internalInstanceHandle, instance); // TODO: Possibly defer this until the commit phase where all the events 29642 // get attached. 29643 29644 updateFiberProps(instance, props); 29645 var parentNamespace; 29646 29647 { 29648 var hostContextDev = hostContext; 29649 parentNamespace = hostContextDev.namespace; 29650 } 29651 29652 return diffHydratedProperties(instance, type, props, parentNamespace, rootContainerInstance); 29653} 29654function hydrateTextInstance(textInstance, text, internalInstanceHandle) { 29655 precacheFiberNode(internalInstanceHandle, textInstance); 29656 return diffHydratedText(textInstance, text); 29657} 29658function getNextHydratableInstanceAfterSuspenseInstance(suspenseInstance) { 29659 var node = suspenseInstance.nextSibling; // Skip past all nodes within this suspense boundary. 29660 // There might be nested nodes so we need to keep track of how 29661 // deep we are and only break out when we're back on top. 29662 29663 var depth = 0; 29664 29665 while (node) { 29666 if (node.nodeType === COMMENT_NODE) { 29667 var data = node.data; 29668 29669 if (data === SUSPENSE_END_DATA) { 29670 if (depth === 0) { 29671 return getNextHydratableSibling(node); 29672 } else { 29673 depth--; 29674 } 29675 } else if (data === SUSPENSE_START_DATA || data === SUSPENSE_FALLBACK_START_DATA || data === SUSPENSE_PENDING_START_DATA) { 29676 depth++; 29677 } 29678 } 29679 29680 node = node.nextSibling; 29681 } // TODO: Warn, we didn't find the end comment boundary. 29682 29683 29684 return null; 29685} // Returns the SuspenseInstance if this node is a direct child of a 29686// SuspenseInstance. I.e. if its previous sibling is a Comment with 29687// SUSPENSE_x_START_DATA. Otherwise, null. 29688 29689function getParentSuspenseInstance(targetInstance) { 29690 var node = targetInstance.previousSibling; // Skip past all nodes within this suspense boundary. 29691 // There might be nested nodes so we need to keep track of how 29692 // deep we are and only break out when we're back on top. 29693 29694 var depth = 0; 29695 29696 while (node) { 29697 if (node.nodeType === COMMENT_NODE) { 29698 var data = node.data; 29699 29700 if (data === SUSPENSE_START_DATA || data === SUSPENSE_FALLBACK_START_DATA || data === SUSPENSE_PENDING_START_DATA) { 29701 if (depth === 0) { 29702 return node; 29703 } else { 29704 depth--; 29705 } 29706 } else if (data === SUSPENSE_END_DATA) { 29707 depth++; 29708 } 29709 } 29710 29711 node = node.previousSibling; 29712 } 29713 29714 return null; 29715} 29716function commitHydratedContainer(container) { 29717 // Retry if any event replaying was blocked on this. 29718 retryIfBlockedOn(container); 29719} 29720function commitHydratedSuspenseInstance(suspenseInstance) { 29721 // Retry if any event replaying was blocked on this. 29722 retryIfBlockedOn(suspenseInstance); 29723} 29724function didNotMatchHydratedContainerTextInstance(parentContainer, textInstance, text) { 29725 { 29726 warnForUnmatchedText(textInstance, text); 29727 } 29728} 29729function didNotMatchHydratedTextInstance(parentType, parentProps, parentInstance, textInstance, text) { 29730 if ( parentProps[SUPPRESS_HYDRATION_WARNING$1] !== true) { 29731 warnForUnmatchedText(textInstance, text); 29732 } 29733} 29734function didNotHydrateContainerInstance(parentContainer, instance) { 29735 { 29736 if (instance.nodeType === ELEMENT_NODE) { 29737 warnForDeletedHydratableElement(parentContainer, instance); 29738 } else if (instance.nodeType === COMMENT_NODE) ; else { 29739 warnForDeletedHydratableText(parentContainer, instance); 29740 } 29741 } 29742} 29743function didNotHydrateInstance(parentType, parentProps, parentInstance, instance) { 29744 if ( parentProps[SUPPRESS_HYDRATION_WARNING$1] !== true) { 29745 if (instance.nodeType === ELEMENT_NODE) { 29746 warnForDeletedHydratableElement(parentInstance, instance); 29747 } else if (instance.nodeType === COMMENT_NODE) ; else { 29748 warnForDeletedHydratableText(parentInstance, instance); 29749 } 29750 } 29751} 29752function didNotFindHydratableContainerInstance(parentContainer, type, props) { 29753 { 29754 warnForInsertedHydratedElement(parentContainer, type); 29755 } 29756} 29757function didNotFindHydratableContainerTextInstance(parentContainer, text) { 29758 { 29759 warnForInsertedHydratedText(parentContainer, text); 29760 } 29761} 29762function didNotFindHydratableInstance(parentType, parentProps, parentInstance, type, props) { 29763 if ( parentProps[SUPPRESS_HYDRATION_WARNING$1] !== true) { 29764 warnForInsertedHydratedElement(parentInstance, type); 29765 } 29766} 29767function didNotFindHydratableTextInstance(parentType, parentProps, parentInstance, text) { 29768 if ( parentProps[SUPPRESS_HYDRATION_WARNING$1] !== true) { 29769 warnForInsertedHydratedText(parentInstance, text); 29770 } 29771} 29772function didNotFindHydratableSuspenseInstance(parentType, parentProps, parentInstance) { 29773 if ( parentProps[SUPPRESS_HYDRATION_WARNING$1] !== true) ; 29774} 29775 29776var randomKey = Math.random().toString(36).slice(2); 29777var internalInstanceKey = '__reactInternalInstance$' + randomKey; 29778var internalEventHandlersKey = '__reactEventHandlers$' + randomKey; 29779var internalContainerInstanceKey = '__reactContainere$' + randomKey; 29780function precacheFiberNode(hostInst, node) { 29781 node[internalInstanceKey] = hostInst; 29782} 29783function markContainerAsRoot(hostRoot, node) { 29784 node[internalContainerInstanceKey] = hostRoot; 29785} 29786function unmarkContainerAsRoot(node) { 29787 node[internalContainerInstanceKey] = null; 29788} 29789function isContainerMarkedAsRoot(node) { 29790 return !!node[internalContainerInstanceKey]; 29791} // Given a DOM node, return the closest HostComponent or HostText fiber ancestor. 29792// If the target node is part of a hydrated or not yet rendered subtree, then 29793// this may also return a SuspenseComponent or HostRoot to indicate that. 29794// Conceptually the HostRoot fiber is a child of the Container node. So if you 29795// pass the Container node as the targetNode, you will not actually get the 29796// HostRoot back. To get to the HostRoot, you need to pass a child of it. 29797// The same thing applies to Suspense boundaries. 29798 29799function getClosestInstanceFromNode(targetNode) { 29800 var targetInst = targetNode[internalInstanceKey]; 29801 29802 if (targetInst) { 29803 // Don't return HostRoot or SuspenseComponent here. 29804 return targetInst; 29805 } // If the direct event target isn't a React owned DOM node, we need to look 29806 // to see if one of its parents is a React owned DOM node. 29807 29808 29809 var parentNode = targetNode.parentNode; 29810 29811 while (parentNode) { 29812 // We'll check if this is a container root that could include 29813 // React nodes in the future. We need to check this first because 29814 // if we're a child of a dehydrated container, we need to first 29815 // find that inner container before moving on to finding the parent 29816 // instance. Note that we don't check this field on the targetNode 29817 // itself because the fibers are conceptually between the container 29818 // node and the first child. It isn't surrounding the container node. 29819 // If it's not a container, we check if it's an instance. 29820 targetInst = parentNode[internalContainerInstanceKey] || parentNode[internalInstanceKey]; 29821 29822 if (targetInst) { 29823 // Since this wasn't the direct target of the event, we might have 29824 // stepped past dehydrated DOM nodes to get here. However they could 29825 // also have been non-React nodes. We need to answer which one. 29826 // If we the instance doesn't have any children, then there can't be 29827 // a nested suspense boundary within it. So we can use this as a fast 29828 // bailout. Most of the time, when people add non-React children to 29829 // the tree, it is using a ref to a child-less DOM node. 29830 // Normally we'd only need to check one of the fibers because if it 29831 // has ever gone from having children to deleting them or vice versa 29832 // it would have deleted the dehydrated boundary nested inside already. 29833 // However, since the HostRoot starts out with an alternate it might 29834 // have one on the alternate so we need to check in case this was a 29835 // root. 29836 var alternate = targetInst.alternate; 29837 29838 if (targetInst.child !== null || alternate !== null && alternate.child !== null) { 29839 // Next we need to figure out if the node that skipped past is 29840 // nested within a dehydrated boundary and if so, which one. 29841 var suspenseInstance = getParentSuspenseInstance(targetNode); 29842 29843 while (suspenseInstance !== null) { 29844 // We found a suspense instance. That means that we haven't 29845 // hydrated it yet. Even though we leave the comments in the 29846 // DOM after hydrating, and there are boundaries in the DOM 29847 // that could already be hydrated, we wouldn't have found them 29848 // through this pass since if the target is hydrated it would 29849 // have had an internalInstanceKey on it. 29850 // Let's get the fiber associated with the SuspenseComponent 29851 // as the deepest instance. 29852 var targetSuspenseInst = suspenseInstance[internalInstanceKey]; 29853 29854 if (targetSuspenseInst) { 29855 return targetSuspenseInst; 29856 } // If we don't find a Fiber on the comment, it might be because 29857 // we haven't gotten to hydrate it yet. There might still be a 29858 // parent boundary that hasn't above this one so we need to find 29859 // the outer most that is known. 29860 29861 29862 suspenseInstance = getParentSuspenseInstance(suspenseInstance); // If we don't find one, then that should mean that the parent 29863 // host component also hasn't hydrated yet. We can return it 29864 // below since it will bail out on the isMounted check later. 29865 } 29866 } 29867 29868 return targetInst; 29869 } 29870 29871 targetNode = parentNode; 29872 parentNode = targetNode.parentNode; 29873 } 29874 29875 return null; 29876} 29877/** 29878 * Given a DOM node, return the ReactDOMComponent or ReactDOMTextComponent 29879 * instance, or null if the node was not rendered by this React. 29880 */ 29881 29882function getInstanceFromNode$1(node) { 29883 var inst = node[internalInstanceKey] || node[internalContainerInstanceKey]; 29884 29885 if (inst) { 29886 if (inst.tag === HostComponent || inst.tag === HostText || inst.tag === SuspenseComponent || inst.tag === HostRoot) { 29887 return inst; 29888 } else { 29889 return null; 29890 } 29891 } 29892 29893 return null; 29894} 29895/** 29896 * Given a ReactDOMComponent or ReactDOMTextComponent, return the corresponding 29897 * DOM node. 29898 */ 29899 29900function getNodeFromInstance$1(inst) { 29901 if (inst.tag === HostComponent || inst.tag === HostText) { 29902 // In Fiber this, is just the state node right now. We assume it will be 29903 // a host component or host text. 29904 return inst.stateNode; 29905 } // Without this first invariant, passing a non-DOM-component triggers the next 29906 // invariant for a missing parent, which is super confusing. 29907 29908 29909 { 29910 { 29911 throw Error( "getNodeFromInstance: Invalid argument." ); 29912 } 29913 } 29914} 29915function getFiberCurrentPropsFromNode$1(node) { 29916 return node[internalEventHandlersKey] || null; 29917} 29918function updateFiberProps(node, props) { 29919 node[internalEventHandlersKey] = props; 29920} 29921 29922function getParent(inst) { 29923 do { 29924 inst = inst.return; // TODO: If this is a HostRoot we might want to bail out. 29925 // That is depending on if we want nested subtrees (layers) to bubble 29926 // events to their parent. We could also go through parentNode on the 29927 // host node but that wouldn't work for React Native and doesn't let us 29928 // do the portal feature. 29929 } while (inst && inst.tag !== HostComponent); 29930 29931 if (inst) { 29932 return inst; 29933 } 29934 29935 return null; 29936} 29937/** 29938 * Return the lowest common ancestor of A and B, or null if they are in 29939 * different trees. 29940 */ 29941 29942 29943function getLowestCommonAncestor(instA, instB) { 29944 var depthA = 0; 29945 29946 for (var tempA = instA; tempA; tempA = getParent(tempA)) { 29947 depthA++; 29948 } 29949 29950 var depthB = 0; 29951 29952 for (var tempB = instB; tempB; tempB = getParent(tempB)) { 29953 depthB++; 29954 } // If A is deeper, crawl up. 29955 29956 29957 while (depthA - depthB > 0) { 29958 instA = getParent(instA); 29959 depthA--; 29960 } // If B is deeper, crawl up. 29961 29962 29963 while (depthB - depthA > 0) { 29964 instB = getParent(instB); 29965 depthB--; 29966 } // Walk in lockstep until we find a match. 29967 29968 29969 var depth = depthA; 29970 29971 while (depth--) { 29972 if (instA === instB || instA === instB.alternate) { 29973 return instA; 29974 } 29975 29976 instA = getParent(instA); 29977 instB = getParent(instB); 29978 } 29979 29980 return null; 29981} 29982/** 29983 * Simulates the traversal of a two-phase, capture/bubble event dispatch. 29984 */ 29985 29986function traverseTwoPhase(inst, fn, arg) { 29987 var path = []; 29988 29989 while (inst) { 29990 path.push(inst); 29991 inst = getParent(inst); 29992 } 29993 29994 var i; 29995 29996 for (i = path.length; i-- > 0;) { 29997 fn(path[i], 'captured', arg); 29998 } 29999 30000 for (i = 0; i < path.length; i++) { 30001 fn(path[i], 'bubbled', arg); 30002 } 30003} 30004/** 30005 * Traverses the ID hierarchy and invokes the supplied `cb` on any IDs that 30006 * should would receive a `mouseEnter` or `mouseLeave` event. 30007 * 30008 * Does not invoke the callback on the nearest common ancestor because nothing 30009 * "entered" or "left" that element. 30010 */ 30011 30012function traverseEnterLeave(from, to, fn, argFrom, argTo) { 30013 var common = from && to ? getLowestCommonAncestor(from, to) : null; 30014 var pathFrom = []; 30015 30016 while (true) { 30017 if (!from) { 30018 break; 30019 } 30020 30021 if (from === common) { 30022 break; 30023 } 30024 30025 var alternate = from.alternate; 30026 30027 if (alternate !== null && alternate === common) { 30028 break; 30029 } 30030 30031 pathFrom.push(from); 30032 from = getParent(from); 30033 } 30034 30035 var pathTo = []; 30036 30037 while (true) { 30038 if (!to) { 30039 break; 30040 } 30041 30042 if (to === common) { 30043 break; 30044 } 30045 30046 var _alternate = to.alternate; 30047 30048 if (_alternate !== null && _alternate === common) { 30049 break; 30050 } 30051 30052 pathTo.push(to); 30053 to = getParent(to); 30054 } 30055 30056 for (var i = 0; i < pathFrom.length; i++) { 30057 fn(pathFrom[i], 'bubbled', argFrom); 30058 } 30059 30060 for (var _i = pathTo.length; _i-- > 0;) { 30061 fn(pathTo[_i], 'captured', argTo); 30062 } 30063} 30064 30065function isInteractive(tag) { 30066 return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea'; 30067} 30068 30069function shouldPreventMouseEvent(name, type, props) { 30070 switch (name) { 30071 case 'onClick': 30072 case 'onClickCapture': 30073 case 'onDoubleClick': 30074 case 'onDoubleClickCapture': 30075 case 'onMouseDown': 30076 case 'onMouseDownCapture': 30077 case 'onMouseMove': 30078 case 'onMouseMoveCapture': 30079 case 'onMouseUp': 30080 case 'onMouseUpCapture': 30081 case 'onMouseEnter': 30082 return !!(props.disabled && isInteractive(type)); 30083 30084 default: 30085 return false; 30086 } 30087} 30088/** 30089 * @param {object} inst The instance, which is the source of events. 30090 * @param {string} registrationName Name of listener (e.g. `onClick`). 30091 * @return {?function} The stored callback. 30092 */ 30093 30094 30095function getListener(inst, registrationName) { 30096 var listener; // TODO: shouldPreventMouseEvent is DOM-specific and definitely should not 30097 // live here; needs to be moved to a better place soon 30098 30099 var stateNode = inst.stateNode; 30100 30101 if (!stateNode) { 30102 // Work in progress (ex: onload events in incremental mode). 30103 return null; 30104 } 30105 30106 var props = getFiberCurrentPropsFromNode(stateNode); 30107 30108 if (!props) { 30109 // Work in progress. 30110 return null; 30111 } 30112 30113 listener = props[registrationName]; 30114 30115 if (shouldPreventMouseEvent(registrationName, inst.type, props)) { 30116 return null; 30117 } 30118 30119 if (!(!listener || typeof listener === 'function')) { 30120 { 30121 throw Error( "Expected `" + registrationName + "` listener to be a function, instead got a value of `" + typeof listener + "` type." ); 30122 } 30123 } 30124 30125 return listener; 30126} 30127 30128/** 30129 * Some event types have a notion of different registration names for different 30130 * "phases" of propagation. This finds listeners by a given phase. 30131 */ 30132function listenerAtPhase(inst, event, propagationPhase) { 30133 var registrationName = event.dispatchConfig.phasedRegistrationNames[propagationPhase]; 30134 return getListener(inst, registrationName); 30135} 30136/** 30137 * A small set of propagation patterns, each of which will accept a small amount 30138 * of information, and generate a set of "dispatch ready event objects" - which 30139 * are sets of events that have already been annotated with a set of dispatched 30140 * listener functions/ids. The API is designed this way to discourage these 30141 * propagation strategies from actually executing the dispatches, since we 30142 * always want to collect the entire set of dispatches before executing even a 30143 * single one. 30144 */ 30145 30146/** 30147 * Tags a `SyntheticEvent` with dispatched listeners. Creating this function 30148 * here, allows us to not have to bind or create functions for each event. 30149 * Mutating the event's members allows us to not have to create a wrapping 30150 * "dispatch" object that pairs the event with the listener. 30151 */ 30152 30153 30154function accumulateDirectionalDispatches(inst, phase, event) { 30155 { 30156 if (!inst) { 30157 error('Dispatching inst must not be null'); 30158 } 30159 } 30160 30161 var listener = listenerAtPhase(inst, event, phase); 30162 30163 if (listener) { 30164 event._dispatchListeners = accumulateInto(event._dispatchListeners, listener); 30165 event._dispatchInstances = accumulateInto(event._dispatchInstances, inst); 30166 } 30167} 30168/** 30169 * Collect dispatches (must be entirely collected before dispatching - see unit 30170 * tests). Lazily allocate the array to conserve memory. We must loop through 30171 * each event and perform the traversal for each one. We cannot perform a 30172 * single traversal for the entire collection of events because each event may 30173 * have a different target. 30174 */ 30175 30176 30177function accumulateTwoPhaseDispatchesSingle(event) { 30178 if (event && event.dispatchConfig.phasedRegistrationNames) { 30179 traverseTwoPhase(event._targetInst, accumulateDirectionalDispatches, event); 30180 } 30181} 30182/** 30183 * Accumulates without regard to direction, does not look for phased 30184 * registration names. Same as `accumulateDirectDispatchesSingle` but without 30185 * requiring that the `dispatchMarker` be the same as the dispatched ID. 30186 */ 30187 30188 30189function accumulateDispatches(inst, ignoredDirection, event) { 30190 if (inst && event && event.dispatchConfig.registrationName) { 30191 var registrationName = event.dispatchConfig.registrationName; 30192 var listener = getListener(inst, registrationName); 30193 30194 if (listener) { 30195 event._dispatchListeners = accumulateInto(event._dispatchListeners, listener); 30196 event._dispatchInstances = accumulateInto(event._dispatchInstances, inst); 30197 } 30198 } 30199} 30200/** 30201 * Accumulates dispatches on an `SyntheticEvent`, but only for the 30202 * `dispatchMarker`. 30203 * @param {SyntheticEvent} event 30204 */ 30205 30206 30207function accumulateDirectDispatchesSingle(event) { 30208 if (event && event.dispatchConfig.registrationName) { 30209 accumulateDispatches(event._targetInst, null, event); 30210 } 30211} 30212 30213function accumulateTwoPhaseDispatches(events) { 30214 forEachAccumulated(events, accumulateTwoPhaseDispatchesSingle); 30215} 30216function accumulateEnterLeaveDispatches(leave, enter, from, to) { 30217 traverseEnterLeave(from, to, accumulateDispatches, leave, enter); 30218} 30219function accumulateDirectDispatches(events) { 30220 forEachAccumulated(events, accumulateDirectDispatchesSingle); 30221} 30222 30223/** 30224 * These variables store information about text content of a target node, 30225 * allowing comparison of content before and after a given event. 30226 * 30227 * Identify the node where selection currently begins, then observe 30228 * both its text content and its current position in the DOM. Since the 30229 * browser may natively replace the target node during composition, we can 30230 * use its position to find its replacement. 30231 * 30232 * 30233 */ 30234var root = null; 30235var startText = null; 30236var fallbackText = null; 30237function initialize(nativeEventTarget) { 30238 root = nativeEventTarget; 30239 startText = getText(); 30240 return true; 30241} 30242function reset() { 30243 root = null; 30244 startText = null; 30245 fallbackText = null; 30246} 30247function getData() { 30248 if (fallbackText) { 30249 return fallbackText; 30250 } 30251 30252 var start; 30253 var startValue = startText; 30254 var startLength = startValue.length; 30255 var end; 30256 var endValue = getText(); 30257 var endLength = endValue.length; 30258 30259 for (start = 0; start < startLength; start++) { 30260 if (startValue[start] !== endValue[start]) { 30261 break; 30262 } 30263 } 30264 30265 var minEnd = startLength - start; 30266 30267 for (end = 1; end <= minEnd; end++) { 30268 if (startValue[startLength - end] !== endValue[endLength - end]) { 30269 break; 30270 } 30271 } 30272 30273 var sliceTail = end > 1 ? 1 - end : undefined; 30274 fallbackText = endValue.slice(start, sliceTail); 30275 return fallbackText; 30276} 30277function getText() { 30278 if ('value' in root) { 30279 return root.value; 30280 } 30281 30282 return root.textContent; 30283} 30284 30285var EVENT_POOL_SIZE = 10; 30286/** 30287 * @interface Event 30288 * @see http://www.w3.org/TR/DOM-Level-3-Events/ 30289 */ 30290 30291var EventInterface = { 30292 type: null, 30293 target: null, 30294 // currentTarget is set when dispatching; no use in copying it here 30295 currentTarget: function () { 30296 return null; 30297 }, 30298 eventPhase: null, 30299 bubbles: null, 30300 cancelable: null, 30301 timeStamp: function (event) { 30302 return event.timeStamp || Date.now(); 30303 }, 30304 defaultPrevented: null, 30305 isTrusted: null 30306}; 30307 30308function functionThatReturnsTrue() { 30309 return true; 30310} 30311 30312function functionThatReturnsFalse() { 30313 return false; 30314} 30315/** 30316 * Synthetic events are dispatched by event plugins, typically in response to a 30317 * top-level event delegation handler. 30318 * 30319 * These systems should generally use pooling to reduce the frequency of garbage 30320 * collection. The system should check `isPersistent` to determine whether the 30321 * event should be released into the pool after being dispatched. Users that 30322 * need a persisted event should invoke `persist`. 30323 * 30324 * Synthetic events (and subclasses) implement the DOM Level 3 Events API by 30325 * normalizing browser quirks. Subclasses do not necessarily have to implement a 30326 * DOM interface; custom application-specific events can also subclass this. 30327 * 30328 * @param {object} dispatchConfig Configuration used to dispatch this event. 30329 * @param {*} targetInst Marker identifying the event target. 30330 * @param {object} nativeEvent Native browser event. 30331 * @param {DOMEventTarget} nativeEventTarget Target node. 30332 */ 30333 30334 30335function SyntheticEvent(dispatchConfig, targetInst, nativeEvent, nativeEventTarget) { 30336 { 30337 // these have a getter/setter for warnings 30338 delete this.nativeEvent; 30339 delete this.preventDefault; 30340 delete this.stopPropagation; 30341 delete this.isDefaultPrevented; 30342 delete this.isPropagationStopped; 30343 } 30344 30345 this.dispatchConfig = dispatchConfig; 30346 this._targetInst = targetInst; 30347 this.nativeEvent = nativeEvent; 30348 var Interface = this.constructor.Interface; 30349 30350 for (var propName in Interface) { 30351 if (!Interface.hasOwnProperty(propName)) { 30352 continue; 30353 } 30354 30355 { 30356 delete this[propName]; // this has a getter/setter for warnings 30357 } 30358 30359 var normalize = Interface[propName]; 30360 30361 if (normalize) { 30362 this[propName] = normalize(nativeEvent); 30363 } else { 30364 if (propName === 'target') { 30365 this.target = nativeEventTarget; 30366 } else { 30367 this[propName] = nativeEvent[propName]; 30368 } 30369 } 30370 } 30371 30372 var defaultPrevented = nativeEvent.defaultPrevented != null ? nativeEvent.defaultPrevented : nativeEvent.returnValue === false; 30373 30374 if (defaultPrevented) { 30375 this.isDefaultPrevented = functionThatReturnsTrue; 30376 } else { 30377 this.isDefaultPrevented = functionThatReturnsFalse; 30378 } 30379 30380 this.isPropagationStopped = functionThatReturnsFalse; 30381 return this; 30382} 30383 30384_assign(SyntheticEvent.prototype, { 30385 preventDefault: function () { 30386 this.defaultPrevented = true; 30387 var event = this.nativeEvent; 30388 30389 if (!event) { 30390 return; 30391 } 30392 30393 if (event.preventDefault) { 30394 event.preventDefault(); 30395 } else if (typeof event.returnValue !== 'unknown') { 30396 event.returnValue = false; 30397 } 30398 30399 this.isDefaultPrevented = functionThatReturnsTrue; 30400 }, 30401 stopPropagation: function () { 30402 var event = this.nativeEvent; 30403 30404 if (!event) { 30405 return; 30406 } 30407 30408 if (event.stopPropagation) { 30409 event.stopPropagation(); 30410 } else if (typeof event.cancelBubble !== 'unknown') { 30411 // The ChangeEventPlugin registers a "propertychange" event for 30412 // IE. This event does not support bubbling or cancelling, and 30413 // any references to cancelBubble throw "Member not found". A 30414 // typeof check of "unknown" circumvents this issue (and is also 30415 // IE specific). 30416 event.cancelBubble = true; 30417 } 30418 30419 this.isPropagationStopped = functionThatReturnsTrue; 30420 }, 30421 30422 /** 30423 * We release all dispatched `SyntheticEvent`s after each event loop, adding 30424 * them back into the pool. This allows a way to hold onto a reference that 30425 * won't be added back into the pool. 30426 */ 30427 persist: function () { 30428 this.isPersistent = functionThatReturnsTrue; 30429 }, 30430 30431 /** 30432 * Checks if this event should be released back into the pool. 30433 * 30434 * @return {boolean} True if this should not be released, false otherwise. 30435 */ 30436 isPersistent: functionThatReturnsFalse, 30437 30438 /** 30439 * `PooledClass` looks for `destructor` on each instance it releases. 30440 */ 30441 destructor: function () { 30442 var Interface = this.constructor.Interface; 30443 30444 for (var propName in Interface) { 30445 { 30446 Object.defineProperty(this, propName, getPooledWarningPropertyDefinition(propName, Interface[propName])); 30447 } 30448 } 30449 30450 this.dispatchConfig = null; 30451 this._targetInst = null; 30452 this.nativeEvent = null; 30453 this.isDefaultPrevented = functionThatReturnsFalse; 30454 this.isPropagationStopped = functionThatReturnsFalse; 30455 this._dispatchListeners = null; 30456 this._dispatchInstances = null; 30457 30458 { 30459 Object.defineProperty(this, 'nativeEvent', getPooledWarningPropertyDefinition('nativeEvent', null)); 30460 Object.defineProperty(this, 'isDefaultPrevented', getPooledWarningPropertyDefinition('isDefaultPrevented', functionThatReturnsFalse)); 30461 Object.defineProperty(this, 'isPropagationStopped', getPooledWarningPropertyDefinition('isPropagationStopped', functionThatReturnsFalse)); 30462 Object.defineProperty(this, 'preventDefault', getPooledWarningPropertyDefinition('preventDefault', function () {})); 30463 Object.defineProperty(this, 'stopPropagation', getPooledWarningPropertyDefinition('stopPropagation', function () {})); 30464 } 30465 } 30466}); 30467 30468SyntheticEvent.Interface = EventInterface; 30469/** 30470 * Helper to reduce boilerplate when creating subclasses. 30471 */ 30472 30473SyntheticEvent.extend = function (Interface) { 30474 var Super = this; 30475 30476 var E = function () {}; 30477 30478 E.prototype = Super.prototype; 30479 var prototype = new E(); 30480 30481 function Class() { 30482 return Super.apply(this, arguments); 30483 } 30484 30485 _assign(prototype, Class.prototype); 30486 30487 Class.prototype = prototype; 30488 Class.prototype.constructor = Class; 30489 Class.Interface = _assign({}, Super.Interface, Interface); 30490 Class.extend = Super.extend; 30491 addEventPoolingTo(Class); 30492 return Class; 30493}; 30494 30495addEventPoolingTo(SyntheticEvent); 30496/** 30497 * Helper to nullify syntheticEvent instance properties when destructing 30498 * 30499 * @param {String} propName 30500 * @param {?object} getVal 30501 * @return {object} defineProperty object 30502 */ 30503 30504function getPooledWarningPropertyDefinition(propName, getVal) { 30505 var isFunction = typeof getVal === 'function'; 30506 return { 30507 configurable: true, 30508 set: set, 30509 get: get 30510 }; 30511 30512 function set(val) { 30513 var action = isFunction ? 'setting the method' : 'setting the property'; 30514 warn(action, 'This is effectively a no-op'); 30515 return val; 30516 } 30517 30518 function get() { 30519 var action = isFunction ? 'accessing the method' : 'accessing the property'; 30520 var result = isFunction ? 'This is a no-op function' : 'This is set to null'; 30521 warn(action, result); 30522 return getVal; 30523 } 30524 30525 function warn(action, result) { 30526 { 30527 error("This synthetic event is reused for performance reasons. If you're seeing this, " + "you're %s `%s` on a released/nullified synthetic event. %s. " + 'If you must keep the original synthetic event around, use event.persist(). ' + 'See https://fb.me/react-event-pooling for more information.', action, propName, result); 30528 } 30529 } 30530} 30531 30532function getPooledEvent(dispatchConfig, targetInst, nativeEvent, nativeInst) { 30533 var EventConstructor = this; 30534 30535 if (EventConstructor.eventPool.length) { 30536 var instance = EventConstructor.eventPool.pop(); 30537 EventConstructor.call(instance, dispatchConfig, targetInst, nativeEvent, nativeInst); 30538 return instance; 30539 } 30540 30541 return new EventConstructor(dispatchConfig, targetInst, nativeEvent, nativeInst); 30542} 30543 30544function releasePooledEvent(event) { 30545 var EventConstructor = this; 30546 30547 if (!(event instanceof EventConstructor)) { 30548 { 30549 throw Error( "Trying to release an event instance into a pool of a different type." ); 30550 } 30551 } 30552 30553 event.destructor(); 30554 30555 if (EventConstructor.eventPool.length < EVENT_POOL_SIZE) { 30556 EventConstructor.eventPool.push(event); 30557 } 30558} 30559 30560function addEventPoolingTo(EventConstructor) { 30561 EventConstructor.eventPool = []; 30562 EventConstructor.getPooled = getPooledEvent; 30563 EventConstructor.release = releasePooledEvent; 30564} 30565 30566/** 30567 * @interface Event 30568 * @see http://www.w3.org/TR/DOM-Level-3-Events/#events-compositionevents 30569 */ 30570 30571var SyntheticCompositionEvent = SyntheticEvent.extend({ 30572 data: null 30573}); 30574 30575/** 30576 * @interface Event 30577 * @see http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105 30578 * /#events-inputevents 30579 */ 30580 30581var SyntheticInputEvent = SyntheticEvent.extend({ 30582 data: null 30583}); 30584 30585var END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space 30586 30587var START_KEYCODE = 229; 30588var canUseCompositionEvent = canUseDOM && 'CompositionEvent' in window; 30589var documentMode = null; 30590 30591if (canUseDOM && 'documentMode' in document) { 30592 documentMode = document.documentMode; 30593} // Webkit offers a very useful `textInput` event that can be used to 30594// directly represent `beforeInput`. The IE `textinput` event is not as 30595// useful, so we don't use it. 30596 30597 30598var canUseTextInputEvent = canUseDOM && 'TextEvent' in window && !documentMode; // In IE9+, we have access to composition events, but the data supplied 30599// by the native compositionend event may be incorrect. Japanese ideographic 30600// spaces, for instance (\u3000) are not recorded correctly. 30601 30602var useFallbackCompositionData = canUseDOM && (!canUseCompositionEvent || documentMode && documentMode > 8 && documentMode <= 11); 30603var SPACEBAR_CODE = 32; 30604var SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE); // Events and their corresponding property names. 30605 30606var eventTypes = { 30607 beforeInput: { 30608 phasedRegistrationNames: { 30609 bubbled: 'onBeforeInput', 30610 captured: 'onBeforeInputCapture' 30611 }, 30612 dependencies: [TOP_COMPOSITION_END, TOP_KEY_PRESS, TOP_TEXT_INPUT, TOP_PASTE] 30613 }, 30614 compositionEnd: { 30615 phasedRegistrationNames: { 30616 bubbled: 'onCompositionEnd', 30617 captured: 'onCompositionEndCapture' 30618 }, 30619 dependencies: [TOP_BLUR, TOP_COMPOSITION_END, TOP_KEY_DOWN, TOP_KEY_PRESS, TOP_KEY_UP, TOP_MOUSE_DOWN] 30620 }, 30621 compositionStart: { 30622 phasedRegistrationNames: { 30623 bubbled: 'onCompositionStart', 30624 captured: 'onCompositionStartCapture' 30625 }, 30626 dependencies: [TOP_BLUR, TOP_COMPOSITION_START, TOP_KEY_DOWN, TOP_KEY_PRESS, TOP_KEY_UP, TOP_MOUSE_DOWN] 30627 }, 30628 compositionUpdate: { 30629 phasedRegistrationNames: { 30630 bubbled: 'onCompositionUpdate', 30631 captured: 'onCompositionUpdateCapture' 30632 }, 30633 dependencies: [TOP_BLUR, TOP_COMPOSITION_UPDATE, TOP_KEY_DOWN, TOP_KEY_PRESS, TOP_KEY_UP, TOP_MOUSE_DOWN] 30634 } 30635}; // Track whether we've ever handled a keypress on the space key. 30636 30637var hasSpaceKeypress = false; 30638/** 30639 * Return whether a native keypress event is assumed to be a command. 30640 * This is required because Firefox fires `keypress` events for key commands 30641 * (cut, copy, select-all, etc.) even though no character is inserted. 30642 */ 30643 30644function isKeypressCommand(nativeEvent) { 30645 return (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) && // ctrlKey && altKey is equivalent to AltGr, and is not a command. 30646 !(nativeEvent.ctrlKey && nativeEvent.altKey); 30647} 30648/** 30649 * Translate native top level events into event types. 30650 * 30651 * @param {string} topLevelType 30652 * @return {object} 30653 */ 30654 30655 30656function getCompositionEventType(topLevelType) { 30657 switch (topLevelType) { 30658 case TOP_COMPOSITION_START: 30659 return eventTypes.compositionStart; 30660 30661 case TOP_COMPOSITION_END: 30662 return eventTypes.compositionEnd; 30663 30664 case TOP_COMPOSITION_UPDATE: 30665 return eventTypes.compositionUpdate; 30666 } 30667} 30668/** 30669 * Does our fallback best-guess model think this event signifies that 30670 * composition has begun? 30671 * 30672 * @param {string} topLevelType 30673 * @param {object} nativeEvent 30674 * @return {boolean} 30675 */ 30676 30677 30678function isFallbackCompositionStart(topLevelType, nativeEvent) { 30679 return topLevelType === TOP_KEY_DOWN && nativeEvent.keyCode === START_KEYCODE; 30680} 30681/** 30682 * Does our fallback mode think that this event is the end of composition? 30683 * 30684 * @param {string} topLevelType 30685 * @param {object} nativeEvent 30686 * @return {boolean} 30687 */ 30688 30689 30690function isFallbackCompositionEnd(topLevelType, nativeEvent) { 30691 switch (topLevelType) { 30692 case TOP_KEY_UP: 30693 // Command keys insert or clear IME input. 30694 return END_KEYCODES.indexOf(nativeEvent.keyCode) !== -1; 30695 30696 case TOP_KEY_DOWN: 30697 // Expect IME keyCode on each keydown. If we get any other 30698 // code we must have exited earlier. 30699 return nativeEvent.keyCode !== START_KEYCODE; 30700 30701 case TOP_KEY_PRESS: 30702 case TOP_MOUSE_DOWN: 30703 case TOP_BLUR: 30704 // Events are not possible without cancelling IME. 30705 return true; 30706 30707 default: 30708 return false; 30709 } 30710} 30711/** 30712 * Google Input Tools provides composition data via a CustomEvent, 30713 * with the `data` property populated in the `detail` object. If this 30714 * is available on the event object, use it. If not, this is a plain 30715 * composition event and we have nothing special to extract. 30716 * 30717 * @param {object} nativeEvent 30718 * @return {?string} 30719 */ 30720 30721 30722function getDataFromCustomEvent(nativeEvent) { 30723 var detail = nativeEvent.detail; 30724 30725 if (typeof detail === 'object' && 'data' in detail) { 30726 return detail.data; 30727 } 30728 30729 return null; 30730} 30731/** 30732 * Check if a composition event was triggered by Korean IME. 30733 * Our fallback mode does not work well with IE's Korean IME, 30734 * so just use native composition events when Korean IME is used. 30735 * Although CompositionEvent.locale property is deprecated, 30736 * it is available in IE, where our fallback mode is enabled. 30737 * 30738 * @param {object} nativeEvent 30739 * @return {boolean} 30740 */ 30741 30742 30743function isUsingKoreanIME(nativeEvent) { 30744 return nativeEvent.locale === 'ko'; 30745} // Track the current IME composition status, if any. 30746 30747 30748var isComposing = false; 30749/** 30750 * @return {?object} A SyntheticCompositionEvent. 30751 */ 30752 30753function extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) { 30754 var eventType; 30755 var fallbackData; 30756 30757 if (canUseCompositionEvent) { 30758 eventType = getCompositionEventType(topLevelType); 30759 } else if (!isComposing) { 30760 if (isFallbackCompositionStart(topLevelType, nativeEvent)) { 30761 eventType = eventTypes.compositionStart; 30762 } 30763 } else if (isFallbackCompositionEnd(topLevelType, nativeEvent)) { 30764 eventType = eventTypes.compositionEnd; 30765 } 30766 30767 if (!eventType) { 30768 return null; 30769 } 30770 30771 if (useFallbackCompositionData && !isUsingKoreanIME(nativeEvent)) { 30772 // The current composition is stored statically and must not be 30773 // overwritten while composition continues. 30774 if (!isComposing && eventType === eventTypes.compositionStart) { 30775 isComposing = initialize(nativeEventTarget); 30776 } else if (eventType === eventTypes.compositionEnd) { 30777 if (isComposing) { 30778 fallbackData = getData(); 30779 } 30780 } 30781 } 30782 30783 var event = SyntheticCompositionEvent.getPooled(eventType, targetInst, nativeEvent, nativeEventTarget); 30784 30785 if (fallbackData) { 30786 // Inject data generated from fallback path into the synthetic event. 30787 // This matches the property of native CompositionEventInterface. 30788 event.data = fallbackData; 30789 } else { 30790 var customData = getDataFromCustomEvent(nativeEvent); 30791 30792 if (customData !== null) { 30793 event.data = customData; 30794 } 30795 } 30796 30797 accumulateTwoPhaseDispatches(event); 30798 return event; 30799} 30800/** 30801 * @param {TopLevelType} topLevelType Number from `TopLevelType`. 30802 * @param {object} nativeEvent Native browser event. 30803 * @return {?string} The string corresponding to this `beforeInput` event. 30804 */ 30805 30806 30807function getNativeBeforeInputChars(topLevelType, nativeEvent) { 30808 switch (topLevelType) { 30809 case TOP_COMPOSITION_END: 30810 return getDataFromCustomEvent(nativeEvent); 30811 30812 case TOP_KEY_PRESS: 30813 /** 30814 * If native `textInput` events are available, our goal is to make 30815 * use of them. However, there is a special case: the spacebar key. 30816 * In Webkit, preventing default on a spacebar `textInput` event 30817 * cancels character insertion, but it *also* causes the browser 30818 * to fall back to its default spacebar behavior of scrolling the 30819 * page. 30820 * 30821 * Tracking at: 30822 * https://code.google.com/p/chromium/issues/detail?id=355103 30823 * 30824 * To avoid this issue, use the keypress event as if no `textInput` 30825 * event is available. 30826 */ 30827 var which = nativeEvent.which; 30828 30829 if (which !== SPACEBAR_CODE) { 30830 return null; 30831 } 30832 30833 hasSpaceKeypress = true; 30834 return SPACEBAR_CHAR; 30835 30836 case TOP_TEXT_INPUT: 30837 // Record the characters to be added to the DOM. 30838 var chars = nativeEvent.data; // If it's a spacebar character, assume that we have already handled 30839 // it at the keypress level and bail immediately. Android Chrome 30840 // doesn't give us keycodes, so we need to ignore it. 30841 30842 if (chars === SPACEBAR_CHAR && hasSpaceKeypress) { 30843 return null; 30844 } 30845 30846 return chars; 30847 30848 default: 30849 // For other native event types, do nothing. 30850 return null; 30851 } 30852} 30853/** 30854 * For browsers that do not provide the `textInput` event, extract the 30855 * appropriate string to use for SyntheticInputEvent. 30856 * 30857 * @param {number} topLevelType Number from `TopLevelEventTypes`. 30858 * @param {object} nativeEvent Native browser event. 30859 * @return {?string} The fallback string for this `beforeInput` event. 30860 */ 30861 30862 30863function getFallbackBeforeInputChars(topLevelType, nativeEvent) { 30864 // If we are currently composing (IME) and using a fallback to do so, 30865 // try to extract the composed characters from the fallback object. 30866 // If composition event is available, we extract a string only at 30867 // compositionevent, otherwise extract it at fallback events. 30868 if (isComposing) { 30869 if (topLevelType === TOP_COMPOSITION_END || !canUseCompositionEvent && isFallbackCompositionEnd(topLevelType, nativeEvent)) { 30870 var chars = getData(); 30871 reset(); 30872 isComposing = false; 30873 return chars; 30874 } 30875 30876 return null; 30877 } 30878 30879 switch (topLevelType) { 30880 case TOP_PASTE: 30881 // If a paste event occurs after a keypress, throw out the input 30882 // chars. Paste events should not lead to BeforeInput events. 30883 return null; 30884 30885 case TOP_KEY_PRESS: 30886 /** 30887 * As of v27, Firefox may fire keypress events even when no character 30888 * will be inserted. A few possibilities: 30889 * 30890 * - `which` is `0`. Arrow keys, Esc key, etc. 30891 * 30892 * - `which` is the pressed key code, but no char is available. 30893 * Ex: 'AltGr + d` in Polish. There is no modified character for 30894 * this key combination and no character is inserted into the 30895 * document, but FF fires the keypress for char code `100` anyway. 30896 * No `input` event will occur. 30897 * 30898 * - `which` is the pressed key code, but a command combination is 30899 * being used. Ex: `Cmd+C`. No character is inserted, and no 30900 * `input` event will occur. 30901 */ 30902 if (!isKeypressCommand(nativeEvent)) { 30903 // IE fires the `keypress` event when a user types an emoji via 30904 // Touch keyboard of Windows. In such a case, the `char` property 30905 // holds an emoji character like `\uD83D\uDE0A`. Because its length 30906 // is 2, the property `which` does not represent an emoji correctly. 30907 // In such a case, we directly return the `char` property instead of 30908 // using `which`. 30909 if (nativeEvent.char && nativeEvent.char.length > 1) { 30910 return nativeEvent.char; 30911 } else if (nativeEvent.which) { 30912 return String.fromCharCode(nativeEvent.which); 30913 } 30914 } 30915 30916 return null; 30917 30918 case TOP_COMPOSITION_END: 30919 return useFallbackCompositionData && !isUsingKoreanIME(nativeEvent) ? null : nativeEvent.data; 30920 30921 default: 30922 return null; 30923 } 30924} 30925/** 30926 * Extract a SyntheticInputEvent for `beforeInput`, based on either native 30927 * `textInput` or fallback behavior. 30928 * 30929 * @return {?object} A SyntheticInputEvent. 30930 */ 30931 30932 30933function extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget) { 30934 var chars; 30935 30936 if (canUseTextInputEvent) { 30937 chars = getNativeBeforeInputChars(topLevelType, nativeEvent); 30938 } else { 30939 chars = getFallbackBeforeInputChars(topLevelType, nativeEvent); 30940 } // If no characters are being inserted, no BeforeInput event should 30941 // be fired. 30942 30943 30944 if (!chars) { 30945 return null; 30946 } 30947 30948 var event = SyntheticInputEvent.getPooled(eventTypes.beforeInput, targetInst, nativeEvent, nativeEventTarget); 30949 event.data = chars; 30950 accumulateTwoPhaseDispatches(event); 30951 return event; 30952} 30953/** 30954 * Create an `onBeforeInput` event to match 30955 * http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105/#events-inputevents. 30956 * 30957 * This event plugin is based on the native `textInput` event 30958 * available in Chrome, Safari, Opera, and IE. This event fires after 30959 * `onKeyPress` and `onCompositionEnd`, but before `onInput`. 30960 * 30961 * `beforeInput` is spec'd but not implemented in any browsers, and 30962 * the `input` event does not provide any useful information about what has 30963 * actually been added, contrary to the spec. Thus, `textInput` is the best 30964 * available event to identify the characters that have actually been inserted 30965 * into the target node. 30966 * 30967 * This plugin is also responsible for emitting `composition` events, thus 30968 * allowing us to share composition fallback code for both `beforeInput` and 30969 * `composition` event types. 30970 */ 30971 30972 30973var BeforeInputEventPlugin = { 30974 eventTypes: eventTypes, 30975 extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags) { 30976 var composition = extractCompositionEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget); 30977 var beforeInput = extractBeforeInputEvent(topLevelType, targetInst, nativeEvent, nativeEventTarget); 30978 30979 if (composition === null) { 30980 return beforeInput; 30981 } 30982 30983 if (beforeInput === null) { 30984 return composition; 30985 } 30986 30987 return [composition, beforeInput]; 30988 } 30989}; 30990 30991/** 30992 * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary 30993 */ 30994var supportedInputTypes = { 30995 color: true, 30996 date: true, 30997 datetime: true, 30998 'datetime-local': true, 30999 email: true, 31000 month: true, 31001 number: true, 31002 password: true, 31003 range: true, 31004 search: true, 31005 tel: true, 31006 text: true, 31007 time: true, 31008 url: true, 31009 week: true 31010}; 31011 31012function isTextInputElement(elem) { 31013 var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase(); 31014 31015 if (nodeName === 'input') { 31016 return !!supportedInputTypes[elem.type]; 31017 } 31018 31019 if (nodeName === 'textarea') { 31020 return true; 31021 } 31022 31023 return false; 31024} 31025 31026var eventTypes$1 = { 31027 change: { 31028 phasedRegistrationNames: { 31029 bubbled: 'onChange', 31030 captured: 'onChangeCapture' 31031 }, 31032 dependencies: [TOP_BLUR, TOP_CHANGE, TOP_CLICK, TOP_FOCUS, TOP_INPUT, TOP_KEY_DOWN, TOP_KEY_UP, TOP_SELECTION_CHANGE] 31033 } 31034}; 31035 31036function createAndAccumulateChangeEvent(inst, nativeEvent, target) { 31037 var event = SyntheticEvent.getPooled(eventTypes$1.change, inst, nativeEvent, target); 31038 event.type = 'change'; // Flag this event loop as needing state restore. 31039 31040 enqueueStateRestore(target); 31041 accumulateTwoPhaseDispatches(event); 31042 return event; 31043} 31044/** 31045 * For IE shims 31046 */ 31047 31048 31049var activeElement = null; 31050var activeElementInst = null; 31051/** 31052 * SECTION: handle `change` event 31053 */ 31054 31055function shouldUseChangeEvent(elem) { 31056 var nodeName = elem.nodeName && elem.nodeName.toLowerCase(); 31057 return nodeName === 'select' || nodeName === 'input' && elem.type === 'file'; 31058} 31059 31060function manualDispatchChangeEvent(nativeEvent) { 31061 var event = createAndAccumulateChangeEvent(activeElementInst, nativeEvent, getEventTarget(nativeEvent)); // If change and propertychange bubbled, we'd just bind to it like all the 31062 // other events and have it go through ReactBrowserEventEmitter. Since it 31063 // doesn't, we manually listen for the events and so we have to enqueue and 31064 // process the abstract event manually. 31065 // 31066 // Batching is necessary here in order to ensure that all event handlers run 31067 // before the next rerender (including event handlers attached to ancestor 31068 // elements instead of directly on the input). Without this, controlled 31069 // components don't work properly in conjunction with event bubbling because 31070 // the component is rerendered and the value reverted before all the event 31071 // handlers can run. See https://github.com/facebook/react/issues/708. 31072 31073 batchedUpdates(runEventInBatch, event); 31074} 31075 31076function runEventInBatch(event) { 31077 runEventsInBatch(event); 31078} 31079 31080function getInstIfValueChanged(targetInst) { 31081 var targetNode = getNodeFromInstance$1(targetInst); 31082 31083 if (updateValueIfChanged(targetNode)) { 31084 return targetInst; 31085 } 31086} 31087 31088function getTargetInstForChangeEvent(topLevelType, targetInst) { 31089 if (topLevelType === TOP_CHANGE) { 31090 return targetInst; 31091 } 31092} 31093/** 31094 * SECTION: handle `input` event 31095 */ 31096 31097 31098var isInputEventSupported = false; 31099 31100if (canUseDOM) { 31101 // IE9 claims to support the input event but fails to trigger it when 31102 // deleting text, so we ignore its input events. 31103 isInputEventSupported = isEventSupported('input') && (!document.documentMode || document.documentMode > 9); 31104} 31105/** 31106 * (For IE <=9) Starts tracking propertychange events on the passed-in element 31107 * and override the value property so that we can distinguish user events from 31108 * value changes in JS. 31109 */ 31110 31111 31112function startWatchingForValueChange(target, targetInst) { 31113 activeElement = target; 31114 activeElementInst = targetInst; 31115 activeElement.attachEvent('onpropertychange', handlePropertyChange); 31116} 31117/** 31118 * (For IE <=9) Removes the event listeners from the currently-tracked element, 31119 * if any exists. 31120 */ 31121 31122 31123function stopWatchingForValueChange() { 31124 if (!activeElement) { 31125 return; 31126 } 31127 31128 activeElement.detachEvent('onpropertychange', handlePropertyChange); 31129 activeElement = null; 31130 activeElementInst = null; 31131} 31132/** 31133 * (For IE <=9) Handles a propertychange event, sending a `change` event if 31134 * the value of the active element has changed. 31135 */ 31136 31137 31138function handlePropertyChange(nativeEvent) { 31139 if (nativeEvent.propertyName !== 'value') { 31140 return; 31141 } 31142 31143 if (getInstIfValueChanged(activeElementInst)) { 31144 manualDispatchChangeEvent(nativeEvent); 31145 } 31146} 31147 31148function handleEventsForInputEventPolyfill(topLevelType, target, targetInst) { 31149 if (topLevelType === TOP_FOCUS) { 31150 // In IE9, propertychange fires for most input events but is buggy and 31151 // doesn't fire when text is deleted, but conveniently, selectionchange 31152 // appears to fire in all of the remaining cases so we catch those and 31153 // forward the event if the value has changed 31154 // In either case, we don't want to call the event handler if the value 31155 // is changed from JS so we redefine a setter for `.value` that updates 31156 // our activeElementValue variable, allowing us to ignore those changes 31157 // 31158 // stopWatching() should be a noop here but we call it just in case we 31159 // missed a blur event somehow. 31160 stopWatchingForValueChange(); 31161 startWatchingForValueChange(target, targetInst); 31162 } else if (topLevelType === TOP_BLUR) { 31163 stopWatchingForValueChange(); 31164 } 31165} // For IE8 and IE9. 31166 31167 31168function getTargetInstForInputEventPolyfill(topLevelType, targetInst) { 31169 if (topLevelType === TOP_SELECTION_CHANGE || topLevelType === TOP_KEY_UP || topLevelType === TOP_KEY_DOWN) { 31170 // On the selectionchange event, the target is just document which isn't 31171 // helpful for us so just check activeElement instead. 31172 // 31173 // 99% of the time, keydown and keyup aren't necessary. IE8 fails to fire 31174 // propertychange on the first input event after setting `value` from a 31175 // script and fires only keydown, keypress, keyup. Catching keyup usually 31176 // gets it and catching keydown lets us fire an event for the first 31177 // keystroke if user does a key repeat (it'll be a little delayed: right 31178 // before the second keystroke). Other input methods (e.g., paste) seem to 31179 // fire selectionchange normally. 31180 return getInstIfValueChanged(activeElementInst); 31181 } 31182} 31183/** 31184 * SECTION: handle `click` event 31185 */ 31186 31187 31188function shouldUseClickEvent(elem) { 31189 // Use the `click` event to detect changes to checkbox and radio inputs. 31190 // This approach works across all browsers, whereas `change` does not fire 31191 // until `blur` in IE8. 31192 var nodeName = elem.nodeName; 31193 return nodeName && nodeName.toLowerCase() === 'input' && (elem.type === 'checkbox' || elem.type === 'radio'); 31194} 31195 31196function getTargetInstForClickEvent(topLevelType, targetInst) { 31197 if (topLevelType === TOP_CLICK) { 31198 return getInstIfValueChanged(targetInst); 31199 } 31200} 31201 31202function getTargetInstForInputOrChangeEvent(topLevelType, targetInst) { 31203 if (topLevelType === TOP_INPUT || topLevelType === TOP_CHANGE) { 31204 return getInstIfValueChanged(targetInst); 31205 } 31206} 31207 31208function handleControlledInputBlur(node) { 31209 var state = node._wrapperState; 31210 31211 if (!state || !state.controlled || node.type !== 'number') { 31212 return; 31213 } 31214 31215 { 31216 // If controlled, assign the value attribute to the current value on blur 31217 setDefaultValue(node, 'number', node.value); 31218 } 31219} 31220/** 31221 * This plugin creates an `onChange` event that normalizes change events 31222 * across form elements. This event fires at a time when it's possible to 31223 * change the element's value without seeing a flicker. 31224 * 31225 * Supported elements are: 31226 * - input (see `isTextInputElement`) 31227 * - textarea 31228 * - select 31229 */ 31230 31231 31232var ChangeEventPlugin = { 31233 eventTypes: eventTypes$1, 31234 _isInputEventSupported: isInputEventSupported, 31235 extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags) { 31236 var targetNode = targetInst ? getNodeFromInstance$1(targetInst) : window; 31237 var getTargetInstFunc, handleEventFunc; 31238 31239 if (shouldUseChangeEvent(targetNode)) { 31240 getTargetInstFunc = getTargetInstForChangeEvent; 31241 } else if (isTextInputElement(targetNode)) { 31242 if (isInputEventSupported) { 31243 getTargetInstFunc = getTargetInstForInputOrChangeEvent; 31244 } else { 31245 getTargetInstFunc = getTargetInstForInputEventPolyfill; 31246 handleEventFunc = handleEventsForInputEventPolyfill; 31247 } 31248 } else if (shouldUseClickEvent(targetNode)) { 31249 getTargetInstFunc = getTargetInstForClickEvent; 31250 } 31251 31252 if (getTargetInstFunc) { 31253 var inst = getTargetInstFunc(topLevelType, targetInst); 31254 31255 if (inst) { 31256 var event = createAndAccumulateChangeEvent(inst, nativeEvent, nativeEventTarget); 31257 return event; 31258 } 31259 } 31260 31261 if (handleEventFunc) { 31262 handleEventFunc(topLevelType, targetNode, targetInst); 31263 } // When blurring, set the value attribute for number inputs 31264 31265 31266 if (topLevelType === TOP_BLUR) { 31267 handleControlledInputBlur(targetNode); 31268 } 31269 } 31270}; 31271 31272var SyntheticUIEvent = SyntheticEvent.extend({ 31273 view: null, 31274 detail: null 31275}); 31276 31277/** 31278 * Translation from modifier key to the associated property in the event. 31279 * @see http://www.w3.org/TR/DOM-Level-3-Events/#keys-Modifiers 31280 */ 31281var modifierKeyToProp = { 31282 Alt: 'altKey', 31283 Control: 'ctrlKey', 31284 Meta: 'metaKey', 31285 Shift: 'shiftKey' 31286}; // Older browsers (Safari <= 10, iOS Safari <= 10.2) do not support 31287// getModifierState. If getModifierState is not supported, we map it to a set of 31288// modifier keys exposed by the event. In this case, Lock-keys are not supported. 31289 31290function modifierStateGetter(keyArg) { 31291 var syntheticEvent = this; 31292 var nativeEvent = syntheticEvent.nativeEvent; 31293 31294 if (nativeEvent.getModifierState) { 31295 return nativeEvent.getModifierState(keyArg); 31296 } 31297 31298 var keyProp = modifierKeyToProp[keyArg]; 31299 return keyProp ? !!nativeEvent[keyProp] : false; 31300} 31301 31302function getEventModifierState(nativeEvent) { 31303 return modifierStateGetter; 31304} 31305 31306var previousScreenX = 0; 31307var previousScreenY = 0; // Use flags to signal movementX/Y has already been set 31308 31309var isMovementXSet = false; 31310var isMovementYSet = false; 31311/** 31312 * @interface MouseEvent 31313 * @see http://www.w3.org/TR/DOM-Level-3-Events/ 31314 */ 31315 31316var SyntheticMouseEvent = SyntheticUIEvent.extend({ 31317 screenX: null, 31318 screenY: null, 31319 clientX: null, 31320 clientY: null, 31321 pageX: null, 31322 pageY: null, 31323 ctrlKey: null, 31324 shiftKey: null, 31325 altKey: null, 31326 metaKey: null, 31327 getModifierState: getEventModifierState, 31328 button: null, 31329 buttons: null, 31330 relatedTarget: function (event) { 31331 return event.relatedTarget || (event.fromElement === event.srcElement ? event.toElement : event.fromElement); 31332 }, 31333 movementX: function (event) { 31334 if ('movementX' in event) { 31335 return event.movementX; 31336 } 31337 31338 var screenX = previousScreenX; 31339 previousScreenX = event.screenX; 31340 31341 if (!isMovementXSet) { 31342 isMovementXSet = true; 31343 return 0; 31344 } 31345 31346 return event.type === 'mousemove' ? event.screenX - screenX : 0; 31347 }, 31348 movementY: function (event) { 31349 if ('movementY' in event) { 31350 return event.movementY; 31351 } 31352 31353 var screenY = previousScreenY; 31354 previousScreenY = event.screenY; 31355 31356 if (!isMovementYSet) { 31357 isMovementYSet = true; 31358 return 0; 31359 } 31360 31361 return event.type === 'mousemove' ? event.screenY - screenY : 0; 31362 } 31363}); 31364 31365/** 31366 * @interface PointerEvent 31367 * @see http://www.w3.org/TR/pointerevents/ 31368 */ 31369 31370var SyntheticPointerEvent = SyntheticMouseEvent.extend({ 31371 pointerId: null, 31372 width: null, 31373 height: null, 31374 pressure: null, 31375 tangentialPressure: null, 31376 tiltX: null, 31377 tiltY: null, 31378 twist: null, 31379 pointerType: null, 31380 isPrimary: null 31381}); 31382 31383var eventTypes$2 = { 31384 mouseEnter: { 31385 registrationName: 'onMouseEnter', 31386 dependencies: [TOP_MOUSE_OUT, TOP_MOUSE_OVER] 31387 }, 31388 mouseLeave: { 31389 registrationName: 'onMouseLeave', 31390 dependencies: [TOP_MOUSE_OUT, TOP_MOUSE_OVER] 31391 }, 31392 pointerEnter: { 31393 registrationName: 'onPointerEnter', 31394 dependencies: [TOP_POINTER_OUT, TOP_POINTER_OVER] 31395 }, 31396 pointerLeave: { 31397 registrationName: 'onPointerLeave', 31398 dependencies: [TOP_POINTER_OUT, TOP_POINTER_OVER] 31399 } 31400}; 31401var EnterLeaveEventPlugin = { 31402 eventTypes: eventTypes$2, 31403 31404 /** 31405 * For almost every interaction we care about, there will be both a top-level 31406 * `mouseover` and `mouseout` event that occurs. Only use `mouseout` so that 31407 * we do not extract duplicate events. However, moving the mouse into the 31408 * browser from outside will not fire a `mouseout` event. In this case, we use 31409 * the `mouseover` top-level event. 31410 */ 31411 extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags) { 31412 var isOverEvent = topLevelType === TOP_MOUSE_OVER || topLevelType === TOP_POINTER_OVER; 31413 var isOutEvent = topLevelType === TOP_MOUSE_OUT || topLevelType === TOP_POINTER_OUT; 31414 31415 if (isOverEvent && (eventSystemFlags & IS_REPLAYED) === 0 && (nativeEvent.relatedTarget || nativeEvent.fromElement)) { 31416 // If this is an over event with a target, then we've already dispatched 31417 // the event in the out event of the other target. If this is replayed, 31418 // then it's because we couldn't dispatch against this target previously 31419 // so we have to do it now instead. 31420 return null; 31421 } 31422 31423 if (!isOutEvent && !isOverEvent) { 31424 // Must not be a mouse or pointer in or out - ignoring. 31425 return null; 31426 } 31427 31428 var win; 31429 31430 if (nativeEventTarget.window === nativeEventTarget) { 31431 // `nativeEventTarget` is probably a window object. 31432 win = nativeEventTarget; 31433 } else { 31434 // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8. 31435 var doc = nativeEventTarget.ownerDocument; 31436 31437 if (doc) { 31438 win = doc.defaultView || doc.parentWindow; 31439 } else { 31440 win = window; 31441 } 31442 } 31443 31444 var from; 31445 var to; 31446 31447 if (isOutEvent) { 31448 from = targetInst; 31449 var related = nativeEvent.relatedTarget || nativeEvent.toElement; 31450 to = related ? getClosestInstanceFromNode(related) : null; 31451 31452 if (to !== null) { 31453 var nearestMounted = getNearestMountedFiber(to); 31454 31455 if (to !== nearestMounted || to.tag !== HostComponent && to.tag !== HostText) { 31456 to = null; 31457 } 31458 } 31459 } else { 31460 // Moving to a node from outside the window. 31461 from = null; 31462 to = targetInst; 31463 } 31464 31465 if (from === to) { 31466 // Nothing pertains to our managed components. 31467 return null; 31468 } 31469 31470 var eventInterface, leaveEventType, enterEventType, eventTypePrefix; 31471 31472 if (topLevelType === TOP_MOUSE_OUT || topLevelType === TOP_MOUSE_OVER) { 31473 eventInterface = SyntheticMouseEvent; 31474 leaveEventType = eventTypes$2.mouseLeave; 31475 enterEventType = eventTypes$2.mouseEnter; 31476 eventTypePrefix = 'mouse'; 31477 } else if (topLevelType === TOP_POINTER_OUT || topLevelType === TOP_POINTER_OVER) { 31478 eventInterface = SyntheticPointerEvent; 31479 leaveEventType = eventTypes$2.pointerLeave; 31480 enterEventType = eventTypes$2.pointerEnter; 31481 eventTypePrefix = 'pointer'; 31482 } 31483 31484 var fromNode = from == null ? win : getNodeFromInstance$1(from); 31485 var toNode = to == null ? win : getNodeFromInstance$1(to); 31486 var leave = eventInterface.getPooled(leaveEventType, from, nativeEvent, nativeEventTarget); 31487 leave.type = eventTypePrefix + 'leave'; 31488 leave.target = fromNode; 31489 leave.relatedTarget = toNode; 31490 var enter = eventInterface.getPooled(enterEventType, to, nativeEvent, nativeEventTarget); 31491 enter.type = eventTypePrefix + 'enter'; 31492 enter.target = toNode; 31493 enter.relatedTarget = fromNode; 31494 accumulateEnterLeaveDispatches(leave, enter, from, to); // If we are not processing the first ancestor, then we 31495 // should not process the same nativeEvent again, as we 31496 // will have already processed it in the first ancestor. 31497 31498 if ((eventSystemFlags & IS_FIRST_ANCESTOR) === 0) { 31499 return [leave]; 31500 } 31501 31502 return [leave, enter]; 31503 } 31504}; 31505 31506/** 31507 * inlined Object.is polyfill to avoid requiring consumers ship their own 31508 * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is 31509 */ 31510function is(x, y) { 31511 return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y // eslint-disable-line no-self-compare 31512 ; 31513} 31514 31515var objectIs = typeof Object.is === 'function' ? Object.is : is; 31516 31517var hasOwnProperty$2 = Object.prototype.hasOwnProperty; 31518/** 31519 * Performs equality by iterating through keys on an object and returning false 31520 * when any key has values which are not strictly equal between the arguments. 31521 * Returns true when the values of all keys are strictly equal. 31522 */ 31523 31524function shallowEqual(objA, objB) { 31525 if (objectIs(objA, objB)) { 31526 return true; 31527 } 31528 31529 if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) { 31530 return false; 31531 } 31532 31533 var keysA = Object.keys(objA); 31534 var keysB = Object.keys(objB); 31535 31536 if (keysA.length !== keysB.length) { 31537 return false; 31538 } // Test for A's keys different from B. 31539 31540 31541 for (var i = 0; i < keysA.length; i++) { 31542 if (!hasOwnProperty$2.call(objB, keysA[i]) || !objectIs(objA[keysA[i]], objB[keysA[i]])) { 31543 return false; 31544 } 31545 } 31546 31547 return true; 31548} 31549 31550var skipSelectionChangeEvent = canUseDOM && 'documentMode' in document && document.documentMode <= 11; 31551var eventTypes$3 = { 31552 select: { 31553 phasedRegistrationNames: { 31554 bubbled: 'onSelect', 31555 captured: 'onSelectCapture' 31556 }, 31557 dependencies: [TOP_BLUR, TOP_CONTEXT_MENU, TOP_DRAG_END, TOP_FOCUS, TOP_KEY_DOWN, TOP_KEY_UP, TOP_MOUSE_DOWN, TOP_MOUSE_UP, TOP_SELECTION_CHANGE] 31558 } 31559}; 31560var activeElement$1 = null; 31561var activeElementInst$1 = null; 31562var lastSelection = null; 31563var mouseDown = false; 31564/** 31565 * Get an object which is a unique representation of the current selection. 31566 * 31567 * The return value will not be consistent across nodes or browsers, but 31568 * two identical selections on the same node will return identical objects. 31569 * 31570 * @param {DOMElement} node 31571 * @return {object} 31572 */ 31573 31574function getSelection$1(node) { 31575 if ('selectionStart' in node && hasSelectionCapabilities(node)) { 31576 return { 31577 start: node.selectionStart, 31578 end: node.selectionEnd 31579 }; 31580 } else { 31581 var win = node.ownerDocument && node.ownerDocument.defaultView || window; 31582 var selection = win.getSelection(); 31583 return { 31584 anchorNode: selection.anchorNode, 31585 anchorOffset: selection.anchorOffset, 31586 focusNode: selection.focusNode, 31587 focusOffset: selection.focusOffset 31588 }; 31589 } 31590} 31591/** 31592 * Get document associated with the event target. 31593 * 31594 * @param {object} nativeEventTarget 31595 * @return {Document} 31596 */ 31597 31598 31599function getEventTargetDocument(eventTarget) { 31600 return eventTarget.window === eventTarget ? eventTarget.document : eventTarget.nodeType === DOCUMENT_NODE ? eventTarget : eventTarget.ownerDocument; 31601} 31602/** 31603 * Poll selection to see whether it's changed. 31604 * 31605 * @param {object} nativeEvent 31606 * @param {object} nativeEventTarget 31607 * @return {?SyntheticEvent} 31608 */ 31609 31610 31611function constructSelectEvent(nativeEvent, nativeEventTarget) { 31612 // Ensure we have the right element, and that the user is not dragging a 31613 // selection (this matches native `select` event behavior). In HTML5, select 31614 // fires only on input and textarea thus if there's no focused element we 31615 // won't dispatch. 31616 var doc = getEventTargetDocument(nativeEventTarget); 31617 31618 if (mouseDown || activeElement$1 == null || activeElement$1 !== getActiveElement(doc)) { 31619 return null; 31620 } // Only fire when selection has actually changed. 31621 31622 31623 var currentSelection = getSelection$1(activeElement$1); 31624 31625 if (!lastSelection || !shallowEqual(lastSelection, currentSelection)) { 31626 lastSelection = currentSelection; 31627 var syntheticEvent = SyntheticEvent.getPooled(eventTypes$3.select, activeElementInst$1, nativeEvent, nativeEventTarget); 31628 syntheticEvent.type = 'select'; 31629 syntheticEvent.target = activeElement$1; 31630 accumulateTwoPhaseDispatches(syntheticEvent); 31631 return syntheticEvent; 31632 } 31633 31634 return null; 31635} 31636/** 31637 * This plugin creates an `onSelect` event that normalizes select events 31638 * across form elements. 31639 * 31640 * Supported elements are: 31641 * - input (see `isTextInputElement`) 31642 * - textarea 31643 * - contentEditable 31644 * 31645 * This differs from native browser implementations in the following ways: 31646 * - Fires on contentEditable fields as well as inputs. 31647 * - Fires for collapsed selection. 31648 * - Fires after user input. 31649 */ 31650 31651 31652var SelectEventPlugin = { 31653 eventTypes: eventTypes$3, 31654 extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, container) { 31655 var containerOrDoc = container || getEventTargetDocument(nativeEventTarget); // Track whether all listeners exists for this plugin. If none exist, we do 31656 // not extract events. See #3639. 31657 31658 if (!containerOrDoc || !isListeningToAllDependencies('onSelect', containerOrDoc)) { 31659 return null; 31660 } 31661 31662 var targetNode = targetInst ? getNodeFromInstance$1(targetInst) : window; 31663 31664 switch (topLevelType) { 31665 // Track the input node that has focus. 31666 case TOP_FOCUS: 31667 if (isTextInputElement(targetNode) || targetNode.contentEditable === 'true') { 31668 activeElement$1 = targetNode; 31669 activeElementInst$1 = targetInst; 31670 lastSelection = null; 31671 } 31672 31673 break; 31674 31675 case TOP_BLUR: 31676 activeElement$1 = null; 31677 activeElementInst$1 = null; 31678 lastSelection = null; 31679 break; 31680 // Don't fire the event while the user is dragging. This matches the 31681 // semantics of the native select event. 31682 31683 case TOP_MOUSE_DOWN: 31684 mouseDown = true; 31685 break; 31686 31687 case TOP_CONTEXT_MENU: 31688 case TOP_MOUSE_UP: 31689 case TOP_DRAG_END: 31690 mouseDown = false; 31691 return constructSelectEvent(nativeEvent, nativeEventTarget); 31692 // Chrome and IE fire non-standard event when selection is changed (and 31693 // sometimes when it hasn't). IE's event fires out of order with respect 31694 // to key and input events on deletion, so we discard it. 31695 // 31696 // Firefox doesn't support selectionchange, so check selection status 31697 // after each key entry. The selection changes after keydown and before 31698 // keyup, but we check on keydown as well in the case of holding down a 31699 // key, when multiple keydown events are fired but only one keyup is. 31700 // This is also our approach for IE handling, for the reason above. 31701 31702 case TOP_SELECTION_CHANGE: 31703 if (skipSelectionChangeEvent) { 31704 break; 31705 } 31706 31707 // falls through 31708 31709 case TOP_KEY_DOWN: 31710 case TOP_KEY_UP: 31711 return constructSelectEvent(nativeEvent, nativeEventTarget); 31712 } 31713 31714 return null; 31715 } 31716}; 31717 31718/** 31719 * @interface Event 31720 * @see http://www.w3.org/TR/css3-animations/#AnimationEvent-interface 31721 * @see https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent 31722 */ 31723 31724var SyntheticAnimationEvent = SyntheticEvent.extend({ 31725 animationName: null, 31726 elapsedTime: null, 31727 pseudoElement: null 31728}); 31729 31730/** 31731 * @interface Event 31732 * @see http://www.w3.org/TR/clipboard-apis/ 31733 */ 31734 31735var SyntheticClipboardEvent = SyntheticEvent.extend({ 31736 clipboardData: function (event) { 31737 return 'clipboardData' in event ? event.clipboardData : window.clipboardData; 31738 } 31739}); 31740 31741/** 31742 * @interface FocusEvent 31743 * @see http://www.w3.org/TR/DOM-Level-3-Events/ 31744 */ 31745 31746var SyntheticFocusEvent = SyntheticUIEvent.extend({ 31747 relatedTarget: null 31748}); 31749 31750/** 31751 * `charCode` represents the actual "character code" and is safe to use with 31752 * `String.fromCharCode`. As such, only keys that correspond to printable 31753 * characters produce a valid `charCode`, the only exception to this is Enter. 31754 * The Tab-key is considered non-printable and does not have a `charCode`, 31755 * presumably because it does not produce a tab-character in browsers. 31756 * 31757 * @param {object} nativeEvent Native browser event. 31758 * @return {number} Normalized `charCode` property. 31759 */ 31760function getEventCharCode(nativeEvent) { 31761 var charCode; 31762 var keyCode = nativeEvent.keyCode; 31763 31764 if ('charCode' in nativeEvent) { 31765 charCode = nativeEvent.charCode; // FF does not set `charCode` for the Enter-key, check against `keyCode`. 31766 31767 if (charCode === 0 && keyCode === 13) { 31768 charCode = 13; 31769 } 31770 } else { 31771 // IE8 does not implement `charCode`, but `keyCode` has the correct value. 31772 charCode = keyCode; 31773 } // IE and Edge (on Windows) and Chrome / Safari (on Windows and Linux) 31774 // report Enter as charCode 10 when ctrl is pressed. 31775 31776 31777 if (charCode === 10) { 31778 charCode = 13; 31779 } // Some non-printable keys are reported in `charCode`/`keyCode`, discard them. 31780 // Must not discard the (non-)printable Enter-key. 31781 31782 31783 if (charCode >= 32 || charCode === 13) { 31784 return charCode; 31785 } 31786 31787 return 0; 31788} 31789 31790/** 31791 * Normalization of deprecated HTML5 `key` values 31792 * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names 31793 */ 31794 31795var normalizeKey = { 31796 Esc: 'Escape', 31797 Spacebar: ' ', 31798 Left: 'ArrowLeft', 31799 Up: 'ArrowUp', 31800 Right: 'ArrowRight', 31801 Down: 'ArrowDown', 31802 Del: 'Delete', 31803 Win: 'OS', 31804 Menu: 'ContextMenu', 31805 Apps: 'ContextMenu', 31806 Scroll: 'ScrollLock', 31807 MozPrintableKey: 'Unidentified' 31808}; 31809/** 31810 * Translation from legacy `keyCode` to HTML5 `key` 31811 * Only special keys supported, all others depend on keyboard layout or browser 31812 * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names 31813 */ 31814 31815var translateToKey = { 31816 '8': 'Backspace', 31817 '9': 'Tab', 31818 '12': 'Clear', 31819 '13': 'Enter', 31820 '16': 'Shift', 31821 '17': 'Control', 31822 '18': 'Alt', 31823 '19': 'Pause', 31824 '20': 'CapsLock', 31825 '27': 'Escape', 31826 '32': ' ', 31827 '33': 'PageUp', 31828 '34': 'PageDown', 31829 '35': 'End', 31830 '36': 'Home', 31831 '37': 'ArrowLeft', 31832 '38': 'ArrowUp', 31833 '39': 'ArrowRight', 31834 '40': 'ArrowDown', 31835 '45': 'Insert', 31836 '46': 'Delete', 31837 '112': 'F1', 31838 '113': 'F2', 31839 '114': 'F3', 31840 '115': 'F4', 31841 '116': 'F5', 31842 '117': 'F6', 31843 '118': 'F7', 31844 '119': 'F8', 31845 '120': 'F9', 31846 '121': 'F10', 31847 '122': 'F11', 31848 '123': 'F12', 31849 '144': 'NumLock', 31850 '145': 'ScrollLock', 31851 '224': 'Meta' 31852}; 31853/** 31854 * @param {object} nativeEvent Native browser event. 31855 * @return {string} Normalized `key` property. 31856 */ 31857 31858function getEventKey(nativeEvent) { 31859 if (nativeEvent.key) { 31860 // Normalize inconsistent values reported by browsers due to 31861 // implementations of a working draft specification. 31862 // FireFox implements `key` but returns `MozPrintableKey` for all 31863 // printable characters (normalized to `Unidentified`), ignore it. 31864 var key = normalizeKey[nativeEvent.key] || nativeEvent.key; 31865 31866 if (key !== 'Unidentified') { 31867 return key; 31868 } 31869 } // Browser does not implement `key`, polyfill as much of it as we can. 31870 31871 31872 if (nativeEvent.type === 'keypress') { 31873 var charCode = getEventCharCode(nativeEvent); // The enter-key is technically both printable and non-printable and can 31874 // thus be captured by `keypress`, no other non-printable key should. 31875 31876 return charCode === 13 ? 'Enter' : String.fromCharCode(charCode); 31877 } 31878 31879 if (nativeEvent.type === 'keydown' || nativeEvent.type === 'keyup') { 31880 // While user keyboard layout determines the actual meaning of each 31881 // `keyCode` value, almost all function keys have a universal value. 31882 return translateToKey[nativeEvent.keyCode] || 'Unidentified'; 31883 } 31884 31885 return ''; 31886} 31887 31888/** 31889 * @interface KeyboardEvent 31890 * @see http://www.w3.org/TR/DOM-Level-3-Events/ 31891 */ 31892 31893var SyntheticKeyboardEvent = SyntheticUIEvent.extend({ 31894 key: getEventKey, 31895 location: null, 31896 ctrlKey: null, 31897 shiftKey: null, 31898 altKey: null, 31899 metaKey: null, 31900 repeat: null, 31901 locale: null, 31902 getModifierState: getEventModifierState, 31903 // Legacy Interface 31904 charCode: function (event) { 31905 // `charCode` is the result of a KeyPress event and represents the value of 31906 // the actual printable character. 31907 // KeyPress is deprecated, but its replacement is not yet final and not 31908 // implemented in any major browser. Only KeyPress has charCode. 31909 if (event.type === 'keypress') { 31910 return getEventCharCode(event); 31911 } 31912 31913 return 0; 31914 }, 31915 keyCode: function (event) { 31916 // `keyCode` is the result of a KeyDown/Up event and represents the value of 31917 // physical keyboard key. 31918 // The actual meaning of the value depends on the users' keyboard layout 31919 // which cannot be detected. Assuming that it is a US keyboard layout 31920 // provides a surprisingly accurate mapping for US and European users. 31921 // Due to this, it is left to the user to implement at this time. 31922 if (event.type === 'keydown' || event.type === 'keyup') { 31923 return event.keyCode; 31924 } 31925 31926 return 0; 31927 }, 31928 which: function (event) { 31929 // `which` is an alias for either `keyCode` or `charCode` depending on the 31930 // type of the event. 31931 if (event.type === 'keypress') { 31932 return getEventCharCode(event); 31933 } 31934 31935 if (event.type === 'keydown' || event.type === 'keyup') { 31936 return event.keyCode; 31937 } 31938 31939 return 0; 31940 } 31941}); 31942 31943/** 31944 * @interface DragEvent 31945 * @see http://www.w3.org/TR/DOM-Level-3-Events/ 31946 */ 31947 31948var SyntheticDragEvent = SyntheticMouseEvent.extend({ 31949 dataTransfer: null 31950}); 31951 31952/** 31953 * @interface TouchEvent 31954 * @see http://www.w3.org/TR/touch-events/ 31955 */ 31956 31957var SyntheticTouchEvent = SyntheticUIEvent.extend({ 31958 touches: null, 31959 targetTouches: null, 31960 changedTouches: null, 31961 altKey: null, 31962 metaKey: null, 31963 ctrlKey: null, 31964 shiftKey: null, 31965 getModifierState: getEventModifierState 31966}); 31967 31968/** 31969 * @interface Event 31970 * @see http://www.w3.org/TR/2009/WD-css3-transitions-20090320/#transition-events- 31971 * @see https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent 31972 */ 31973 31974var SyntheticTransitionEvent = SyntheticEvent.extend({ 31975 propertyName: null, 31976 elapsedTime: null, 31977 pseudoElement: null 31978}); 31979 31980/** 31981 * @interface WheelEvent 31982 * @see http://www.w3.org/TR/DOM-Level-3-Events/ 31983 */ 31984 31985var SyntheticWheelEvent = SyntheticMouseEvent.extend({ 31986 deltaX: function (event) { 31987 return 'deltaX' in event ? event.deltaX : // Fallback to `wheelDeltaX` for Webkit and normalize (right is positive). 31988 'wheelDeltaX' in event ? -event.wheelDeltaX : 0; 31989 }, 31990 deltaY: function (event) { 31991 return 'deltaY' in event ? event.deltaY : // Fallback to `wheelDeltaY` for Webkit and normalize (down is positive). 31992 'wheelDeltaY' in event ? -event.wheelDeltaY : // Fallback to `wheelDelta` for IE<9 and normalize (down is positive). 31993 'wheelDelta' in event ? -event.wheelDelta : 0; 31994 }, 31995 deltaZ: null, 31996 // Browsers without "deltaMode" is reporting in raw wheel delta where one 31997 // notch on the scroll is always +/- 120, roughly equivalent to pixels. 31998 // A good approximation of DOM_DELTA_LINE (1) is 5% of viewport size or 31999 // ~40 pixels, for DOM_DELTA_SCREEN (2) it is 87.5% of viewport size. 32000 deltaMode: null 32001}); 32002 32003var knownHTMLTopLevelTypes = [TOP_ABORT, TOP_CANCEL, TOP_CAN_PLAY, TOP_CAN_PLAY_THROUGH, TOP_CLOSE, TOP_DURATION_CHANGE, TOP_EMPTIED, TOP_ENCRYPTED, TOP_ENDED, TOP_ERROR, TOP_INPUT, TOP_INVALID, TOP_LOAD, TOP_LOADED_DATA, TOP_LOADED_METADATA, TOP_LOAD_START, TOP_PAUSE, TOP_PLAY, TOP_PLAYING, TOP_PROGRESS, TOP_RATE_CHANGE, TOP_RESET, TOP_SEEKED, TOP_SEEKING, TOP_STALLED, TOP_SUBMIT, TOP_SUSPEND, TOP_TIME_UPDATE, TOP_TOGGLE, TOP_VOLUME_CHANGE, TOP_WAITING]; 32004var SimpleEventPlugin = { 32005 // simpleEventPluginEventTypes gets populated from 32006 // the DOMEventProperties module. 32007 eventTypes: simpleEventPluginEventTypes, 32008 extractEvents: function (topLevelType, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags) { 32009 var dispatchConfig = topLevelEventsToDispatchConfig.get(topLevelType); 32010 32011 if (!dispatchConfig) { 32012 return null; 32013 } 32014 32015 var EventConstructor; 32016 32017 switch (topLevelType) { 32018 case TOP_KEY_PRESS: 32019 // Firefox creates a keypress event for function keys too. This removes 32020 // the unwanted keypress events. Enter is however both printable and 32021 // non-printable. One would expect Tab to be as well (but it isn't). 32022 if (getEventCharCode(nativeEvent) === 0) { 32023 return null; 32024 } 32025 32026 /* falls through */ 32027 32028 case TOP_KEY_DOWN: 32029 case TOP_KEY_UP: 32030 EventConstructor = SyntheticKeyboardEvent; 32031 break; 32032 32033 case TOP_BLUR: 32034 case TOP_FOCUS: 32035 EventConstructor = SyntheticFocusEvent; 32036 break; 32037 32038 case TOP_CLICK: 32039 // Firefox creates a click event on right mouse clicks. This removes the 32040 // unwanted click events. 32041 if (nativeEvent.button === 2) { 32042 return null; 32043 } 32044 32045 /* falls through */ 32046 32047 case TOP_AUX_CLICK: 32048 case TOP_DOUBLE_CLICK: 32049 case TOP_MOUSE_DOWN: 32050 case TOP_MOUSE_MOVE: 32051 case TOP_MOUSE_UP: // TODO: Disabled elements should not respond to mouse events 32052 32053 /* falls through */ 32054 32055 case TOP_MOUSE_OUT: 32056 case TOP_MOUSE_OVER: 32057 case TOP_CONTEXT_MENU: 32058 EventConstructor = SyntheticMouseEvent; 32059 break; 32060 32061 case TOP_DRAG: 32062 case TOP_DRAG_END: 32063 case TOP_DRAG_ENTER: 32064 case TOP_DRAG_EXIT: 32065 case TOP_DRAG_LEAVE: 32066 case TOP_DRAG_OVER: 32067 case TOP_DRAG_START: 32068 case TOP_DROP: 32069 EventConstructor = SyntheticDragEvent; 32070 break; 32071 32072 case TOP_TOUCH_CANCEL: 32073 case TOP_TOUCH_END: 32074 case TOP_TOUCH_MOVE: 32075 case TOP_TOUCH_START: 32076 EventConstructor = SyntheticTouchEvent; 32077 break; 32078 32079 case TOP_ANIMATION_END: 32080 case TOP_ANIMATION_ITERATION: 32081 case TOP_ANIMATION_START: 32082 EventConstructor = SyntheticAnimationEvent; 32083 break; 32084 32085 case TOP_TRANSITION_END: 32086 EventConstructor = SyntheticTransitionEvent; 32087 break; 32088 32089 case TOP_SCROLL: 32090 EventConstructor = SyntheticUIEvent; 32091 break; 32092 32093 case TOP_WHEEL: 32094 EventConstructor = SyntheticWheelEvent; 32095 break; 32096 32097 case TOP_COPY: 32098 case TOP_CUT: 32099 case TOP_PASTE: 32100 EventConstructor = SyntheticClipboardEvent; 32101 break; 32102 32103 case TOP_GOT_POINTER_CAPTURE: 32104 case TOP_LOST_POINTER_CAPTURE: 32105 case TOP_POINTER_CANCEL: 32106 case TOP_POINTER_DOWN: 32107 case TOP_POINTER_MOVE: 32108 case TOP_POINTER_OUT: 32109 case TOP_POINTER_OVER: 32110 case TOP_POINTER_UP: 32111 EventConstructor = SyntheticPointerEvent; 32112 break; 32113 32114 default: 32115 { 32116 if (knownHTMLTopLevelTypes.indexOf(topLevelType) === -1) { 32117 error('SimpleEventPlugin: Unhandled event type, `%s`. This warning ' + 'is likely caused by a bug in React. Please file an issue.', topLevelType); 32118 } 32119 } // HTML Events 32120 // @see http://www.w3.org/TR/html5/index.html#events-0 32121 32122 32123 EventConstructor = SyntheticEvent; 32124 break; 32125 } 32126 32127 var event = EventConstructor.getPooled(dispatchConfig, targetInst, nativeEvent, nativeEventTarget); 32128 accumulateTwoPhaseDispatches(event); 32129 return event; 32130 } 32131}; 32132 32133/** 32134 * Specifies a deterministic ordering of `EventPlugin`s. A convenient way to 32135 * reason about plugins, without having to package every one of them. This 32136 * is better than having plugins be ordered in the same order that they 32137 * are injected because that ordering would be influenced by the packaging order. 32138 * `ResponderEventPlugin` must occur before `SimpleEventPlugin` so that 32139 * preventing default on events is convenient in `SimpleEventPlugin` handlers. 32140 */ 32141 32142var DOMEventPluginOrder = ['ResponderEventPlugin', 'SimpleEventPlugin', 'EnterLeaveEventPlugin', 'ChangeEventPlugin', 'SelectEventPlugin', 'BeforeInputEventPlugin']; 32143/** 32144 * Inject modules for resolving DOM hierarchy and plugin ordering. 32145 */ 32146 32147injectEventPluginOrder(DOMEventPluginOrder); 32148setComponentTree(getFiberCurrentPropsFromNode$1, getInstanceFromNode$1, getNodeFromInstance$1); 32149/** 32150 * Some important event plugins included by default (without having to require 32151 * them). 32152 */ 32153 32154injectEventPluginsByName({ 32155 SimpleEventPlugin: SimpleEventPlugin, 32156 EnterLeaveEventPlugin: EnterLeaveEventPlugin, 32157 ChangeEventPlugin: ChangeEventPlugin, 32158 SelectEventPlugin: SelectEventPlugin, 32159 BeforeInputEventPlugin: BeforeInputEventPlugin 32160}); 32161 32162// Prefix measurements so that it's possible to filter them. 32163// Longer prefixes are hard to read in DevTools. 32164var reactEmoji = "\u269B"; 32165var warningEmoji = "\u26D4"; 32166var supportsUserTiming = typeof performance !== 'undefined' && typeof performance.mark === 'function' && typeof performance.clearMarks === 'function' && typeof performance.measure === 'function' && typeof performance.clearMeasures === 'function'; // Keep track of current fiber so that we know the path to unwind on pause. 32167// TODO: this looks the same as nextUnitOfWork in scheduler. Can we unify them? 32168 32169var currentFiber = null; // If we're in the middle of user code, which fiber and method is it? 32170// Reusing `currentFiber` would be confusing for this because user code fiber 32171// can change during commit phase too, but we don't need to unwind it (since 32172// lifecycles in the commit phase don't resemble a tree). 32173 32174var currentPhase = null; 32175var currentPhaseFiber = null; // Did lifecycle hook schedule an update? This is often a performance problem, 32176// so we will keep track of it, and include it in the report. 32177// Track commits caused by cascading updates. 32178 32179var isCommitting = false; 32180var hasScheduledUpdateInCurrentCommit = false; 32181var hasScheduledUpdateInCurrentPhase = false; 32182var commitCountInCurrentWorkLoop = 0; 32183var effectCountInCurrentCommit = 0; 32184// to avoid stretch the commit phase with measurement overhead. 32185 32186var labelsInCurrentCommit = new Set(); 32187 32188var formatMarkName = function (markName) { 32189 return reactEmoji + " " + markName; 32190}; 32191 32192var formatLabel = function (label, warning) { 32193 var prefix = warning ? warningEmoji + " " : reactEmoji + " "; 32194 var suffix = warning ? " Warning: " + warning : ''; 32195 return "" + prefix + label + suffix; 32196}; 32197 32198var beginMark = function (markName) { 32199 performance.mark(formatMarkName(markName)); 32200}; 32201 32202var clearMark = function (markName) { 32203 performance.clearMarks(formatMarkName(markName)); 32204}; 32205 32206var endMark = function (label, markName, warning) { 32207 var formattedMarkName = formatMarkName(markName); 32208 var formattedLabel = formatLabel(label, warning); 32209 32210 try { 32211 performance.measure(formattedLabel, formattedMarkName); 32212 } catch (err) {} // If previous mark was missing for some reason, this will throw. 32213 // This could only happen if React crashed in an unexpected place earlier. 32214 // Don't pile on with more errors. 32215 // Clear marks immediately to avoid growing buffer. 32216 32217 32218 performance.clearMarks(formattedMarkName); 32219 performance.clearMeasures(formattedLabel); 32220}; 32221 32222var getFiberMarkName = function (label, debugID) { 32223 return label + " (#" + debugID + ")"; 32224}; 32225 32226var getFiberLabel = function (componentName, isMounted, phase) { 32227 if (phase === null) { 32228 // These are composite component total time measurements. 32229 return componentName + " [" + (isMounted ? 'update' : 'mount') + "]"; 32230 } else { 32231 // Composite component methods. 32232 return componentName + "." + phase; 32233 } 32234}; 32235 32236var beginFiberMark = function (fiber, phase) { 32237 var componentName = getComponentName(fiber.type) || 'Unknown'; 32238 var debugID = fiber._debugID; 32239 var isMounted = fiber.alternate !== null; 32240 var label = getFiberLabel(componentName, isMounted, phase); 32241 32242 if (isCommitting && labelsInCurrentCommit.has(label)) { 32243 // During the commit phase, we don't show duplicate labels because 32244 // there is a fixed overhead for every measurement, and we don't 32245 // want to stretch the commit phase beyond necessary. 32246 return false; 32247 } 32248 32249 labelsInCurrentCommit.add(label); 32250 var markName = getFiberMarkName(label, debugID); 32251 beginMark(markName); 32252 return true; 32253}; 32254 32255var clearFiberMark = function (fiber, phase) { 32256 var componentName = getComponentName(fiber.type) || 'Unknown'; 32257 var debugID = fiber._debugID; 32258 var isMounted = fiber.alternate !== null; 32259 var label = getFiberLabel(componentName, isMounted, phase); 32260 var markName = getFiberMarkName(label, debugID); 32261 clearMark(markName); 32262}; 32263 32264var endFiberMark = function (fiber, phase, warning) { 32265 var componentName = getComponentName(fiber.type) || 'Unknown'; 32266 var debugID = fiber._debugID; 32267 var isMounted = fiber.alternate !== null; 32268 var label = getFiberLabel(componentName, isMounted, phase); 32269 var markName = getFiberMarkName(label, debugID); 32270 endMark(label, markName, warning); 32271}; 32272 32273var shouldIgnoreFiber = function (fiber) { 32274 // Host components should be skipped in the timeline. 32275 // We could check typeof fiber.type, but does this work with RN? 32276 switch (fiber.tag) { 32277 case HostRoot: 32278 case HostComponent: 32279 case HostText: 32280 case HostPortal: 32281 case Fragment: 32282 case ContextProvider: 32283 case ContextConsumer: 32284 case Mode: 32285 return true; 32286 32287 default: 32288 return false; 32289 } 32290}; 32291 32292var clearPendingPhaseMeasurement = function () { 32293 if (currentPhase !== null && currentPhaseFiber !== null) { 32294 clearFiberMark(currentPhaseFiber, currentPhase); 32295 } 32296 32297 currentPhaseFiber = null; 32298 currentPhase = null; 32299 hasScheduledUpdateInCurrentPhase = false; 32300}; 32301 32302var pauseTimers = function () { 32303 // Stops all currently active measurements so that they can be resumed 32304 // if we continue in a later deferred loop from the same unit of work. 32305 var fiber = currentFiber; 32306 32307 while (fiber) { 32308 if (fiber._debugIsCurrentlyTiming) { 32309 endFiberMark(fiber, null, null); 32310 } 32311 32312 fiber = fiber.return; 32313 } 32314}; 32315 32316var resumeTimersRecursively = function (fiber) { 32317 if (fiber.return !== null) { 32318 resumeTimersRecursively(fiber.return); 32319 } 32320 32321 if (fiber._debugIsCurrentlyTiming) { 32322 beginFiberMark(fiber, null); 32323 } 32324}; 32325 32326var resumeTimers = function () { 32327 // Resumes all measurements that were active during the last deferred loop. 32328 if (currentFiber !== null) { 32329 resumeTimersRecursively(currentFiber); 32330 } 32331}; 32332 32333function recordEffect() { 32334 { 32335 effectCountInCurrentCommit++; 32336 } 32337} 32338function recordScheduleUpdate() { 32339 { 32340 if (isCommitting) { 32341 hasScheduledUpdateInCurrentCommit = true; 32342 } 32343 32344 if (currentPhase !== null && currentPhase !== 'componentWillMount' && currentPhase !== 'componentWillReceiveProps') { 32345 hasScheduledUpdateInCurrentPhase = true; 32346 } 32347 } 32348} 32349function startWorkTimer(fiber) { 32350 { 32351 if (!supportsUserTiming || shouldIgnoreFiber(fiber)) { 32352 return; 32353 } // If we pause, this is the fiber to unwind from. 32354 32355 32356 currentFiber = fiber; 32357 32358 if (!beginFiberMark(fiber, null)) { 32359 return; 32360 } 32361 32362 fiber._debugIsCurrentlyTiming = true; 32363 } 32364} 32365function cancelWorkTimer(fiber) { 32366 { 32367 if (!supportsUserTiming || shouldIgnoreFiber(fiber)) { 32368 return; 32369 } // Remember we shouldn't complete measurement for this fiber. 32370 // Otherwise flamechart will be deep even for small updates. 32371 32372 32373 fiber._debugIsCurrentlyTiming = false; 32374 clearFiberMark(fiber, null); 32375 } 32376} 32377function stopWorkTimer(fiber) { 32378 { 32379 if (!supportsUserTiming || shouldIgnoreFiber(fiber)) { 32380 return; 32381 } // If we pause, its parent is the fiber to unwind from. 32382 32383 32384 currentFiber = fiber.return; 32385 32386 if (!fiber._debugIsCurrentlyTiming) { 32387 return; 32388 } 32389 32390 fiber._debugIsCurrentlyTiming = false; 32391 endFiberMark(fiber, null, null); 32392 } 32393} 32394function stopFailedWorkTimer(fiber) { 32395 { 32396 if (!supportsUserTiming || shouldIgnoreFiber(fiber)) { 32397 return; 32398 } // If we pause, its parent is the fiber to unwind from. 32399 32400 32401 currentFiber = fiber.return; 32402 32403 if (!fiber._debugIsCurrentlyTiming) { 32404 return; 32405 } 32406 32407 fiber._debugIsCurrentlyTiming = false; 32408 var warning = fiber.tag === SuspenseComponent ? 'Rendering was suspended' : 'An error was thrown inside this error boundary'; 32409 endFiberMark(fiber, null, warning); 32410 } 32411} 32412function startPhaseTimer(fiber, phase) { 32413 { 32414 if (!supportsUserTiming) { 32415 return; 32416 } 32417 32418 clearPendingPhaseMeasurement(); 32419 32420 if (!beginFiberMark(fiber, phase)) { 32421 return; 32422 } 32423 32424 currentPhaseFiber = fiber; 32425 currentPhase = phase; 32426 } 32427} 32428function stopPhaseTimer() { 32429 { 32430 if (!supportsUserTiming) { 32431 return; 32432 } 32433 32434 if (currentPhase !== null && currentPhaseFiber !== null) { 32435 var warning = hasScheduledUpdateInCurrentPhase ? 'Scheduled a cascading update' : null; 32436 endFiberMark(currentPhaseFiber, currentPhase, warning); 32437 } 32438 32439 currentPhase = null; 32440 currentPhaseFiber = null; 32441 } 32442} 32443function startWorkLoopTimer(nextUnitOfWork) { 32444 { 32445 currentFiber = nextUnitOfWork; 32446 32447 if (!supportsUserTiming) { 32448 return; 32449 } 32450 32451 commitCountInCurrentWorkLoop = 0; // This is top level call. 32452 // Any other measurements are performed within. 32453 32454 beginMark('(React Tree Reconciliation)'); // Resume any measurements that were in progress during the last loop. 32455 32456 resumeTimers(); 32457 } 32458} 32459function stopWorkLoopTimer(interruptedBy, didCompleteRoot) { 32460 { 32461 if (!supportsUserTiming) { 32462 return; 32463 } 32464 32465 var warning = null; 32466 32467 if (interruptedBy !== null) { 32468 if (interruptedBy.tag === HostRoot) { 32469 warning = 'A top-level update interrupted the previous render'; 32470 } else { 32471 var componentName = getComponentName(interruptedBy.type) || 'Unknown'; 32472 warning = "An update to " + componentName + " interrupted the previous render"; 32473 } 32474 } else if (commitCountInCurrentWorkLoop > 1) { 32475 warning = 'There were cascading updates'; 32476 } 32477 32478 commitCountInCurrentWorkLoop = 0; 32479 var label = didCompleteRoot ? '(React Tree Reconciliation: Completed Root)' : '(React Tree Reconciliation: Yielded)'; // Pause any measurements until the next loop. 32480 32481 pauseTimers(); 32482 endMark(label, '(React Tree Reconciliation)', warning); 32483 } 32484} 32485function startCommitTimer() { 32486 { 32487 if (!supportsUserTiming) { 32488 return; 32489 } 32490 32491 isCommitting = true; 32492 hasScheduledUpdateInCurrentCommit = false; 32493 labelsInCurrentCommit.clear(); 32494 beginMark('(Committing Changes)'); 32495 } 32496} 32497function stopCommitTimer() { 32498 { 32499 if (!supportsUserTiming) { 32500 return; 32501 } 32502 32503 var warning = null; 32504 32505 if (hasScheduledUpdateInCurrentCommit) { 32506 warning = 'Lifecycle hook scheduled a cascading update'; 32507 } else if (commitCountInCurrentWorkLoop > 0) { 32508 warning = 'Caused by a cascading update in earlier commit'; 32509 } 32510 32511 hasScheduledUpdateInCurrentCommit = false; 32512 commitCountInCurrentWorkLoop++; 32513 isCommitting = false; 32514 labelsInCurrentCommit.clear(); 32515 endMark('(Committing Changes)', '(Committing Changes)', warning); 32516 } 32517} 32518function startCommitSnapshotEffectsTimer() { 32519 { 32520 if (!supportsUserTiming) { 32521 return; 32522 } 32523 32524 effectCountInCurrentCommit = 0; 32525 beginMark('(Committing Snapshot Effects)'); 32526 } 32527} 32528function stopCommitSnapshotEffectsTimer() { 32529 { 32530 if (!supportsUserTiming) { 32531 return; 32532 } 32533 32534 var count = effectCountInCurrentCommit; 32535 effectCountInCurrentCommit = 0; 32536 endMark("(Committing Snapshot Effects: " + count + " Total)", '(Committing Snapshot Effects)', null); 32537 } 32538} 32539function startCommitHostEffectsTimer() { 32540 { 32541 if (!supportsUserTiming) { 32542 return; 32543 } 32544 32545 effectCountInCurrentCommit = 0; 32546 beginMark('(Committing Host Effects)'); 32547 } 32548} 32549function stopCommitHostEffectsTimer() { 32550 { 32551 if (!supportsUserTiming) { 32552 return; 32553 } 32554 32555 var count = effectCountInCurrentCommit; 32556 effectCountInCurrentCommit = 0; 32557 endMark("(Committing Host Effects: " + count + " Total)", '(Committing Host Effects)', null); 32558 } 32559} 32560function startCommitLifeCyclesTimer() { 32561 { 32562 if (!supportsUserTiming) { 32563 return; 32564 } 32565 32566 effectCountInCurrentCommit = 0; 32567 beginMark('(Calling Lifecycle Methods)'); 32568 } 32569} 32570function stopCommitLifeCyclesTimer() { 32571 { 32572 if (!supportsUserTiming) { 32573 return; 32574 } 32575 32576 var count = effectCountInCurrentCommit; 32577 effectCountInCurrentCommit = 0; 32578 endMark("(Calling Lifecycle Methods: " + count + " Total)", '(Calling Lifecycle Methods)', null); 32579 } 32580} 32581 32582var valueStack = []; 32583var fiberStack; 32584 32585{ 32586 fiberStack = []; 32587} 32588 32589var index = -1; 32590 32591function createCursor(defaultValue) { 32592 return { 32593 current: defaultValue 32594 }; 32595} 32596 32597function pop(cursor, fiber) { 32598 if (index < 0) { 32599 { 32600 error('Unexpected pop.'); 32601 } 32602 32603 return; 32604 } 32605 32606 { 32607 if (fiber !== fiberStack[index]) { 32608 error('Unexpected Fiber popped.'); 32609 } 32610 } 32611 32612 cursor.current = valueStack[index]; 32613 valueStack[index] = null; 32614 32615 { 32616 fiberStack[index] = null; 32617 } 32618 32619 index--; 32620} 32621 32622function push(cursor, value, fiber) { 32623 index++; 32624 valueStack[index] = cursor.current; 32625 32626 { 32627 fiberStack[index] = fiber; 32628 } 32629 32630 cursor.current = value; 32631} 32632 32633var warnedAboutMissingGetChildContext; 32634 32635{ 32636 warnedAboutMissingGetChildContext = {}; 32637} 32638 32639var emptyContextObject = {}; 32640 32641{ 32642 Object.freeze(emptyContextObject); 32643} // A cursor to the current merged context object on the stack. 32644 32645 32646var contextStackCursor = createCursor(emptyContextObject); // A cursor to a boolean indicating whether the context has changed. 32647 32648var didPerformWorkStackCursor = createCursor(false); // Keep track of the previous context object that was on the stack. 32649// We use this to get access to the parent context after we have already 32650// pushed the next context provider, and now need to merge their contexts. 32651 32652var previousContext = emptyContextObject; 32653 32654function getUnmaskedContext(workInProgress, Component, didPushOwnContextIfProvider) { 32655 { 32656 if (didPushOwnContextIfProvider && isContextProvider(Component)) { 32657 // If the fiber is a context provider itself, when we read its context 32658 // we may have already pushed its own child context on the stack. A context 32659 // provider should not "see" its own child context. Therefore we read the 32660 // previous (parent) context instead for a context provider. 32661 return previousContext; 32662 } 32663 32664 return contextStackCursor.current; 32665 } 32666} 32667 32668function cacheContext(workInProgress, unmaskedContext, maskedContext) { 32669 { 32670 var instance = workInProgress.stateNode; 32671 instance.__reactInternalMemoizedUnmaskedChildContext = unmaskedContext; 32672 instance.__reactInternalMemoizedMaskedChildContext = maskedContext; 32673 } 32674} 32675 32676function getMaskedContext(workInProgress, unmaskedContext) { 32677 { 32678 var type = workInProgress.type; 32679 var contextTypes = type.contextTypes; 32680 32681 if (!contextTypes) { 32682 return emptyContextObject; 32683 } // Avoid recreating masked context unless unmasked context has changed. 32684 // Failing to do this will result in unnecessary calls to componentWillReceiveProps. 32685 // This may trigger infinite loops if componentWillReceiveProps calls setState. 32686 32687 32688 var instance = workInProgress.stateNode; 32689 32690 if (instance && instance.__reactInternalMemoizedUnmaskedChildContext === unmaskedContext) { 32691 return instance.__reactInternalMemoizedMaskedChildContext; 32692 } 32693 32694 var context = {}; 32695 32696 for (var key in contextTypes) { 32697 context[key] = unmaskedContext[key]; 32698 } 32699 32700 { 32701 var name = getComponentName(type) || 'Unknown'; 32702 checkPropTypes(contextTypes, context, 'context', name, getCurrentFiberStackInDev); 32703 } // Cache unmasked context so we can avoid recreating masked context unless necessary. 32704 // Context is created before the class component is instantiated so check for instance. 32705 32706 32707 if (instance) { 32708 cacheContext(workInProgress, unmaskedContext, context); 32709 } 32710 32711 return context; 32712 } 32713} 32714 32715function hasContextChanged() { 32716 { 32717 return didPerformWorkStackCursor.current; 32718 } 32719} 32720 32721function isContextProvider(type) { 32722 { 32723 var childContextTypes = type.childContextTypes; 32724 return childContextTypes !== null && childContextTypes !== undefined; 32725 } 32726} 32727 32728function popContext(fiber) { 32729 { 32730 pop(didPerformWorkStackCursor, fiber); 32731 pop(contextStackCursor, fiber); 32732 } 32733} 32734 32735function popTopLevelContextObject(fiber) { 32736 { 32737 pop(didPerformWorkStackCursor, fiber); 32738 pop(contextStackCursor, fiber); 32739 } 32740} 32741 32742function pushTopLevelContextObject(fiber, context, didChange) { 32743 { 32744 if (!(contextStackCursor.current === emptyContextObject)) { 32745 { 32746 throw Error( "Unexpected context found on stack. This error is likely caused by a bug in React. Please file an issue." ); 32747 } 32748 } 32749 32750 push(contextStackCursor, context, fiber); 32751 push(didPerformWorkStackCursor, didChange, fiber); 32752 } 32753} 32754 32755function processChildContext(fiber, type, parentContext) { 32756 { 32757 var instance = fiber.stateNode; 32758 var childContextTypes = type.childContextTypes; // TODO (bvaughn) Replace this behavior with an invariant() in the future. 32759 // It has only been added in Fiber to match the (unintentional) behavior in Stack. 32760 32761 if (typeof instance.getChildContext !== 'function') { 32762 { 32763 var componentName = getComponentName(type) || 'Unknown'; 32764 32765 if (!warnedAboutMissingGetChildContext[componentName]) { 32766 warnedAboutMissingGetChildContext[componentName] = true; 32767 32768 error('%s.childContextTypes is specified but there is no getChildContext() method ' + 'on the instance. You can either define getChildContext() on %s or remove ' + 'childContextTypes from it.', componentName, componentName); 32769 } 32770 } 32771 32772 return parentContext; 32773 } 32774 32775 var childContext; 32776 startPhaseTimer(fiber, 'getChildContext'); 32777 childContext = instance.getChildContext(); 32778 stopPhaseTimer(); 32779 32780 for (var contextKey in childContext) { 32781 if (!(contextKey in childContextTypes)) { 32782 { 32783 throw Error( (getComponentName(type) || 'Unknown') + ".getChildContext(): key \"" + contextKey + "\" is not defined in childContextTypes." ); 32784 } 32785 } 32786 } 32787 32788 { 32789 var name = getComponentName(type) || 'Unknown'; 32790 checkPropTypes(childContextTypes, childContext, 'child context', name, // In practice, there is one case in which we won't get a stack. It's when 32791 // somebody calls unstable_renderSubtreeIntoContainer() and we process 32792 // context from the parent component instance. The stack will be missing 32793 // because it's outside of the reconciliation, and so the pointer has not 32794 // been set. This is rare and doesn't matter. We'll also remove that API. 32795 getCurrentFiberStackInDev); 32796 } 32797 32798 return _assign({}, parentContext, {}, childContext); 32799 } 32800} 32801 32802function pushContextProvider(workInProgress) { 32803 { 32804 var instance = workInProgress.stateNode; // We push the context as early as possible to ensure stack integrity. 32805 // If the instance does not exist yet, we will push null at first, 32806 // and replace it on the stack later when invalidating the context. 32807 32808 var memoizedMergedChildContext = instance && instance.__reactInternalMemoizedMergedChildContext || emptyContextObject; // Remember the parent context so we can merge with it later. 32809 // Inherit the parent's did-perform-work value to avoid inadvertently blocking updates. 32810 32811 previousContext = contextStackCursor.current; 32812 push(contextStackCursor, memoizedMergedChildContext, workInProgress); 32813 push(didPerformWorkStackCursor, didPerformWorkStackCursor.current, workInProgress); 32814 return true; 32815 } 32816} 32817 32818function invalidateContextProvider(workInProgress, type, didChange) { 32819 { 32820 var instance = workInProgress.stateNode; 32821 32822 if (!instance) { 32823 { 32824 throw Error( "Expected to have an instance by this point. This error is likely caused by a bug in React. Please file an issue." ); 32825 } 32826 } 32827 32828 if (didChange) { 32829 // Merge parent and own context. 32830 // Skip this if we're not updating due to sCU. 32831 // This avoids unnecessarily recomputing memoized values. 32832 var mergedContext = processChildContext(workInProgress, type, previousContext); 32833 instance.__reactInternalMemoizedMergedChildContext = mergedContext; // Replace the old (or empty) context with the new one. 32834 // It is important to unwind the context in the reverse order. 32835 32836 pop(didPerformWorkStackCursor, workInProgress); 32837 pop(contextStackCursor, workInProgress); // Now push the new context and mark that it has changed. 32838 32839 push(contextStackCursor, mergedContext, workInProgress); 32840 push(didPerformWorkStackCursor, didChange, workInProgress); 32841 } else { 32842 pop(didPerformWorkStackCursor, workInProgress); 32843 push(didPerformWorkStackCursor, didChange, workInProgress); 32844 } 32845 } 32846} 32847 32848function findCurrentUnmaskedContext(fiber) { 32849 { 32850 // Currently this is only used with renderSubtreeIntoContainer; not sure if it 32851 // makes sense elsewhere 32852 if (!(isFiberMounted(fiber) && fiber.tag === ClassComponent)) { 32853 { 32854 throw Error( "Expected subtree parent to be a mounted class component. This error is likely caused by a bug in React. Please file an issue." ); 32855 } 32856 } 32857 32858 var node = fiber; 32859 32860 do { 32861 switch (node.tag) { 32862 case HostRoot: 32863 return node.stateNode.context; 32864 32865 case ClassComponent: 32866 { 32867 var Component = node.type; 32868 32869 if (isContextProvider(Component)) { 32870 return node.stateNode.__reactInternalMemoizedMergedChildContext; 32871 } 32872 32873 break; 32874 } 32875 } 32876 32877 node = node.return; 32878 } while (node !== null); 32879 32880 { 32881 { 32882 throw Error( "Found unexpected detached subtree parent. This error is likely caused by a bug in React. Please file an issue." ); 32883 } 32884 } 32885 } 32886} 32887 32888var LegacyRoot = 0; 32889var BlockingRoot = 1; 32890var ConcurrentRoot = 2; 32891 32892var Scheduler_runWithPriority = Scheduler.unstable_runWithPriority, 32893 Scheduler_scheduleCallback = Scheduler.unstable_scheduleCallback, 32894 Scheduler_cancelCallback = Scheduler.unstable_cancelCallback, 32895 Scheduler_shouldYield = Scheduler.unstable_shouldYield, 32896 Scheduler_requestPaint = Scheduler.unstable_requestPaint, 32897 Scheduler_now = Scheduler.unstable_now, 32898 Scheduler_getCurrentPriorityLevel = Scheduler.unstable_getCurrentPriorityLevel, 32899 Scheduler_ImmediatePriority = Scheduler.unstable_ImmediatePriority, 32900 Scheduler_UserBlockingPriority = Scheduler.unstable_UserBlockingPriority, 32901 Scheduler_NormalPriority = Scheduler.unstable_NormalPriority, 32902 Scheduler_LowPriority = Scheduler.unstable_LowPriority, 32903 Scheduler_IdlePriority = Scheduler.unstable_IdlePriority; 32904 32905{ 32906 // Provide explicit error message when production+profiling bundle of e.g. 32907 // react-dom is used with production (non-profiling) bundle of 32908 // scheduler/tracing 32909 if (!(tracing.__interactionsRef != null && tracing.__interactionsRef.current != null)) { 32910 { 32911 throw Error( "It is not supported to run the profiling version of a renderer (for example, `react-dom/profiling`) without also replacing the `scheduler/tracing` module with `scheduler/tracing-profiling`. Your bundler might have a setting for aliasing both modules. Learn more at http://fb.me/react-profiling" ); 32912 } 32913 } 32914} 32915 32916var fakeCallbackNode = {}; // Except for NoPriority, these correspond to Scheduler priorities. We use 32917// ascending numbers so we can compare them like numbers. They start at 90 to 32918// avoid clashing with Scheduler's priorities. 32919 32920var ImmediatePriority = 99; 32921var UserBlockingPriority$1 = 98; 32922var NormalPriority = 97; 32923var LowPriority = 96; 32924var IdlePriority = 95; // NoPriority is the absence of priority. Also React-only. 32925 32926var NoPriority = 90; 32927var shouldYield = Scheduler_shouldYield; 32928var requestPaint = // Fall back gracefully if we're running an older version of Scheduler. 32929Scheduler_requestPaint !== undefined ? Scheduler_requestPaint : function () {}; 32930var syncQueue = null; 32931var immediateQueueCallbackNode = null; 32932var isFlushingSyncQueue = false; 32933var initialTimeMs = Scheduler_now(); // If the initial timestamp is reasonably small, use Scheduler's `now` directly. 32934// This will be the case for modern browsers that support `performance.now`. In 32935// older browsers, Scheduler falls back to `Date.now`, which returns a Unix 32936// timestamp. In that case, subtract the module initialization time to simulate 32937// the behavior of performance.now and keep our times small enough to fit 32938// within 32 bits. 32939// TODO: Consider lifting this into Scheduler. 32940 32941var now = initialTimeMs < 10000 ? Scheduler_now : function () { 32942 return Scheduler_now() - initialTimeMs; 32943}; 32944function getCurrentPriorityLevel() { 32945 switch (Scheduler_getCurrentPriorityLevel()) { 32946 case Scheduler_ImmediatePriority: 32947 return ImmediatePriority; 32948 32949 case Scheduler_UserBlockingPriority: 32950 return UserBlockingPriority$1; 32951 32952 case Scheduler_NormalPriority: 32953 return NormalPriority; 32954 32955 case Scheduler_LowPriority: 32956 return LowPriority; 32957 32958 case Scheduler_IdlePriority: 32959 return IdlePriority; 32960 32961 default: 32962 { 32963 { 32964 throw Error( "Unknown priority level." ); 32965 } 32966 } 32967 32968 } 32969} 32970 32971function reactPriorityToSchedulerPriority(reactPriorityLevel) { 32972 switch (reactPriorityLevel) { 32973 case ImmediatePriority: 32974 return Scheduler_ImmediatePriority; 32975 32976 case UserBlockingPriority$1: 32977 return Scheduler_UserBlockingPriority; 32978 32979 case NormalPriority: 32980 return Scheduler_NormalPriority; 32981 32982 case LowPriority: 32983 return Scheduler_LowPriority; 32984 32985 case IdlePriority: 32986 return Scheduler_IdlePriority; 32987 32988 default: 32989 { 32990 { 32991 throw Error( "Unknown priority level." ); 32992 } 32993 } 32994 32995 } 32996} 32997 32998function runWithPriority$1(reactPriorityLevel, fn) { 32999 var priorityLevel = reactPriorityToSchedulerPriority(reactPriorityLevel); 33000 return Scheduler_runWithPriority(priorityLevel, fn); 33001} 33002function scheduleCallback(reactPriorityLevel, callback, options) { 33003 var priorityLevel = reactPriorityToSchedulerPriority(reactPriorityLevel); 33004 return Scheduler_scheduleCallback(priorityLevel, callback, options); 33005} 33006function scheduleSyncCallback(callback) { 33007 // Push this callback into an internal queue. We'll flush these either in 33008 // the next tick, or earlier if something calls `flushSyncCallbackQueue`. 33009 if (syncQueue === null) { 33010 syncQueue = [callback]; // Flush the queue in the next tick, at the earliest. 33011 33012 immediateQueueCallbackNode = Scheduler_scheduleCallback(Scheduler_ImmediatePriority, flushSyncCallbackQueueImpl); 33013 } else { 33014 // Push onto existing queue. Don't need to schedule a callback because 33015 // we already scheduled one when we created the queue. 33016 syncQueue.push(callback); 33017 } 33018 33019 return fakeCallbackNode; 33020} 33021function cancelCallback(callbackNode) { 33022 if (callbackNode !== fakeCallbackNode) { 33023 Scheduler_cancelCallback(callbackNode); 33024 } 33025} 33026function flushSyncCallbackQueue() { 33027 if (immediateQueueCallbackNode !== null) { 33028 var node = immediateQueueCallbackNode; 33029 immediateQueueCallbackNode = null; 33030 Scheduler_cancelCallback(node); 33031 } 33032 33033 flushSyncCallbackQueueImpl(); 33034} 33035 33036function flushSyncCallbackQueueImpl() { 33037 if (!isFlushingSyncQueue && syncQueue !== null) { 33038 // Prevent re-entrancy. 33039 isFlushingSyncQueue = true; 33040 var i = 0; 33041 33042 try { 33043 var _isSync = true; 33044 var queue = syncQueue; 33045 runWithPriority$1(ImmediatePriority, function () { 33046 for (; i < queue.length; i++) { 33047 var callback = queue[i]; 33048 33049 do { 33050 callback = callback(_isSync); 33051 } while (callback !== null); 33052 } 33053 }); 33054 syncQueue = null; 33055 } catch (error) { 33056 // If something throws, leave the remaining callbacks on the queue. 33057 if (syncQueue !== null) { 33058 syncQueue = syncQueue.slice(i + 1); 33059 } // Resume flushing in the next tick 33060 33061 33062 Scheduler_scheduleCallback(Scheduler_ImmediatePriority, flushSyncCallbackQueue); 33063 throw error; 33064 } finally { 33065 isFlushingSyncQueue = false; 33066 } 33067 } 33068} 33069 33070var NoMode = 0; 33071var StrictMode = 1; // TODO: Remove BlockingMode and ConcurrentMode by reading from the root 33072// tag instead 33073 33074var BlockingMode = 2; 33075var ConcurrentMode = 4; 33076var ProfileMode = 8; 33077 33078// Max 31 bit integer. The max integer size in V8 for 32-bit systems. 33079// Math.pow(2, 30) - 1 33080// 0b111111111111111111111111111111 33081var MAX_SIGNED_31_BIT_INT = 1073741823; 33082 33083var NoWork = 0; // TODO: Think of a better name for Never. The key difference with Idle is that 33084// Never work can be committed in an inconsistent state without tearing the UI. 33085// The main example is offscreen content, like a hidden subtree. So one possible 33086// name is Offscreen. However, it also includes dehydrated Suspense boundaries, 33087// which are inconsistent in the sense that they haven't finished yet, but 33088// aren't visibly inconsistent because the server rendered HTML matches what the 33089// hydrated tree would look like. 33090 33091var Never = 1; // Idle is slightly higher priority than Never. It must completely finish in 33092// order to be consistent. 33093 33094var Idle = 2; // Continuous Hydration is slightly higher than Idle and is used to increase 33095// priority of hover targets. 33096 33097var ContinuousHydration = 3; 33098var Sync = MAX_SIGNED_31_BIT_INT; 33099var Batched = Sync - 1; 33100var UNIT_SIZE = 10; 33101var MAGIC_NUMBER_OFFSET = Batched - 1; // 1 unit of expiration time represents 10ms. 33102 33103function msToExpirationTime(ms) { 33104 // Always subtract from the offset so that we don't clash with the magic number for NoWork. 33105 return MAGIC_NUMBER_OFFSET - (ms / UNIT_SIZE | 0); 33106} 33107function expirationTimeToMs(expirationTime) { 33108 return (MAGIC_NUMBER_OFFSET - expirationTime) * UNIT_SIZE; 33109} 33110 33111function ceiling(num, precision) { 33112 return ((num / precision | 0) + 1) * precision; 33113} 33114 33115function computeExpirationBucket(currentTime, expirationInMs, bucketSizeMs) { 33116 return MAGIC_NUMBER_OFFSET - ceiling(MAGIC_NUMBER_OFFSET - currentTime + expirationInMs / UNIT_SIZE, bucketSizeMs / UNIT_SIZE); 33117} // TODO: This corresponds to Scheduler's NormalPriority, not LowPriority. Update 33118// the names to reflect. 33119 33120 33121var LOW_PRIORITY_EXPIRATION = 5000; 33122var LOW_PRIORITY_BATCH_SIZE = 250; 33123function computeAsyncExpiration(currentTime) { 33124 return computeExpirationBucket(currentTime, LOW_PRIORITY_EXPIRATION, LOW_PRIORITY_BATCH_SIZE); 33125} 33126function computeSuspenseExpiration(currentTime, timeoutMs) { 33127 // TODO: Should we warn if timeoutMs is lower than the normal pri expiration time? 33128 return computeExpirationBucket(currentTime, timeoutMs, LOW_PRIORITY_BATCH_SIZE); 33129} // We intentionally set a higher expiration time for interactive updates in 33130// dev than in production. 33131// 33132// If the main thread is being blocked so long that you hit the expiration, 33133// it's a problem that could be solved with better scheduling. 33134// 33135// People will be more likely to notice this and fix it with the long 33136// expiration time in development. 33137// 33138// In production we opt for better UX at the risk of masking scheduling 33139// problems, by expiring fast. 33140 33141var HIGH_PRIORITY_EXPIRATION = 500 ; 33142var HIGH_PRIORITY_BATCH_SIZE = 100; 33143function computeInteractiveExpiration(currentTime) { 33144 return computeExpirationBucket(currentTime, HIGH_PRIORITY_EXPIRATION, HIGH_PRIORITY_BATCH_SIZE); 33145} 33146function inferPriorityFromExpirationTime(currentTime, expirationTime) { 33147 if (expirationTime === Sync) { 33148 return ImmediatePriority; 33149 } 33150 33151 if (expirationTime === Never || expirationTime === Idle) { 33152 return IdlePriority; 33153 } 33154 33155 var msUntil = expirationTimeToMs(expirationTime) - expirationTimeToMs(currentTime); 33156 33157 if (msUntil <= 0) { 33158 return ImmediatePriority; 33159 } 33160 33161 if (msUntil <= HIGH_PRIORITY_EXPIRATION + HIGH_PRIORITY_BATCH_SIZE) { 33162 return UserBlockingPriority$1; 33163 } 33164 33165 if (msUntil <= LOW_PRIORITY_EXPIRATION + LOW_PRIORITY_BATCH_SIZE) { 33166 return NormalPriority; 33167 } // TODO: Handle LowPriority 33168 // Assume anything lower has idle priority 33169 33170 33171 return IdlePriority; 33172} 33173 33174var ReactStrictModeWarnings = { 33175 recordUnsafeLifecycleWarnings: function (fiber, instance) {}, 33176 flushPendingUnsafeLifecycleWarnings: function () {}, 33177 recordLegacyContextWarning: function (fiber, instance) {}, 33178 flushLegacyContextWarning: function () {}, 33179 discardPendingWarnings: function () {} 33180}; 33181 33182{ 33183 var findStrictRoot = function (fiber) { 33184 var maybeStrictRoot = null; 33185 var node = fiber; 33186 33187 while (node !== null) { 33188 if (node.mode & StrictMode) { 33189 maybeStrictRoot = node; 33190 } 33191 33192 node = node.return; 33193 } 33194 33195 return maybeStrictRoot; 33196 }; 33197 33198 var setToSortedString = function (set) { 33199 var array = []; 33200 set.forEach(function (value) { 33201 array.push(value); 33202 }); 33203 return array.sort().join(', '); 33204 }; 33205 33206 var pendingComponentWillMountWarnings = []; 33207 var pendingUNSAFE_ComponentWillMountWarnings = []; 33208 var pendingComponentWillReceivePropsWarnings = []; 33209 var pendingUNSAFE_ComponentWillReceivePropsWarnings = []; 33210 var pendingComponentWillUpdateWarnings = []; 33211 var pendingUNSAFE_ComponentWillUpdateWarnings = []; // Tracks components we have already warned about. 33212 33213 var didWarnAboutUnsafeLifecycles = new Set(); 33214 33215 ReactStrictModeWarnings.recordUnsafeLifecycleWarnings = function (fiber, instance) { 33216 // Dedup strategy: Warn once per component. 33217 if (didWarnAboutUnsafeLifecycles.has(fiber.type)) { 33218 return; 33219 } 33220 33221 if (typeof instance.componentWillMount === 'function' && // Don't warn about react-lifecycles-compat polyfilled components. 33222 instance.componentWillMount.__suppressDeprecationWarning !== true) { 33223 pendingComponentWillMountWarnings.push(fiber); 33224 } 33225 33226 if (fiber.mode & StrictMode && typeof instance.UNSAFE_componentWillMount === 'function') { 33227 pendingUNSAFE_ComponentWillMountWarnings.push(fiber); 33228 } 33229 33230 if (typeof instance.componentWillReceiveProps === 'function' && instance.componentWillReceiveProps.__suppressDeprecationWarning !== true) { 33231 pendingComponentWillReceivePropsWarnings.push(fiber); 33232 } 33233 33234 if (fiber.mode & StrictMode && typeof instance.UNSAFE_componentWillReceiveProps === 'function') { 33235 pendingUNSAFE_ComponentWillReceivePropsWarnings.push(fiber); 33236 } 33237 33238 if (typeof instance.componentWillUpdate === 'function' && instance.componentWillUpdate.__suppressDeprecationWarning !== true) { 33239 pendingComponentWillUpdateWarnings.push(fiber); 33240 } 33241 33242 if (fiber.mode & StrictMode && typeof instance.UNSAFE_componentWillUpdate === 'function') { 33243 pendingUNSAFE_ComponentWillUpdateWarnings.push(fiber); 33244 } 33245 }; 33246 33247 ReactStrictModeWarnings.flushPendingUnsafeLifecycleWarnings = function () { 33248 // We do an initial pass to gather component names 33249 var componentWillMountUniqueNames = new Set(); 33250 33251 if (pendingComponentWillMountWarnings.length > 0) { 33252 pendingComponentWillMountWarnings.forEach(function (fiber) { 33253 componentWillMountUniqueNames.add(getComponentName(fiber.type) || 'Component'); 33254 didWarnAboutUnsafeLifecycles.add(fiber.type); 33255 }); 33256 pendingComponentWillMountWarnings = []; 33257 } 33258 33259 var UNSAFE_componentWillMountUniqueNames = new Set(); 33260 33261 if (pendingUNSAFE_ComponentWillMountWarnings.length > 0) { 33262 pendingUNSAFE_ComponentWillMountWarnings.forEach(function (fiber) { 33263 UNSAFE_componentWillMountUniqueNames.add(getComponentName(fiber.type) || 'Component'); 33264 didWarnAboutUnsafeLifecycles.add(fiber.type); 33265 }); 33266 pendingUNSAFE_ComponentWillMountWarnings = []; 33267 } 33268 33269 var componentWillReceivePropsUniqueNames = new Set(); 33270 33271 if (pendingComponentWillReceivePropsWarnings.length > 0) { 33272 pendingComponentWillReceivePropsWarnings.forEach(function (fiber) { 33273 componentWillReceivePropsUniqueNames.add(getComponentName(fiber.type) || 'Component'); 33274 didWarnAboutUnsafeLifecycles.add(fiber.type); 33275 }); 33276 pendingComponentWillReceivePropsWarnings = []; 33277 } 33278 33279 var UNSAFE_componentWillReceivePropsUniqueNames = new Set(); 33280 33281 if (pendingUNSAFE_ComponentWillReceivePropsWarnings.length > 0) { 33282 pendingUNSAFE_ComponentWillReceivePropsWarnings.forEach(function (fiber) { 33283 UNSAFE_componentWillReceivePropsUniqueNames.add(getComponentName(fiber.type) || 'Component'); 33284 didWarnAboutUnsafeLifecycles.add(fiber.type); 33285 }); 33286 pendingUNSAFE_ComponentWillReceivePropsWarnings = []; 33287 } 33288 33289 var componentWillUpdateUniqueNames = new Set(); 33290 33291 if (pendingComponentWillUpdateWarnings.length > 0) { 33292 pendingComponentWillUpdateWarnings.forEach(function (fiber) { 33293 componentWillUpdateUniqueNames.add(getComponentName(fiber.type) || 'Component'); 33294 didWarnAboutUnsafeLifecycles.add(fiber.type); 33295 }); 33296 pendingComponentWillUpdateWarnings = []; 33297 } 33298 33299 var UNSAFE_componentWillUpdateUniqueNames = new Set(); 33300 33301 if (pendingUNSAFE_ComponentWillUpdateWarnings.length > 0) { 33302 pendingUNSAFE_ComponentWillUpdateWarnings.forEach(function (fiber) { 33303 UNSAFE_componentWillUpdateUniqueNames.add(getComponentName(fiber.type) || 'Component'); 33304 didWarnAboutUnsafeLifecycles.add(fiber.type); 33305 }); 33306 pendingUNSAFE_ComponentWillUpdateWarnings = []; 33307 } // Finally, we flush all the warnings 33308 // UNSAFE_ ones before the deprecated ones, since they'll be 'louder' 33309 33310 33311 if (UNSAFE_componentWillMountUniqueNames.size > 0) { 33312 var sortedNames = setToSortedString(UNSAFE_componentWillMountUniqueNames); 33313 33314 error('Using UNSAFE_componentWillMount in strict mode is not recommended and may indicate bugs in your code. ' + 'See https://fb.me/react-unsafe-component-lifecycles for details.\n\n' + '* Move code with side effects to componentDidMount, and set initial state in the constructor.\n' + '\nPlease update the following components: %s', sortedNames); 33315 } 33316 33317 if (UNSAFE_componentWillReceivePropsUniqueNames.size > 0) { 33318 var _sortedNames = setToSortedString(UNSAFE_componentWillReceivePropsUniqueNames); 33319 33320 error('Using UNSAFE_componentWillReceiveProps in strict mode is not recommended ' + 'and may indicate bugs in your code. ' + 'See https://fb.me/react-unsafe-component-lifecycles for details.\n\n' + '* Move data fetching code or side effects to componentDidUpdate.\n' + "* If you're updating state whenever props change, " + 'refactor your code to use memoization techniques or move it to ' + 'static getDerivedStateFromProps. Learn more at: https://fb.me/react-derived-state\n' + '\nPlease update the following components: %s', _sortedNames); 33321 } 33322 33323 if (UNSAFE_componentWillUpdateUniqueNames.size > 0) { 33324 var _sortedNames2 = setToSortedString(UNSAFE_componentWillUpdateUniqueNames); 33325 33326 error('Using UNSAFE_componentWillUpdate in strict mode is not recommended ' + 'and may indicate bugs in your code. ' + 'See https://fb.me/react-unsafe-component-lifecycles for details.\n\n' + '* Move data fetching code or side effects to componentDidUpdate.\n' + '\nPlease update the following components: %s', _sortedNames2); 33327 } 33328 33329 if (componentWillMountUniqueNames.size > 0) { 33330 var _sortedNames3 = setToSortedString(componentWillMountUniqueNames); 33331 33332 warn('componentWillMount has been renamed, and is not recommended for use. ' + 'See https://fb.me/react-unsafe-component-lifecycles for details.\n\n' + '* Move code with side effects to componentDidMount, and set initial state in the constructor.\n' + '* Rename componentWillMount to UNSAFE_componentWillMount to suppress ' + 'this warning in non-strict mode. In React 17.x, only the UNSAFE_ name will work. ' + 'To rename all deprecated lifecycles to their new names, you can run ' + '`npx react-codemod rename-unsafe-lifecycles` in your project source folder.\n' + '\nPlease update the following components: %s', _sortedNames3); 33333 } 33334 33335 if (componentWillReceivePropsUniqueNames.size > 0) { 33336 var _sortedNames4 = setToSortedString(componentWillReceivePropsUniqueNames); 33337 33338 warn('componentWillReceiveProps has been renamed, and is not recommended for use. ' + 'See https://fb.me/react-unsafe-component-lifecycles for details.\n\n' + '* Move data fetching code or side effects to componentDidUpdate.\n' + "* If you're updating state whenever props change, refactor your " + 'code to use memoization techniques or move it to ' + 'static getDerivedStateFromProps. Learn more at: https://fb.me/react-derived-state\n' + '* Rename componentWillReceiveProps to UNSAFE_componentWillReceiveProps to suppress ' + 'this warning in non-strict mode. In React 17.x, only the UNSAFE_ name will work. ' + 'To rename all deprecated lifecycles to their new names, you can run ' + '`npx react-codemod rename-unsafe-lifecycles` in your project source folder.\n' + '\nPlease update the following components: %s', _sortedNames4); 33339 } 33340 33341 if (componentWillUpdateUniqueNames.size > 0) { 33342 var _sortedNames5 = setToSortedString(componentWillUpdateUniqueNames); 33343 33344 warn('componentWillUpdate has been renamed, and is not recommended for use. ' + 'See https://fb.me/react-unsafe-component-lifecycles for details.\n\n' + '* Move data fetching code or side effects to componentDidUpdate.\n' + '* Rename componentWillUpdate to UNSAFE_componentWillUpdate to suppress ' + 'this warning in non-strict mode. In React 17.x, only the UNSAFE_ name will work. ' + 'To rename all deprecated lifecycles to their new names, you can run ' + '`npx react-codemod rename-unsafe-lifecycles` in your project source folder.\n' + '\nPlease update the following components: %s', _sortedNames5); 33345 } 33346 }; 33347 33348 var pendingLegacyContextWarning = new Map(); // Tracks components we have already warned about. 33349 33350 var didWarnAboutLegacyContext = new Set(); 33351 33352 ReactStrictModeWarnings.recordLegacyContextWarning = function (fiber, instance) { 33353 var strictRoot = findStrictRoot(fiber); 33354 33355 if (strictRoot === null) { 33356 error('Expected to find a StrictMode component in a strict mode tree. ' + 'This error is likely caused by a bug in React. Please file an issue.'); 33357 33358 return; 33359 } // Dedup strategy: Warn once per component. 33360 33361 33362 if (didWarnAboutLegacyContext.has(fiber.type)) { 33363 return; 33364 } 33365 33366 var warningsForRoot = pendingLegacyContextWarning.get(strictRoot); 33367 33368 if (fiber.type.contextTypes != null || fiber.type.childContextTypes != null || instance !== null && typeof instance.getChildContext === 'function') { 33369 if (warningsForRoot === undefined) { 33370 warningsForRoot = []; 33371 pendingLegacyContextWarning.set(strictRoot, warningsForRoot); 33372 } 33373 33374 warningsForRoot.push(fiber); 33375 } 33376 }; 33377 33378 ReactStrictModeWarnings.flushLegacyContextWarning = function () { 33379 pendingLegacyContextWarning.forEach(function (fiberArray, strictRoot) { 33380 if (fiberArray.length === 0) { 33381 return; 33382 } 33383 33384 var firstFiber = fiberArray[0]; 33385 var uniqueNames = new Set(); 33386 fiberArray.forEach(function (fiber) { 33387 uniqueNames.add(getComponentName(fiber.type) || 'Component'); 33388 didWarnAboutLegacyContext.add(fiber.type); 33389 }); 33390 var sortedNames = setToSortedString(uniqueNames); 33391 var firstComponentStack = getStackByFiberInDevAndProd(firstFiber); 33392 33393 error('Legacy context API has been detected within a strict-mode tree.' + '\n\nThe old API will be supported in all 16.x releases, but applications ' + 'using it should migrate to the new version.' + '\n\nPlease update the following components: %s' + '\n\nLearn more about this warning here: https://fb.me/react-legacy-context' + '%s', sortedNames, firstComponentStack); 33394 }); 33395 }; 33396 33397 ReactStrictModeWarnings.discardPendingWarnings = function () { 33398 pendingComponentWillMountWarnings = []; 33399 pendingUNSAFE_ComponentWillMountWarnings = []; 33400 pendingComponentWillReceivePropsWarnings = []; 33401 pendingUNSAFE_ComponentWillReceivePropsWarnings = []; 33402 pendingComponentWillUpdateWarnings = []; 33403 pendingUNSAFE_ComponentWillUpdateWarnings = []; 33404 pendingLegacyContextWarning = new Map(); 33405 }; 33406} 33407 33408var resolveFamily = null; // $FlowFixMe Flow gets confused by a WeakSet feature check below. 33409 33410var failedBoundaries = null; 33411var setRefreshHandler = function (handler) { 33412 { 33413 resolveFamily = handler; 33414 } 33415}; 33416function resolveFunctionForHotReloading(type) { 33417 { 33418 if (resolveFamily === null) { 33419 // Hot reloading is disabled. 33420 return type; 33421 } 33422 33423 var family = resolveFamily(type); 33424 33425 if (family === undefined) { 33426 return type; 33427 } // Use the latest known implementation. 33428 33429 33430 return family.current; 33431 } 33432} 33433function resolveClassForHotReloading(type) { 33434 // No implementation differences. 33435 return resolveFunctionForHotReloading(type); 33436} 33437function resolveForwardRefForHotReloading(type) { 33438 { 33439 if (resolveFamily === null) { 33440 // Hot reloading is disabled. 33441 return type; 33442 } 33443 33444 var family = resolveFamily(type); 33445 33446 if (family === undefined) { 33447 // Check if we're dealing with a real forwardRef. Don't want to crash early. 33448 if (type !== null && type !== undefined && typeof type.render === 'function') { 33449 // ForwardRef is special because its resolved .type is an object, 33450 // but it's possible that we only have its inner render function in the map. 33451 // If that inner render function is different, we'll build a new forwardRef type. 33452 var currentRender = resolveFunctionForHotReloading(type.render); 33453 33454 if (type.render !== currentRender) { 33455 var syntheticType = { 33456 $$typeof: REACT_FORWARD_REF_TYPE, 33457 render: currentRender 33458 }; 33459 33460 if (type.displayName !== undefined) { 33461 syntheticType.displayName = type.displayName; 33462 } 33463 33464 return syntheticType; 33465 } 33466 } 33467 33468 return type; 33469 } // Use the latest known implementation. 33470 33471 33472 return family.current; 33473 } 33474} 33475function isCompatibleFamilyForHotReloading(fiber, element) { 33476 { 33477 if (resolveFamily === null) { 33478 // Hot reloading is disabled. 33479 return false; 33480 } 33481 33482 var prevType = fiber.elementType; 33483 var nextType = element.type; // If we got here, we know types aren't === equal. 33484 33485 var needsCompareFamilies = false; 33486 var $$typeofNextType = typeof nextType === 'object' && nextType !== null ? nextType.$$typeof : null; 33487 33488 switch (fiber.tag) { 33489 case ClassComponent: 33490 { 33491 if (typeof nextType === 'function') { 33492 needsCompareFamilies = true; 33493 } 33494 33495 break; 33496 } 33497 33498 case FunctionComponent: 33499 { 33500 if (typeof nextType === 'function') { 33501 needsCompareFamilies = true; 33502 } else if ($$typeofNextType === REACT_LAZY_TYPE) { 33503 // We don't know the inner type yet. 33504 // We're going to assume that the lazy inner type is stable, 33505 // and so it is sufficient to avoid reconciling it away. 33506 // We're not going to unwrap or actually use the new lazy type. 33507 needsCompareFamilies = true; 33508 } 33509 33510 break; 33511 } 33512 33513 case ForwardRef: 33514 { 33515 if ($$typeofNextType === REACT_FORWARD_REF_TYPE) { 33516 needsCompareFamilies = true; 33517 } else if ($$typeofNextType === REACT_LAZY_TYPE) { 33518 needsCompareFamilies = true; 33519 } 33520 33521 break; 33522 } 33523 33524 case MemoComponent: 33525 case SimpleMemoComponent: 33526 { 33527 if ($$typeofNextType === REACT_MEMO_TYPE) { 33528 // TODO: if it was but can no longer be simple, 33529 // we shouldn't set this. 33530 needsCompareFamilies = true; 33531 } else if ($$typeofNextType === REACT_LAZY_TYPE) { 33532 needsCompareFamilies = true; 33533 } 33534 33535 break; 33536 } 33537 33538 default: 33539 return false; 33540 } // Check if both types have a family and it's the same one. 33541 33542 33543 if (needsCompareFamilies) { 33544 // Note: memo() and forwardRef() we'll compare outer rather than inner type. 33545 // This means both of them need to be registered to preserve state. 33546 // If we unwrapped and compared the inner types for wrappers instead, 33547 // then we would risk falsely saying two separate memo(Foo) 33548 // calls are equivalent because they wrap the same Foo function. 33549 var prevFamily = resolveFamily(prevType); 33550 33551 if (prevFamily !== undefined && prevFamily === resolveFamily(nextType)) { 33552 return true; 33553 } 33554 } 33555 33556 return false; 33557 } 33558} 33559function markFailedErrorBoundaryForHotReloading(fiber) { 33560 { 33561 if (resolveFamily === null) { 33562 // Hot reloading is disabled. 33563 return; 33564 } 33565 33566 if (typeof WeakSet !== 'function') { 33567 return; 33568 } 33569 33570 if (failedBoundaries === null) { 33571 failedBoundaries = new WeakSet(); 33572 } 33573 33574 failedBoundaries.add(fiber); 33575 } 33576} 33577var scheduleRefresh = function (root, update) { 33578 { 33579 if (resolveFamily === null) { 33580 // Hot reloading is disabled. 33581 return; 33582 } 33583 33584 var staleFamilies = update.staleFamilies, 33585 updatedFamilies = update.updatedFamilies; 33586 flushPassiveEffects(); 33587 flushSync(function () { 33588 scheduleFibersWithFamiliesRecursively(root.current, updatedFamilies, staleFamilies); 33589 }); 33590 } 33591}; 33592var scheduleRoot = function (root, element) { 33593 { 33594 if (root.context !== emptyContextObject) { 33595 // Super edge case: root has a legacy _renderSubtree context 33596 // but we don't know the parentComponent so we can't pass it. 33597 // Just ignore. We'll delete this with _renderSubtree code path later. 33598 return; 33599 } 33600 33601 flushPassiveEffects(); 33602 syncUpdates(function () { 33603 updateContainer(element, root, null, null); 33604 }); 33605 } 33606}; 33607 33608function scheduleFibersWithFamiliesRecursively(fiber, updatedFamilies, staleFamilies) { 33609 { 33610 var alternate = fiber.alternate, 33611 child = fiber.child, 33612 sibling = fiber.sibling, 33613 tag = fiber.tag, 33614 type = fiber.type; 33615 var candidateType = null; 33616 33617 switch (tag) { 33618 case FunctionComponent: 33619 case SimpleMemoComponent: 33620 case ClassComponent: 33621 candidateType = type; 33622 break; 33623 33624 case ForwardRef: 33625 candidateType = type.render; 33626 break; 33627 } 33628 33629 if (resolveFamily === null) { 33630 throw new Error('Expected resolveFamily to be set during hot reload.'); 33631 } 33632 33633 var needsRender = false; 33634 var needsRemount = false; 33635 33636 if (candidateType !== null) { 33637 var family = resolveFamily(candidateType); 33638 33639 if (family !== undefined) { 33640 if (staleFamilies.has(family)) { 33641 needsRemount = true; 33642 } else if (updatedFamilies.has(family)) { 33643 if (tag === ClassComponent) { 33644 needsRemount = true; 33645 } else { 33646 needsRender = true; 33647 } 33648 } 33649 } 33650 } 33651 33652 if (failedBoundaries !== null) { 33653 if (failedBoundaries.has(fiber) || alternate !== null && failedBoundaries.has(alternate)) { 33654 needsRemount = true; 33655 } 33656 } 33657 33658 if (needsRemount) { 33659 fiber._debugNeedsRemount = true; 33660 } 33661 33662 if (needsRemount || needsRender) { 33663 scheduleWork(fiber, Sync); 33664 } 33665 33666 if (child !== null && !needsRemount) { 33667 scheduleFibersWithFamiliesRecursively(child, updatedFamilies, staleFamilies); 33668 } 33669 33670 if (sibling !== null) { 33671 scheduleFibersWithFamiliesRecursively(sibling, updatedFamilies, staleFamilies); 33672 } 33673 } 33674} 33675 33676var findHostInstancesForRefresh = function (root, families) { 33677 { 33678 var hostInstances = new Set(); 33679 var types = new Set(families.map(function (family) { 33680 return family.current; 33681 })); 33682 findHostInstancesForMatchingFibersRecursively(root.current, types, hostInstances); 33683 return hostInstances; 33684 } 33685}; 33686 33687function findHostInstancesForMatchingFibersRecursively(fiber, types, hostInstances) { 33688 { 33689 var child = fiber.child, 33690 sibling = fiber.sibling, 33691 tag = fiber.tag, 33692 type = fiber.type; 33693 var candidateType = null; 33694 33695 switch (tag) { 33696 case FunctionComponent: 33697 case SimpleMemoComponent: 33698 case ClassComponent: 33699 candidateType = type; 33700 break; 33701 33702 case ForwardRef: 33703 candidateType = type.render; 33704 break; 33705 } 33706 33707 var didMatch = false; 33708 33709 if (candidateType !== null) { 33710 if (types.has(candidateType)) { 33711 didMatch = true; 33712 } 33713 } 33714 33715 if (didMatch) { 33716 // We have a match. This only drills down to the closest host components. 33717 // There's no need to search deeper because for the purpose of giving 33718 // visual feedback, "flashing" outermost parent rectangles is sufficient. 33719 findHostInstancesForFiberShallowly(fiber, hostInstances); 33720 } else { 33721 // If there's no match, maybe there will be one further down in the child tree. 33722 if (child !== null) { 33723 findHostInstancesForMatchingFibersRecursively(child, types, hostInstances); 33724 } 33725 } 33726 33727 if (sibling !== null) { 33728 findHostInstancesForMatchingFibersRecursively(sibling, types, hostInstances); 33729 } 33730 } 33731} 33732 33733function findHostInstancesForFiberShallowly(fiber, hostInstances) { 33734 { 33735 var foundHostInstances = findChildHostInstancesForFiberShallowly(fiber, hostInstances); 33736 33737 if (foundHostInstances) { 33738 return; 33739 } // If we didn't find any host children, fallback to closest host parent. 33740 33741 33742 var node = fiber; 33743 33744 while (true) { 33745 switch (node.tag) { 33746 case HostComponent: 33747 hostInstances.add(node.stateNode); 33748 return; 33749 33750 case HostPortal: 33751 hostInstances.add(node.stateNode.containerInfo); 33752 return; 33753 33754 case HostRoot: 33755 hostInstances.add(node.stateNode.containerInfo); 33756 return; 33757 } 33758 33759 if (node.return === null) { 33760 throw new Error('Expected to reach root first.'); 33761 } 33762 33763 node = node.return; 33764 } 33765 } 33766} 33767 33768function findChildHostInstancesForFiberShallowly(fiber, hostInstances) { 33769 { 33770 var node = fiber; 33771 var foundHostInstances = false; 33772 33773 while (true) { 33774 if (node.tag === HostComponent) { 33775 // We got a match. 33776 foundHostInstances = true; 33777 hostInstances.add(node.stateNode); // There may still be more, so keep searching. 33778 } else if (node.child !== null) { 33779 node.child.return = node; 33780 node = node.child; 33781 continue; 33782 } 33783 33784 if (node === fiber) { 33785 return foundHostInstances; 33786 } 33787 33788 while (node.sibling === null) { 33789 if (node.return === null || node.return === fiber) { 33790 return foundHostInstances; 33791 } 33792 33793 node = node.return; 33794 } 33795 33796 node.sibling.return = node.return; 33797 node = node.sibling; 33798 } 33799 } 33800 33801 return false; 33802} 33803 33804function resolveDefaultProps(Component, baseProps) { 33805 if (Component && Component.defaultProps) { 33806 // Resolve default props. Taken from ReactElement 33807 var props = _assign({}, baseProps); 33808 33809 var defaultProps = Component.defaultProps; 33810 33811 for (var propName in defaultProps) { 33812 if (props[propName] === undefined) { 33813 props[propName] = defaultProps[propName]; 33814 } 33815 } 33816 33817 return props; 33818 } 33819 33820 return baseProps; 33821} 33822function readLazyComponentType(lazyComponent) { 33823 initializeLazyComponentType(lazyComponent); 33824 33825 if (lazyComponent._status !== Resolved) { 33826 throw lazyComponent._result; 33827 } 33828 33829 return lazyComponent._result; 33830} 33831 33832var valueCursor = createCursor(null); 33833var rendererSigil; 33834 33835{ 33836 // Use this to detect multiple renderers using the same context 33837 rendererSigil = {}; 33838} 33839 33840var currentlyRenderingFiber = null; 33841var lastContextDependency = null; 33842var lastContextWithAllBitsObserved = null; 33843var isDisallowedContextReadInDEV = false; 33844function resetContextDependencies() { 33845 // This is called right before React yields execution, to ensure `readContext` 33846 // cannot be called outside the render phase. 33847 currentlyRenderingFiber = null; 33848 lastContextDependency = null; 33849 lastContextWithAllBitsObserved = null; 33850 33851 { 33852 isDisallowedContextReadInDEV = false; 33853 } 33854} 33855function enterDisallowedContextReadInDEV() { 33856 { 33857 isDisallowedContextReadInDEV = true; 33858 } 33859} 33860function exitDisallowedContextReadInDEV() { 33861 { 33862 isDisallowedContextReadInDEV = false; 33863 } 33864} 33865function pushProvider(providerFiber, nextValue) { 33866 var context = providerFiber.type._context; 33867 33868 { 33869 push(valueCursor, context._currentValue, providerFiber); 33870 context._currentValue = nextValue; 33871 33872 { 33873 if (context._currentRenderer !== undefined && context._currentRenderer !== null && context._currentRenderer !== rendererSigil) { 33874 error('Detected multiple renderers concurrently rendering the ' + 'same context provider. This is currently unsupported.'); 33875 } 33876 33877 context._currentRenderer = rendererSigil; 33878 } 33879 } 33880} 33881function popProvider(providerFiber) { 33882 var currentValue = valueCursor.current; 33883 pop(valueCursor, providerFiber); 33884 var context = providerFiber.type._context; 33885 33886 { 33887 context._currentValue = currentValue; 33888 } 33889} 33890function calculateChangedBits(context, newValue, oldValue) { 33891 if (objectIs(oldValue, newValue)) { 33892 // No change 33893 return 0; 33894 } else { 33895 var changedBits = typeof context._calculateChangedBits === 'function' ? context._calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT; 33896 33897 { 33898 if ((changedBits & MAX_SIGNED_31_BIT_INT) !== changedBits) { 33899 error('calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: %s', changedBits); 33900 } 33901 } 33902 33903 return changedBits | 0; 33904 } 33905} 33906function scheduleWorkOnParentPath(parent, renderExpirationTime) { 33907 // Update the child expiration time of all the ancestors, including 33908 // the alternates. 33909 var node = parent; 33910 33911 while (node !== null) { 33912 var alternate = node.alternate; 33913 33914 if (node.childExpirationTime < renderExpirationTime) { 33915 node.childExpirationTime = renderExpirationTime; 33916 33917 if (alternate !== null && alternate.childExpirationTime < renderExpirationTime) { 33918 alternate.childExpirationTime = renderExpirationTime; 33919 } 33920 } else if (alternate !== null && alternate.childExpirationTime < renderExpirationTime) { 33921 alternate.childExpirationTime = renderExpirationTime; 33922 } else { 33923 // Neither alternate was updated, which means the rest of the 33924 // ancestor path already has sufficient priority. 33925 break; 33926 } 33927 33928 node = node.return; 33929 } 33930} 33931function propagateContextChange(workInProgress, context, changedBits, renderExpirationTime) { 33932 var fiber = workInProgress.child; 33933 33934 if (fiber !== null) { 33935 // Set the return pointer of the child to the work-in-progress fiber. 33936 fiber.return = workInProgress; 33937 } 33938 33939 while (fiber !== null) { 33940 var nextFiber = void 0; // Visit this fiber. 33941 33942 var list = fiber.dependencies; 33943 33944 if (list !== null) { 33945 nextFiber = fiber.child; 33946 var dependency = list.firstContext; 33947 33948 while (dependency !== null) { 33949 // Check if the context matches. 33950 if (dependency.context === context && (dependency.observedBits & changedBits) !== 0) { 33951 // Match! Schedule an update on this fiber. 33952 if (fiber.tag === ClassComponent) { 33953 // Schedule a force update on the work-in-progress. 33954 var update = createUpdate(renderExpirationTime, null); 33955 update.tag = ForceUpdate; // TODO: Because we don't have a work-in-progress, this will add the 33956 // update to the current fiber, too, which means it will persist even if 33957 // this render is thrown away. Since it's a race condition, not sure it's 33958 // worth fixing. 33959 33960 enqueueUpdate(fiber, update); 33961 } 33962 33963 if (fiber.expirationTime < renderExpirationTime) { 33964 fiber.expirationTime = renderExpirationTime; 33965 } 33966 33967 var alternate = fiber.alternate; 33968 33969 if (alternate !== null && alternate.expirationTime < renderExpirationTime) { 33970 alternate.expirationTime = renderExpirationTime; 33971 } 33972 33973 scheduleWorkOnParentPath(fiber.return, renderExpirationTime); // Mark the expiration time on the list, too. 33974 33975 if (list.expirationTime < renderExpirationTime) { 33976 list.expirationTime = renderExpirationTime; 33977 } // Since we already found a match, we can stop traversing the 33978 // dependency list. 33979 33980 33981 break; 33982 } 33983 33984 dependency = dependency.next; 33985 } 33986 } else if (fiber.tag === ContextProvider) { 33987 // Don't scan deeper if this is a matching provider 33988 nextFiber = fiber.type === workInProgress.type ? null : fiber.child; 33989 } else { 33990 // Traverse down. 33991 nextFiber = fiber.child; 33992 } 33993 33994 if (nextFiber !== null) { 33995 // Set the return pointer of the child to the work-in-progress fiber. 33996 nextFiber.return = fiber; 33997 } else { 33998 // No child. Traverse to next sibling. 33999 nextFiber = fiber; 34000 34001 while (nextFiber !== null) { 34002 if (nextFiber === workInProgress) { 34003 // We're back to the root of this subtree. Exit. 34004 nextFiber = null; 34005 break; 34006 } 34007 34008 var sibling = nextFiber.sibling; 34009 34010 if (sibling !== null) { 34011 // Set the return pointer of the sibling to the work-in-progress fiber. 34012 sibling.return = nextFiber.return; 34013 nextFiber = sibling; 34014 break; 34015 } // No more siblings. Traverse up. 34016 34017 34018 nextFiber = nextFiber.return; 34019 } 34020 } 34021 34022 fiber = nextFiber; 34023 } 34024} 34025function prepareToReadContext(workInProgress, renderExpirationTime) { 34026 currentlyRenderingFiber = workInProgress; 34027 lastContextDependency = null; 34028 lastContextWithAllBitsObserved = null; 34029 var dependencies = workInProgress.dependencies; 34030 34031 if (dependencies !== null) { 34032 var firstContext = dependencies.firstContext; 34033 34034 if (firstContext !== null) { 34035 if (dependencies.expirationTime >= renderExpirationTime) { 34036 // Context list has a pending update. Mark that this fiber performed work. 34037 markWorkInProgressReceivedUpdate(); 34038 } // Reset the work-in-progress list 34039 34040 34041 dependencies.firstContext = null; 34042 } 34043 } 34044} 34045function readContext(context, observedBits) { 34046 { 34047 // This warning would fire if you read context inside a Hook like useMemo. 34048 // Unlike the class check below, it's not enforced in production for perf. 34049 if (isDisallowedContextReadInDEV) { 34050 error('Context can only be read while React is rendering. ' + 'In classes, you can read it in the render method or getDerivedStateFromProps. ' + 'In function components, you can read it directly in the function body, but not ' + 'inside Hooks like useReducer() or useMemo().'); 34051 } 34052 } 34053 34054 if (lastContextWithAllBitsObserved === context) ; else if (observedBits === false || observedBits === 0) ; else { 34055 var resolvedObservedBits; // Avoid deopting on observable arguments or heterogeneous types. 34056 34057 if (typeof observedBits !== 'number' || observedBits === MAX_SIGNED_31_BIT_INT) { 34058 // Observe all updates. 34059 lastContextWithAllBitsObserved = context; 34060 resolvedObservedBits = MAX_SIGNED_31_BIT_INT; 34061 } else { 34062 resolvedObservedBits = observedBits; 34063 } 34064 34065 var contextItem = { 34066 context: context, 34067 observedBits: resolvedObservedBits, 34068 next: null 34069 }; 34070 34071 if (lastContextDependency === null) { 34072 if (!(currentlyRenderingFiber !== null)) { 34073 { 34074 throw Error( "Context can only be read while React is rendering. In classes, you can read it in the render method or getDerivedStateFromProps. In function components, you can read it directly in the function body, but not inside Hooks like useReducer() or useMemo()." ); 34075 } 34076 } // This is the first dependency for this component. Create a new list. 34077 34078 34079 lastContextDependency = contextItem; 34080 currentlyRenderingFiber.dependencies = { 34081 expirationTime: NoWork, 34082 firstContext: contextItem, 34083 responders: null 34084 }; 34085 } else { 34086 // Append a new context item. 34087 lastContextDependency = lastContextDependency.next = contextItem; 34088 } 34089 } 34090 34091 return context._currentValue ; 34092} 34093 34094var UpdateState = 0; 34095var ReplaceState = 1; 34096var ForceUpdate = 2; 34097var CaptureUpdate = 3; // Global state that is reset at the beginning of calling `processUpdateQueue`. 34098// It should only be read right after calling `processUpdateQueue`, via 34099// `checkHasForceUpdateAfterProcessing`. 34100 34101var hasForceUpdate = false; 34102var didWarnUpdateInsideUpdate; 34103var currentlyProcessingQueue; 34104 34105{ 34106 didWarnUpdateInsideUpdate = false; 34107 currentlyProcessingQueue = null; 34108} 34109 34110function initializeUpdateQueue(fiber) { 34111 var queue = { 34112 baseState: fiber.memoizedState, 34113 baseQueue: null, 34114 shared: { 34115 pending: null 34116 }, 34117 effects: null 34118 }; 34119 fiber.updateQueue = queue; 34120} 34121function cloneUpdateQueue(current, workInProgress) { 34122 // Clone the update queue from current. Unless it's already a clone. 34123 var queue = workInProgress.updateQueue; 34124 var currentQueue = current.updateQueue; 34125 34126 if (queue === currentQueue) { 34127 var clone = { 34128 baseState: currentQueue.baseState, 34129 baseQueue: currentQueue.baseQueue, 34130 shared: currentQueue.shared, 34131 effects: currentQueue.effects 34132 }; 34133 workInProgress.updateQueue = clone; 34134 } 34135} 34136function createUpdate(expirationTime, suspenseConfig) { 34137 var update = { 34138 expirationTime: expirationTime, 34139 suspenseConfig: suspenseConfig, 34140 tag: UpdateState, 34141 payload: null, 34142 callback: null, 34143 next: null 34144 }; 34145 update.next = update; 34146 34147 { 34148 update.priority = getCurrentPriorityLevel(); 34149 } 34150 34151 return update; 34152} 34153function enqueueUpdate(fiber, update) { 34154 var updateQueue = fiber.updateQueue; 34155 34156 if (updateQueue === null) { 34157 // Only occurs if the fiber has been unmounted. 34158 return; 34159 } 34160 34161 var sharedQueue = updateQueue.shared; 34162 var pending = sharedQueue.pending; 34163 34164 if (pending === null) { 34165 // This is the first update. Create a circular list. 34166 update.next = update; 34167 } else { 34168 update.next = pending.next; 34169 pending.next = update; 34170 } 34171 34172 sharedQueue.pending = update; 34173 34174 { 34175 if (currentlyProcessingQueue === sharedQueue && !didWarnUpdateInsideUpdate) { 34176 error('An update (setState, replaceState, or forceUpdate) was scheduled ' + 'from inside an update function. Update functions should be pure, ' + 'with zero side-effects. Consider using componentDidUpdate or a ' + 'callback.'); 34177 34178 didWarnUpdateInsideUpdate = true; 34179 } 34180 } 34181} 34182function enqueueCapturedUpdate(workInProgress, update) { 34183 var current = workInProgress.alternate; 34184 34185 if (current !== null) { 34186 // Ensure the work-in-progress queue is a clone 34187 cloneUpdateQueue(current, workInProgress); 34188 } // Captured updates go only on the work-in-progress queue. 34189 34190 34191 var queue = workInProgress.updateQueue; // Append the update to the end of the list. 34192 34193 var last = queue.baseQueue; 34194 34195 if (last === null) { 34196 queue.baseQueue = update.next = update; 34197 update.next = update; 34198 } else { 34199 update.next = last.next; 34200 last.next = update; 34201 } 34202} 34203 34204function getStateFromUpdate(workInProgress, queue, update, prevState, nextProps, instance) { 34205 switch (update.tag) { 34206 case ReplaceState: 34207 { 34208 var payload = update.payload; 34209 34210 if (typeof payload === 'function') { 34211 // Updater function 34212 { 34213 enterDisallowedContextReadInDEV(); 34214 34215 if ( workInProgress.mode & StrictMode) { 34216 payload.call(instance, prevState, nextProps); 34217 } 34218 } 34219 34220 var nextState = payload.call(instance, prevState, nextProps); 34221 34222 { 34223 exitDisallowedContextReadInDEV(); 34224 } 34225 34226 return nextState; 34227 } // State object 34228 34229 34230 return payload; 34231 } 34232 34233 case CaptureUpdate: 34234 { 34235 workInProgress.effectTag = workInProgress.effectTag & ~ShouldCapture | DidCapture; 34236 } 34237 // Intentional fallthrough 34238 34239 case UpdateState: 34240 { 34241 var _payload = update.payload; 34242 var partialState; 34243 34244 if (typeof _payload === 'function') { 34245 // Updater function 34246 { 34247 enterDisallowedContextReadInDEV(); 34248 34249 if ( workInProgress.mode & StrictMode) { 34250 _payload.call(instance, prevState, nextProps); 34251 } 34252 } 34253 34254 partialState = _payload.call(instance, prevState, nextProps); 34255 34256 { 34257 exitDisallowedContextReadInDEV(); 34258 } 34259 } else { 34260 // Partial state object 34261 partialState = _payload; 34262 } 34263 34264 if (partialState === null || partialState === undefined) { 34265 // Null and undefined are treated as no-ops. 34266 return prevState; 34267 } // Merge the partial state and the previous state. 34268 34269 34270 return _assign({}, prevState, partialState); 34271 } 34272 34273 case ForceUpdate: 34274 { 34275 hasForceUpdate = true; 34276 return prevState; 34277 } 34278 } 34279 34280 return prevState; 34281} 34282 34283function processUpdateQueue(workInProgress, props, instance, renderExpirationTime) { 34284 // This is always non-null on a ClassComponent or HostRoot 34285 var queue = workInProgress.updateQueue; 34286 hasForceUpdate = false; 34287 34288 { 34289 currentlyProcessingQueue = queue.shared; 34290 } // The last rebase update that is NOT part of the base state. 34291 34292 34293 var baseQueue = queue.baseQueue; // The last pending update that hasn't been processed yet. 34294 34295 var pendingQueue = queue.shared.pending; 34296 34297 if (pendingQueue !== null) { 34298 // We have new updates that haven't been processed yet. 34299 // We'll add them to the base queue. 34300 if (baseQueue !== null) { 34301 // Merge the pending queue and the base queue. 34302 var baseFirst = baseQueue.next; 34303 var pendingFirst = pendingQueue.next; 34304 baseQueue.next = pendingFirst; 34305 pendingQueue.next = baseFirst; 34306 } 34307 34308 baseQueue = pendingQueue; 34309 queue.shared.pending = null; // TODO: Pass `current` as argument 34310 34311 var current = workInProgress.alternate; 34312 34313 if (current !== null) { 34314 var currentQueue = current.updateQueue; 34315 34316 if (currentQueue !== null) { 34317 currentQueue.baseQueue = pendingQueue; 34318 } 34319 } 34320 } // These values may change as we process the queue. 34321 34322 34323 if (baseQueue !== null) { 34324 var first = baseQueue.next; // Iterate through the list of updates to compute the result. 34325 34326 var newState = queue.baseState; 34327 var newExpirationTime = NoWork; 34328 var newBaseState = null; 34329 var newBaseQueueFirst = null; 34330 var newBaseQueueLast = null; 34331 34332 if (first !== null) { 34333 var update = first; 34334 34335 do { 34336 var updateExpirationTime = update.expirationTime; 34337 34338 if (updateExpirationTime < renderExpirationTime) { 34339 // Priority is insufficient. Skip this update. If this is the first 34340 // skipped update, the previous update/state is the new base 34341 // update/state. 34342 var clone = { 34343 expirationTime: update.expirationTime, 34344 suspenseConfig: update.suspenseConfig, 34345 tag: update.tag, 34346 payload: update.payload, 34347 callback: update.callback, 34348 next: null 34349 }; 34350 34351 if (newBaseQueueLast === null) { 34352 newBaseQueueFirst = newBaseQueueLast = clone; 34353 newBaseState = newState; 34354 } else { 34355 newBaseQueueLast = newBaseQueueLast.next = clone; 34356 } // Update the remaining priority in the queue. 34357 34358 34359 if (updateExpirationTime > newExpirationTime) { 34360 newExpirationTime = updateExpirationTime; 34361 } 34362 } else { 34363 // This update does have sufficient priority. 34364 if (newBaseQueueLast !== null) { 34365 var _clone = { 34366 expirationTime: Sync, 34367 // This update is going to be committed so we never want uncommit it. 34368 suspenseConfig: update.suspenseConfig, 34369 tag: update.tag, 34370 payload: update.payload, 34371 callback: update.callback, 34372 next: null 34373 }; 34374 newBaseQueueLast = newBaseQueueLast.next = _clone; 34375 } // Mark the event time of this update as relevant to this render pass. 34376 // TODO: This should ideally use the true event time of this update rather than 34377 // its priority which is a derived and not reverseable value. 34378 // TODO: We should skip this update if it was already committed but currently 34379 // we have no way of detecting the difference between a committed and suspended 34380 // update here. 34381 34382 34383 markRenderEventTimeAndConfig(updateExpirationTime, update.suspenseConfig); // Process this update. 34384 34385 newState = getStateFromUpdate(workInProgress, queue, update, newState, props, instance); 34386 var callback = update.callback; 34387 34388 if (callback !== null) { 34389 workInProgress.effectTag |= Callback; 34390 var effects = queue.effects; 34391 34392 if (effects === null) { 34393 queue.effects = [update]; 34394 } else { 34395 effects.push(update); 34396 } 34397 } 34398 } 34399 34400 update = update.next; 34401 34402 if (update === null || update === first) { 34403 pendingQueue = queue.shared.pending; 34404 34405 if (pendingQueue === null) { 34406 break; 34407 } else { 34408 // An update was scheduled from inside a reducer. Add the new 34409 // pending updates to the end of the list and keep processing. 34410 update = baseQueue.next = pendingQueue.next; 34411 pendingQueue.next = first; 34412 queue.baseQueue = baseQueue = pendingQueue; 34413 queue.shared.pending = null; 34414 } 34415 } 34416 } while (true); 34417 } 34418 34419 if (newBaseQueueLast === null) { 34420 newBaseState = newState; 34421 } else { 34422 newBaseQueueLast.next = newBaseQueueFirst; 34423 } 34424 34425 queue.baseState = newBaseState; 34426 queue.baseQueue = newBaseQueueLast; // Set the remaining expiration time to be whatever is remaining in the queue. 34427 // This should be fine because the only two other things that contribute to 34428 // expiration time are props and context. We're already in the middle of the 34429 // begin phase by the time we start processing the queue, so we've already 34430 // dealt with the props. Context in components that specify 34431 // shouldComponentUpdate is tricky; but we'll have to account for 34432 // that regardless. 34433 34434 markUnprocessedUpdateTime(newExpirationTime); 34435 workInProgress.expirationTime = newExpirationTime; 34436 workInProgress.memoizedState = newState; 34437 } 34438 34439 { 34440 currentlyProcessingQueue = null; 34441 } 34442} 34443 34444function callCallback(callback, context) { 34445 if (!(typeof callback === 'function')) { 34446 { 34447 throw Error( "Invalid argument passed as callback. Expected a function. Instead received: " + callback ); 34448 } 34449 } 34450 34451 callback.call(context); 34452} 34453 34454function resetHasForceUpdateBeforeProcessing() { 34455 hasForceUpdate = false; 34456} 34457function checkHasForceUpdateAfterProcessing() { 34458 return hasForceUpdate; 34459} 34460function commitUpdateQueue(finishedWork, finishedQueue, instance) { 34461 // Commit the effects 34462 var effects = finishedQueue.effects; 34463 finishedQueue.effects = null; 34464 34465 if (effects !== null) { 34466 for (var i = 0; i < effects.length; i++) { 34467 var effect = effects[i]; 34468 var callback = effect.callback; 34469 34470 if (callback !== null) { 34471 effect.callback = null; 34472 callCallback(callback, instance); 34473 } 34474 } 34475 } 34476} 34477 34478var ReactCurrentBatchConfig = ReactSharedInternals.ReactCurrentBatchConfig; 34479function requestCurrentSuspenseConfig() { 34480 return ReactCurrentBatchConfig.suspense; 34481} 34482 34483var fakeInternalInstance = {}; 34484var isArray = Array.isArray; // React.Component uses a shared frozen object by default. 34485// We'll use it to determine whether we need to initialize legacy refs. 34486 34487var emptyRefsObject = new React.Component().refs; 34488var didWarnAboutStateAssignmentForComponent; 34489var didWarnAboutUninitializedState; 34490var didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate; 34491var didWarnAboutLegacyLifecyclesAndDerivedState; 34492var didWarnAboutUndefinedDerivedState; 34493var warnOnUndefinedDerivedState; 34494var warnOnInvalidCallback; 34495var didWarnAboutDirectlyAssigningPropsToState; 34496var didWarnAboutContextTypeAndContextTypes; 34497var didWarnAboutInvalidateContextType; 34498 34499{ 34500 didWarnAboutStateAssignmentForComponent = new Set(); 34501 didWarnAboutUninitializedState = new Set(); 34502 didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate = new Set(); 34503 didWarnAboutLegacyLifecyclesAndDerivedState = new Set(); 34504 didWarnAboutDirectlyAssigningPropsToState = new Set(); 34505 didWarnAboutUndefinedDerivedState = new Set(); 34506 didWarnAboutContextTypeAndContextTypes = new Set(); 34507 didWarnAboutInvalidateContextType = new Set(); 34508 var didWarnOnInvalidCallback = new Set(); 34509 34510 warnOnInvalidCallback = function (callback, callerName) { 34511 if (callback === null || typeof callback === 'function') { 34512 return; 34513 } 34514 34515 var key = callerName + "_" + callback; 34516 34517 if (!didWarnOnInvalidCallback.has(key)) { 34518 didWarnOnInvalidCallback.add(key); 34519 34520 error('%s(...): Expected the last optional `callback` argument to be a ' + 'function. Instead received: %s.', callerName, callback); 34521 } 34522 }; 34523 34524 warnOnUndefinedDerivedState = function (type, partialState) { 34525 if (partialState === undefined) { 34526 var componentName = getComponentName(type) || 'Component'; 34527 34528 if (!didWarnAboutUndefinedDerivedState.has(componentName)) { 34529 didWarnAboutUndefinedDerivedState.add(componentName); 34530 34531 error('%s.getDerivedStateFromProps(): A valid state object (or null) must be returned. ' + 'You have returned undefined.', componentName); 34532 } 34533 } 34534 }; // This is so gross but it's at least non-critical and can be removed if 34535 // it causes problems. This is meant to give a nicer error message for 34536 // ReactDOM15.unstable_renderSubtreeIntoContainer(reactDOM16Component, 34537 // ...)) which otherwise throws a "_processChildContext is not a function" 34538 // exception. 34539 34540 34541 Object.defineProperty(fakeInternalInstance, '_processChildContext', { 34542 enumerable: false, 34543 value: function () { 34544 { 34545 { 34546 throw Error( "_processChildContext is not available in React 16+. This likely means you have multiple copies of React and are attempting to nest a React 15 tree inside a React 16 tree using unstable_renderSubtreeIntoContainer, which isn't supported. Try to make sure you have only one copy of React (and ideally, switch to ReactDOM.createPortal)." ); 34547 } 34548 } 34549 } 34550 }); 34551 Object.freeze(fakeInternalInstance); 34552} 34553 34554function applyDerivedStateFromProps(workInProgress, ctor, getDerivedStateFromProps, nextProps) { 34555 var prevState = workInProgress.memoizedState; 34556 34557 { 34558 if ( workInProgress.mode & StrictMode) { 34559 // Invoke the function an extra time to help detect side-effects. 34560 getDerivedStateFromProps(nextProps, prevState); 34561 } 34562 } 34563 34564 var partialState = getDerivedStateFromProps(nextProps, prevState); 34565 34566 { 34567 warnOnUndefinedDerivedState(ctor, partialState); 34568 } // Merge the partial state and the previous state. 34569 34570 34571 var memoizedState = partialState === null || partialState === undefined ? prevState : _assign({}, prevState, partialState); 34572 workInProgress.memoizedState = memoizedState; // Once the update queue is empty, persist the derived state onto the 34573 // base state. 34574 34575 if (workInProgress.expirationTime === NoWork) { 34576 // Queue is always non-null for classes 34577 var updateQueue = workInProgress.updateQueue; 34578 updateQueue.baseState = memoizedState; 34579 } 34580} 34581var classComponentUpdater = { 34582 isMounted: isMounted, 34583 enqueueSetState: function (inst, payload, callback) { 34584 var fiber = get(inst); 34585 var currentTime = requestCurrentTimeForUpdate(); 34586 var suspenseConfig = requestCurrentSuspenseConfig(); 34587 var expirationTime = computeExpirationForFiber(currentTime, fiber, suspenseConfig); 34588 var update = createUpdate(expirationTime, suspenseConfig); 34589 update.payload = payload; 34590 34591 if (callback !== undefined && callback !== null) { 34592 { 34593 warnOnInvalidCallback(callback, 'setState'); 34594 } 34595 34596 update.callback = callback; 34597 } 34598 34599 enqueueUpdate(fiber, update); 34600 scheduleWork(fiber, expirationTime); 34601 }, 34602 enqueueReplaceState: function (inst, payload, callback) { 34603 var fiber = get(inst); 34604 var currentTime = requestCurrentTimeForUpdate(); 34605 var suspenseConfig = requestCurrentSuspenseConfig(); 34606 var expirationTime = computeExpirationForFiber(currentTime, fiber, suspenseConfig); 34607 var update = createUpdate(expirationTime, suspenseConfig); 34608 update.tag = ReplaceState; 34609 update.payload = payload; 34610 34611 if (callback !== undefined && callback !== null) { 34612 { 34613 warnOnInvalidCallback(callback, 'replaceState'); 34614 } 34615 34616 update.callback = callback; 34617 } 34618 34619 enqueueUpdate(fiber, update); 34620 scheduleWork(fiber, expirationTime); 34621 }, 34622 enqueueForceUpdate: function (inst, callback) { 34623 var fiber = get(inst); 34624 var currentTime = requestCurrentTimeForUpdate(); 34625 var suspenseConfig = requestCurrentSuspenseConfig(); 34626 var expirationTime = computeExpirationForFiber(currentTime, fiber, suspenseConfig); 34627 var update = createUpdate(expirationTime, suspenseConfig); 34628 update.tag = ForceUpdate; 34629 34630 if (callback !== undefined && callback !== null) { 34631 { 34632 warnOnInvalidCallback(callback, 'forceUpdate'); 34633 } 34634 34635 update.callback = callback; 34636 } 34637 34638 enqueueUpdate(fiber, update); 34639 scheduleWork(fiber, expirationTime); 34640 } 34641}; 34642 34643function checkShouldComponentUpdate(workInProgress, ctor, oldProps, newProps, oldState, newState, nextContext) { 34644 var instance = workInProgress.stateNode; 34645 34646 if (typeof instance.shouldComponentUpdate === 'function') { 34647 { 34648 if ( workInProgress.mode & StrictMode) { 34649 // Invoke the function an extra time to help detect side-effects. 34650 instance.shouldComponentUpdate(newProps, newState, nextContext); 34651 } 34652 } 34653 34654 startPhaseTimer(workInProgress, 'shouldComponentUpdate'); 34655 var shouldUpdate = instance.shouldComponentUpdate(newProps, newState, nextContext); 34656 stopPhaseTimer(); 34657 34658 { 34659 if (shouldUpdate === undefined) { 34660 error('%s.shouldComponentUpdate(): Returned undefined instead of a ' + 'boolean value. Make sure to return true or false.', getComponentName(ctor) || 'Component'); 34661 } 34662 } 34663 34664 return shouldUpdate; 34665 } 34666 34667 if (ctor.prototype && ctor.prototype.isPureReactComponent) { 34668 return !shallowEqual(oldProps, newProps) || !shallowEqual(oldState, newState); 34669 } 34670 34671 return true; 34672} 34673 34674function checkClassInstance(workInProgress, ctor, newProps) { 34675 var instance = workInProgress.stateNode; 34676 34677 { 34678 var name = getComponentName(ctor) || 'Component'; 34679 var renderPresent = instance.render; 34680 34681 if (!renderPresent) { 34682 if (ctor.prototype && typeof ctor.prototype.render === 'function') { 34683 error('%s(...): No `render` method found on the returned component ' + 'instance: did you accidentally return an object from the constructor?', name); 34684 } else { 34685 error('%s(...): No `render` method found on the returned component ' + 'instance: you may have forgotten to define `render`.', name); 34686 } 34687 } 34688 34689 if (instance.getInitialState && !instance.getInitialState.isReactClassApproved && !instance.state) { 34690 error('getInitialState was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Did you mean to define a state property instead?', name); 34691 } 34692 34693 if (instance.getDefaultProps && !instance.getDefaultProps.isReactClassApproved) { 34694 error('getDefaultProps was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Use a static property to define defaultProps instead.', name); 34695 } 34696 34697 if (instance.propTypes) { 34698 error('propTypes was defined as an instance property on %s. Use a static ' + 'property to define propTypes instead.', name); 34699 } 34700 34701 if (instance.contextType) { 34702 error('contextType was defined as an instance property on %s. Use a static ' + 'property to define contextType instead.', name); 34703 } 34704 34705 { 34706 if (instance.contextTypes) { 34707 error('contextTypes was defined as an instance property on %s. Use a static ' + 'property to define contextTypes instead.', name); 34708 } 34709 34710 if (ctor.contextType && ctor.contextTypes && !didWarnAboutContextTypeAndContextTypes.has(ctor)) { 34711 didWarnAboutContextTypeAndContextTypes.add(ctor); 34712 34713 error('%s declares both contextTypes and contextType static properties. ' + 'The legacy contextTypes property will be ignored.', name); 34714 } 34715 } 34716 34717 if (typeof instance.componentShouldUpdate === 'function') { 34718 error('%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', name); 34719 } 34720 34721 if (ctor.prototype && ctor.prototype.isPureReactComponent && typeof instance.shouldComponentUpdate !== 'undefined') { 34722 error('%s has a method called shouldComponentUpdate(). ' + 'shouldComponentUpdate should not be used when extending React.PureComponent. ' + 'Please extend React.Component if shouldComponentUpdate is used.', getComponentName(ctor) || 'A pure component'); 34723 } 34724 34725 if (typeof instance.componentDidUnmount === 'function') { 34726 error('%s has a method called ' + 'componentDidUnmount(). But there is no such lifecycle method. ' + 'Did you mean componentWillUnmount()?', name); 34727 } 34728 34729 if (typeof instance.componentDidReceiveProps === 'function') { 34730 error('%s has a method called ' + 'componentDidReceiveProps(). But there is no such lifecycle method. ' + 'If you meant to update the state in response to changing props, ' + 'use componentWillReceiveProps(). If you meant to fetch data or ' + 'run side-effects or mutations after React has updated the UI, use componentDidUpdate().', name); 34731 } 34732 34733 if (typeof instance.componentWillRecieveProps === 'function') { 34734 error('%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', name); 34735 } 34736 34737 if (typeof instance.UNSAFE_componentWillRecieveProps === 'function') { 34738 error('%s has a method called ' + 'UNSAFE_componentWillRecieveProps(). Did you mean UNSAFE_componentWillReceiveProps()?', name); 34739 } 34740 34741 var hasMutatedProps = instance.props !== newProps; 34742 34743 if (instance.props !== undefined && hasMutatedProps) { 34744 error('%s(...): When calling super() in `%s`, make sure to pass ' + "up the same props that your component's constructor was passed.", name, name); 34745 } 34746 34747 if (instance.defaultProps) { 34748 error('Setting defaultProps as an instance property on %s is not supported and will be ignored.' + ' Instead, define defaultProps as a static property on %s.', name, name); 34749 } 34750 34751 if (typeof instance.getSnapshotBeforeUpdate === 'function' && typeof instance.componentDidUpdate !== 'function' && !didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate.has(ctor)) { 34752 didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate.add(ctor); 34753 34754 error('%s: getSnapshotBeforeUpdate() should be used with componentDidUpdate(). ' + 'This component defines getSnapshotBeforeUpdate() only.', getComponentName(ctor)); 34755 } 34756 34757 if (typeof instance.getDerivedStateFromProps === 'function') { 34758 error('%s: getDerivedStateFromProps() is defined as an instance method ' + 'and will be ignored. Instead, declare it as a static method.', name); 34759 } 34760 34761 if (typeof instance.getDerivedStateFromError === 'function') { 34762 error('%s: getDerivedStateFromError() is defined as an instance method ' + 'and will be ignored. Instead, declare it as a static method.', name); 34763 } 34764 34765 if (typeof ctor.getSnapshotBeforeUpdate === 'function') { 34766 error('%s: getSnapshotBeforeUpdate() is defined as a static method ' + 'and will be ignored. Instead, declare it as an instance method.', name); 34767 } 34768 34769 var _state = instance.state; 34770 34771 if (_state && (typeof _state !== 'object' || isArray(_state))) { 34772 error('%s.state: must be set to an object or null', name); 34773 } 34774 34775 if (typeof instance.getChildContext === 'function' && typeof ctor.childContextTypes !== 'object') { 34776 error('%s.getChildContext(): childContextTypes must be defined in order to ' + 'use getChildContext().', name); 34777 } 34778 } 34779} 34780 34781function adoptClassInstance(workInProgress, instance) { 34782 instance.updater = classComponentUpdater; 34783 workInProgress.stateNode = instance; // The instance needs access to the fiber so that it can schedule updates 34784 34785 set(instance, workInProgress); 34786 34787 { 34788 instance._reactInternalInstance = fakeInternalInstance; 34789 } 34790} 34791 34792function constructClassInstance(workInProgress, ctor, props) { 34793 var isLegacyContextConsumer = false; 34794 var unmaskedContext = emptyContextObject; 34795 var context = emptyContextObject; 34796 var contextType = ctor.contextType; 34797 34798 { 34799 if ('contextType' in ctor) { 34800 var isValid = // Allow null for conditional declaration 34801 contextType === null || contextType !== undefined && contextType.$$typeof === REACT_CONTEXT_TYPE && contextType._context === undefined; // Not a <Context.Consumer> 34802 34803 if (!isValid && !didWarnAboutInvalidateContextType.has(ctor)) { 34804 didWarnAboutInvalidateContextType.add(ctor); 34805 var addendum = ''; 34806 34807 if (contextType === undefined) { 34808 addendum = ' However, it is set to undefined. ' + 'This can be caused by a typo or by mixing up named and default imports. ' + 'This can also happen due to a circular dependency, so ' + 'try moving the createContext() call to a separate file.'; 34809 } else if (typeof contextType !== 'object') { 34810 addendum = ' However, it is set to a ' + typeof contextType + '.'; 34811 } else if (contextType.$$typeof === REACT_PROVIDER_TYPE) { 34812 addendum = ' Did you accidentally pass the Context.Provider instead?'; 34813 } else if (contextType._context !== undefined) { 34814 // <Context.Consumer> 34815 addendum = ' Did you accidentally pass the Context.Consumer instead?'; 34816 } else { 34817 addendum = ' However, it is set to an object with keys {' + Object.keys(contextType).join(', ') + '}.'; 34818 } 34819 34820 error('%s defines an invalid contextType. ' + 'contextType should point to the Context object returned by React.createContext().%s', getComponentName(ctor) || 'Component', addendum); 34821 } 34822 } 34823 } 34824 34825 if (typeof contextType === 'object' && contextType !== null) { 34826 context = readContext(contextType); 34827 } else { 34828 unmaskedContext = getUnmaskedContext(workInProgress, ctor, true); 34829 var contextTypes = ctor.contextTypes; 34830 isLegacyContextConsumer = contextTypes !== null && contextTypes !== undefined; 34831 context = isLegacyContextConsumer ? getMaskedContext(workInProgress, unmaskedContext) : emptyContextObject; 34832 } // Instantiate twice to help detect side-effects. 34833 34834 34835 { 34836 if ( workInProgress.mode & StrictMode) { 34837 new ctor(props, context); // eslint-disable-line no-new 34838 } 34839 } 34840 34841 var instance = new ctor(props, context); 34842 var state = workInProgress.memoizedState = instance.state !== null && instance.state !== undefined ? instance.state : null; 34843 adoptClassInstance(workInProgress, instance); 34844 34845 { 34846 if (typeof ctor.getDerivedStateFromProps === 'function' && state === null) { 34847 var componentName = getComponentName(ctor) || 'Component'; 34848 34849 if (!didWarnAboutUninitializedState.has(componentName)) { 34850 didWarnAboutUninitializedState.add(componentName); 34851 34852 error('`%s` uses `getDerivedStateFromProps` but its initial state is ' + '%s. This is not recommended. Instead, define the initial state by ' + 'assigning an object to `this.state` in the constructor of `%s`. ' + 'This ensures that `getDerivedStateFromProps` arguments have a consistent shape.', componentName, instance.state === null ? 'null' : 'undefined', componentName); 34853 } 34854 } // If new component APIs are defined, "unsafe" lifecycles won't be called. 34855 // Warn about these lifecycles if they are present. 34856 // Don't warn about react-lifecycles-compat polyfilled methods though. 34857 34858 34859 if (typeof ctor.getDerivedStateFromProps === 'function' || typeof instance.getSnapshotBeforeUpdate === 'function') { 34860 var foundWillMountName = null; 34861 var foundWillReceivePropsName = null; 34862 var foundWillUpdateName = null; 34863 34864 if (typeof instance.componentWillMount === 'function' && instance.componentWillMount.__suppressDeprecationWarning !== true) { 34865 foundWillMountName = 'componentWillMount'; 34866 } else if (typeof instance.UNSAFE_componentWillMount === 'function') { 34867 foundWillMountName = 'UNSAFE_componentWillMount'; 34868 } 34869 34870 if (typeof instance.componentWillReceiveProps === 'function' && instance.componentWillReceiveProps.__suppressDeprecationWarning !== true) { 34871 foundWillReceivePropsName = 'componentWillReceiveProps'; 34872 } else if (typeof instance.UNSAFE_componentWillReceiveProps === 'function') { 34873 foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps'; 34874 } 34875 34876 if (typeof instance.componentWillUpdate === 'function' && instance.componentWillUpdate.__suppressDeprecationWarning !== true) { 34877 foundWillUpdateName = 'componentWillUpdate'; 34878 } else if (typeof instance.UNSAFE_componentWillUpdate === 'function') { 34879 foundWillUpdateName = 'UNSAFE_componentWillUpdate'; 34880 } 34881 34882 if (foundWillMountName !== null || foundWillReceivePropsName !== null || foundWillUpdateName !== null) { 34883 var _componentName = getComponentName(ctor) || 'Component'; 34884 34885 var newApiName = typeof ctor.getDerivedStateFromProps === 'function' ? 'getDerivedStateFromProps()' : 'getSnapshotBeforeUpdate()'; 34886 34887 if (!didWarnAboutLegacyLifecyclesAndDerivedState.has(_componentName)) { 34888 didWarnAboutLegacyLifecyclesAndDerivedState.add(_componentName); 34889 34890 error('Unsafe legacy lifecycles will not be called for components using new component APIs.\n\n' + '%s uses %s but also contains the following legacy lifecycles:%s%s%s\n\n' + 'The above lifecycles should be removed. Learn more about this warning here:\n' + 'https://fb.me/react-unsafe-component-lifecycles', _componentName, newApiName, foundWillMountName !== null ? "\n " + foundWillMountName : '', foundWillReceivePropsName !== null ? "\n " + foundWillReceivePropsName : '', foundWillUpdateName !== null ? "\n " + foundWillUpdateName : ''); 34891 } 34892 } 34893 } 34894 } // Cache unmasked context so we can avoid recreating masked context unless necessary. 34895 // ReactFiberContext usually updates this cache but can't for newly-created instances. 34896 34897 34898 if (isLegacyContextConsumer) { 34899 cacheContext(workInProgress, unmaskedContext, context); 34900 } 34901 34902 return instance; 34903} 34904 34905function callComponentWillMount(workInProgress, instance) { 34906 startPhaseTimer(workInProgress, 'componentWillMount'); 34907 var oldState = instance.state; 34908 34909 if (typeof instance.componentWillMount === 'function') { 34910 instance.componentWillMount(); 34911 } 34912 34913 if (typeof instance.UNSAFE_componentWillMount === 'function') { 34914 instance.UNSAFE_componentWillMount(); 34915 } 34916 34917 stopPhaseTimer(); 34918 34919 if (oldState !== instance.state) { 34920 { 34921 error('%s.componentWillMount(): Assigning directly to this.state is ' + "deprecated (except inside a component's " + 'constructor). Use setState instead.', getComponentName(workInProgress.type) || 'Component'); 34922 } 34923 34924 classComponentUpdater.enqueueReplaceState(instance, instance.state, null); 34925 } 34926} 34927 34928function callComponentWillReceiveProps(workInProgress, instance, newProps, nextContext) { 34929 var oldState = instance.state; 34930 startPhaseTimer(workInProgress, 'componentWillReceiveProps'); 34931 34932 if (typeof instance.componentWillReceiveProps === 'function') { 34933 instance.componentWillReceiveProps(newProps, nextContext); 34934 } 34935 34936 if (typeof instance.UNSAFE_componentWillReceiveProps === 'function') { 34937 instance.UNSAFE_componentWillReceiveProps(newProps, nextContext); 34938 } 34939 34940 stopPhaseTimer(); 34941 34942 if (instance.state !== oldState) { 34943 { 34944 var componentName = getComponentName(workInProgress.type) || 'Component'; 34945 34946 if (!didWarnAboutStateAssignmentForComponent.has(componentName)) { 34947 didWarnAboutStateAssignmentForComponent.add(componentName); 34948 34949 error('%s.componentWillReceiveProps(): Assigning directly to ' + "this.state is deprecated (except inside a component's " + 'constructor). Use setState instead.', componentName); 34950 } 34951 } 34952 34953 classComponentUpdater.enqueueReplaceState(instance, instance.state, null); 34954 } 34955} // Invokes the mount life-cycles on a previously never rendered instance. 34956 34957 34958function mountClassInstance(workInProgress, ctor, newProps, renderExpirationTime) { 34959 { 34960 checkClassInstance(workInProgress, ctor, newProps); 34961 } 34962 34963 var instance = workInProgress.stateNode; 34964 instance.props = newProps; 34965 instance.state = workInProgress.memoizedState; 34966 instance.refs = emptyRefsObject; 34967 initializeUpdateQueue(workInProgress); 34968 var contextType = ctor.contextType; 34969 34970 if (typeof contextType === 'object' && contextType !== null) { 34971 instance.context = readContext(contextType); 34972 } else { 34973 var unmaskedContext = getUnmaskedContext(workInProgress, ctor, true); 34974 instance.context = getMaskedContext(workInProgress, unmaskedContext); 34975 } 34976 34977 { 34978 if (instance.state === newProps) { 34979 var componentName = getComponentName(ctor) || 'Component'; 34980 34981 if (!didWarnAboutDirectlyAssigningPropsToState.has(componentName)) { 34982 didWarnAboutDirectlyAssigningPropsToState.add(componentName); 34983 34984 error('%s: It is not recommended to assign props directly to state ' + "because updates to props won't be reflected in state. " + 'In most cases, it is better to use props directly.', componentName); 34985 } 34986 } 34987 34988 if (workInProgress.mode & StrictMode) { 34989 ReactStrictModeWarnings.recordLegacyContextWarning(workInProgress, instance); 34990 } 34991 34992 { 34993 ReactStrictModeWarnings.recordUnsafeLifecycleWarnings(workInProgress, instance); 34994 } 34995 } 34996 34997 processUpdateQueue(workInProgress, newProps, instance, renderExpirationTime); 34998 instance.state = workInProgress.memoizedState; 34999 var getDerivedStateFromProps = ctor.getDerivedStateFromProps; 35000 35001 if (typeof getDerivedStateFromProps === 'function') { 35002 applyDerivedStateFromProps(workInProgress, ctor, getDerivedStateFromProps, newProps); 35003 instance.state = workInProgress.memoizedState; 35004 } // In order to support react-lifecycles-compat polyfilled components, 35005 // Unsafe lifecycles should not be invoked for components using the new APIs. 35006 35007 35008 if (typeof ctor.getDerivedStateFromProps !== 'function' && typeof instance.getSnapshotBeforeUpdate !== 'function' && (typeof instance.UNSAFE_componentWillMount === 'function' || typeof instance.componentWillMount === 'function')) { 35009 callComponentWillMount(workInProgress, instance); // If we had additional state updates during this life-cycle, let's 35010 // process them now. 35011 35012 processUpdateQueue(workInProgress, newProps, instance, renderExpirationTime); 35013 instance.state = workInProgress.memoizedState; 35014 } 35015 35016 if (typeof instance.componentDidMount === 'function') { 35017 workInProgress.effectTag |= Update; 35018 } 35019} 35020 35021function resumeMountClassInstance(workInProgress, ctor, newProps, renderExpirationTime) { 35022 var instance = workInProgress.stateNode; 35023 var oldProps = workInProgress.memoizedProps; 35024 instance.props = oldProps; 35025 var oldContext = instance.context; 35026 var contextType = ctor.contextType; 35027 var nextContext = emptyContextObject; 35028 35029 if (typeof contextType === 'object' && contextType !== null) { 35030 nextContext = readContext(contextType); 35031 } else { 35032 var nextLegacyUnmaskedContext = getUnmaskedContext(workInProgress, ctor, true); 35033 nextContext = getMaskedContext(workInProgress, nextLegacyUnmaskedContext); 35034 } 35035 35036 var getDerivedStateFromProps = ctor.getDerivedStateFromProps; 35037 var hasNewLifecycles = typeof getDerivedStateFromProps === 'function' || typeof instance.getSnapshotBeforeUpdate === 'function'; // Note: During these life-cycles, instance.props/instance.state are what 35038 // ever the previously attempted to render - not the "current". However, 35039 // during componentDidUpdate we pass the "current" props. 35040 // In order to support react-lifecycles-compat polyfilled components, 35041 // Unsafe lifecycles should not be invoked for components using the new APIs. 35042 35043 if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillReceiveProps === 'function' || typeof instance.componentWillReceiveProps === 'function')) { 35044 if (oldProps !== newProps || oldContext !== nextContext) { 35045 callComponentWillReceiveProps(workInProgress, instance, newProps, nextContext); 35046 } 35047 } 35048 35049 resetHasForceUpdateBeforeProcessing(); 35050 var oldState = workInProgress.memoizedState; 35051 var newState = instance.state = oldState; 35052 processUpdateQueue(workInProgress, newProps, instance, renderExpirationTime); 35053 newState = workInProgress.memoizedState; 35054 35055 if (oldProps === newProps && oldState === newState && !hasContextChanged() && !checkHasForceUpdateAfterProcessing()) { 35056 // If an update was already in progress, we should schedule an Update 35057 // effect even though we're bailing out, so that cWU/cDU are called. 35058 if (typeof instance.componentDidMount === 'function') { 35059 workInProgress.effectTag |= Update; 35060 } 35061 35062 return false; 35063 } 35064 35065 if (typeof getDerivedStateFromProps === 'function') { 35066 applyDerivedStateFromProps(workInProgress, ctor, getDerivedStateFromProps, newProps); 35067 newState = workInProgress.memoizedState; 35068 } 35069 35070 var shouldUpdate = checkHasForceUpdateAfterProcessing() || checkShouldComponentUpdate(workInProgress, ctor, oldProps, newProps, oldState, newState, nextContext); 35071 35072 if (shouldUpdate) { 35073 // In order to support react-lifecycles-compat polyfilled components, 35074 // Unsafe lifecycles should not be invoked for components using the new APIs. 35075 if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillMount === 'function' || typeof instance.componentWillMount === 'function')) { 35076 startPhaseTimer(workInProgress, 'componentWillMount'); 35077 35078 if (typeof instance.componentWillMount === 'function') { 35079 instance.componentWillMount(); 35080 } 35081 35082 if (typeof instance.UNSAFE_componentWillMount === 'function') { 35083 instance.UNSAFE_componentWillMount(); 35084 } 35085 35086 stopPhaseTimer(); 35087 } 35088 35089 if (typeof instance.componentDidMount === 'function') { 35090 workInProgress.effectTag |= Update; 35091 } 35092 } else { 35093 // If an update was already in progress, we should schedule an Update 35094 // effect even though we're bailing out, so that cWU/cDU are called. 35095 if (typeof instance.componentDidMount === 'function') { 35096 workInProgress.effectTag |= Update; 35097 } // If shouldComponentUpdate returned false, we should still update the 35098 // memoized state to indicate that this work can be reused. 35099 35100 35101 workInProgress.memoizedProps = newProps; 35102 workInProgress.memoizedState = newState; 35103 } // Update the existing instance's state, props, and context pointers even 35104 // if shouldComponentUpdate returns false. 35105 35106 35107 instance.props = newProps; 35108 instance.state = newState; 35109 instance.context = nextContext; 35110 return shouldUpdate; 35111} // Invokes the update life-cycles and returns false if it shouldn't rerender. 35112 35113 35114function updateClassInstance(current, workInProgress, ctor, newProps, renderExpirationTime) { 35115 var instance = workInProgress.stateNode; 35116 cloneUpdateQueue(current, workInProgress); 35117 var oldProps = workInProgress.memoizedProps; 35118 instance.props = workInProgress.type === workInProgress.elementType ? oldProps : resolveDefaultProps(workInProgress.type, oldProps); 35119 var oldContext = instance.context; 35120 var contextType = ctor.contextType; 35121 var nextContext = emptyContextObject; 35122 35123 if (typeof contextType === 'object' && contextType !== null) { 35124 nextContext = readContext(contextType); 35125 } else { 35126 var nextUnmaskedContext = getUnmaskedContext(workInProgress, ctor, true); 35127 nextContext = getMaskedContext(workInProgress, nextUnmaskedContext); 35128 } 35129 35130 var getDerivedStateFromProps = ctor.getDerivedStateFromProps; 35131 var hasNewLifecycles = typeof getDerivedStateFromProps === 'function' || typeof instance.getSnapshotBeforeUpdate === 'function'; // Note: During these life-cycles, instance.props/instance.state are what 35132 // ever the previously attempted to render - not the "current". However, 35133 // during componentDidUpdate we pass the "current" props. 35134 // In order to support react-lifecycles-compat polyfilled components, 35135 // Unsafe lifecycles should not be invoked for components using the new APIs. 35136 35137 if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillReceiveProps === 'function' || typeof instance.componentWillReceiveProps === 'function')) { 35138 if (oldProps !== newProps || oldContext !== nextContext) { 35139 callComponentWillReceiveProps(workInProgress, instance, newProps, nextContext); 35140 } 35141 } 35142 35143 resetHasForceUpdateBeforeProcessing(); 35144 var oldState = workInProgress.memoizedState; 35145 var newState = instance.state = oldState; 35146 processUpdateQueue(workInProgress, newProps, instance, renderExpirationTime); 35147 newState = workInProgress.memoizedState; 35148 35149 if (oldProps === newProps && oldState === newState && !hasContextChanged() && !checkHasForceUpdateAfterProcessing()) { 35150 // If an update was already in progress, we should schedule an Update 35151 // effect even though we're bailing out, so that cWU/cDU are called. 35152 if (typeof instance.componentDidUpdate === 'function') { 35153 if (oldProps !== current.memoizedProps || oldState !== current.memoizedState) { 35154 workInProgress.effectTag |= Update; 35155 } 35156 } 35157 35158 if (typeof instance.getSnapshotBeforeUpdate === 'function') { 35159 if (oldProps !== current.memoizedProps || oldState !== current.memoizedState) { 35160 workInProgress.effectTag |= Snapshot; 35161 } 35162 } 35163 35164 return false; 35165 } 35166 35167 if (typeof getDerivedStateFromProps === 'function') { 35168 applyDerivedStateFromProps(workInProgress, ctor, getDerivedStateFromProps, newProps); 35169 newState = workInProgress.memoizedState; 35170 } 35171 35172 var shouldUpdate = checkHasForceUpdateAfterProcessing() || checkShouldComponentUpdate(workInProgress, ctor, oldProps, newProps, oldState, newState, nextContext); 35173 35174 if (shouldUpdate) { 35175 // In order to support react-lifecycles-compat polyfilled components, 35176 // Unsafe lifecycles should not be invoked for components using the new APIs. 35177 if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillUpdate === 'function' || typeof instance.componentWillUpdate === 'function')) { 35178 startPhaseTimer(workInProgress, 'componentWillUpdate'); 35179 35180 if (typeof instance.componentWillUpdate === 'function') { 35181 instance.componentWillUpdate(newProps, newState, nextContext); 35182 } 35183 35184 if (typeof instance.UNSAFE_componentWillUpdate === 'function') { 35185 instance.UNSAFE_componentWillUpdate(newProps, newState, nextContext); 35186 } 35187 35188 stopPhaseTimer(); 35189 } 35190 35191 if (typeof instance.componentDidUpdate === 'function') { 35192 workInProgress.effectTag |= Update; 35193 } 35194 35195 if (typeof instance.getSnapshotBeforeUpdate === 'function') { 35196 workInProgress.effectTag |= Snapshot; 35197 } 35198 } else { 35199 // If an update was already in progress, we should schedule an Update 35200 // effect even though we're bailing out, so that cWU/cDU are called. 35201 if (typeof instance.componentDidUpdate === 'function') { 35202 if (oldProps !== current.memoizedProps || oldState !== current.memoizedState) { 35203 workInProgress.effectTag |= Update; 35204 } 35205 } 35206 35207 if (typeof instance.getSnapshotBeforeUpdate === 'function') { 35208 if (oldProps !== current.memoizedProps || oldState !== current.memoizedState) { 35209 workInProgress.effectTag |= Snapshot; 35210 } 35211 } // If shouldComponentUpdate returned false, we should still update the 35212 // memoized props/state to indicate that this work can be reused. 35213 35214 35215 workInProgress.memoizedProps = newProps; 35216 workInProgress.memoizedState = newState; 35217 } // Update the existing instance's state, props, and context pointers even 35218 // if shouldComponentUpdate returns false. 35219 35220 35221 instance.props = newProps; 35222 instance.state = newState; 35223 instance.context = nextContext; 35224 return shouldUpdate; 35225} 35226 35227var didWarnAboutMaps; 35228var didWarnAboutGenerators; 35229var didWarnAboutStringRefs; 35230var ownerHasKeyUseWarning; 35231var ownerHasFunctionTypeWarning; 35232 35233var warnForMissingKey = function (child) {}; 35234 35235{ 35236 didWarnAboutMaps = false; 35237 didWarnAboutGenerators = false; 35238 didWarnAboutStringRefs = {}; 35239 /** 35240 * Warn if there's no key explicitly set on dynamic arrays of children or 35241 * object keys are not valid. This allows us to keep track of children between 35242 * updates. 35243 */ 35244 35245 ownerHasKeyUseWarning = {}; 35246 ownerHasFunctionTypeWarning = {}; 35247 35248 warnForMissingKey = function (child) { 35249 if (child === null || typeof child !== 'object') { 35250 return; 35251 } 35252 35253 if (!child._store || child._store.validated || child.key != null) { 35254 return; 35255 } 35256 35257 if (!(typeof child._store === 'object')) { 35258 { 35259 throw Error( "React Component in warnForMissingKey should have a _store. This error is likely caused by a bug in React. Please file an issue." ); 35260 } 35261 } 35262 35263 child._store.validated = true; 35264 var currentComponentErrorInfo = 'Each child in a list should have a unique ' + '"key" prop. See https://fb.me/react-warning-keys for ' + 'more information.' + getCurrentFiberStackInDev(); 35265 35266 if (ownerHasKeyUseWarning[currentComponentErrorInfo]) { 35267 return; 35268 } 35269 35270 ownerHasKeyUseWarning[currentComponentErrorInfo] = true; 35271 35272 error('Each child in a list should have a unique ' + '"key" prop. See https://fb.me/react-warning-keys for ' + 'more information.'); 35273 }; 35274} 35275 35276var isArray$1 = Array.isArray; 35277 35278function coerceRef(returnFiber, current, element) { 35279 var mixedRef = element.ref; 35280 35281 if (mixedRef !== null && typeof mixedRef !== 'function' && typeof mixedRef !== 'object') { 35282 { 35283 // TODO: Clean this up once we turn on the string ref warning for 35284 // everyone, because the strict mode case will no longer be relevant 35285 if ((returnFiber.mode & StrictMode || warnAboutStringRefs) && // We warn in ReactElement.js if owner and self are equal for string refs 35286 // because these cannot be automatically converted to an arrow function 35287 // using a codemod. Therefore, we don't have to warn about string refs again. 35288 !(element._owner && element._self && element._owner.stateNode !== element._self)) { 35289 var componentName = getComponentName(returnFiber.type) || 'Component'; 35290 35291 if (!didWarnAboutStringRefs[componentName]) { 35292 { 35293 error('A string ref, "%s", has been found within a strict mode tree. ' + 'String refs are a source of potential bugs and should be avoided. ' + 'We recommend using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://fb.me/react-strict-mode-string-ref%s', mixedRef, getStackByFiberInDevAndProd(returnFiber)); 35294 } 35295 35296 didWarnAboutStringRefs[componentName] = true; 35297 } 35298 } 35299 } 35300 35301 if (element._owner) { 35302 var owner = element._owner; 35303 var inst; 35304 35305 if (owner) { 35306 var ownerFiber = owner; 35307 35308 if (!(ownerFiber.tag === ClassComponent)) { 35309 { 35310 throw Error( "Function components cannot have string refs. We recommend using useRef() instead. Learn more about using refs safely here: https://fb.me/react-strict-mode-string-ref" ); 35311 } 35312 } 35313 35314 inst = ownerFiber.stateNode; 35315 } 35316 35317 if (!inst) { 35318 { 35319 throw Error( "Missing owner for string ref " + mixedRef + ". This error is likely caused by a bug in React. Please file an issue." ); 35320 } 35321 } 35322 35323 var stringRef = '' + mixedRef; // Check if previous string ref matches new string ref 35324 35325 if (current !== null && current.ref !== null && typeof current.ref === 'function' && current.ref._stringRef === stringRef) { 35326 return current.ref; 35327 } 35328 35329 var ref = function (value) { 35330 var refs = inst.refs; 35331 35332 if (refs === emptyRefsObject) { 35333 // This is a lazy pooled frozen object, so we need to initialize. 35334 refs = inst.refs = {}; 35335 } 35336 35337 if (value === null) { 35338 delete refs[stringRef]; 35339 } else { 35340 refs[stringRef] = value; 35341 } 35342 }; 35343 35344 ref._stringRef = stringRef; 35345 return ref; 35346 } else { 35347 if (!(typeof mixedRef === 'string')) { 35348 { 35349 throw Error( "Expected ref to be a function, a string, an object returned by React.createRef(), or null." ); 35350 } 35351 } 35352 35353 if (!element._owner) { 35354 { 35355 throw Error( "Element ref was specified as a string (" + mixedRef + ") but no owner was set. This could happen for one of the following reasons:\n1. You may be adding a ref to a function component\n2. You may be adding a ref to a component that was not created inside a component's render method\n3. You have multiple copies of React loaded\nSee https://fb.me/react-refs-must-have-owner for more information." ); 35356 } 35357 } 35358 } 35359 } 35360 35361 return mixedRef; 35362} 35363 35364function throwOnInvalidObjectType(returnFiber, newChild) { 35365 if (returnFiber.type !== 'textarea') { 35366 var addendum = ''; 35367 35368 { 35369 addendum = ' If you meant to render a collection of children, use an array ' + 'instead.' + getCurrentFiberStackInDev(); 35370 } 35371 35372 { 35373 { 35374 throw Error( "Objects are not valid as a React child (found: " + (Object.prototype.toString.call(newChild) === '[object Object]' ? 'object with keys {' + Object.keys(newChild).join(', ') + '}' : newChild) + ")." + addendum ); 35375 } 35376 } 35377 } 35378} 35379 35380function warnOnFunctionType() { 35381 { 35382 var currentComponentErrorInfo = 'Functions are not valid as a React child. This may happen if ' + 'you return a Component instead of <Component /> from render. ' + 'Or maybe you meant to call this function rather than return it.' + getCurrentFiberStackInDev(); 35383 35384 if (ownerHasFunctionTypeWarning[currentComponentErrorInfo]) { 35385 return; 35386 } 35387 35388 ownerHasFunctionTypeWarning[currentComponentErrorInfo] = true; 35389 35390 error('Functions are not valid as a React child. This may happen if ' + 'you return a Component instead of <Component /> from render. ' + 'Or maybe you meant to call this function rather than return it.'); 35391 } 35392} // This wrapper function exists because I expect to clone the code in each path 35393// to be able to optimize each path individually by branching early. This needs 35394// a compiler or we can do it manually. Helpers that don't need this branching 35395// live outside of this function. 35396 35397 35398function ChildReconciler(shouldTrackSideEffects) { 35399 function deleteChild(returnFiber, childToDelete) { 35400 if (!shouldTrackSideEffects) { 35401 // Noop. 35402 return; 35403 } // Deletions are added in reversed order so we add it to the front. 35404 // At this point, the return fiber's effect list is empty except for 35405 // deletions, so we can just append the deletion to the list. The remaining 35406 // effects aren't added until the complete phase. Once we implement 35407 // resuming, this may not be true. 35408 35409 35410 var last = returnFiber.lastEffect; 35411 35412 if (last !== null) { 35413 last.nextEffect = childToDelete; 35414 returnFiber.lastEffect = childToDelete; 35415 } else { 35416 returnFiber.firstEffect = returnFiber.lastEffect = childToDelete; 35417 } 35418 35419 childToDelete.nextEffect = null; 35420 childToDelete.effectTag = Deletion; 35421 } 35422 35423 function deleteRemainingChildren(returnFiber, currentFirstChild) { 35424 if (!shouldTrackSideEffects) { 35425 // Noop. 35426 return null; 35427 } // TODO: For the shouldClone case, this could be micro-optimized a bit by 35428 // assuming that after the first child we've already added everything. 35429 35430 35431 var childToDelete = currentFirstChild; 35432 35433 while (childToDelete !== null) { 35434 deleteChild(returnFiber, childToDelete); 35435 childToDelete = childToDelete.sibling; 35436 } 35437 35438 return null; 35439 } 35440 35441 function mapRemainingChildren(returnFiber, currentFirstChild) { 35442 // Add the remaining children to a temporary map so that we can find them by 35443 // keys quickly. Implicit (null) keys get added to this set with their index 35444 // instead. 35445 var existingChildren = new Map(); 35446 var existingChild = currentFirstChild; 35447 35448 while (existingChild !== null) { 35449 if (existingChild.key !== null) { 35450 existingChildren.set(existingChild.key, existingChild); 35451 } else { 35452 existingChildren.set(existingChild.index, existingChild); 35453 } 35454 35455 existingChild = existingChild.sibling; 35456 } 35457 35458 return existingChildren; 35459 } 35460 35461 function useFiber(fiber, pendingProps) { 35462 // We currently set sibling to null and index to 0 here because it is easy 35463 // to forget to do before returning it. E.g. for the single child case. 35464 var clone = createWorkInProgress(fiber, pendingProps); 35465 clone.index = 0; 35466 clone.sibling = null; 35467 return clone; 35468 } 35469 35470 function placeChild(newFiber, lastPlacedIndex, newIndex) { 35471 newFiber.index = newIndex; 35472 35473 if (!shouldTrackSideEffects) { 35474 // Noop. 35475 return lastPlacedIndex; 35476 } 35477 35478 var current = newFiber.alternate; 35479 35480 if (current !== null) { 35481 var oldIndex = current.index; 35482 35483 if (oldIndex < lastPlacedIndex) { 35484 // This is a move. 35485 newFiber.effectTag = Placement; 35486 return lastPlacedIndex; 35487 } else { 35488 // This item can stay in place. 35489 return oldIndex; 35490 } 35491 } else { 35492 // This is an insertion. 35493 newFiber.effectTag = Placement; 35494 return lastPlacedIndex; 35495 } 35496 } 35497 35498 function placeSingleChild(newFiber) { 35499 // This is simpler for the single child case. We only need to do a 35500 // placement for inserting new children. 35501 if (shouldTrackSideEffects && newFiber.alternate === null) { 35502 newFiber.effectTag = Placement; 35503 } 35504 35505 return newFiber; 35506 } 35507 35508 function updateTextNode(returnFiber, current, textContent, expirationTime) { 35509 if (current === null || current.tag !== HostText) { 35510 // Insert 35511 var created = createFiberFromText(textContent, returnFiber.mode, expirationTime); 35512 created.return = returnFiber; 35513 return created; 35514 } else { 35515 // Update 35516 var existing = useFiber(current, textContent); 35517 existing.return = returnFiber; 35518 return existing; 35519 } 35520 } 35521 35522 function updateElement(returnFiber, current, element, expirationTime) { 35523 if (current !== null) { 35524 if (current.elementType === element.type || ( // Keep this check inline so it only runs on the false path: 35525 isCompatibleFamilyForHotReloading(current, element) )) { 35526 // Move based on index 35527 var existing = useFiber(current, element.props); 35528 existing.ref = coerceRef(returnFiber, current, element); 35529 existing.return = returnFiber; 35530 35531 { 35532 existing._debugSource = element._source; 35533 existing._debugOwner = element._owner; 35534 } 35535 35536 return existing; 35537 } 35538 } // Insert 35539 35540 35541 var created = createFiberFromElement(element, returnFiber.mode, expirationTime); 35542 created.ref = coerceRef(returnFiber, current, element); 35543 created.return = returnFiber; 35544 return created; 35545 } 35546 35547 function updatePortal(returnFiber, current, portal, expirationTime) { 35548 if (current === null || current.tag !== HostPortal || current.stateNode.containerInfo !== portal.containerInfo || current.stateNode.implementation !== portal.implementation) { 35549 // Insert 35550 var created = createFiberFromPortal(portal, returnFiber.mode, expirationTime); 35551 created.return = returnFiber; 35552 return created; 35553 } else { 35554 // Update 35555 var existing = useFiber(current, portal.children || []); 35556 existing.return = returnFiber; 35557 return existing; 35558 } 35559 } 35560 35561 function updateFragment(returnFiber, current, fragment, expirationTime, key) { 35562 if (current === null || current.tag !== Fragment) { 35563 // Insert 35564 var created = createFiberFromFragment(fragment, returnFiber.mode, expirationTime, key); 35565 created.return = returnFiber; 35566 return created; 35567 } else { 35568 // Update 35569 var existing = useFiber(current, fragment); 35570 existing.return = returnFiber; 35571 return existing; 35572 } 35573 } 35574 35575 function createChild(returnFiber, newChild, expirationTime) { 35576 if (typeof newChild === 'string' || typeof newChild === 'number') { 35577 // Text nodes don't have keys. If the previous node is implicitly keyed 35578 // we can continue to replace it without aborting even if it is not a text 35579 // node. 35580 var created = createFiberFromText('' + newChild, returnFiber.mode, expirationTime); 35581 created.return = returnFiber; 35582 return created; 35583 } 35584 35585 if (typeof newChild === 'object' && newChild !== null) { 35586 switch (newChild.$$typeof) { 35587 case REACT_ELEMENT_TYPE: 35588 { 35589 var _created = createFiberFromElement(newChild, returnFiber.mode, expirationTime); 35590 35591 _created.ref = coerceRef(returnFiber, null, newChild); 35592 _created.return = returnFiber; 35593 return _created; 35594 } 35595 35596 case REACT_PORTAL_TYPE: 35597 { 35598 var _created2 = createFiberFromPortal(newChild, returnFiber.mode, expirationTime); 35599 35600 _created2.return = returnFiber; 35601 return _created2; 35602 } 35603 } 35604 35605 if (isArray$1(newChild) || getIteratorFn(newChild)) { 35606 var _created3 = createFiberFromFragment(newChild, returnFiber.mode, expirationTime, null); 35607 35608 _created3.return = returnFiber; 35609 return _created3; 35610 } 35611 35612 throwOnInvalidObjectType(returnFiber, newChild); 35613 } 35614 35615 { 35616 if (typeof newChild === 'function') { 35617 warnOnFunctionType(); 35618 } 35619 } 35620 35621 return null; 35622 } 35623 35624 function updateSlot(returnFiber, oldFiber, newChild, expirationTime) { 35625 // Update the fiber if the keys match, otherwise return null. 35626 var key = oldFiber !== null ? oldFiber.key : null; 35627 35628 if (typeof newChild === 'string' || typeof newChild === 'number') { 35629 // Text nodes don't have keys. If the previous node is implicitly keyed 35630 // we can continue to replace it without aborting even if it is not a text 35631 // node. 35632 if (key !== null) { 35633 return null; 35634 } 35635 35636 return updateTextNode(returnFiber, oldFiber, '' + newChild, expirationTime); 35637 } 35638 35639 if (typeof newChild === 'object' && newChild !== null) { 35640 switch (newChild.$$typeof) { 35641 case REACT_ELEMENT_TYPE: 35642 { 35643 if (newChild.key === key) { 35644 if (newChild.type === REACT_FRAGMENT_TYPE) { 35645 return updateFragment(returnFiber, oldFiber, newChild.props.children, expirationTime, key); 35646 } 35647 35648 return updateElement(returnFiber, oldFiber, newChild, expirationTime); 35649 } else { 35650 return null; 35651 } 35652 } 35653 35654 case REACT_PORTAL_TYPE: 35655 { 35656 if (newChild.key === key) { 35657 return updatePortal(returnFiber, oldFiber, newChild, expirationTime); 35658 } else { 35659 return null; 35660 } 35661 } 35662 } 35663 35664 if (isArray$1(newChild) || getIteratorFn(newChild)) { 35665 if (key !== null) { 35666 return null; 35667 } 35668 35669 return updateFragment(returnFiber, oldFiber, newChild, expirationTime, null); 35670 } 35671 35672 throwOnInvalidObjectType(returnFiber, newChild); 35673 } 35674 35675 { 35676 if (typeof newChild === 'function') { 35677 warnOnFunctionType(); 35678 } 35679 } 35680 35681 return null; 35682 } 35683 35684 function updateFromMap(existingChildren, returnFiber, newIdx, newChild, expirationTime) { 35685 if (typeof newChild === 'string' || typeof newChild === 'number') { 35686 // Text nodes don't have keys, so we neither have to check the old nor 35687 // new node for the key. If both are text nodes, they match. 35688 var matchedFiber = existingChildren.get(newIdx) || null; 35689 return updateTextNode(returnFiber, matchedFiber, '' + newChild, expirationTime); 35690 } 35691 35692 if (typeof newChild === 'object' && newChild !== null) { 35693 switch (newChild.$$typeof) { 35694 case REACT_ELEMENT_TYPE: 35695 { 35696 var _matchedFiber = existingChildren.get(newChild.key === null ? newIdx : newChild.key) || null; 35697 35698 if (newChild.type === REACT_FRAGMENT_TYPE) { 35699 return updateFragment(returnFiber, _matchedFiber, newChild.props.children, expirationTime, newChild.key); 35700 } 35701 35702 return updateElement(returnFiber, _matchedFiber, newChild, expirationTime); 35703 } 35704 35705 case REACT_PORTAL_TYPE: 35706 { 35707 var _matchedFiber2 = existingChildren.get(newChild.key === null ? newIdx : newChild.key) || null; 35708 35709 return updatePortal(returnFiber, _matchedFiber2, newChild, expirationTime); 35710 } 35711 } 35712 35713 if (isArray$1(newChild) || getIteratorFn(newChild)) { 35714 var _matchedFiber3 = existingChildren.get(newIdx) || null; 35715 35716 return updateFragment(returnFiber, _matchedFiber3, newChild, expirationTime, null); 35717 } 35718 35719 throwOnInvalidObjectType(returnFiber, newChild); 35720 } 35721 35722 { 35723 if (typeof newChild === 'function') { 35724 warnOnFunctionType(); 35725 } 35726 } 35727 35728 return null; 35729 } 35730 /** 35731 * Warns if there is a duplicate or missing key 35732 */ 35733 35734 35735 function warnOnInvalidKey(child, knownKeys) { 35736 { 35737 if (typeof child !== 'object' || child === null) { 35738 return knownKeys; 35739 } 35740 35741 switch (child.$$typeof) { 35742 case REACT_ELEMENT_TYPE: 35743 case REACT_PORTAL_TYPE: 35744 warnForMissingKey(child); 35745 var key = child.key; 35746 35747 if (typeof key !== 'string') { 35748 break; 35749 } 35750 35751 if (knownKeys === null) { 35752 knownKeys = new Set(); 35753 knownKeys.add(key); 35754 break; 35755 } 35756 35757 if (!knownKeys.has(key)) { 35758 knownKeys.add(key); 35759 break; 35760 } 35761 35762 error('Encountered two children with the same key, `%s`. ' + 'Keys should be unique so that components maintain their identity ' + 'across updates. Non-unique keys may cause children to be ' + 'duplicated and/or omitted â the behavior is unsupported and ' + 'could change in a future version.', key); 35763 35764 break; 35765 } 35766 } 35767 35768 return knownKeys; 35769 } 35770 35771 function reconcileChildrenArray(returnFiber, currentFirstChild, newChildren, expirationTime) { 35772 // This algorithm can't optimize by searching from both ends since we 35773 // don't have backpointers on fibers. I'm trying to see how far we can get 35774 // with that model. If it ends up not being worth the tradeoffs, we can 35775 // add it later. 35776 // Even with a two ended optimization, we'd want to optimize for the case 35777 // where there are few changes and brute force the comparison instead of 35778 // going for the Map. It'd like to explore hitting that path first in 35779 // forward-only mode and only go for the Map once we notice that we need 35780 // lots of look ahead. This doesn't handle reversal as well as two ended 35781 // search but that's unusual. Besides, for the two ended optimization to 35782 // work on Iterables, we'd need to copy the whole set. 35783 // In this first iteration, we'll just live with hitting the bad case 35784 // (adding everything to a Map) in for every insert/move. 35785 // If you change this code, also update reconcileChildrenIterator() which 35786 // uses the same algorithm. 35787 { 35788 // First, validate keys. 35789 var knownKeys = null; 35790 35791 for (var i = 0; i < newChildren.length; i++) { 35792 var child = newChildren[i]; 35793 knownKeys = warnOnInvalidKey(child, knownKeys); 35794 } 35795 } 35796 35797 var resultingFirstChild = null; 35798 var previousNewFiber = null; 35799 var oldFiber = currentFirstChild; 35800 var lastPlacedIndex = 0; 35801 var newIdx = 0; 35802 var nextOldFiber = null; 35803 35804 for (; oldFiber !== null && newIdx < newChildren.length; newIdx++) { 35805 if (oldFiber.index > newIdx) { 35806 nextOldFiber = oldFiber; 35807 oldFiber = null; 35808 } else { 35809 nextOldFiber = oldFiber.sibling; 35810 } 35811 35812 var newFiber = updateSlot(returnFiber, oldFiber, newChildren[newIdx], expirationTime); 35813 35814 if (newFiber === null) { 35815 // TODO: This breaks on empty slots like null children. That's 35816 // unfortunate because it triggers the slow path all the time. We need 35817 // a better way to communicate whether this was a miss or null, 35818 // boolean, undefined, etc. 35819 if (oldFiber === null) { 35820 oldFiber = nextOldFiber; 35821 } 35822 35823 break; 35824 } 35825 35826 if (shouldTrackSideEffects) { 35827 if (oldFiber && newFiber.alternate === null) { 35828 // We matched the slot, but we didn't reuse the existing fiber, so we 35829 // need to delete the existing child. 35830 deleteChild(returnFiber, oldFiber); 35831 } 35832 } 35833 35834 lastPlacedIndex = placeChild(newFiber, lastPlacedIndex, newIdx); 35835 35836 if (previousNewFiber === null) { 35837 // TODO: Move out of the loop. This only happens for the first run. 35838 resultingFirstChild = newFiber; 35839 } else { 35840 // TODO: Defer siblings if we're not at the right index for this slot. 35841 // I.e. if we had null values before, then we want to defer this 35842 // for each null value. However, we also don't want to call updateSlot 35843 // with the previous one. 35844 previousNewFiber.sibling = newFiber; 35845 } 35846 35847 previousNewFiber = newFiber; 35848 oldFiber = nextOldFiber; 35849 } 35850 35851 if (newIdx === newChildren.length) { 35852 // We've reached the end of the new children. We can delete the rest. 35853 deleteRemainingChildren(returnFiber, oldFiber); 35854 return resultingFirstChild; 35855 } 35856 35857 if (oldFiber === null) { 35858 // If we don't have any more existing children we can choose a fast path 35859 // since the rest will all be insertions. 35860 for (; newIdx < newChildren.length; newIdx++) { 35861 var _newFiber = createChild(returnFiber, newChildren[newIdx], expirationTime); 35862 35863 if (_newFiber === null) { 35864 continue; 35865 } 35866 35867 lastPlacedIndex = placeChild(_newFiber, lastPlacedIndex, newIdx); 35868 35869 if (previousNewFiber === null) { 35870 // TODO: Move out of the loop. This only happens for the first run. 35871 resultingFirstChild = _newFiber; 35872 } else { 35873 previousNewFiber.sibling = _newFiber; 35874 } 35875 35876 previousNewFiber = _newFiber; 35877 } 35878 35879 return resultingFirstChild; 35880 } // Add all children to a key map for quick lookups. 35881 35882 35883 var existingChildren = mapRemainingChildren(returnFiber, oldFiber); // Keep scanning and use the map to restore deleted items as moves. 35884 35885 for (; newIdx < newChildren.length; newIdx++) { 35886 var _newFiber2 = updateFromMap(existingChildren, returnFiber, newIdx, newChildren[newIdx], expirationTime); 35887 35888 if (_newFiber2 !== null) { 35889 if (shouldTrackSideEffects) { 35890 if (_newFiber2.alternate !== null) { 35891 // The new fiber is a work in progress, but if there exists a 35892 // current, that means that we reused the fiber. We need to delete 35893 // it from the child list so that we don't add it to the deletion 35894 // list. 35895 existingChildren.delete(_newFiber2.key === null ? newIdx : _newFiber2.key); 35896 } 35897 } 35898 35899 lastPlacedIndex = placeChild(_newFiber2, lastPlacedIndex, newIdx); 35900 35901 if (previousNewFiber === null) { 35902 resultingFirstChild = _newFiber2; 35903 } else { 35904 previousNewFiber.sibling = _newFiber2; 35905 } 35906 35907 previousNewFiber = _newFiber2; 35908 } 35909 } 35910 35911 if (shouldTrackSideEffects) { 35912 // Any existing children that weren't consumed above were deleted. We need 35913 // to add them to the deletion list. 35914 existingChildren.forEach(function (child) { 35915 return deleteChild(returnFiber, child); 35916 }); 35917 } 35918 35919 return resultingFirstChild; 35920 } 35921 35922 function reconcileChildrenIterator(returnFiber, currentFirstChild, newChildrenIterable, expirationTime) { 35923 // This is the same implementation as reconcileChildrenArray(), 35924 // but using the iterator instead. 35925 var iteratorFn = getIteratorFn(newChildrenIterable); 35926 35927 if (!(typeof iteratorFn === 'function')) { 35928 { 35929 throw Error( "An object is not an iterable. This error is likely caused by a bug in React. Please file an issue." ); 35930 } 35931 } 35932 35933 { 35934 // We don't support rendering Generators because it's a mutation. 35935 // See https://github.com/facebook/react/issues/12995 35936 if (typeof Symbol === 'function' && // $FlowFixMe Flow doesn't know about toStringTag 35937 newChildrenIterable[Symbol.toStringTag] === 'Generator') { 35938 if (!didWarnAboutGenerators) { 35939 error('Using Generators as children is unsupported and will likely yield ' + 'unexpected results because enumerating a generator mutates it. ' + 'You may convert it to an array with `Array.from()` or the ' + '`[...spread]` operator before rendering. Keep in mind ' + 'you might need to polyfill these features for older browsers.'); 35940 } 35941 35942 didWarnAboutGenerators = true; 35943 } // Warn about using Maps as children 35944 35945 35946 if (newChildrenIterable.entries === iteratorFn) { 35947 if (!didWarnAboutMaps) { 35948 error('Using Maps as children is unsupported and will likely yield ' + 'unexpected results. Convert it to a sequence/iterable of keyed ' + 'ReactElements instead.'); 35949 } 35950 35951 didWarnAboutMaps = true; 35952 } // First, validate keys. 35953 // We'll get a different iterator later for the main pass. 35954 35955 35956 var _newChildren = iteratorFn.call(newChildrenIterable); 35957 35958 if (_newChildren) { 35959 var knownKeys = null; 35960 35961 var _step = _newChildren.next(); 35962 35963 for (; !_step.done; _step = _newChildren.next()) { 35964 var child = _step.value; 35965 knownKeys = warnOnInvalidKey(child, knownKeys); 35966 } 35967 } 35968 } 35969 35970 var newChildren = iteratorFn.call(newChildrenIterable); 35971 35972 if (!(newChildren != null)) { 35973 { 35974 throw Error( "An iterable object provided no iterator." ); 35975 } 35976 } 35977 35978 var resultingFirstChild = null; 35979 var previousNewFiber = null; 35980 var oldFiber = currentFirstChild; 35981 var lastPlacedIndex = 0; 35982 var newIdx = 0; 35983 var nextOldFiber = null; 35984 var step = newChildren.next(); 35985 35986 for (; oldFiber !== null && !step.done; newIdx++, step = newChildren.next()) { 35987 if (oldFiber.index > newIdx) { 35988 nextOldFiber = oldFiber; 35989 oldFiber = null; 35990 } else { 35991 nextOldFiber = oldFiber.sibling; 35992 } 35993 35994 var newFiber = updateSlot(returnFiber, oldFiber, step.value, expirationTime); 35995 35996 if (newFiber === null) { 35997 // TODO: This breaks on empty slots like null children. That's 35998 // unfortunate because it triggers the slow path all the time. We need 35999 // a better way to communicate whether this was a miss or null, 36000 // boolean, undefined, etc. 36001 if (oldFiber === null) { 36002 oldFiber = nextOldFiber; 36003 } 36004 36005 break; 36006 } 36007 36008 if (shouldTrackSideEffects) { 36009 if (oldFiber && newFiber.alternate === null) { 36010 // We matched the slot, but we didn't reuse the existing fiber, so we 36011 // need to delete the existing child. 36012 deleteChild(returnFiber, oldFiber); 36013 } 36014 } 36015 36016 lastPlacedIndex = placeChild(newFiber, lastPlacedIndex, newIdx); 36017 36018 if (previousNewFiber === null) { 36019 // TODO: Move out of the loop. This only happens for the first run. 36020 resultingFirstChild = newFiber; 36021 } else { 36022 // TODO: Defer siblings if we're not at the right index for this slot. 36023 // I.e. if we had null values before, then we want to defer this 36024 // for each null value. However, we also don't want to call updateSlot 36025 // with the previous one. 36026 previousNewFiber.sibling = newFiber; 36027 } 36028 36029 previousNewFiber = newFiber; 36030 oldFiber = nextOldFiber; 36031 } 36032 36033 if (step.done) { 36034 // We've reached the end of the new children. We can delete the rest. 36035 deleteRemainingChildren(returnFiber, oldFiber); 36036 return resultingFirstChild; 36037 } 36038 36039 if (oldFiber === null) { 36040 // If we don't have any more existing children we can choose a fast path 36041 // since the rest will all be insertions. 36042 for (; !step.done; newIdx++, step = newChildren.next()) { 36043 var _newFiber3 = createChild(returnFiber, step.value, expirationTime); 36044 36045 if (_newFiber3 === null) { 36046 continue; 36047 } 36048 36049 lastPlacedIndex = placeChild(_newFiber3, lastPlacedIndex, newIdx); 36050 36051 if (previousNewFiber === null) { 36052 // TODO: Move out of the loop. This only happens for the first run. 36053 resultingFirstChild = _newFiber3; 36054 } else { 36055 previousNewFiber.sibling = _newFiber3; 36056 } 36057 36058 previousNewFiber = _newFiber3; 36059 } 36060 36061 return resultingFirstChild; 36062 } // Add all children to a key map for quick lookups. 36063 36064 36065 var existingChildren = mapRemainingChildren(returnFiber, oldFiber); // Keep scanning and use the map to restore deleted items as moves. 36066 36067 for (; !step.done; newIdx++, step = newChildren.next()) { 36068 var _newFiber4 = updateFromMap(existingChildren, returnFiber, newIdx, step.value, expirationTime); 36069 36070 if (_newFiber4 !== null) { 36071 if (shouldTrackSideEffects) { 36072 if (_newFiber4.alternate !== null) { 36073 // The new fiber is a work in progress, but if there exists a 36074 // current, that means that we reused the fiber. We need to delete 36075 // it from the child list so that we don't add it to the deletion 36076 // list. 36077 existingChildren.delete(_newFiber4.key === null ? newIdx : _newFiber4.key); 36078 } 36079 } 36080 36081 lastPlacedIndex = placeChild(_newFiber4, lastPlacedIndex, newIdx); 36082 36083 if (previousNewFiber === null) { 36084 resultingFirstChild = _newFiber4; 36085 } else { 36086 previousNewFiber.sibling = _newFiber4; 36087 } 36088 36089 previousNewFiber = _newFiber4; 36090 } 36091 } 36092 36093 if (shouldTrackSideEffects) { 36094 // Any existing children that weren't consumed above were deleted. We need 36095 // to add them to the deletion list. 36096 existingChildren.forEach(function (child) { 36097 return deleteChild(returnFiber, child); 36098 }); 36099 } 36100 36101 return resultingFirstChild; 36102 } 36103 36104 function reconcileSingleTextNode(returnFiber, currentFirstChild, textContent, expirationTime) { 36105 // There's no need to check for keys on text nodes since we don't have a 36106 // way to define them. 36107 if (currentFirstChild !== null && currentFirstChild.tag === HostText) { 36108 // We already have an existing node so let's just update it and delete 36109 // the rest. 36110 deleteRemainingChildren(returnFiber, currentFirstChild.sibling); 36111 var existing = useFiber(currentFirstChild, textContent); 36112 existing.return = returnFiber; 36113 return existing; 36114 } // The existing first child is not a text node so we need to create one 36115 // and delete the existing ones. 36116 36117 36118 deleteRemainingChildren(returnFiber, currentFirstChild); 36119 var created = createFiberFromText(textContent, returnFiber.mode, expirationTime); 36120 created.return = returnFiber; 36121 return created; 36122 } 36123 36124 function reconcileSingleElement(returnFiber, currentFirstChild, element, expirationTime) { 36125 var key = element.key; 36126 var child = currentFirstChild; 36127 36128 while (child !== null) { 36129 // TODO: If key === null and child.key === null, then this only applies to 36130 // the first item in the list. 36131 if (child.key === key) { 36132 switch (child.tag) { 36133 case Fragment: 36134 { 36135 if (element.type === REACT_FRAGMENT_TYPE) { 36136 deleteRemainingChildren(returnFiber, child.sibling); 36137 var existing = useFiber(child, element.props.children); 36138 existing.return = returnFiber; 36139 36140 { 36141 existing._debugSource = element._source; 36142 existing._debugOwner = element._owner; 36143 } 36144 36145 return existing; 36146 } 36147 36148 break; 36149 } 36150 36151 case Block: 36152 36153 // We intentionally fallthrough here if enableBlocksAPI is not on. 36154 // eslint-disable-next-lined no-fallthrough 36155 36156 default: 36157 { 36158 if (child.elementType === element.type || ( // Keep this check inline so it only runs on the false path: 36159 isCompatibleFamilyForHotReloading(child, element) )) { 36160 deleteRemainingChildren(returnFiber, child.sibling); 36161 36162 var _existing3 = useFiber(child, element.props); 36163 36164 _existing3.ref = coerceRef(returnFiber, child, element); 36165 _existing3.return = returnFiber; 36166 36167 { 36168 _existing3._debugSource = element._source; 36169 _existing3._debugOwner = element._owner; 36170 } 36171 36172 return _existing3; 36173 } 36174 36175 break; 36176 } 36177 } // Didn't match. 36178 36179 36180 deleteRemainingChildren(returnFiber, child); 36181 break; 36182 } else { 36183 deleteChild(returnFiber, child); 36184 } 36185 36186 child = child.sibling; 36187 } 36188 36189 if (element.type === REACT_FRAGMENT_TYPE) { 36190 var created = createFiberFromFragment(element.props.children, returnFiber.mode, expirationTime, element.key); 36191 created.return = returnFiber; 36192 return created; 36193 } else { 36194 var _created4 = createFiberFromElement(element, returnFiber.mode, expirationTime); 36195 36196 _created4.ref = coerceRef(returnFiber, currentFirstChild, element); 36197 _created4.return = returnFiber; 36198 return _created4; 36199 } 36200 } 36201 36202 function reconcileSinglePortal(returnFiber, currentFirstChild, portal, expirationTime) { 36203 var key = portal.key; 36204 var child = currentFirstChild; 36205 36206 while (child !== null) { 36207 // TODO: If key === null and child.key === null, then this only applies to 36208 // the first item in the list. 36209 if (child.key === key) { 36210 if (child.tag === HostPortal && child.stateNode.containerInfo === portal.containerInfo && child.stateNode.implementation === portal.implementation) { 36211 deleteRemainingChildren(returnFiber, child.sibling); 36212 var existing = useFiber(child, portal.children || []); 36213 existing.return = returnFiber; 36214 return existing; 36215 } else { 36216 deleteRemainingChildren(returnFiber, child); 36217 break; 36218 } 36219 } else { 36220 deleteChild(returnFiber, child); 36221 } 36222 36223 child = child.sibling; 36224 } 36225 36226 var created = createFiberFromPortal(portal, returnFiber.mode, expirationTime); 36227 created.return = returnFiber; 36228 return created; 36229 } // This API will tag the children with the side-effect of the reconciliation 36230 // itself. They will be added to the side-effect list as we pass through the 36231 // children and the parent. 36232 36233 36234 function reconcileChildFibers(returnFiber, currentFirstChild, newChild, expirationTime) { 36235 // This function is not recursive. 36236 // If the top level item is an array, we treat it as a set of children, 36237 // not as a fragment. Nested arrays on the other hand will be treated as 36238 // fragment nodes. Recursion happens at the normal flow. 36239 // Handle top level unkeyed fragments as if they were arrays. 36240 // This leads to an ambiguity between <>{[...]}</> and <>...</>. 36241 // We treat the ambiguous cases above the same. 36242 var isUnkeyedTopLevelFragment = typeof newChild === 'object' && newChild !== null && newChild.type === REACT_FRAGMENT_TYPE && newChild.key === null; 36243 36244 if (isUnkeyedTopLevelFragment) { 36245 newChild = newChild.props.children; 36246 } // Handle object types 36247 36248 36249 var isObject = typeof newChild === 'object' && newChild !== null; 36250 36251 if (isObject) { 36252 switch (newChild.$$typeof) { 36253 case REACT_ELEMENT_TYPE: 36254 return placeSingleChild(reconcileSingleElement(returnFiber, currentFirstChild, newChild, expirationTime)); 36255 36256 case REACT_PORTAL_TYPE: 36257 return placeSingleChild(reconcileSinglePortal(returnFiber, currentFirstChild, newChild, expirationTime)); 36258 } 36259 } 36260 36261 if (typeof newChild === 'string' || typeof newChild === 'number') { 36262 return placeSingleChild(reconcileSingleTextNode(returnFiber, currentFirstChild, '' + newChild, expirationTime)); 36263 } 36264 36265 if (isArray$1(newChild)) { 36266 return reconcileChildrenArray(returnFiber, currentFirstChild, newChild, expirationTime); 36267 } 36268 36269 if (getIteratorFn(newChild)) { 36270 return reconcileChildrenIterator(returnFiber, currentFirstChild, newChild, expirationTime); 36271 } 36272 36273 if (isObject) { 36274 throwOnInvalidObjectType(returnFiber, newChild); 36275 } 36276 36277 { 36278 if (typeof newChild === 'function') { 36279 warnOnFunctionType(); 36280 } 36281 } 36282 36283 if (typeof newChild === 'undefined' && !isUnkeyedTopLevelFragment) { 36284 // If the new child is undefined, and the return fiber is a composite 36285 // component, throw an error. If Fiber return types are disabled, 36286 // we already threw above. 36287 switch (returnFiber.tag) { 36288 case ClassComponent: 36289 { 36290 { 36291 var instance = returnFiber.stateNode; 36292 36293 if (instance.render._isMockFunction) { 36294 // We allow auto-mocks to proceed as if they're returning null. 36295 break; 36296 } 36297 } 36298 } 36299 // Intentionally fall through to the next case, which handles both 36300 // functions and classes 36301 // eslint-disable-next-lined no-fallthrough 36302 36303 case FunctionComponent: 36304 { 36305 var Component = returnFiber.type; 36306 36307 { 36308 { 36309 throw Error( (Component.displayName || Component.name || 'Component') + "(...): Nothing was returned from render. This usually means a return statement is missing. Or, to render nothing, return null." ); 36310 } 36311 } 36312 } 36313 } 36314 } // Remaining cases are all treated as empty. 36315 36316 36317 return deleteRemainingChildren(returnFiber, currentFirstChild); 36318 } 36319 36320 return reconcileChildFibers; 36321} 36322 36323var reconcileChildFibers = ChildReconciler(true); 36324var mountChildFibers = ChildReconciler(false); 36325function cloneChildFibers(current, workInProgress) { 36326 if (!(current === null || workInProgress.child === current.child)) { 36327 { 36328 throw Error( "Resuming work not yet implemented." ); 36329 } 36330 } 36331 36332 if (workInProgress.child === null) { 36333 return; 36334 } 36335 36336 var currentChild = workInProgress.child; 36337 var newChild = createWorkInProgress(currentChild, currentChild.pendingProps); 36338 workInProgress.child = newChild; 36339 newChild.return = workInProgress; 36340 36341 while (currentChild.sibling !== null) { 36342 currentChild = currentChild.sibling; 36343 newChild = newChild.sibling = createWorkInProgress(currentChild, currentChild.pendingProps); 36344 newChild.return = workInProgress; 36345 } 36346 36347 newChild.sibling = null; 36348} // Reset a workInProgress child set to prepare it for a second pass. 36349 36350function resetChildFibers(workInProgress, renderExpirationTime) { 36351 var child = workInProgress.child; 36352 36353 while (child !== null) { 36354 resetWorkInProgress(child, renderExpirationTime); 36355 child = child.sibling; 36356 } 36357} 36358 36359var NO_CONTEXT = {}; 36360var contextStackCursor$1 = createCursor(NO_CONTEXT); 36361var contextFiberStackCursor = createCursor(NO_CONTEXT); 36362var rootInstanceStackCursor = createCursor(NO_CONTEXT); 36363 36364function requiredContext(c) { 36365 if (!(c !== NO_CONTEXT)) { 36366 { 36367 throw Error( "Expected host context to exist. This error is likely caused by a bug in React. Please file an issue." ); 36368 } 36369 } 36370 36371 return c; 36372} 36373 36374function getRootHostContainer() { 36375 var rootInstance = requiredContext(rootInstanceStackCursor.current); 36376 return rootInstance; 36377} 36378 36379function pushHostContainer(fiber, nextRootInstance) { 36380 // Push current root instance onto the stack; 36381 // This allows us to reset root when portals are popped. 36382 push(rootInstanceStackCursor, nextRootInstance, fiber); // Track the context and the Fiber that provided it. 36383 // This enables us to pop only Fibers that provide unique contexts. 36384 36385 push(contextFiberStackCursor, fiber, fiber); // Finally, we need to push the host context to the stack. 36386 // However, we can't just call getRootHostContext() and push it because 36387 // we'd have a different number of entries on the stack depending on 36388 // whether getRootHostContext() throws somewhere in renderer code or not. 36389 // So we push an empty value first. This lets us safely unwind on errors. 36390 36391 push(contextStackCursor$1, NO_CONTEXT, fiber); 36392 var nextRootContext = getRootHostContext(nextRootInstance); // Now that we know this function doesn't throw, replace it. 36393 36394 pop(contextStackCursor$1, fiber); 36395 push(contextStackCursor$1, nextRootContext, fiber); 36396} 36397 36398function popHostContainer(fiber) { 36399 pop(contextStackCursor$1, fiber); 36400 pop(contextFiberStackCursor, fiber); 36401 pop(rootInstanceStackCursor, fiber); 36402} 36403 36404function getHostContext() { 36405 var context = requiredContext(contextStackCursor$1.current); 36406 return context; 36407} 36408 36409function pushHostContext(fiber) { 36410 var rootInstance = requiredContext(rootInstanceStackCursor.current); 36411 var context = requiredContext(contextStackCursor$1.current); 36412 var nextContext = getChildHostContext(context, fiber.type); // Don't push this Fiber's context unless it's unique. 36413 36414 if (context === nextContext) { 36415 return; 36416 } // Track the context and the Fiber that provided it. 36417 // This enables us to pop only Fibers that provide unique contexts. 36418 36419 36420 push(contextFiberStackCursor, fiber, fiber); 36421 push(contextStackCursor$1, nextContext, fiber); 36422} 36423 36424function popHostContext(fiber) { 36425 // Do not pop unless this Fiber provided the current context. 36426 // pushHostContext() only pushes Fibers that provide unique contexts. 36427 if (contextFiberStackCursor.current !== fiber) { 36428 return; 36429 } 36430 36431 pop(contextStackCursor$1, fiber); 36432 pop(contextFiberStackCursor, fiber); 36433} 36434 36435var DefaultSuspenseContext = 0; // The Suspense Context is split into two parts. The lower bits is 36436// inherited deeply down the subtree. The upper bits only affect 36437// this immediate suspense boundary and gets reset each new 36438// boundary or suspense list. 36439 36440var SubtreeSuspenseContextMask = 1; // Subtree Flags: 36441// InvisibleParentSuspenseContext indicates that one of our parent Suspense 36442// boundaries is not currently showing visible main content. 36443// Either because it is already showing a fallback or is not mounted at all. 36444// We can use this to determine if it is desirable to trigger a fallback at 36445// the parent. If not, then we might need to trigger undesirable boundaries 36446// and/or suspend the commit to avoid hiding the parent content. 36447 36448var InvisibleParentSuspenseContext = 1; // Shallow Flags: 36449// ForceSuspenseFallback can be used by SuspenseList to force newly added 36450// items into their fallback state during one of the render passes. 36451 36452var ForceSuspenseFallback = 2; 36453var suspenseStackCursor = createCursor(DefaultSuspenseContext); 36454function hasSuspenseContext(parentContext, flag) { 36455 return (parentContext & flag) !== 0; 36456} 36457function setDefaultShallowSuspenseContext(parentContext) { 36458 return parentContext & SubtreeSuspenseContextMask; 36459} 36460function setShallowSuspenseContext(parentContext, shallowContext) { 36461 return parentContext & SubtreeSuspenseContextMask | shallowContext; 36462} 36463function addSubtreeSuspenseContext(parentContext, subtreeContext) { 36464 return parentContext | subtreeContext; 36465} 36466function pushSuspenseContext(fiber, newContext) { 36467 push(suspenseStackCursor, newContext, fiber); 36468} 36469function popSuspenseContext(fiber) { 36470 pop(suspenseStackCursor, fiber); 36471} 36472 36473function shouldCaptureSuspense(workInProgress, hasInvisibleParent) { 36474 // If it was the primary children that just suspended, capture and render the 36475 // fallback. Otherwise, don't capture and bubble to the next boundary. 36476 var nextState = workInProgress.memoizedState; 36477 36478 if (nextState !== null) { 36479 if (nextState.dehydrated !== null) { 36480 // A dehydrated boundary always captures. 36481 return true; 36482 } 36483 36484 return false; 36485 } 36486 36487 var props = workInProgress.memoizedProps; // In order to capture, the Suspense component must have a fallback prop. 36488 36489 if (props.fallback === undefined) { 36490 return false; 36491 } // Regular boundaries always capture. 36492 36493 36494 if (props.unstable_avoidThisFallback !== true) { 36495 return true; 36496 } // If it's a boundary we should avoid, then we prefer to bubble up to the 36497 // parent boundary if it is currently invisible. 36498 36499 36500 if (hasInvisibleParent) { 36501 return false; 36502 } // If the parent is not able to handle it, we must handle it. 36503 36504 36505 return true; 36506} 36507function findFirstSuspended(row) { 36508 var node = row; 36509 36510 while (node !== null) { 36511 if (node.tag === SuspenseComponent) { 36512 var state = node.memoizedState; 36513 36514 if (state !== null) { 36515 var dehydrated = state.dehydrated; 36516 36517 if (dehydrated === null || isSuspenseInstancePending(dehydrated) || isSuspenseInstanceFallback(dehydrated)) { 36518 return node; 36519 } 36520 } 36521 } else if (node.tag === SuspenseListComponent && // revealOrder undefined can't be trusted because it don't 36522 // keep track of whether it suspended or not. 36523 node.memoizedProps.revealOrder !== undefined) { 36524 var didSuspend = (node.effectTag & DidCapture) !== NoEffect; 36525 36526 if (didSuspend) { 36527 return node; 36528 } 36529 } else if (node.child !== null) { 36530 node.child.return = node; 36531 node = node.child; 36532 continue; 36533 } 36534 36535 if (node === row) { 36536 return null; 36537 } 36538 36539 while (node.sibling === null) { 36540 if (node.return === null || node.return === row) { 36541 return null; 36542 } 36543 36544 node = node.return; 36545 } 36546 36547 node.sibling.return = node.return; 36548 node = node.sibling; 36549 } 36550 36551 return null; 36552} 36553 36554function createDeprecatedResponderListener(responder, props) { 36555 var eventResponderListener = { 36556 responder: responder, 36557 props: props 36558 }; 36559 36560 { 36561 Object.freeze(eventResponderListener); 36562 } 36563 36564 return eventResponderListener; 36565} 36566 36567var HasEffect = 36568/* */ 365691; // Represents the phase in which the effect (not the clean-up) fires. 36570 36571var Layout = 36572/* */ 365732; 36574var Passive$1 = 36575/* */ 365764; 36577 36578var ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher, 36579 ReactCurrentBatchConfig$1 = ReactSharedInternals.ReactCurrentBatchConfig; 36580var didWarnAboutMismatchedHooksForComponent; 36581 36582{ 36583 didWarnAboutMismatchedHooksForComponent = new Set(); 36584} 36585 36586// These are set right before calling the component. 36587var renderExpirationTime = NoWork; // The work-in-progress fiber. I've named it differently to distinguish it from 36588// the work-in-progress hook. 36589 36590var currentlyRenderingFiber$1 = null; // Hooks are stored as a linked list on the fiber's memoizedState field. The 36591// current hook list is the list that belongs to the current fiber. The 36592// work-in-progress hook list is a new list that will be added to the 36593// work-in-progress fiber. 36594 36595var currentHook = null; 36596var workInProgressHook = null; // Whether an update was scheduled at any point during the render phase. This 36597// does not get reset if we do another render pass; only when we're completely 36598// finished evaluating this component. This is an optimization so we know 36599// whether we need to clear render phase updates after a throw. 36600 36601var didScheduleRenderPhaseUpdate = false; 36602var RE_RENDER_LIMIT = 25; // In DEV, this is the name of the currently executing primitive hook 36603 36604var currentHookNameInDev = null; // In DEV, this list ensures that hooks are called in the same order between renders. 36605// The list stores the order of hooks used during the initial render (mount). 36606// Subsequent renders (updates) reference this list. 36607 36608var hookTypesDev = null; 36609var hookTypesUpdateIndexDev = -1; // In DEV, this tracks whether currently rendering component needs to ignore 36610// the dependencies for Hooks that need them (e.g. useEffect or useMemo). 36611// When true, such Hooks will always be "remounted". Only used during hot reload. 36612 36613var ignorePreviousDependencies = false; 36614 36615function mountHookTypesDev() { 36616 { 36617 var hookName = currentHookNameInDev; 36618 36619 if (hookTypesDev === null) { 36620 hookTypesDev = [hookName]; 36621 } else { 36622 hookTypesDev.push(hookName); 36623 } 36624 } 36625} 36626 36627function updateHookTypesDev() { 36628 { 36629 var hookName = currentHookNameInDev; 36630 36631 if (hookTypesDev !== null) { 36632 hookTypesUpdateIndexDev++; 36633 36634 if (hookTypesDev[hookTypesUpdateIndexDev] !== hookName) { 36635 warnOnHookMismatchInDev(hookName); 36636 } 36637 } 36638 } 36639} 36640 36641function checkDepsAreArrayDev(deps) { 36642 { 36643 if (deps !== undefined && deps !== null && !Array.isArray(deps)) { 36644 // Verify deps, but only on mount to avoid extra checks. 36645 // It's unlikely their type would change as usually you define them inline. 36646 error('%s received a final argument that is not an array (instead, received `%s`). When ' + 'specified, the final argument must be an array.', currentHookNameInDev, typeof deps); 36647 } 36648 } 36649} 36650 36651function warnOnHookMismatchInDev(currentHookName) { 36652 { 36653 var componentName = getComponentName(currentlyRenderingFiber$1.type); 36654 36655 if (!didWarnAboutMismatchedHooksForComponent.has(componentName)) { 36656 didWarnAboutMismatchedHooksForComponent.add(componentName); 36657 36658 if (hookTypesDev !== null) { 36659 var table = ''; 36660 var secondColumnStart = 30; 36661 36662 for (var i = 0; i <= hookTypesUpdateIndexDev; i++) { 36663 var oldHookName = hookTypesDev[i]; 36664 var newHookName = i === hookTypesUpdateIndexDev ? currentHookName : oldHookName; 36665 var row = i + 1 + ". " + oldHookName; // Extra space so second column lines up 36666 // lol @ IE not supporting String#repeat 36667 36668 while (row.length < secondColumnStart) { 36669 row += ' '; 36670 } 36671 36672 row += newHookName + '\n'; 36673 table += row; 36674 } 36675 36676 error('React has detected a change in the order of Hooks called by %s. ' + 'This will lead to bugs and errors if not fixed. ' + 'For more information, read the Rules of Hooks: https://fb.me/rules-of-hooks\n\n' + ' Previous render Next render\n' + ' ------------------------------------------------------\n' + '%s' + ' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n', componentName, table); 36677 } 36678 } 36679 } 36680} 36681 36682function throwInvalidHookError() { 36683 { 36684 { 36685 throw Error( "Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://fb.me/react-invalid-hook-call for tips about how to debug and fix this problem." ); 36686 } 36687 } 36688} 36689 36690function areHookInputsEqual(nextDeps, prevDeps) { 36691 { 36692 if (ignorePreviousDependencies) { 36693 // Only true when this component is being hot reloaded. 36694 return false; 36695 } 36696 } 36697 36698 if (prevDeps === null) { 36699 { 36700 error('%s received a final argument during this render, but not during ' + 'the previous render. Even though the final argument is optional, ' + 'its type cannot change between renders.', currentHookNameInDev); 36701 } 36702 36703 return false; 36704 } 36705 36706 { 36707 // Don't bother comparing lengths in prod because these arrays should be 36708 // passed inline. 36709 if (nextDeps.length !== prevDeps.length) { 36710 error('The final argument passed to %s changed size between renders. The ' + 'order and size of this array must remain constant.\n\n' + 'Previous: %s\n' + 'Incoming: %s', currentHookNameInDev, "[" + prevDeps.join(', ') + "]", "[" + nextDeps.join(', ') + "]"); 36711 } 36712 } 36713 36714 for (var i = 0; i < prevDeps.length && i < nextDeps.length; i++) { 36715 if (objectIs(nextDeps[i], prevDeps[i])) { 36716 continue; 36717 } 36718 36719 return false; 36720 } 36721 36722 return true; 36723} 36724 36725function renderWithHooks(current, workInProgress, Component, props, secondArg, nextRenderExpirationTime) { 36726 renderExpirationTime = nextRenderExpirationTime; 36727 currentlyRenderingFiber$1 = workInProgress; 36728 36729 { 36730 hookTypesDev = current !== null ? current._debugHookTypes : null; 36731 hookTypesUpdateIndexDev = -1; // Used for hot reloading: 36732 36733 ignorePreviousDependencies = current !== null && current.type !== workInProgress.type; 36734 } 36735 36736 workInProgress.memoizedState = null; 36737 workInProgress.updateQueue = null; 36738 workInProgress.expirationTime = NoWork; // The following should have already been reset 36739 // currentHook = null; 36740 // workInProgressHook = null; 36741 // didScheduleRenderPhaseUpdate = false; 36742 // TODO Warn if no hooks are used at all during mount, then some are used during update. 36743 // Currently we will identify the update render as a mount because memoizedState === null. 36744 // This is tricky because it's valid for certain types of components (e.g. React.lazy) 36745 // Using memoizedState to differentiate between mount/update only works if at least one stateful hook is used. 36746 // Non-stateful hooks (e.g. context) don't get added to memoizedState, 36747 // so memoizedState would be null during updates and mounts. 36748 36749 { 36750 if (current !== null && current.memoizedState !== null) { 36751 ReactCurrentDispatcher.current = HooksDispatcherOnUpdateInDEV; 36752 } else if (hookTypesDev !== null) { 36753 // This dispatcher handles an edge case where a component is updating, 36754 // but no stateful hooks have been used. 36755 // We want to match the production code behavior (which will use HooksDispatcherOnMount), 36756 // but with the extra DEV validation to ensure hooks ordering hasn't changed. 36757 // This dispatcher does that. 36758 ReactCurrentDispatcher.current = HooksDispatcherOnMountWithHookTypesInDEV; 36759 } else { 36760 ReactCurrentDispatcher.current = HooksDispatcherOnMountInDEV; 36761 } 36762 } 36763 36764 var children = Component(props, secondArg); // Check if there was a render phase update 36765 36766 if (workInProgress.expirationTime === renderExpirationTime) { 36767 // Keep rendering in a loop for as long as render phase updates continue to 36768 // be scheduled. Use a counter to prevent infinite loops. 36769 var numberOfReRenders = 0; 36770 36771 do { 36772 workInProgress.expirationTime = NoWork; 36773 36774 if (!(numberOfReRenders < RE_RENDER_LIMIT)) { 36775 { 36776 throw Error( "Too many re-renders. React limits the number of renders to prevent an infinite loop." ); 36777 } 36778 } 36779 36780 numberOfReRenders += 1; 36781 36782 { 36783 // Even when hot reloading, allow dependencies to stabilize 36784 // after first render to prevent infinite render phase updates. 36785 ignorePreviousDependencies = false; 36786 } // Start over from the beginning of the list 36787 36788 36789 currentHook = null; 36790 workInProgressHook = null; 36791 workInProgress.updateQueue = null; 36792 36793 { 36794 // Also validate hook order for cascading updates. 36795 hookTypesUpdateIndexDev = -1; 36796 } 36797 36798 ReactCurrentDispatcher.current = HooksDispatcherOnRerenderInDEV ; 36799 children = Component(props, secondArg); 36800 } while (workInProgress.expirationTime === renderExpirationTime); 36801 } // We can assume the previous dispatcher is always this one, since we set it 36802 // at the beginning of the render phase and there's no re-entrancy. 36803 36804 36805 ReactCurrentDispatcher.current = ContextOnlyDispatcher; 36806 36807 { 36808 workInProgress._debugHookTypes = hookTypesDev; 36809 } // This check uses currentHook so that it works the same in DEV and prod bundles. 36810 // hookTypesDev could catch more cases (e.g. context) but only in DEV bundles. 36811 36812 36813 var didRenderTooFewHooks = currentHook !== null && currentHook.next !== null; 36814 renderExpirationTime = NoWork; 36815 currentlyRenderingFiber$1 = null; 36816 currentHook = null; 36817 workInProgressHook = null; 36818 36819 { 36820 currentHookNameInDev = null; 36821 hookTypesDev = null; 36822 hookTypesUpdateIndexDev = -1; 36823 } 36824 36825 didScheduleRenderPhaseUpdate = false; 36826 36827 if (!!didRenderTooFewHooks) { 36828 { 36829 throw Error( "Rendered fewer hooks than expected. This may be caused by an accidental early return statement." ); 36830 } 36831 } 36832 36833 return children; 36834} 36835function bailoutHooks(current, workInProgress, expirationTime) { 36836 workInProgress.updateQueue = current.updateQueue; 36837 workInProgress.effectTag &= ~(Passive | Update); 36838 36839 if (current.expirationTime <= expirationTime) { 36840 current.expirationTime = NoWork; 36841 } 36842} 36843function resetHooksAfterThrow() { 36844 // We can assume the previous dispatcher is always this one, since we set it 36845 // at the beginning of the render phase and there's no re-entrancy. 36846 ReactCurrentDispatcher.current = ContextOnlyDispatcher; 36847 36848 if (didScheduleRenderPhaseUpdate) { 36849 // There were render phase updates. These are only valid for this render 36850 // phase, which we are now aborting. Remove the updates from the queues so 36851 // they do not persist to the next render. Do not remove updates from hooks 36852 // that weren't processed. 36853 // 36854 // Only reset the updates from the queue if it has a clone. If it does 36855 // not have a clone, that means it wasn't processed, and the updates were 36856 // scheduled before we entered the render phase. 36857 var hook = currentlyRenderingFiber$1.memoizedState; 36858 36859 while (hook !== null) { 36860 var queue = hook.queue; 36861 36862 if (queue !== null) { 36863 queue.pending = null; 36864 } 36865 36866 hook = hook.next; 36867 } 36868 } 36869 36870 renderExpirationTime = NoWork; 36871 currentlyRenderingFiber$1 = null; 36872 currentHook = null; 36873 workInProgressHook = null; 36874 36875 { 36876 hookTypesDev = null; 36877 hookTypesUpdateIndexDev = -1; 36878 currentHookNameInDev = null; 36879 } 36880 36881 didScheduleRenderPhaseUpdate = false; 36882} 36883 36884function mountWorkInProgressHook() { 36885 var hook = { 36886 memoizedState: null, 36887 baseState: null, 36888 baseQueue: null, 36889 queue: null, 36890 next: null 36891 }; 36892 36893 if (workInProgressHook === null) { 36894 // This is the first hook in the list 36895 currentlyRenderingFiber$1.memoizedState = workInProgressHook = hook; 36896 } else { 36897 // Append to the end of the list 36898 workInProgressHook = workInProgressHook.next = hook; 36899 } 36900 36901 return workInProgressHook; 36902} 36903 36904function updateWorkInProgressHook() { 36905 // This function is used both for updates and for re-renders triggered by a 36906 // render phase update. It assumes there is either a current hook we can 36907 // clone, or a work-in-progress hook from a previous render pass that we can 36908 // use as a base. When we reach the end of the base list, we must switch to 36909 // the dispatcher used for mounts. 36910 var nextCurrentHook; 36911 36912 if (currentHook === null) { 36913 var current = currentlyRenderingFiber$1.alternate; 36914 36915 if (current !== null) { 36916 nextCurrentHook = current.memoizedState; 36917 } else { 36918 nextCurrentHook = null; 36919 } 36920 } else { 36921 nextCurrentHook = currentHook.next; 36922 } 36923 36924 var nextWorkInProgressHook; 36925 36926 if (workInProgressHook === null) { 36927 nextWorkInProgressHook = currentlyRenderingFiber$1.memoizedState; 36928 } else { 36929 nextWorkInProgressHook = workInProgressHook.next; 36930 } 36931 36932 if (nextWorkInProgressHook !== null) { 36933 // There's already a work-in-progress. Reuse it. 36934 workInProgressHook = nextWorkInProgressHook; 36935 nextWorkInProgressHook = workInProgressHook.next; 36936 currentHook = nextCurrentHook; 36937 } else { 36938 // Clone from the current hook. 36939 if (!(nextCurrentHook !== null)) { 36940 { 36941 throw Error( "Rendered more hooks than during the previous render." ); 36942 } 36943 } 36944 36945 currentHook = nextCurrentHook; 36946 var newHook = { 36947 memoizedState: currentHook.memoizedState, 36948 baseState: currentHook.baseState, 36949 baseQueue: currentHook.baseQueue, 36950 queue: currentHook.queue, 36951 next: null 36952 }; 36953 36954 if (workInProgressHook === null) { 36955 // This is the first hook in the list. 36956 currentlyRenderingFiber$1.memoizedState = workInProgressHook = newHook; 36957 } else { 36958 // Append to the end of the list. 36959 workInProgressHook = workInProgressHook.next = newHook; 36960 } 36961 } 36962 36963 return workInProgressHook; 36964} 36965 36966function createFunctionComponentUpdateQueue() { 36967 return { 36968 lastEffect: null 36969 }; 36970} 36971 36972function basicStateReducer(state, action) { 36973 // $FlowFixMe: Flow doesn't like mixed types 36974 return typeof action === 'function' ? action(state) : action; 36975} 36976 36977function mountReducer(reducer, initialArg, init) { 36978 var hook = mountWorkInProgressHook(); 36979 var initialState; 36980 36981 if (init !== undefined) { 36982 initialState = init(initialArg); 36983 } else { 36984 initialState = initialArg; 36985 } 36986 36987 hook.memoizedState = hook.baseState = initialState; 36988 var queue = hook.queue = { 36989 pending: null, 36990 dispatch: null, 36991 lastRenderedReducer: reducer, 36992 lastRenderedState: initialState 36993 }; 36994 var dispatch = queue.dispatch = dispatchAction.bind(null, currentlyRenderingFiber$1, queue); 36995 return [hook.memoizedState, dispatch]; 36996} 36997 36998function updateReducer(reducer, initialArg, init) { 36999 var hook = updateWorkInProgressHook(); 37000 var queue = hook.queue; 37001 37002 if (!(queue !== null)) { 37003 { 37004 throw Error( "Should have a queue. This is likely a bug in React. Please file an issue." ); 37005 } 37006 } 37007 37008 queue.lastRenderedReducer = reducer; 37009 var current = currentHook; // The last rebase update that is NOT part of the base state. 37010 37011 var baseQueue = current.baseQueue; // The last pending update that hasn't been processed yet. 37012 37013 var pendingQueue = queue.pending; 37014 37015 if (pendingQueue !== null) { 37016 // We have new updates that haven't been processed yet. 37017 // We'll add them to the base queue. 37018 if (baseQueue !== null) { 37019 // Merge the pending queue and the base queue. 37020 var baseFirst = baseQueue.next; 37021 var pendingFirst = pendingQueue.next; 37022 baseQueue.next = pendingFirst; 37023 pendingQueue.next = baseFirst; 37024 } 37025 37026 current.baseQueue = baseQueue = pendingQueue; 37027 queue.pending = null; 37028 } 37029 37030 if (baseQueue !== null) { 37031 // We have a queue to process. 37032 var first = baseQueue.next; 37033 var newState = current.baseState; 37034 var newBaseState = null; 37035 var newBaseQueueFirst = null; 37036 var newBaseQueueLast = null; 37037 var update = first; 37038 37039 do { 37040 var updateExpirationTime = update.expirationTime; 37041 37042 if (updateExpirationTime < renderExpirationTime) { 37043 // Priority is insufficient. Skip this update. If this is the first 37044 // skipped update, the previous update/state is the new base 37045 // update/state. 37046 var clone = { 37047 expirationTime: update.expirationTime, 37048 suspenseConfig: update.suspenseConfig, 37049 action: update.action, 37050 eagerReducer: update.eagerReducer, 37051 eagerState: update.eagerState, 37052 next: null 37053 }; 37054 37055 if (newBaseQueueLast === null) { 37056 newBaseQueueFirst = newBaseQueueLast = clone; 37057 newBaseState = newState; 37058 } else { 37059 newBaseQueueLast = newBaseQueueLast.next = clone; 37060 } // Update the remaining priority in the queue. 37061 37062 37063 if (updateExpirationTime > currentlyRenderingFiber$1.expirationTime) { 37064 currentlyRenderingFiber$1.expirationTime = updateExpirationTime; 37065 markUnprocessedUpdateTime(updateExpirationTime); 37066 } 37067 } else { 37068 // This update does have sufficient priority. 37069 if (newBaseQueueLast !== null) { 37070 var _clone = { 37071 expirationTime: Sync, 37072 // This update is going to be committed so we never want uncommit it. 37073 suspenseConfig: update.suspenseConfig, 37074 action: update.action, 37075 eagerReducer: update.eagerReducer, 37076 eagerState: update.eagerState, 37077 next: null 37078 }; 37079 newBaseQueueLast = newBaseQueueLast.next = _clone; 37080 } // Mark the event time of this update as relevant to this render pass. 37081 // TODO: This should ideally use the true event time of this update rather than 37082 // its priority which is a derived and not reverseable value. 37083 // TODO: We should skip this update if it was already committed but currently 37084 // we have no way of detecting the difference between a committed and suspended 37085 // update here. 37086 37087 37088 markRenderEventTimeAndConfig(updateExpirationTime, update.suspenseConfig); // Process this update. 37089 37090 if (update.eagerReducer === reducer) { 37091 // If this update was processed eagerly, and its reducer matches the 37092 // current reducer, we can use the eagerly computed state. 37093 newState = update.eagerState; 37094 } else { 37095 var action = update.action; 37096 newState = reducer(newState, action); 37097 } 37098 } 37099 37100 update = update.next; 37101 } while (update !== null && update !== first); 37102 37103 if (newBaseQueueLast === null) { 37104 newBaseState = newState; 37105 } else { 37106 newBaseQueueLast.next = newBaseQueueFirst; 37107 } // Mark that the fiber performed work, but only if the new state is 37108 // different from the current state. 37109 37110 37111 if (!objectIs(newState, hook.memoizedState)) { 37112 markWorkInProgressReceivedUpdate(); 37113 } 37114 37115 hook.memoizedState = newState; 37116 hook.baseState = newBaseState; 37117 hook.baseQueue = newBaseQueueLast; 37118 queue.lastRenderedState = newState; 37119 } 37120 37121 var dispatch = queue.dispatch; 37122 return [hook.memoizedState, dispatch]; 37123} 37124 37125function rerenderReducer(reducer, initialArg, init) { 37126 var hook = updateWorkInProgressHook(); 37127 var queue = hook.queue; 37128 37129 if (!(queue !== null)) { 37130 { 37131 throw Error( "Should have a queue. This is likely a bug in React. Please file an issue." ); 37132 } 37133 } 37134 37135 queue.lastRenderedReducer = reducer; // This is a re-render. Apply the new render phase updates to the previous 37136 // work-in-progress hook. 37137 37138 var dispatch = queue.dispatch; 37139 var lastRenderPhaseUpdate = queue.pending; 37140 var newState = hook.memoizedState; 37141 37142 if (lastRenderPhaseUpdate !== null) { 37143 // The queue doesn't persist past this render pass. 37144 queue.pending = null; 37145 var firstRenderPhaseUpdate = lastRenderPhaseUpdate.next; 37146 var update = firstRenderPhaseUpdate; 37147 37148 do { 37149 // Process this render phase update. We don't have to check the 37150 // priority because it will always be the same as the current 37151 // render's. 37152 var action = update.action; 37153 newState = reducer(newState, action); 37154 update = update.next; 37155 } while (update !== firstRenderPhaseUpdate); // Mark that the fiber performed work, but only if the new state is 37156 // different from the current state. 37157 37158 37159 if (!objectIs(newState, hook.memoizedState)) { 37160 markWorkInProgressReceivedUpdate(); 37161 } 37162 37163 hook.memoizedState = newState; // Don't persist the state accumulated from the render phase updates to 37164 // the base state unless the queue is empty. 37165 // TODO: Not sure if this is the desired semantics, but it's what we 37166 // do for gDSFP. I can't remember why. 37167 37168 if (hook.baseQueue === null) { 37169 hook.baseState = newState; 37170 } 37171 37172 queue.lastRenderedState = newState; 37173 } 37174 37175 return [newState, dispatch]; 37176} 37177 37178function mountState(initialState) { 37179 var hook = mountWorkInProgressHook(); 37180 37181 if (typeof initialState === 'function') { 37182 // $FlowFixMe: Flow doesn't like mixed types 37183 initialState = initialState(); 37184 } 37185 37186 hook.memoizedState = hook.baseState = initialState; 37187 var queue = hook.queue = { 37188 pending: null, 37189 dispatch: null, 37190 lastRenderedReducer: basicStateReducer, 37191 lastRenderedState: initialState 37192 }; 37193 var dispatch = queue.dispatch = dispatchAction.bind(null, currentlyRenderingFiber$1, queue); 37194 return [hook.memoizedState, dispatch]; 37195} 37196 37197function updateState(initialState) { 37198 return updateReducer(basicStateReducer); 37199} 37200 37201function rerenderState(initialState) { 37202 return rerenderReducer(basicStateReducer); 37203} 37204 37205function pushEffect(tag, create, destroy, deps) { 37206 var effect = { 37207 tag: tag, 37208 create: create, 37209 destroy: destroy, 37210 deps: deps, 37211 // Circular 37212 next: null 37213 }; 37214 var componentUpdateQueue = currentlyRenderingFiber$1.updateQueue; 37215 37216 if (componentUpdateQueue === null) { 37217 componentUpdateQueue = createFunctionComponentUpdateQueue(); 37218 currentlyRenderingFiber$1.updateQueue = componentUpdateQueue; 37219 componentUpdateQueue.lastEffect = effect.next = effect; 37220 } else { 37221 var lastEffect = componentUpdateQueue.lastEffect; 37222 37223 if (lastEffect === null) { 37224 componentUpdateQueue.lastEffect = effect.next = effect; 37225 } else { 37226 var firstEffect = lastEffect.next; 37227 lastEffect.next = effect; 37228 effect.next = firstEffect; 37229 componentUpdateQueue.lastEffect = effect; 37230 } 37231 } 37232 37233 return effect; 37234} 37235 37236function mountRef(initialValue) { 37237 var hook = mountWorkInProgressHook(); 37238 var ref = { 37239 current: initialValue 37240 }; 37241 37242 { 37243 Object.seal(ref); 37244 } 37245 37246 hook.memoizedState = ref; 37247 return ref; 37248} 37249 37250function updateRef(initialValue) { 37251 var hook = updateWorkInProgressHook(); 37252 return hook.memoizedState; 37253} 37254 37255function mountEffectImpl(fiberEffectTag, hookEffectTag, create, deps) { 37256 var hook = mountWorkInProgressHook(); 37257 var nextDeps = deps === undefined ? null : deps; 37258 currentlyRenderingFiber$1.effectTag |= fiberEffectTag; 37259 hook.memoizedState = pushEffect(HasEffect | hookEffectTag, create, undefined, nextDeps); 37260} 37261 37262function updateEffectImpl(fiberEffectTag, hookEffectTag, create, deps) { 37263 var hook = updateWorkInProgressHook(); 37264 var nextDeps = deps === undefined ? null : deps; 37265 var destroy = undefined; 37266 37267 if (currentHook !== null) { 37268 var prevEffect = currentHook.memoizedState; 37269 destroy = prevEffect.destroy; 37270 37271 if (nextDeps !== null) { 37272 var prevDeps = prevEffect.deps; 37273 37274 if (areHookInputsEqual(nextDeps, prevDeps)) { 37275 pushEffect(hookEffectTag, create, destroy, nextDeps); 37276 return; 37277 } 37278 } 37279 } 37280 37281 currentlyRenderingFiber$1.effectTag |= fiberEffectTag; 37282 hook.memoizedState = pushEffect(HasEffect | hookEffectTag, create, destroy, nextDeps); 37283} 37284 37285function mountEffect(create, deps) { 37286 { 37287 // $FlowExpectedError - jest isn't a global, and isn't recognized outside of tests 37288 if ('undefined' !== typeof jest) { 37289 warnIfNotCurrentlyActingEffectsInDEV(currentlyRenderingFiber$1); 37290 } 37291 } 37292 37293 return mountEffectImpl(Update | Passive, Passive$1, create, deps); 37294} 37295 37296function updateEffect(create, deps) { 37297 { 37298 // $FlowExpectedError - jest isn't a global, and isn't recognized outside of tests 37299 if ('undefined' !== typeof jest) { 37300 warnIfNotCurrentlyActingEffectsInDEV(currentlyRenderingFiber$1); 37301 } 37302 } 37303 37304 return updateEffectImpl(Update | Passive, Passive$1, create, deps); 37305} 37306 37307function mountLayoutEffect(create, deps) { 37308 return mountEffectImpl(Update, Layout, create, deps); 37309} 37310 37311function updateLayoutEffect(create, deps) { 37312 return updateEffectImpl(Update, Layout, create, deps); 37313} 37314 37315function imperativeHandleEffect(create, ref) { 37316 if (typeof ref === 'function') { 37317 var refCallback = ref; 37318 37319 var _inst = create(); 37320 37321 refCallback(_inst); 37322 return function () { 37323 refCallback(null); 37324 }; 37325 } else if (ref !== null && ref !== undefined) { 37326 var refObject = ref; 37327 37328 { 37329 if (!refObject.hasOwnProperty('current')) { 37330 error('Expected useImperativeHandle() first argument to either be a ' + 'ref callback or React.createRef() object. Instead received: %s.', 'an object with keys {' + Object.keys(refObject).join(', ') + '}'); 37331 } 37332 } 37333 37334 var _inst2 = create(); 37335 37336 refObject.current = _inst2; 37337 return function () { 37338 refObject.current = null; 37339 }; 37340 } 37341} 37342 37343function mountImperativeHandle(ref, create, deps) { 37344 { 37345 if (typeof create !== 'function') { 37346 error('Expected useImperativeHandle() second argument to be a function ' + 'that creates a handle. Instead received: %s.', create !== null ? typeof create : 'null'); 37347 } 37348 } // TODO: If deps are provided, should we skip comparing the ref itself? 37349 37350 37351 var effectDeps = deps !== null && deps !== undefined ? deps.concat([ref]) : null; 37352 return mountEffectImpl(Update, Layout, imperativeHandleEffect.bind(null, create, ref), effectDeps); 37353} 37354 37355function updateImperativeHandle(ref, create, deps) { 37356 { 37357 if (typeof create !== 'function') { 37358 error('Expected useImperativeHandle() second argument to be a function ' + 'that creates a handle. Instead received: %s.', create !== null ? typeof create : 'null'); 37359 } 37360 } // TODO: If deps are provided, should we skip comparing the ref itself? 37361 37362 37363 var effectDeps = deps !== null && deps !== undefined ? deps.concat([ref]) : null; 37364 return updateEffectImpl(Update, Layout, imperativeHandleEffect.bind(null, create, ref), effectDeps); 37365} 37366 37367function mountDebugValue(value, formatterFn) {// This hook is normally a no-op. 37368 // The react-debug-hooks package injects its own implementation 37369 // so that e.g. DevTools can display custom hook values. 37370} 37371 37372var updateDebugValue = mountDebugValue; 37373 37374function mountCallback(callback, deps) { 37375 var hook = mountWorkInProgressHook(); 37376 var nextDeps = deps === undefined ? null : deps; 37377 hook.memoizedState = [callback, nextDeps]; 37378 return callback; 37379} 37380 37381function updateCallback(callback, deps) { 37382 var hook = updateWorkInProgressHook(); 37383 var nextDeps = deps === undefined ? null : deps; 37384 var prevState = hook.memoizedState; 37385 37386 if (prevState !== null) { 37387 if (nextDeps !== null) { 37388 var prevDeps = prevState[1]; 37389 37390 if (areHookInputsEqual(nextDeps, prevDeps)) { 37391 return prevState[0]; 37392 } 37393 } 37394 } 37395 37396 hook.memoizedState = [callback, nextDeps]; 37397 return callback; 37398} 37399 37400function mountMemo(nextCreate, deps) { 37401 var hook = mountWorkInProgressHook(); 37402 var nextDeps = deps === undefined ? null : deps; 37403 var nextValue = nextCreate(); 37404 hook.memoizedState = [nextValue, nextDeps]; 37405 return nextValue; 37406} 37407 37408function updateMemo(nextCreate, deps) { 37409 var hook = updateWorkInProgressHook(); 37410 var nextDeps = deps === undefined ? null : deps; 37411 var prevState = hook.memoizedState; 37412 37413 if (prevState !== null) { 37414 // Assume these are defined. If they're not, areHookInputsEqual will warn. 37415 if (nextDeps !== null) { 37416 var prevDeps = prevState[1]; 37417 37418 if (areHookInputsEqual(nextDeps, prevDeps)) { 37419 return prevState[0]; 37420 } 37421 } 37422 } 37423 37424 var nextValue = nextCreate(); 37425 hook.memoizedState = [nextValue, nextDeps]; 37426 return nextValue; 37427} 37428 37429function mountDeferredValue(value, config) { 37430 var _mountState = mountState(value), 37431 prevValue = _mountState[0], 37432 setValue = _mountState[1]; 37433 37434 mountEffect(function () { 37435 var previousConfig = ReactCurrentBatchConfig$1.suspense; 37436 ReactCurrentBatchConfig$1.suspense = config === undefined ? null : config; 37437 37438 try { 37439 setValue(value); 37440 } finally { 37441 ReactCurrentBatchConfig$1.suspense = previousConfig; 37442 } 37443 }, [value, config]); 37444 return prevValue; 37445} 37446 37447function updateDeferredValue(value, config) { 37448 var _updateState = updateState(), 37449 prevValue = _updateState[0], 37450 setValue = _updateState[1]; 37451 37452 updateEffect(function () { 37453 var previousConfig = ReactCurrentBatchConfig$1.suspense; 37454 ReactCurrentBatchConfig$1.suspense = config === undefined ? null : config; 37455 37456 try { 37457 setValue(value); 37458 } finally { 37459 ReactCurrentBatchConfig$1.suspense = previousConfig; 37460 } 37461 }, [value, config]); 37462 return prevValue; 37463} 37464 37465function rerenderDeferredValue(value, config) { 37466 var _rerenderState = rerenderState(), 37467 prevValue = _rerenderState[0], 37468 setValue = _rerenderState[1]; 37469 37470 updateEffect(function () { 37471 var previousConfig = ReactCurrentBatchConfig$1.suspense; 37472 ReactCurrentBatchConfig$1.suspense = config === undefined ? null : config; 37473 37474 try { 37475 setValue(value); 37476 } finally { 37477 ReactCurrentBatchConfig$1.suspense = previousConfig; 37478 } 37479 }, [value, config]); 37480 return prevValue; 37481} 37482 37483function startTransition(setPending, config, callback) { 37484 var priorityLevel = getCurrentPriorityLevel(); 37485 runWithPriority$1(priorityLevel < UserBlockingPriority$1 ? UserBlockingPriority$1 : priorityLevel, function () { 37486 setPending(true); 37487 }); 37488 runWithPriority$1(priorityLevel > NormalPriority ? NormalPriority : priorityLevel, function () { 37489 var previousConfig = ReactCurrentBatchConfig$1.suspense; 37490 ReactCurrentBatchConfig$1.suspense = config === undefined ? null : config; 37491 37492 try { 37493 setPending(false); 37494 callback(); 37495 } finally { 37496 ReactCurrentBatchConfig$1.suspense = previousConfig; 37497 } 37498 }); 37499} 37500 37501function mountTransition(config) { 37502 var _mountState2 = mountState(false), 37503 isPending = _mountState2[0], 37504 setPending = _mountState2[1]; 37505 37506 var start = mountCallback(startTransition.bind(null, setPending, config), [setPending, config]); 37507 return [start, isPending]; 37508} 37509 37510function updateTransition(config) { 37511 var _updateState2 = updateState(), 37512 isPending = _updateState2[0], 37513 setPending = _updateState2[1]; 37514 37515 var start = updateCallback(startTransition.bind(null, setPending, config), [setPending, config]); 37516 return [start, isPending]; 37517} 37518 37519function rerenderTransition(config) { 37520 var _rerenderState2 = rerenderState(), 37521 isPending = _rerenderState2[0], 37522 setPending = _rerenderState2[1]; 37523 37524 var start = updateCallback(startTransition.bind(null, setPending, config), [setPending, config]); 37525 return [start, isPending]; 37526} 37527 37528function dispatchAction(fiber, queue, action) { 37529 { 37530 if (typeof arguments[3] === 'function') { 37531 error("State updates from the useState() and useReducer() Hooks don't support the " + 'second callback argument. To execute a side effect after ' + 'rendering, declare it in the component body with useEffect().'); 37532 } 37533 } 37534 37535 var currentTime = requestCurrentTimeForUpdate(); 37536 var suspenseConfig = requestCurrentSuspenseConfig(); 37537 var expirationTime = computeExpirationForFiber(currentTime, fiber, suspenseConfig); 37538 var update = { 37539 expirationTime: expirationTime, 37540 suspenseConfig: suspenseConfig, 37541 action: action, 37542 eagerReducer: null, 37543 eagerState: null, 37544 next: null 37545 }; 37546 37547 { 37548 update.priority = getCurrentPriorityLevel(); 37549 } // Append the update to the end of the list. 37550 37551 37552 var pending = queue.pending; 37553 37554 if (pending === null) { 37555 // This is the first update. Create a circular list. 37556 update.next = update; 37557 } else { 37558 update.next = pending.next; 37559 pending.next = update; 37560 } 37561 37562 queue.pending = update; 37563 var alternate = fiber.alternate; 37564 37565 if (fiber === currentlyRenderingFiber$1 || alternate !== null && alternate === currentlyRenderingFiber$1) { 37566 // This is a render phase update. Stash it in a lazily-created map of 37567 // queue -> linked list of updates. After this render pass, we'll restart 37568 // and apply the stashed updates on top of the work-in-progress hook. 37569 didScheduleRenderPhaseUpdate = true; 37570 update.expirationTime = renderExpirationTime; 37571 currentlyRenderingFiber$1.expirationTime = renderExpirationTime; 37572 } else { 37573 if (fiber.expirationTime === NoWork && (alternate === null || alternate.expirationTime === NoWork)) { 37574 // The queue is currently empty, which means we can eagerly compute the 37575 // next state before entering the render phase. If the new state is the 37576 // same as the current state, we may be able to bail out entirely. 37577 var lastRenderedReducer = queue.lastRenderedReducer; 37578 37579 if (lastRenderedReducer !== null) { 37580 var prevDispatcher; 37581 37582 { 37583 prevDispatcher = ReactCurrentDispatcher.current; 37584 ReactCurrentDispatcher.current = InvalidNestedHooksDispatcherOnUpdateInDEV; 37585 } 37586 37587 try { 37588 var currentState = queue.lastRenderedState; 37589 var eagerState = lastRenderedReducer(currentState, action); // Stash the eagerly computed state, and the reducer used to compute 37590 // it, on the update object. If the reducer hasn't changed by the 37591 // time we enter the render phase, then the eager state can be used 37592 // without calling the reducer again. 37593 37594 update.eagerReducer = lastRenderedReducer; 37595 update.eagerState = eagerState; 37596 37597 if (objectIs(eagerState, currentState)) { 37598 // Fast path. We can bail out without scheduling React to re-render. 37599 // It's still possible that we'll need to rebase this update later, 37600 // if the component re-renders for a different reason and by that 37601 // time the reducer has changed. 37602 return; 37603 } 37604 } catch (error) {// Suppress the error. It will throw again in the render phase. 37605 } finally { 37606 { 37607 ReactCurrentDispatcher.current = prevDispatcher; 37608 } 37609 } 37610 } 37611 } 37612 37613 { 37614 // $FlowExpectedError - jest isn't a global, and isn't recognized outside of tests 37615 if ('undefined' !== typeof jest) { 37616 warnIfNotScopedWithMatchingAct(fiber); 37617 warnIfNotCurrentlyActingUpdatesInDev(fiber); 37618 } 37619 } 37620 37621 scheduleWork(fiber, expirationTime); 37622 } 37623} 37624 37625var ContextOnlyDispatcher = { 37626 readContext: readContext, 37627 useCallback: throwInvalidHookError, 37628 useContext: throwInvalidHookError, 37629 useEffect: throwInvalidHookError, 37630 useImperativeHandle: throwInvalidHookError, 37631 useLayoutEffect: throwInvalidHookError, 37632 useMemo: throwInvalidHookError, 37633 useReducer: throwInvalidHookError, 37634 useRef: throwInvalidHookError, 37635 useState: throwInvalidHookError, 37636 useDebugValue: throwInvalidHookError, 37637 useResponder: throwInvalidHookError, 37638 useDeferredValue: throwInvalidHookError, 37639 useTransition: throwInvalidHookError 37640}; 37641var HooksDispatcherOnMountInDEV = null; 37642var HooksDispatcherOnMountWithHookTypesInDEV = null; 37643var HooksDispatcherOnUpdateInDEV = null; 37644var HooksDispatcherOnRerenderInDEV = null; 37645var InvalidNestedHooksDispatcherOnMountInDEV = null; 37646var InvalidNestedHooksDispatcherOnUpdateInDEV = null; 37647var InvalidNestedHooksDispatcherOnRerenderInDEV = null; 37648 37649{ 37650 var warnInvalidContextAccess = function () { 37651 error('Context can only be read while React is rendering. ' + 'In classes, you can read it in the render method or getDerivedStateFromProps. ' + 'In function components, you can read it directly in the function body, but not ' + 'inside Hooks like useReducer() or useMemo().'); 37652 }; 37653 37654 var warnInvalidHookAccess = function () { 37655 error('Do not call Hooks inside useEffect(...), useMemo(...), or other built-in Hooks. ' + 'You can only call Hooks at the top level of your React function. ' + 'For more information, see ' + 'https://fb.me/rules-of-hooks'); 37656 }; 37657 37658 HooksDispatcherOnMountInDEV = { 37659 readContext: function (context, observedBits) { 37660 return readContext(context, observedBits); 37661 }, 37662 useCallback: function (callback, deps) { 37663 currentHookNameInDev = 'useCallback'; 37664 mountHookTypesDev(); 37665 checkDepsAreArrayDev(deps); 37666 return mountCallback(callback, deps); 37667 }, 37668 useContext: function (context, observedBits) { 37669 currentHookNameInDev = 'useContext'; 37670 mountHookTypesDev(); 37671 return readContext(context, observedBits); 37672 }, 37673 useEffect: function (create, deps) { 37674 currentHookNameInDev = 'useEffect'; 37675 mountHookTypesDev(); 37676 checkDepsAreArrayDev(deps); 37677 return mountEffect(create, deps); 37678 }, 37679 useImperativeHandle: function (ref, create, deps) { 37680 currentHookNameInDev = 'useImperativeHandle'; 37681 mountHookTypesDev(); 37682 checkDepsAreArrayDev(deps); 37683 return mountImperativeHandle(ref, create, deps); 37684 }, 37685 useLayoutEffect: function (create, deps) { 37686 currentHookNameInDev = 'useLayoutEffect'; 37687 mountHookTypesDev(); 37688 checkDepsAreArrayDev(deps); 37689 return mountLayoutEffect(create, deps); 37690 }, 37691 useMemo: function (create, deps) { 37692 currentHookNameInDev = 'useMemo'; 37693 mountHookTypesDev(); 37694 checkDepsAreArrayDev(deps); 37695 var prevDispatcher = ReactCurrentDispatcher.current; 37696 ReactCurrentDispatcher.current = InvalidNestedHooksDispatcherOnMountInDEV; 37697 37698 try { 37699 return mountMemo(create, deps); 37700 } finally { 37701 ReactCurrentDispatcher.current = prevDispatcher; 37702 } 37703 }, 37704 useReducer: function (reducer, initialArg, init) { 37705 currentHookNameInDev = 'useReducer'; 37706 mountHookTypesDev(); 37707 var prevDispatcher = ReactCurrentDispatcher.current; 37708 ReactCurrentDispatcher.current = InvalidNestedHooksDispatcherOnMountInDEV; 37709 37710 try { 37711 return mountReducer(reducer, initialArg, init); 37712 } finally { 37713 ReactCurrentDispatcher.current = prevDispatcher; 37714 } 37715 }, 37716 useRef: function (initialValue) { 37717 currentHookNameInDev = 'useRef'; 37718 mountHookTypesDev(); 37719 return mountRef(initialValue); 37720 }, 37721 useState: function (initialState) { 37722 currentHookNameInDev = 'useState'; 37723 mountHookTypesDev(); 37724 var prevDispatcher = ReactCurrentDispatcher.current; 37725 ReactCurrentDispatcher.current = InvalidNestedHooksDispatcherOnMountInDEV; 37726 37727 try { 37728 return mountState(initialState); 37729 } finally { 37730 ReactCurrentDispatcher.current = prevDispatcher; 37731 } 37732 }, 37733 useDebugValue: function (value, formatterFn) { 37734 currentHookNameInDev = 'useDebugValue'; 37735 mountHookTypesDev(); 37736 return mountDebugValue(); 37737 }, 37738 useResponder: function (responder, props) { 37739 currentHookNameInDev = 'useResponder'; 37740 mountHookTypesDev(); 37741 return createDeprecatedResponderListener(responder, props); 37742 }, 37743 useDeferredValue: function (value, config) { 37744 currentHookNameInDev = 'useDeferredValue'; 37745 mountHookTypesDev(); 37746 return mountDeferredValue(value, config); 37747 }, 37748 useTransition: function (config) { 37749 currentHookNameInDev = 'useTransition'; 37750 mountHookTypesDev(); 37751 return mountTransition(config); 37752 } 37753 }; 37754 HooksDispatcherOnMountWithHookTypesInDEV = { 37755 readContext: function (context, observedBits) { 37756 return readContext(context, observedBits); 37757 }, 37758 useCallback: function (callback, deps) { 37759 currentHookNameInDev = 'useCallback'; 37760 updateHookTypesDev(); 37761 return mountCallback(callback, deps); 37762 }, 37763 useContext: function (context, observedBits) { 37764 currentHookNameInDev = 'useContext'; 37765 updateHookTypesDev(); 37766 return readContext(context, observedBits); 37767 }, 37768 useEffect: function (create, deps) { 37769 currentHookNameInDev = 'useEffect'; 37770 updateHookTypesDev(); 37771 return mountEffect(create, deps); 37772 }, 37773 useImperativeHandle: function (ref, create, deps) { 37774 currentHookNameInDev = 'useImperativeHandle'; 37775 updateHookTypesDev(); 37776 return mountImperativeHandle(ref, create, deps); 37777 }, 37778 useLayoutEffect: function (create, deps) { 37779 currentHookNameInDev = 'useLayoutEffect'; 37780 updateHookTypesDev(); 37781 return mountLayoutEffect(create, deps); 37782 }, 37783 useMemo: function (create, deps) { 37784 currentHookNameInDev = 'useMemo'; 37785 updateHookTypesDev(); 37786 var prevDispatcher = ReactCurrentDispatcher.current; 37787 ReactCurrentDispatcher.current = InvalidNestedHooksDispatcherOnMountInDEV; 37788 37789 try { 37790 return mountMemo(create, deps); 37791 } finally { 37792 ReactCurrentDispatcher.current = prevDispatcher; 37793 } 37794 }, 37795 useReducer: function (reducer, initialArg, init) { 37796 currentHookNameInDev = 'useReducer'; 37797 updateHookTypesDev(); 37798 var prevDispatcher = ReactCurrentDispatcher.current; 37799 ReactCurrentDispatcher.current = InvalidNestedHooksDispatcherOnMountInDEV; 37800 37801 try { 37802 return mountReducer(reducer, initialArg, init); 37803 } finally { 37804 ReactCurrentDispatcher.current = prevDispatcher; 37805 } 37806 }, 37807 useRef: function (initialValue) { 37808 currentHookNameInDev = 'useRef'; 37809 updateHookTypesDev(); 37810 return mountRef(initialValue); 37811 }, 37812 useState: function (initialState) { 37813 currentHookNameInDev = 'useState'; 37814 updateHookTypesDev(); 37815 var prevDispatcher = ReactCurrentDispatcher.current; 37816 ReactCurrentDispatcher.current = InvalidNestedHooksDispatcherOnMountInDEV; 37817 37818 try { 37819 return mountState(initialState); 37820 } finally { 37821 ReactCurrentDispatcher.current = prevDispatcher; 37822 } 37823 }, 37824 useDebugValue: function (value, formatterFn) { 37825 currentHookNameInDev = 'useDebugValue'; 37826 updateHookTypesDev(); 37827 return mountDebugValue(); 37828 }, 37829 useResponder: function (responder, props) { 37830 currentHookNameInDev = 'useResponder'; 37831 updateHookTypesDev(); 37832 return createDeprecatedResponderListener(responder, props); 37833 }, 37834 useDeferredValue: function (value, config) { 37835 currentHookNameInDev = 'useDeferredValue'; 37836 updateHookTypesDev(); 37837 return mountDeferredValue(value, config); 37838 }, 37839 useTransition: function (config) { 37840 currentHookNameInDev = 'useTransition'; 37841 updateHookTypesDev(); 37842 return mountTransition(config); 37843 } 37844 }; 37845 HooksDispatcherOnUpdateInDEV = { 37846 readContext: function (context, observedBits) { 37847 return readContext(context, observedBits); 37848 }, 37849 useCallback: function (callback, deps) { 37850 currentHookNameInDev = 'useCallback'; 37851 updateHookTypesDev(); 37852 return updateCallback(callback, deps); 37853 }, 37854 useContext: function (context, observedBits) { 37855 currentHookNameInDev = 'useContext'; 37856 updateHookTypesDev(); 37857 return readContext(context, observedBits); 37858 }, 37859 useEffect: function (create, deps) { 37860 currentHookNameInDev = 'useEffect'; 37861 updateHookTypesDev(); 37862 return updateEffect(create, deps); 37863 }, 37864 useImperativeHandle: function (ref, create, deps) { 37865 currentHookNameInDev = 'useImperativeHandle'; 37866 updateHookTypesDev(); 37867 return updateImperativeHandle(ref, create, deps); 37868 }, 37869 useLayoutEffect: function (create, deps) { 37870 currentHookNameInDev = 'useLayoutEffect'; 37871 updateHookTypesDev(); 37872 return updateLayoutEffect(create, deps); 37873 }, 37874 useMemo: function (create, deps) { 37875 currentHookNameInDev = 'useMemo'; 37876 updateHookTypesDev(); 37877 var prevDispatcher = ReactCurrentDispatcher.current; 37878 ReactCurrentDispatcher.current = InvalidNestedHooksDispatcherOnUpdateInDEV; 37879 37880 try { 37881 return updateMemo(create, deps); 37882 } finally { 37883 ReactCurrentDispatcher.current = prevDispatcher; 37884 } 37885 }, 37886 useReducer: function (reducer, initialArg, init) { 37887 currentHookNameInDev = 'useReducer'; 37888 updateHookTypesDev(); 37889 var prevDispatcher = ReactCurrentDispatcher.current; 37890 ReactCurrentDispatcher.current = InvalidNestedHooksDispatcherOnUpdateInDEV; 37891 37892 try { 37893 return updateReducer(reducer, initialArg, init); 37894 } finally { 37895 ReactCurrentDispatcher.current = prevDispatcher; 37896 } 37897 }, 37898 useRef: function (initialValue) { 37899 currentHookNameInDev = 'useRef'; 37900 updateHookTypesDev(); 37901 return updateRef(); 37902 }, 37903 useState: function (initialState) { 37904 currentHookNameInDev = 'useState'; 37905 updateHookTypesDev(); 37906 var prevDispatcher = ReactCurrentDispatcher.current; 37907 ReactCurrentDispatcher.current = InvalidNestedHooksDispatcherOnUpdateInDEV; 37908 37909 try { 37910 return updateState(initialState); 37911 } finally { 37912 ReactCurrentDispatcher.current = prevDispatcher; 37913 } 37914 }, 37915 useDebugValue: function (value, formatterFn) { 37916 currentHookNameInDev = 'useDebugValue'; 37917 updateHookTypesDev(); 37918 return updateDebugValue(); 37919 }, 37920 useResponder: function (responder, props) { 37921 currentHookNameInDev = 'useResponder'; 37922 updateHookTypesDev(); 37923 return createDeprecatedResponderListener(responder, props); 37924 }, 37925 useDeferredValue: function (value, config) { 37926 currentHookNameInDev = 'useDeferredValue'; 37927 updateHookTypesDev(); 37928 return updateDeferredValue(value, config); 37929 }, 37930 useTransition: function (config) { 37931 currentHookNameInDev = 'useTransition'; 37932 updateHookTypesDev(); 37933 return updateTransition(config); 37934 } 37935 }; 37936 HooksDispatcherOnRerenderInDEV = { 37937 readContext: function (context, observedBits) { 37938 return readContext(context, observedBits); 37939 }, 37940 useCallback: function (callback, deps) { 37941 currentHookNameInDev = 'useCallback'; 37942 updateHookTypesDev(); 37943 return updateCallback(callback, deps); 37944 }, 37945 useContext: function (context, observedBits) { 37946 currentHookNameInDev = 'useContext'; 37947 updateHookTypesDev(); 37948 return readContext(context, observedBits); 37949 }, 37950 useEffect: function (create, deps) { 37951 currentHookNameInDev = 'useEffect'; 37952 updateHookTypesDev(); 37953 return updateEffect(create, deps); 37954 }, 37955 useImperativeHandle: function (ref, create, deps) { 37956 currentHookNameInDev = 'useImperativeHandle'; 37957 updateHookTypesDev(); 37958 return updateImperativeHandle(ref, create, deps); 37959 }, 37960 useLayoutEffect: function (create, deps) { 37961 currentHookNameInDev = 'useLayoutEffect'; 37962 updateHookTypesDev(); 37963 return updateLayoutEffect(create, deps); 37964 }, 37965 useMemo: function (create, deps) { 37966 currentHookNameInDev = 'useMemo'; 37967 updateHookTypesDev(); 37968 var prevDispatcher = ReactCurrentDispatcher.current; 37969 ReactCurrentDispatcher.current = InvalidNestedHooksDispatcherOnRerenderInDEV; 37970 37971 try { 37972 return updateMemo(create, deps); 37973 } finally { 37974 ReactCurrentDispatcher.current = prevDispatcher; 37975 } 37976 }, 37977 useReducer: function (reducer, initialArg, init) { 37978 currentHookNameInDev = 'useReducer'; 37979 updateHookTypesDev(); 37980 var prevDispatcher = ReactCurrentDispatcher.current; 37981 ReactCurrentDispatcher.current = InvalidNestedHooksDispatcherOnRerenderInDEV; 37982 37983 try { 37984 return rerenderReducer(reducer, initialArg, init); 37985 } finally { 37986 ReactCurrentDispatcher.current = prevDispatcher; 37987 } 37988 }, 37989 useRef: function (initialValue) { 37990 currentHookNameInDev = 'useRef'; 37991 updateHookTypesDev(); 37992 return updateRef(); 37993 }, 37994 useState: function (initialState) { 37995 currentHookNameInDev = 'useState'; 37996 updateHookTypesDev(); 37997 var prevDispatcher = ReactCurrentDispatcher.current; 37998 ReactCurrentDispatcher.current = InvalidNestedHooksDispatcherOnRerenderInDEV; 37999 38000 try { 38001 return rerenderState(initialState); 38002 } finally { 38003 ReactCurrentDispatcher.current = prevDispatcher; 38004 } 38005 }, 38006 useDebugValue: function (value, formatterFn) { 38007 currentHookNameInDev = 'useDebugValue'; 38008 updateHookTypesDev(); 38009 return updateDebugValue(); 38010 }, 38011 useResponder: function (responder, props) { 38012 currentHookNameInDev = 'useResponder'; 38013 updateHookTypesDev(); 38014 return createDeprecatedResponderListener(responder, props); 38015 }, 38016 useDeferredValue: function (value, config) { 38017 currentHookNameInDev = 'useDeferredValue'; 38018 updateHookTypesDev(); 38019 return rerenderDeferredValue(value, config); 38020 }, 38021 useTransition: function (config) { 38022 currentHookNameInDev = 'useTransition'; 38023 updateHookTypesDev(); 38024 return rerenderTransition(config); 38025 } 38026 }; 38027 InvalidNestedHooksDispatcherOnMountInDEV = { 38028 readContext: function (context, observedBits) { 38029 warnInvalidContextAccess(); 38030 return readContext(context, observedBits); 38031 }, 38032 useCallback: function (callback, deps) { 38033 currentHookNameInDev = 'useCallback'; 38034 warnInvalidHookAccess(); 38035 mountHookTypesDev(); 38036 return mountCallback(callback, deps); 38037 }, 38038 useContext: function (context, observedBits) { 38039 currentHookNameInDev = 'useContext'; 38040 warnInvalidHookAccess(); 38041 mountHookTypesDev(); 38042 return readContext(context, observedBits); 38043 }, 38044 useEffect: function (create, deps) { 38045 currentHookNameInDev = 'useEffect'; 38046 warnInvalidHookAccess(); 38047 mountHookTypesDev(); 38048 return mountEffect(create, deps); 38049 }, 38050 useImperativeHandle: function (ref, create, deps) { 38051 currentHookNameInDev = 'useImperativeHandle'; 38052 warnInvalidHookAccess(); 38053 mountHookTypesDev(); 38054 return mountImperativeHandle(ref, create, deps); 38055 }, 38056 useLayoutEffect: function (create, deps) { 38057 currentHookNameInDev = 'useLayoutEffect'; 38058 warnInvalidHookAccess(); 38059 mountHookTypesDev(); 38060 return mountLayoutEffect(create, deps); 38061 }, 38062 useMemo: function (create, deps) { 38063 currentHookNameInDev = 'useMemo'; 38064 warnInvalidHookAccess(); 38065 mountHookTypesDev(); 38066 var prevDispatcher = ReactCurrentDispatcher.current; 38067 ReactCurrentDispatcher.current = InvalidNestedHooksDispatcherOnMountInDEV; 38068 38069 try { 38070 return mountMemo(create, deps); 38071 } finally { 38072 ReactCurrentDispatcher.current = prevDispatcher; 38073 } 38074 }, 38075 useReducer: function (reducer, initialArg, init) { 38076 currentHookNameInDev = 'useReducer'; 38077 warnInvalidHookAccess(); 38078 mountHookTypesDev(); 38079 var prevDispatcher = ReactCurrentDispatcher.current; 38080 ReactCurrentDispatcher.current = InvalidNestedHooksDispatcherOnMountInDEV; 38081 38082 try { 38083 return mountReducer(reducer, initialArg, init); 38084 } finally { 38085 ReactCurrentDispatcher.current = prevDispatcher; 38086 } 38087 }, 38088 useRef: function (initialValue) { 38089 currentHookNameInDev = 'useRef'; 38090 warnInvalidHookAccess(); 38091 mountHookTypesDev(); 38092 return mountRef(initialValue); 38093 }, 38094 useState: function (initialState) { 38095 currentHookNameInDev = 'useState'; 38096 warnInvalidHookAccess(); 38097 mountHookTypesDev(); 38098 var prevDispatcher = ReactCurrentDispatcher.current; 38099 ReactCurrentDispatcher.current = InvalidNestedHooksDispatcherOnMountInDEV; 38100 38101 try { 38102 return mountState(initialState); 38103 } finally { 38104 ReactCurrentDispatcher.current = prevDispatcher; 38105 } 38106 }, 38107 useDebugValue: function (value, formatterFn) { 38108 currentHookNameInDev = 'useDebugValue'; 38109 warnInvalidHookAccess(); 38110 mountHookTypesDev(); 38111 return mountDebugValue(); 38112 }, 38113 useResponder: function (responder, props) { 38114 currentHookNameInDev = 'useResponder'; 38115 warnInvalidHookAccess(); 38116 mountHookTypesDev(); 38117 return createDeprecatedResponderListener(responder, props); 38118 }, 38119 useDeferredValue: function (value, config) { 38120 currentHookNameInDev = 'useDeferredValue'; 38121 warnInvalidHookAccess(); 38122 mountHookTypesDev(); 38123 return mountDeferredValue(value, config); 38124 }, 38125 useTransition: function (config) { 38126 currentHookNameInDev = 'useTransition'; 38127 warnInvalidHookAccess(); 38128 mountHookTypesDev(); 38129 return mountTransition(config); 38130 } 38131 }; 38132 InvalidNestedHooksDispatcherOnUpdateInDEV = { 38133 readContext: function (context, observedBits) { 38134 warnInvalidContextAccess(); 38135 return readContext(context, observedBits); 38136 }, 38137 useCallback: function (callback, deps) { 38138 currentHookNameInDev = 'useCallback'; 38139 warnInvalidHookAccess(); 38140 updateHookTypesDev(); 38141 return updateCallback(callback, deps); 38142 }, 38143 useContext: function (context, observedBits) { 38144 currentHookNameInDev = 'useContext'; 38145 warnInvalidHookAccess(); 38146 updateHookTypesDev(); 38147 return readContext(context, observedBits); 38148 }, 38149 useEffect: function (create, deps) { 38150 currentHookNameInDev = 'useEffect'; 38151 warnInvalidHookAccess(); 38152 updateHookTypesDev(); 38153 return updateEffect(create, deps); 38154 }, 38155 useImperativeHandle: function (ref, create, deps) { 38156 currentHookNameInDev = 'useImperativeHandle'; 38157 warnInvalidHookAccess(); 38158 updateHookTypesDev(); 38159 return updateImperativeHandle(ref, create, deps); 38160 }, 38161 useLayoutEffect: function (create, deps) { 38162 currentHookNameInDev = 'useLayoutEffect'; 38163 warnInvalidHookAccess(); 38164 updateHookTypesDev(); 38165 return updateLayoutEffect(create, deps); 38166 }, 38167 useMemo: function (create, deps) { 38168 currentHookNameInDev = 'useMemo'; 38169 warnInvalidHookAccess(); 38170 updateHookTypesDev(); 38171 var prevDispatcher = ReactCurrentDispatcher.current; 38172 ReactCurrentDispatcher.current = InvalidNestedHooksDispatcherOnUpdateInDEV; 38173 38174 try { 38175 return updateMemo(create, deps); 38176 } finally { 38177 ReactCurrentDispatcher.current = prevDispatcher; 38178 } 38179 }, 38180 useReducer: function (reducer, initialArg, init) { 38181 currentHookNameInDev = 'useReducer'; 38182 warnInvalidHookAccess(); 38183 updateHookTypesDev(); 38184 var prevDispatcher = ReactCurrentDispatcher.current; 38185 ReactCurrentDispatcher.current = InvalidNestedHooksDispatcherOnUpdateInDEV; 38186 38187 try { 38188 return updateReducer(reducer, initialArg, init); 38189 } finally { 38190 ReactCurrentDispatcher.current = prevDispatcher; 38191 } 38192 }, 38193 useRef: function (initialValue) { 38194 currentHookNameInDev = 'useRef'; 38195 warnInvalidHookAccess(); 38196 updateHookTypesDev(); 38197 return updateRef(); 38198 }, 38199 useState: function (initialState) { 38200 currentHookNameInDev = 'useState'; 38201 warnInvalidHookAccess(); 38202 updateHookTypesDev(); 38203 var prevDispatcher = ReactCurrentDispatcher.current; 38204 ReactCurrentDispatcher.current = InvalidNestedHooksDispatcherOnUpdateInDEV; 38205 38206 try { 38207 return updateState(initialState); 38208 } finally { 38209 ReactCurrentDispatcher.current = prevDispatcher; 38210 } 38211 }, 38212 useDebugValue: function (value, formatterFn) { 38213 currentHookNameInDev = 'useDebugValue'; 38214 warnInvalidHookAccess(); 38215 updateHookTypesDev(); 38216 return updateDebugValue(); 38217 }, 38218 useResponder: function (responder, props) { 38219 currentHookNameInDev = 'useResponder'; 38220 warnInvalidHookAccess(); 38221 updateHookTypesDev(); 38222 return createDeprecatedResponderListener(responder, props); 38223 }, 38224 useDeferredValue: function (value, config) { 38225 currentHookNameInDev = 'useDeferredValue'; 38226 warnInvalidHookAccess(); 38227 updateHookTypesDev(); 38228 return updateDeferredValue(value, config); 38229 }, 38230 useTransition: function (config) { 38231 currentHookNameInDev = 'useTransition'; 38232 warnInvalidHookAccess(); 38233 updateHookTypesDev(); 38234 return updateTransition(config); 38235 } 38236 }; 38237 InvalidNestedHooksDispatcherOnRerenderInDEV = { 38238 readContext: function (context, observedBits) { 38239 warnInvalidContextAccess(); 38240 return readContext(context, observedBits); 38241 }, 38242 useCallback: function (callback, deps) { 38243 currentHookNameInDev = 'useCallback'; 38244 warnInvalidHookAccess(); 38245 updateHookTypesDev(); 38246 return updateCallback(callback, deps); 38247 }, 38248 useContext: function (context, observedBits) { 38249 currentHookNameInDev = 'useContext'; 38250 warnInvalidHookAccess(); 38251 updateHookTypesDev(); 38252 return readContext(context, observedBits); 38253 }, 38254 useEffect: function (create, deps) { 38255 currentHookNameInDev = 'useEffect'; 38256 warnInvalidHookAccess(); 38257 updateHookTypesDev(); 38258 return updateEffect(create, deps); 38259 }, 38260 useImperativeHandle: function (ref, create, deps) { 38261 currentHookNameInDev = 'useImperativeHandle'; 38262 warnInvalidHookAccess(); 38263 updateHookTypesDev(); 38264 return updateImperativeHandle(ref, create, deps); 38265 }, 38266 useLayoutEffect: function (create, deps) { 38267 currentHookNameInDev = 'useLayoutEffect'; 38268 warnInvalidHookAccess(); 38269 updateHookTypesDev(); 38270 return updateLayoutEffect(create, deps); 38271 }, 38272 useMemo: function (create, deps) { 38273 currentHookNameInDev = 'useMemo'; 38274 warnInvalidHookAccess(); 38275 updateHookTypesDev(); 38276 var prevDispatcher = ReactCurrentDispatcher.current; 38277 ReactCurrentDispatcher.current = InvalidNestedHooksDispatcherOnUpdateInDEV; 38278 38279 try { 38280 return updateMemo(create, deps); 38281 } finally { 38282 ReactCurrentDispatcher.current = prevDispatcher; 38283 } 38284 }, 38285 useReducer: function (reducer, initialArg, init) { 38286 currentHookNameInDev = 'useReducer'; 38287 warnInvalidHookAccess(); 38288 updateHookTypesDev(); 38289 var prevDispatcher = ReactCurrentDispatcher.current; 38290 ReactCurrentDispatcher.current = InvalidNestedHooksDispatcherOnUpdateInDEV; 38291 38292 try { 38293 return rerenderReducer(reducer, initialArg, init); 38294 } finally { 38295 ReactCurrentDispatcher.current = prevDispatcher; 38296 } 38297 }, 38298 useRef: function (initialValue) { 38299 currentHookNameInDev = 'useRef'; 38300 warnInvalidHookAccess(); 38301 updateHookTypesDev(); 38302 return updateRef(); 38303 }, 38304 useState: function (initialState) { 38305 currentHookNameInDev = 'useState'; 38306 warnInvalidHookAccess(); 38307 updateHookTypesDev(); 38308 var prevDispatcher = ReactCurrentDispatcher.current; 38309 ReactCurrentDispatcher.current = InvalidNestedHooksDispatcherOnUpdateInDEV; 38310 38311 try { 38312 return rerenderState(initialState); 38313 } finally { 38314 ReactCurrentDispatcher.current = prevDispatcher; 38315 } 38316 }, 38317 useDebugValue: function (value, formatterFn) { 38318 currentHookNameInDev = 'useDebugValue'; 38319 warnInvalidHookAccess(); 38320 updateHookTypesDev(); 38321 return updateDebugValue(); 38322 }, 38323 useResponder: function (responder, props) { 38324 currentHookNameInDev = 'useResponder'; 38325 warnInvalidHookAccess(); 38326 updateHookTypesDev(); 38327 return createDeprecatedResponderListener(responder, props); 38328 }, 38329 useDeferredValue: function (value, config) { 38330 currentHookNameInDev = 'useDeferredValue'; 38331 warnInvalidHookAccess(); 38332 updateHookTypesDev(); 38333 return rerenderDeferredValue(value, config); 38334 }, 38335 useTransition: function (config) { 38336 currentHookNameInDev = 'useTransition'; 38337 warnInvalidHookAccess(); 38338 updateHookTypesDev(); 38339 return rerenderTransition(config); 38340 } 38341 }; 38342} 38343 38344var now$1 = Scheduler.unstable_now; 38345var commitTime = 0; 38346var profilerStartTime = -1; 38347 38348function getCommitTime() { 38349 return commitTime; 38350} 38351 38352function recordCommitTime() { 38353 38354 commitTime = now$1(); 38355} 38356 38357function startProfilerTimer(fiber) { 38358 38359 profilerStartTime = now$1(); 38360 38361 if (fiber.actualStartTime < 0) { 38362 fiber.actualStartTime = now$1(); 38363 } 38364} 38365 38366function stopProfilerTimerIfRunning(fiber) { 38367 38368 profilerStartTime = -1; 38369} 38370 38371function stopProfilerTimerIfRunningAndRecordDelta(fiber, overrideBaseTime) { 38372 38373 if (profilerStartTime >= 0) { 38374 var elapsedTime = now$1() - profilerStartTime; 38375 fiber.actualDuration += elapsedTime; 38376 38377 if (overrideBaseTime) { 38378 fiber.selfBaseDuration = elapsedTime; 38379 } 38380 38381 profilerStartTime = -1; 38382 } 38383} 38384 38385// This may have been an insertion or a hydration. 38386 38387var hydrationParentFiber = null; 38388var nextHydratableInstance = null; 38389var isHydrating = false; 38390 38391function enterHydrationState(fiber) { 38392 38393 var parentInstance = fiber.stateNode.containerInfo; 38394 nextHydratableInstance = getFirstHydratableChild(parentInstance); 38395 hydrationParentFiber = fiber; 38396 isHydrating = true; 38397 return true; 38398} 38399 38400function deleteHydratableInstance(returnFiber, instance) { 38401 { 38402 switch (returnFiber.tag) { 38403 case HostRoot: 38404 didNotHydrateContainerInstance(returnFiber.stateNode.containerInfo, instance); 38405 break; 38406 38407 case HostComponent: 38408 didNotHydrateInstance(returnFiber.type, returnFiber.memoizedProps, returnFiber.stateNode, instance); 38409 break; 38410 } 38411 } 38412 38413 var childToDelete = createFiberFromHostInstanceForDeletion(); 38414 childToDelete.stateNode = instance; 38415 childToDelete.return = returnFiber; 38416 childToDelete.effectTag = Deletion; // This might seem like it belongs on progressedFirstDeletion. However, 38417 // these children are not part of the reconciliation list of children. 38418 // Even if we abort and rereconcile the children, that will try to hydrate 38419 // again and the nodes are still in the host tree so these will be 38420 // recreated. 38421 38422 if (returnFiber.lastEffect !== null) { 38423 returnFiber.lastEffect.nextEffect = childToDelete; 38424 returnFiber.lastEffect = childToDelete; 38425 } else { 38426 returnFiber.firstEffect = returnFiber.lastEffect = childToDelete; 38427 } 38428} 38429 38430function insertNonHydratedInstance(returnFiber, fiber) { 38431 fiber.effectTag = fiber.effectTag & ~Hydrating | Placement; 38432 38433 { 38434 switch (returnFiber.tag) { 38435 case HostRoot: 38436 { 38437 var parentContainer = returnFiber.stateNode.containerInfo; 38438 38439 switch (fiber.tag) { 38440 case HostComponent: 38441 var type = fiber.type; 38442 var props = fiber.pendingProps; 38443 didNotFindHydratableContainerInstance(parentContainer, type); 38444 break; 38445 38446 case HostText: 38447 var text = fiber.pendingProps; 38448 didNotFindHydratableContainerTextInstance(parentContainer, text); 38449 break; 38450 } 38451 38452 break; 38453 } 38454 38455 case HostComponent: 38456 { 38457 var parentType = returnFiber.type; 38458 var parentProps = returnFiber.memoizedProps; 38459 var parentInstance = returnFiber.stateNode; 38460 38461 switch (fiber.tag) { 38462 case HostComponent: 38463 var _type = fiber.type; 38464 var _props = fiber.pendingProps; 38465 didNotFindHydratableInstance(parentType, parentProps, parentInstance, _type); 38466 break; 38467 38468 case HostText: 38469 var _text = fiber.pendingProps; 38470 didNotFindHydratableTextInstance(parentType, parentProps, parentInstance, _text); 38471 break; 38472 38473 case SuspenseComponent: 38474 didNotFindHydratableSuspenseInstance(parentType, parentProps); 38475 break; 38476 } 38477 38478 break; 38479 } 38480 38481 default: 38482 return; 38483 } 38484 } 38485} 38486 38487function tryHydrate(fiber, nextInstance) { 38488 switch (fiber.tag) { 38489 case HostComponent: 38490 { 38491 var type = fiber.type; 38492 var props = fiber.pendingProps; 38493 var instance = canHydrateInstance(nextInstance, type); 38494 38495 if (instance !== null) { 38496 fiber.stateNode = instance; 38497 return true; 38498 } 38499 38500 return false; 38501 } 38502 38503 case HostText: 38504 { 38505 var text = fiber.pendingProps; 38506 var textInstance = canHydrateTextInstance(nextInstance, text); 38507 38508 if (textInstance !== null) { 38509 fiber.stateNode = textInstance; 38510 return true; 38511 } 38512 38513 return false; 38514 } 38515 38516 case SuspenseComponent: 38517 { 38518 38519 return false; 38520 } 38521 38522 default: 38523 return false; 38524 } 38525} 38526 38527function tryToClaimNextHydratableInstance(fiber) { 38528 if (!isHydrating) { 38529 return; 38530 } 38531 38532 var nextInstance = nextHydratableInstance; 38533 38534 if (!nextInstance) { 38535 // Nothing to hydrate. Make it an insertion. 38536 insertNonHydratedInstance(hydrationParentFiber, fiber); 38537 isHydrating = false; 38538 hydrationParentFiber = fiber; 38539 return; 38540 } 38541 38542 var firstAttemptedInstance = nextInstance; 38543 38544 if (!tryHydrate(fiber, nextInstance)) { 38545 // If we can't hydrate this instance let's try the next one. 38546 // We use this as a heuristic. It's based on intuition and not data so it 38547 // might be flawed or unnecessary. 38548 nextInstance = getNextHydratableSibling(firstAttemptedInstance); 38549 38550 if (!nextInstance || !tryHydrate(fiber, nextInstance)) { 38551 // Nothing to hydrate. Make it an insertion. 38552 insertNonHydratedInstance(hydrationParentFiber, fiber); 38553 isHydrating = false; 38554 hydrationParentFiber = fiber; 38555 return; 38556 } // We matched the next one, we'll now assume that the first one was 38557 // superfluous and we'll delete it. Since we can't eagerly delete it 38558 // we'll have to schedule a deletion. To do that, this node needs a dummy 38559 // fiber associated with it. 38560 38561 38562 deleteHydratableInstance(hydrationParentFiber, firstAttemptedInstance); 38563 } 38564 38565 hydrationParentFiber = fiber; 38566 nextHydratableInstance = getFirstHydratableChild(nextInstance); 38567} 38568 38569function prepareToHydrateHostInstance(fiber, rootContainerInstance, hostContext) { 38570 38571 var instance = fiber.stateNode; 38572 var updatePayload = hydrateInstance(instance, fiber.type, fiber.memoizedProps, rootContainerInstance, hostContext, fiber); // TODO: Type this specific to this type of component. 38573 38574 fiber.updateQueue = updatePayload; // If the update payload indicates that there is a change or if there 38575 // is a new ref we mark this as an update. 38576 38577 if (updatePayload !== null) { 38578 return true; 38579 } 38580 38581 return false; 38582} 38583 38584function prepareToHydrateHostTextInstance(fiber) { 38585 38586 var textInstance = fiber.stateNode; 38587 var textContent = fiber.memoizedProps; 38588 var shouldUpdate = hydrateTextInstance(textInstance, textContent, fiber); 38589 38590 { 38591 if (shouldUpdate) { 38592 // We assume that prepareToHydrateHostTextInstance is called in a context where the 38593 // hydration parent is the parent host component of this host text. 38594 var returnFiber = hydrationParentFiber; 38595 38596 if (returnFiber !== null) { 38597 switch (returnFiber.tag) { 38598 case HostRoot: 38599 { 38600 var parentContainer = returnFiber.stateNode.containerInfo; 38601 didNotMatchHydratedContainerTextInstance(parentContainer, textInstance, textContent); 38602 break; 38603 } 38604 38605 case HostComponent: 38606 { 38607 var parentType = returnFiber.type; 38608 var parentProps = returnFiber.memoizedProps; 38609 var parentInstance = returnFiber.stateNode; 38610 didNotMatchHydratedTextInstance(parentType, parentProps, parentInstance, textInstance, textContent); 38611 break; 38612 } 38613 } 38614 } 38615 } 38616 } 38617 38618 return shouldUpdate; 38619} 38620 38621function skipPastDehydratedSuspenseInstance(fiber) { 38622 38623 var suspenseState = fiber.memoizedState; 38624 var suspenseInstance = suspenseState !== null ? suspenseState.dehydrated : null; 38625 38626 if (!suspenseInstance) { 38627 { 38628 throw Error( "Expected to have a hydrated suspense instance. This error is likely caused by a bug in React. Please file an issue." ); 38629 } 38630 } 38631 38632 return getNextHydratableInstanceAfterSuspenseInstance(suspenseInstance); 38633} 38634 38635function popToNextHostParent(fiber) { 38636 var parent = fiber.return; 38637 38638 while (parent !== null && parent.tag !== HostComponent && parent.tag !== HostRoot && parent.tag !== SuspenseComponent) { 38639 parent = parent.return; 38640 } 38641 38642 hydrationParentFiber = parent; 38643} 38644 38645function popHydrationState(fiber) { 38646 38647 if (fiber !== hydrationParentFiber) { 38648 // We're deeper than the current hydration context, inside an inserted 38649 // tree. 38650 return false; 38651 } 38652 38653 if (!isHydrating) { 38654 // If we're not currently hydrating but we're in a hydration context, then 38655 // we were an insertion and now need to pop up reenter hydration of our 38656 // siblings. 38657 popToNextHostParent(fiber); 38658 isHydrating = true; 38659 return false; 38660 } 38661 38662 var type = fiber.type; // If we have any remaining hydratable nodes, we need to delete them now. 38663 // We only do this deeper than head and body since they tend to have random 38664 // other nodes in them. We also ignore components with pure text content in 38665 // side of them. 38666 // TODO: Better heuristic. 38667 38668 if (fiber.tag !== HostComponent || type !== 'head' && type !== 'body' && !shouldSetTextContent(type, fiber.memoizedProps)) { 38669 var nextInstance = nextHydratableInstance; 38670 38671 while (nextInstance) { 38672 deleteHydratableInstance(fiber, nextInstance); 38673 nextInstance = getNextHydratableSibling(nextInstance); 38674 } 38675 } 38676 38677 popToNextHostParent(fiber); 38678 38679 if (fiber.tag === SuspenseComponent) { 38680 nextHydratableInstance = skipPastDehydratedSuspenseInstance(fiber); 38681 } else { 38682 nextHydratableInstance = hydrationParentFiber ? getNextHydratableSibling(fiber.stateNode) : null; 38683 } 38684 38685 return true; 38686} 38687 38688function resetHydrationState() { 38689 38690 hydrationParentFiber = null; 38691 nextHydratableInstance = null; 38692 isHydrating = false; 38693} 38694 38695var ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner; 38696var didReceiveUpdate = false; 38697var didWarnAboutBadClass; 38698var didWarnAboutModulePatternComponent; 38699var didWarnAboutContextTypeOnFunctionComponent; 38700var didWarnAboutGetDerivedStateOnFunctionComponent; 38701var didWarnAboutFunctionRefs; 38702var didWarnAboutReassigningProps; 38703var didWarnAboutRevealOrder; 38704var didWarnAboutTailOptions; 38705 38706{ 38707 didWarnAboutBadClass = {}; 38708 didWarnAboutModulePatternComponent = {}; 38709 didWarnAboutContextTypeOnFunctionComponent = {}; 38710 didWarnAboutGetDerivedStateOnFunctionComponent = {}; 38711 didWarnAboutFunctionRefs = {}; 38712 didWarnAboutReassigningProps = false; 38713 didWarnAboutRevealOrder = {}; 38714 didWarnAboutTailOptions = {}; 38715} 38716 38717function reconcileChildren(current, workInProgress, nextChildren, renderExpirationTime) { 38718 if (current === null) { 38719 // If this is a fresh new component that hasn't been rendered yet, we 38720 // won't update its child set by applying minimal side-effects. Instead, 38721 // we will add them all to the child before it gets rendered. That means 38722 // we can optimize this reconciliation pass by not tracking side-effects. 38723 workInProgress.child = mountChildFibers(workInProgress, null, nextChildren, renderExpirationTime); 38724 } else { 38725 // If the current child is the same as the work in progress, it means that 38726 // we haven't yet started any work on these children. Therefore, we use 38727 // the clone algorithm to create a copy of all the current children. 38728 // If we had any progressed work already, that is invalid at this point so 38729 // let's throw it out. 38730 workInProgress.child = reconcileChildFibers(workInProgress, current.child, nextChildren, renderExpirationTime); 38731 } 38732} 38733 38734function forceUnmountCurrentAndReconcile(current, workInProgress, nextChildren, renderExpirationTime) { 38735 // This function is fork of reconcileChildren. It's used in cases where we 38736 // want to reconcile without matching against the existing set. This has the 38737 // effect of all current children being unmounted; even if the type and key 38738 // are the same, the old child is unmounted and a new child is created. 38739 // 38740 // To do this, we're going to go through the reconcile algorithm twice. In 38741 // the first pass, we schedule a deletion for all the current children by 38742 // passing null. 38743 workInProgress.child = reconcileChildFibers(workInProgress, current.child, null, renderExpirationTime); // In the second pass, we mount the new children. The trick here is that we 38744 // pass null in place of where we usually pass the current child set. This has 38745 // the effect of remounting all children regardless of whether their 38746 // identities match. 38747 38748 workInProgress.child = reconcileChildFibers(workInProgress, null, nextChildren, renderExpirationTime); 38749} 38750 38751function updateForwardRef(current, workInProgress, Component, nextProps, renderExpirationTime) { 38752 // TODO: current can be non-null here even if the component 38753 // hasn't yet mounted. This happens after the first render suspends. 38754 // We'll need to figure out if this is fine or can cause issues. 38755 { 38756 if (workInProgress.type !== workInProgress.elementType) { 38757 // Lazy component props can't be validated in createElement 38758 // because they're only guaranteed to be resolved here. 38759 var innerPropTypes = Component.propTypes; 38760 38761 if (innerPropTypes) { 38762 checkPropTypes(innerPropTypes, nextProps, // Resolved props 38763 'prop', getComponentName(Component), getCurrentFiberStackInDev); 38764 } 38765 } 38766 } 38767 38768 var render = Component.render; 38769 var ref = workInProgress.ref; // The rest is a fork of updateFunctionComponent 38770 38771 var nextChildren; 38772 prepareToReadContext(workInProgress, renderExpirationTime); 38773 38774 { 38775 ReactCurrentOwner$1.current = workInProgress; 38776 setIsRendering(true); 38777 nextChildren = renderWithHooks(current, workInProgress, render, nextProps, ref, renderExpirationTime); 38778 38779 if ( workInProgress.mode & StrictMode) { 38780 // Only double-render components with Hooks 38781 if (workInProgress.memoizedState !== null) { 38782 nextChildren = renderWithHooks(current, workInProgress, render, nextProps, ref, renderExpirationTime); 38783 } 38784 } 38785 38786 setIsRendering(false); 38787 } 38788 38789 if (current !== null && !didReceiveUpdate) { 38790 bailoutHooks(current, workInProgress, renderExpirationTime); 38791 return bailoutOnAlreadyFinishedWork(current, workInProgress, renderExpirationTime); 38792 } // React DevTools reads this flag. 38793 38794 38795 workInProgress.effectTag |= PerformedWork; 38796 reconcileChildren(current, workInProgress, nextChildren, renderExpirationTime); 38797 return workInProgress.child; 38798} 38799 38800function updateMemoComponent(current, workInProgress, Component, nextProps, updateExpirationTime, renderExpirationTime) { 38801 if (current === null) { 38802 var type = Component.type; 38803 38804 if (isSimpleFunctionComponent(type) && Component.compare === null && // SimpleMemoComponent codepath doesn't resolve outer props either. 38805 Component.defaultProps === undefined) { 38806 var resolvedType = type; 38807 38808 { 38809 resolvedType = resolveFunctionForHotReloading(type); 38810 } // If this is a plain function component without default props, 38811 // and with only the default shallow comparison, we upgrade it 38812 // to a SimpleMemoComponent to allow fast path updates. 38813 38814 38815 workInProgress.tag = SimpleMemoComponent; 38816 workInProgress.type = resolvedType; 38817 38818 { 38819 validateFunctionComponentInDev(workInProgress, type); 38820 } 38821 38822 return updateSimpleMemoComponent(current, workInProgress, resolvedType, nextProps, updateExpirationTime, renderExpirationTime); 38823 } 38824 38825 { 38826 var innerPropTypes = type.propTypes; 38827 38828 if (innerPropTypes) { 38829 // Inner memo component props aren't currently validated in createElement. 38830 // We could move it there, but we'd still need this for lazy code path. 38831 checkPropTypes(innerPropTypes, nextProps, // Resolved props 38832 'prop', getComponentName(type), getCurrentFiberStackInDev); 38833 } 38834 } 38835 38836 var child = createFiberFromTypeAndProps(Component.type, null, nextProps, null, workInProgress.mode, renderExpirationTime); 38837 child.ref = workInProgress.ref; 38838 child.return = workInProgress; 38839 workInProgress.child = child; 38840 return child; 38841 } 38842 38843 { 38844 var _type = Component.type; 38845 var _innerPropTypes = _type.propTypes; 38846 38847 if (_innerPropTypes) { 38848 // Inner memo component props aren't currently validated in createElement. 38849 // We could move it there, but we'd still need this for lazy code path. 38850 checkPropTypes(_innerPropTypes, nextProps, // Resolved props 38851 'prop', getComponentName(_type), getCurrentFiberStackInDev); 38852 } 38853 } 38854 38855 var currentChild = current.child; // This is always exactly one child 38856 38857 if (updateExpirationTime < renderExpirationTime) { 38858 // This will be the props with resolved defaultProps, 38859 // unlike current.memoizedProps which will be the unresolved ones. 38860 var prevProps = currentChild.memoizedProps; // Default to shallow comparison 38861 38862 var compare = Component.compare; 38863 compare = compare !== null ? compare : shallowEqual; 38864 38865 if (compare(prevProps, nextProps) && current.ref === workInProgress.ref) { 38866 return bailoutOnAlreadyFinishedWork(current, workInProgress, renderExpirationTime); 38867 } 38868 } // React DevTools reads this flag. 38869 38870 38871 workInProgress.effectTag |= PerformedWork; 38872 var newChild = createWorkInProgress(currentChild, nextProps); 38873 newChild.ref = workInProgress.ref; 38874 newChild.return = workInProgress; 38875 workInProgress.child = newChild; 38876 return newChild; 38877} 38878 38879function updateSimpleMemoComponent(current, workInProgress, Component, nextProps, updateExpirationTime, renderExpirationTime) { 38880 // TODO: current can be non-null here even if the component 38881 // hasn't yet mounted. This happens when the inner render suspends. 38882 // We'll need to figure out if this is fine or can cause issues. 38883 { 38884 if (workInProgress.type !== workInProgress.elementType) { 38885 // Lazy component props can't be validated in createElement 38886 // because they're only guaranteed to be resolved here. 38887 var outerMemoType = workInProgress.elementType; 38888 38889 if (outerMemoType.$$typeof === REACT_LAZY_TYPE) { 38890 // We warn when you define propTypes on lazy() 38891 // so let's just skip over it to find memo() outer wrapper. 38892 // Inner props for memo are validated later. 38893 outerMemoType = refineResolvedLazyComponent(outerMemoType); 38894 } 38895 38896 var outerPropTypes = outerMemoType && outerMemoType.propTypes; 38897 38898 if (outerPropTypes) { 38899 checkPropTypes(outerPropTypes, nextProps, // Resolved (SimpleMemoComponent has no defaultProps) 38900 'prop', getComponentName(outerMemoType), getCurrentFiberStackInDev); 38901 } // Inner propTypes will be validated in the function component path. 38902 38903 } 38904 } 38905 38906 if (current !== null) { 38907 var prevProps = current.memoizedProps; 38908 38909 if (shallowEqual(prevProps, nextProps) && current.ref === workInProgress.ref && ( // Prevent bailout if the implementation changed due to hot reload. 38910 workInProgress.type === current.type )) { 38911 didReceiveUpdate = false; 38912 38913 if (updateExpirationTime < renderExpirationTime) { 38914 // The pending update priority was cleared at the beginning of 38915 // beginWork. We're about to bail out, but there might be additional 38916 // updates at a lower priority. Usually, the priority level of the 38917 // remaining updates is accumlated during the evaluation of the 38918 // component (i.e. when processing the update queue). But since since 38919 // we're bailing out early *without* evaluating the component, we need 38920 // to account for it here, too. Reset to the value of the current fiber. 38921 // NOTE: This only applies to SimpleMemoComponent, not MemoComponent, 38922 // because a MemoComponent fiber does not have hooks or an update queue; 38923 // rather, it wraps around an inner component, which may or may not 38924 // contains hooks. 38925 // TODO: Move the reset at in beginWork out of the common path so that 38926 // this is no longer necessary. 38927 workInProgress.expirationTime = current.expirationTime; 38928 return bailoutOnAlreadyFinishedWork(current, workInProgress, renderExpirationTime); 38929 } 38930 } 38931 } 38932 38933 return updateFunctionComponent(current, workInProgress, Component, nextProps, renderExpirationTime); 38934} 38935 38936function updateFragment(current, workInProgress, renderExpirationTime) { 38937 var nextChildren = workInProgress.pendingProps; 38938 reconcileChildren(current, workInProgress, nextChildren, renderExpirationTime); 38939 return workInProgress.child; 38940} 38941 38942function updateMode(current, workInProgress, renderExpirationTime) { 38943 var nextChildren = workInProgress.pendingProps.children; 38944 reconcileChildren(current, workInProgress, nextChildren, renderExpirationTime); 38945 return workInProgress.child; 38946} 38947 38948function updateProfiler(current, workInProgress, renderExpirationTime) { 38949 { 38950 workInProgress.effectTag |= Update; 38951 } 38952 38953 var nextProps = workInProgress.pendingProps; 38954 var nextChildren = nextProps.children; 38955 reconcileChildren(current, workInProgress, nextChildren, renderExpirationTime); 38956 return workInProgress.child; 38957} 38958 38959function markRef(current, workInProgress) { 38960 var ref = workInProgress.ref; 38961 38962 if (current === null && ref !== null || current !== null && current.ref !== ref) { 38963 // Schedule a Ref effect 38964 workInProgress.effectTag |= Ref; 38965 } 38966} 38967 38968function updateFunctionComponent(current, workInProgress, Component, nextProps, renderExpirationTime) { 38969 { 38970 if (workInProgress.type !== workInProgress.elementType) { 38971 // Lazy component props can't be validated in createElement 38972 // because they're only guaranteed to be resolved here. 38973 var innerPropTypes = Component.propTypes; 38974 38975 if (innerPropTypes) { 38976 checkPropTypes(innerPropTypes, nextProps, // Resolved props 38977 'prop', getComponentName(Component), getCurrentFiberStackInDev); 38978 } 38979 } 38980 } 38981 38982 var context; 38983 38984 { 38985 var unmaskedContext = getUnmaskedContext(workInProgress, Component, true); 38986 context = getMaskedContext(workInProgress, unmaskedContext); 38987 } 38988 38989 var nextChildren; 38990 prepareToReadContext(workInProgress, renderExpirationTime); 38991 38992 { 38993 ReactCurrentOwner$1.current = workInProgress; 38994 setIsRendering(true); 38995 nextChildren = renderWithHooks(current, workInProgress, Component, nextProps, context, renderExpirationTime); 38996 38997 if ( workInProgress.mode & StrictMode) { 38998 // Only double-render components with Hooks 38999 if (workInProgress.memoizedState !== null) { 39000 nextChildren = renderWithHooks(current, workInProgress, Component, nextProps, context, renderExpirationTime); 39001 } 39002 } 39003 39004 setIsRendering(false); 39005 } 39006 39007 if (current !== null && !didReceiveUpdate) { 39008 bailoutHooks(current, workInProgress, renderExpirationTime); 39009 return bailoutOnAlreadyFinishedWork(current, workInProgress, renderExpirationTime); 39010 } // React DevTools reads this flag. 39011 39012 39013 workInProgress.effectTag |= PerformedWork; 39014 reconcileChildren(current, workInProgress, nextChildren, renderExpirationTime); 39015 return workInProgress.child; 39016} 39017 39018function updateClassComponent(current, workInProgress, Component, nextProps, renderExpirationTime) { 39019 { 39020 if (workInProgress.type !== workInProgress.elementType) { 39021 // Lazy component props can't be validated in createElement 39022 // because they're only guaranteed to be resolved here. 39023 var innerPropTypes = Component.propTypes; 39024 39025 if (innerPropTypes) { 39026 checkPropTypes(innerPropTypes, nextProps, // Resolved props 39027 'prop', getComponentName(Component), getCurrentFiberStackInDev); 39028 } 39029 } 39030 } // Push context providers early to prevent context stack mismatches. 39031 // During mounting we don't know the child context yet as the instance doesn't exist. 39032 // We will invalidate the child context in finishClassComponent() right after rendering. 39033 39034 39035 var hasContext; 39036 39037 if (isContextProvider(Component)) { 39038 hasContext = true; 39039 pushContextProvider(workInProgress); 39040 } else { 39041 hasContext = false; 39042 } 39043 39044 prepareToReadContext(workInProgress, renderExpirationTime); 39045 var instance = workInProgress.stateNode; 39046 var shouldUpdate; 39047 39048 if (instance === null) { 39049 if (current !== null) { 39050 // A class component without an instance only mounts if it suspended 39051 // inside a non-concurrent tree, in an inconsistent state. We want to 39052 // treat it like a new mount, even though an empty version of it already 39053 // committed. Disconnect the alternate pointers. 39054 current.alternate = null; 39055 workInProgress.alternate = null; // Since this is conceptually a new fiber, schedule a Placement effect 39056 39057 workInProgress.effectTag |= Placement; 39058 } // In the initial pass we might need to construct the instance. 39059 39060 39061 constructClassInstance(workInProgress, Component, nextProps); 39062 mountClassInstance(workInProgress, Component, nextProps, renderExpirationTime); 39063 shouldUpdate = true; 39064 } else if (current === null) { 39065 // In a resume, we'll already have an instance we can reuse. 39066 shouldUpdate = resumeMountClassInstance(workInProgress, Component, nextProps, renderExpirationTime); 39067 } else { 39068 shouldUpdate = updateClassInstance(current, workInProgress, Component, nextProps, renderExpirationTime); 39069 } 39070 39071 var nextUnitOfWork = finishClassComponent(current, workInProgress, Component, shouldUpdate, hasContext, renderExpirationTime); 39072 39073 { 39074 var inst = workInProgress.stateNode; 39075 39076 if (inst.props !== nextProps) { 39077 if (!didWarnAboutReassigningProps) { 39078 error('It looks like %s is reassigning its own `this.props` while rendering. ' + 'This is not supported and can lead to confusing bugs.', getComponentName(workInProgress.type) || 'a component'); 39079 } 39080 39081 didWarnAboutReassigningProps = true; 39082 } 39083 } 39084 39085 return nextUnitOfWork; 39086} 39087 39088function finishClassComponent(current, workInProgress, Component, shouldUpdate, hasContext, renderExpirationTime) { 39089 // Refs should update even if shouldComponentUpdate returns false 39090 markRef(current, workInProgress); 39091 var didCaptureError = (workInProgress.effectTag & DidCapture) !== NoEffect; 39092 39093 if (!shouldUpdate && !didCaptureError) { 39094 // Context providers should defer to sCU for rendering 39095 if (hasContext) { 39096 invalidateContextProvider(workInProgress, Component, false); 39097 } 39098 39099 return bailoutOnAlreadyFinishedWork(current, workInProgress, renderExpirationTime); 39100 } 39101 39102 var instance = workInProgress.stateNode; // Rerender 39103 39104 ReactCurrentOwner$1.current = workInProgress; 39105 var nextChildren; 39106 39107 if (didCaptureError && typeof Component.getDerivedStateFromError !== 'function') { 39108 // If we captured an error, but getDerivedStateFromError is not defined, 39109 // unmount all the children. componentDidCatch will schedule an update to 39110 // re-render a fallback. This is temporary until we migrate everyone to 39111 // the new API. 39112 // TODO: Warn in a future release. 39113 nextChildren = null; 39114 39115 { 39116 stopProfilerTimerIfRunning(); 39117 } 39118 } else { 39119 { 39120 setIsRendering(true); 39121 nextChildren = instance.render(); 39122 39123 if ( workInProgress.mode & StrictMode) { 39124 instance.render(); 39125 } 39126 39127 setIsRendering(false); 39128 } 39129 } // React DevTools reads this flag. 39130 39131 39132 workInProgress.effectTag |= PerformedWork; 39133 39134 if (current !== null && didCaptureError) { 39135 // If we're recovering from an error, reconcile without reusing any of 39136 // the existing children. Conceptually, the normal children and the children 39137 // that are shown on error are two different sets, so we shouldn't reuse 39138 // normal children even if their identities match. 39139 forceUnmountCurrentAndReconcile(current, workInProgress, nextChildren, renderExpirationTime); 39140 } else { 39141 reconcileChildren(current, workInProgress, nextChildren, renderExpirationTime); 39142 } // Memoize state using the values we just used to render. 39143 // TODO: Restructure so we never read values from the instance. 39144 39145 39146 workInProgress.memoizedState = instance.state; // The context might have changed so we need to recalculate it. 39147 39148 if (hasContext) { 39149 invalidateContextProvider(workInProgress, Component, true); 39150 } 39151 39152 return workInProgress.child; 39153} 39154 39155function pushHostRootContext(workInProgress) { 39156 var root = workInProgress.stateNode; 39157 39158 if (root.pendingContext) { 39159 pushTopLevelContextObject(workInProgress, root.pendingContext, root.pendingContext !== root.context); 39160 } else if (root.context) { 39161 // Should always be set 39162 pushTopLevelContextObject(workInProgress, root.context, false); 39163 } 39164 39165 pushHostContainer(workInProgress, root.containerInfo); 39166} 39167 39168function updateHostRoot(current, workInProgress, renderExpirationTime) { 39169 pushHostRootContext(workInProgress); 39170 var updateQueue = workInProgress.updateQueue; 39171 39172 if (!(current !== null && updateQueue !== null)) { 39173 { 39174 throw Error( "If the root does not have an updateQueue, we should have already bailed out. This error is likely caused by a bug in React. Please file an issue." ); 39175 } 39176 } 39177 39178 var nextProps = workInProgress.pendingProps; 39179 var prevState = workInProgress.memoizedState; 39180 var prevChildren = prevState !== null ? prevState.element : null; 39181 cloneUpdateQueue(current, workInProgress); 39182 processUpdateQueue(workInProgress, nextProps, null, renderExpirationTime); 39183 var nextState = workInProgress.memoizedState; // Caution: React DevTools currently depends on this property 39184 // being called "element". 39185 39186 var nextChildren = nextState.element; 39187 39188 if (nextChildren === prevChildren) { 39189 // If the state is the same as before, that's a bailout because we had 39190 // no work that expires at this time. 39191 resetHydrationState(); 39192 return bailoutOnAlreadyFinishedWork(current, workInProgress, renderExpirationTime); 39193 } 39194 39195 var root = workInProgress.stateNode; 39196 39197 if (root.hydrate && enterHydrationState(workInProgress)) { 39198 // If we don't have any current children this might be the first pass. 39199 // We always try to hydrate. If this isn't a hydration pass there won't 39200 // be any children to hydrate which is effectively the same thing as 39201 // not hydrating. 39202 var child = mountChildFibers(workInProgress, null, nextChildren, renderExpirationTime); 39203 workInProgress.child = child; 39204 var node = child; 39205 39206 while (node) { 39207 // Mark each child as hydrating. This is a fast path to know whether this 39208 // tree is part of a hydrating tree. This is used to determine if a child 39209 // node has fully mounted yet, and for scheduling event replaying. 39210 // Conceptually this is similar to Placement in that a new subtree is 39211 // inserted into the React tree here. It just happens to not need DOM 39212 // mutations because it already exists. 39213 node.effectTag = node.effectTag & ~Placement | Hydrating; 39214 node = node.sibling; 39215 } 39216 } else { 39217 // Otherwise reset hydration state in case we aborted and resumed another 39218 // root. 39219 reconcileChildren(current, workInProgress, nextChildren, renderExpirationTime); 39220 resetHydrationState(); 39221 } 39222 39223 return workInProgress.child; 39224} 39225 39226function updateHostComponent(current, workInProgress, renderExpirationTime) { 39227 pushHostContext(workInProgress); 39228 39229 if (current === null) { 39230 tryToClaimNextHydratableInstance(workInProgress); 39231 } 39232 39233 var type = workInProgress.type; 39234 var nextProps = workInProgress.pendingProps; 39235 var prevProps = current !== null ? current.memoizedProps : null; 39236 var nextChildren = nextProps.children; 39237 var isDirectTextChild = shouldSetTextContent(type, nextProps); 39238 39239 if (isDirectTextChild) { 39240 // We special case a direct text child of a host node. This is a common 39241 // case. We won't handle it as a reified child. We will instead handle 39242 // this in the host environment that also has access to this prop. That 39243 // avoids allocating another HostText fiber and traversing it. 39244 nextChildren = null; 39245 } else if (prevProps !== null && shouldSetTextContent(type, prevProps)) { 39246 // If we're switching from a direct text child to a normal child, or to 39247 // empty, we need to schedule the text content to be reset. 39248 workInProgress.effectTag |= ContentReset; 39249 } 39250 39251 markRef(current, workInProgress); // Check the host config to see if the children are offscreen/hidden. 39252 39253 if (workInProgress.mode & ConcurrentMode && renderExpirationTime !== Never && shouldDeprioritizeSubtree(type, nextProps)) { 39254 { 39255 markSpawnedWork(Never); 39256 } // Schedule this fiber to re-render at offscreen priority. Then bailout. 39257 39258 39259 workInProgress.expirationTime = workInProgress.childExpirationTime = Never; 39260 return null; 39261 } 39262 39263 reconcileChildren(current, workInProgress, nextChildren, renderExpirationTime); 39264 return workInProgress.child; 39265} 39266 39267function updateHostText(current, workInProgress) { 39268 if (current === null) { 39269 tryToClaimNextHydratableInstance(workInProgress); 39270 } // Nothing to do here. This is terminal. We'll do the completion step 39271 // immediately after. 39272 39273 39274 return null; 39275} 39276 39277function mountLazyComponent(_current, workInProgress, elementType, updateExpirationTime, renderExpirationTime) { 39278 if (_current !== null) { 39279 // A lazy component only mounts if it suspended inside a non- 39280 // concurrent tree, in an inconsistent state. We want to treat it like 39281 // a new mount, even though an empty version of it already committed. 39282 // Disconnect the alternate pointers. 39283 _current.alternate = null; 39284 workInProgress.alternate = null; // Since this is conceptually a new fiber, schedule a Placement effect 39285 39286 workInProgress.effectTag |= Placement; 39287 } 39288 39289 var props = workInProgress.pendingProps; // We can't start a User Timing measurement with correct label yet. 39290 // Cancel and resume right after we know the tag. 39291 39292 cancelWorkTimer(workInProgress); 39293 var Component = readLazyComponentType(elementType); // Store the unwrapped component in the type. 39294 39295 workInProgress.type = Component; 39296 var resolvedTag = workInProgress.tag = resolveLazyComponentTag(Component); 39297 startWorkTimer(workInProgress); 39298 var resolvedProps = resolveDefaultProps(Component, props); 39299 var child; 39300 39301 switch (resolvedTag) { 39302 case FunctionComponent: 39303 { 39304 { 39305 validateFunctionComponentInDev(workInProgress, Component); 39306 workInProgress.type = Component = resolveFunctionForHotReloading(Component); 39307 } 39308 39309 child = updateFunctionComponent(null, workInProgress, Component, resolvedProps, renderExpirationTime); 39310 return child; 39311 } 39312 39313 case ClassComponent: 39314 { 39315 { 39316 workInProgress.type = Component = resolveClassForHotReloading(Component); 39317 } 39318 39319 child = updateClassComponent(null, workInProgress, Component, resolvedProps, renderExpirationTime); 39320 return child; 39321 } 39322 39323 case ForwardRef: 39324 { 39325 { 39326 workInProgress.type = Component = resolveForwardRefForHotReloading(Component); 39327 } 39328 39329 child = updateForwardRef(null, workInProgress, Component, resolvedProps, renderExpirationTime); 39330 return child; 39331 } 39332 39333 case MemoComponent: 39334 { 39335 { 39336 if (workInProgress.type !== workInProgress.elementType) { 39337 var outerPropTypes = Component.propTypes; 39338 39339 if (outerPropTypes) { 39340 checkPropTypes(outerPropTypes, resolvedProps, // Resolved for outer only 39341 'prop', getComponentName(Component), getCurrentFiberStackInDev); 39342 } 39343 } 39344 } 39345 39346 child = updateMemoComponent(null, workInProgress, Component, resolveDefaultProps(Component.type, resolvedProps), // The inner type can have defaults too 39347 updateExpirationTime, renderExpirationTime); 39348 return child; 39349 } 39350 } 39351 39352 var hint = ''; 39353 39354 { 39355 if (Component !== null && typeof Component === 'object' && Component.$$typeof === REACT_LAZY_TYPE) { 39356 hint = ' Did you wrap a component in React.lazy() more than once?'; 39357 } 39358 } // This message intentionally doesn't mention ForwardRef or MemoComponent 39359 // because the fact that it's a separate type of work is an 39360 // implementation detail. 39361 39362 39363 { 39364 { 39365 throw Error( "Element type is invalid. Received a promise that resolves to: " + Component + ". Lazy element type must resolve to a class or function." + hint ); 39366 } 39367 } 39368} 39369 39370function mountIncompleteClassComponent(_current, workInProgress, Component, nextProps, renderExpirationTime) { 39371 if (_current !== null) { 39372 // An incomplete component only mounts if it suspended inside a non- 39373 // concurrent tree, in an inconsistent state. We want to treat it like 39374 // a new mount, even though an empty version of it already committed. 39375 // Disconnect the alternate pointers. 39376 _current.alternate = null; 39377 workInProgress.alternate = null; // Since this is conceptually a new fiber, schedule a Placement effect 39378 39379 workInProgress.effectTag |= Placement; 39380 } // Promote the fiber to a class and try rendering again. 39381 39382 39383 workInProgress.tag = ClassComponent; // The rest of this function is a fork of `updateClassComponent` 39384 // Push context providers early to prevent context stack mismatches. 39385 // During mounting we don't know the child context yet as the instance doesn't exist. 39386 // We will invalidate the child context in finishClassComponent() right after rendering. 39387 39388 var hasContext; 39389 39390 if (isContextProvider(Component)) { 39391 hasContext = true; 39392 pushContextProvider(workInProgress); 39393 } else { 39394 hasContext = false; 39395 } 39396 39397 prepareToReadContext(workInProgress, renderExpirationTime); 39398 constructClassInstance(workInProgress, Component, nextProps); 39399 mountClassInstance(workInProgress, Component, nextProps, renderExpirationTime); 39400 return finishClassComponent(null, workInProgress, Component, true, hasContext, renderExpirationTime); 39401} 39402 39403function mountIndeterminateComponent(_current, workInProgress, Component, renderExpirationTime) { 39404 if (_current !== null) { 39405 // An indeterminate component only mounts if it suspended inside a non- 39406 // concurrent tree, in an inconsistent state. We want to treat it like 39407 // a new mount, even though an empty version of it already committed. 39408 // Disconnect the alternate pointers. 39409 _current.alternate = null; 39410 workInProgress.alternate = null; // Since this is conceptually a new fiber, schedule a Placement effect 39411 39412 workInProgress.effectTag |= Placement; 39413 } 39414 39415 var props = workInProgress.pendingProps; 39416 var context; 39417 39418 { 39419 var unmaskedContext = getUnmaskedContext(workInProgress, Component, false); 39420 context = getMaskedContext(workInProgress, unmaskedContext); 39421 } 39422 39423 prepareToReadContext(workInProgress, renderExpirationTime); 39424 var value; 39425 39426 { 39427 if (Component.prototype && typeof Component.prototype.render === 'function') { 39428 var componentName = getComponentName(Component) || 'Unknown'; 39429 39430 if (!didWarnAboutBadClass[componentName]) { 39431 error("The <%s /> component appears to have a render method, but doesn't extend React.Component. " + 'This is likely to cause errors. Change %s to extend React.Component instead.', componentName, componentName); 39432 39433 didWarnAboutBadClass[componentName] = true; 39434 } 39435 } 39436 39437 if (workInProgress.mode & StrictMode) { 39438 ReactStrictModeWarnings.recordLegacyContextWarning(workInProgress, null); 39439 } 39440 39441 setIsRendering(true); 39442 ReactCurrentOwner$1.current = workInProgress; 39443 value = renderWithHooks(null, workInProgress, Component, props, context, renderExpirationTime); 39444 setIsRendering(false); 39445 } // React DevTools reads this flag. 39446 39447 39448 workInProgress.effectTag |= PerformedWork; 39449 39450 if (typeof value === 'object' && value !== null && typeof value.render === 'function' && value.$$typeof === undefined) { 39451 { 39452 var _componentName = getComponentName(Component) || 'Unknown'; 39453 39454 if (!didWarnAboutModulePatternComponent[_componentName]) { 39455 error('The <%s /> component appears to be a function component that returns a class instance. ' + 'Change %s to a class that extends React.Component instead. ' + "If you can't use a class try assigning the prototype on the function as a workaround. " + "`%s.prototype = React.Component.prototype`. Don't use an arrow function since it " + 'cannot be called with `new` by React.', _componentName, _componentName, _componentName); 39456 39457 didWarnAboutModulePatternComponent[_componentName] = true; 39458 } 39459 } // Proceed under the assumption that this is a class instance 39460 39461 39462 workInProgress.tag = ClassComponent; // Throw out any hooks that were used. 39463 39464 workInProgress.memoizedState = null; 39465 workInProgress.updateQueue = null; // Push context providers early to prevent context stack mismatches. 39466 // During mounting we don't know the child context yet as the instance doesn't exist. 39467 // We will invalidate the child context in finishClassComponent() right after rendering. 39468 39469 var hasContext = false; 39470 39471 if (isContextProvider(Component)) { 39472 hasContext = true; 39473 pushContextProvider(workInProgress); 39474 } else { 39475 hasContext = false; 39476 } 39477 39478 workInProgress.memoizedState = value.state !== null && value.state !== undefined ? value.state : null; 39479 initializeUpdateQueue(workInProgress); 39480 var getDerivedStateFromProps = Component.getDerivedStateFromProps; 39481 39482 if (typeof getDerivedStateFromProps === 'function') { 39483 applyDerivedStateFromProps(workInProgress, Component, getDerivedStateFromProps, props); 39484 } 39485 39486 adoptClassInstance(workInProgress, value); 39487 mountClassInstance(workInProgress, Component, props, renderExpirationTime); 39488 return finishClassComponent(null, workInProgress, Component, true, hasContext, renderExpirationTime); 39489 } else { 39490 // Proceed under the assumption that this is a function component 39491 workInProgress.tag = FunctionComponent; 39492 39493 { 39494 39495 if ( workInProgress.mode & StrictMode) { 39496 // Only double-render components with Hooks 39497 if (workInProgress.memoizedState !== null) { 39498 value = renderWithHooks(null, workInProgress, Component, props, context, renderExpirationTime); 39499 } 39500 } 39501 } 39502 39503 reconcileChildren(null, workInProgress, value, renderExpirationTime); 39504 39505 { 39506 validateFunctionComponentInDev(workInProgress, Component); 39507 } 39508 39509 return workInProgress.child; 39510 } 39511} 39512 39513function validateFunctionComponentInDev(workInProgress, Component) { 39514 { 39515 if (Component) { 39516 if (Component.childContextTypes) { 39517 error('%s(...): childContextTypes cannot be defined on a function component.', Component.displayName || Component.name || 'Component'); 39518 } 39519 } 39520 39521 if (workInProgress.ref !== null) { 39522 var info = ''; 39523 var ownerName = getCurrentFiberOwnerNameInDevOrNull(); 39524 39525 if (ownerName) { 39526 info += '\n\nCheck the render method of `' + ownerName + '`.'; 39527 } 39528 39529 var warningKey = ownerName || workInProgress._debugID || ''; 39530 var debugSource = workInProgress._debugSource; 39531 39532 if (debugSource) { 39533 warningKey = debugSource.fileName + ':' + debugSource.lineNumber; 39534 } 39535 39536 if (!didWarnAboutFunctionRefs[warningKey]) { 39537 didWarnAboutFunctionRefs[warningKey] = true; 39538 39539 error('Function components cannot be given refs. ' + 'Attempts to access this ref will fail. ' + 'Did you mean to use React.forwardRef()?%s', info); 39540 } 39541 } 39542 39543 if (typeof Component.getDerivedStateFromProps === 'function') { 39544 var _componentName2 = getComponentName(Component) || 'Unknown'; 39545 39546 if (!didWarnAboutGetDerivedStateOnFunctionComponent[_componentName2]) { 39547 error('%s: Function components do not support getDerivedStateFromProps.', _componentName2); 39548 39549 didWarnAboutGetDerivedStateOnFunctionComponent[_componentName2] = true; 39550 } 39551 } 39552 39553 if (typeof Component.contextType === 'object' && Component.contextType !== null) { 39554 var _componentName3 = getComponentName(Component) || 'Unknown'; 39555 39556 if (!didWarnAboutContextTypeOnFunctionComponent[_componentName3]) { 39557 error('%s: Function components do not support contextType.', _componentName3); 39558 39559 didWarnAboutContextTypeOnFunctionComponent[_componentName3] = true; 39560 } 39561 } 39562 } 39563} 39564 39565var SUSPENDED_MARKER = { 39566 dehydrated: null, 39567 retryTime: NoWork 39568}; 39569 39570function shouldRemainOnFallback(suspenseContext, current, workInProgress) { 39571 // If the context is telling us that we should show a fallback, and we're not 39572 // already showing content, then we should show the fallback instead. 39573 return hasSuspenseContext(suspenseContext, ForceSuspenseFallback) && (current === null || current.memoizedState !== null); 39574} 39575 39576function updateSuspenseComponent(current, workInProgress, renderExpirationTime) { 39577 var mode = workInProgress.mode; 39578 var nextProps = workInProgress.pendingProps; // This is used by DevTools to force a boundary to suspend. 39579 39580 { 39581 if (shouldSuspend(workInProgress)) { 39582 workInProgress.effectTag |= DidCapture; 39583 } 39584 } 39585 39586 var suspenseContext = suspenseStackCursor.current; 39587 var nextDidTimeout = false; 39588 var didSuspend = (workInProgress.effectTag & DidCapture) !== NoEffect; 39589 39590 if (didSuspend || shouldRemainOnFallback(suspenseContext, current)) { 39591 // Something in this boundary's subtree already suspended. Switch to 39592 // rendering the fallback children. 39593 nextDidTimeout = true; 39594 workInProgress.effectTag &= ~DidCapture; 39595 } else { 39596 // Attempting the main content 39597 if (current === null || current.memoizedState !== null) { 39598 // This is a new mount or this boundary is already showing a fallback state. 39599 // Mark this subtree context as having at least one invisible parent that could 39600 // handle the fallback state. 39601 // Boundaries without fallbacks or should be avoided are not considered since 39602 // they cannot handle preferred fallback states. 39603 if (nextProps.fallback !== undefined && nextProps.unstable_avoidThisFallback !== true) { 39604 suspenseContext = addSubtreeSuspenseContext(suspenseContext, InvisibleParentSuspenseContext); 39605 } 39606 } 39607 } 39608 39609 suspenseContext = setDefaultShallowSuspenseContext(suspenseContext); 39610 pushSuspenseContext(workInProgress, suspenseContext); // This next part is a bit confusing. If the children timeout, we switch to 39611 // showing the fallback children in place of the "primary" children. 39612 // However, we don't want to delete the primary children because then their 39613 // state will be lost (both the React state and the host state, e.g. 39614 // uncontrolled form inputs). Instead we keep them mounted and hide them. 39615 // Both the fallback children AND the primary children are rendered at the 39616 // same time. Once the primary children are un-suspended, we can delete 39617 // the fallback children â don't need to preserve their state. 39618 // 39619 // The two sets of children are siblings in the host environment, but 39620 // semantically, for purposes of reconciliation, they are two separate sets. 39621 // So we store them using two fragment fibers. 39622 // 39623 // However, we want to avoid allocating extra fibers for every placeholder. 39624 // They're only necessary when the children time out, because that's the 39625 // only time when both sets are mounted. 39626 // 39627 // So, the extra fragment fibers are only used if the children time out. 39628 // Otherwise, we render the primary children directly. This requires some 39629 // custom reconciliation logic to preserve the state of the primary 39630 // children. It's essentially a very basic form of re-parenting. 39631 39632 if (current === null) { 39633 // If we're currently hydrating, try to hydrate this boundary. 39634 // But only if this has a fallback. 39635 if (nextProps.fallback !== undefined) { 39636 tryToClaimNextHydratableInstance(workInProgress); // This could've been a dehydrated suspense component. 39637 } // This is the initial mount. This branch is pretty simple because there's 39638 // no previous state that needs to be preserved. 39639 39640 39641 if (nextDidTimeout) { 39642 // Mount separate fragments for primary and fallback children. 39643 var nextFallbackChildren = nextProps.fallback; 39644 var primaryChildFragment = createFiberFromFragment(null, mode, NoWork, null); 39645 primaryChildFragment.return = workInProgress; 39646 39647 if ((workInProgress.mode & BlockingMode) === NoMode) { 39648 // Outside of blocking mode, we commit the effects from the 39649 // partially completed, timed-out tree, too. 39650 var progressedState = workInProgress.memoizedState; 39651 var progressedPrimaryChild = progressedState !== null ? workInProgress.child.child : workInProgress.child; 39652 primaryChildFragment.child = progressedPrimaryChild; 39653 var progressedChild = progressedPrimaryChild; 39654 39655 while (progressedChild !== null) { 39656 progressedChild.return = primaryChildFragment; 39657 progressedChild = progressedChild.sibling; 39658 } 39659 } 39660 39661 var fallbackChildFragment = createFiberFromFragment(nextFallbackChildren, mode, renderExpirationTime, null); 39662 fallbackChildFragment.return = workInProgress; 39663 primaryChildFragment.sibling = fallbackChildFragment; // Skip the primary children, and continue working on the 39664 // fallback children. 39665 39666 workInProgress.memoizedState = SUSPENDED_MARKER; 39667 workInProgress.child = primaryChildFragment; 39668 return fallbackChildFragment; 39669 } else { 39670 // Mount the primary children without an intermediate fragment fiber. 39671 var nextPrimaryChildren = nextProps.children; 39672 workInProgress.memoizedState = null; 39673 return workInProgress.child = mountChildFibers(workInProgress, null, nextPrimaryChildren, renderExpirationTime); 39674 } 39675 } else { 39676 // This is an update. This branch is more complicated because we need to 39677 // ensure the state of the primary children is preserved. 39678 var prevState = current.memoizedState; 39679 39680 if (prevState !== null) { 39681 // wrapped in a fragment fiber. 39682 39683 39684 var currentPrimaryChildFragment = current.child; 39685 var currentFallbackChildFragment = currentPrimaryChildFragment.sibling; 39686 39687 if (nextDidTimeout) { 39688 // Still timed out. Reuse the current primary children by cloning 39689 // its fragment. We're going to skip over these entirely. 39690 var _nextFallbackChildren2 = nextProps.fallback; 39691 39692 var _primaryChildFragment2 = createWorkInProgress(currentPrimaryChildFragment, currentPrimaryChildFragment.pendingProps); 39693 39694 _primaryChildFragment2.return = workInProgress; 39695 39696 if ((workInProgress.mode & BlockingMode) === NoMode) { 39697 // Outside of blocking mode, we commit the effects from the 39698 // partially completed, timed-out tree, too. 39699 var _progressedState = workInProgress.memoizedState; 39700 39701 var _progressedPrimaryChild = _progressedState !== null ? workInProgress.child.child : workInProgress.child; 39702 39703 if (_progressedPrimaryChild !== currentPrimaryChildFragment.child) { 39704 _primaryChildFragment2.child = _progressedPrimaryChild; 39705 var _progressedChild2 = _progressedPrimaryChild; 39706 39707 while (_progressedChild2 !== null) { 39708 _progressedChild2.return = _primaryChildFragment2; 39709 _progressedChild2 = _progressedChild2.sibling; 39710 } 39711 } 39712 } // Because primaryChildFragment is a new fiber that we're inserting as the 39713 // parent of a new tree, we need to set its treeBaseDuration. 39714 39715 39716 if ( workInProgress.mode & ProfileMode) { 39717 // treeBaseDuration is the sum of all the child tree base durations. 39718 var _treeBaseDuration = 0; 39719 var _hiddenChild = _primaryChildFragment2.child; 39720 39721 while (_hiddenChild !== null) { 39722 _treeBaseDuration += _hiddenChild.treeBaseDuration; 39723 _hiddenChild = _hiddenChild.sibling; 39724 } 39725 39726 _primaryChildFragment2.treeBaseDuration = _treeBaseDuration; 39727 } // Clone the fallback child fragment, too. These we'll continue 39728 // working on. 39729 39730 39731 var _fallbackChildFragment2 = createWorkInProgress(currentFallbackChildFragment, _nextFallbackChildren2); 39732 39733 _fallbackChildFragment2.return = workInProgress; 39734 _primaryChildFragment2.sibling = _fallbackChildFragment2; 39735 _primaryChildFragment2.childExpirationTime = NoWork; // Skip the primary children, and continue working on the 39736 // fallback children. 39737 39738 workInProgress.memoizedState = SUSPENDED_MARKER; 39739 workInProgress.child = _primaryChildFragment2; 39740 return _fallbackChildFragment2; 39741 } else { 39742 // No longer suspended. Switch back to showing the primary children, 39743 // and remove the intermediate fragment fiber. 39744 var _nextPrimaryChildren = nextProps.children; 39745 var currentPrimaryChild = currentPrimaryChildFragment.child; 39746 var primaryChild = reconcileChildFibers(workInProgress, currentPrimaryChild, _nextPrimaryChildren, renderExpirationTime); // If this render doesn't suspend, we need to delete the fallback 39747 // children. Wait until the complete phase, after we've confirmed the 39748 // fallback is no longer needed. 39749 // TODO: Would it be better to store the fallback fragment on 39750 // the stateNode? 39751 // Continue rendering the children, like we normally do. 39752 39753 workInProgress.memoizedState = null; 39754 return workInProgress.child = primaryChild; 39755 } 39756 } else { 39757 // The current tree has not already timed out. That means the primary 39758 // children are not wrapped in a fragment fiber. 39759 var _currentPrimaryChild = current.child; 39760 39761 if (nextDidTimeout) { 39762 // Timed out. Wrap the children in a fragment fiber to keep them 39763 // separate from the fallback children. 39764 var _nextFallbackChildren3 = nextProps.fallback; 39765 39766 var _primaryChildFragment3 = createFiberFromFragment( // It shouldn't matter what the pending props are because we aren't 39767 // going to render this fragment. 39768 null, mode, NoWork, null); 39769 39770 _primaryChildFragment3.return = workInProgress; 39771 _primaryChildFragment3.child = _currentPrimaryChild; 39772 39773 if (_currentPrimaryChild !== null) { 39774 _currentPrimaryChild.return = _primaryChildFragment3; 39775 } // Even though we're creating a new fiber, there are no new children, 39776 // because we're reusing an already mounted tree. So we don't need to 39777 // schedule a placement. 39778 // primaryChildFragment.effectTag |= Placement; 39779 39780 39781 if ((workInProgress.mode & BlockingMode) === NoMode) { 39782 // Outside of blocking mode, we commit the effects from the 39783 // partially completed, timed-out tree, too. 39784 var _progressedState2 = workInProgress.memoizedState; 39785 39786 var _progressedPrimaryChild2 = _progressedState2 !== null ? workInProgress.child.child : workInProgress.child; 39787 39788 _primaryChildFragment3.child = _progressedPrimaryChild2; 39789 var _progressedChild3 = _progressedPrimaryChild2; 39790 39791 while (_progressedChild3 !== null) { 39792 _progressedChild3.return = _primaryChildFragment3; 39793 _progressedChild3 = _progressedChild3.sibling; 39794 } 39795 } // Because primaryChildFragment is a new fiber that we're inserting as the 39796 // parent of a new tree, we need to set its treeBaseDuration. 39797 39798 39799 if ( workInProgress.mode & ProfileMode) { 39800 // treeBaseDuration is the sum of all the child tree base durations. 39801 var _treeBaseDuration2 = 0; 39802 var _hiddenChild2 = _primaryChildFragment3.child; 39803 39804 while (_hiddenChild2 !== null) { 39805 _treeBaseDuration2 += _hiddenChild2.treeBaseDuration; 39806 _hiddenChild2 = _hiddenChild2.sibling; 39807 } 39808 39809 _primaryChildFragment3.treeBaseDuration = _treeBaseDuration2; 39810 } // Create a fragment from the fallback children, too. 39811 39812 39813 var _fallbackChildFragment3 = createFiberFromFragment(_nextFallbackChildren3, mode, renderExpirationTime, null); 39814 39815 _fallbackChildFragment3.return = workInProgress; 39816 _primaryChildFragment3.sibling = _fallbackChildFragment3; 39817 _fallbackChildFragment3.effectTag |= Placement; 39818 _primaryChildFragment3.childExpirationTime = NoWork; // Skip the primary children, and continue working on the 39819 // fallback children. 39820 39821 workInProgress.memoizedState = SUSPENDED_MARKER; 39822 workInProgress.child = _primaryChildFragment3; 39823 return _fallbackChildFragment3; 39824 } else { 39825 // Still haven't timed out. Continue rendering the children, like we 39826 // normally do. 39827 workInProgress.memoizedState = null; 39828 var _nextPrimaryChildren2 = nextProps.children; 39829 return workInProgress.child = reconcileChildFibers(workInProgress, _currentPrimaryChild, _nextPrimaryChildren2, renderExpirationTime); 39830 } 39831 } 39832 } 39833} 39834 39835function scheduleWorkOnFiber(fiber, renderExpirationTime) { 39836 if (fiber.expirationTime < renderExpirationTime) { 39837 fiber.expirationTime = renderExpirationTime; 39838 } 39839 39840 var alternate = fiber.alternate; 39841 39842 if (alternate !== null && alternate.expirationTime < renderExpirationTime) { 39843 alternate.expirationTime = renderExpirationTime; 39844 } 39845 39846 scheduleWorkOnParentPath(fiber.return, renderExpirationTime); 39847} 39848 39849function propagateSuspenseContextChange(workInProgress, firstChild, renderExpirationTime) { 39850 // Mark any Suspense boundaries with fallbacks as having work to do. 39851 // If they were previously forced into fallbacks, they may now be able 39852 // to unblock. 39853 var node = firstChild; 39854 39855 while (node !== null) { 39856 if (node.tag === SuspenseComponent) { 39857 var state = node.memoizedState; 39858 39859 if (state !== null) { 39860 scheduleWorkOnFiber(node, renderExpirationTime); 39861 } 39862 } else if (node.tag === SuspenseListComponent) { 39863 // If the tail is hidden there might not be an Suspense boundaries 39864 // to schedule work on. In this case we have to schedule it on the 39865 // list itself. 39866 // We don't have to traverse to the children of the list since 39867 // the list will propagate the change when it rerenders. 39868 scheduleWorkOnFiber(node, renderExpirationTime); 39869 } else if (node.child !== null) { 39870 node.child.return = node; 39871 node = node.child; 39872 continue; 39873 } 39874 39875 if (node === workInProgress) { 39876 return; 39877 } 39878 39879 while (node.sibling === null) { 39880 if (node.return === null || node.return === workInProgress) { 39881 return; 39882 } 39883 39884 node = node.return; 39885 } 39886 39887 node.sibling.return = node.return; 39888 node = node.sibling; 39889 } 39890} 39891 39892function findLastContentRow(firstChild) { 39893 // This is going to find the last row among these children that is already 39894 // showing content on the screen, as opposed to being in fallback state or 39895 // new. If a row has multiple Suspense boundaries, any of them being in the 39896 // fallback state, counts as the whole row being in a fallback state. 39897 // Note that the "rows" will be workInProgress, but any nested children 39898 // will still be current since we haven't rendered them yet. The mounted 39899 // order may not be the same as the new order. We use the new order. 39900 var row = firstChild; 39901 var lastContentRow = null; 39902 39903 while (row !== null) { 39904 var currentRow = row.alternate; // New rows can't be content rows. 39905 39906 if (currentRow !== null && findFirstSuspended(currentRow) === null) { 39907 lastContentRow = row; 39908 } 39909 39910 row = row.sibling; 39911 } 39912 39913 return lastContentRow; 39914} 39915 39916function validateRevealOrder(revealOrder) { 39917 { 39918 if (revealOrder !== undefined && revealOrder !== 'forwards' && revealOrder !== 'backwards' && revealOrder !== 'together' && !didWarnAboutRevealOrder[revealOrder]) { 39919 didWarnAboutRevealOrder[revealOrder] = true; 39920 39921 if (typeof revealOrder === 'string') { 39922 switch (revealOrder.toLowerCase()) { 39923 case 'together': 39924 case 'forwards': 39925 case 'backwards': 39926 { 39927 error('"%s" is not a valid value for revealOrder on <SuspenseList />. ' + 'Use lowercase "%s" instead.', revealOrder, revealOrder.toLowerCase()); 39928 39929 break; 39930 } 39931 39932 case 'forward': 39933 case 'backward': 39934 { 39935 error('"%s" is not a valid value for revealOrder on <SuspenseList />. ' + 'React uses the -s suffix in the spelling. Use "%ss" instead.', revealOrder, revealOrder.toLowerCase()); 39936 39937 break; 39938 } 39939 39940 default: 39941 error('"%s" is not a supported revealOrder on <SuspenseList />. ' + 'Did you mean "together", "forwards" or "backwards"?', revealOrder); 39942 39943 break; 39944 } 39945 } else { 39946 error('%s is not a supported value for revealOrder on <SuspenseList />. ' + 'Did you mean "together", "forwards" or "backwards"?', revealOrder); 39947 } 39948 } 39949 } 39950} 39951 39952function validateTailOptions(tailMode, revealOrder) { 39953 { 39954 if (tailMode !== undefined && !didWarnAboutTailOptions[tailMode]) { 39955 if (tailMode !== 'collapsed' && tailMode !== 'hidden') { 39956 didWarnAboutTailOptions[tailMode] = true; 39957 39958 error('"%s" is not a supported value for tail on <SuspenseList />. ' + 'Did you mean "collapsed" or "hidden"?', tailMode); 39959 } else if (revealOrder !== 'forwards' && revealOrder !== 'backwards') { 39960 didWarnAboutTailOptions[tailMode] = true; 39961 39962 error('<SuspenseList tail="%s" /> is only valid if revealOrder is ' + '"forwards" or "backwards". ' + 'Did you mean to specify revealOrder="forwards"?', tailMode); 39963 } 39964 } 39965 } 39966} 39967 39968function validateSuspenseListNestedChild(childSlot, index) { 39969 { 39970 var isArray = Array.isArray(childSlot); 39971 var isIterable = !isArray && typeof getIteratorFn(childSlot) === 'function'; 39972 39973 if (isArray || isIterable) { 39974 var type = isArray ? 'array' : 'iterable'; 39975 39976 error('A nested %s was passed to row #%s in <SuspenseList />. Wrap it in ' + 'an additional SuspenseList to configure its revealOrder: ' + '<SuspenseList revealOrder=...> ... ' + '<SuspenseList revealOrder=...>{%s}</SuspenseList> ... ' + '</SuspenseList>', type, index, type); 39977 39978 return false; 39979 } 39980 } 39981 39982 return true; 39983} 39984 39985function validateSuspenseListChildren(children, revealOrder) { 39986 { 39987 if ((revealOrder === 'forwards' || revealOrder === 'backwards') && children !== undefined && children !== null && children !== false) { 39988 if (Array.isArray(children)) { 39989 for (var i = 0; i < children.length; i++) { 39990 if (!validateSuspenseListNestedChild(children[i], i)) { 39991 return; 39992 } 39993 } 39994 } else { 39995 var iteratorFn = getIteratorFn(children); 39996 39997 if (typeof iteratorFn === 'function') { 39998 var childrenIterator = iteratorFn.call(children); 39999 40000 if (childrenIterator) { 40001 var step = childrenIterator.next(); 40002 var _i = 0; 40003 40004 for (; !step.done; step = childrenIterator.next()) { 40005 if (!validateSuspenseListNestedChild(step.value, _i)) { 40006 return; 40007 } 40008 40009 _i++; 40010 } 40011 } 40012 } else { 40013 error('A single row was passed to a <SuspenseList revealOrder="%s" />. ' + 'This is not useful since it needs multiple rows. ' + 'Did you mean to pass multiple children or an array?', revealOrder); 40014 } 40015 } 40016 } 40017 } 40018} 40019 40020function initSuspenseListRenderState(workInProgress, isBackwards, tail, lastContentRow, tailMode, lastEffectBeforeRendering) { 40021 var renderState = workInProgress.memoizedState; 40022 40023 if (renderState === null) { 40024 workInProgress.memoizedState = { 40025 isBackwards: isBackwards, 40026 rendering: null, 40027 renderingStartTime: 0, 40028 last: lastContentRow, 40029 tail: tail, 40030 tailExpiration: 0, 40031 tailMode: tailMode, 40032 lastEffect: lastEffectBeforeRendering 40033 }; 40034 } else { 40035 // We can reuse the existing object from previous renders. 40036 renderState.isBackwards = isBackwards; 40037 renderState.rendering = null; 40038 renderState.renderingStartTime = 0; 40039 renderState.last = lastContentRow; 40040 renderState.tail = tail; 40041 renderState.tailExpiration = 0; 40042 renderState.tailMode = tailMode; 40043 renderState.lastEffect = lastEffectBeforeRendering; 40044 } 40045} // This can end up rendering this component multiple passes. 40046// The first pass splits the children fibers into two sets. A head and tail. 40047// We first render the head. If anything is in fallback state, we do another 40048// pass through beginWork to rerender all children (including the tail) with 40049// the force suspend context. If the first render didn't have anything in 40050// in fallback state. Then we render each row in the tail one-by-one. 40051// That happens in the completeWork phase without going back to beginWork. 40052 40053 40054function updateSuspenseListComponent(current, workInProgress, renderExpirationTime) { 40055 var nextProps = workInProgress.pendingProps; 40056 var revealOrder = nextProps.revealOrder; 40057 var tailMode = nextProps.tail; 40058 var newChildren = nextProps.children; 40059 validateRevealOrder(revealOrder); 40060 validateTailOptions(tailMode, revealOrder); 40061 validateSuspenseListChildren(newChildren, revealOrder); 40062 reconcileChildren(current, workInProgress, newChildren, renderExpirationTime); 40063 var suspenseContext = suspenseStackCursor.current; 40064 var shouldForceFallback = hasSuspenseContext(suspenseContext, ForceSuspenseFallback); 40065 40066 if (shouldForceFallback) { 40067 suspenseContext = setShallowSuspenseContext(suspenseContext, ForceSuspenseFallback); 40068 workInProgress.effectTag |= DidCapture; 40069 } else { 40070 var didSuspendBefore = current !== null && (current.effectTag & DidCapture) !== NoEffect; 40071 40072 if (didSuspendBefore) { 40073 // If we previously forced a fallback, we need to schedule work 40074 // on any nested boundaries to let them know to try to render 40075 // again. This is the same as context updating. 40076 propagateSuspenseContextChange(workInProgress, workInProgress.child, renderExpirationTime); 40077 } 40078 40079 suspenseContext = setDefaultShallowSuspenseContext(suspenseContext); 40080 } 40081 40082 pushSuspenseContext(workInProgress, suspenseContext); 40083 40084 if ((workInProgress.mode & BlockingMode) === NoMode) { 40085 // Outside of blocking mode, SuspenseList doesn't work so we just 40086 // use make it a noop by treating it as the default revealOrder. 40087 workInProgress.memoizedState = null; 40088 } else { 40089 switch (revealOrder) { 40090 case 'forwards': 40091 { 40092 var lastContentRow = findLastContentRow(workInProgress.child); 40093 var tail; 40094 40095 if (lastContentRow === null) { 40096 // The whole list is part of the tail. 40097 // TODO: We could fast path by just rendering the tail now. 40098 tail = workInProgress.child; 40099 workInProgress.child = null; 40100 } else { 40101 // Disconnect the tail rows after the content row. 40102 // We're going to render them separately later. 40103 tail = lastContentRow.sibling; 40104 lastContentRow.sibling = null; 40105 } 40106 40107 initSuspenseListRenderState(workInProgress, false, // isBackwards 40108 tail, lastContentRow, tailMode, workInProgress.lastEffect); 40109 break; 40110 } 40111 40112 case 'backwards': 40113 { 40114 // We're going to find the first row that has existing content. 40115 // At the same time we're going to reverse the list of everything 40116 // we pass in the meantime. That's going to be our tail in reverse 40117 // order. 40118 var _tail = null; 40119 var row = workInProgress.child; 40120 workInProgress.child = null; 40121 40122 while (row !== null) { 40123 var currentRow = row.alternate; // New rows can't be content rows. 40124 40125 if (currentRow !== null && findFirstSuspended(currentRow) === null) { 40126 // This is the beginning of the main content. 40127 workInProgress.child = row; 40128 break; 40129 } 40130 40131 var nextRow = row.sibling; 40132 row.sibling = _tail; 40133 _tail = row; 40134 row = nextRow; 40135 } // TODO: If workInProgress.child is null, we can continue on the tail immediately. 40136 40137 40138 initSuspenseListRenderState(workInProgress, true, // isBackwards 40139 _tail, null, // last 40140 tailMode, workInProgress.lastEffect); 40141 break; 40142 } 40143 40144 case 'together': 40145 { 40146 initSuspenseListRenderState(workInProgress, false, // isBackwards 40147 null, // tail 40148 null, // last 40149 undefined, workInProgress.lastEffect); 40150 break; 40151 } 40152 40153 default: 40154 { 40155 // The default reveal order is the same as not having 40156 // a boundary. 40157 workInProgress.memoizedState = null; 40158 } 40159 } 40160 } 40161 40162 return workInProgress.child; 40163} 40164 40165function updatePortalComponent(current, workInProgress, renderExpirationTime) { 40166 pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo); 40167 var nextChildren = workInProgress.pendingProps; 40168 40169 if (current === null) { 40170 // Portals are special because we don't append the children during mount 40171 // but at commit. Therefore we need to track insertions which the normal 40172 // flow doesn't do during mount. This doesn't happen at the root because 40173 // the root always starts with a "current" with a null child. 40174 // TODO: Consider unifying this with how the root works. 40175 workInProgress.child = reconcileChildFibers(workInProgress, null, nextChildren, renderExpirationTime); 40176 } else { 40177 reconcileChildren(current, workInProgress, nextChildren, renderExpirationTime); 40178 } 40179 40180 return workInProgress.child; 40181} 40182 40183function updateContextProvider(current, workInProgress, renderExpirationTime) { 40184 var providerType = workInProgress.type; 40185 var context = providerType._context; 40186 var newProps = workInProgress.pendingProps; 40187 var oldProps = workInProgress.memoizedProps; 40188 var newValue = newProps.value; 40189 40190 { 40191 var providerPropTypes = workInProgress.type.propTypes; 40192 40193 if (providerPropTypes) { 40194 checkPropTypes(providerPropTypes, newProps, 'prop', 'Context.Provider', getCurrentFiberStackInDev); 40195 } 40196 } 40197 40198 pushProvider(workInProgress, newValue); 40199 40200 if (oldProps !== null) { 40201 var oldValue = oldProps.value; 40202 var changedBits = calculateChangedBits(context, newValue, oldValue); 40203 40204 if (changedBits === 0) { 40205 // No change. Bailout early if children are the same. 40206 if (oldProps.children === newProps.children && !hasContextChanged()) { 40207 return bailoutOnAlreadyFinishedWork(current, workInProgress, renderExpirationTime); 40208 } 40209 } else { 40210 // The context value changed. Search for matching consumers and schedule 40211 // them to update. 40212 propagateContextChange(workInProgress, context, changedBits, renderExpirationTime); 40213 } 40214 } 40215 40216 var newChildren = newProps.children; 40217 reconcileChildren(current, workInProgress, newChildren, renderExpirationTime); 40218 return workInProgress.child; 40219} 40220 40221var hasWarnedAboutUsingContextAsConsumer = false; 40222 40223function updateContextConsumer(current, workInProgress, renderExpirationTime) { 40224 var context = workInProgress.type; // The logic below for Context differs depending on PROD or DEV mode. In 40225 // DEV mode, we create a separate object for Context.Consumer that acts 40226 // like a proxy to Context. This proxy object adds unnecessary code in PROD 40227 // so we use the old behaviour (Context.Consumer references Context) to 40228 // reduce size and overhead. The separate object references context via 40229 // a property called "_context", which also gives us the ability to check 40230 // in DEV mode if this property exists or not and warn if it does not. 40231 40232 { 40233 if (context._context === undefined) { 40234 // This may be because it's a Context (rather than a Consumer). 40235 // Or it may be because it's older React where they're the same thing. 40236 // We only want to warn if we're sure it's a new React. 40237 if (context !== context.Consumer) { 40238 if (!hasWarnedAboutUsingContextAsConsumer) { 40239 hasWarnedAboutUsingContextAsConsumer = true; 40240 40241 error('Rendering <Context> directly is not supported and will be removed in ' + 'a future major release. Did you mean to render <Context.Consumer> instead?'); 40242 } 40243 } 40244 } else { 40245 context = context._context; 40246 } 40247 } 40248 40249 var newProps = workInProgress.pendingProps; 40250 var render = newProps.children; 40251 40252 { 40253 if (typeof render !== 'function') { 40254 error('A context consumer was rendered with multiple children, or a child ' + "that isn't a function. A context consumer expects a single child " + 'that is a function. If you did pass a function, make sure there ' + 'is no trailing or leading whitespace around it.'); 40255 } 40256 } 40257 40258 prepareToReadContext(workInProgress, renderExpirationTime); 40259 var newValue = readContext(context, newProps.unstable_observedBits); 40260 var newChildren; 40261 40262 { 40263 ReactCurrentOwner$1.current = workInProgress; 40264 setIsRendering(true); 40265 newChildren = render(newValue); 40266 setIsRendering(false); 40267 } // React DevTools reads this flag. 40268 40269 40270 workInProgress.effectTag |= PerformedWork; 40271 reconcileChildren(current, workInProgress, newChildren, renderExpirationTime); 40272 return workInProgress.child; 40273} 40274 40275function markWorkInProgressReceivedUpdate() { 40276 didReceiveUpdate = true; 40277} 40278 40279function bailoutOnAlreadyFinishedWork(current, workInProgress, renderExpirationTime) { 40280 cancelWorkTimer(workInProgress); 40281 40282 if (current !== null) { 40283 // Reuse previous dependencies 40284 workInProgress.dependencies = current.dependencies; 40285 } 40286 40287 { 40288 // Don't update "base" render times for bailouts. 40289 stopProfilerTimerIfRunning(); 40290 } 40291 40292 var updateExpirationTime = workInProgress.expirationTime; 40293 40294 if (updateExpirationTime !== NoWork) { 40295 markUnprocessedUpdateTime(updateExpirationTime); 40296 } // Check if the children have any pending work. 40297 40298 40299 var childExpirationTime = workInProgress.childExpirationTime; 40300 40301 if (childExpirationTime < renderExpirationTime) { 40302 // The children don't have any work either. We can skip them. 40303 // TODO: Once we add back resuming, we should check if the children are 40304 // a work-in-progress set. If so, we need to transfer their effects. 40305 return null; 40306 } else { 40307 // This fiber doesn't have work, but its subtree does. Clone the child 40308 // fibers and continue. 40309 cloneChildFibers(current, workInProgress); 40310 return workInProgress.child; 40311 } 40312} 40313 40314function remountFiber(current, oldWorkInProgress, newWorkInProgress) { 40315 { 40316 var returnFiber = oldWorkInProgress.return; 40317 40318 if (returnFiber === null) { 40319 throw new Error('Cannot swap the root fiber.'); 40320 } // Disconnect from the old current. 40321 // It will get deleted. 40322 40323 40324 current.alternate = null; 40325 oldWorkInProgress.alternate = null; // Connect to the new tree. 40326 40327 newWorkInProgress.index = oldWorkInProgress.index; 40328 newWorkInProgress.sibling = oldWorkInProgress.sibling; 40329 newWorkInProgress.return = oldWorkInProgress.return; 40330 newWorkInProgress.ref = oldWorkInProgress.ref; // Replace the child/sibling pointers above it. 40331 40332 if (oldWorkInProgress === returnFiber.child) { 40333 returnFiber.child = newWorkInProgress; 40334 } else { 40335 var prevSibling = returnFiber.child; 40336 40337 if (prevSibling === null) { 40338 throw new Error('Expected parent to have a child.'); 40339 } 40340 40341 while (prevSibling.sibling !== oldWorkInProgress) { 40342 prevSibling = prevSibling.sibling; 40343 40344 if (prevSibling === null) { 40345 throw new Error('Expected to find the previous sibling.'); 40346 } 40347 } 40348 40349 prevSibling.sibling = newWorkInProgress; 40350 } // Delete the old fiber and place the new one. 40351 // Since the old fiber is disconnected, we have to schedule it manually. 40352 40353 40354 var last = returnFiber.lastEffect; 40355 40356 if (last !== null) { 40357 last.nextEffect = current; 40358 returnFiber.lastEffect = current; 40359 } else { 40360 returnFiber.firstEffect = returnFiber.lastEffect = current; 40361 } 40362 40363 current.nextEffect = null; 40364 current.effectTag = Deletion; 40365 newWorkInProgress.effectTag |= Placement; // Restart work from the new fiber. 40366 40367 return newWorkInProgress; 40368 } 40369} 40370 40371function beginWork(current, workInProgress, renderExpirationTime) { 40372 var updateExpirationTime = workInProgress.expirationTime; 40373 40374 { 40375 if (workInProgress._debugNeedsRemount && current !== null) { 40376 // This will restart the begin phase with a new fiber. 40377 return remountFiber(current, workInProgress, createFiberFromTypeAndProps(workInProgress.type, workInProgress.key, workInProgress.pendingProps, workInProgress._debugOwner || null, workInProgress.mode, workInProgress.expirationTime)); 40378 } 40379 } 40380 40381 if (current !== null) { 40382 var oldProps = current.memoizedProps; 40383 var newProps = workInProgress.pendingProps; 40384 40385 if (oldProps !== newProps || hasContextChanged() || ( // Force a re-render if the implementation changed due to hot reload: 40386 workInProgress.type !== current.type )) { 40387 // If props or context changed, mark the fiber as having performed work. 40388 // This may be unset if the props are determined to be equal later (memo). 40389 didReceiveUpdate = true; 40390 } else if (updateExpirationTime < renderExpirationTime) { 40391 didReceiveUpdate = false; // This fiber does not have any pending work. Bailout without entering 40392 // the begin phase. There's still some bookkeeping we that needs to be done 40393 // in this optimized path, mostly pushing stuff onto the stack. 40394 40395 switch (workInProgress.tag) { 40396 case HostRoot: 40397 pushHostRootContext(workInProgress); 40398 resetHydrationState(); 40399 break; 40400 40401 case HostComponent: 40402 pushHostContext(workInProgress); 40403 40404 if (workInProgress.mode & ConcurrentMode && renderExpirationTime !== Never && shouldDeprioritizeSubtree(workInProgress.type, newProps)) { 40405 { 40406 markSpawnedWork(Never); 40407 } // Schedule this fiber to re-render at offscreen priority. Then bailout. 40408 40409 40410 workInProgress.expirationTime = workInProgress.childExpirationTime = Never; 40411 return null; 40412 } 40413 40414 break; 40415 40416 case ClassComponent: 40417 { 40418 var Component = workInProgress.type; 40419 40420 if (isContextProvider(Component)) { 40421 pushContextProvider(workInProgress); 40422 } 40423 40424 break; 40425 } 40426 40427 case HostPortal: 40428 pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo); 40429 break; 40430 40431 case ContextProvider: 40432 { 40433 var newValue = workInProgress.memoizedProps.value; 40434 pushProvider(workInProgress, newValue); 40435 break; 40436 } 40437 40438 case Profiler: 40439 { 40440 // Profiler should only call onRender when one of its descendants actually rendered. 40441 var hasChildWork = workInProgress.childExpirationTime >= renderExpirationTime; 40442 40443 if (hasChildWork) { 40444 workInProgress.effectTag |= Update; 40445 } 40446 } 40447 40448 break; 40449 40450 case SuspenseComponent: 40451 { 40452 var state = workInProgress.memoizedState; 40453 40454 if (state !== null) { 40455 // whether to retry the primary children, or to skip over it and 40456 // go straight to the fallback. Check the priority of the primary 40457 // child fragment. 40458 40459 40460 var primaryChildFragment = workInProgress.child; 40461 var primaryChildExpirationTime = primaryChildFragment.childExpirationTime; 40462 40463 if (primaryChildExpirationTime !== NoWork && primaryChildExpirationTime >= renderExpirationTime) { 40464 // The primary children have pending work. Use the normal path 40465 // to attempt to render the primary children again. 40466 return updateSuspenseComponent(current, workInProgress, renderExpirationTime); 40467 } else { 40468 pushSuspenseContext(workInProgress, setDefaultShallowSuspenseContext(suspenseStackCursor.current)); // The primary children do not have pending work with sufficient 40469 // priority. Bailout. 40470 40471 var child = bailoutOnAlreadyFinishedWork(current, workInProgress, renderExpirationTime); 40472 40473 if (child !== null) { 40474 // The fallback children have pending work. Skip over the 40475 // primary children and work on the fallback. 40476 return child.sibling; 40477 } else { 40478 return null; 40479 } 40480 } 40481 } else { 40482 pushSuspenseContext(workInProgress, setDefaultShallowSuspenseContext(suspenseStackCursor.current)); 40483 } 40484 40485 break; 40486 } 40487 40488 case SuspenseListComponent: 40489 { 40490 var didSuspendBefore = (current.effectTag & DidCapture) !== NoEffect; 40491 40492 var _hasChildWork = workInProgress.childExpirationTime >= renderExpirationTime; 40493 40494 if (didSuspendBefore) { 40495 if (_hasChildWork) { 40496 // If something was in fallback state last time, and we have all the 40497 // same children then we're still in progressive loading state. 40498 // Something might get unblocked by state updates or retries in the 40499 // tree which will affect the tail. So we need to use the normal 40500 // path to compute the correct tail. 40501 return updateSuspenseListComponent(current, workInProgress, renderExpirationTime); 40502 } // If none of the children had any work, that means that none of 40503 // them got retried so they'll still be blocked in the same way 40504 // as before. We can fast bail out. 40505 40506 40507 workInProgress.effectTag |= DidCapture; 40508 } // If nothing suspended before and we're rendering the same children, 40509 // then the tail doesn't matter. Anything new that suspends will work 40510 // in the "together" mode, so we can continue from the state we had. 40511 40512 40513 var renderState = workInProgress.memoizedState; 40514 40515 if (renderState !== null) { 40516 // Reset to the "together" mode in case we've started a different 40517 // update in the past but didn't complete it. 40518 renderState.rendering = null; 40519 renderState.tail = null; 40520 } 40521 40522 pushSuspenseContext(workInProgress, suspenseStackCursor.current); 40523 40524 if (_hasChildWork) { 40525 break; 40526 } else { 40527 // If none of the children had any work, that means that none of 40528 // them got retried so they'll still be blocked in the same way 40529 // as before. We can fast bail out. 40530 return null; 40531 } 40532 } 40533 } 40534 40535 return bailoutOnAlreadyFinishedWork(current, workInProgress, renderExpirationTime); 40536 } else { 40537 // An update was scheduled on this fiber, but there are no new props 40538 // nor legacy context. Set this to false. If an update queue or context 40539 // consumer produces a changed value, it will set this to true. Otherwise, 40540 // the component will assume the children have not changed and bail out. 40541 didReceiveUpdate = false; 40542 } 40543 } else { 40544 didReceiveUpdate = false; 40545 } // Before entering the begin phase, clear pending update priority. 40546 // TODO: This assumes that we're about to evaluate the component and process 40547 // the update queue. However, there's an exception: SimpleMemoComponent 40548 // sometimes bails out later in the begin phase. This indicates that we should 40549 // move this assignment out of the common path and into each branch. 40550 40551 40552 workInProgress.expirationTime = NoWork; 40553 40554 switch (workInProgress.tag) { 40555 case IndeterminateComponent: 40556 { 40557 return mountIndeterminateComponent(current, workInProgress, workInProgress.type, renderExpirationTime); 40558 } 40559 40560 case LazyComponent: 40561 { 40562 var elementType = workInProgress.elementType; 40563 return mountLazyComponent(current, workInProgress, elementType, updateExpirationTime, renderExpirationTime); 40564 } 40565 40566 case FunctionComponent: 40567 { 40568 var _Component = workInProgress.type; 40569 var unresolvedProps = workInProgress.pendingProps; 40570 var resolvedProps = workInProgress.elementType === _Component ? unresolvedProps : resolveDefaultProps(_Component, unresolvedProps); 40571 return updateFunctionComponent(current, workInProgress, _Component, resolvedProps, renderExpirationTime); 40572 } 40573 40574 case ClassComponent: 40575 { 40576 var _Component2 = workInProgress.type; 40577 var _unresolvedProps = workInProgress.pendingProps; 40578 40579 var _resolvedProps = workInProgress.elementType === _Component2 ? _unresolvedProps : resolveDefaultProps(_Component2, _unresolvedProps); 40580 40581 return updateClassComponent(current, workInProgress, _Component2, _resolvedProps, renderExpirationTime); 40582 } 40583 40584 case HostRoot: 40585 return updateHostRoot(current, workInProgress, renderExpirationTime); 40586 40587 case HostComponent: 40588 return updateHostComponent(current, workInProgress, renderExpirationTime); 40589 40590 case HostText: 40591 return updateHostText(current, workInProgress); 40592 40593 case SuspenseComponent: 40594 return updateSuspenseComponent(current, workInProgress, renderExpirationTime); 40595 40596 case HostPortal: 40597 return updatePortalComponent(current, workInProgress, renderExpirationTime); 40598 40599 case ForwardRef: 40600 { 40601 var type = workInProgress.type; 40602 var _unresolvedProps2 = workInProgress.pendingProps; 40603 40604 var _resolvedProps2 = workInProgress.elementType === type ? _unresolvedProps2 : resolveDefaultProps(type, _unresolvedProps2); 40605 40606 return updateForwardRef(current, workInProgress, type, _resolvedProps2, renderExpirationTime); 40607 } 40608 40609 case Fragment: 40610 return updateFragment(current, workInProgress, renderExpirationTime); 40611 40612 case Mode: 40613 return updateMode(current, workInProgress, renderExpirationTime); 40614 40615 case Profiler: 40616 return updateProfiler(current, workInProgress, renderExpirationTime); 40617 40618 case ContextProvider: 40619 return updateContextProvider(current, workInProgress, renderExpirationTime); 40620 40621 case ContextConsumer: 40622 return updateContextConsumer(current, workInProgress, renderExpirationTime); 40623 40624 case MemoComponent: 40625 { 40626 var _type2 = workInProgress.type; 40627 var _unresolvedProps3 = workInProgress.pendingProps; // Resolve outer props first, then resolve inner props. 40628 40629 var _resolvedProps3 = resolveDefaultProps(_type2, _unresolvedProps3); 40630 40631 { 40632 if (workInProgress.type !== workInProgress.elementType) { 40633 var outerPropTypes = _type2.propTypes; 40634 40635 if (outerPropTypes) { 40636 checkPropTypes(outerPropTypes, _resolvedProps3, // Resolved for outer only 40637 'prop', getComponentName(_type2), getCurrentFiberStackInDev); 40638 } 40639 } 40640 } 40641 40642 _resolvedProps3 = resolveDefaultProps(_type2.type, _resolvedProps3); 40643 return updateMemoComponent(current, workInProgress, _type2, _resolvedProps3, updateExpirationTime, renderExpirationTime); 40644 } 40645 40646 case SimpleMemoComponent: 40647 { 40648 return updateSimpleMemoComponent(current, workInProgress, workInProgress.type, workInProgress.pendingProps, updateExpirationTime, renderExpirationTime); 40649 } 40650 40651 case IncompleteClassComponent: 40652 { 40653 var _Component3 = workInProgress.type; 40654 var _unresolvedProps4 = workInProgress.pendingProps; 40655 40656 var _resolvedProps4 = workInProgress.elementType === _Component3 ? _unresolvedProps4 : resolveDefaultProps(_Component3, _unresolvedProps4); 40657 40658 return mountIncompleteClassComponent(current, workInProgress, _Component3, _resolvedProps4, renderExpirationTime); 40659 } 40660 40661 case SuspenseListComponent: 40662 { 40663 return updateSuspenseListComponent(current, workInProgress, renderExpirationTime); 40664 } 40665 } 40666 40667 { 40668 { 40669 throw Error( "Unknown unit of work tag (" + workInProgress.tag + "). This error is likely caused by a bug in React. Please file an issue." ); 40670 } 40671 } 40672} 40673 40674function markUpdate(workInProgress) { 40675 // Tag the fiber with an update effect. This turns a Placement into 40676 // a PlacementAndUpdate. 40677 workInProgress.effectTag |= Update; 40678} 40679 40680function markRef$1(workInProgress) { 40681 workInProgress.effectTag |= Ref; 40682} 40683 40684var appendAllChildren; 40685var updateHostContainer; 40686var updateHostComponent$1; 40687var updateHostText$1; 40688 40689{ 40690 // Mutation mode 40691 appendAllChildren = function (parent, workInProgress, needsVisibilityToggle, isHidden) { 40692 // We only have the top Fiber that was created but we need recurse down its 40693 // children to find all the terminal nodes. 40694 var node = workInProgress.child; 40695 40696 while (node !== null) { 40697 if (node.tag === HostComponent || node.tag === HostText) { 40698 appendInitialChild(parent, node.stateNode); 40699 } else if (node.tag === HostPortal) ; else if (node.child !== null) { 40700 node.child.return = node; 40701 node = node.child; 40702 continue; 40703 } 40704 40705 if (node === workInProgress) { 40706 return; 40707 } 40708 40709 while (node.sibling === null) { 40710 if (node.return === null || node.return === workInProgress) { 40711 return; 40712 } 40713 40714 node = node.return; 40715 } 40716 40717 node.sibling.return = node.return; 40718 node = node.sibling; 40719 } 40720 }; 40721 40722 updateHostContainer = function (workInProgress) {// Noop 40723 }; 40724 40725 updateHostComponent$1 = function (current, workInProgress, type, newProps, rootContainerInstance) { 40726 // If we have an alternate, that means this is an update and we need to 40727 // schedule a side-effect to do the updates. 40728 var oldProps = current.memoizedProps; 40729 40730 if (oldProps === newProps) { 40731 // In mutation mode, this is sufficient for a bailout because 40732 // we won't touch this node even if children changed. 40733 return; 40734 } // If we get updated because one of our children updated, we don't 40735 // have newProps so we'll have to reuse them. 40736 // TODO: Split the update API as separate for the props vs. children. 40737 // Even better would be if children weren't special cased at all tho. 40738 40739 40740 var instance = workInProgress.stateNode; 40741 var currentHostContext = getHostContext(); // TODO: Experiencing an error where oldProps is null. Suggests a host 40742 // component is hitting the resume path. Figure out why. Possibly 40743 // related to `hidden`. 40744 40745 var updatePayload = prepareUpdate(instance, type, oldProps, newProps, rootContainerInstance, currentHostContext); // TODO: Type this specific to this type of component. 40746 40747 workInProgress.updateQueue = updatePayload; // If the update payload indicates that there is a change or if there 40748 // is a new ref we mark this as an update. All the work is done in commitWork. 40749 40750 if (updatePayload) { 40751 markUpdate(workInProgress); 40752 } 40753 }; 40754 40755 updateHostText$1 = function (current, workInProgress, oldText, newText) { 40756 // If the text differs, mark it as an update. All the work in done in commitWork. 40757 if (oldText !== newText) { 40758 markUpdate(workInProgress); 40759 } 40760 }; 40761} 40762 40763function cutOffTailIfNeeded(renderState, hasRenderedATailFallback) { 40764 switch (renderState.tailMode) { 40765 case 'hidden': 40766 { 40767 // Any insertions at the end of the tail list after this point 40768 // should be invisible. If there are already mounted boundaries 40769 // anything before them are not considered for collapsing. 40770 // Therefore we need to go through the whole tail to find if 40771 // there are any. 40772 var tailNode = renderState.tail; 40773 var lastTailNode = null; 40774 40775 while (tailNode !== null) { 40776 if (tailNode.alternate !== null) { 40777 lastTailNode = tailNode; 40778 } 40779 40780 tailNode = tailNode.sibling; 40781 } // Next we're simply going to delete all insertions after the 40782 // last rendered item. 40783 40784 40785 if (lastTailNode === null) { 40786 // All remaining items in the tail are insertions. 40787 renderState.tail = null; 40788 } else { 40789 // Detach the insertion after the last node that was already 40790 // inserted. 40791 lastTailNode.sibling = null; 40792 } 40793 40794 break; 40795 } 40796 40797 case 'collapsed': 40798 { 40799 // Any insertions at the end of the tail list after this point 40800 // should be invisible. If there are already mounted boundaries 40801 // anything before them are not considered for collapsing. 40802 // Therefore we need to go through the whole tail to find if 40803 // there are any. 40804 var _tailNode = renderState.tail; 40805 var _lastTailNode = null; 40806 40807 while (_tailNode !== null) { 40808 if (_tailNode.alternate !== null) { 40809 _lastTailNode = _tailNode; 40810 } 40811 40812 _tailNode = _tailNode.sibling; 40813 } // Next we're simply going to delete all insertions after the 40814 // last rendered item. 40815 40816 40817 if (_lastTailNode === null) { 40818 // All remaining items in the tail are insertions. 40819 if (!hasRenderedATailFallback && renderState.tail !== null) { 40820 // We suspended during the head. We want to show at least one 40821 // row at the tail. So we'll keep on and cut off the rest. 40822 renderState.tail.sibling = null; 40823 } else { 40824 renderState.tail = null; 40825 } 40826 } else { 40827 // Detach the insertion after the last node that was already 40828 // inserted. 40829 _lastTailNode.sibling = null; 40830 } 40831 40832 break; 40833 } 40834 } 40835} 40836 40837function completeWork(current, workInProgress, renderExpirationTime) { 40838 var newProps = workInProgress.pendingProps; 40839 40840 switch (workInProgress.tag) { 40841 case IndeterminateComponent: 40842 case LazyComponent: 40843 case SimpleMemoComponent: 40844 case FunctionComponent: 40845 case ForwardRef: 40846 case Fragment: 40847 case Mode: 40848 case Profiler: 40849 case ContextConsumer: 40850 case MemoComponent: 40851 return null; 40852 40853 case ClassComponent: 40854 { 40855 var Component = workInProgress.type; 40856 40857 if (isContextProvider(Component)) { 40858 popContext(workInProgress); 40859 } 40860 40861 return null; 40862 } 40863 40864 case HostRoot: 40865 { 40866 popHostContainer(workInProgress); 40867 popTopLevelContextObject(workInProgress); 40868 var fiberRoot = workInProgress.stateNode; 40869 40870 if (fiberRoot.pendingContext) { 40871 fiberRoot.context = fiberRoot.pendingContext; 40872 fiberRoot.pendingContext = null; 40873 } 40874 40875 if (current === null || current.child === null) { 40876 // If we hydrated, pop so that we can delete any remaining children 40877 // that weren't hydrated. 40878 var wasHydrated = popHydrationState(workInProgress); 40879 40880 if (wasHydrated) { 40881 // If we hydrated, then we'll need to schedule an update for 40882 // the commit side-effects on the root. 40883 markUpdate(workInProgress); 40884 } 40885 } 40886 40887 updateHostContainer(workInProgress); 40888 return null; 40889 } 40890 40891 case HostComponent: 40892 { 40893 popHostContext(workInProgress); 40894 var rootContainerInstance = getRootHostContainer(); 40895 var type = workInProgress.type; 40896 40897 if (current !== null && workInProgress.stateNode != null) { 40898 updateHostComponent$1(current, workInProgress, type, newProps, rootContainerInstance); 40899 40900 if (current.ref !== workInProgress.ref) { 40901 markRef$1(workInProgress); 40902 } 40903 } else { 40904 if (!newProps) { 40905 if (!(workInProgress.stateNode !== null)) { 40906 { 40907 throw Error( "We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue." ); 40908 } 40909 } // This can happen when we abort work. 40910 40911 40912 return null; 40913 } 40914 40915 var currentHostContext = getHostContext(); // TODO: Move createInstance to beginWork and keep it on a context 40916 // "stack" as the parent. Then append children as we go in beginWork 40917 // or completeWork depending on whether we want to add them top->down or 40918 // bottom->up. Top->down is faster in IE11. 40919 40920 var _wasHydrated = popHydrationState(workInProgress); 40921 40922 if (_wasHydrated) { 40923 // TODO: Move this and createInstance step into the beginPhase 40924 // to consolidate. 40925 if (prepareToHydrateHostInstance(workInProgress, rootContainerInstance, currentHostContext)) { 40926 // If changes to the hydrated node need to be applied at the 40927 // commit-phase we mark this as such. 40928 markUpdate(workInProgress); 40929 } 40930 } else { 40931 var instance = createInstance(type, newProps, rootContainerInstance, currentHostContext, workInProgress); 40932 appendAllChildren(instance, workInProgress, false, false); // This needs to be set before we mount Flare event listeners 40933 40934 workInProgress.stateNode = instance; 40935 // (eg DOM renderer supports auto-focus for certain elements). 40936 // Make sure such renderers get scheduled for later work. 40937 40938 40939 if (finalizeInitialChildren(instance, type, newProps, rootContainerInstance)) { 40940 markUpdate(workInProgress); 40941 } 40942 } 40943 40944 if (workInProgress.ref !== null) { 40945 // If there is a ref on a host node we need to schedule a callback 40946 markRef$1(workInProgress); 40947 } 40948 } 40949 40950 return null; 40951 } 40952 40953 case HostText: 40954 { 40955 var newText = newProps; 40956 40957 if (current && workInProgress.stateNode != null) { 40958 var oldText = current.memoizedProps; // If we have an alternate, that means this is an update and we need 40959 // to schedule a side-effect to do the updates. 40960 40961 updateHostText$1(current, workInProgress, oldText, newText); 40962 } else { 40963 if (typeof newText !== 'string') { 40964 if (!(workInProgress.stateNode !== null)) { 40965 { 40966 throw Error( "We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue." ); 40967 } 40968 } // This can happen when we abort work. 40969 40970 } 40971 40972 var _rootContainerInstance = getRootHostContainer(); 40973 40974 var _currentHostContext = getHostContext(); 40975 40976 var _wasHydrated2 = popHydrationState(workInProgress); 40977 40978 if (_wasHydrated2) { 40979 if (prepareToHydrateHostTextInstance(workInProgress)) { 40980 markUpdate(workInProgress); 40981 } 40982 } else { 40983 workInProgress.stateNode = createTextInstance(newText, _rootContainerInstance, _currentHostContext, workInProgress); 40984 } 40985 } 40986 40987 return null; 40988 } 40989 40990 case SuspenseComponent: 40991 { 40992 popSuspenseContext(workInProgress); 40993 var nextState = workInProgress.memoizedState; 40994 40995 if ((workInProgress.effectTag & DidCapture) !== NoEffect) { 40996 // Something suspended. Re-render with the fallback children. 40997 workInProgress.expirationTime = renderExpirationTime; // Do not reset the effect list. 40998 40999 return workInProgress; 41000 } 41001 41002 var nextDidTimeout = nextState !== null; 41003 var prevDidTimeout = false; 41004 41005 if (current === null) { 41006 if (workInProgress.memoizedProps.fallback !== undefined) { 41007 popHydrationState(workInProgress); 41008 } 41009 } else { 41010 var prevState = current.memoizedState; 41011 prevDidTimeout = prevState !== null; 41012 41013 if (!nextDidTimeout && prevState !== null) { 41014 // We just switched from the fallback to the normal children. 41015 // Delete the fallback. 41016 // TODO: Would it be better to store the fallback fragment on 41017 // the stateNode during the begin phase? 41018 var currentFallbackChild = current.child.sibling; 41019 41020 if (currentFallbackChild !== null) { 41021 // Deletions go at the beginning of the return fiber's effect list 41022 var first = workInProgress.firstEffect; 41023 41024 if (first !== null) { 41025 workInProgress.firstEffect = currentFallbackChild; 41026 currentFallbackChild.nextEffect = first; 41027 } else { 41028 workInProgress.firstEffect = workInProgress.lastEffect = currentFallbackChild; 41029 currentFallbackChild.nextEffect = null; 41030 } 41031 41032 currentFallbackChild.effectTag = Deletion; 41033 } 41034 } 41035 } 41036 41037 if (nextDidTimeout && !prevDidTimeout) { 41038 // If this subtreee is running in blocking mode we can suspend, 41039 // otherwise we won't suspend. 41040 // TODO: This will still suspend a synchronous tree if anything 41041 // in the concurrent tree already suspended during this render. 41042 // This is a known bug. 41043 if ((workInProgress.mode & BlockingMode) !== NoMode) { 41044 // TODO: Move this back to throwException because this is too late 41045 // if this is a large tree which is common for initial loads. We 41046 // don't know if we should restart a render or not until we get 41047 // this marker, and this is too late. 41048 // If this render already had a ping or lower pri updates, 41049 // and this is the first time we know we're going to suspend we 41050 // should be able to immediately restart from within throwException. 41051 var hasInvisibleChildContext = current === null && workInProgress.memoizedProps.unstable_avoidThisFallback !== true; 41052 41053 if (hasInvisibleChildContext || hasSuspenseContext(suspenseStackCursor.current, InvisibleParentSuspenseContext)) { 41054 // If this was in an invisible tree or a new render, then showing 41055 // this boundary is ok. 41056 renderDidSuspend(); 41057 } else { 41058 // Otherwise, we're going to have to hide content so we should 41059 // suspend for longer if possible. 41060 renderDidSuspendDelayIfPossible(); 41061 } 41062 } 41063 } 41064 41065 { 41066 // TODO: Only schedule updates if these values are non equal, i.e. it changed. 41067 if (nextDidTimeout || prevDidTimeout) { 41068 // If this boundary just timed out, schedule an effect to attach a 41069 // retry listener to the promise. This flag is also used to hide the 41070 // primary children. In mutation mode, we also need the flag to 41071 // *unhide* children that were previously hidden, so check if this 41072 // is currently timed out, too. 41073 workInProgress.effectTag |= Update; 41074 } 41075 } 41076 41077 return null; 41078 } 41079 41080 case HostPortal: 41081 popHostContainer(workInProgress); 41082 updateHostContainer(workInProgress); 41083 return null; 41084 41085 case ContextProvider: 41086 // Pop provider fiber 41087 popProvider(workInProgress); 41088 return null; 41089 41090 case IncompleteClassComponent: 41091 { 41092 // Same as class component case. I put it down here so that the tags are 41093 // sequential to ensure this switch is compiled to a jump table. 41094 var _Component = workInProgress.type; 41095 41096 if (isContextProvider(_Component)) { 41097 popContext(workInProgress); 41098 } 41099 41100 return null; 41101 } 41102 41103 case SuspenseListComponent: 41104 { 41105 popSuspenseContext(workInProgress); 41106 var renderState = workInProgress.memoizedState; 41107 41108 if (renderState === null) { 41109 // We're running in the default, "independent" mode. 41110 // We don't do anything in this mode. 41111 return null; 41112 } 41113 41114 var didSuspendAlready = (workInProgress.effectTag & DidCapture) !== NoEffect; 41115 var renderedTail = renderState.rendering; 41116 41117 if (renderedTail === null) { 41118 // We just rendered the head. 41119 if (!didSuspendAlready) { 41120 // This is the first pass. We need to figure out if anything is still 41121 // suspended in the rendered set. 41122 // If new content unsuspended, but there's still some content that 41123 // didn't. Then we need to do a second pass that forces everything 41124 // to keep showing their fallbacks. 41125 // We might be suspended if something in this render pass suspended, or 41126 // something in the previous committed pass suspended. Otherwise, 41127 // there's no chance so we can skip the expensive call to 41128 // findFirstSuspended. 41129 var cannotBeSuspended = renderHasNotSuspendedYet() && (current === null || (current.effectTag & DidCapture) === NoEffect); 41130 41131 if (!cannotBeSuspended) { 41132 var row = workInProgress.child; 41133 41134 while (row !== null) { 41135 var suspended = findFirstSuspended(row); 41136 41137 if (suspended !== null) { 41138 didSuspendAlready = true; 41139 workInProgress.effectTag |= DidCapture; 41140 cutOffTailIfNeeded(renderState, false); // If this is a newly suspended tree, it might not get committed as 41141 // part of the second pass. In that case nothing will subscribe to 41142 // its thennables. Instead, we'll transfer its thennables to the 41143 // SuspenseList so that it can retry if they resolve. 41144 // There might be multiple of these in the list but since we're 41145 // going to wait for all of them anyway, it doesn't really matter 41146 // which ones gets to ping. In theory we could get clever and keep 41147 // track of how many dependencies remain but it gets tricky because 41148 // in the meantime, we can add/remove/change items and dependencies. 41149 // We might bail out of the loop before finding any but that 41150 // doesn't matter since that means that the other boundaries that 41151 // we did find already has their listeners attached. 41152 41153 var newThennables = suspended.updateQueue; 41154 41155 if (newThennables !== null) { 41156 workInProgress.updateQueue = newThennables; 41157 workInProgress.effectTag |= Update; 41158 } // Rerender the whole list, but this time, we'll force fallbacks 41159 // to stay in place. 41160 // Reset the effect list before doing the second pass since that's now invalid. 41161 41162 41163 if (renderState.lastEffect === null) { 41164 workInProgress.firstEffect = null; 41165 } 41166 41167 workInProgress.lastEffect = renderState.lastEffect; // Reset the child fibers to their original state. 41168 41169 resetChildFibers(workInProgress, renderExpirationTime); // Set up the Suspense Context to force suspense and immediately 41170 // rerender the children. 41171 41172 pushSuspenseContext(workInProgress, setShallowSuspenseContext(suspenseStackCursor.current, ForceSuspenseFallback)); 41173 return workInProgress.child; 41174 } 41175 41176 row = row.sibling; 41177 } 41178 } 41179 } else { 41180 cutOffTailIfNeeded(renderState, false); 41181 } // Next we're going to render the tail. 41182 41183 } else { 41184 // Append the rendered row to the child list. 41185 if (!didSuspendAlready) { 41186 var _suspended = findFirstSuspended(renderedTail); 41187 41188 if (_suspended !== null) { 41189 workInProgress.effectTag |= DidCapture; 41190 didSuspendAlready = true; // Ensure we transfer the update queue to the parent so that it doesn't 41191 // get lost if this row ends up dropped during a second pass. 41192 41193 var _newThennables = _suspended.updateQueue; 41194 41195 if (_newThennables !== null) { 41196 workInProgress.updateQueue = _newThennables; 41197 workInProgress.effectTag |= Update; 41198 } 41199 41200 cutOffTailIfNeeded(renderState, true); // This might have been modified. 41201 41202 if (renderState.tail === null && renderState.tailMode === 'hidden' && !renderedTail.alternate) { 41203 // We need to delete the row we just rendered. 41204 // Reset the effect list to what it was before we rendered this 41205 // child. The nested children have already appended themselves. 41206 var lastEffect = workInProgress.lastEffect = renderState.lastEffect; // Remove any effects that were appended after this point. 41207 41208 if (lastEffect !== null) { 41209 lastEffect.nextEffect = null; 41210 } // We're done. 41211 41212 41213 return null; 41214 } 41215 } else if ( // The time it took to render last row is greater than time until 41216 // the expiration. 41217 now() * 2 - renderState.renderingStartTime > renderState.tailExpiration && renderExpirationTime > Never) { 41218 // We have now passed our CPU deadline and we'll just give up further 41219 // attempts to render the main content and only render fallbacks. 41220 // The assumption is that this is usually faster. 41221 workInProgress.effectTag |= DidCapture; 41222 didSuspendAlready = true; 41223 cutOffTailIfNeeded(renderState, false); // Since nothing actually suspended, there will nothing to ping this 41224 // to get it started back up to attempt the next item. If we can show 41225 // them, then they really have the same priority as this render. 41226 // So we'll pick it back up the very next render pass once we've had 41227 // an opportunity to yield for paint. 41228 41229 var nextPriority = renderExpirationTime - 1; 41230 workInProgress.expirationTime = workInProgress.childExpirationTime = nextPriority; 41231 41232 { 41233 markSpawnedWork(nextPriority); 41234 } 41235 } 41236 } 41237 41238 if (renderState.isBackwards) { 41239 // The effect list of the backwards tail will have been added 41240 // to the end. This breaks the guarantee that life-cycles fire in 41241 // sibling order but that isn't a strong guarantee promised by React. 41242 // Especially since these might also just pop in during future commits. 41243 // Append to the beginning of the list. 41244 renderedTail.sibling = workInProgress.child; 41245 workInProgress.child = renderedTail; 41246 } else { 41247 var previousSibling = renderState.last; 41248 41249 if (previousSibling !== null) { 41250 previousSibling.sibling = renderedTail; 41251 } else { 41252 workInProgress.child = renderedTail; 41253 } 41254 41255 renderState.last = renderedTail; 41256 } 41257 } 41258 41259 if (renderState.tail !== null) { 41260 // We still have tail rows to render. 41261 if (renderState.tailExpiration === 0) { 41262 // Heuristic for how long we're willing to spend rendering rows 41263 // until we just give up and show what we have so far. 41264 var TAIL_EXPIRATION_TIMEOUT_MS = 500; 41265 renderState.tailExpiration = now() + TAIL_EXPIRATION_TIMEOUT_MS; // TODO: This is meant to mimic the train model or JND but this 41266 // is a per component value. It should really be since the start 41267 // of the total render or last commit. Consider using something like 41268 // globalMostRecentFallbackTime. That doesn't account for being 41269 // suspended for part of the time or when it's a new render. 41270 // It should probably use a global start time value instead. 41271 } // Pop a row. 41272 41273 41274 var next = renderState.tail; 41275 renderState.rendering = next; 41276 renderState.tail = next.sibling; 41277 renderState.lastEffect = workInProgress.lastEffect; 41278 renderState.renderingStartTime = now(); 41279 next.sibling = null; // Restore the context. 41280 // TODO: We can probably just avoid popping it instead and only 41281 // setting it the first time we go from not suspended to suspended. 41282 41283 var suspenseContext = suspenseStackCursor.current; 41284 41285 if (didSuspendAlready) { 41286 suspenseContext = setShallowSuspenseContext(suspenseContext, ForceSuspenseFallback); 41287 } else { 41288 suspenseContext = setDefaultShallowSuspenseContext(suspenseContext); 41289 } 41290 41291 pushSuspenseContext(workInProgress, suspenseContext); // Do a pass over the next row. 41292 41293 return next; 41294 } 41295 41296 return null; 41297 } 41298 } 41299 41300 { 41301 { 41302 throw Error( "Unknown unit of work tag (" + workInProgress.tag + "). This error is likely caused by a bug in React. Please file an issue." ); 41303 } 41304 } 41305} 41306 41307function unwindWork(workInProgress, renderExpirationTime) { 41308 switch (workInProgress.tag) { 41309 case ClassComponent: 41310 { 41311 var Component = workInProgress.type; 41312 41313 if (isContextProvider(Component)) { 41314 popContext(workInProgress); 41315 } 41316 41317 var effectTag = workInProgress.effectTag; 41318 41319 if (effectTag & ShouldCapture) { 41320 workInProgress.effectTag = effectTag & ~ShouldCapture | DidCapture; 41321 return workInProgress; 41322 } 41323 41324 return null; 41325 } 41326 41327 case HostRoot: 41328 { 41329 popHostContainer(workInProgress); 41330 popTopLevelContextObject(workInProgress); 41331 var _effectTag = workInProgress.effectTag; 41332 41333 if (!((_effectTag & DidCapture) === NoEffect)) { 41334 { 41335 throw Error( "The root failed to unmount after an error. This is likely a bug in React. Please file an issue." ); 41336 } 41337 } 41338 41339 workInProgress.effectTag = _effectTag & ~ShouldCapture | DidCapture; 41340 return workInProgress; 41341 } 41342 41343 case HostComponent: 41344 { 41345 // TODO: popHydrationState 41346 popHostContext(workInProgress); 41347 return null; 41348 } 41349 41350 case SuspenseComponent: 41351 { 41352 popSuspenseContext(workInProgress); 41353 41354 var _effectTag2 = workInProgress.effectTag; 41355 41356 if (_effectTag2 & ShouldCapture) { 41357 workInProgress.effectTag = _effectTag2 & ~ShouldCapture | DidCapture; // Captured a suspense effect. Re-render the boundary. 41358 41359 return workInProgress; 41360 } 41361 41362 return null; 41363 } 41364 41365 case SuspenseListComponent: 41366 { 41367 popSuspenseContext(workInProgress); // SuspenseList doesn't actually catch anything. It should've been 41368 // caught by a nested boundary. If not, it should bubble through. 41369 41370 return null; 41371 } 41372 41373 case HostPortal: 41374 popHostContainer(workInProgress); 41375 return null; 41376 41377 case ContextProvider: 41378 popProvider(workInProgress); 41379 return null; 41380 41381 default: 41382 return null; 41383 } 41384} 41385 41386function unwindInterruptedWork(interruptedWork) { 41387 switch (interruptedWork.tag) { 41388 case ClassComponent: 41389 { 41390 var childContextTypes = interruptedWork.type.childContextTypes; 41391 41392 if (childContextTypes !== null && childContextTypes !== undefined) { 41393 popContext(interruptedWork); 41394 } 41395 41396 break; 41397 } 41398 41399 case HostRoot: 41400 { 41401 popHostContainer(interruptedWork); 41402 popTopLevelContextObject(interruptedWork); 41403 break; 41404 } 41405 41406 case HostComponent: 41407 { 41408 popHostContext(interruptedWork); 41409 break; 41410 } 41411 41412 case HostPortal: 41413 popHostContainer(interruptedWork); 41414 break; 41415 41416 case SuspenseComponent: 41417 popSuspenseContext(interruptedWork); 41418 break; 41419 41420 case SuspenseListComponent: 41421 popSuspenseContext(interruptedWork); 41422 break; 41423 41424 case ContextProvider: 41425 popProvider(interruptedWork); 41426 break; 41427 } 41428} 41429 41430function createCapturedValue(value, source) { 41431 // If the value is an error, call this function immediately after it is thrown 41432 // so the stack is accurate. 41433 return { 41434 value: value, 41435 source: source, 41436 stack: getStackByFiberInDevAndProd(source) 41437 }; 41438} 41439 41440function logCapturedError(capturedError) { 41441 41442 var error = capturedError.error; 41443 41444 { 41445 var componentName = capturedError.componentName, 41446 componentStack = capturedError.componentStack, 41447 errorBoundaryName = capturedError.errorBoundaryName, 41448 errorBoundaryFound = capturedError.errorBoundaryFound, 41449 willRetry = capturedError.willRetry; // Browsers support silencing uncaught errors by calling 41450 // `preventDefault()` in window `error` handler. 41451 // We record this information as an expando on the error. 41452 41453 if (error != null && error._suppressLogging) { 41454 if (errorBoundaryFound && willRetry) { 41455 // The error is recoverable and was silenced. 41456 // Ignore it and don't print the stack addendum. 41457 // This is handy for testing error boundaries without noise. 41458 return; 41459 } // The error is fatal. Since the silencing might have 41460 // been accidental, we'll surface it anyway. 41461 // However, the browser would have silenced the original error 41462 // so we'll print it first, and then print the stack addendum. 41463 41464 41465 console['error'](error); // Don't transform to our wrapper 41466 // For a more detailed description of this block, see: 41467 // https://github.com/facebook/react/pull/13384 41468 } 41469 41470 var componentNameMessage = componentName ? "The above error occurred in the <" + componentName + "> component:" : 'The above error occurred in one of your React components:'; 41471 var errorBoundaryMessage; // errorBoundaryFound check is sufficient; errorBoundaryName check is to satisfy Flow. 41472 41473 if (errorBoundaryFound && errorBoundaryName) { 41474 if (willRetry) { 41475 errorBoundaryMessage = "React will try to recreate this component tree from scratch " + ("using the error boundary you provided, " + errorBoundaryName + "."); 41476 } else { 41477 errorBoundaryMessage = "This error was initially handled by the error boundary " + errorBoundaryName + ".\n" + "Recreating the tree from scratch failed so React will unmount the tree."; 41478 } 41479 } else { 41480 errorBoundaryMessage = 'Consider adding an error boundary to your tree to customize error handling behavior.\n' + 'Visit https://fb.me/react-error-boundaries to learn more about error boundaries.'; 41481 } 41482 41483 var combinedMessage = "" + componentNameMessage + componentStack + "\n\n" + ("" + errorBoundaryMessage); // In development, we provide our own message with just the component stack. 41484 // We don't include the original error message and JS stack because the browser 41485 // has already printed it. Even if the application swallows the error, it is still 41486 // displayed by the browser thanks to the DEV-only fake event trick in ReactErrorUtils. 41487 41488 console['error'](combinedMessage); // Don't transform to our wrapper 41489 } 41490} 41491 41492var didWarnAboutUndefinedSnapshotBeforeUpdate = null; 41493 41494{ 41495 didWarnAboutUndefinedSnapshotBeforeUpdate = new Set(); 41496} 41497 41498var PossiblyWeakSet = typeof WeakSet === 'function' ? WeakSet : Set; 41499function logError(boundary, errorInfo) { 41500 var source = errorInfo.source; 41501 var stack = errorInfo.stack; 41502 41503 if (stack === null && source !== null) { 41504 stack = getStackByFiberInDevAndProd(source); 41505 } 41506 41507 var capturedError = { 41508 componentName: source !== null ? getComponentName(source.type) : null, 41509 componentStack: stack !== null ? stack : '', 41510 error: errorInfo.value, 41511 errorBoundary: null, 41512 errorBoundaryName: null, 41513 errorBoundaryFound: false, 41514 willRetry: false 41515 }; 41516 41517 if (boundary !== null && boundary.tag === ClassComponent) { 41518 capturedError.errorBoundary = boundary.stateNode; 41519 capturedError.errorBoundaryName = getComponentName(boundary.type); 41520 capturedError.errorBoundaryFound = true; 41521 capturedError.willRetry = true; 41522 } 41523 41524 try { 41525 logCapturedError(capturedError); 41526 } catch (e) { 41527 // This method must not throw, or React internal state will get messed up. 41528 // If console.error is overridden, or logCapturedError() shows a dialog that throws, 41529 // we want to report this error outside of the normal stack as a last resort. 41530 // https://github.com/facebook/react/issues/13188 41531 setTimeout(function () { 41532 throw e; 41533 }); 41534 } 41535} 41536 41537var callComponentWillUnmountWithTimer = function (current, instance) { 41538 startPhaseTimer(current, 'componentWillUnmount'); 41539 instance.props = current.memoizedProps; 41540 instance.state = current.memoizedState; 41541 instance.componentWillUnmount(); 41542 stopPhaseTimer(); 41543}; // Capture errors so they don't interrupt unmounting. 41544 41545 41546function safelyCallComponentWillUnmount(current, instance) { 41547 { 41548 invokeGuardedCallback(null, callComponentWillUnmountWithTimer, null, current, instance); 41549 41550 if (hasCaughtError()) { 41551 var unmountError = clearCaughtError(); 41552 captureCommitPhaseError(current, unmountError); 41553 } 41554 } 41555} 41556 41557function safelyDetachRef(current) { 41558 var ref = current.ref; 41559 41560 if (ref !== null) { 41561 if (typeof ref === 'function') { 41562 { 41563 invokeGuardedCallback(null, ref, null, null); 41564 41565 if (hasCaughtError()) { 41566 var refError = clearCaughtError(); 41567 captureCommitPhaseError(current, refError); 41568 } 41569 } 41570 } else { 41571 ref.current = null; 41572 } 41573 } 41574} 41575 41576function safelyCallDestroy(current, destroy) { 41577 { 41578 invokeGuardedCallback(null, destroy, null); 41579 41580 if (hasCaughtError()) { 41581 var error = clearCaughtError(); 41582 captureCommitPhaseError(current, error); 41583 } 41584 } 41585} 41586 41587function commitBeforeMutationLifeCycles(current, finishedWork) { 41588 switch (finishedWork.tag) { 41589 case FunctionComponent: 41590 case ForwardRef: 41591 case SimpleMemoComponent: 41592 case Block: 41593 { 41594 return; 41595 } 41596 41597 case ClassComponent: 41598 { 41599 if (finishedWork.effectTag & Snapshot) { 41600 if (current !== null) { 41601 var prevProps = current.memoizedProps; 41602 var prevState = current.memoizedState; 41603 startPhaseTimer(finishedWork, 'getSnapshotBeforeUpdate'); 41604 var instance = finishedWork.stateNode; // We could update instance props and state here, 41605 // but instead we rely on them being set during last render. 41606 // TODO: revisit this when we implement resuming. 41607 41608 { 41609 if (finishedWork.type === finishedWork.elementType && !didWarnAboutReassigningProps) { 41610 if (instance.props !== finishedWork.memoizedProps) { 41611 error('Expected %s props to match memoized props before ' + 'getSnapshotBeforeUpdate. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.props`. ' + 'Please file an issue.', getComponentName(finishedWork.type) || 'instance'); 41612 } 41613 41614 if (instance.state !== finishedWork.memoizedState) { 41615 error('Expected %s state to match memoized state before ' + 'getSnapshotBeforeUpdate. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.props`. ' + 'Please file an issue.', getComponentName(finishedWork.type) || 'instance'); 41616 } 41617 } 41618 } 41619 41620 var snapshot = instance.getSnapshotBeforeUpdate(finishedWork.elementType === finishedWork.type ? prevProps : resolveDefaultProps(finishedWork.type, prevProps), prevState); 41621 41622 { 41623 var didWarnSet = didWarnAboutUndefinedSnapshotBeforeUpdate; 41624 41625 if (snapshot === undefined && !didWarnSet.has(finishedWork.type)) { 41626 didWarnSet.add(finishedWork.type); 41627 41628 error('%s.getSnapshotBeforeUpdate(): A snapshot value (or null) ' + 'must be returned. You have returned undefined.', getComponentName(finishedWork.type)); 41629 } 41630 } 41631 41632 instance.__reactInternalSnapshotBeforeUpdate = snapshot; 41633 stopPhaseTimer(); 41634 } 41635 } 41636 41637 return; 41638 } 41639 41640 case HostRoot: 41641 case HostComponent: 41642 case HostText: 41643 case HostPortal: 41644 case IncompleteClassComponent: 41645 // Nothing to do for these component types 41646 return; 41647 } 41648 41649 { 41650 { 41651 throw Error( "This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue." ); 41652 } 41653 } 41654} 41655 41656function commitHookEffectListUnmount(tag, finishedWork) { 41657 var updateQueue = finishedWork.updateQueue; 41658 var lastEffect = updateQueue !== null ? updateQueue.lastEffect : null; 41659 41660 if (lastEffect !== null) { 41661 var firstEffect = lastEffect.next; 41662 var effect = firstEffect; 41663 41664 do { 41665 if ((effect.tag & tag) === tag) { 41666 // Unmount 41667 var destroy = effect.destroy; 41668 effect.destroy = undefined; 41669 41670 if (destroy !== undefined) { 41671 destroy(); 41672 } 41673 } 41674 41675 effect = effect.next; 41676 } while (effect !== firstEffect); 41677 } 41678} 41679 41680function commitHookEffectListMount(tag, finishedWork) { 41681 var updateQueue = finishedWork.updateQueue; 41682 var lastEffect = updateQueue !== null ? updateQueue.lastEffect : null; 41683 41684 if (lastEffect !== null) { 41685 var firstEffect = lastEffect.next; 41686 var effect = firstEffect; 41687 41688 do { 41689 if ((effect.tag & tag) === tag) { 41690 // Mount 41691 var create = effect.create; 41692 effect.destroy = create(); 41693 41694 { 41695 var destroy = effect.destroy; 41696 41697 if (destroy !== undefined && typeof destroy !== 'function') { 41698 var addendum = void 0; 41699 41700 if (destroy === null) { 41701 addendum = ' You returned null. If your effect does not require clean ' + 'up, return undefined (or nothing).'; 41702 } else if (typeof destroy.then === 'function') { 41703 addendum = '\n\nIt looks like you wrote useEffect(async () => ...) or returned a Promise. ' + 'Instead, write the async function inside your effect ' + 'and call it immediately:\n\n' + 'useEffect(() => {\n' + ' async function fetchData() {\n' + ' // You can await here\n' + ' const response = await MyAPI.getData(someId);\n' + ' // ...\n' + ' }\n' + ' fetchData();\n' + "}, [someId]); // Or [] if effect doesn't need props or state\n\n" + 'Learn more about data fetching with Hooks: https://fb.me/react-hooks-data-fetching'; 41704 } else { 41705 addendum = ' You returned: ' + destroy; 41706 } 41707 41708 error('An effect function must not return anything besides a function, ' + 'which is used for clean-up.%s%s', addendum, getStackByFiberInDevAndProd(finishedWork)); 41709 } 41710 } 41711 } 41712 41713 effect = effect.next; 41714 } while (effect !== firstEffect); 41715 } 41716} 41717 41718function commitPassiveHookEffects(finishedWork) { 41719 if ((finishedWork.effectTag & Passive) !== NoEffect) { 41720 switch (finishedWork.tag) { 41721 case FunctionComponent: 41722 case ForwardRef: 41723 case SimpleMemoComponent: 41724 case Block: 41725 { 41726 // TODO (#17945) We should call all passive destroy functions (for all fibers) 41727 // before calling any create functions. The current approach only serializes 41728 // these for a single fiber. 41729 commitHookEffectListUnmount(Passive$1 | HasEffect, finishedWork); 41730 commitHookEffectListMount(Passive$1 | HasEffect, finishedWork); 41731 break; 41732 } 41733 } 41734 } 41735} 41736 41737function commitLifeCycles(finishedRoot, current, finishedWork, committedExpirationTime) { 41738 switch (finishedWork.tag) { 41739 case FunctionComponent: 41740 case ForwardRef: 41741 case SimpleMemoComponent: 41742 case Block: 41743 { 41744 // At this point layout effects have already been destroyed (during mutation phase). 41745 // This is done to prevent sibling component effects from interfering with each other, 41746 // e.g. a destroy function in one component should never override a ref set 41747 // by a create function in another component during the same commit. 41748 commitHookEffectListMount(Layout | HasEffect, finishedWork); 41749 41750 return; 41751 } 41752 41753 case ClassComponent: 41754 { 41755 var instance = finishedWork.stateNode; 41756 41757 if (finishedWork.effectTag & Update) { 41758 if (current === null) { 41759 startPhaseTimer(finishedWork, 'componentDidMount'); // We could update instance props and state here, 41760 // but instead we rely on them being set during last render. 41761 // TODO: revisit this when we implement resuming. 41762 41763 { 41764 if (finishedWork.type === finishedWork.elementType && !didWarnAboutReassigningProps) { 41765 if (instance.props !== finishedWork.memoizedProps) { 41766 error('Expected %s props to match memoized props before ' + 'componentDidMount. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.props`. ' + 'Please file an issue.', getComponentName(finishedWork.type) || 'instance'); 41767 } 41768 41769 if (instance.state !== finishedWork.memoizedState) { 41770 error('Expected %s state to match memoized state before ' + 'componentDidMount. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.props`. ' + 'Please file an issue.', getComponentName(finishedWork.type) || 'instance'); 41771 } 41772 } 41773 } 41774 41775 instance.componentDidMount(); 41776 stopPhaseTimer(); 41777 } else { 41778 var prevProps = finishedWork.elementType === finishedWork.type ? current.memoizedProps : resolveDefaultProps(finishedWork.type, current.memoizedProps); 41779 var prevState = current.memoizedState; 41780 startPhaseTimer(finishedWork, 'componentDidUpdate'); // We could update instance props and state here, 41781 // but instead we rely on them being set during last render. 41782 // TODO: revisit this when we implement resuming. 41783 41784 { 41785 if (finishedWork.type === finishedWork.elementType && !didWarnAboutReassigningProps) { 41786 if (instance.props !== finishedWork.memoizedProps) { 41787 error('Expected %s props to match memoized props before ' + 'componentDidUpdate. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.props`. ' + 'Please file an issue.', getComponentName(finishedWork.type) || 'instance'); 41788 } 41789 41790 if (instance.state !== finishedWork.memoizedState) { 41791 error('Expected %s state to match memoized state before ' + 'componentDidUpdate. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.props`. ' + 'Please file an issue.', getComponentName(finishedWork.type) || 'instance'); 41792 } 41793 } 41794 } 41795 41796 instance.componentDidUpdate(prevProps, prevState, instance.__reactInternalSnapshotBeforeUpdate); 41797 stopPhaseTimer(); 41798 } 41799 } 41800 41801 var updateQueue = finishedWork.updateQueue; 41802 41803 if (updateQueue !== null) { 41804 { 41805 if (finishedWork.type === finishedWork.elementType && !didWarnAboutReassigningProps) { 41806 if (instance.props !== finishedWork.memoizedProps) { 41807 error('Expected %s props to match memoized props before ' + 'processing the update queue. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.props`. ' + 'Please file an issue.', getComponentName(finishedWork.type) || 'instance'); 41808 } 41809 41810 if (instance.state !== finishedWork.memoizedState) { 41811 error('Expected %s state to match memoized state before ' + 'processing the update queue. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.props`. ' + 'Please file an issue.', getComponentName(finishedWork.type) || 'instance'); 41812 } 41813 } 41814 } // We could update instance props and state here, 41815 // but instead we rely on them being set during last render. 41816 // TODO: revisit this when we implement resuming. 41817 41818 41819 commitUpdateQueue(finishedWork, updateQueue, instance); 41820 } 41821 41822 return; 41823 } 41824 41825 case HostRoot: 41826 { 41827 var _updateQueue = finishedWork.updateQueue; 41828 41829 if (_updateQueue !== null) { 41830 var _instance = null; 41831 41832 if (finishedWork.child !== null) { 41833 switch (finishedWork.child.tag) { 41834 case HostComponent: 41835 _instance = getPublicInstance(finishedWork.child.stateNode); 41836 break; 41837 41838 case ClassComponent: 41839 _instance = finishedWork.child.stateNode; 41840 break; 41841 } 41842 } 41843 41844 commitUpdateQueue(finishedWork, _updateQueue, _instance); 41845 } 41846 41847 return; 41848 } 41849 41850 case HostComponent: 41851 { 41852 var _instance2 = finishedWork.stateNode; // Renderers may schedule work to be done after host components are mounted 41853 // (eg DOM renderer may schedule auto-focus for inputs and form controls). 41854 // These effects should only be committed when components are first mounted, 41855 // aka when there is no current/alternate. 41856 41857 if (current === null && finishedWork.effectTag & Update) { 41858 var type = finishedWork.type; 41859 var props = finishedWork.memoizedProps; 41860 commitMount(_instance2, type, props); 41861 } 41862 41863 return; 41864 } 41865 41866 case HostText: 41867 { 41868 // We have no life-cycles associated with text. 41869 return; 41870 } 41871 41872 case HostPortal: 41873 { 41874 // We have no life-cycles associated with portals. 41875 return; 41876 } 41877 41878 case Profiler: 41879 { 41880 { 41881 var onRender = finishedWork.memoizedProps.onRender; 41882 41883 if (typeof onRender === 'function') { 41884 { 41885 onRender(finishedWork.memoizedProps.id, current === null ? 'mount' : 'update', finishedWork.actualDuration, finishedWork.treeBaseDuration, finishedWork.actualStartTime, getCommitTime(), finishedRoot.memoizedInteractions); 41886 } 41887 } 41888 } 41889 41890 return; 41891 } 41892 41893 case SuspenseComponent: 41894 { 41895 commitSuspenseHydrationCallbacks(finishedRoot, finishedWork); 41896 return; 41897 } 41898 41899 case SuspenseListComponent: 41900 case IncompleteClassComponent: 41901 case FundamentalComponent: 41902 case ScopeComponent: 41903 return; 41904 } 41905 41906 { 41907 { 41908 throw Error( "This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue." ); 41909 } 41910 } 41911} 41912 41913function hideOrUnhideAllChildren(finishedWork, isHidden) { 41914 { 41915 // We only have the top Fiber that was inserted but we need to recurse down its 41916 // children to find all the terminal nodes. 41917 var node = finishedWork; 41918 41919 while (true) { 41920 if (node.tag === HostComponent) { 41921 var instance = node.stateNode; 41922 41923 if (isHidden) { 41924 hideInstance(instance); 41925 } else { 41926 unhideInstance(node.stateNode, node.memoizedProps); 41927 } 41928 } else if (node.tag === HostText) { 41929 var _instance3 = node.stateNode; 41930 41931 if (isHidden) { 41932 hideTextInstance(_instance3); 41933 } else { 41934 unhideTextInstance(_instance3, node.memoizedProps); 41935 } 41936 } else if (node.tag === SuspenseComponent && node.memoizedState !== null && node.memoizedState.dehydrated === null) { 41937 // Found a nested Suspense component that timed out. Skip over the 41938 // primary child fragment, which should remain hidden. 41939 var fallbackChildFragment = node.child.sibling; 41940 fallbackChildFragment.return = node; 41941 node = fallbackChildFragment; 41942 continue; 41943 } else if (node.child !== null) { 41944 node.child.return = node; 41945 node = node.child; 41946 continue; 41947 } 41948 41949 if (node === finishedWork) { 41950 return; 41951 } 41952 41953 while (node.sibling === null) { 41954 if (node.return === null || node.return === finishedWork) { 41955 return; 41956 } 41957 41958 node = node.return; 41959 } 41960 41961 node.sibling.return = node.return; 41962 node = node.sibling; 41963 } 41964 } 41965} 41966 41967function commitAttachRef(finishedWork) { 41968 var ref = finishedWork.ref; 41969 41970 if (ref !== null) { 41971 var instance = finishedWork.stateNode; 41972 var instanceToUse; 41973 41974 switch (finishedWork.tag) { 41975 case HostComponent: 41976 instanceToUse = getPublicInstance(instance); 41977 break; 41978 41979 default: 41980 instanceToUse = instance; 41981 } // Moved outside to ensure DCE works with this flag 41982 41983 if (typeof ref === 'function') { 41984 ref(instanceToUse); 41985 } else { 41986 { 41987 if (!ref.hasOwnProperty('current')) { 41988 error('Unexpected ref object provided for %s. ' + 'Use either a ref-setter function or React.createRef().%s', getComponentName(finishedWork.type), getStackByFiberInDevAndProd(finishedWork)); 41989 } 41990 } 41991 41992 ref.current = instanceToUse; 41993 } 41994 } 41995} 41996 41997function commitDetachRef(current) { 41998 var currentRef = current.ref; 41999 42000 if (currentRef !== null) { 42001 if (typeof currentRef === 'function') { 42002 currentRef(null); 42003 } else { 42004 currentRef.current = null; 42005 } 42006 } 42007} // User-originating errors (lifecycles and refs) should not interrupt 42008// deletion, so don't let them throw. Host-originating errors should 42009// interrupt deletion, so it's okay 42010 42011 42012function commitUnmount(finishedRoot, current, renderPriorityLevel) { 42013 onCommitUnmount(current); 42014 42015 switch (current.tag) { 42016 case FunctionComponent: 42017 case ForwardRef: 42018 case MemoComponent: 42019 case SimpleMemoComponent: 42020 case Block: 42021 { 42022 var updateQueue = current.updateQueue; 42023 42024 if (updateQueue !== null) { 42025 var lastEffect = updateQueue.lastEffect; 42026 42027 if (lastEffect !== null) { 42028 var firstEffect = lastEffect.next; 42029 42030 { 42031 // When the owner fiber is deleted, the destroy function of a passive 42032 // effect hook is called during the synchronous commit phase. This is 42033 // a concession to implementation complexity. Calling it in the 42034 // passive effect phase (like they usually are, when dependencies 42035 // change during an update) would require either traversing the 42036 // children of the deleted fiber again, or including unmount effects 42037 // as part of the fiber effect list. 42038 // 42039 // Because this is during the sync commit phase, we need to change 42040 // the priority. 42041 // 42042 // TODO: Reconsider this implementation trade off. 42043 var priorityLevel = renderPriorityLevel > NormalPriority ? NormalPriority : renderPriorityLevel; 42044 runWithPriority$1(priorityLevel, function () { 42045 var effect = firstEffect; 42046 42047 do { 42048 var _destroy = effect.destroy; 42049 42050 if (_destroy !== undefined) { 42051 safelyCallDestroy(current, _destroy); 42052 } 42053 42054 effect = effect.next; 42055 } while (effect !== firstEffect); 42056 }); 42057 } 42058 } 42059 } 42060 42061 return; 42062 } 42063 42064 case ClassComponent: 42065 { 42066 safelyDetachRef(current); 42067 var instance = current.stateNode; 42068 42069 if (typeof instance.componentWillUnmount === 'function') { 42070 safelyCallComponentWillUnmount(current, instance); 42071 } 42072 42073 return; 42074 } 42075 42076 case HostComponent: 42077 { 42078 42079 safelyDetachRef(current); 42080 return; 42081 } 42082 42083 case HostPortal: 42084 { 42085 // TODO: this is recursive. 42086 // We are also not using this parent because 42087 // the portal will get pushed immediately. 42088 { 42089 unmountHostComponents(finishedRoot, current, renderPriorityLevel); 42090 } 42091 42092 return; 42093 } 42094 42095 case FundamentalComponent: 42096 { 42097 42098 return; 42099 } 42100 42101 case DehydratedFragment: 42102 { 42103 42104 return; 42105 } 42106 42107 case ScopeComponent: 42108 { 42109 42110 return; 42111 } 42112 } 42113} 42114 42115function commitNestedUnmounts(finishedRoot, root, renderPriorityLevel) { 42116 // While we're inside a removed host node we don't want to call 42117 // removeChild on the inner nodes because they're removed by the top 42118 // call anyway. We also want to call componentWillUnmount on all 42119 // composites before this host node is removed from the tree. Therefore 42120 // we do an inner loop while we're still inside the host node. 42121 var node = root; 42122 42123 while (true) { 42124 commitUnmount(finishedRoot, node, renderPriorityLevel); // Visit children because they may contain more composite or host nodes. 42125 // Skip portals because commitUnmount() currently visits them recursively. 42126 42127 if (node.child !== null && ( // If we use mutation we drill down into portals using commitUnmount above. 42128 // If we don't use mutation we drill down into portals here instead. 42129 node.tag !== HostPortal)) { 42130 node.child.return = node; 42131 node = node.child; 42132 continue; 42133 } 42134 42135 if (node === root) { 42136 return; 42137 } 42138 42139 while (node.sibling === null) { 42140 if (node.return === null || node.return === root) { 42141 return; 42142 } 42143 42144 node = node.return; 42145 } 42146 42147 node.sibling.return = node.return; 42148 node = node.sibling; 42149 } 42150} 42151 42152function detachFiber(current) { 42153 var alternate = current.alternate; // Cut off the return pointers to disconnect it from the tree. Ideally, we 42154 // should clear the child pointer of the parent alternate to let this 42155 // get GC:ed but we don't know which for sure which parent is the current 42156 // one so we'll settle for GC:ing the subtree of this child. This child 42157 // itself will be GC:ed when the parent updates the next time. 42158 42159 current.return = null; 42160 current.child = null; 42161 current.memoizedState = null; 42162 current.updateQueue = null; 42163 current.dependencies = null; 42164 current.alternate = null; 42165 current.firstEffect = null; 42166 current.lastEffect = null; 42167 current.pendingProps = null; 42168 current.memoizedProps = null; 42169 current.stateNode = null; 42170 42171 if (alternate !== null) { 42172 detachFiber(alternate); 42173 } 42174} 42175 42176function getHostParentFiber(fiber) { 42177 var parent = fiber.return; 42178 42179 while (parent !== null) { 42180 if (isHostParent(parent)) { 42181 return parent; 42182 } 42183 42184 parent = parent.return; 42185 } 42186 42187 { 42188 { 42189 throw Error( "Expected to find a host parent. This error is likely caused by a bug in React. Please file an issue." ); 42190 } 42191 } 42192} 42193 42194function isHostParent(fiber) { 42195 return fiber.tag === HostComponent || fiber.tag === HostRoot || fiber.tag === HostPortal; 42196} 42197 42198function getHostSibling(fiber) { 42199 // We're going to search forward into the tree until we find a sibling host 42200 // node. Unfortunately, if multiple insertions are done in a row we have to 42201 // search past them. This leads to exponential search for the next sibling. 42202 // TODO: Find a more efficient way to do this. 42203 var node = fiber; 42204 42205 siblings: while (true) { 42206 // If we didn't find anything, let's try the next sibling. 42207 while (node.sibling === null) { 42208 if (node.return === null || isHostParent(node.return)) { 42209 // If we pop out of the root or hit the parent the fiber we are the 42210 // last sibling. 42211 return null; 42212 } 42213 42214 node = node.return; 42215 } 42216 42217 node.sibling.return = node.return; 42218 node = node.sibling; 42219 42220 while (node.tag !== HostComponent && node.tag !== HostText && node.tag !== DehydratedFragment) { 42221 // If it is not host node and, we might have a host node inside it. 42222 // Try to search down until we find one. 42223 if (node.effectTag & Placement) { 42224 // If we don't have a child, try the siblings instead. 42225 continue siblings; 42226 } // If we don't have a child, try the siblings instead. 42227 // We also skip portals because they are not part of this host tree. 42228 42229 42230 if (node.child === null || node.tag === HostPortal) { 42231 continue siblings; 42232 } else { 42233 node.child.return = node; 42234 node = node.child; 42235 } 42236 } // Check if this host node is stable or about to be placed. 42237 42238 42239 if (!(node.effectTag & Placement)) { 42240 // Found it! 42241 return node.stateNode; 42242 } 42243 } 42244} 42245 42246function commitPlacement(finishedWork) { 42247 42248 42249 var parentFiber = getHostParentFiber(finishedWork); // Note: these two variables *must* always be updated together. 42250 42251 var parent; 42252 var isContainer; 42253 var parentStateNode = parentFiber.stateNode; 42254 42255 switch (parentFiber.tag) { 42256 case HostComponent: 42257 parent = parentStateNode; 42258 isContainer = false; 42259 break; 42260 42261 case HostRoot: 42262 parent = parentStateNode.containerInfo; 42263 isContainer = true; 42264 break; 42265 42266 case HostPortal: 42267 parent = parentStateNode.containerInfo; 42268 isContainer = true; 42269 break; 42270 42271 case FundamentalComponent: 42272 42273 // eslint-disable-next-line-no-fallthrough 42274 42275 default: 42276 { 42277 { 42278 throw Error( "Invalid host parent fiber. This error is likely caused by a bug in React. Please file an issue." ); 42279 } 42280 } 42281 42282 } 42283 42284 if (parentFiber.effectTag & ContentReset) { 42285 // Reset the text content of the parent before doing any insertions 42286 resetTextContent(parent); // Clear ContentReset from the effect tag 42287 42288 parentFiber.effectTag &= ~ContentReset; 42289 } 42290 42291 var before = getHostSibling(finishedWork); // We only have the top Fiber that was inserted but we need to recurse down its 42292 // children to find all the terminal nodes. 42293 42294 if (isContainer) { 42295 insertOrAppendPlacementNodeIntoContainer(finishedWork, before, parent); 42296 } else { 42297 insertOrAppendPlacementNode(finishedWork, before, parent); 42298 } 42299} 42300 42301function insertOrAppendPlacementNodeIntoContainer(node, before, parent) { 42302 var tag = node.tag; 42303 var isHost = tag === HostComponent || tag === HostText; 42304 42305 if (isHost || enableFundamentalAPI ) { 42306 var stateNode = isHost ? node.stateNode : node.stateNode.instance; 42307 42308 if (before) { 42309 insertInContainerBefore(parent, stateNode, before); 42310 } else { 42311 appendChildToContainer(parent, stateNode); 42312 } 42313 } else if (tag === HostPortal) ; else { 42314 var child = node.child; 42315 42316 if (child !== null) { 42317 insertOrAppendPlacementNodeIntoContainer(child, before, parent); 42318 var sibling = child.sibling; 42319 42320 while (sibling !== null) { 42321 insertOrAppendPlacementNodeIntoContainer(sibling, before, parent); 42322 sibling = sibling.sibling; 42323 } 42324 } 42325 } 42326} 42327 42328function insertOrAppendPlacementNode(node, before, parent) { 42329 var tag = node.tag; 42330 var isHost = tag === HostComponent || tag === HostText; 42331 42332 if (isHost || enableFundamentalAPI ) { 42333 var stateNode = isHost ? node.stateNode : node.stateNode.instance; 42334 42335 if (before) { 42336 insertBefore(parent, stateNode, before); 42337 } else { 42338 appendChild(parent, stateNode); 42339 } 42340 } else if (tag === HostPortal) ; else { 42341 var child = node.child; 42342 42343 if (child !== null) { 42344 insertOrAppendPlacementNode(child, before, parent); 42345 var sibling = child.sibling; 42346 42347 while (sibling !== null) { 42348 insertOrAppendPlacementNode(sibling, before, parent); 42349 sibling = sibling.sibling; 42350 } 42351 } 42352 } 42353} 42354 42355function unmountHostComponents(finishedRoot, current, renderPriorityLevel) { 42356 // We only have the top Fiber that was deleted but we need to recurse down its 42357 // children to find all the terminal nodes. 42358 var node = current; // Each iteration, currentParent is populated with node's host parent if not 42359 // currentParentIsValid. 42360 42361 var currentParentIsValid = false; // Note: these two variables *must* always be updated together. 42362 42363 var currentParent; 42364 var currentParentIsContainer; 42365 42366 while (true) { 42367 if (!currentParentIsValid) { 42368 var parent = node.return; 42369 42370 findParent: while (true) { 42371 if (!(parent !== null)) { 42372 { 42373 throw Error( "Expected to find a host parent. This error is likely caused by a bug in React. Please file an issue." ); 42374 } 42375 } 42376 42377 var parentStateNode = parent.stateNode; 42378 42379 switch (parent.tag) { 42380 case HostComponent: 42381 currentParent = parentStateNode; 42382 currentParentIsContainer = false; 42383 break findParent; 42384 42385 case HostRoot: 42386 currentParent = parentStateNode.containerInfo; 42387 currentParentIsContainer = true; 42388 break findParent; 42389 42390 case HostPortal: 42391 currentParent = parentStateNode.containerInfo; 42392 currentParentIsContainer = true; 42393 break findParent; 42394 42395 } 42396 42397 parent = parent.return; 42398 } 42399 42400 currentParentIsValid = true; 42401 } 42402 42403 if (node.tag === HostComponent || node.tag === HostText) { 42404 commitNestedUnmounts(finishedRoot, node, renderPriorityLevel); // After all the children have unmounted, it is now safe to remove the 42405 // node from the tree. 42406 42407 if (currentParentIsContainer) { 42408 removeChildFromContainer(currentParent, node.stateNode); 42409 } else { 42410 removeChild(currentParent, node.stateNode); 42411 } // Don't visit children because we already visited them. 42412 42413 } else if (node.tag === HostPortal) { 42414 if (node.child !== null) { 42415 // When we go into a portal, it becomes the parent to remove from. 42416 // We will reassign it back when we pop the portal on the way up. 42417 currentParent = node.stateNode.containerInfo; 42418 currentParentIsContainer = true; // Visit children because portals might contain host components. 42419 42420 node.child.return = node; 42421 node = node.child; 42422 continue; 42423 } 42424 } else { 42425 commitUnmount(finishedRoot, node, renderPriorityLevel); // Visit children because we may find more host components below. 42426 42427 if (node.child !== null) { 42428 node.child.return = node; 42429 node = node.child; 42430 continue; 42431 } 42432 } 42433 42434 if (node === current) { 42435 return; 42436 } 42437 42438 while (node.sibling === null) { 42439 if (node.return === null || node.return === current) { 42440 return; 42441 } 42442 42443 node = node.return; 42444 42445 if (node.tag === HostPortal) { 42446 // When we go out of the portal, we need to restore the parent. 42447 // Since we don't keep a stack of them, we will search for it. 42448 currentParentIsValid = false; 42449 } 42450 } 42451 42452 node.sibling.return = node.return; 42453 node = node.sibling; 42454 } 42455} 42456 42457function commitDeletion(finishedRoot, current, renderPriorityLevel) { 42458 { 42459 // Recursively delete all host nodes from the parent. 42460 // Detach refs and call componentWillUnmount() on the whole subtree. 42461 unmountHostComponents(finishedRoot, current, renderPriorityLevel); 42462 } 42463 42464 detachFiber(current); 42465} 42466 42467function commitWork(current, finishedWork) { 42468 42469 switch (finishedWork.tag) { 42470 case FunctionComponent: 42471 case ForwardRef: 42472 case MemoComponent: 42473 case SimpleMemoComponent: 42474 case Block: 42475 { 42476 // Layout effects are destroyed during the mutation phase so that all 42477 // destroy functions for all fibers are called before any create functions. 42478 // This prevents sibling component effects from interfering with each other, 42479 // e.g. a destroy function in one component should never override a ref set 42480 // by a create function in another component during the same commit. 42481 commitHookEffectListUnmount(Layout | HasEffect, finishedWork); 42482 return; 42483 } 42484 42485 case ClassComponent: 42486 { 42487 return; 42488 } 42489 42490 case HostComponent: 42491 { 42492 var instance = finishedWork.stateNode; 42493 42494 if (instance != null) { 42495 // Commit the work prepared earlier. 42496 var newProps = finishedWork.memoizedProps; // For hydration we reuse the update path but we treat the oldProps 42497 // as the newProps. The updatePayload will contain the real change in 42498 // this case. 42499 42500 var oldProps = current !== null ? current.memoizedProps : newProps; 42501 var type = finishedWork.type; // TODO: Type the updateQueue to be specific to host components. 42502 42503 var updatePayload = finishedWork.updateQueue; 42504 finishedWork.updateQueue = null; 42505 42506 if (updatePayload !== null) { 42507 commitUpdate(instance, updatePayload, type, oldProps, newProps); 42508 } 42509 } 42510 42511 return; 42512 } 42513 42514 case HostText: 42515 { 42516 if (!(finishedWork.stateNode !== null)) { 42517 { 42518 throw Error( "This should have a text node initialized. This error is likely caused by a bug in React. Please file an issue." ); 42519 } 42520 } 42521 42522 var textInstance = finishedWork.stateNode; 42523 var newText = finishedWork.memoizedProps; // For hydration we reuse the update path but we treat the oldProps 42524 // as the newProps. The updatePayload will contain the real change in 42525 // this case. 42526 42527 var oldText = current !== null ? current.memoizedProps : newText; 42528 commitTextUpdate(textInstance, oldText, newText); 42529 return; 42530 } 42531 42532 case HostRoot: 42533 { 42534 { 42535 var _root = finishedWork.stateNode; 42536 42537 if (_root.hydrate) { 42538 // We've just hydrated. No need to hydrate again. 42539 _root.hydrate = false; 42540 commitHydratedContainer(_root.containerInfo); 42541 } 42542 } 42543 42544 return; 42545 } 42546 42547 case Profiler: 42548 { 42549 return; 42550 } 42551 42552 case SuspenseComponent: 42553 { 42554 commitSuspenseComponent(finishedWork); 42555 attachSuspenseRetryListeners(finishedWork); 42556 return; 42557 } 42558 42559 case SuspenseListComponent: 42560 { 42561 attachSuspenseRetryListeners(finishedWork); 42562 return; 42563 } 42564 42565 case IncompleteClassComponent: 42566 { 42567 return; 42568 } 42569 } 42570 42571 { 42572 { 42573 throw Error( "This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue." ); 42574 } 42575 } 42576} 42577 42578function commitSuspenseComponent(finishedWork) { 42579 var newState = finishedWork.memoizedState; 42580 var newDidTimeout; 42581 var primaryChildParent = finishedWork; 42582 42583 if (newState === null) { 42584 newDidTimeout = false; 42585 } else { 42586 newDidTimeout = true; 42587 primaryChildParent = finishedWork.child; 42588 markCommitTimeOfFallback(); 42589 } 42590 42591 if ( primaryChildParent !== null) { 42592 hideOrUnhideAllChildren(primaryChildParent, newDidTimeout); 42593 } 42594} 42595 42596function commitSuspenseHydrationCallbacks(finishedRoot, finishedWork) { 42597 42598 var newState = finishedWork.memoizedState; 42599 42600 if (newState === null) { 42601 var current = finishedWork.alternate; 42602 42603 if (current !== null) { 42604 var prevState = current.memoizedState; 42605 42606 if (prevState !== null) { 42607 var suspenseInstance = prevState.dehydrated; 42608 42609 if (suspenseInstance !== null) { 42610 commitHydratedSuspenseInstance(suspenseInstance); 42611 } 42612 } 42613 } 42614 } 42615} 42616 42617function attachSuspenseRetryListeners(finishedWork) { 42618 // If this boundary just timed out, then it will have a set of thenables. 42619 // For each thenable, attach a listener so that when it resolves, React 42620 // attempts to re-render the boundary in the primary (pre-timeout) state. 42621 var thenables = finishedWork.updateQueue; 42622 42623 if (thenables !== null) { 42624 finishedWork.updateQueue = null; 42625 var retryCache = finishedWork.stateNode; 42626 42627 if (retryCache === null) { 42628 retryCache = finishedWork.stateNode = new PossiblyWeakSet(); 42629 } 42630 42631 thenables.forEach(function (thenable) { 42632 // Memoize using the boundary fiber to prevent redundant listeners. 42633 var retry = resolveRetryThenable.bind(null, finishedWork, thenable); 42634 42635 if (!retryCache.has(thenable)) { 42636 { 42637 if (thenable.__reactDoNotTraceInteractions !== true) { 42638 retry = tracing.unstable_wrap(retry); 42639 } 42640 } 42641 42642 retryCache.add(thenable); 42643 thenable.then(retry, retry); 42644 } 42645 }); 42646 } 42647} 42648 42649function commitResetTextContent(current) { 42650 42651 resetTextContent(current.stateNode); 42652} 42653 42654var PossiblyWeakMap$1 = typeof WeakMap === 'function' ? WeakMap : Map; 42655 42656function createRootErrorUpdate(fiber, errorInfo, expirationTime) { 42657 var update = createUpdate(expirationTime, null); // Unmount the root by rendering null. 42658 42659 update.tag = CaptureUpdate; // Caution: React DevTools currently depends on this property 42660 // being called "element". 42661 42662 update.payload = { 42663 element: null 42664 }; 42665 var error = errorInfo.value; 42666 42667 update.callback = function () { 42668 onUncaughtError(error); 42669 logError(fiber, errorInfo); 42670 }; 42671 42672 return update; 42673} 42674 42675function createClassErrorUpdate(fiber, errorInfo, expirationTime) { 42676 var update = createUpdate(expirationTime, null); 42677 update.tag = CaptureUpdate; 42678 var getDerivedStateFromError = fiber.type.getDerivedStateFromError; 42679 42680 if (typeof getDerivedStateFromError === 'function') { 42681 var error$1 = errorInfo.value; 42682 42683 update.payload = function () { 42684 logError(fiber, errorInfo); 42685 return getDerivedStateFromError(error$1); 42686 }; 42687 } 42688 42689 var inst = fiber.stateNode; 42690 42691 if (inst !== null && typeof inst.componentDidCatch === 'function') { 42692 update.callback = function callback() { 42693 { 42694 markFailedErrorBoundaryForHotReloading(fiber); 42695 } 42696 42697 if (typeof getDerivedStateFromError !== 'function') { 42698 // To preserve the preexisting retry behavior of error boundaries, 42699 // we keep track of which ones already failed during this batch. 42700 // This gets reset before we yield back to the browser. 42701 // TODO: Warn in strict mode if getDerivedStateFromError is 42702 // not defined. 42703 markLegacyErrorBoundaryAsFailed(this); // Only log here if componentDidCatch is the only error boundary method defined 42704 42705 logError(fiber, errorInfo); 42706 } 42707 42708 var error$1 = errorInfo.value; 42709 var stack = errorInfo.stack; 42710 this.componentDidCatch(error$1, { 42711 componentStack: stack !== null ? stack : '' 42712 }); 42713 42714 { 42715 if (typeof getDerivedStateFromError !== 'function') { 42716 // If componentDidCatch is the only error boundary method defined, 42717 // then it needs to call setState to recover from errors. 42718 // If no state update is scheduled then the boundary will swallow the error. 42719 if (fiber.expirationTime !== Sync) { 42720 error('%s: Error boundaries should implement getDerivedStateFromError(). ' + 'In that method, return a state update to display an error message or fallback UI.', getComponentName(fiber.type) || 'Unknown'); 42721 } 42722 } 42723 } 42724 }; 42725 } else { 42726 update.callback = function () { 42727 markFailedErrorBoundaryForHotReloading(fiber); 42728 }; 42729 } 42730 42731 return update; 42732} 42733 42734function attachPingListener(root, renderExpirationTime, thenable) { 42735 // Attach a listener to the promise to "ping" the root and retry. But 42736 // only if one does not already exist for the current render expiration 42737 // time (which acts like a "thread ID" here). 42738 var pingCache = root.pingCache; 42739 var threadIDs; 42740 42741 if (pingCache === null) { 42742 pingCache = root.pingCache = new PossiblyWeakMap$1(); 42743 threadIDs = new Set(); 42744 pingCache.set(thenable, threadIDs); 42745 } else { 42746 threadIDs = pingCache.get(thenable); 42747 42748 if (threadIDs === undefined) { 42749 threadIDs = new Set(); 42750 pingCache.set(thenable, threadIDs); 42751 } 42752 } 42753 42754 if (!threadIDs.has(renderExpirationTime)) { 42755 // Memoize using the thread ID to prevent redundant listeners. 42756 threadIDs.add(renderExpirationTime); 42757 var ping = pingSuspendedRoot.bind(null, root, thenable, renderExpirationTime); 42758 thenable.then(ping, ping); 42759 } 42760} 42761 42762function throwException(root, returnFiber, sourceFiber, value, renderExpirationTime) { 42763 // The source fiber did not complete. 42764 sourceFiber.effectTag |= Incomplete; // Its effect list is no longer valid. 42765 42766 sourceFiber.firstEffect = sourceFiber.lastEffect = null; 42767 42768 if (value !== null && typeof value === 'object' && typeof value.then === 'function') { 42769 // This is a thenable. 42770 var thenable = value; 42771 42772 if ((sourceFiber.mode & BlockingMode) === NoMode) { 42773 // Reset the memoizedState to what it was before we attempted 42774 // to render it. 42775 var currentSource = sourceFiber.alternate; 42776 42777 if (currentSource) { 42778 sourceFiber.updateQueue = currentSource.updateQueue; 42779 sourceFiber.memoizedState = currentSource.memoizedState; 42780 sourceFiber.expirationTime = currentSource.expirationTime; 42781 } else { 42782 sourceFiber.updateQueue = null; 42783 sourceFiber.memoizedState = null; 42784 } 42785 } 42786 42787 var hasInvisibleParentBoundary = hasSuspenseContext(suspenseStackCursor.current, InvisibleParentSuspenseContext); // Schedule the nearest Suspense to re-render the timed out view. 42788 42789 var _workInProgress = returnFiber; 42790 42791 do { 42792 if (_workInProgress.tag === SuspenseComponent && shouldCaptureSuspense(_workInProgress, hasInvisibleParentBoundary)) { 42793 // Found the nearest boundary. 42794 // Stash the promise on the boundary fiber. If the boundary times out, we'll 42795 // attach another listener to flip the boundary back to its normal state. 42796 var thenables = _workInProgress.updateQueue; 42797 42798 if (thenables === null) { 42799 var updateQueue = new Set(); 42800 updateQueue.add(thenable); 42801 _workInProgress.updateQueue = updateQueue; 42802 } else { 42803 thenables.add(thenable); 42804 } // If the boundary is outside of blocking mode, we should *not* 42805 // suspend the commit. Pretend as if the suspended component rendered 42806 // null and keep rendering. In the commit phase, we'll schedule a 42807 // subsequent synchronous update to re-render the Suspense. 42808 // 42809 // Note: It doesn't matter whether the component that suspended was 42810 // inside a blocking mode tree. If the Suspense is outside of it, we 42811 // should *not* suspend the commit. 42812 42813 42814 if ((_workInProgress.mode & BlockingMode) === NoMode) { 42815 _workInProgress.effectTag |= DidCapture; // We're going to commit this fiber even though it didn't complete. 42816 // But we shouldn't call any lifecycle methods or callbacks. Remove 42817 // all lifecycle effect tags. 42818 42819 sourceFiber.effectTag &= ~(LifecycleEffectMask | Incomplete); 42820 42821 if (sourceFiber.tag === ClassComponent) { 42822 var currentSourceFiber = sourceFiber.alternate; 42823 42824 if (currentSourceFiber === null) { 42825 // This is a new mount. Change the tag so it's not mistaken for a 42826 // completed class component. For example, we should not call 42827 // componentWillUnmount if it is deleted. 42828 sourceFiber.tag = IncompleteClassComponent; 42829 } else { 42830 // When we try rendering again, we should not reuse the current fiber, 42831 // since it's known to be in an inconsistent state. Use a force update to 42832 // prevent a bail out. 42833 var update = createUpdate(Sync, null); 42834 update.tag = ForceUpdate; 42835 enqueueUpdate(sourceFiber, update); 42836 } 42837 } // The source fiber did not complete. Mark it with Sync priority to 42838 // indicate that it still has pending work. 42839 42840 42841 sourceFiber.expirationTime = Sync; // Exit without suspending. 42842 42843 return; 42844 } // Confirmed that the boundary is in a concurrent mode tree. Continue 42845 // with the normal suspend path. 42846 // 42847 // After this we'll use a set of heuristics to determine whether this 42848 // render pass will run to completion or restart or "suspend" the commit. 42849 // The actual logic for this is spread out in different places. 42850 // 42851 // This first principle is that if we're going to suspend when we complete 42852 // a root, then we should also restart if we get an update or ping that 42853 // might unsuspend it, and vice versa. The only reason to suspend is 42854 // because you think you might want to restart before committing. However, 42855 // it doesn't make sense to restart only while in the period we're suspended. 42856 // 42857 // Restarting too aggressively is also not good because it starves out any 42858 // intermediate loading state. So we use heuristics to determine when. 42859 // Suspense Heuristics 42860 // 42861 // If nothing threw a Promise or all the same fallbacks are already showing, 42862 // then don't suspend/restart. 42863 // 42864 // If this is an initial render of a new tree of Suspense boundaries and 42865 // those trigger a fallback, then don't suspend/restart. We want to ensure 42866 // that we can show the initial loading state as quickly as possible. 42867 // 42868 // If we hit a "Delayed" case, such as when we'd switch from content back into 42869 // a fallback, then we should always suspend/restart. SuspenseConfig applies to 42870 // this case. If none is defined, JND is used instead. 42871 // 42872 // If we're already showing a fallback and it gets "retried", allowing us to show 42873 // another level, but there's still an inner boundary that would show a fallback, 42874 // then we suspend/restart for 500ms since the last time we showed a fallback 42875 // anywhere in the tree. This effectively throttles progressive loading into a 42876 // consistent train of commits. This also gives us an opportunity to restart to 42877 // get to the completed state slightly earlier. 42878 // 42879 // If there's ambiguity due to batching it's resolved in preference of: 42880 // 1) "delayed", 2) "initial render", 3) "retry". 42881 // 42882 // We want to ensure that a "busy" state doesn't get force committed. We want to 42883 // ensure that new initial loading states can commit as soon as possible. 42884 42885 42886 attachPingListener(root, renderExpirationTime, thenable); 42887 _workInProgress.effectTag |= ShouldCapture; 42888 _workInProgress.expirationTime = renderExpirationTime; 42889 return; 42890 } // This boundary already captured during this render. Continue to the next 42891 // boundary. 42892 42893 42894 _workInProgress = _workInProgress.return; 42895 } while (_workInProgress !== null); // No boundary was found. Fallthrough to error mode. 42896 // TODO: Use invariant so the message is stripped in prod? 42897 42898 42899 value = new Error((getComponentName(sourceFiber.type) || 'A React component') + ' suspended while rendering, but no fallback UI was specified.\n' + '\n' + 'Add a <Suspense fallback=...> component higher in the tree to ' + 'provide a loading indicator or placeholder to display.' + getStackByFiberInDevAndProd(sourceFiber)); 42900 } // We didn't find a boundary that could handle this type of exception. Start 42901 // over and traverse parent path again, this time treating the exception 42902 // as an error. 42903 42904 42905 renderDidError(); 42906 value = createCapturedValue(value, sourceFiber); 42907 var workInProgress = returnFiber; 42908 42909 do { 42910 switch (workInProgress.tag) { 42911 case HostRoot: 42912 { 42913 var _errorInfo = value; 42914 workInProgress.effectTag |= ShouldCapture; 42915 workInProgress.expirationTime = renderExpirationTime; 42916 42917 var _update = createRootErrorUpdate(workInProgress, _errorInfo, renderExpirationTime); 42918 42919 enqueueCapturedUpdate(workInProgress, _update); 42920 return; 42921 } 42922 42923 case ClassComponent: 42924 // Capture and retry 42925 var errorInfo = value; 42926 var ctor = workInProgress.type; 42927 var instance = workInProgress.stateNode; 42928 42929 if ((workInProgress.effectTag & DidCapture) === NoEffect && (typeof ctor.getDerivedStateFromError === 'function' || instance !== null && typeof instance.componentDidCatch === 'function' && !isAlreadyFailedLegacyErrorBoundary(instance))) { 42930 workInProgress.effectTag |= ShouldCapture; 42931 workInProgress.expirationTime = renderExpirationTime; // Schedule the error boundary to re-render using updated state 42932 42933 var _update2 = createClassErrorUpdate(workInProgress, errorInfo, renderExpirationTime); 42934 42935 enqueueCapturedUpdate(workInProgress, _update2); 42936 return; 42937 } 42938 42939 break; 42940 } 42941 42942 workInProgress = workInProgress.return; 42943 } while (workInProgress !== null); 42944} 42945 42946var ceil = Math.ceil; 42947var ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher, 42948 ReactCurrentOwner$2 = ReactSharedInternals.ReactCurrentOwner, 42949 IsSomeRendererActing = ReactSharedInternals.IsSomeRendererActing; 42950var NoContext = 42951/* */ 429520; 42953var BatchedContext = 42954/* */ 429551; 42956var EventContext = 42957/* */ 429582; 42959var DiscreteEventContext = 42960/* */ 429614; 42962var LegacyUnbatchedContext = 42963/* */ 429648; 42965var RenderContext = 42966/* */ 4296716; 42968var CommitContext = 42969/* */ 4297032; 42971var RootIncomplete = 0; 42972var RootFatalErrored = 1; 42973var RootErrored = 2; 42974var RootSuspended = 3; 42975var RootSuspendedWithDelay = 4; 42976var RootCompleted = 5; 42977// Describes where we are in the React execution stack 42978var executionContext = NoContext; // The root we're working on 42979 42980var workInProgressRoot = null; // The fiber we're working on 42981 42982var workInProgress = null; // The expiration time we're rendering 42983 42984var renderExpirationTime$1 = NoWork; // Whether to root completed, errored, suspended, etc. 42985 42986var workInProgressRootExitStatus = RootIncomplete; // A fatal error, if one is thrown 42987 42988var workInProgressRootFatalError = null; // Most recent event time among processed updates during this render. 42989// This is conceptually a time stamp but expressed in terms of an ExpirationTime 42990// because we deal mostly with expiration times in the hot path, so this avoids 42991// the conversion happening in the hot path. 42992 42993var workInProgressRootLatestProcessedExpirationTime = Sync; 42994var workInProgressRootLatestSuspenseTimeout = Sync; 42995var workInProgressRootCanSuspendUsingConfig = null; // The work left over by components that were visited during this render. Only 42996// includes unprocessed updates, not work in bailed out children. 42997 42998var workInProgressRootNextUnprocessedUpdateTime = NoWork; // If we're pinged while rendering we don't always restart immediately. 42999// This flag determines if it might be worthwhile to restart if an opportunity 43000// happens latere. 43001 43002var workInProgressRootHasPendingPing = false; // The most recent time we committed a fallback. This lets us ensure a train 43003// model where we don't commit new loading states in too quick succession. 43004 43005var globalMostRecentFallbackTime = 0; 43006var FALLBACK_THROTTLE_MS = 500; 43007var nextEffect = null; 43008var hasUncaughtError = false; 43009var firstUncaughtError = null; 43010var legacyErrorBoundariesThatAlreadyFailed = null; 43011var rootDoesHavePassiveEffects = false; 43012var rootWithPendingPassiveEffects = null; 43013var pendingPassiveEffectsRenderPriority = NoPriority; 43014var pendingPassiveEffectsExpirationTime = NoWork; 43015var rootsWithPendingDiscreteUpdates = null; // Use these to prevent an infinite loop of nested updates 43016 43017var NESTED_UPDATE_LIMIT = 50; 43018var nestedUpdateCount = 0; 43019var rootWithNestedUpdates = null; 43020var NESTED_PASSIVE_UPDATE_LIMIT = 50; 43021var nestedPassiveUpdateCount = 0; 43022var interruptedBy = null; // Marks the need to reschedule pending interactions at these expiration times 43023// during the commit phase. This enables them to be traced across components 43024// that spawn new work during render. E.g. hidden boundaries, suspended SSR 43025// hydration or SuspenseList. 43026 43027var spawnedWorkDuringRender = null; // Expiration times are computed by adding to the current time (the start 43028// time). However, if two updates are scheduled within the same event, we 43029// should treat their start times as simultaneous, even if the actual clock 43030// time has advanced between the first and second call. 43031// In other words, because expiration times determine how updates are batched, 43032// we want all updates of like priority that occur within the same event to 43033// receive the same expiration time. Otherwise we get tearing. 43034 43035var currentEventTime = NoWork; 43036function requestCurrentTimeForUpdate() { 43037 if ((executionContext & (RenderContext | CommitContext)) !== NoContext) { 43038 // We're inside React, so it's fine to read the actual time. 43039 return msToExpirationTime(now()); 43040 } // We're not inside React, so we may be in the middle of a browser event. 43041 43042 43043 if (currentEventTime !== NoWork) { 43044 // Use the same start time for all updates until we enter React again. 43045 return currentEventTime; 43046 } // This is the first update since React yielded. Compute a new start time. 43047 43048 43049 currentEventTime = msToExpirationTime(now()); 43050 return currentEventTime; 43051} 43052function getCurrentTime() { 43053 return msToExpirationTime(now()); 43054} 43055function computeExpirationForFiber(currentTime, fiber, suspenseConfig) { 43056 var mode = fiber.mode; 43057 43058 if ((mode & BlockingMode) === NoMode) { 43059 return Sync; 43060 } 43061 43062 var priorityLevel = getCurrentPriorityLevel(); 43063 43064 if ((mode & ConcurrentMode) === NoMode) { 43065 return priorityLevel === ImmediatePriority ? Sync : Batched; 43066 } 43067 43068 if ((executionContext & RenderContext) !== NoContext) { 43069 // Use whatever time we're already rendering 43070 // TODO: Should there be a way to opt out, like with `runWithPriority`? 43071 return renderExpirationTime$1; 43072 } 43073 43074 var expirationTime; 43075 43076 if (suspenseConfig !== null) { 43077 // Compute an expiration time based on the Suspense timeout. 43078 expirationTime = computeSuspenseExpiration(currentTime, suspenseConfig.timeoutMs | 0 || LOW_PRIORITY_EXPIRATION); 43079 } else { 43080 // Compute an expiration time based on the Scheduler priority. 43081 switch (priorityLevel) { 43082 case ImmediatePriority: 43083 expirationTime = Sync; 43084 break; 43085 43086 case UserBlockingPriority$1: 43087 // TODO: Rename this to computeUserBlockingExpiration 43088 expirationTime = computeInteractiveExpiration(currentTime); 43089 break; 43090 43091 case NormalPriority: 43092 case LowPriority: 43093 // TODO: Handle LowPriority 43094 // TODO: Rename this to... something better. 43095 expirationTime = computeAsyncExpiration(currentTime); 43096 break; 43097 43098 case IdlePriority: 43099 expirationTime = Idle; 43100 break; 43101 43102 default: 43103 { 43104 { 43105 throw Error( "Expected a valid priority level" ); 43106 } 43107 } 43108 43109 } 43110 } // If we're in the middle of rendering a tree, do not update at the same 43111 // expiration time that is already rendering. 43112 // TODO: We shouldn't have to do this if the update is on a different root. 43113 // Refactor computeExpirationForFiber + scheduleUpdate so we have access to 43114 // the root when we check for this condition. 43115 43116 43117 if (workInProgressRoot !== null && expirationTime === renderExpirationTime$1) { 43118 // This is a trick to move this update into a separate batch 43119 expirationTime -= 1; 43120 } 43121 43122 return expirationTime; 43123} 43124function scheduleUpdateOnFiber(fiber, expirationTime) { 43125 checkForNestedUpdates(); 43126 warnAboutRenderPhaseUpdatesInDEV(fiber); 43127 var root = markUpdateTimeFromFiberToRoot(fiber, expirationTime); 43128 43129 if (root === null) { 43130 warnAboutUpdateOnUnmountedFiberInDEV(fiber); 43131 return; 43132 } 43133 43134 checkForInterruption(fiber, expirationTime); 43135 recordScheduleUpdate(); // TODO: computeExpirationForFiber also reads the priority. Pass the 43136 // priority as an argument to that function and this one. 43137 43138 var priorityLevel = getCurrentPriorityLevel(); 43139 43140 if (expirationTime === Sync) { 43141 if ( // Check if we're inside unbatchedUpdates 43142 (executionContext & LegacyUnbatchedContext) !== NoContext && // Check if we're not already rendering 43143 (executionContext & (RenderContext | CommitContext)) === NoContext) { 43144 // Register pending interactions on the root to avoid losing traced interaction data. 43145 schedulePendingInteractions(root, expirationTime); // This is a legacy edge case. The initial mount of a ReactDOM.render-ed 43146 // root inside of batchedUpdates should be synchronous, but layout updates 43147 // should be deferred until the end of the batch. 43148 43149 performSyncWorkOnRoot(root); 43150 } else { 43151 ensureRootIsScheduled(root); 43152 schedulePendingInteractions(root, expirationTime); 43153 43154 if (executionContext === NoContext) { 43155 // Flush the synchronous work now, unless we're already working or inside 43156 // a batch. This is intentionally inside scheduleUpdateOnFiber instead of 43157 // scheduleCallbackForFiber to preserve the ability to schedule a callback 43158 // without immediately flushing it. We only do this for user-initiated 43159 // updates, to preserve historical behavior of legacy mode. 43160 flushSyncCallbackQueue(); 43161 } 43162 } 43163 } else { 43164 ensureRootIsScheduled(root); 43165 schedulePendingInteractions(root, expirationTime); 43166 } 43167 43168 if ((executionContext & DiscreteEventContext) !== NoContext && ( // Only updates at user-blocking priority or greater are considered 43169 // discrete, even inside a discrete event. 43170 priorityLevel === UserBlockingPriority$1 || priorityLevel === ImmediatePriority)) { 43171 // This is the result of a discrete event. Track the lowest priority 43172 // discrete update per root so we can flush them early, if needed. 43173 if (rootsWithPendingDiscreteUpdates === null) { 43174 rootsWithPendingDiscreteUpdates = new Map([[root, expirationTime]]); 43175 } else { 43176 var lastDiscreteTime = rootsWithPendingDiscreteUpdates.get(root); 43177 43178 if (lastDiscreteTime === undefined || lastDiscreteTime > expirationTime) { 43179 rootsWithPendingDiscreteUpdates.set(root, expirationTime); 43180 } 43181 } 43182 } 43183} 43184var scheduleWork = scheduleUpdateOnFiber; // This is split into a separate function so we can mark a fiber with pending 43185// work without treating it as a typical update that originates from an event; 43186// e.g. retrying a Suspense boundary isn't an update, but it does schedule work 43187// on a fiber. 43188 43189function markUpdateTimeFromFiberToRoot(fiber, expirationTime) { 43190 // Update the source fiber's expiration time 43191 if (fiber.expirationTime < expirationTime) { 43192 fiber.expirationTime = expirationTime; 43193 } 43194 43195 var alternate = fiber.alternate; 43196 43197 if (alternate !== null && alternate.expirationTime < expirationTime) { 43198 alternate.expirationTime = expirationTime; 43199 } // Walk the parent path to the root and update the child expiration time. 43200 43201 43202 var node = fiber.return; 43203 var root = null; 43204 43205 if (node === null && fiber.tag === HostRoot) { 43206 root = fiber.stateNode; 43207 } else { 43208 while (node !== null) { 43209 alternate = node.alternate; 43210 43211 if (node.childExpirationTime < expirationTime) { 43212 node.childExpirationTime = expirationTime; 43213 43214 if (alternate !== null && alternate.childExpirationTime < expirationTime) { 43215 alternate.childExpirationTime = expirationTime; 43216 } 43217 } else if (alternate !== null && alternate.childExpirationTime < expirationTime) { 43218 alternate.childExpirationTime = expirationTime; 43219 } 43220 43221 if (node.return === null && node.tag === HostRoot) { 43222 root = node.stateNode; 43223 break; 43224 } 43225 43226 node = node.return; 43227 } 43228 } 43229 43230 if (root !== null) { 43231 if (workInProgressRoot === root) { 43232 // Received an update to a tree that's in the middle of rendering. Mark 43233 // that's unprocessed work on this root. 43234 markUnprocessedUpdateTime(expirationTime); 43235 43236 if (workInProgressRootExitStatus === RootSuspendedWithDelay) { 43237 // The root already suspended with a delay, which means this render 43238 // definitely won't finish. Since we have a new update, let's mark it as 43239 // suspended now, right before marking the incoming update. This has the 43240 // effect of interrupting the current render and switching to the update. 43241 // TODO: This happens to work when receiving an update during the render 43242 // phase, because of the trick inside computeExpirationForFiber to 43243 // subtract 1 from `renderExpirationTime` to move it into a 43244 // separate bucket. But we should probably model it with an exception, 43245 // using the same mechanism we use to force hydration of a subtree. 43246 // TODO: This does not account for low pri updates that were already 43247 // scheduled before the root started rendering. Need to track the next 43248 // pending expiration time (perhaps by backtracking the return path) and 43249 // then trigger a restart in the `renderDidSuspendDelayIfPossible` path. 43250 markRootSuspendedAtTime(root, renderExpirationTime$1); 43251 } 43252 } // Mark that the root has a pending update. 43253 43254 43255 markRootUpdatedAtTime(root, expirationTime); 43256 } 43257 43258 return root; 43259} 43260 43261function getNextRootExpirationTimeToWorkOn(root) { 43262 // Determines the next expiration time that the root should render, taking 43263 // into account levels that may be suspended, or levels that may have 43264 // received a ping. 43265 var lastExpiredTime = root.lastExpiredTime; 43266 43267 if (lastExpiredTime !== NoWork) { 43268 return lastExpiredTime; 43269 } // "Pending" refers to any update that hasn't committed yet, including if it 43270 // suspended. The "suspended" range is therefore a subset. 43271 43272 43273 var firstPendingTime = root.firstPendingTime; 43274 43275 if (!isRootSuspendedAtTime(root, firstPendingTime)) { 43276 // The highest priority pending time is not suspended. Let's work on that. 43277 return firstPendingTime; 43278 } // If the first pending time is suspended, check if there's a lower priority 43279 // pending level that we know about. Or check if we received a ping. Work 43280 // on whichever is higher priority. 43281 43282 43283 var lastPingedTime = root.lastPingedTime; 43284 var nextKnownPendingLevel = root.nextKnownPendingLevel; 43285 var nextLevel = lastPingedTime > nextKnownPendingLevel ? lastPingedTime : nextKnownPendingLevel; 43286 43287 if ( nextLevel <= Idle && firstPendingTime !== nextLevel) { 43288 // Don't work on Idle/Never priority unless everything else is committed. 43289 return NoWork; 43290 } 43291 43292 return nextLevel; 43293} // Use this function to schedule a task for a root. There's only one task per 43294// root; if a task was already scheduled, we'll check to make sure the 43295// expiration time of the existing task is the same as the expiration time of 43296// the next level that the root has work on. This function is called on every 43297// update, and right before exiting a task. 43298 43299 43300function ensureRootIsScheduled(root) { 43301 var lastExpiredTime = root.lastExpiredTime; 43302 43303 if (lastExpiredTime !== NoWork) { 43304 // Special case: Expired work should flush synchronously. 43305 root.callbackExpirationTime = Sync; 43306 root.callbackPriority = ImmediatePriority; 43307 root.callbackNode = scheduleSyncCallback(performSyncWorkOnRoot.bind(null, root)); 43308 return; 43309 } 43310 43311 var expirationTime = getNextRootExpirationTimeToWorkOn(root); 43312 var existingCallbackNode = root.callbackNode; 43313 43314 if (expirationTime === NoWork) { 43315 // There's nothing to work on. 43316 if (existingCallbackNode !== null) { 43317 root.callbackNode = null; 43318 root.callbackExpirationTime = NoWork; 43319 root.callbackPriority = NoPriority; 43320 } 43321 43322 return; 43323 } // TODO: If this is an update, we already read the current time. Pass the 43324 // time as an argument. 43325 43326 43327 var currentTime = requestCurrentTimeForUpdate(); 43328 var priorityLevel = inferPriorityFromExpirationTime(currentTime, expirationTime); // If there's an existing render task, confirm it has the correct priority and 43329 // expiration time. Otherwise, we'll cancel it and schedule a new one. 43330 43331 if (existingCallbackNode !== null) { 43332 var existingCallbackPriority = root.callbackPriority; 43333 var existingCallbackExpirationTime = root.callbackExpirationTime; 43334 43335 if ( // Callback must have the exact same expiration time. 43336 existingCallbackExpirationTime === expirationTime && // Callback must have greater or equal priority. 43337 existingCallbackPriority >= priorityLevel) { 43338 // Existing callback is sufficient. 43339 return; 43340 } // Need to schedule a new task. 43341 // TODO: Instead of scheduling a new task, we should be able to change the 43342 // priority of the existing one. 43343 43344 43345 cancelCallback(existingCallbackNode); 43346 } 43347 43348 root.callbackExpirationTime = expirationTime; 43349 root.callbackPriority = priorityLevel; 43350 var callbackNode; 43351 43352 if (expirationTime === Sync) { 43353 // Sync React callbacks are scheduled on a special internal queue 43354 callbackNode = scheduleSyncCallback(performSyncWorkOnRoot.bind(null, root)); 43355 } else { 43356 callbackNode = scheduleCallback(priorityLevel, performConcurrentWorkOnRoot.bind(null, root), // Compute a task timeout based on the expiration time. This also affects 43357 // ordering because tasks are processed in timeout order. 43358 { 43359 timeout: expirationTimeToMs(expirationTime) - now() 43360 }); 43361 } 43362 43363 root.callbackNode = callbackNode; 43364} // This is the entry point for every concurrent task, i.e. anything that 43365// goes through Scheduler. 43366 43367 43368function performConcurrentWorkOnRoot(root, didTimeout) { 43369 // Since we know we're in a React event, we can clear the current 43370 // event time. The next update will compute a new event time. 43371 currentEventTime = NoWork; 43372 43373 if (didTimeout) { 43374 // The render task took too long to complete. Mark the current time as 43375 // expired to synchronously render all expired work in a single batch. 43376 var currentTime = requestCurrentTimeForUpdate(); 43377 markRootExpiredAtTime(root, currentTime); // This will schedule a synchronous callback. 43378 43379 ensureRootIsScheduled(root); 43380 return null; 43381 } // Determine the next expiration time to work on, using the fields stored 43382 // on the root. 43383 43384 43385 var expirationTime = getNextRootExpirationTimeToWorkOn(root); 43386 43387 if (expirationTime !== NoWork) { 43388 var originalCallbackNode = root.callbackNode; 43389 43390 if (!((executionContext & (RenderContext | CommitContext)) === NoContext)) { 43391 { 43392 throw Error( "Should not already be working." ); 43393 } 43394 } 43395 43396 flushPassiveEffects(); // If the root or expiration time have changed, throw out the existing stack 43397 // and prepare a fresh one. Otherwise we'll continue where we left off. 43398 43399 if (root !== workInProgressRoot || expirationTime !== renderExpirationTime$1) { 43400 prepareFreshStack(root, expirationTime); 43401 startWorkOnPendingInteractions(root, expirationTime); 43402 } // If we have a work-in-progress fiber, it means there's still work to do 43403 // in this root. 43404 43405 43406 if (workInProgress !== null) { 43407 var prevExecutionContext = executionContext; 43408 executionContext |= RenderContext; 43409 var prevDispatcher = pushDispatcher(); 43410 var prevInteractions = pushInteractions(root); 43411 startWorkLoopTimer(workInProgress); 43412 43413 do { 43414 try { 43415 workLoopConcurrent(); 43416 break; 43417 } catch (thrownValue) { 43418 handleError(root, thrownValue); 43419 } 43420 } while (true); 43421 43422 resetContextDependencies(); 43423 executionContext = prevExecutionContext; 43424 popDispatcher(prevDispatcher); 43425 43426 { 43427 popInteractions(prevInteractions); 43428 } 43429 43430 if (workInProgressRootExitStatus === RootFatalErrored) { 43431 var fatalError = workInProgressRootFatalError; 43432 stopInterruptedWorkLoopTimer(); 43433 prepareFreshStack(root, expirationTime); 43434 markRootSuspendedAtTime(root, expirationTime); 43435 ensureRootIsScheduled(root); 43436 throw fatalError; 43437 } 43438 43439 if (workInProgress !== null) { 43440 // There's still work left over. Exit without committing. 43441 stopInterruptedWorkLoopTimer(); 43442 } else { 43443 // We now have a consistent tree. The next step is either to commit it, 43444 // or, if something suspended, wait to commit it after a timeout. 43445 stopFinishedWorkLoopTimer(); 43446 var finishedWork = root.finishedWork = root.current.alternate; 43447 root.finishedExpirationTime = expirationTime; 43448 finishConcurrentRender(root, finishedWork, workInProgressRootExitStatus, expirationTime); 43449 } 43450 43451 ensureRootIsScheduled(root); 43452 43453 if (root.callbackNode === originalCallbackNode) { 43454 // The task node scheduled for this root is the same one that's 43455 // currently executed. Need to return a continuation. 43456 return performConcurrentWorkOnRoot.bind(null, root); 43457 } 43458 } 43459 } 43460 43461 return null; 43462} 43463 43464function finishConcurrentRender(root, finishedWork, exitStatus, expirationTime) { 43465 // Set this to null to indicate there's no in-progress render. 43466 workInProgressRoot = null; 43467 43468 switch (exitStatus) { 43469 case RootIncomplete: 43470 case RootFatalErrored: 43471 { 43472 { 43473 { 43474 throw Error( "Root did not complete. This is a bug in React." ); 43475 } 43476 } 43477 } 43478 // Flow knows about invariant, so it complains if I add a break 43479 // statement, but eslint doesn't know about invariant, so it complains 43480 // if I do. eslint-disable-next-line no-fallthrough 43481 43482 case RootErrored: 43483 { 43484 // If this was an async render, the error may have happened due to 43485 // a mutation in a concurrent event. Try rendering one more time, 43486 // synchronously, to see if the error goes away. If there are 43487 // lower priority updates, let's include those, too, in case they 43488 // fix the inconsistency. Render at Idle to include all updates. 43489 // If it was Idle or Never or some not-yet-invented time, render 43490 // at that time. 43491 markRootExpiredAtTime(root, expirationTime > Idle ? Idle : expirationTime); // We assume that this second render pass will be synchronous 43492 // and therefore not hit this path again. 43493 43494 break; 43495 } 43496 43497 case RootSuspended: 43498 { 43499 markRootSuspendedAtTime(root, expirationTime); 43500 var lastSuspendedTime = root.lastSuspendedTime; 43501 43502 if (expirationTime === lastSuspendedTime) { 43503 root.nextKnownPendingLevel = getRemainingExpirationTime(finishedWork); 43504 } // We have an acceptable loading state. We need to figure out if we 43505 // should immediately commit it or wait a bit. 43506 // If we have processed new updates during this render, we may now 43507 // have a new loading state ready. We want to ensure that we commit 43508 // that as soon as possible. 43509 43510 43511 var hasNotProcessedNewUpdates = workInProgressRootLatestProcessedExpirationTime === Sync; 43512 43513 if (hasNotProcessedNewUpdates && // do not delay if we're inside an act() scope 43514 !( IsThisRendererActing.current)) { 43515 // If we have not processed any new updates during this pass, then 43516 // this is either a retry of an existing fallback state or a 43517 // hidden tree. Hidden trees shouldn't be batched with other work 43518 // and after that's fixed it can only be a retry. We're going to 43519 // throttle committing retries so that we don't show too many 43520 // loading states too quickly. 43521 var msUntilTimeout = globalMostRecentFallbackTime + FALLBACK_THROTTLE_MS - now(); // Don't bother with a very short suspense time. 43522 43523 if (msUntilTimeout > 10) { 43524 if (workInProgressRootHasPendingPing) { 43525 var lastPingedTime = root.lastPingedTime; 43526 43527 if (lastPingedTime === NoWork || lastPingedTime >= expirationTime) { 43528 // This render was pinged but we didn't get to restart 43529 // earlier so try restarting now instead. 43530 root.lastPingedTime = expirationTime; 43531 prepareFreshStack(root, expirationTime); 43532 break; 43533 } 43534 } 43535 43536 var nextTime = getNextRootExpirationTimeToWorkOn(root); 43537 43538 if (nextTime !== NoWork && nextTime !== expirationTime) { 43539 // There's additional work on this root. 43540 break; 43541 } 43542 43543 if (lastSuspendedTime !== NoWork && lastSuspendedTime !== expirationTime) { 43544 // We should prefer to render the fallback of at the last 43545 // suspended level. Ping the last suspended level to try 43546 // rendering it again. 43547 root.lastPingedTime = lastSuspendedTime; 43548 break; 43549 } // The render is suspended, it hasn't timed out, and there's no 43550 // lower priority work to do. Instead of committing the fallback 43551 // immediately, wait for more data to arrive. 43552 43553 43554 root.timeoutHandle = scheduleTimeout(commitRoot.bind(null, root), msUntilTimeout); 43555 break; 43556 } 43557 } // The work expired. Commit immediately. 43558 43559 43560 commitRoot(root); 43561 break; 43562 } 43563 43564 case RootSuspendedWithDelay: 43565 { 43566 markRootSuspendedAtTime(root, expirationTime); 43567 var _lastSuspendedTime = root.lastSuspendedTime; 43568 43569 if (expirationTime === _lastSuspendedTime) { 43570 root.nextKnownPendingLevel = getRemainingExpirationTime(finishedWork); 43571 } 43572 43573 if ( // do not delay if we're inside an act() scope 43574 !( IsThisRendererActing.current)) { 43575 // We're suspended in a state that should be avoided. We'll try to 43576 // avoid committing it for as long as the timeouts let us. 43577 if (workInProgressRootHasPendingPing) { 43578 var _lastPingedTime = root.lastPingedTime; 43579 43580 if (_lastPingedTime === NoWork || _lastPingedTime >= expirationTime) { 43581 // This render was pinged but we didn't get to restart earlier 43582 // so try restarting now instead. 43583 root.lastPingedTime = expirationTime; 43584 prepareFreshStack(root, expirationTime); 43585 break; 43586 } 43587 } 43588 43589 var _nextTime = getNextRootExpirationTimeToWorkOn(root); 43590 43591 if (_nextTime !== NoWork && _nextTime !== expirationTime) { 43592 // There's additional work on this root. 43593 break; 43594 } 43595 43596 if (_lastSuspendedTime !== NoWork && _lastSuspendedTime !== expirationTime) { 43597 // We should prefer to render the fallback of at the last 43598 // suspended level. Ping the last suspended level to try 43599 // rendering it again. 43600 root.lastPingedTime = _lastSuspendedTime; 43601 break; 43602 } 43603 43604 var _msUntilTimeout; 43605 43606 if (workInProgressRootLatestSuspenseTimeout !== Sync) { 43607 // We have processed a suspense config whose expiration time we 43608 // can use as the timeout. 43609 _msUntilTimeout = expirationTimeToMs(workInProgressRootLatestSuspenseTimeout) - now(); 43610 } else if (workInProgressRootLatestProcessedExpirationTime === Sync) { 43611 // This should never normally happen because only new updates 43612 // cause delayed states, so we should have processed something. 43613 // However, this could also happen in an offscreen tree. 43614 _msUntilTimeout = 0; 43615 } else { 43616 // If we don't have a suspense config, we're going to use a 43617 // heuristic to determine how long we can suspend. 43618 var eventTimeMs = inferTimeFromExpirationTime(workInProgressRootLatestProcessedExpirationTime); 43619 var currentTimeMs = now(); 43620 var timeUntilExpirationMs = expirationTimeToMs(expirationTime) - currentTimeMs; 43621 var timeElapsed = currentTimeMs - eventTimeMs; 43622 43623 if (timeElapsed < 0) { 43624 // We get this wrong some time since we estimate the time. 43625 timeElapsed = 0; 43626 } 43627 43628 _msUntilTimeout = jnd(timeElapsed) - timeElapsed; // Clamp the timeout to the expiration time. TODO: Once the 43629 // event time is exact instead of inferred from expiration time 43630 // we don't need this. 43631 43632 if (timeUntilExpirationMs < _msUntilTimeout) { 43633 _msUntilTimeout = timeUntilExpirationMs; 43634 } 43635 } // Don't bother with a very short suspense time. 43636 43637 43638 if (_msUntilTimeout > 10) { 43639 // The render is suspended, it hasn't timed out, and there's no 43640 // lower priority work to do. Instead of committing the fallback 43641 // immediately, wait for more data to arrive. 43642 root.timeoutHandle = scheduleTimeout(commitRoot.bind(null, root), _msUntilTimeout); 43643 break; 43644 } 43645 } // The work expired. Commit immediately. 43646 43647 43648 commitRoot(root); 43649 break; 43650 } 43651 43652 case RootCompleted: 43653 { 43654 // The work completed. Ready to commit. 43655 if ( // do not delay if we're inside an act() scope 43656 !( IsThisRendererActing.current) && workInProgressRootLatestProcessedExpirationTime !== Sync && workInProgressRootCanSuspendUsingConfig !== null) { 43657 // If we have exceeded the minimum loading delay, which probably 43658 // means we have shown a spinner already, we might have to suspend 43659 // a bit longer to ensure that the spinner is shown for 43660 // enough time. 43661 var _msUntilTimeout2 = computeMsUntilSuspenseLoadingDelay(workInProgressRootLatestProcessedExpirationTime, expirationTime, workInProgressRootCanSuspendUsingConfig); 43662 43663 if (_msUntilTimeout2 > 10) { 43664 markRootSuspendedAtTime(root, expirationTime); 43665 root.timeoutHandle = scheduleTimeout(commitRoot.bind(null, root), _msUntilTimeout2); 43666 break; 43667 } 43668 } 43669 43670 commitRoot(root); 43671 break; 43672 } 43673 43674 default: 43675 { 43676 { 43677 { 43678 throw Error( "Unknown root exit status." ); 43679 } 43680 } 43681 } 43682 } 43683} // This is the entry point for synchronous tasks that don't go 43684// through Scheduler 43685 43686 43687function performSyncWorkOnRoot(root) { 43688 // Check if there's expired work on this root. Otherwise, render at Sync. 43689 var lastExpiredTime = root.lastExpiredTime; 43690 var expirationTime = lastExpiredTime !== NoWork ? lastExpiredTime : Sync; 43691 43692 if (!((executionContext & (RenderContext | CommitContext)) === NoContext)) { 43693 { 43694 throw Error( "Should not already be working." ); 43695 } 43696 } 43697 43698 flushPassiveEffects(); // If the root or expiration time have changed, throw out the existing stack 43699 // and prepare a fresh one. Otherwise we'll continue where we left off. 43700 43701 if (root !== workInProgressRoot || expirationTime !== renderExpirationTime$1) { 43702 prepareFreshStack(root, expirationTime); 43703 startWorkOnPendingInteractions(root, expirationTime); 43704 } // If we have a work-in-progress fiber, it means there's still work to do 43705 // in this root. 43706 43707 43708 if (workInProgress !== null) { 43709 var prevExecutionContext = executionContext; 43710 executionContext |= RenderContext; 43711 var prevDispatcher = pushDispatcher(); 43712 var prevInteractions = pushInteractions(root); 43713 startWorkLoopTimer(workInProgress); 43714 43715 do { 43716 try { 43717 workLoopSync(); 43718 break; 43719 } catch (thrownValue) { 43720 handleError(root, thrownValue); 43721 } 43722 } while (true); 43723 43724 resetContextDependencies(); 43725 executionContext = prevExecutionContext; 43726 popDispatcher(prevDispatcher); 43727 43728 { 43729 popInteractions(prevInteractions); 43730 } 43731 43732 if (workInProgressRootExitStatus === RootFatalErrored) { 43733 var fatalError = workInProgressRootFatalError; 43734 stopInterruptedWorkLoopTimer(); 43735 prepareFreshStack(root, expirationTime); 43736 markRootSuspendedAtTime(root, expirationTime); 43737 ensureRootIsScheduled(root); 43738 throw fatalError; 43739 } 43740 43741 if (workInProgress !== null) { 43742 // This is a sync render, so we should have finished the whole tree. 43743 { 43744 { 43745 throw Error( "Cannot commit an incomplete root. This error is likely caused by a bug in React. Please file an issue." ); 43746 } 43747 } 43748 } else { 43749 // We now have a consistent tree. Because this is a sync render, we 43750 // will commit it even if something suspended. 43751 stopFinishedWorkLoopTimer(); 43752 root.finishedWork = root.current.alternate; 43753 root.finishedExpirationTime = expirationTime; 43754 finishSyncRender(root); 43755 } // Before exiting, make sure there's a callback scheduled for the next 43756 // pending level. 43757 43758 43759 ensureRootIsScheduled(root); 43760 } 43761 43762 return null; 43763} 43764 43765function finishSyncRender(root) { 43766 // Set this to null to indicate there's no in-progress render. 43767 workInProgressRoot = null; 43768 commitRoot(root); 43769} 43770function flushDiscreteUpdates() { 43771 // TODO: Should be able to flush inside batchedUpdates, but not inside `act`. 43772 // However, `act` uses `batchedUpdates`, so there's no way to distinguish 43773 // those two cases. Need to fix this before exposing flushDiscreteUpdates 43774 // as a public API. 43775 if ((executionContext & (BatchedContext | RenderContext | CommitContext)) !== NoContext) { 43776 { 43777 if ((executionContext & RenderContext) !== NoContext) { 43778 error('unstable_flushDiscreteUpdates: Cannot flush updates when React is ' + 'already rendering.'); 43779 } 43780 } // We're already rendering, so we can't synchronously flush pending work. 43781 // This is probably a nested event dispatch triggered by a lifecycle/effect, 43782 // like `el.focus()`. Exit. 43783 43784 43785 return; 43786 } 43787 43788 flushPendingDiscreteUpdates(); // If the discrete updates scheduled passive effects, flush them now so that 43789 // they fire before the next serial event. 43790 43791 flushPassiveEffects(); 43792} 43793function syncUpdates(fn, a, b, c) { 43794 return runWithPriority$1(ImmediatePriority, fn.bind(null, a, b, c)); 43795} 43796 43797function flushPendingDiscreteUpdates() { 43798 if (rootsWithPendingDiscreteUpdates !== null) { 43799 // For each root with pending discrete updates, schedule a callback to 43800 // immediately flush them. 43801 var roots = rootsWithPendingDiscreteUpdates; 43802 rootsWithPendingDiscreteUpdates = null; 43803 roots.forEach(function (expirationTime, root) { 43804 markRootExpiredAtTime(root, expirationTime); 43805 ensureRootIsScheduled(root); 43806 }); // Now flush the immediate queue. 43807 43808 flushSyncCallbackQueue(); 43809 } 43810} 43811 43812function batchedUpdates$1(fn, a) { 43813 var prevExecutionContext = executionContext; 43814 executionContext |= BatchedContext; 43815 43816 try { 43817 return fn(a); 43818 } finally { 43819 executionContext = prevExecutionContext; 43820 43821 if (executionContext === NoContext) { 43822 // Flush the immediate callbacks that were scheduled during this batch 43823 flushSyncCallbackQueue(); 43824 } 43825 } 43826} 43827function batchedEventUpdates$1(fn, a) { 43828 var prevExecutionContext = executionContext; 43829 executionContext |= EventContext; 43830 43831 try { 43832 return fn(a); 43833 } finally { 43834 executionContext = prevExecutionContext; 43835 43836 if (executionContext === NoContext) { 43837 // Flush the immediate callbacks that were scheduled during this batch 43838 flushSyncCallbackQueue(); 43839 } 43840 } 43841} 43842function discreteUpdates$1(fn, a, b, c, d) { 43843 var prevExecutionContext = executionContext; 43844 executionContext |= DiscreteEventContext; 43845 43846 try { 43847 // Should this 43848 return runWithPriority$1(UserBlockingPriority$1, fn.bind(null, a, b, c, d)); 43849 } finally { 43850 executionContext = prevExecutionContext; 43851 43852 if (executionContext === NoContext) { 43853 // Flush the immediate callbacks that were scheduled during this batch 43854 flushSyncCallbackQueue(); 43855 } 43856 } 43857} 43858function unbatchedUpdates(fn, a) { 43859 var prevExecutionContext = executionContext; 43860 executionContext &= ~BatchedContext; 43861 executionContext |= LegacyUnbatchedContext; 43862 43863 try { 43864 return fn(a); 43865 } finally { 43866 executionContext = prevExecutionContext; 43867 43868 if (executionContext === NoContext) { 43869 // Flush the immediate callbacks that were scheduled during this batch 43870 flushSyncCallbackQueue(); 43871 } 43872 } 43873} 43874function flushSync(fn, a) { 43875 if ((executionContext & (RenderContext | CommitContext)) !== NoContext) { 43876 { 43877 { 43878 throw Error( "flushSync was called from inside a lifecycle method. It cannot be called when React is already rendering." ); 43879 } 43880 } 43881 } 43882 43883 var prevExecutionContext = executionContext; 43884 executionContext |= BatchedContext; 43885 43886 try { 43887 return runWithPriority$1(ImmediatePriority, fn.bind(null, a)); 43888 } finally { 43889 executionContext = prevExecutionContext; // Flush the immediate callbacks that were scheduled during this batch. 43890 // Note that this will happen even if batchedUpdates is higher up 43891 // the stack. 43892 43893 flushSyncCallbackQueue(); 43894 } 43895} 43896 43897function prepareFreshStack(root, expirationTime) { 43898 root.finishedWork = null; 43899 root.finishedExpirationTime = NoWork; 43900 var timeoutHandle = root.timeoutHandle; 43901 43902 if (timeoutHandle !== noTimeout) { 43903 // The root previous suspended and scheduled a timeout to commit a fallback 43904 // state. Now that we have additional work, cancel the timeout. 43905 root.timeoutHandle = noTimeout; // $FlowFixMe Complains noTimeout is not a TimeoutID, despite the check above 43906 43907 cancelTimeout(timeoutHandle); 43908 } 43909 43910 if (workInProgress !== null) { 43911 var interruptedWork = workInProgress.return; 43912 43913 while (interruptedWork !== null) { 43914 unwindInterruptedWork(interruptedWork); 43915 interruptedWork = interruptedWork.return; 43916 } 43917 } 43918 43919 workInProgressRoot = root; 43920 workInProgress = createWorkInProgress(root.current, null); 43921 renderExpirationTime$1 = expirationTime; 43922 workInProgressRootExitStatus = RootIncomplete; 43923 workInProgressRootFatalError = null; 43924 workInProgressRootLatestProcessedExpirationTime = Sync; 43925 workInProgressRootLatestSuspenseTimeout = Sync; 43926 workInProgressRootCanSuspendUsingConfig = null; 43927 workInProgressRootNextUnprocessedUpdateTime = NoWork; 43928 workInProgressRootHasPendingPing = false; 43929 43930 { 43931 spawnedWorkDuringRender = null; 43932 } 43933 43934 { 43935 ReactStrictModeWarnings.discardPendingWarnings(); 43936 } 43937} 43938 43939function handleError(root, thrownValue) { 43940 do { 43941 try { 43942 // Reset module-level state that was set during the render phase. 43943 resetContextDependencies(); 43944 resetHooksAfterThrow(); 43945 resetCurrentFiber(); 43946 43947 if (workInProgress === null || workInProgress.return === null) { 43948 // Expected to be working on a non-root fiber. This is a fatal error 43949 // because there's no ancestor that can handle it; the root is 43950 // supposed to capture all errors that weren't caught by an error 43951 // boundary. 43952 workInProgressRootExitStatus = RootFatalErrored; 43953 workInProgressRootFatalError = thrownValue; // Set `workInProgress` to null. This represents advancing to the next 43954 // sibling, or the parent if there are no siblings. But since the root 43955 // has no siblings nor a parent, we set it to null. Usually this is 43956 // handled by `completeUnitOfWork` or `unwindWork`, but since we're 43957 // interntionally not calling those, we need set it here. 43958 // TODO: Consider calling `unwindWork` to pop the contexts. 43959 43960 workInProgress = null; 43961 return null; 43962 } 43963 43964 if (enableProfilerTimer && workInProgress.mode & ProfileMode) { 43965 // Record the time spent rendering before an error was thrown. This 43966 // avoids inaccurate Profiler durations in the case of a 43967 // suspended render. 43968 stopProfilerTimerIfRunningAndRecordDelta(workInProgress, true); 43969 } 43970 43971 throwException(root, workInProgress.return, workInProgress, thrownValue, renderExpirationTime$1); 43972 workInProgress = completeUnitOfWork(workInProgress); 43973 } catch (yetAnotherThrownValue) { 43974 // Something in the return path also threw. 43975 thrownValue = yetAnotherThrownValue; 43976 continue; 43977 } // Return to the normal work loop. 43978 43979 43980 return; 43981 } while (true); 43982} 43983 43984function pushDispatcher(root) { 43985 var prevDispatcher = ReactCurrentDispatcher$1.current; 43986 ReactCurrentDispatcher$1.current = ContextOnlyDispatcher; 43987 43988 if (prevDispatcher === null) { 43989 // The React isomorphic package does not include a default dispatcher. 43990 // Instead the first renderer will lazily attach one, in order to give 43991 // nicer error messages. 43992 return ContextOnlyDispatcher; 43993 } else { 43994 return prevDispatcher; 43995 } 43996} 43997 43998function popDispatcher(prevDispatcher) { 43999 ReactCurrentDispatcher$1.current = prevDispatcher; 44000} 44001 44002function pushInteractions(root) { 44003 { 44004 var prevInteractions = tracing.__interactionsRef.current; 44005 tracing.__interactionsRef.current = root.memoizedInteractions; 44006 return prevInteractions; 44007 } 44008} 44009 44010function popInteractions(prevInteractions) { 44011 { 44012 tracing.__interactionsRef.current = prevInteractions; 44013 } 44014} 44015 44016function markCommitTimeOfFallback() { 44017 globalMostRecentFallbackTime = now(); 44018} 44019function markRenderEventTimeAndConfig(expirationTime, suspenseConfig) { 44020 if (expirationTime < workInProgressRootLatestProcessedExpirationTime && expirationTime > Idle) { 44021 workInProgressRootLatestProcessedExpirationTime = expirationTime; 44022 } 44023 44024 if (suspenseConfig !== null) { 44025 if (expirationTime < workInProgressRootLatestSuspenseTimeout && expirationTime > Idle) { 44026 workInProgressRootLatestSuspenseTimeout = expirationTime; // Most of the time we only have one config and getting wrong is not bad. 44027 44028 workInProgressRootCanSuspendUsingConfig = suspenseConfig; 44029 } 44030 } 44031} 44032function markUnprocessedUpdateTime(expirationTime) { 44033 if (expirationTime > workInProgressRootNextUnprocessedUpdateTime) { 44034 workInProgressRootNextUnprocessedUpdateTime = expirationTime; 44035 } 44036} 44037function renderDidSuspend() { 44038 if (workInProgressRootExitStatus === RootIncomplete) { 44039 workInProgressRootExitStatus = RootSuspended; 44040 } 44041} 44042function renderDidSuspendDelayIfPossible() { 44043 if (workInProgressRootExitStatus === RootIncomplete || workInProgressRootExitStatus === RootSuspended) { 44044 workInProgressRootExitStatus = RootSuspendedWithDelay; 44045 } // Check if there's a lower priority update somewhere else in the tree. 44046 44047 44048 if (workInProgressRootNextUnprocessedUpdateTime !== NoWork && workInProgressRoot !== null) { 44049 // Mark the current render as suspended, and then mark that there's a 44050 // pending update. 44051 // TODO: This should immediately interrupt the current render, instead 44052 // of waiting until the next time we yield. 44053 markRootSuspendedAtTime(workInProgressRoot, renderExpirationTime$1); 44054 markRootUpdatedAtTime(workInProgressRoot, workInProgressRootNextUnprocessedUpdateTime); 44055 } 44056} 44057function renderDidError() { 44058 if (workInProgressRootExitStatus !== RootCompleted) { 44059 workInProgressRootExitStatus = RootErrored; 44060 } 44061} // Called during render to determine if anything has suspended. 44062// Returns false if we're not sure. 44063 44064function renderHasNotSuspendedYet() { 44065 // If something errored or completed, we can't really be sure, 44066 // so those are false. 44067 return workInProgressRootExitStatus === RootIncomplete; 44068} 44069 44070function inferTimeFromExpirationTime(expirationTime) { 44071 // We don't know exactly when the update was scheduled, but we can infer an 44072 // approximate start time from the expiration time. 44073 var earliestExpirationTimeMs = expirationTimeToMs(expirationTime); 44074 return earliestExpirationTimeMs - LOW_PRIORITY_EXPIRATION; 44075} 44076 44077function inferTimeFromExpirationTimeWithSuspenseConfig(expirationTime, suspenseConfig) { 44078 // We don't know exactly when the update was scheduled, but we can infer an 44079 // approximate start time from the expiration time by subtracting the timeout 44080 // that was added to the event time. 44081 var earliestExpirationTimeMs = expirationTimeToMs(expirationTime); 44082 return earliestExpirationTimeMs - (suspenseConfig.timeoutMs | 0 || LOW_PRIORITY_EXPIRATION); 44083} // The work loop is an extremely hot path. Tell Closure not to inline it. 44084 44085/** @noinline */ 44086 44087 44088function workLoopSync() { 44089 // Already timed out, so perform work without checking if we need to yield. 44090 while (workInProgress !== null) { 44091 workInProgress = performUnitOfWork(workInProgress); 44092 } 44093} 44094/** @noinline */ 44095 44096 44097function workLoopConcurrent() { 44098 // Perform work until Scheduler asks us to yield 44099 while (workInProgress !== null && !shouldYield()) { 44100 workInProgress = performUnitOfWork(workInProgress); 44101 } 44102} 44103 44104function performUnitOfWork(unitOfWork) { 44105 // The current, flushed, state of this fiber is the alternate. Ideally 44106 // nothing should rely on this, but relying on it here means that we don't 44107 // need an additional field on the work in progress. 44108 var current = unitOfWork.alternate; 44109 startWorkTimer(unitOfWork); 44110 setCurrentFiber(unitOfWork); 44111 var next; 44112 44113 if ( (unitOfWork.mode & ProfileMode) !== NoMode) { 44114 startProfilerTimer(unitOfWork); 44115 next = beginWork$1(current, unitOfWork, renderExpirationTime$1); 44116 stopProfilerTimerIfRunningAndRecordDelta(unitOfWork, true); 44117 } else { 44118 next = beginWork$1(current, unitOfWork, renderExpirationTime$1); 44119 } 44120 44121 resetCurrentFiber(); 44122 unitOfWork.memoizedProps = unitOfWork.pendingProps; 44123 44124 if (next === null) { 44125 // If this doesn't spawn new work, complete the current work. 44126 next = completeUnitOfWork(unitOfWork); 44127 } 44128 44129 ReactCurrentOwner$2.current = null; 44130 return next; 44131} 44132 44133function completeUnitOfWork(unitOfWork) { 44134 // Attempt to complete the current unit of work, then move to the next 44135 // sibling. If there are no more siblings, return to the parent fiber. 44136 workInProgress = unitOfWork; 44137 44138 do { 44139 // The current, flushed, state of this fiber is the alternate. Ideally 44140 // nothing should rely on this, but relying on it here means that we don't 44141 // need an additional field on the work in progress. 44142 var current = workInProgress.alternate; 44143 var returnFiber = workInProgress.return; // Check if the work completed or if something threw. 44144 44145 if ((workInProgress.effectTag & Incomplete) === NoEffect) { 44146 setCurrentFiber(workInProgress); 44147 var next = void 0; 44148 44149 if ( (workInProgress.mode & ProfileMode) === NoMode) { 44150 next = completeWork(current, workInProgress, renderExpirationTime$1); 44151 } else { 44152 startProfilerTimer(workInProgress); 44153 next = completeWork(current, workInProgress, renderExpirationTime$1); // Update render duration assuming we didn't error. 44154 44155 stopProfilerTimerIfRunningAndRecordDelta(workInProgress, false); 44156 } 44157 44158 stopWorkTimer(workInProgress); 44159 resetCurrentFiber(); 44160 resetChildExpirationTime(workInProgress); 44161 44162 if (next !== null) { 44163 // Completing this fiber spawned new work. Work on that next. 44164 return next; 44165 } 44166 44167 if (returnFiber !== null && // Do not append effects to parents if a sibling failed to complete 44168 (returnFiber.effectTag & Incomplete) === NoEffect) { 44169 // Append all the effects of the subtree and this fiber onto the effect 44170 // list of the parent. The completion order of the children affects the 44171 // side-effect order. 44172 if (returnFiber.firstEffect === null) { 44173 returnFiber.firstEffect = workInProgress.firstEffect; 44174 } 44175 44176 if (workInProgress.lastEffect !== null) { 44177 if (returnFiber.lastEffect !== null) { 44178 returnFiber.lastEffect.nextEffect = workInProgress.firstEffect; 44179 } 44180 44181 returnFiber.lastEffect = workInProgress.lastEffect; 44182 } // If this fiber had side-effects, we append it AFTER the children's 44183 // side-effects. We can perform certain side-effects earlier if needed, 44184 // by doing multiple passes over the effect list. We don't want to 44185 // schedule our own side-effect on our own list because if end up 44186 // reusing children we'll schedule this effect onto itself since we're 44187 // at the end. 44188 44189 44190 var effectTag = workInProgress.effectTag; // Skip both NoWork and PerformedWork tags when creating the effect 44191 // list. PerformedWork effect is read by React DevTools but shouldn't be 44192 // committed. 44193 44194 if (effectTag > PerformedWork) { 44195 if (returnFiber.lastEffect !== null) { 44196 returnFiber.lastEffect.nextEffect = workInProgress; 44197 } else { 44198 returnFiber.firstEffect = workInProgress; 44199 } 44200 44201 returnFiber.lastEffect = workInProgress; 44202 } 44203 } 44204 } else { 44205 // This fiber did not complete because something threw. Pop values off 44206 // the stack without entering the complete phase. If this is a boundary, 44207 // capture values if possible. 44208 var _next = unwindWork(workInProgress); // Because this fiber did not complete, don't reset its expiration time. 44209 44210 44211 if ( (workInProgress.mode & ProfileMode) !== NoMode) { 44212 // Record the render duration for the fiber that errored. 44213 stopProfilerTimerIfRunningAndRecordDelta(workInProgress, false); // Include the time spent working on failed children before continuing. 44214 44215 var actualDuration = workInProgress.actualDuration; 44216 var child = workInProgress.child; 44217 44218 while (child !== null) { 44219 actualDuration += child.actualDuration; 44220 child = child.sibling; 44221 } 44222 44223 workInProgress.actualDuration = actualDuration; 44224 } 44225 44226 if (_next !== null) { 44227 // If completing this work spawned new work, do that next. We'll come 44228 // back here again. 44229 // Since we're restarting, remove anything that is not a host effect 44230 // from the effect tag. 44231 // TODO: The name stopFailedWorkTimer is misleading because Suspense 44232 // also captures and restarts. 44233 stopFailedWorkTimer(workInProgress); 44234 _next.effectTag &= HostEffectMask; 44235 return _next; 44236 } 44237 44238 stopWorkTimer(workInProgress); 44239 44240 if (returnFiber !== null) { 44241 // Mark the parent fiber as incomplete and clear its effect list. 44242 returnFiber.firstEffect = returnFiber.lastEffect = null; 44243 returnFiber.effectTag |= Incomplete; 44244 } 44245 } 44246 44247 var siblingFiber = workInProgress.sibling; 44248 44249 if (siblingFiber !== null) { 44250 // If there is more work to do in this returnFiber, do that next. 44251 return siblingFiber; 44252 } // Otherwise, return to the parent 44253 44254 44255 workInProgress = returnFiber; 44256 } while (workInProgress !== null); // We've reached the root. 44257 44258 44259 if (workInProgressRootExitStatus === RootIncomplete) { 44260 workInProgressRootExitStatus = RootCompleted; 44261 } 44262 44263 return null; 44264} 44265 44266function getRemainingExpirationTime(fiber) { 44267 var updateExpirationTime = fiber.expirationTime; 44268 var childExpirationTime = fiber.childExpirationTime; 44269 return updateExpirationTime > childExpirationTime ? updateExpirationTime : childExpirationTime; 44270} 44271 44272function resetChildExpirationTime(completedWork) { 44273 if (renderExpirationTime$1 !== Never && completedWork.childExpirationTime === Never) { 44274 // The children of this component are hidden. Don't bubble their 44275 // expiration times. 44276 return; 44277 } 44278 44279 var newChildExpirationTime = NoWork; // Bubble up the earliest expiration time. 44280 44281 if ( (completedWork.mode & ProfileMode) !== NoMode) { 44282 // In profiling mode, resetChildExpirationTime is also used to reset 44283 // profiler durations. 44284 var actualDuration = completedWork.actualDuration; 44285 var treeBaseDuration = completedWork.selfBaseDuration; // When a fiber is cloned, its actualDuration is reset to 0. This value will 44286 // only be updated if work is done on the fiber (i.e. it doesn't bailout). 44287 // When work is done, it should bubble to the parent's actualDuration. If 44288 // the fiber has not been cloned though, (meaning no work was done), then 44289 // this value will reflect the amount of time spent working on a previous 44290 // render. In that case it should not bubble. We determine whether it was 44291 // cloned by comparing the child pointer. 44292 44293 var shouldBubbleActualDurations = completedWork.alternate === null || completedWork.child !== completedWork.alternate.child; 44294 var child = completedWork.child; 44295 44296 while (child !== null) { 44297 var childUpdateExpirationTime = child.expirationTime; 44298 var childChildExpirationTime = child.childExpirationTime; 44299 44300 if (childUpdateExpirationTime > newChildExpirationTime) { 44301 newChildExpirationTime = childUpdateExpirationTime; 44302 } 44303 44304 if (childChildExpirationTime > newChildExpirationTime) { 44305 newChildExpirationTime = childChildExpirationTime; 44306 } 44307 44308 if (shouldBubbleActualDurations) { 44309 actualDuration += child.actualDuration; 44310 } 44311 44312 treeBaseDuration += child.treeBaseDuration; 44313 child = child.sibling; 44314 } 44315 44316 completedWork.actualDuration = actualDuration; 44317 completedWork.treeBaseDuration = treeBaseDuration; 44318 } else { 44319 var _child = completedWork.child; 44320 44321 while (_child !== null) { 44322 var _childUpdateExpirationTime = _child.expirationTime; 44323 var _childChildExpirationTime = _child.childExpirationTime; 44324 44325 if (_childUpdateExpirationTime > newChildExpirationTime) { 44326 newChildExpirationTime = _childUpdateExpirationTime; 44327 } 44328 44329 if (_childChildExpirationTime > newChildExpirationTime) { 44330 newChildExpirationTime = _childChildExpirationTime; 44331 } 44332 44333 _child = _child.sibling; 44334 } 44335 } 44336 44337 completedWork.childExpirationTime = newChildExpirationTime; 44338} 44339 44340function commitRoot(root) { 44341 var renderPriorityLevel = getCurrentPriorityLevel(); 44342 runWithPriority$1(ImmediatePriority, commitRootImpl.bind(null, root, renderPriorityLevel)); 44343 return null; 44344} 44345 44346function commitRootImpl(root, renderPriorityLevel) { 44347 do { 44348 // `flushPassiveEffects` will call `flushSyncUpdateQueue` at the end, which 44349 // means `flushPassiveEffects` will sometimes result in additional 44350 // passive effects. So we need to keep flushing in a loop until there are 44351 // no more pending effects. 44352 // TODO: Might be better if `flushPassiveEffects` did not automatically 44353 // flush synchronous work at the end, to avoid factoring hazards like this. 44354 flushPassiveEffects(); 44355 } while (rootWithPendingPassiveEffects !== null); 44356 44357 flushRenderPhaseStrictModeWarningsInDEV(); 44358 44359 if (!((executionContext & (RenderContext | CommitContext)) === NoContext)) { 44360 { 44361 throw Error( "Should not already be working." ); 44362 } 44363 } 44364 44365 var finishedWork = root.finishedWork; 44366 var expirationTime = root.finishedExpirationTime; 44367 44368 if (finishedWork === null) { 44369 return null; 44370 } 44371 44372 root.finishedWork = null; 44373 root.finishedExpirationTime = NoWork; 44374 44375 if (!(finishedWork !== root.current)) { 44376 { 44377 throw Error( "Cannot commit the same tree as before. This error is likely caused by a bug in React. Please file an issue." ); 44378 } 44379 } // commitRoot never returns a continuation; it always finishes synchronously. 44380 // So we can clear these now to allow a new callback to be scheduled. 44381 44382 44383 root.callbackNode = null; 44384 root.callbackExpirationTime = NoWork; 44385 root.callbackPriority = NoPriority; 44386 root.nextKnownPendingLevel = NoWork; 44387 startCommitTimer(); // Update the first and last pending times on this root. The new first 44388 // pending time is whatever is left on the root fiber. 44389 44390 var remainingExpirationTimeBeforeCommit = getRemainingExpirationTime(finishedWork); 44391 markRootFinishedAtTime(root, expirationTime, remainingExpirationTimeBeforeCommit); 44392 44393 if (root === workInProgressRoot) { 44394 // We can reset these now that they are finished. 44395 workInProgressRoot = null; 44396 workInProgress = null; 44397 renderExpirationTime$1 = NoWork; 44398 } // This indicates that the last root we worked on is not the same one that 44399 // we're committing now. This most commonly happens when a suspended root 44400 // times out. 44401 // Get the list of effects. 44402 44403 44404 var firstEffect; 44405 44406 if (finishedWork.effectTag > PerformedWork) { 44407 // A fiber's effect list consists only of its children, not itself. So if 44408 // the root has an effect, we need to add it to the end of the list. The 44409 // resulting list is the set that would belong to the root's parent, if it 44410 // had one; that is, all the effects in the tree including the root. 44411 if (finishedWork.lastEffect !== null) { 44412 finishedWork.lastEffect.nextEffect = finishedWork; 44413 firstEffect = finishedWork.firstEffect; 44414 } else { 44415 firstEffect = finishedWork; 44416 } 44417 } else { 44418 // There is no effect on the root. 44419 firstEffect = finishedWork.firstEffect; 44420 } 44421 44422 if (firstEffect !== null) { 44423 var prevExecutionContext = executionContext; 44424 executionContext |= CommitContext; 44425 var prevInteractions = pushInteractions(root); // Reset this to null before calling lifecycles 44426 44427 ReactCurrentOwner$2.current = null; // The commit phase is broken into several sub-phases. We do a separate pass 44428 // of the effect list for each phase: all mutation effects come before all 44429 // layout effects, and so on. 44430 // The first phase a "before mutation" phase. We use this phase to read the 44431 // state of the host tree right before we mutate it. This is where 44432 // getSnapshotBeforeUpdate is called. 44433 44434 startCommitSnapshotEffectsTimer(); 44435 prepareForCommit(root.containerInfo); 44436 nextEffect = firstEffect; 44437 44438 do { 44439 { 44440 invokeGuardedCallback(null, commitBeforeMutationEffects, null); 44441 44442 if (hasCaughtError()) { 44443 if (!(nextEffect !== null)) { 44444 { 44445 throw Error( "Should be working on an effect." ); 44446 } 44447 } 44448 44449 var error = clearCaughtError(); 44450 captureCommitPhaseError(nextEffect, error); 44451 nextEffect = nextEffect.nextEffect; 44452 } 44453 } 44454 } while (nextEffect !== null); 44455 44456 stopCommitSnapshotEffectsTimer(); 44457 44458 { 44459 // Mark the current commit time to be shared by all Profilers in this 44460 // batch. This enables them to be grouped later. 44461 recordCommitTime(); 44462 } // The next phase is the mutation phase, where we mutate the host tree. 44463 44464 44465 startCommitHostEffectsTimer(); 44466 nextEffect = firstEffect; 44467 44468 do { 44469 { 44470 invokeGuardedCallback(null, commitMutationEffects, null, root, renderPriorityLevel); 44471 44472 if (hasCaughtError()) { 44473 if (!(nextEffect !== null)) { 44474 { 44475 throw Error( "Should be working on an effect." ); 44476 } 44477 } 44478 44479 var _error = clearCaughtError(); 44480 44481 captureCommitPhaseError(nextEffect, _error); 44482 nextEffect = nextEffect.nextEffect; 44483 } 44484 } 44485 } while (nextEffect !== null); 44486 44487 stopCommitHostEffectsTimer(); 44488 resetAfterCommit(root.containerInfo); // The work-in-progress tree is now the current tree. This must come after 44489 // the mutation phase, so that the previous tree is still current during 44490 // componentWillUnmount, but before the layout phase, so that the finished 44491 // work is current during componentDidMount/Update. 44492 44493 root.current = finishedWork; // The next phase is the layout phase, where we call effects that read 44494 // the host tree after it's been mutated. The idiomatic use case for this is 44495 // layout, but class component lifecycles also fire here for legacy reasons. 44496 44497 startCommitLifeCyclesTimer(); 44498 nextEffect = firstEffect; 44499 44500 do { 44501 { 44502 invokeGuardedCallback(null, commitLayoutEffects, null, root, expirationTime); 44503 44504 if (hasCaughtError()) { 44505 if (!(nextEffect !== null)) { 44506 { 44507 throw Error( "Should be working on an effect." ); 44508 } 44509 } 44510 44511 var _error2 = clearCaughtError(); 44512 44513 captureCommitPhaseError(nextEffect, _error2); 44514 nextEffect = nextEffect.nextEffect; 44515 } 44516 } 44517 } while (nextEffect !== null); 44518 44519 stopCommitLifeCyclesTimer(); 44520 nextEffect = null; // Tell Scheduler to yield at the end of the frame, so the browser has an 44521 // opportunity to paint. 44522 44523 requestPaint(); 44524 44525 { 44526 popInteractions(prevInteractions); 44527 } 44528 44529 executionContext = prevExecutionContext; 44530 } else { 44531 // No effects. 44532 root.current = finishedWork; // Measure these anyway so the flamegraph explicitly shows that there were 44533 // no effects. 44534 // TODO: Maybe there's a better way to report this. 44535 44536 startCommitSnapshotEffectsTimer(); 44537 stopCommitSnapshotEffectsTimer(); 44538 44539 { 44540 recordCommitTime(); 44541 } 44542 44543 startCommitHostEffectsTimer(); 44544 stopCommitHostEffectsTimer(); 44545 startCommitLifeCyclesTimer(); 44546 stopCommitLifeCyclesTimer(); 44547 } 44548 44549 stopCommitTimer(); 44550 var rootDidHavePassiveEffects = rootDoesHavePassiveEffects; 44551 44552 if (rootDoesHavePassiveEffects) { 44553 // This commit has passive effects. Stash a reference to them. But don't 44554 // schedule a callback until after flushing layout work. 44555 rootDoesHavePassiveEffects = false; 44556 rootWithPendingPassiveEffects = root; 44557 pendingPassiveEffectsExpirationTime = expirationTime; 44558 pendingPassiveEffectsRenderPriority = renderPriorityLevel; 44559 } else { 44560 // We are done with the effect chain at this point so let's clear the 44561 // nextEffect pointers to assist with GC. If we have passive effects, we'll 44562 // clear this in flushPassiveEffects. 44563 nextEffect = firstEffect; 44564 44565 while (nextEffect !== null) { 44566 var nextNextEffect = nextEffect.nextEffect; 44567 nextEffect.nextEffect = null; 44568 nextEffect = nextNextEffect; 44569 } 44570 } // Check if there's remaining work on this root 44571 44572 44573 var remainingExpirationTime = root.firstPendingTime; 44574 44575 if (remainingExpirationTime !== NoWork) { 44576 { 44577 if (spawnedWorkDuringRender !== null) { 44578 var expirationTimes = spawnedWorkDuringRender; 44579 spawnedWorkDuringRender = null; 44580 44581 for (var i = 0; i < expirationTimes.length; i++) { 44582 scheduleInteractions(root, expirationTimes[i], root.memoizedInteractions); 44583 } 44584 } 44585 44586 schedulePendingInteractions(root, remainingExpirationTime); 44587 } 44588 } else { 44589 // If there's no remaining work, we can clear the set of already failed 44590 // error boundaries. 44591 legacyErrorBoundariesThatAlreadyFailed = null; 44592 } 44593 44594 { 44595 if (!rootDidHavePassiveEffects) { 44596 // If there are no passive effects, then we can complete the pending interactions. 44597 // Otherwise, we'll wait until after the passive effects are flushed. 44598 // Wait to do this until after remaining work has been scheduled, 44599 // so that we don't prematurely signal complete for interactions when there's e.g. hidden work. 44600 finishPendingInteractions(root, expirationTime); 44601 } 44602 } 44603 44604 if (remainingExpirationTime === Sync) { 44605 // Count the number of times the root synchronously re-renders without 44606 // finishing. If there are too many, it indicates an infinite update loop. 44607 if (root === rootWithNestedUpdates) { 44608 nestedUpdateCount++; 44609 } else { 44610 nestedUpdateCount = 0; 44611 rootWithNestedUpdates = root; 44612 } 44613 } else { 44614 nestedUpdateCount = 0; 44615 } 44616 44617 onCommitRoot(finishedWork.stateNode, expirationTime); // Always call this before exiting `commitRoot`, to ensure that any 44618 // additional work on this root is scheduled. 44619 44620 ensureRootIsScheduled(root); 44621 44622 if (hasUncaughtError) { 44623 hasUncaughtError = false; 44624 var _error3 = firstUncaughtError; 44625 firstUncaughtError = null; 44626 throw _error3; 44627 } 44628 44629 if ((executionContext & LegacyUnbatchedContext) !== NoContext) { 44630 // This is a legacy edge case. We just committed the initial mount of 44631 // a ReactDOM.render-ed root inside of batchedUpdates. The commit fired 44632 // synchronously, but layout updates should be deferred until the end 44633 // of the batch. 44634 return null; 44635 } // If layout work was scheduled, flush it now. 44636 44637 44638 flushSyncCallbackQueue(); 44639 return null; 44640} 44641 44642function commitBeforeMutationEffects() { 44643 while (nextEffect !== null) { 44644 var effectTag = nextEffect.effectTag; 44645 44646 if ((effectTag & Snapshot) !== NoEffect) { 44647 setCurrentFiber(nextEffect); 44648 recordEffect(); 44649 var current = nextEffect.alternate; 44650 commitBeforeMutationLifeCycles(current, nextEffect); 44651 resetCurrentFiber(); 44652 } 44653 44654 if ((effectTag & Passive) !== NoEffect) { 44655 // If there are passive effects, schedule a callback to flush at 44656 // the earliest opportunity. 44657 if (!rootDoesHavePassiveEffects) { 44658 rootDoesHavePassiveEffects = true; 44659 scheduleCallback(NormalPriority, function () { 44660 flushPassiveEffects(); 44661 return null; 44662 }); 44663 } 44664 } 44665 44666 nextEffect = nextEffect.nextEffect; 44667 } 44668} 44669 44670function commitMutationEffects(root, renderPriorityLevel) { 44671 // TODO: Should probably move the bulk of this function to commitWork. 44672 while (nextEffect !== null) { 44673 setCurrentFiber(nextEffect); 44674 var effectTag = nextEffect.effectTag; 44675 44676 if (effectTag & ContentReset) { 44677 commitResetTextContent(nextEffect); 44678 } 44679 44680 if (effectTag & Ref) { 44681 var current = nextEffect.alternate; 44682 44683 if (current !== null) { 44684 commitDetachRef(current); 44685 } 44686 } // The following switch statement is only concerned about placement, 44687 // updates, and deletions. To avoid needing to add a case for every possible 44688 // bitmap value, we remove the secondary effects from the effect tag and 44689 // switch on that value. 44690 44691 44692 var primaryEffectTag = effectTag & (Placement | Update | Deletion | Hydrating); 44693 44694 switch (primaryEffectTag) { 44695 case Placement: 44696 { 44697 commitPlacement(nextEffect); // Clear the "placement" from effect tag so that we know that this is 44698 // inserted, before any life-cycles like componentDidMount gets called. 44699 // TODO: findDOMNode doesn't rely on this any more but isMounted does 44700 // and isMounted is deprecated anyway so we should be able to kill this. 44701 44702 nextEffect.effectTag &= ~Placement; 44703 break; 44704 } 44705 44706 case PlacementAndUpdate: 44707 { 44708 // Placement 44709 commitPlacement(nextEffect); // Clear the "placement" from effect tag so that we know that this is 44710 // inserted, before any life-cycles like componentDidMount gets called. 44711 44712 nextEffect.effectTag &= ~Placement; // Update 44713 44714 var _current = nextEffect.alternate; 44715 commitWork(_current, nextEffect); 44716 break; 44717 } 44718 44719 case Hydrating: 44720 { 44721 nextEffect.effectTag &= ~Hydrating; 44722 break; 44723 } 44724 44725 case HydratingAndUpdate: 44726 { 44727 nextEffect.effectTag &= ~Hydrating; // Update 44728 44729 var _current2 = nextEffect.alternate; 44730 commitWork(_current2, nextEffect); 44731 break; 44732 } 44733 44734 case Update: 44735 { 44736 var _current3 = nextEffect.alternate; 44737 commitWork(_current3, nextEffect); 44738 break; 44739 } 44740 44741 case Deletion: 44742 { 44743 commitDeletion(root, nextEffect, renderPriorityLevel); 44744 break; 44745 } 44746 } // TODO: Only record a mutation effect if primaryEffectTag is non-zero. 44747 44748 44749 recordEffect(); 44750 resetCurrentFiber(); 44751 nextEffect = nextEffect.nextEffect; 44752 } 44753} 44754 44755function commitLayoutEffects(root, committedExpirationTime) { 44756 // TODO: Should probably move the bulk of this function to commitWork. 44757 while (nextEffect !== null) { 44758 setCurrentFiber(nextEffect); 44759 var effectTag = nextEffect.effectTag; 44760 44761 if (effectTag & (Update | Callback)) { 44762 recordEffect(); 44763 var current = nextEffect.alternate; 44764 commitLifeCycles(root, current, nextEffect); 44765 } 44766 44767 if (effectTag & Ref) { 44768 recordEffect(); 44769 commitAttachRef(nextEffect); 44770 } 44771 44772 resetCurrentFiber(); 44773 nextEffect = nextEffect.nextEffect; 44774 } 44775} 44776 44777function flushPassiveEffects() { 44778 if (pendingPassiveEffectsRenderPriority !== NoPriority) { 44779 var priorityLevel = pendingPassiveEffectsRenderPriority > NormalPriority ? NormalPriority : pendingPassiveEffectsRenderPriority; 44780 pendingPassiveEffectsRenderPriority = NoPriority; 44781 return runWithPriority$1(priorityLevel, flushPassiveEffectsImpl); 44782 } 44783} 44784 44785function flushPassiveEffectsImpl() { 44786 if (rootWithPendingPassiveEffects === null) { 44787 return false; 44788 } 44789 44790 var root = rootWithPendingPassiveEffects; 44791 var expirationTime = pendingPassiveEffectsExpirationTime; 44792 rootWithPendingPassiveEffects = null; 44793 pendingPassiveEffectsExpirationTime = NoWork; 44794 44795 if (!((executionContext & (RenderContext | CommitContext)) === NoContext)) { 44796 { 44797 throw Error( "Cannot flush passive effects while already rendering." ); 44798 } 44799 } 44800 44801 var prevExecutionContext = executionContext; 44802 executionContext |= CommitContext; 44803 var prevInteractions = pushInteractions(root); 44804 44805 { 44806 // Note: This currently assumes there are no passive effects on the root fiber 44807 // because the root is not part of its own effect list. 44808 // This could change in the future. 44809 var _effect2 = root.current.firstEffect; 44810 44811 while (_effect2 !== null) { 44812 { 44813 setCurrentFiber(_effect2); 44814 invokeGuardedCallback(null, commitPassiveHookEffects, null, _effect2); 44815 44816 if (hasCaughtError()) { 44817 if (!(_effect2 !== null)) { 44818 { 44819 throw Error( "Should be working on an effect." ); 44820 } 44821 } 44822 44823 var _error5 = clearCaughtError(); 44824 44825 captureCommitPhaseError(_effect2, _error5); 44826 } 44827 44828 resetCurrentFiber(); 44829 } 44830 44831 var nextNextEffect = _effect2.nextEffect; // Remove nextEffect pointer to assist GC 44832 44833 _effect2.nextEffect = null; 44834 _effect2 = nextNextEffect; 44835 } 44836 } 44837 44838 { 44839 popInteractions(prevInteractions); 44840 finishPendingInteractions(root, expirationTime); 44841 } 44842 44843 executionContext = prevExecutionContext; 44844 flushSyncCallbackQueue(); // If additional passive effects were scheduled, increment a counter. If this 44845 // exceeds the limit, we'll fire a warning. 44846 44847 nestedPassiveUpdateCount = rootWithPendingPassiveEffects === null ? 0 : nestedPassiveUpdateCount + 1; 44848 return true; 44849} 44850 44851function isAlreadyFailedLegacyErrorBoundary(instance) { 44852 return legacyErrorBoundariesThatAlreadyFailed !== null && legacyErrorBoundariesThatAlreadyFailed.has(instance); 44853} 44854function markLegacyErrorBoundaryAsFailed(instance) { 44855 if (legacyErrorBoundariesThatAlreadyFailed === null) { 44856 legacyErrorBoundariesThatAlreadyFailed = new Set([instance]); 44857 } else { 44858 legacyErrorBoundariesThatAlreadyFailed.add(instance); 44859 } 44860} 44861 44862function prepareToThrowUncaughtError(error) { 44863 if (!hasUncaughtError) { 44864 hasUncaughtError = true; 44865 firstUncaughtError = error; 44866 } 44867} 44868 44869var onUncaughtError = prepareToThrowUncaughtError; 44870 44871function captureCommitPhaseErrorOnRoot(rootFiber, sourceFiber, error) { 44872 var errorInfo = createCapturedValue(error, sourceFiber); 44873 var update = createRootErrorUpdate(rootFiber, errorInfo, Sync); 44874 enqueueUpdate(rootFiber, update); 44875 var root = markUpdateTimeFromFiberToRoot(rootFiber, Sync); 44876 44877 if (root !== null) { 44878 ensureRootIsScheduled(root); 44879 schedulePendingInteractions(root, Sync); 44880 } 44881} 44882 44883function captureCommitPhaseError(sourceFiber, error) { 44884 if (sourceFiber.tag === HostRoot) { 44885 // Error was thrown at the root. There is no parent, so the root 44886 // itself should capture it. 44887 captureCommitPhaseErrorOnRoot(sourceFiber, sourceFiber, error); 44888 return; 44889 } 44890 44891 var fiber = sourceFiber.return; 44892 44893 while (fiber !== null) { 44894 if (fiber.tag === HostRoot) { 44895 captureCommitPhaseErrorOnRoot(fiber, sourceFiber, error); 44896 return; 44897 } else if (fiber.tag === ClassComponent) { 44898 var ctor = fiber.type; 44899 var instance = fiber.stateNode; 44900 44901 if (typeof ctor.getDerivedStateFromError === 'function' || typeof instance.componentDidCatch === 'function' && !isAlreadyFailedLegacyErrorBoundary(instance)) { 44902 var errorInfo = createCapturedValue(error, sourceFiber); 44903 var update = createClassErrorUpdate(fiber, errorInfo, // TODO: This is always sync 44904 Sync); 44905 enqueueUpdate(fiber, update); 44906 var root = markUpdateTimeFromFiberToRoot(fiber, Sync); 44907 44908 if (root !== null) { 44909 ensureRootIsScheduled(root); 44910 schedulePendingInteractions(root, Sync); 44911 } 44912 44913 return; 44914 } 44915 } 44916 44917 fiber = fiber.return; 44918 } 44919} 44920function pingSuspendedRoot(root, thenable, suspendedTime) { 44921 var pingCache = root.pingCache; 44922 44923 if (pingCache !== null) { 44924 // The thenable resolved, so we no longer need to memoize, because it will 44925 // never be thrown again. 44926 pingCache.delete(thenable); 44927 } 44928 44929 if (workInProgressRoot === root && renderExpirationTime$1 === suspendedTime) { 44930 // Received a ping at the same priority level at which we're currently 44931 // rendering. We might want to restart this render. This should mirror 44932 // the logic of whether or not a root suspends once it completes. 44933 // TODO: If we're rendering sync either due to Sync, Batched or expired, 44934 // we should probably never restart. 44935 // If we're suspended with delay, we'll always suspend so we can always 44936 // restart. If we're suspended without any updates, it might be a retry. 44937 // If it's early in the retry we can restart. We can't know for sure 44938 // whether we'll eventually process an update during this render pass, 44939 // but it's somewhat unlikely that we get to a ping before that, since 44940 // getting to the root most update is usually very fast. 44941 if (workInProgressRootExitStatus === RootSuspendedWithDelay || workInProgressRootExitStatus === RootSuspended && workInProgressRootLatestProcessedExpirationTime === Sync && now() - globalMostRecentFallbackTime < FALLBACK_THROTTLE_MS) { 44942 // Restart from the root. Don't need to schedule a ping because 44943 // we're already working on this tree. 44944 prepareFreshStack(root, renderExpirationTime$1); 44945 } else { 44946 // Even though we can't restart right now, we might get an 44947 // opportunity later. So we mark this render as having a ping. 44948 workInProgressRootHasPendingPing = true; 44949 } 44950 44951 return; 44952 } 44953 44954 if (!isRootSuspendedAtTime(root, suspendedTime)) { 44955 // The root is no longer suspended at this time. 44956 return; 44957 } 44958 44959 var lastPingedTime = root.lastPingedTime; 44960 44961 if (lastPingedTime !== NoWork && lastPingedTime < suspendedTime) { 44962 // There's already a lower priority ping scheduled. 44963 return; 44964 } // Mark the time at which this ping was scheduled. 44965 44966 44967 root.lastPingedTime = suspendedTime; 44968 44969 ensureRootIsScheduled(root); 44970 schedulePendingInteractions(root, suspendedTime); 44971} 44972 44973function retryTimedOutBoundary(boundaryFiber, retryTime) { 44974 // The boundary fiber (a Suspense component or SuspenseList component) 44975 // previously was rendered in its fallback state. One of the promises that 44976 // suspended it has resolved, which means at least part of the tree was 44977 // likely unblocked. Try rendering again, at a new expiration time. 44978 if (retryTime === NoWork) { 44979 var suspenseConfig = null; // Retries don't carry over the already committed update. 44980 44981 var currentTime = requestCurrentTimeForUpdate(); 44982 retryTime = computeExpirationForFiber(currentTime, boundaryFiber, suspenseConfig); 44983 } // TODO: Special case idle priority? 44984 44985 44986 var root = markUpdateTimeFromFiberToRoot(boundaryFiber, retryTime); 44987 44988 if (root !== null) { 44989 ensureRootIsScheduled(root); 44990 schedulePendingInteractions(root, retryTime); 44991 } 44992} 44993function resolveRetryThenable(boundaryFiber, thenable) { 44994 var retryTime = NoWork; // Default 44995 44996 var retryCache; 44997 44998 { 44999 retryCache = boundaryFiber.stateNode; 45000 } 45001 45002 if (retryCache !== null) { 45003 // The thenable resolved, so we no longer need to memoize, because it will 45004 // never be thrown again. 45005 retryCache.delete(thenable); 45006 } 45007 45008 retryTimedOutBoundary(boundaryFiber, retryTime); 45009} // Computes the next Just Noticeable Difference (JND) boundary. 45010// The theory is that a person can't tell the difference between small differences in time. 45011// Therefore, if we wait a bit longer than necessary that won't translate to a noticeable 45012// difference in the experience. However, waiting for longer might mean that we can avoid 45013// showing an intermediate loading state. The longer we have already waited, the harder it 45014// is to tell small differences in time. Therefore, the longer we've already waited, 45015// the longer we can wait additionally. At some point we have to give up though. 45016// We pick a train model where the next boundary commits at a consistent schedule. 45017// These particular numbers are vague estimates. We expect to adjust them based on research. 45018 45019function jnd(timeElapsed) { 45020 return timeElapsed < 120 ? 120 : timeElapsed < 480 ? 480 : timeElapsed < 1080 ? 1080 : timeElapsed < 1920 ? 1920 : timeElapsed < 3000 ? 3000 : timeElapsed < 4320 ? 4320 : ceil(timeElapsed / 1960) * 1960; 45021} 45022 45023function computeMsUntilSuspenseLoadingDelay(mostRecentEventTime, committedExpirationTime, suspenseConfig) { 45024 var busyMinDurationMs = suspenseConfig.busyMinDurationMs | 0; 45025 45026 if (busyMinDurationMs <= 0) { 45027 return 0; 45028 } 45029 45030 var busyDelayMs = suspenseConfig.busyDelayMs | 0; // Compute the time until this render pass would expire. 45031 45032 var currentTimeMs = now(); 45033 var eventTimeMs = inferTimeFromExpirationTimeWithSuspenseConfig(mostRecentEventTime, suspenseConfig); 45034 var timeElapsed = currentTimeMs - eventTimeMs; 45035 45036 if (timeElapsed <= busyDelayMs) { 45037 // If we haven't yet waited longer than the initial delay, we don't 45038 // have to wait any additional time. 45039 return 0; 45040 } 45041 45042 var msUntilTimeout = busyDelayMs + busyMinDurationMs - timeElapsed; // This is the value that is passed to `setTimeout`. 45043 45044 return msUntilTimeout; 45045} 45046 45047function checkForNestedUpdates() { 45048 if (nestedUpdateCount > NESTED_UPDATE_LIMIT) { 45049 nestedUpdateCount = 0; 45050 rootWithNestedUpdates = null; 45051 45052 { 45053 { 45054 throw Error( "Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops." ); 45055 } 45056 } 45057 } 45058 45059 { 45060 if (nestedPassiveUpdateCount > NESTED_PASSIVE_UPDATE_LIMIT) { 45061 nestedPassiveUpdateCount = 0; 45062 45063 error('Maximum update depth exceeded. This can happen when a component ' + "calls setState inside useEffect, but useEffect either doesn't " + 'have a dependency array, or one of the dependencies changes on ' + 'every render.'); 45064 } 45065 } 45066} 45067 45068function flushRenderPhaseStrictModeWarningsInDEV() { 45069 { 45070 ReactStrictModeWarnings.flushLegacyContextWarning(); 45071 45072 { 45073 ReactStrictModeWarnings.flushPendingUnsafeLifecycleWarnings(); 45074 } 45075 } 45076} 45077 45078function stopFinishedWorkLoopTimer() { 45079 var didCompleteRoot = true; 45080 stopWorkLoopTimer(interruptedBy, didCompleteRoot); 45081 interruptedBy = null; 45082} 45083 45084function stopInterruptedWorkLoopTimer() { 45085 // TODO: Track which fiber caused the interruption. 45086 var didCompleteRoot = false; 45087 stopWorkLoopTimer(interruptedBy, didCompleteRoot); 45088 interruptedBy = null; 45089} 45090 45091function checkForInterruption(fiberThatReceivedUpdate, updateExpirationTime) { 45092 if ( workInProgressRoot !== null && updateExpirationTime > renderExpirationTime$1) { 45093 interruptedBy = fiberThatReceivedUpdate; 45094 } 45095} 45096 45097var didWarnStateUpdateForUnmountedComponent = null; 45098 45099function warnAboutUpdateOnUnmountedFiberInDEV(fiber) { 45100 { 45101 var tag = fiber.tag; 45102 45103 if (tag !== HostRoot && tag !== ClassComponent && tag !== FunctionComponent && tag !== ForwardRef && tag !== MemoComponent && tag !== SimpleMemoComponent && tag !== Block) { 45104 // Only warn for user-defined components, not internal ones like Suspense. 45105 return; 45106 } 45107 // the problematic code almost always lies inside that component. 45108 45109 45110 var componentName = getComponentName(fiber.type) || 'ReactComponent'; 45111 45112 if (didWarnStateUpdateForUnmountedComponent !== null) { 45113 if (didWarnStateUpdateForUnmountedComponent.has(componentName)) { 45114 return; 45115 } 45116 45117 didWarnStateUpdateForUnmountedComponent.add(componentName); 45118 } else { 45119 didWarnStateUpdateForUnmountedComponent = new Set([componentName]); 45120 } 45121 45122 error("Can't perform a React state update on an unmounted component. This " + 'is a no-op, but it indicates a memory leak in your application. To ' + 'fix, cancel all subscriptions and asynchronous tasks in %s.%s', tag === ClassComponent ? 'the componentWillUnmount method' : 'a useEffect cleanup function', getStackByFiberInDevAndProd(fiber)); 45123 } 45124} 45125 45126var beginWork$1; 45127 45128{ 45129 var dummyFiber = null; 45130 45131 beginWork$1 = function (current, unitOfWork, expirationTime) { 45132 // If a component throws an error, we replay it again in a synchronously 45133 // dispatched event, so that the debugger will treat it as an uncaught 45134 // error See ReactErrorUtils for more information. 45135 // Before entering the begin phase, copy the work-in-progress onto a dummy 45136 // fiber. If beginWork throws, we'll use this to reset the state. 45137 var originalWorkInProgressCopy = assignFiberPropertiesInDEV(dummyFiber, unitOfWork); 45138 45139 try { 45140 return beginWork(current, unitOfWork, expirationTime); 45141 } catch (originalError) { 45142 if (originalError !== null && typeof originalError === 'object' && typeof originalError.then === 'function') { 45143 // Don't replay promises. Treat everything else like an error. 45144 throw originalError; 45145 } // Keep this code in sync with handleError; any changes here must have 45146 // corresponding changes there. 45147 45148 45149 resetContextDependencies(); 45150 resetHooksAfterThrow(); // Don't reset current debug fiber, since we're about to work on the 45151 // same fiber again. 45152 // Unwind the failed stack frame 45153 45154 unwindInterruptedWork(unitOfWork); // Restore the original properties of the fiber. 45155 45156 assignFiberPropertiesInDEV(unitOfWork, originalWorkInProgressCopy); 45157 45158 if ( unitOfWork.mode & ProfileMode) { 45159 // Reset the profiler timer. 45160 startProfilerTimer(unitOfWork); 45161 } // Run beginWork again. 45162 45163 45164 invokeGuardedCallback(null, beginWork, null, current, unitOfWork, expirationTime); 45165 45166 if (hasCaughtError()) { 45167 var replayError = clearCaughtError(); // `invokeGuardedCallback` sometimes sets an expando `_suppressLogging`. 45168 // Rethrow this error instead of the original one. 45169 45170 throw replayError; 45171 } else { 45172 // This branch is reachable if the render phase is impure. 45173 throw originalError; 45174 } 45175 } 45176 }; 45177} 45178 45179var didWarnAboutUpdateInRender = false; 45180var didWarnAboutUpdateInRenderForAnotherComponent; 45181 45182{ 45183 didWarnAboutUpdateInRenderForAnotherComponent = new Set(); 45184} 45185 45186function warnAboutRenderPhaseUpdatesInDEV(fiber) { 45187 { 45188 if (isRendering && (executionContext & RenderContext) !== NoContext) { 45189 switch (fiber.tag) { 45190 case FunctionComponent: 45191 case ForwardRef: 45192 case SimpleMemoComponent: 45193 { 45194 var renderingComponentName = workInProgress && getComponentName(workInProgress.type) || 'Unknown'; // Dedupe by the rendering component because it's the one that needs to be fixed. 45195 45196 var dedupeKey = renderingComponentName; 45197 45198 if (!didWarnAboutUpdateInRenderForAnotherComponent.has(dedupeKey)) { 45199 didWarnAboutUpdateInRenderForAnotherComponent.add(dedupeKey); 45200 var setStateComponentName = getComponentName(fiber.type) || 'Unknown'; 45201 45202 error('Cannot update a component (`%s`) while rendering a ' + 'different component (`%s`). To locate the bad setState() call inside `%s`, ' + 'follow the stack trace as described in https://fb.me/setstate-in-render', setStateComponentName, renderingComponentName, renderingComponentName); 45203 } 45204 45205 break; 45206 } 45207 45208 case ClassComponent: 45209 { 45210 if (!didWarnAboutUpdateInRender) { 45211 error('Cannot update during an existing state transition (such as ' + 'within `render`). Render methods should be a pure ' + 'function of props and state.'); 45212 45213 didWarnAboutUpdateInRender = true; 45214 } 45215 45216 break; 45217 } 45218 } 45219 } 45220 } 45221} // a 'shared' variable that changes when act() opens/closes in tests. 45222 45223 45224var IsThisRendererActing = { 45225 current: false 45226}; 45227function warnIfNotScopedWithMatchingAct(fiber) { 45228 { 45229 if ( IsSomeRendererActing.current === true && IsThisRendererActing.current !== true) { 45230 error("It looks like you're using the wrong act() around your test interactions.\n" + 'Be sure to use the matching version of act() corresponding to your renderer:\n\n' + '// for react-dom:\n' + "import {act} from 'react-dom/test-utils';\n" + '// ...\n' + 'act(() => ...);\n\n' + '// for react-test-renderer:\n' + "import TestRenderer from 'react-test-renderer';\n" + 'const {act} = TestRenderer;\n' + '// ...\n' + 'act(() => ...);' + '%s', getStackByFiberInDevAndProd(fiber)); 45231 } 45232 } 45233} 45234function warnIfNotCurrentlyActingEffectsInDEV(fiber) { 45235 { 45236 if ( (fiber.mode & StrictMode) !== NoMode && IsSomeRendererActing.current === false && IsThisRendererActing.current === false) { 45237 error('An update to %s ran an effect, but was not wrapped in act(...).\n\n' + 'When testing, code that causes React state updates should be ' + 'wrapped into act(...):\n\n' + 'act(() => {\n' + ' /* fire events that update state */\n' + '});\n' + '/* assert on the output */\n\n' + "This ensures that you're testing the behavior the user would see " + 'in the browser.' + ' Learn more at https://fb.me/react-wrap-tests-with-act' + '%s', getComponentName(fiber.type), getStackByFiberInDevAndProd(fiber)); 45238 } 45239 } 45240} 45241 45242function warnIfNotCurrentlyActingUpdatesInDEV(fiber) { 45243 { 45244 if ( executionContext === NoContext && IsSomeRendererActing.current === false && IsThisRendererActing.current === false) { 45245 error('An update to %s inside a test was not wrapped in act(...).\n\n' + 'When testing, code that causes React state updates should be ' + 'wrapped into act(...):\n\n' + 'act(() => {\n' + ' /* fire events that update state */\n' + '});\n' + '/* assert on the output */\n\n' + "This ensures that you're testing the behavior the user would see " + 'in the browser.' + ' Learn more at https://fb.me/react-wrap-tests-with-act' + '%s', getComponentName(fiber.type), getStackByFiberInDevAndProd(fiber)); 45246 } 45247 } 45248} 45249 45250var warnIfNotCurrentlyActingUpdatesInDev = warnIfNotCurrentlyActingUpdatesInDEV; // In tests, we want to enforce a mocked scheduler. 45251 45252var didWarnAboutUnmockedScheduler = false; // TODO Before we release concurrent mode, revisit this and decide whether a mocked 45253// scheduler is the actual recommendation. The alternative could be a testing build, 45254// a new lib, or whatever; we dunno just yet. This message is for early adopters 45255// to get their tests right. 45256 45257function warnIfUnmockedScheduler(fiber) { 45258 { 45259 if (didWarnAboutUnmockedScheduler === false && Scheduler.unstable_flushAllWithoutAsserting === undefined) { 45260 if (fiber.mode & BlockingMode || fiber.mode & ConcurrentMode) { 45261 didWarnAboutUnmockedScheduler = true; 45262 45263 error('In Concurrent or Sync modes, the "scheduler" module needs to be mocked ' + 'to guarantee consistent behaviour across tests and browsers. ' + 'For example, with jest: \n' + "jest.mock('scheduler', () => require('scheduler/unstable_mock'));\n\n" + 'For more info, visit https://fb.me/react-mock-scheduler'); 45264 } 45265 } 45266 } 45267} 45268 45269function computeThreadID(root, expirationTime) { 45270 // Interaction threads are unique per root and expiration time. 45271 return expirationTime * 1000 + root.interactionThreadID; 45272} 45273 45274function markSpawnedWork(expirationTime) { 45275 45276 if (spawnedWorkDuringRender === null) { 45277 spawnedWorkDuringRender = [expirationTime]; 45278 } else { 45279 spawnedWorkDuringRender.push(expirationTime); 45280 } 45281} 45282 45283function scheduleInteractions(root, expirationTime, interactions) { 45284 45285 if (interactions.size > 0) { 45286 var pendingInteractionMap = root.pendingInteractionMap; 45287 var pendingInteractions = pendingInteractionMap.get(expirationTime); 45288 45289 if (pendingInteractions != null) { 45290 interactions.forEach(function (interaction) { 45291 if (!pendingInteractions.has(interaction)) { 45292 // Update the pending async work count for previously unscheduled interaction. 45293 interaction.__count++; 45294 } 45295 45296 pendingInteractions.add(interaction); 45297 }); 45298 } else { 45299 pendingInteractionMap.set(expirationTime, new Set(interactions)); // Update the pending async work count for the current interactions. 45300 45301 interactions.forEach(function (interaction) { 45302 interaction.__count++; 45303 }); 45304 } 45305 45306 var subscriber = tracing.__subscriberRef.current; 45307 45308 if (subscriber !== null) { 45309 var threadID = computeThreadID(root, expirationTime); 45310 subscriber.onWorkScheduled(interactions, threadID); 45311 } 45312 } 45313} 45314 45315function schedulePendingInteractions(root, expirationTime) { 45316 45317 scheduleInteractions(root, expirationTime, tracing.__interactionsRef.current); 45318} 45319 45320function startWorkOnPendingInteractions(root, expirationTime) { 45321 // we can accurately attribute time spent working on it, And so that cascading 45322 // work triggered during the render phase will be associated with it. 45323 45324 45325 var interactions = new Set(); 45326 root.pendingInteractionMap.forEach(function (scheduledInteractions, scheduledExpirationTime) { 45327 if (scheduledExpirationTime >= expirationTime) { 45328 scheduledInteractions.forEach(function (interaction) { 45329 return interactions.add(interaction); 45330 }); 45331 } 45332 }); // Store the current set of interactions on the FiberRoot for a few reasons: 45333 // We can re-use it in hot functions like performConcurrentWorkOnRoot() 45334 // without having to recalculate it. We will also use it in commitWork() to 45335 // pass to any Profiler onRender() hooks. This also provides DevTools with a 45336 // way to access it when the onCommitRoot() hook is called. 45337 45338 root.memoizedInteractions = interactions; 45339 45340 if (interactions.size > 0) { 45341 var subscriber = tracing.__subscriberRef.current; 45342 45343 if (subscriber !== null) { 45344 var threadID = computeThreadID(root, expirationTime); 45345 45346 try { 45347 subscriber.onWorkStarted(interactions, threadID); 45348 } catch (error) { 45349 // If the subscriber throws, rethrow it in a separate task 45350 scheduleCallback(ImmediatePriority, function () { 45351 throw error; 45352 }); 45353 } 45354 } 45355 } 45356} 45357 45358function finishPendingInteractions(root, committedExpirationTime) { 45359 45360 var earliestRemainingTimeAfterCommit = root.firstPendingTime; 45361 var subscriber; 45362 45363 try { 45364 subscriber = tracing.__subscriberRef.current; 45365 45366 if (subscriber !== null && root.memoizedInteractions.size > 0) { 45367 var threadID = computeThreadID(root, committedExpirationTime); 45368 subscriber.onWorkStopped(root.memoizedInteractions, threadID); 45369 } 45370 } catch (error) { 45371 // If the subscriber throws, rethrow it in a separate task 45372 scheduleCallback(ImmediatePriority, function () { 45373 throw error; 45374 }); 45375 } finally { 45376 // Clear completed interactions from the pending Map. 45377 // Unless the render was suspended or cascading work was scheduled, 45378 // In which caseâ leave pending interactions until the subsequent render. 45379 var pendingInteractionMap = root.pendingInteractionMap; 45380 pendingInteractionMap.forEach(function (scheduledInteractions, scheduledExpirationTime) { 45381 // Only decrement the pending interaction count if we're done. 45382 // If there's still work at the current priority, 45383 // That indicates that we are waiting for suspense data. 45384 if (scheduledExpirationTime > earliestRemainingTimeAfterCommit) { 45385 pendingInteractionMap.delete(scheduledExpirationTime); 45386 scheduledInteractions.forEach(function (interaction) { 45387 interaction.__count--; 45388 45389 if (subscriber !== null && interaction.__count === 0) { 45390 try { 45391 subscriber.onInteractionScheduledWorkCompleted(interaction); 45392 } catch (error) { 45393 // If the subscriber throws, rethrow it in a separate task 45394 scheduleCallback(ImmediatePriority, function () { 45395 throw error; 45396 }); 45397 } 45398 } 45399 }); 45400 } 45401 }); 45402 } 45403} 45404 45405var onScheduleFiberRoot = null; 45406var onCommitFiberRoot = null; 45407var onCommitFiberUnmount = null; 45408var hasLoggedError = false; 45409var isDevToolsPresent = typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined'; 45410function injectInternals(internals) { 45411 if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined') { 45412 // No DevTools 45413 return false; 45414 } 45415 45416 var hook = __REACT_DEVTOOLS_GLOBAL_HOOK__; 45417 45418 if (hook.isDisabled) { 45419 // This isn't a real property on the hook, but it can be set to opt out 45420 // of DevTools integration and associated warnings and logs. 45421 // https://github.com/facebook/react/issues/3877 45422 return true; 45423 } 45424 45425 if (!hook.supportsFiber) { 45426 { 45427 error('The installed version of React DevTools is too old and will not work ' + 'with the current version of React. Please update React DevTools. ' + 'https://fb.me/react-devtools'); 45428 } // DevTools exists, even though it doesn't support Fiber. 45429 45430 45431 return true; 45432 } 45433 45434 try { 45435 var rendererID = hook.inject(internals); // We have successfully injected, so now it is safe to set up hooks. 45436 45437 if (true) { 45438 // Only used by Fast Refresh 45439 if (typeof hook.onScheduleFiberRoot === 'function') { 45440 onScheduleFiberRoot = function (root, children) { 45441 try { 45442 hook.onScheduleFiberRoot(rendererID, root, children); 45443 } catch (err) { 45444 if ( true && !hasLoggedError) { 45445 hasLoggedError = true; 45446 45447 error('React instrumentation encountered an error: %s', err); 45448 } 45449 } 45450 }; 45451 } 45452 } 45453 45454 onCommitFiberRoot = function (root, expirationTime) { 45455 try { 45456 var didError = (root.current.effectTag & DidCapture) === DidCapture; 45457 45458 if (enableProfilerTimer) { 45459 var currentTime = getCurrentTime(); 45460 var priorityLevel = inferPriorityFromExpirationTime(currentTime, expirationTime); 45461 hook.onCommitFiberRoot(rendererID, root, priorityLevel, didError); 45462 } else { 45463 hook.onCommitFiberRoot(rendererID, root, undefined, didError); 45464 } 45465 } catch (err) { 45466 if (true) { 45467 if (!hasLoggedError) { 45468 hasLoggedError = true; 45469 45470 error('React instrumentation encountered an error: %s', err); 45471 } 45472 } 45473 } 45474 }; 45475 45476 onCommitFiberUnmount = function (fiber) { 45477 try { 45478 hook.onCommitFiberUnmount(rendererID, fiber); 45479 } catch (err) { 45480 if (true) { 45481 if (!hasLoggedError) { 45482 hasLoggedError = true; 45483 45484 error('React instrumentation encountered an error: %s', err); 45485 } 45486 } 45487 } 45488 }; 45489 } catch (err) { 45490 // Catch all errors because it is unsafe to throw during initialization. 45491 { 45492 error('React instrumentation encountered an error: %s.', err); 45493 } 45494 } // DevTools exists 45495 45496 45497 return true; 45498} 45499function onScheduleRoot(root, children) { 45500 if (typeof onScheduleFiberRoot === 'function') { 45501 onScheduleFiberRoot(root, children); 45502 } 45503} 45504function onCommitRoot(root, expirationTime) { 45505 if (typeof onCommitFiberRoot === 'function') { 45506 onCommitFiberRoot(root, expirationTime); 45507 } 45508} 45509function onCommitUnmount(fiber) { 45510 if (typeof onCommitFiberUnmount === 'function') { 45511 onCommitFiberUnmount(fiber); 45512 } 45513} 45514 45515var hasBadMapPolyfill; 45516 45517{ 45518 hasBadMapPolyfill = false; 45519 45520 try { 45521 var nonExtensibleObject = Object.preventExtensions({}); 45522 var testMap = new Map([[nonExtensibleObject, null]]); 45523 var testSet = new Set([nonExtensibleObject]); // This is necessary for Rollup to not consider these unused. 45524 // https://github.com/rollup/rollup/issues/1771 45525 // TODO: we can remove these if Rollup fixes the bug. 45526 45527 testMap.set(0, 0); 45528 testSet.add(0); 45529 } catch (e) { 45530 // TODO: Consider warning about bad polyfills 45531 hasBadMapPolyfill = true; 45532 } 45533} 45534 45535var debugCounter = 1; 45536 45537function FiberNode(tag, pendingProps, key, mode) { 45538 // Instance 45539 this.tag = tag; 45540 this.key = key; 45541 this.elementType = null; 45542 this.type = null; 45543 this.stateNode = null; // Fiber 45544 45545 this.return = null; 45546 this.child = null; 45547 this.sibling = null; 45548 this.index = 0; 45549 this.ref = null; 45550 this.pendingProps = pendingProps; 45551 this.memoizedProps = null; 45552 this.updateQueue = null; 45553 this.memoizedState = null; 45554 this.dependencies = null; 45555 this.mode = mode; // Effects 45556 45557 this.effectTag = NoEffect; 45558 this.nextEffect = null; 45559 this.firstEffect = null; 45560 this.lastEffect = null; 45561 this.expirationTime = NoWork; 45562 this.childExpirationTime = NoWork; 45563 this.alternate = null; 45564 45565 { 45566 // Note: The following is done to avoid a v8 performance cliff. 45567 // 45568 // Initializing the fields below to smis and later updating them with 45569 // double values will cause Fibers to end up having separate shapes. 45570 // This behavior/bug has something to do with Object.preventExtension(). 45571 // Fortunately this only impacts DEV builds. 45572 // Unfortunately it makes React unusably slow for some applications. 45573 // To work around this, initialize the fields below with doubles. 45574 // 45575 // Learn more about this here: 45576 // https://github.com/facebook/react/issues/14365 45577 // https://bugs.chromium.org/p/v8/issues/detail?id=8538 45578 this.actualDuration = Number.NaN; 45579 this.actualStartTime = Number.NaN; 45580 this.selfBaseDuration = Number.NaN; 45581 this.treeBaseDuration = Number.NaN; // It's okay to replace the initial doubles with smis after initialization. 45582 // This won't trigger the performance cliff mentioned above, 45583 // and it simplifies other profiler code (including DevTools). 45584 45585 this.actualDuration = 0; 45586 this.actualStartTime = -1; 45587 this.selfBaseDuration = 0; 45588 this.treeBaseDuration = 0; 45589 } // This is normally DEV-only except www when it adds listeners. 45590 // TODO: remove the User Timing integration in favor of Root Events. 45591 45592 45593 { 45594 this._debugID = debugCounter++; 45595 this._debugIsCurrentlyTiming = false; 45596 } 45597 45598 { 45599 this._debugSource = null; 45600 this._debugOwner = null; 45601 this._debugNeedsRemount = false; 45602 this._debugHookTypes = null; 45603 45604 if (!hasBadMapPolyfill && typeof Object.preventExtensions === 'function') { 45605 Object.preventExtensions(this); 45606 } 45607 } 45608} // This is a constructor function, rather than a POJO constructor, still 45609// please ensure we do the following: 45610// 1) Nobody should add any instance methods on this. Instance methods can be 45611// more difficult to predict when they get optimized and they are almost 45612// never inlined properly in static compilers. 45613// 2) Nobody should rely on `instanceof Fiber` for type testing. We should 45614// always know when it is a fiber. 45615// 3) We might want to experiment with using numeric keys since they are easier 45616// to optimize in a non-JIT environment. 45617// 4) We can easily go from a constructor to a createFiber object literal if that 45618// is faster. 45619// 5) It should be easy to port this to a C struct and keep a C implementation 45620// compatible. 45621 45622 45623var createFiber = function (tag, pendingProps, key, mode) { 45624 // $FlowFixMe: the shapes are exact here but Flow doesn't like constructors 45625 return new FiberNode(tag, pendingProps, key, mode); 45626}; 45627 45628function shouldConstruct(Component) { 45629 var prototype = Component.prototype; 45630 return !!(prototype && prototype.isReactComponent); 45631} 45632 45633function isSimpleFunctionComponent(type) { 45634 return typeof type === 'function' && !shouldConstruct(type) && type.defaultProps === undefined; 45635} 45636function resolveLazyComponentTag(Component) { 45637 if (typeof Component === 'function') { 45638 return shouldConstruct(Component) ? ClassComponent : FunctionComponent; 45639 } else if (Component !== undefined && Component !== null) { 45640 var $$typeof = Component.$$typeof; 45641 45642 if ($$typeof === REACT_FORWARD_REF_TYPE) { 45643 return ForwardRef; 45644 } 45645 45646 if ($$typeof === REACT_MEMO_TYPE) { 45647 return MemoComponent; 45648 } 45649 } 45650 45651 return IndeterminateComponent; 45652} // This is used to create an alternate fiber to do work on. 45653 45654function createWorkInProgress(current, pendingProps) { 45655 var workInProgress = current.alternate; 45656 45657 if (workInProgress === null) { 45658 // We use a double buffering pooling technique because we know that we'll 45659 // only ever need at most two versions of a tree. We pool the "other" unused 45660 // node that we're free to reuse. This is lazily created to avoid allocating 45661 // extra objects for things that are never updated. It also allow us to 45662 // reclaim the extra memory if needed. 45663 workInProgress = createFiber(current.tag, pendingProps, current.key, current.mode); 45664 workInProgress.elementType = current.elementType; 45665 workInProgress.type = current.type; 45666 workInProgress.stateNode = current.stateNode; 45667 45668 { 45669 // DEV-only fields 45670 { 45671 workInProgress._debugID = current._debugID; 45672 } 45673 45674 workInProgress._debugSource = current._debugSource; 45675 workInProgress._debugOwner = current._debugOwner; 45676 workInProgress._debugHookTypes = current._debugHookTypes; 45677 } 45678 45679 workInProgress.alternate = current; 45680 current.alternate = workInProgress; 45681 } else { 45682 workInProgress.pendingProps = pendingProps; // We already have an alternate. 45683 // Reset the effect tag. 45684 45685 workInProgress.effectTag = NoEffect; // The effect list is no longer valid. 45686 45687 workInProgress.nextEffect = null; 45688 workInProgress.firstEffect = null; 45689 workInProgress.lastEffect = null; 45690 45691 { 45692 // We intentionally reset, rather than copy, actualDuration & actualStartTime. 45693 // This prevents time from endlessly accumulating in new commits. 45694 // This has the downside of resetting values for different priority renders, 45695 // But works for yielding (the common case) and should support resuming. 45696 workInProgress.actualDuration = 0; 45697 workInProgress.actualStartTime = -1; 45698 } 45699 } 45700 45701 workInProgress.childExpirationTime = current.childExpirationTime; 45702 workInProgress.expirationTime = current.expirationTime; 45703 workInProgress.child = current.child; 45704 workInProgress.memoizedProps = current.memoizedProps; 45705 workInProgress.memoizedState = current.memoizedState; 45706 workInProgress.updateQueue = current.updateQueue; // Clone the dependencies object. This is mutated during the render phase, so 45707 // it cannot be shared with the current fiber. 45708 45709 var currentDependencies = current.dependencies; 45710 workInProgress.dependencies = currentDependencies === null ? null : { 45711 expirationTime: currentDependencies.expirationTime, 45712 firstContext: currentDependencies.firstContext, 45713 responders: currentDependencies.responders 45714 }; // These will be overridden during the parent's reconciliation 45715 45716 workInProgress.sibling = current.sibling; 45717 workInProgress.index = current.index; 45718 workInProgress.ref = current.ref; 45719 45720 { 45721 workInProgress.selfBaseDuration = current.selfBaseDuration; 45722 workInProgress.treeBaseDuration = current.treeBaseDuration; 45723 } 45724 45725 { 45726 workInProgress._debugNeedsRemount = current._debugNeedsRemount; 45727 45728 switch (workInProgress.tag) { 45729 case IndeterminateComponent: 45730 case FunctionComponent: 45731 case SimpleMemoComponent: 45732 workInProgress.type = resolveFunctionForHotReloading(current.type); 45733 break; 45734 45735 case ClassComponent: 45736 workInProgress.type = resolveClassForHotReloading(current.type); 45737 break; 45738 45739 case ForwardRef: 45740 workInProgress.type = resolveForwardRefForHotReloading(current.type); 45741 break; 45742 } 45743 } 45744 45745 return workInProgress; 45746} // Used to reuse a Fiber for a second pass. 45747 45748function resetWorkInProgress(workInProgress, renderExpirationTime) { 45749 // This resets the Fiber to what createFiber or createWorkInProgress would 45750 // have set the values to before during the first pass. Ideally this wouldn't 45751 // be necessary but unfortunately many code paths reads from the workInProgress 45752 // when they should be reading from current and writing to workInProgress. 45753 // We assume pendingProps, index, key, ref, return are still untouched to 45754 // avoid doing another reconciliation. 45755 // Reset the effect tag but keep any Placement tags, since that's something 45756 // that child fiber is setting, not the reconciliation. 45757 workInProgress.effectTag &= Placement; // The effect list is no longer valid. 45758 45759 workInProgress.nextEffect = null; 45760 workInProgress.firstEffect = null; 45761 workInProgress.lastEffect = null; 45762 var current = workInProgress.alternate; 45763 45764 if (current === null) { 45765 // Reset to createFiber's initial values. 45766 workInProgress.childExpirationTime = NoWork; 45767 workInProgress.expirationTime = renderExpirationTime; 45768 workInProgress.child = null; 45769 workInProgress.memoizedProps = null; 45770 workInProgress.memoizedState = null; 45771 workInProgress.updateQueue = null; 45772 workInProgress.dependencies = null; 45773 45774 { 45775 // Note: We don't reset the actualTime counts. It's useful to accumulate 45776 // actual time across multiple render passes. 45777 workInProgress.selfBaseDuration = 0; 45778 workInProgress.treeBaseDuration = 0; 45779 } 45780 } else { 45781 // Reset to the cloned values that createWorkInProgress would've. 45782 workInProgress.childExpirationTime = current.childExpirationTime; 45783 workInProgress.expirationTime = current.expirationTime; 45784 workInProgress.child = current.child; 45785 workInProgress.memoizedProps = current.memoizedProps; 45786 workInProgress.memoizedState = current.memoizedState; 45787 workInProgress.updateQueue = current.updateQueue; // Clone the dependencies object. This is mutated during the render phase, so 45788 // it cannot be shared with the current fiber. 45789 45790 var currentDependencies = current.dependencies; 45791 workInProgress.dependencies = currentDependencies === null ? null : { 45792 expirationTime: currentDependencies.expirationTime, 45793 firstContext: currentDependencies.firstContext, 45794 responders: currentDependencies.responders 45795 }; 45796 45797 { 45798 // Note: We don't reset the actualTime counts. It's useful to accumulate 45799 // actual time across multiple render passes. 45800 workInProgress.selfBaseDuration = current.selfBaseDuration; 45801 workInProgress.treeBaseDuration = current.treeBaseDuration; 45802 } 45803 } 45804 45805 return workInProgress; 45806} 45807function createHostRootFiber(tag) { 45808 var mode; 45809 45810 if (tag === ConcurrentRoot) { 45811 mode = ConcurrentMode | BlockingMode | StrictMode; 45812 } else if (tag === BlockingRoot) { 45813 mode = BlockingMode | StrictMode; 45814 } else { 45815 mode = NoMode; 45816 } 45817 45818 if ( isDevToolsPresent) { 45819 // Always collect profile timings when DevTools are present. 45820 // This enables DevTools to start capturing timing at any pointâ 45821 // Without some nodes in the tree having empty base times. 45822 mode |= ProfileMode; 45823 } 45824 45825 return createFiber(HostRoot, null, null, mode); 45826} 45827function createFiberFromTypeAndProps(type, // React$ElementType 45828key, pendingProps, owner, mode, expirationTime) { 45829 var fiber; 45830 var fiberTag = IndeterminateComponent; // The resolved type is set if we know what the final type will be. I.e. it's not lazy. 45831 45832 var resolvedType = type; 45833 45834 if (typeof type === 'function') { 45835 if (shouldConstruct(type)) { 45836 fiberTag = ClassComponent; 45837 45838 { 45839 resolvedType = resolveClassForHotReloading(resolvedType); 45840 } 45841 } else { 45842 { 45843 resolvedType = resolveFunctionForHotReloading(resolvedType); 45844 } 45845 } 45846 } else if (typeof type === 'string') { 45847 fiberTag = HostComponent; 45848 } else { 45849 getTag: switch (type) { 45850 case REACT_FRAGMENT_TYPE: 45851 return createFiberFromFragment(pendingProps.children, mode, expirationTime, key); 45852 45853 case REACT_CONCURRENT_MODE_TYPE: 45854 fiberTag = Mode; 45855 mode |= ConcurrentMode | BlockingMode | StrictMode; 45856 break; 45857 45858 case REACT_STRICT_MODE_TYPE: 45859 fiberTag = Mode; 45860 mode |= StrictMode; 45861 break; 45862 45863 case REACT_PROFILER_TYPE: 45864 return createFiberFromProfiler(pendingProps, mode, expirationTime, key); 45865 45866 case REACT_SUSPENSE_TYPE: 45867 return createFiberFromSuspense(pendingProps, mode, expirationTime, key); 45868 45869 case REACT_SUSPENSE_LIST_TYPE: 45870 return createFiberFromSuspenseList(pendingProps, mode, expirationTime, key); 45871 45872 default: 45873 { 45874 if (typeof type === 'object' && type !== null) { 45875 switch (type.$$typeof) { 45876 case REACT_PROVIDER_TYPE: 45877 fiberTag = ContextProvider; 45878 break getTag; 45879 45880 case REACT_CONTEXT_TYPE: 45881 // This is a consumer 45882 fiberTag = ContextConsumer; 45883 break getTag; 45884 45885 case REACT_FORWARD_REF_TYPE: 45886 fiberTag = ForwardRef; 45887 45888 { 45889 resolvedType = resolveForwardRefForHotReloading(resolvedType); 45890 } 45891 45892 break getTag; 45893 45894 case REACT_MEMO_TYPE: 45895 fiberTag = MemoComponent; 45896 break getTag; 45897 45898 case REACT_LAZY_TYPE: 45899 fiberTag = LazyComponent; 45900 resolvedType = null; 45901 break getTag; 45902 45903 case REACT_BLOCK_TYPE: 45904 fiberTag = Block; 45905 break getTag; 45906 45907 } 45908 } 45909 45910 var info = ''; 45911 45912 { 45913 if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) { 45914 info += ' You likely forgot to export your component from the file ' + "it's defined in, or you might have mixed up default and " + 'named imports.'; 45915 } 45916 45917 var ownerName = owner ? getComponentName(owner.type) : null; 45918 45919 if (ownerName) { 45920 info += '\n\nCheck the render method of `' + ownerName + '`.'; 45921 } 45922 } 45923 45924 { 45925 { 45926 throw Error( "Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: " + (type == null ? type : typeof type) + "." + info ); 45927 } 45928 } 45929 } 45930 } 45931 } 45932 45933 fiber = createFiber(fiberTag, pendingProps, key, mode); 45934 fiber.elementType = type; 45935 fiber.type = resolvedType; 45936 fiber.expirationTime = expirationTime; 45937 return fiber; 45938} 45939function createFiberFromElement(element, mode, expirationTime) { 45940 var owner = null; 45941 45942 { 45943 owner = element._owner; 45944 } 45945 45946 var type = element.type; 45947 var key = element.key; 45948 var pendingProps = element.props; 45949 var fiber = createFiberFromTypeAndProps(type, key, pendingProps, owner, mode, expirationTime); 45950 45951 { 45952 fiber._debugSource = element._source; 45953 fiber._debugOwner = element._owner; 45954 } 45955 45956 return fiber; 45957} 45958function createFiberFromFragment(elements, mode, expirationTime, key) { 45959 var fiber = createFiber(Fragment, elements, key, mode); 45960 fiber.expirationTime = expirationTime; 45961 return fiber; 45962} 45963 45964function createFiberFromProfiler(pendingProps, mode, expirationTime, key) { 45965 { 45966 if (typeof pendingProps.id !== 'string' || typeof pendingProps.onRender !== 'function') { 45967 error('Profiler must specify an "id" string and "onRender" function as props'); 45968 } 45969 } 45970 45971 var fiber = createFiber(Profiler, pendingProps, key, mode | ProfileMode); // TODO: The Profiler fiber shouldn't have a type. It has a tag. 45972 45973 fiber.elementType = REACT_PROFILER_TYPE; 45974 fiber.type = REACT_PROFILER_TYPE; 45975 fiber.expirationTime = expirationTime; 45976 return fiber; 45977} 45978 45979function createFiberFromSuspense(pendingProps, mode, expirationTime, key) { 45980 var fiber = createFiber(SuspenseComponent, pendingProps, key, mode); // TODO: The SuspenseComponent fiber shouldn't have a type. It has a tag. 45981 // This needs to be fixed in getComponentName so that it relies on the tag 45982 // instead. 45983 45984 fiber.type = REACT_SUSPENSE_TYPE; 45985 fiber.elementType = REACT_SUSPENSE_TYPE; 45986 fiber.expirationTime = expirationTime; 45987 return fiber; 45988} 45989function createFiberFromSuspenseList(pendingProps, mode, expirationTime, key) { 45990 var fiber = createFiber(SuspenseListComponent, pendingProps, key, mode); 45991 45992 { 45993 // TODO: The SuspenseListComponent fiber shouldn't have a type. It has a tag. 45994 // This needs to be fixed in getComponentName so that it relies on the tag 45995 // instead. 45996 fiber.type = REACT_SUSPENSE_LIST_TYPE; 45997 } 45998 45999 fiber.elementType = REACT_SUSPENSE_LIST_TYPE; 46000 fiber.expirationTime = expirationTime; 46001 return fiber; 46002} 46003function createFiberFromText(content, mode, expirationTime) { 46004 var fiber = createFiber(HostText, content, null, mode); 46005 fiber.expirationTime = expirationTime; 46006 return fiber; 46007} 46008function createFiberFromHostInstanceForDeletion() { 46009 var fiber = createFiber(HostComponent, null, null, NoMode); // TODO: These should not need a type. 46010 46011 fiber.elementType = 'DELETED'; 46012 fiber.type = 'DELETED'; 46013 return fiber; 46014} 46015function createFiberFromPortal(portal, mode, expirationTime) { 46016 var pendingProps = portal.children !== null ? portal.children : []; 46017 var fiber = createFiber(HostPortal, pendingProps, portal.key, mode); 46018 fiber.expirationTime = expirationTime; 46019 fiber.stateNode = { 46020 containerInfo: portal.containerInfo, 46021 pendingChildren: null, 46022 // Used by persistent updates 46023 implementation: portal.implementation 46024 }; 46025 return fiber; 46026} // Used for stashing WIP properties to replay failed work in DEV. 46027 46028function assignFiberPropertiesInDEV(target, source) { 46029 if (target === null) { 46030 // This Fiber's initial properties will always be overwritten. 46031 // We only use a Fiber to ensure the same hidden class so DEV isn't slow. 46032 target = createFiber(IndeterminateComponent, null, null, NoMode); 46033 } // This is intentionally written as a list of all properties. 46034 // We tried to use Object.assign() instead but this is called in 46035 // the hottest path, and Object.assign() was too slow: 46036 // https://github.com/facebook/react/issues/12502 46037 // This code is DEV-only so size is not a concern. 46038 46039 46040 target.tag = source.tag; 46041 target.key = source.key; 46042 target.elementType = source.elementType; 46043 target.type = source.type; 46044 target.stateNode = source.stateNode; 46045 target.return = source.return; 46046 target.child = source.child; 46047 target.sibling = source.sibling; 46048 target.index = source.index; 46049 target.ref = source.ref; 46050 target.pendingProps = source.pendingProps; 46051 target.memoizedProps = source.memoizedProps; 46052 target.updateQueue = source.updateQueue; 46053 target.memoizedState = source.memoizedState; 46054 target.dependencies = source.dependencies; 46055 target.mode = source.mode; 46056 target.effectTag = source.effectTag; 46057 target.nextEffect = source.nextEffect; 46058 target.firstEffect = source.firstEffect; 46059 target.lastEffect = source.lastEffect; 46060 target.expirationTime = source.expirationTime; 46061 target.childExpirationTime = source.childExpirationTime; 46062 target.alternate = source.alternate; 46063 46064 { 46065 target.actualDuration = source.actualDuration; 46066 target.actualStartTime = source.actualStartTime; 46067 target.selfBaseDuration = source.selfBaseDuration; 46068 target.treeBaseDuration = source.treeBaseDuration; 46069 } 46070 46071 { 46072 target._debugID = source._debugID; 46073 } 46074 46075 target._debugSource = source._debugSource; 46076 target._debugOwner = source._debugOwner; 46077 target._debugIsCurrentlyTiming = source._debugIsCurrentlyTiming; 46078 target._debugNeedsRemount = source._debugNeedsRemount; 46079 target._debugHookTypes = source._debugHookTypes; 46080 return target; 46081} 46082 46083function FiberRootNode(containerInfo, tag, hydrate) { 46084 this.tag = tag; 46085 this.current = null; 46086 this.containerInfo = containerInfo; 46087 this.pendingChildren = null; 46088 this.pingCache = null; 46089 this.finishedExpirationTime = NoWork; 46090 this.finishedWork = null; 46091 this.timeoutHandle = noTimeout; 46092 this.context = null; 46093 this.pendingContext = null; 46094 this.hydrate = hydrate; 46095 this.callbackNode = null; 46096 this.callbackPriority = NoPriority; 46097 this.firstPendingTime = NoWork; 46098 this.firstSuspendedTime = NoWork; 46099 this.lastSuspendedTime = NoWork; 46100 this.nextKnownPendingLevel = NoWork; 46101 this.lastPingedTime = NoWork; 46102 this.lastExpiredTime = NoWork; 46103 46104 { 46105 this.interactionThreadID = tracing.unstable_getThreadID(); 46106 this.memoizedInteractions = new Set(); 46107 this.pendingInteractionMap = new Map(); 46108 } 46109} 46110 46111function createFiberRoot(containerInfo, tag, hydrate, hydrationCallbacks) { 46112 var root = new FiberRootNode(containerInfo, tag, hydrate); 46113 // stateNode is any. 46114 46115 46116 var uninitializedFiber = createHostRootFiber(tag); 46117 root.current = uninitializedFiber; 46118 uninitializedFiber.stateNode = root; 46119 initializeUpdateQueue(uninitializedFiber); 46120 return root; 46121} 46122function isRootSuspendedAtTime(root, expirationTime) { 46123 var firstSuspendedTime = root.firstSuspendedTime; 46124 var lastSuspendedTime = root.lastSuspendedTime; 46125 return firstSuspendedTime !== NoWork && firstSuspendedTime >= expirationTime && lastSuspendedTime <= expirationTime; 46126} 46127function markRootSuspendedAtTime(root, expirationTime) { 46128 var firstSuspendedTime = root.firstSuspendedTime; 46129 var lastSuspendedTime = root.lastSuspendedTime; 46130 46131 if (firstSuspendedTime < expirationTime) { 46132 root.firstSuspendedTime = expirationTime; 46133 } 46134 46135 if (lastSuspendedTime > expirationTime || firstSuspendedTime === NoWork) { 46136 root.lastSuspendedTime = expirationTime; 46137 } 46138 46139 if (expirationTime <= root.lastPingedTime) { 46140 root.lastPingedTime = NoWork; 46141 } 46142 46143 if (expirationTime <= root.lastExpiredTime) { 46144 root.lastExpiredTime = NoWork; 46145 } 46146} 46147function markRootUpdatedAtTime(root, expirationTime) { 46148 // Update the range of pending times 46149 var firstPendingTime = root.firstPendingTime; 46150 46151 if (expirationTime > firstPendingTime) { 46152 root.firstPendingTime = expirationTime; 46153 } // Update the range of suspended times. Treat everything lower priority or 46154 // equal to this update as unsuspended. 46155 46156 46157 var firstSuspendedTime = root.firstSuspendedTime; 46158 46159 if (firstSuspendedTime !== NoWork) { 46160 if (expirationTime >= firstSuspendedTime) { 46161 // The entire suspended range is now unsuspended. 46162 root.firstSuspendedTime = root.lastSuspendedTime = root.nextKnownPendingLevel = NoWork; 46163 } else if (expirationTime >= root.lastSuspendedTime) { 46164 root.lastSuspendedTime = expirationTime + 1; 46165 } // This is a pending level. Check if it's higher priority than the next 46166 // known pending level. 46167 46168 46169 if (expirationTime > root.nextKnownPendingLevel) { 46170 root.nextKnownPendingLevel = expirationTime; 46171 } 46172 } 46173} 46174function markRootFinishedAtTime(root, finishedExpirationTime, remainingExpirationTime) { 46175 // Update the range of pending times 46176 root.firstPendingTime = remainingExpirationTime; // Update the range of suspended times. Treat everything higher priority or 46177 // equal to this update as unsuspended. 46178 46179 if (finishedExpirationTime <= root.lastSuspendedTime) { 46180 // The entire suspended range is now unsuspended. 46181 root.firstSuspendedTime = root.lastSuspendedTime = root.nextKnownPendingLevel = NoWork; 46182 } else if (finishedExpirationTime <= root.firstSuspendedTime) { 46183 // Part of the suspended range is now unsuspended. Narrow the range to 46184 // include everything between the unsuspended time (non-inclusive) and the 46185 // last suspended time. 46186 root.firstSuspendedTime = finishedExpirationTime - 1; 46187 } 46188 46189 if (finishedExpirationTime <= root.lastPingedTime) { 46190 // Clear the pinged time 46191 root.lastPingedTime = NoWork; 46192 } 46193 46194 if (finishedExpirationTime <= root.lastExpiredTime) { 46195 // Clear the expired time 46196 root.lastExpiredTime = NoWork; 46197 } 46198} 46199function markRootExpiredAtTime(root, expirationTime) { 46200 var lastExpiredTime = root.lastExpiredTime; 46201 46202 if (lastExpiredTime === NoWork || lastExpiredTime > expirationTime) { 46203 root.lastExpiredTime = expirationTime; 46204 } 46205} 46206 46207var didWarnAboutNestedUpdates; 46208var didWarnAboutFindNodeInStrictMode; 46209 46210{ 46211 didWarnAboutNestedUpdates = false; 46212 didWarnAboutFindNodeInStrictMode = {}; 46213} 46214 46215function getContextForSubtree(parentComponent) { 46216 if (!parentComponent) { 46217 return emptyContextObject; 46218 } 46219 46220 var fiber = get(parentComponent); 46221 var parentContext = findCurrentUnmaskedContext(fiber); 46222 46223 if (fiber.tag === ClassComponent) { 46224 var Component = fiber.type; 46225 46226 if (isContextProvider(Component)) { 46227 return processChildContext(fiber, Component, parentContext); 46228 } 46229 } 46230 46231 return parentContext; 46232} 46233 46234function findHostInstanceWithWarning(component, methodName) { 46235 { 46236 var fiber = get(component); 46237 46238 if (fiber === undefined) { 46239 if (typeof component.render === 'function') { 46240 { 46241 { 46242 throw Error( "Unable to find node on an unmounted component." ); 46243 } 46244 } 46245 } else { 46246 { 46247 { 46248 throw Error( "Argument appears to not be a ReactComponent. Keys: " + Object.keys(component) ); 46249 } 46250 } 46251 } 46252 } 46253 46254 var hostFiber = findCurrentHostFiber(fiber); 46255 46256 if (hostFiber === null) { 46257 return null; 46258 } 46259 46260 if (hostFiber.mode & StrictMode) { 46261 var componentName = getComponentName(fiber.type) || 'Component'; 46262 46263 if (!didWarnAboutFindNodeInStrictMode[componentName]) { 46264 didWarnAboutFindNodeInStrictMode[componentName] = true; 46265 46266 if (fiber.mode & StrictMode) { 46267 error('%s is deprecated in StrictMode. ' + '%s was passed an instance of %s which is inside StrictMode. ' + 'Instead, add a ref directly to the element you want to reference. ' + 'Learn more about using refs safely here: ' + 'https://fb.me/react-strict-mode-find-node%s', methodName, methodName, componentName, getStackByFiberInDevAndProd(hostFiber)); 46268 } else { 46269 error('%s is deprecated in StrictMode. ' + '%s was passed an instance of %s which renders StrictMode children. ' + 'Instead, add a ref directly to the element you want to reference. ' + 'Learn more about using refs safely here: ' + 'https://fb.me/react-strict-mode-find-node%s', methodName, methodName, componentName, getStackByFiberInDevAndProd(hostFiber)); 46270 } 46271 } 46272 } 46273 46274 return hostFiber.stateNode; 46275 } 46276} 46277 46278function createContainer(containerInfo, tag, hydrate, hydrationCallbacks) { 46279 return createFiberRoot(containerInfo, tag, hydrate); 46280} 46281function updateContainer(element, container, parentComponent, callback) { 46282 { 46283 onScheduleRoot(container, element); 46284 } 46285 46286 var current$1 = container.current; 46287 var currentTime = requestCurrentTimeForUpdate(); 46288 46289 { 46290 // $FlowExpectedError - jest isn't a global, and isn't recognized outside of tests 46291 if ('undefined' !== typeof jest) { 46292 warnIfUnmockedScheduler(current$1); 46293 warnIfNotScopedWithMatchingAct(current$1); 46294 } 46295 } 46296 46297 var suspenseConfig = requestCurrentSuspenseConfig(); 46298 var expirationTime = computeExpirationForFiber(currentTime, current$1, suspenseConfig); 46299 var context = getContextForSubtree(parentComponent); 46300 46301 if (container.context === null) { 46302 container.context = context; 46303 } else { 46304 container.pendingContext = context; 46305 } 46306 46307 { 46308 if (isRendering && current !== null && !didWarnAboutNestedUpdates) { 46309 didWarnAboutNestedUpdates = true; 46310 46311 error('Render methods should be a pure function of props and state; ' + 'triggering nested component updates from render is not allowed. ' + 'If necessary, trigger nested updates in componentDidUpdate.\n\n' + 'Check the render method of %s.', getComponentName(current.type) || 'Unknown'); 46312 } 46313 } 46314 46315 var update = createUpdate(expirationTime, suspenseConfig); // Caution: React DevTools currently depends on this property 46316 // being called "element". 46317 46318 update.payload = { 46319 element: element 46320 }; 46321 callback = callback === undefined ? null : callback; 46322 46323 if (callback !== null) { 46324 { 46325 if (typeof callback !== 'function') { 46326 error('render(...): Expected the last optional `callback` argument to be a ' + 'function. Instead received: %s.', callback); 46327 } 46328 } 46329 46330 update.callback = callback; 46331 } 46332 46333 enqueueUpdate(current$1, update); 46334 scheduleWork(current$1, expirationTime); 46335 return expirationTime; 46336} 46337function getPublicRootInstance(container) { 46338 var containerFiber = container.current; 46339 46340 if (!containerFiber.child) { 46341 return null; 46342 } 46343 46344 switch (containerFiber.child.tag) { 46345 case HostComponent: 46346 return getPublicInstance(containerFiber.child.stateNode); 46347 46348 default: 46349 return containerFiber.child.stateNode; 46350 } 46351} 46352 46353function markRetryTimeImpl(fiber, retryTime) { 46354 var suspenseState = fiber.memoizedState; 46355 46356 if (suspenseState !== null && suspenseState.dehydrated !== null) { 46357 if (suspenseState.retryTime < retryTime) { 46358 suspenseState.retryTime = retryTime; 46359 } 46360 } 46361} // Increases the priority of thennables when they resolve within this boundary. 46362 46363 46364function markRetryTimeIfNotHydrated(fiber, retryTime) { 46365 markRetryTimeImpl(fiber, retryTime); 46366 var alternate = fiber.alternate; 46367 46368 if (alternate) { 46369 markRetryTimeImpl(alternate, retryTime); 46370 } 46371} 46372 46373function attemptUserBlockingHydration$1(fiber) { 46374 if (fiber.tag !== SuspenseComponent) { 46375 // We ignore HostRoots here because we can't increase 46376 // their priority and they should not suspend on I/O, 46377 // since you have to wrap anything that might suspend in 46378 // Suspense. 46379 return; 46380 } 46381 46382 var expTime = computeInteractiveExpiration(requestCurrentTimeForUpdate()); 46383 scheduleWork(fiber, expTime); 46384 markRetryTimeIfNotHydrated(fiber, expTime); 46385} 46386function attemptContinuousHydration$1(fiber) { 46387 if (fiber.tag !== SuspenseComponent) { 46388 // We ignore HostRoots here because we can't increase 46389 // their priority and they should not suspend on I/O, 46390 // since you have to wrap anything that might suspend in 46391 // Suspense. 46392 return; 46393 } 46394 46395 scheduleWork(fiber, ContinuousHydration); 46396 markRetryTimeIfNotHydrated(fiber, ContinuousHydration); 46397} 46398function attemptHydrationAtCurrentPriority$1(fiber) { 46399 if (fiber.tag !== SuspenseComponent) { 46400 // We ignore HostRoots here because we can't increase 46401 // their priority other than synchronously flush it. 46402 return; 46403 } 46404 46405 var currentTime = requestCurrentTimeForUpdate(); 46406 var expTime = computeExpirationForFiber(currentTime, fiber, null); 46407 scheduleWork(fiber, expTime); 46408 markRetryTimeIfNotHydrated(fiber, expTime); 46409} 46410function findHostInstanceWithNoPortals(fiber) { 46411 var hostFiber = findCurrentHostFiberWithNoPortals(fiber); 46412 46413 if (hostFiber === null) { 46414 return null; 46415 } 46416 46417 if (hostFiber.tag === FundamentalComponent) { 46418 return hostFiber.stateNode.instance; 46419 } 46420 46421 return hostFiber.stateNode; 46422} 46423 46424var shouldSuspendImpl = function (fiber) { 46425 return false; 46426}; 46427 46428function shouldSuspend(fiber) { 46429 return shouldSuspendImpl(fiber); 46430} 46431var overrideHookState = null; 46432var overrideProps = null; 46433var scheduleUpdate = null; 46434var setSuspenseHandler = null; 46435 46436{ 46437 var copyWithSetImpl = function (obj, path, idx, value) { 46438 if (idx >= path.length) { 46439 return value; 46440 } 46441 46442 var key = path[idx]; 46443 var updated = Array.isArray(obj) ? obj.slice() : _assign({}, obj); // $FlowFixMe number or string is fine here 46444 46445 updated[key] = copyWithSetImpl(obj[key], path, idx + 1, value); 46446 return updated; 46447 }; 46448 46449 var copyWithSet = function (obj, path, value) { 46450 return copyWithSetImpl(obj, path, 0, value); 46451 }; // Support DevTools editable values for useState and useReducer. 46452 46453 46454 overrideHookState = function (fiber, id, path, value) { 46455 // For now, the "id" of stateful hooks is just the stateful hook index. 46456 // This may change in the future with e.g. nested hooks. 46457 var currentHook = fiber.memoizedState; 46458 46459 while (currentHook !== null && id > 0) { 46460 currentHook = currentHook.next; 46461 id--; 46462 } 46463 46464 if (currentHook !== null) { 46465 var newState = copyWithSet(currentHook.memoizedState, path, value); 46466 currentHook.memoizedState = newState; 46467 currentHook.baseState = newState; // We aren't actually adding an update to the queue, 46468 // because there is no update we can add for useReducer hooks that won't trigger an error. 46469 // (There's no appropriate action type for DevTools overrides.) 46470 // As a result though, React will see the scheduled update as a noop and bailout. 46471 // Shallow cloning props works as a workaround for now to bypass the bailout check. 46472 46473 fiber.memoizedProps = _assign({}, fiber.memoizedProps); 46474 scheduleWork(fiber, Sync); 46475 } 46476 }; // Support DevTools props for function components, forwardRef, memo, host components, etc. 46477 46478 46479 overrideProps = function (fiber, path, value) { 46480 fiber.pendingProps = copyWithSet(fiber.memoizedProps, path, value); 46481 46482 if (fiber.alternate) { 46483 fiber.alternate.pendingProps = fiber.pendingProps; 46484 } 46485 46486 scheduleWork(fiber, Sync); 46487 }; 46488 46489 scheduleUpdate = function (fiber) { 46490 scheduleWork(fiber, Sync); 46491 }; 46492 46493 setSuspenseHandler = function (newShouldSuspendImpl) { 46494 shouldSuspendImpl = newShouldSuspendImpl; 46495 }; 46496} 46497 46498function injectIntoDevTools(devToolsConfig) { 46499 var findFiberByHostInstance = devToolsConfig.findFiberByHostInstance; 46500 var ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher; 46501 return injectInternals(_assign({}, devToolsConfig, { 46502 overrideHookState: overrideHookState, 46503 overrideProps: overrideProps, 46504 setSuspenseHandler: setSuspenseHandler, 46505 scheduleUpdate: scheduleUpdate, 46506 currentDispatcherRef: ReactCurrentDispatcher, 46507 findHostInstanceByFiber: function (fiber) { 46508 var hostFiber = findCurrentHostFiber(fiber); 46509 46510 if (hostFiber === null) { 46511 return null; 46512 } 46513 46514 return hostFiber.stateNode; 46515 }, 46516 findFiberByHostInstance: function (instance) { 46517 if (!findFiberByHostInstance) { 46518 // Might not be implemented by the renderer. 46519 return null; 46520 } 46521 46522 return findFiberByHostInstance(instance); 46523 }, 46524 // React Refresh 46525 findHostInstancesForRefresh: findHostInstancesForRefresh , 46526 scheduleRefresh: scheduleRefresh , 46527 scheduleRoot: scheduleRoot , 46528 setRefreshHandler: setRefreshHandler , 46529 // Enables DevTools to append owner stacks to error messages in DEV mode. 46530 getCurrentFiber: function () { 46531 return current; 46532 } 46533 })); 46534} 46535var IsSomeRendererActing$1 = ReactSharedInternals.IsSomeRendererActing; 46536 46537function ReactDOMRoot(container, options) { 46538 this._internalRoot = createRootImpl(container, ConcurrentRoot, options); 46539} 46540 46541function ReactDOMBlockingRoot(container, tag, options) { 46542 this._internalRoot = createRootImpl(container, tag, options); 46543} 46544 46545ReactDOMRoot.prototype.render = ReactDOMBlockingRoot.prototype.render = function (children) { 46546 var root = this._internalRoot; 46547 46548 { 46549 if (typeof arguments[1] === 'function') { 46550 error('render(...): does not support the second callback argument. ' + 'To execute a side effect after rendering, declare it in a component body with useEffect().'); 46551 } 46552 46553 var container = root.containerInfo; 46554 46555 if (container.nodeType !== COMMENT_NODE) { 46556 var hostInstance = findHostInstanceWithNoPortals(root.current); 46557 46558 if (hostInstance) { 46559 if (hostInstance.parentNode !== container) { 46560 error('render(...): It looks like the React-rendered content of the ' + 'root container was removed without using React. This is not ' + 'supported and will cause errors. Instead, call ' + "root.unmount() to empty a root's container."); 46561 } 46562 } 46563 } 46564 } 46565 46566 updateContainer(children, root, null, null); 46567}; 46568 46569ReactDOMRoot.prototype.unmount = ReactDOMBlockingRoot.prototype.unmount = function () { 46570 { 46571 if (typeof arguments[0] === 'function') { 46572 error('unmount(...): does not support a callback argument. ' + 'To execute a side effect after rendering, declare it in a component body with useEffect().'); 46573 } 46574 } 46575 46576 var root = this._internalRoot; 46577 var container = root.containerInfo; 46578 updateContainer(null, root, null, function () { 46579 unmarkContainerAsRoot(container); 46580 }); 46581}; 46582 46583function createRootImpl(container, tag, options) { 46584 // Tag is either LegacyRoot or Concurrent Root 46585 var hydrate = options != null && options.hydrate === true; 46586 var hydrationCallbacks = options != null && options.hydrationOptions || null; 46587 var root = createContainer(container, tag, hydrate); 46588 markContainerAsRoot(root.current, container); 46589 46590 if (hydrate && tag !== LegacyRoot) { 46591 var doc = container.nodeType === DOCUMENT_NODE ? container : container.ownerDocument; 46592 eagerlyTrapReplayableEvents(container, doc); 46593 } 46594 46595 return root; 46596} 46597function createLegacyRoot(container, options) { 46598 return new ReactDOMBlockingRoot(container, LegacyRoot, options); 46599} 46600function isValidContainer(node) { 46601 return !!(node && (node.nodeType === ELEMENT_NODE || node.nodeType === DOCUMENT_NODE || node.nodeType === DOCUMENT_FRAGMENT_NODE || node.nodeType === COMMENT_NODE && node.nodeValue === ' react-mount-point-unstable ')); 46602} 46603 46604var ReactCurrentOwner$3 = ReactSharedInternals.ReactCurrentOwner; 46605var topLevelUpdateWarnings; 46606var warnedAboutHydrateAPI = false; 46607 46608{ 46609 topLevelUpdateWarnings = function (container) { 46610 if (container._reactRootContainer && container.nodeType !== COMMENT_NODE) { 46611 var hostInstance = findHostInstanceWithNoPortals(container._reactRootContainer._internalRoot.current); 46612 46613 if (hostInstance) { 46614 if (hostInstance.parentNode !== container) { 46615 error('render(...): It looks like the React-rendered content of this ' + 'container was removed without using React. This is not ' + 'supported and will cause errors. Instead, call ' + 'ReactDOM.unmountComponentAtNode to empty a container.'); 46616 } 46617 } 46618 } 46619 46620 var isRootRenderedBySomeReact = !!container._reactRootContainer; 46621 var rootEl = getReactRootElementInContainer(container); 46622 var hasNonRootReactChild = !!(rootEl && getInstanceFromNode$1(rootEl)); 46623 46624 if (hasNonRootReactChild && !isRootRenderedBySomeReact) { 46625 error('render(...): Replacing React-rendered children with a new root ' + 'component. If you intended to update the children of this node, ' + 'you should instead have the existing children update their state ' + 'and render the new components instead of calling ReactDOM.render.'); 46626 } 46627 46628 if (container.nodeType === ELEMENT_NODE && container.tagName && container.tagName.toUpperCase() === 'BODY') { 46629 error('render(): Rendering components directly into document.body is ' + 'discouraged, since its children are often manipulated by third-party ' + 'scripts and browser extensions. This may lead to subtle ' + 'reconciliation issues. Try rendering into a container element created ' + 'for your app.'); 46630 } 46631 }; 46632} 46633 46634function getReactRootElementInContainer(container) { 46635 if (!container) { 46636 return null; 46637 } 46638 46639 if (container.nodeType === DOCUMENT_NODE) { 46640 return container.documentElement; 46641 } else { 46642 return container.firstChild; 46643 } 46644} 46645 46646function shouldHydrateDueToLegacyHeuristic(container) { 46647 var rootElement = getReactRootElementInContainer(container); 46648 return !!(rootElement && rootElement.nodeType === ELEMENT_NODE && rootElement.hasAttribute(ROOT_ATTRIBUTE_NAME)); 46649} 46650 46651function legacyCreateRootFromDOMContainer(container, forceHydrate) { 46652 var shouldHydrate = forceHydrate || shouldHydrateDueToLegacyHeuristic(container); // First clear any existing content. 46653 46654 if (!shouldHydrate) { 46655 var warned = false; 46656 var rootSibling; 46657 46658 while (rootSibling = container.lastChild) { 46659 { 46660 if (!warned && rootSibling.nodeType === ELEMENT_NODE && rootSibling.hasAttribute(ROOT_ATTRIBUTE_NAME)) { 46661 warned = true; 46662 46663 error('render(): Target node has markup rendered by React, but there ' + 'are unrelated nodes as well. This is most commonly caused by ' + 'white-space inserted around server-rendered markup.'); 46664 } 46665 } 46666 46667 container.removeChild(rootSibling); 46668 } 46669 } 46670 46671 { 46672 if (shouldHydrate && !forceHydrate && !warnedAboutHydrateAPI) { 46673 warnedAboutHydrateAPI = true; 46674 46675 warn('render(): Calling ReactDOM.render() to hydrate server-rendered markup ' + 'will stop working in React v17. Replace the ReactDOM.render() call ' + 'with ReactDOM.hydrate() if you want React to attach to the server HTML.'); 46676 } 46677 } 46678 46679 return createLegacyRoot(container, shouldHydrate ? { 46680 hydrate: true 46681 } : undefined); 46682} 46683 46684function warnOnInvalidCallback$1(callback, callerName) { 46685 { 46686 if (callback !== null && typeof callback !== 'function') { 46687 error('%s(...): Expected the last optional `callback` argument to be a ' + 'function. Instead received: %s.', callerName, callback); 46688 } 46689 } 46690} 46691 46692function legacyRenderSubtreeIntoContainer(parentComponent, children, container, forceHydrate, callback) { 46693 { 46694 topLevelUpdateWarnings(container); 46695 warnOnInvalidCallback$1(callback === undefined ? null : callback, 'render'); 46696 } // TODO: Without `any` type, Flow says "Property cannot be accessed on any 46697 // member of intersection type." Whyyyyyy. 46698 46699 46700 var root = container._reactRootContainer; 46701 var fiberRoot; 46702 46703 if (!root) { 46704 // Initial mount 46705 root = container._reactRootContainer = legacyCreateRootFromDOMContainer(container, forceHydrate); 46706 fiberRoot = root._internalRoot; 46707 46708 if (typeof callback === 'function') { 46709 var originalCallback = callback; 46710 46711 callback = function () { 46712 var instance = getPublicRootInstance(fiberRoot); 46713 originalCallback.call(instance); 46714 }; 46715 } // Initial mount should not be batched. 46716 46717 46718 unbatchedUpdates(function () { 46719 updateContainer(children, fiberRoot, parentComponent, callback); 46720 }); 46721 } else { 46722 fiberRoot = root._internalRoot; 46723 46724 if (typeof callback === 'function') { 46725 var _originalCallback = callback; 46726 46727 callback = function () { 46728 var instance = getPublicRootInstance(fiberRoot); 46729 46730 _originalCallback.call(instance); 46731 }; 46732 } // Update 46733 46734 46735 updateContainer(children, fiberRoot, parentComponent, callback); 46736 } 46737 46738 return getPublicRootInstance(fiberRoot); 46739} 46740 46741function findDOMNode(componentOrElement) { 46742 { 46743 var owner = ReactCurrentOwner$3.current; 46744 46745 if (owner !== null && owner.stateNode !== null) { 46746 var warnedAboutRefsInRender = owner.stateNode._warnedAboutRefsInRender; 46747 46748 if (!warnedAboutRefsInRender) { 46749 error('%s is accessing findDOMNode inside its render(). ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', getComponentName(owner.type) || 'A component'); 46750 } 46751 46752 owner.stateNode._warnedAboutRefsInRender = true; 46753 } 46754 } 46755 46756 if (componentOrElement == null) { 46757 return null; 46758 } 46759 46760 if (componentOrElement.nodeType === ELEMENT_NODE) { 46761 return componentOrElement; 46762 } 46763 46764 { 46765 return findHostInstanceWithWarning(componentOrElement, 'findDOMNode'); 46766 } 46767} 46768function hydrate(element, container, callback) { 46769 if (!isValidContainer(container)) { 46770 { 46771 throw Error( "Target container is not a DOM element." ); 46772 } 46773 } 46774 46775 { 46776 var isModernRoot = isContainerMarkedAsRoot(container) && container._reactRootContainer === undefined; 46777 46778 if (isModernRoot) { 46779 error('You are calling ReactDOM.hydrate() on a container that was previously ' + 'passed to ReactDOM.createRoot(). This is not supported. ' + 'Did you mean to call createRoot(container, {hydrate: true}).render(element)?'); 46780 } 46781 } // TODO: throw or warn if we couldn't hydrate? 46782 46783 46784 return legacyRenderSubtreeIntoContainer(null, element, container, true, callback); 46785} 46786function render(element, container, callback) { 46787 if (!isValidContainer(container)) { 46788 { 46789 throw Error( "Target container is not a DOM element." ); 46790 } 46791 } 46792 46793 { 46794 var isModernRoot = isContainerMarkedAsRoot(container) && container._reactRootContainer === undefined; 46795 46796 if (isModernRoot) { 46797 error('You are calling ReactDOM.render() on a container that was previously ' + 'passed to ReactDOM.createRoot(). This is not supported. ' + 'Did you mean to call root.render(element)?'); 46798 } 46799 } 46800 46801 return legacyRenderSubtreeIntoContainer(null, element, container, false, callback); 46802} 46803function unstable_renderSubtreeIntoContainer(parentComponent, element, containerNode, callback) { 46804 if (!isValidContainer(containerNode)) { 46805 { 46806 throw Error( "Target container is not a DOM element." ); 46807 } 46808 } 46809 46810 if (!(parentComponent != null && has(parentComponent))) { 46811 { 46812 throw Error( "parentComponent must be a valid React Component" ); 46813 } 46814 } 46815 46816 return legacyRenderSubtreeIntoContainer(parentComponent, element, containerNode, false, callback); 46817} 46818function unmountComponentAtNode(container) { 46819 if (!isValidContainer(container)) { 46820 { 46821 throw Error( "unmountComponentAtNode(...): Target container is not a DOM element." ); 46822 } 46823 } 46824 46825 { 46826 var isModernRoot = isContainerMarkedAsRoot(container) && container._reactRootContainer === undefined; 46827 46828 if (isModernRoot) { 46829 error('You are calling ReactDOM.unmountComponentAtNode() on a container that was previously ' + 'passed to ReactDOM.createRoot(). This is not supported. Did you mean to call root.unmount()?'); 46830 } 46831 } 46832 46833 if (container._reactRootContainer) { 46834 { 46835 var rootEl = getReactRootElementInContainer(container); 46836 var renderedByDifferentReact = rootEl && !getInstanceFromNode$1(rootEl); 46837 46838 if (renderedByDifferentReact) { 46839 error("unmountComponentAtNode(): The node you're attempting to unmount " + 'was rendered by another copy of React.'); 46840 } 46841 } // Unmount should not be batched. 46842 46843 46844 unbatchedUpdates(function () { 46845 legacyRenderSubtreeIntoContainer(null, null, container, false, function () { 46846 // $FlowFixMe This should probably use `delete container._reactRootContainer` 46847 container._reactRootContainer = null; 46848 unmarkContainerAsRoot(container); 46849 }); 46850 }); // If you call unmountComponentAtNode twice in quick succession, you'll 46851 // get `true` twice. That's probably fine? 46852 46853 return true; 46854 } else { 46855 { 46856 var _rootEl = getReactRootElementInContainer(container); 46857 46858 var hasNonRootReactChild = !!(_rootEl && getInstanceFromNode$1(_rootEl)); // Check if the container itself is a React root node. 46859 46860 var isContainerReactRoot = container.nodeType === ELEMENT_NODE && isValidContainer(container.parentNode) && !!container.parentNode._reactRootContainer; 46861 46862 if (hasNonRootReactChild) { 46863 error("unmountComponentAtNode(): The node you're attempting to unmount " + 'was rendered by React and is not a top-level container. %s', isContainerReactRoot ? 'You may have accidentally passed in a React root node instead ' + 'of its container.' : 'Instead, have the parent component update its state and ' + 'rerender in order to remove this component.'); 46864 } 46865 } 46866 46867 return false; 46868 } 46869} 46870 46871function createPortal(children, containerInfo, // TODO: figure out the API for cross-renderer implementation. 46872implementation) { 46873 var key = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null; 46874 return { 46875 // This tag allow us to uniquely identify this as a React Portal 46876 $$typeof: REACT_PORTAL_TYPE, 46877 key: key == null ? null : '' + key, 46878 children: children, 46879 containerInfo: containerInfo, 46880 implementation: implementation 46881 }; 46882} 46883 46884var ReactVersion = '16.13.1'; 46885 46886setAttemptUserBlockingHydration(attemptUserBlockingHydration$1); 46887setAttemptContinuousHydration(attemptContinuousHydration$1); 46888setAttemptHydrationAtCurrentPriority(attemptHydrationAtCurrentPriority$1); 46889var didWarnAboutUnstableCreatePortal = false; 46890 46891{ 46892 if (typeof Map !== 'function' || // $FlowIssue Flow incorrectly thinks Map has no prototype 46893 Map.prototype == null || typeof Map.prototype.forEach !== 'function' || typeof Set !== 'function' || // $FlowIssue Flow incorrectly thinks Set has no prototype 46894 Set.prototype == null || typeof Set.prototype.clear !== 'function' || typeof Set.prototype.forEach !== 'function') { 46895 error('React depends on Map and Set built-in types. Make sure that you load a ' + 'polyfill in older browsers. https://fb.me/react-polyfills'); 46896 } 46897} 46898 46899setRestoreImplementation(restoreControlledState$3); 46900setBatchingImplementation(batchedUpdates$1, discreteUpdates$1, flushDiscreteUpdates, batchedEventUpdates$1); 46901 46902function createPortal$1(children, container) { 46903 var key = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; 46904 46905 if (!isValidContainer(container)) { 46906 { 46907 throw Error( "Target container is not a DOM element." ); 46908 } 46909 } // TODO: pass ReactDOM portal implementation as third argument 46910 // $FlowFixMe The Flow type is opaque but there's no way to actually create it. 46911 46912 46913 return createPortal(children, container, null, key); 46914} 46915 46916function renderSubtreeIntoContainer(parentComponent, element, containerNode, callback) { 46917 46918 return unstable_renderSubtreeIntoContainer(parentComponent, element, containerNode, callback); 46919} 46920 46921function unstable_createPortal(children, container) { 46922 var key = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null; 46923 46924 { 46925 if (!didWarnAboutUnstableCreatePortal) { 46926 didWarnAboutUnstableCreatePortal = true; 46927 46928 warn('The ReactDOM.unstable_createPortal() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactDOM.createPortal() instead. It has the exact same API, ' + 'but without the "unstable_" prefix.'); 46929 } 46930 } 46931 46932 return createPortal$1(children, container, key); 46933} 46934 46935var Internals = { 46936 // Keep in sync with ReactDOMUnstableNativeDependencies.js 46937 // ReactTestUtils.js, and ReactTestUtilsAct.js. This is an array for better minification. 46938 Events: [getInstanceFromNode$1, getNodeFromInstance$1, getFiberCurrentPropsFromNode$1, injectEventPluginsByName, eventNameDispatchConfigs, accumulateTwoPhaseDispatches, accumulateDirectDispatches, enqueueStateRestore, restoreStateIfNeeded, dispatchEvent, runEventsInBatch, flushPassiveEffects, IsThisRendererActing] 46939}; 46940var foundDevTools = injectIntoDevTools({ 46941 findFiberByHostInstance: getClosestInstanceFromNode, 46942 bundleType: 1 , 46943 version: ReactVersion, 46944 rendererPackageName: 'react-dom' 46945}); 46946 46947{ 46948 if (!foundDevTools && canUseDOM && window.top === window.self) { 46949 // If we're in Chrome or Firefox, provide a download link if not installed. 46950 if (navigator.userAgent.indexOf('Chrome') > -1 && navigator.userAgent.indexOf('Edge') === -1 || navigator.userAgent.indexOf('Firefox') > -1) { 46951 var protocol = window.location.protocol; // Don't warn in exotic cases like chrome-extension://. 46952 46953 if (/^(https?|file):$/.test(protocol)) { 46954 // eslint-disable-next-line react-internal/no-production-logging 46955 console.info('%cDownload the React DevTools ' + 'for a better development experience: ' + 'https://fb.me/react-devtools' + (protocol === 'file:' ? '\nYou might need to use a local HTTP server (instead of file://): ' + 'https://fb.me/react-devtools-faq' : ''), 'font-weight:bold'); 46956 } 46957 } 46958 } 46959} 46960 46961exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = Internals; 46962exports.createPortal = createPortal$1; 46963exports.findDOMNode = findDOMNode; 46964exports.flushSync = flushSync; 46965exports.hydrate = hydrate; 46966exports.render = render; 46967exports.unmountComponentAtNode = unmountComponentAtNode; 46968exports.unstable_batchedUpdates = batchedUpdates$1; 46969exports.unstable_createPortal = unstable_createPortal; 46970exports.unstable_renderSubtreeIntoContainer = renderSubtreeIntoContainer; 46971exports.version = ReactVersion; 46972 })(); 46973} 46974 46975 46976/***/ }), 46977
vendor: 1,761 bytes, lines 46978-47022
46978/***/ "../../node_modules/react-dom/index.js": 46979/*!********************************************************************************************************************************!*\ 46980 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/react-dom/index.js ***! 46981 \********************************************************************************************************************************/ 46982/*! no static exports found */ 46983/***/ (function(module, exports, __webpack_require__) { 46984 46985"use strict"; 46986 46987 46988function checkDCE() { 46989 /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */ 46990 if ( 46991 typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' || 46992 typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function' 46993 ) { 46994 return; 46995 } 46996 if (true) { 46997 // This branch is unreachable because this function is only called 46998 // in production, but the condition is true only in development. 46999 // Therefore if the branch is still here, dead code elimination wasn't 47000 // properly applied. 47001 // Don't change the message. React DevTools relies on it. Also make sure 47002 // this message doesn't occur elsewhere in this function, or it will cause 47003 // a false positive. 47004 throw new Error('^_^'); 47005 } 47006 try { 47007 // Verify that the code above has been dead code eliminated (DCE'd). 47008 __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE); 47009 } catch (err) { 47010 // DevTools shouldn't crash React, no matter what. 47011 // We should still report in case we break this code. 47012 console.error(err); 47013 } 47014} 47015 47016if (false) {} else { 47017 module.exports = __webpack_require__(/*! ./cjs/react-dom.development.js */ "../../node_modules/react-dom/cjs/react-dom.development.js"); 47018} 47019 47020 47021/***/ }), 47022
vendor: 63,262 bytes, lines 47023-48946
47023/***/ "../../node_modules/react/cjs/react.development.js": 47024/*!********************************************************************************************************************************************!*\ 47025 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/react/cjs/react.development.js ***! 47026 \********************************************************************************************************************************************/ 47027/*! no static exports found */ 47028/***/ (function(module, exports, __webpack_require__) { 47029 47030"use strict"; 47031/** @license React v16.13.1 47032 * react.development.js 47033 * 47034 * Copyright (c) Facebook, Inc. and its affiliates. 47035 * 47036 * This source code is licensed under the MIT license found in the 47037 * LICENSE file in the root directory of this source tree. 47038 */ 47039 47040 47041 47042 47043 47044if (true) { 47045 (function() { 47046'use strict'; 47047 47048var _assign = __webpack_require__(/*! object-assign */ "../../node_modules/object-assign/index.js"); 47049var checkPropTypes = __webpack_require__(/*! prop-types/checkPropTypes */ "../../node_modules/prop-types/checkPropTypes.js"); 47050 47051var ReactVersion = '16.13.1'; 47052 47053// The Symbol used to tag the ReactElement-like types. If there is no native Symbol 47054// nor polyfill, then a plain number is used for performance. 47055var hasSymbol = typeof Symbol === 'function' && Symbol.for; 47056var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7; 47057var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca; 47058var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb; 47059var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc; 47060var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2; 47061var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd; 47062var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary 47063var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf; 47064var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0; 47065var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1; 47066var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8; 47067var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3; 47068var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4; 47069var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9; 47070var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5; 47071var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6; 47072var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7; 47073var MAYBE_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator; 47074var FAUX_ITERATOR_SYMBOL = '@@iterator'; 47075function getIteratorFn(maybeIterable) { 47076 if (maybeIterable === null || typeof maybeIterable !== 'object') { 47077 return null; 47078 } 47079 47080 var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]; 47081 47082 if (typeof maybeIterator === 'function') { 47083 return maybeIterator; 47084 } 47085 47086 return null; 47087} 47088 47089/** 47090 * Keeps track of the current dispatcher. 47091 */ 47092var ReactCurrentDispatcher = { 47093 /** 47094 * @internal 47095 * @type {ReactComponent} 47096 */ 47097 current: null 47098}; 47099 47100/** 47101 * Keeps track of the current batch's configuration such as how long an update 47102 * should suspend for if it needs to. 47103 */ 47104var ReactCurrentBatchConfig = { 47105 suspense: null 47106}; 47107 47108/** 47109 * Keeps track of the current owner. 47110 * 47111 * The current owner is the component who should own any components that are 47112 * currently being constructed. 47113 */ 47114var ReactCurrentOwner = { 47115 /** 47116 * @internal 47117 * @type {ReactComponent} 47118 */ 47119 current: null 47120}; 47121 47122var BEFORE_SLASH_RE = /^(.*)[\\\/]/; 47123function describeComponentFrame (name, source, ownerName) { 47124 var sourceInfo = ''; 47125 47126 if (source) { 47127 var path = source.fileName; 47128 var fileName = path.replace(BEFORE_SLASH_RE, ''); 47129 47130 { 47131 // In DEV, include code for a common special case: 47132 // prefer "folder/index.js" instead of just "index.js". 47133 if (/^index\./.test(fileName)) { 47134 var match = path.match(BEFORE_SLASH_RE); 47135 47136 if (match) { 47137 var pathBeforeSlash = match[1]; 47138 47139 if (pathBeforeSlash) { 47140 var folderName = pathBeforeSlash.replace(BEFORE_SLASH_RE, ''); 47141 fileName = folderName + '/' + fileName; 47142 } 47143 } 47144 } 47145 } 47146 47147 sourceInfo = ' (at ' + fileName + ':' + source.lineNumber + ')'; 47148 } else if (ownerName) { 47149 sourceInfo = ' (created by ' + ownerName + ')'; 47150 } 47151 47152 return '\n in ' + (name || 'Unknown') + sourceInfo; 47153} 47154 47155var Resolved = 1; 47156function refineResolvedLazyComponent(lazyComponent) { 47157 return lazyComponent._status === Resolved ? lazyComponent._result : null; 47158} 47159 47160function getWrappedName(outerType, innerType, wrapperName) { 47161 var functionName = innerType.displayName || innerType.name || ''; 47162 return outerType.displayName || (functionName !== '' ? wrapperName + "(" + functionName + ")" : wrapperName); 47163} 47164 47165function getComponentName(type) { 47166 if (type == null) { 47167 // Host root, text node or just invalid type. 47168 return null; 47169 } 47170 47171 { 47172 if (typeof type.tag === 'number') { 47173 error('Received an unexpected object in getComponentName(). ' + 'This is likely a bug in React. Please file an issue.'); 47174 } 47175 } 47176 47177 if (typeof type === 'function') { 47178 return type.displayName || type.name || null; 47179 } 47180 47181 if (typeof type === 'string') { 47182 return type; 47183 } 47184 47185 switch (type) { 47186 case REACT_FRAGMENT_TYPE: 47187 return 'Fragment'; 47188 47189 case REACT_PORTAL_TYPE: 47190 return 'Portal'; 47191 47192 case REACT_PROFILER_TYPE: 47193 return "Profiler"; 47194 47195 case REACT_STRICT_MODE_TYPE: 47196 return 'StrictMode'; 47197 47198 case REACT_SUSPENSE_TYPE: 47199 return 'Suspense'; 47200 47201 case REACT_SUSPENSE_LIST_TYPE: 47202 return 'SuspenseList'; 47203 } 47204 47205 if (typeof type === 'object') { 47206 switch (type.$$typeof) { 47207 case REACT_CONTEXT_TYPE: 47208 return 'Context.Consumer'; 47209 47210 case REACT_PROVIDER_TYPE: 47211 return 'Context.Provider'; 47212 47213 case REACT_FORWARD_REF_TYPE: 47214 return getWrappedName(type, type.render, 'ForwardRef'); 47215 47216 case REACT_MEMO_TYPE: 47217 return getComponentName(type.type); 47218 47219 case REACT_BLOCK_TYPE: 47220 return getComponentName(type.render); 47221 47222 case REACT_LAZY_TYPE: 47223 { 47224 var thenable = type; 47225 var resolvedThenable = refineResolvedLazyComponent(thenable); 47226 47227 if (resolvedThenable) { 47228 return getComponentName(resolvedThenable); 47229 } 47230 47231 break; 47232 } 47233 } 47234 } 47235 47236 return null; 47237} 47238 47239var ReactDebugCurrentFrame = {}; 47240var currentlyValidatingElement = null; 47241function setCurrentlyValidatingElement(element) { 47242 { 47243 currentlyValidatingElement = element; 47244 } 47245} 47246 47247{ 47248 // Stack implementation injected by the current renderer. 47249 ReactDebugCurrentFrame.getCurrentStack = null; 47250 47251 ReactDebugCurrentFrame.getStackAddendum = function () { 47252 var stack = ''; // Add an extra top frame while an element is being validated 47253 47254 if (currentlyValidatingElement) { 47255 var name = getComponentName(currentlyValidatingElement.type); 47256 var owner = currentlyValidatingElement._owner; 47257 stack += describeComponentFrame(name, currentlyValidatingElement._source, owner && getComponentName(owner.type)); 47258 } // Delegate to the injected renderer-specific implementation 47259 47260 47261 var impl = ReactDebugCurrentFrame.getCurrentStack; 47262 47263 if (impl) { 47264 stack += impl() || ''; 47265 } 47266 47267 return stack; 47268 }; 47269} 47270 47271/** 47272 * Used by act() to track whether you're inside an act() scope. 47273 */ 47274var IsSomeRendererActing = { 47275 current: false 47276}; 47277 47278var ReactSharedInternals = { 47279 ReactCurrentDispatcher: ReactCurrentDispatcher, 47280 ReactCurrentBatchConfig: ReactCurrentBatchConfig, 47281 ReactCurrentOwner: ReactCurrentOwner, 47282 IsSomeRendererActing: IsSomeRendererActing, 47283 // Used by renderers to avoid bundling object-assign twice in UMD bundles: 47284 assign: _assign 47285}; 47286 47287{ 47288 _assign(ReactSharedInternals, { 47289 // These should not be included in production. 47290 ReactDebugCurrentFrame: ReactDebugCurrentFrame, 47291 // Shim for React DOM 16.0.0 which still destructured (but not used) this. 47292 // TODO: remove in React 17.0. 47293 ReactComponentTreeHook: {} 47294 }); 47295} 47296 47297// by calls to these methods by a Babel plugin. 47298// 47299// In PROD (or in packages without access to React internals), 47300// they are left as they are instead. 47301 47302function warn(format) { 47303 { 47304 for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { 47305 args[_key - 1] = arguments[_key]; 47306 } 47307 47308 printWarning('warn', format, args); 47309 } 47310} 47311function error(format) { 47312 { 47313 for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { 47314 args[_key2 - 1] = arguments[_key2]; 47315 } 47316 47317 printWarning('error', format, args); 47318 } 47319} 47320 47321function printWarning(level, format, args) { 47322 // When changing this logic, you might want to also 47323 // update consoleWithStackDev.www.js as well. 47324 { 47325 var hasExistingStack = args.length > 0 && typeof args[args.length - 1] === 'string' && args[args.length - 1].indexOf('\n in') === 0; 47326 47327 if (!hasExistingStack) { 47328 var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame; 47329 var stack = ReactDebugCurrentFrame.getStackAddendum(); 47330 47331 if (stack !== '') { 47332 format += '%s'; 47333 args = args.concat([stack]); 47334 } 47335 } 47336 47337 var argsWithFormat = args.map(function (item) { 47338 return '' + item; 47339 }); // Careful: RN currently depends on this prefix 47340 47341 argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it 47342 // breaks IE9: https://github.com/facebook/react/issues/13610 47343 // eslint-disable-next-line react-internal/no-production-logging 47344 47345 Function.prototype.apply.call(console[level], console, argsWithFormat); 47346 47347 try { 47348 // --- Welcome to debugging React --- 47349 // This error was thrown as a convenience so that you can use this stack 47350 // to find the callsite that caused this warning to fire. 47351 var argIndex = 0; 47352 var message = 'Warning: ' + format.replace(/%s/g, function () { 47353 return args[argIndex++]; 47354 }); 47355 throw new Error(message); 47356 } catch (x) {} 47357 } 47358} 47359 47360var didWarnStateUpdateForUnmountedComponent = {}; 47361 47362function warnNoop(publicInstance, callerName) { 47363 { 47364 var _constructor = publicInstance.constructor; 47365 var componentName = _constructor && (_constructor.displayName || _constructor.name) || 'ReactClass'; 47366 var warningKey = componentName + "." + callerName; 47367 47368 if (didWarnStateUpdateForUnmountedComponent[warningKey]) { 47369 return; 47370 } 47371 47372 error("Can't call %s on a component that is not yet mounted. " + 'This is a no-op, but it might indicate a bug in your application. ' + 'Instead, assign to `this.state` directly or define a `state = {};` ' + 'class property with the desired state in the %s component.', callerName, componentName); 47373 47374 didWarnStateUpdateForUnmountedComponent[warningKey] = true; 47375 } 47376} 47377/** 47378 * This is the abstract API for an update queue. 47379 */ 47380 47381 47382var ReactNoopUpdateQueue = { 47383 /** 47384 * Checks whether or not this composite component is mounted. 47385 * @param {ReactClass} publicInstance The instance we want to test. 47386 * @return {boolean} True if mounted, false otherwise. 47387 * @protected 47388 * @final 47389 */ 47390 isMounted: function (publicInstance) { 47391 return false; 47392 }, 47393 47394 /** 47395 * Forces an update. This should only be invoked when it is known with 47396 * certainty that we are **not** in a DOM transaction. 47397 * 47398 * You may want to call this when you know that some deeper aspect of the 47399 * component's state has changed but `setState` was not called. 47400 * 47401 * This will not invoke `shouldComponentUpdate`, but it will invoke 47402 * `componentWillUpdate` and `componentDidUpdate`. 47403 * 47404 * @param {ReactClass} publicInstance The instance that should rerender. 47405 * @param {?function} callback Called after component is updated. 47406 * @param {?string} callerName name of the calling function in the public API. 47407 * @internal 47408 */ 47409 enqueueForceUpdate: function (publicInstance, callback, callerName) { 47410 warnNoop(publicInstance, 'forceUpdate'); 47411 }, 47412 47413 /** 47414 * Replaces all of the state. Always use this or `setState` to mutate state. 47415 * You should treat `this.state` as immutable. 47416 * 47417 * There is no guarantee that `this.state` will be immediately updated, so 47418 * accessing `this.state` after calling this method may return the old value. 47419 * 47420 * @param {ReactClass} publicInstance The instance that should rerender. 47421 * @param {object} completeState Next state. 47422 * @param {?function} callback Called after component is updated. 47423 * @param {?string} callerName name of the calling function in the public API. 47424 * @internal 47425 */ 47426 enqueueReplaceState: function (publicInstance, completeState, callback, callerName) { 47427 warnNoop(publicInstance, 'replaceState'); 47428 }, 47429 47430 /** 47431 * Sets a subset of the state. This only exists because _pendingState is 47432 * internal. This provides a merging strategy that is not available to deep 47433 * properties which is confusing. TODO: Expose pendingState or don't use it 47434 * during the merge. 47435 * 47436 * @param {ReactClass} publicInstance The instance that should rerender. 47437 * @param {object} partialState Next partial state to be merged with state. 47438 * @param {?function} callback Called after component is updated. 47439 * @param {?string} Name of the calling function in the public API. 47440 * @internal 47441 */ 47442 enqueueSetState: function (publicInstance, partialState, callback, callerName) { 47443 warnNoop(publicInstance, 'setState'); 47444 } 47445}; 47446 47447var emptyObject = {}; 47448 47449{ 47450 Object.freeze(emptyObject); 47451} 47452/** 47453 * Base class helpers for the updating state of a component. 47454 */ 47455 47456 47457function Component(props, context, updater) { 47458 this.props = props; 47459 this.context = context; // If a component has string refs, we will assign a different object later. 47460 47461 this.refs = emptyObject; // We initialize the default updater but the real one gets injected by the 47462 // renderer. 47463 47464 this.updater = updater || ReactNoopUpdateQueue; 47465} 47466 47467Component.prototype.isReactComponent = {}; 47468/** 47469 * Sets a subset of the state. Always use this to mutate 47470 * state. You should treat `this.state` as immutable. 47471 * 47472 * There is no guarantee that `this.state` will be immediately updated, so 47473 * accessing `this.state` after calling this method may return the old value. 47474 * 47475 * There is no guarantee that calls to `setState` will run synchronously, 47476 * as they may eventually be batched together. You can provide an optional 47477 * callback that will be executed when the call to setState is actually 47478 * completed. 47479 * 47480 * When a function is provided to setState, it will be called at some point in 47481 * the future (not synchronously). It will be called with the up to date 47482 * component arguments (state, props, context). These values can be different 47483 * from this.* because your function may be called after receiveProps but before 47484 * shouldComponentUpdate, and this new state, props, and context will not yet be 47485 * assigned to this. 47486 * 47487 * @param {object|function} partialState Next partial state or function to 47488 * produce next partial state to be merged with current state. 47489 * @param {?function} callback Called after state is updated. 47490 * @final 47491 * @protected 47492 */ 47493 47494Component.prototype.setState = function (partialState, callback) { 47495 if (!(typeof partialState === 'object' || typeof partialState === 'function' || partialState == null)) { 47496 { 47497 throw Error( "setState(...): takes an object of state variables to update or a function which returns an object of state variables." ); 47498 } 47499 } 47500 47501 this.updater.enqueueSetState(this, partialState, callback, 'setState'); 47502}; 47503/** 47504 * Forces an update. This should only be invoked when it is known with 47505 * certainty that we are **not** in a DOM transaction. 47506 * 47507 * You may want to call this when you know that some deeper aspect of the 47508 * component's state has changed but `setState` was not called. 47509 * 47510 * This will not invoke `shouldComponentUpdate`, but it will invoke 47511 * `componentWillUpdate` and `componentDidUpdate`. 47512 * 47513 * @param {?function} callback Called after update is complete. 47514 * @final 47515 * @protected 47516 */ 47517 47518 47519Component.prototype.forceUpdate = function (callback) { 47520 this.updater.enqueueForceUpdate(this, callback, 'forceUpdate'); 47521}; 47522/** 47523 * Deprecated APIs. These APIs used to exist on classic React classes but since 47524 * we would like to deprecate them, we're not going to move them over to this 47525 * modern base class. Instead, we define a getter that warns if it's accessed. 47526 */ 47527 47528 47529{ 47530 var deprecatedAPIs = { 47531 isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'], 47532 replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).'] 47533 }; 47534 47535 var defineDeprecationWarning = function (methodName, info) { 47536 Object.defineProperty(Component.prototype, methodName, { 47537 get: function () { 47538 warn('%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]); 47539 47540 return undefined; 47541 } 47542 }); 47543 }; 47544 47545 for (var fnName in deprecatedAPIs) { 47546 if (deprecatedAPIs.hasOwnProperty(fnName)) { 47547 defineDeprecationWarning(fnName, deprecatedAPIs[fnName]); 47548 } 47549 } 47550} 47551 47552function ComponentDummy() {} 47553 47554ComponentDummy.prototype = Component.prototype; 47555/** 47556 * Convenience component with default shallow equality check for sCU. 47557 */ 47558 47559function PureComponent(props, context, updater) { 47560 this.props = props; 47561 this.context = context; // If a component has string refs, we will assign a different object later. 47562 47563 this.refs = emptyObject; 47564 this.updater = updater || ReactNoopUpdateQueue; 47565} 47566 47567var pureComponentPrototype = PureComponent.prototype = new ComponentDummy(); 47568pureComponentPrototype.constructor = PureComponent; // Avoid an extra prototype jump for these methods. 47569 47570_assign(pureComponentPrototype, Component.prototype); 47571 47572pureComponentPrototype.isPureReactComponent = true; 47573 47574// an immutable object with a single mutable value 47575function createRef() { 47576 var refObject = { 47577 current: null 47578 }; 47579 47580 { 47581 Object.seal(refObject); 47582 } 47583 47584 return refObject; 47585} 47586 47587var hasOwnProperty = Object.prototype.hasOwnProperty; 47588var RESERVED_PROPS = { 47589 key: true, 47590 ref: true, 47591 __self: true, 47592 __source: true 47593}; 47594var specialPropKeyWarningShown, specialPropRefWarningShown, didWarnAboutStringRefs; 47595 47596{ 47597 didWarnAboutStringRefs = {}; 47598} 47599 47600function hasValidRef(config) { 47601 { 47602 if (hasOwnProperty.call(config, 'ref')) { 47603 var getter = Object.getOwnPropertyDescriptor(config, 'ref').get; 47604 47605 if (getter && getter.isReactWarning) { 47606 return false; 47607 } 47608 } 47609 } 47610 47611 return config.ref !== undefined; 47612} 47613 47614function hasValidKey(config) { 47615 { 47616 if (hasOwnProperty.call(config, 'key')) { 47617 var getter = Object.getOwnPropertyDescriptor(config, 'key').get; 47618 47619 if (getter && getter.isReactWarning) { 47620 return false; 47621 } 47622 } 47623 } 47624 47625 return config.key !== undefined; 47626} 47627 47628function defineKeyPropWarningGetter(props, displayName) { 47629 var warnAboutAccessingKey = function () { 47630 { 47631 if (!specialPropKeyWarningShown) { 47632 specialPropKeyWarningShown = true; 47633 47634 error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName); 47635 } 47636 } 47637 }; 47638 47639 warnAboutAccessingKey.isReactWarning = true; 47640 Object.defineProperty(props, 'key', { 47641 get: warnAboutAccessingKey, 47642 configurable: true 47643 }); 47644} 47645 47646function defineRefPropWarningGetter(props, displayName) { 47647 var warnAboutAccessingRef = function () { 47648 { 47649 if (!specialPropRefWarningShown) { 47650 specialPropRefWarningShown = true; 47651 47652 error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://fb.me/react-special-props)', displayName); 47653 } 47654 } 47655 }; 47656 47657 warnAboutAccessingRef.isReactWarning = true; 47658 Object.defineProperty(props, 'ref', { 47659 get: warnAboutAccessingRef, 47660 configurable: true 47661 }); 47662} 47663 47664function warnIfStringRefCannotBeAutoConverted(config) { 47665 { 47666 if (typeof config.ref === 'string' && ReactCurrentOwner.current && config.__self && ReactCurrentOwner.current.stateNode !== config.__self) { 47667 var componentName = getComponentName(ReactCurrentOwner.current.type); 47668 47669 if (!didWarnAboutStringRefs[componentName]) { 47670 error('Component "%s" contains the string ref "%s". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://fb.me/react-strict-mode-string-ref', getComponentName(ReactCurrentOwner.current.type), config.ref); 47671 47672 didWarnAboutStringRefs[componentName] = true; 47673 } 47674 } 47675 } 47676} 47677/** 47678 * Factory method to create a new React element. This no longer adheres to 47679 * the class pattern, so do not use new to call it. Also, instanceof check 47680 * will not work. Instead test $$typeof field against Symbol.for('react.element') to check 47681 * if something is a React Element. 47682 * 47683 * @param {*} type 47684 * @param {*} props 47685 * @param {*} key 47686 * @param {string|object} ref 47687 * @param {*} owner 47688 * @param {*} self A *temporary* helper to detect places where `this` is 47689 * different from the `owner` when React.createElement is called, so that we 47690 * can warn. We want to get rid of owner and replace string `ref`s with arrow 47691 * functions, and as long as `this` and owner are the same, there will be no 47692 * change in behavior. 47693 * @param {*} source An annotation object (added by a transpiler or otherwise) 47694 * indicating filename, line number, and/or other information. 47695 * @internal 47696 */ 47697 47698 47699var ReactElement = function (type, key, ref, self, source, owner, props) { 47700 var element = { 47701 // This tag allows us to uniquely identify this as a React Element 47702 $$typeof: REACT_ELEMENT_TYPE, 47703 // Built-in properties that belong on the element 47704 type: type, 47705 key: key, 47706 ref: ref, 47707 props: props, 47708 // Record the component responsible for creating this element. 47709 _owner: owner 47710 }; 47711 47712 { 47713 // The validation flag is currently mutative. We put it on 47714 // an external backing store so that we can freeze the whole object. 47715 // This can be replaced with a WeakMap once they are implemented in 47716 // commonly used development environments. 47717 element._store = {}; // To make comparing ReactElements easier for testing purposes, we make 47718 // the validation flag non-enumerable (where possible, which should 47719 // include every environment we run tests in), so the test framework 47720 // ignores it. 47721 47722 Object.defineProperty(element._store, 'validated', { 47723 configurable: false, 47724 enumerable: false, 47725 writable: true, 47726 value: false 47727 }); // self and source are DEV only properties. 47728 47729 Object.defineProperty(element, '_self', { 47730 configurable: false, 47731 enumerable: false, 47732 writable: false, 47733 value: self 47734 }); // Two elements created in two different places should be considered 47735 // equal for testing purposes and therefore we hide it from enumeration. 47736 47737 Object.defineProperty(element, '_source', { 47738 configurable: false, 47739 enumerable: false, 47740 writable: false, 47741 value: source 47742 }); 47743 47744 if (Object.freeze) { 47745 Object.freeze(element.props); 47746 Object.freeze(element); 47747 } 47748 } 47749 47750 return element; 47751}; 47752/** 47753 * Create and return a new ReactElement of the given type. 47754 * See https://reactjs.org/docs/react-api.html#createelement 47755 */ 47756 47757function createElement(type, config, children) { 47758 var propName; // Reserved names are extracted 47759 47760 var props = {}; 47761 var key = null; 47762 var ref = null; 47763 var self = null; 47764 var source = null; 47765 47766 if (config != null) { 47767 if (hasValidRef(config)) { 47768 ref = config.ref; 47769 47770 { 47771 warnIfStringRefCannotBeAutoConverted(config); 47772 } 47773 } 47774 47775 if (hasValidKey(config)) { 47776 key = '' + config.key; 47777 } 47778 47779 self = config.__self === undefined ? null : config.__self; 47780 source = config.__source === undefined ? null : config.__source; // Remaining properties are added to a new props object 47781 47782 for (propName in config) { 47783 if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) { 47784 props[propName] = config[propName]; 47785 } 47786 } 47787 } // Children can be more than one argument, and those are transferred onto 47788 // the newly allocated props object. 47789 47790 47791 var childrenLength = arguments.length - 2; 47792 47793 if (childrenLength === 1) { 47794 props.children = children; 47795 } else if (childrenLength > 1) { 47796 var childArray = Array(childrenLength); 47797 47798 for (var i = 0; i < childrenLength; i++) { 47799 childArray[i] = arguments[i + 2]; 47800 } 47801 47802 { 47803 if (Object.freeze) { 47804 Object.freeze(childArray); 47805 } 47806 } 47807 47808 props.children = childArray; 47809 } // Resolve default props 47810 47811 47812 if (type && type.defaultProps) { 47813 var defaultProps = type.defaultProps; 47814 47815 for (propName in defaultProps) { 47816 if (props[propName] === undefined) { 47817 props[propName] = defaultProps[propName]; 47818 } 47819 } 47820 } 47821 47822 { 47823 if (key || ref) { 47824 var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type; 47825 47826 if (key) { 47827 defineKeyPropWarningGetter(props, displayName); 47828 } 47829 47830 if (ref) { 47831 defineRefPropWarningGetter(props, displayName); 47832 } 47833 } 47834 } 47835 47836 return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props); 47837} 47838function cloneAndReplaceKey(oldElement, newKey) { 47839 var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props); 47840 return newElement; 47841} 47842/** 47843 * Clone and return a new ReactElement using element as the starting point. 47844 * See https://reactjs.org/docs/react-api.html#cloneelement 47845 */ 47846 47847function cloneElement(element, config, children) { 47848 if (!!(element === null || element === undefined)) { 47849 { 47850 throw Error( "React.cloneElement(...): The argument must be a React element, but you passed " + element + "." ); 47851 } 47852 } 47853 47854 var propName; // Original props are copied 47855 47856 var props = _assign({}, element.props); // Reserved names are extracted 47857 47858 47859 var key = element.key; 47860 var ref = element.ref; // Self is preserved since the owner is preserved. 47861 47862 var self = element._self; // Source is preserved since cloneElement is unlikely to be targeted by a 47863 // transpiler, and the original source is probably a better indicator of the 47864 // true owner. 47865 47866 var source = element._source; // Owner will be preserved, unless ref is overridden 47867 47868 var owner = element._owner; 47869 47870 if (config != null) { 47871 if (hasValidRef(config)) { 47872 // Silently steal the ref from the parent. 47873 ref = config.ref; 47874 owner = ReactCurrentOwner.current; 47875 } 47876 47877 if (hasValidKey(config)) { 47878 key = '' + config.key; 47879 } // Remaining properties override existing props 47880 47881 47882 var defaultProps; 47883 47884 if (element.type && element.type.defaultProps) { 47885 defaultProps = element.type.defaultProps; 47886 } 47887 47888 for (propName in config) { 47889 if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) { 47890 if (config[propName] === undefined && defaultProps !== undefined) { 47891 // Resolve default props 47892 props[propName] = defaultProps[propName]; 47893 } else { 47894 props[propName] = config[propName]; 47895 } 47896 } 47897 } 47898 } // Children can be more than one argument, and those are transferred onto 47899 // the newly allocated props object. 47900 47901 47902 var childrenLength = arguments.length - 2; 47903 47904 if (childrenLength === 1) { 47905 props.children = children; 47906 } else if (childrenLength > 1) { 47907 var childArray = Array(childrenLength); 47908 47909 for (var i = 0; i < childrenLength; i++) { 47910 childArray[i] = arguments[i + 2]; 47911 } 47912 47913 props.children = childArray; 47914 } 47915 47916 return ReactElement(element.type, key, ref, self, source, owner, props); 47917} 47918/** 47919 * Verifies the object is a ReactElement. 47920 * See https://reactjs.org/docs/react-api.html#isvalidelement 47921 * @param {?object} object 47922 * @return {boolean} True if `object` is a ReactElement. 47923 * @final 47924 */ 47925 47926function isValidElement(object) { 47927 return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; 47928} 47929 47930var SEPARATOR = '.'; 47931var SUBSEPARATOR = ':'; 47932/** 47933 * Escape and wrap key so it is safe to use as a reactid 47934 * 47935 * @param {string} key to be escaped. 47936 * @return {string} the escaped key. 47937 */ 47938 47939function escape(key) { 47940 var escapeRegex = /[=:]/g; 47941 var escaperLookup = { 47942 '=': '=0', 47943 ':': '=2' 47944 }; 47945 var escapedString = ('' + key).replace(escapeRegex, function (match) { 47946 return escaperLookup[match]; 47947 }); 47948 return '$' + escapedString; 47949} 47950/** 47951 * TODO: Test that a single child and an array with one item have the same key 47952 * pattern. 47953 */ 47954 47955 47956var didWarnAboutMaps = false; 47957var userProvidedKeyEscapeRegex = /\/+/g; 47958 47959function escapeUserProvidedKey(text) { 47960 return ('' + text).replace(userProvidedKeyEscapeRegex, '$&/'); 47961} 47962 47963var POOL_SIZE = 10; 47964var traverseContextPool = []; 47965 47966function getPooledTraverseContext(mapResult, keyPrefix, mapFunction, mapContext) { 47967 if (traverseContextPool.length) { 47968 var traverseContext = traverseContextPool.pop(); 47969 traverseContext.result = mapResult; 47970 traverseContext.keyPrefix = keyPrefix; 47971 traverseContext.func = mapFunction; 47972 traverseContext.context = mapContext; 47973 traverseContext.count = 0; 47974 return traverseContext; 47975 } else { 47976 return { 47977 result: mapResult, 47978 keyPrefix: keyPrefix, 47979 func: mapFunction, 47980 context: mapContext, 47981 count: 0 47982 }; 47983 } 47984} 47985 47986function releaseTraverseContext(traverseContext) { 47987 traverseContext.result = null; 47988 traverseContext.keyPrefix = null; 47989 traverseContext.func = null; 47990 traverseContext.context = null; 47991 traverseContext.count = 0; 47992 47993 if (traverseContextPool.length < POOL_SIZE) { 47994 traverseContextPool.push(traverseContext); 47995 } 47996} 47997/** 47998 * @param {?*} children Children tree container. 47999 * @param {!string} nameSoFar Name of the key path so far. 48000 * @param {!function} callback Callback to invoke with each child found. 48001 * @param {?*} traverseContext Used to pass information throughout the traversal 48002 * process. 48003 * @return {!number} The number of children in this subtree. 48004 */ 48005 48006 48007function traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) { 48008 var type = typeof children; 48009 48010 if (type === 'undefined' || type === 'boolean') { 48011 // All of the above are perceived as null. 48012 children = null; 48013 } 48014 48015 var invokeCallback = false; 48016 48017 if (children === null) { 48018 invokeCallback = true; 48019 } else { 48020 switch (type) { 48021 case 'string': 48022 case 'number': 48023 invokeCallback = true; 48024 break; 48025 48026 case 'object': 48027 switch (children.$$typeof) { 48028 case REACT_ELEMENT_TYPE: 48029 case REACT_PORTAL_TYPE: 48030 invokeCallback = true; 48031 } 48032 48033 } 48034 } 48035 48036 if (invokeCallback) { 48037 callback(traverseContext, children, // If it's the only child, treat the name as if it was wrapped in an array 48038 // so that it's consistent if the number of children grows. 48039 nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar); 48040 return 1; 48041 } 48042 48043 var child; 48044 var nextName; 48045 var subtreeCount = 0; // Count of children found in the current subtree. 48046 48047 var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR; 48048 48049 if (Array.isArray(children)) { 48050 for (var i = 0; i < children.length; i++) { 48051 child = children[i]; 48052 nextName = nextNamePrefix + getComponentKey(child, i); 48053 subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext); 48054 } 48055 } else { 48056 var iteratorFn = getIteratorFn(children); 48057 48058 if (typeof iteratorFn === 'function') { 48059 48060 { 48061 // Warn about using Maps as children 48062 if (iteratorFn === children.entries) { 48063 if (!didWarnAboutMaps) { 48064 warn('Using Maps as children is deprecated and will be removed in ' + 'a future major release. Consider converting children to ' + 'an array of keyed ReactElements instead.'); 48065 } 48066 48067 didWarnAboutMaps = true; 48068 } 48069 } 48070 48071 var iterator = iteratorFn.call(children); 48072 var step; 48073 var ii = 0; 48074 48075 while (!(step = iterator.next()).done) { 48076 child = step.value; 48077 nextName = nextNamePrefix + getComponentKey(child, ii++); 48078 subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext); 48079 } 48080 } else if (type === 'object') { 48081 var addendum = ''; 48082 48083 { 48084 addendum = ' If you meant to render a collection of children, use an array ' + 'instead.' + ReactDebugCurrentFrame.getStackAddendum(); 48085 } 48086 48087 var childrenString = '' + children; 48088 48089 { 48090 { 48091 throw Error( "Objects are not valid as a React child (found: " + (childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString) + ")." + addendum ); 48092 } 48093 } 48094 } 48095 } 48096 48097 return subtreeCount; 48098} 48099/** 48100 * Traverses children that are typically specified as `props.children`, but 48101 * might also be specified through attributes: 48102 * 48103 * - `traverseAllChildren(this.props.children, ...)` 48104 * - `traverseAllChildren(this.props.leftPanelChildren, ...)` 48105 * 48106 * The `traverseContext` is an optional argument that is passed through the 48107 * entire traversal. It can be used to store accumulations or anything else that 48108 * the callback might find relevant. 48109 * 48110 * @param {?*} children Children tree object. 48111 * @param {!function} callback To invoke upon traversing each child. 48112 * @param {?*} traverseContext Context for traversal. 48113 * @return {!number} The number of children in this subtree. 48114 */ 48115 48116 48117function traverseAllChildren(children, callback, traverseContext) { 48118 if (children == null) { 48119 return 0; 48120 } 48121 48122 return traverseAllChildrenImpl(children, '', callback, traverseContext); 48123} 48124/** 48125 * Generate a key string that identifies a component within a set. 48126 * 48127 * @param {*} component A component that could contain a manual key. 48128 * @param {number} index Index that is used if a manual key is not provided. 48129 * @return {string} 48130 */ 48131 48132 48133function getComponentKey(component, index) { 48134 // Do some typechecking here since we call this blindly. We want to ensure 48135 // that we don't block potential future ES APIs. 48136 if (typeof component === 'object' && component !== null && component.key != null) { 48137 // Explicit key 48138 return escape(component.key); 48139 } // Implicit key determined by the index in the set 48140 48141 48142 return index.toString(36); 48143} 48144 48145function forEachSingleChild(bookKeeping, child, name) { 48146 var func = bookKeeping.func, 48147 context = bookKeeping.context; 48148 func.call(context, child, bookKeeping.count++); 48149} 48150/** 48151 * Iterates through children that are typically specified as `props.children`. 48152 * 48153 * See https://reactjs.org/docs/react-api.html#reactchildrenforeach 48154 * 48155 * The provided forEachFunc(child, index) will be called for each 48156 * leaf child. 48157 * 48158 * @param {?*} children Children tree container. 48159 * @param {function(*, int)} forEachFunc 48160 * @param {*} forEachContext Context for forEachContext. 48161 */ 48162 48163 48164function forEachChildren(children, forEachFunc, forEachContext) { 48165 if (children == null) { 48166 return children; 48167 } 48168 48169 var traverseContext = getPooledTraverseContext(null, null, forEachFunc, forEachContext); 48170 traverseAllChildren(children, forEachSingleChild, traverseContext); 48171 releaseTraverseContext(traverseContext); 48172} 48173 48174function mapSingleChildIntoContext(bookKeeping, child, childKey) { 48175 var result = bookKeeping.result, 48176 keyPrefix = bookKeeping.keyPrefix, 48177 func = bookKeeping.func, 48178 context = bookKeeping.context; 48179 var mappedChild = func.call(context, child, bookKeeping.count++); 48180 48181 if (Array.isArray(mappedChild)) { 48182 mapIntoWithKeyPrefixInternal(mappedChild, result, childKey, function (c) { 48183 return c; 48184 }); 48185 } else if (mappedChild != null) { 48186 if (isValidElement(mappedChild)) { 48187 mappedChild = cloneAndReplaceKey(mappedChild, // Keep both the (mapped) and old keys if they differ, just as 48188 // traverseAllChildren used to do for objects as children 48189 keyPrefix + (mappedChild.key && (!child || child.key !== mappedChild.key) ? escapeUserProvidedKey(mappedChild.key) + '/' : '') + childKey); 48190 } 48191 48192 result.push(mappedChild); 48193 } 48194} 48195 48196function mapIntoWithKeyPrefixInternal(children, array, prefix, func, context) { 48197 var escapedPrefix = ''; 48198 48199 if (prefix != null) { 48200 escapedPrefix = escapeUserProvidedKey(prefix) + '/'; 48201 } 48202 48203 var traverseContext = getPooledTraverseContext(array, escapedPrefix, func, context); 48204 traverseAllChildren(children, mapSingleChildIntoContext, traverseContext); 48205 releaseTraverseContext(traverseContext); 48206} 48207/** 48208 * Maps children that are typically specified as `props.children`. 48209 * 48210 * See https://reactjs.org/docs/react-api.html#reactchildrenmap 48211 * 48212 * The provided mapFunction(child, key, index) will be called for each 48213 * leaf child. 48214 * 48215 * @param {?*} children Children tree container. 48216 * @param {function(*, int)} func The map function. 48217 * @param {*} context Context for mapFunction. 48218 * @return {object} Object containing the ordered map of results. 48219 */ 48220 48221 48222function mapChildren(children, func, context) { 48223 if (children == null) { 48224 return children; 48225 } 48226 48227 var result = []; 48228 mapIntoWithKeyPrefixInternal(children, result, null, func, context); 48229 return result; 48230} 48231/** 48232 * Count the number of children that are typically specified as 48233 * `props.children`. 48234 * 48235 * See https://reactjs.org/docs/react-api.html#reactchildrencount 48236 * 48237 * @param {?*} children Children tree container. 48238 * @return {number} The number of children. 48239 */ 48240 48241 48242function countChildren(children) { 48243 return traverseAllChildren(children, function () { 48244 return null; 48245 }, null); 48246} 48247/** 48248 * Flatten a children object (typically specified as `props.children`) and 48249 * return an array with appropriately re-keyed children. 48250 * 48251 * See https://reactjs.org/docs/react-api.html#reactchildrentoarray 48252 */ 48253 48254 48255function toArray(children) { 48256 var result = []; 48257 mapIntoWithKeyPrefixInternal(children, result, null, function (child) { 48258 return child; 48259 }); 48260 return result; 48261} 48262/** 48263 * Returns the first child in a collection of children and verifies that there 48264 * is only one child in the collection. 48265 * 48266 * See https://reactjs.org/docs/react-api.html#reactchildrenonly 48267 * 48268 * The current implementation of this function assumes that a single child gets 48269 * passed without a wrapper, but the purpose of this helper function is to 48270 * abstract away the particular structure of children. 48271 * 48272 * @param {?object} children Child collection structure. 48273 * @return {ReactElement} The first and only `ReactElement` contained in the 48274 * structure. 48275 */ 48276 48277 48278function onlyChild(children) { 48279 if (!isValidElement(children)) { 48280 { 48281 throw Error( "React.Children.only expected to receive a single React element child." ); 48282 } 48283 } 48284 48285 return children; 48286} 48287 48288function createContext(defaultValue, calculateChangedBits) { 48289 if (calculateChangedBits === undefined) { 48290 calculateChangedBits = null; 48291 } else { 48292 { 48293 if (calculateChangedBits !== null && typeof calculateChangedBits !== 'function') { 48294 error('createContext: Expected the optional second argument to be a ' + 'function. Instead received: %s', calculateChangedBits); 48295 } 48296 } 48297 } 48298 48299 var context = { 48300 $$typeof: REACT_CONTEXT_TYPE, 48301 _calculateChangedBits: calculateChangedBits, 48302 // As a workaround to support multiple concurrent renderers, we categorize 48303 // some renderers as primary and others as secondary. We only expect 48304 // there to be two concurrent renderers at most: React Native (primary) and 48305 // Fabric (secondary); React DOM (primary) and React ART (secondary). 48306 // Secondary renderers store their context values on separate fields. 48307 _currentValue: defaultValue, 48308 _currentValue2: defaultValue, 48309 // Used to track how many concurrent renderers this context currently 48310 // supports within in a single renderer. Such as parallel server rendering. 48311 _threadCount: 0, 48312 // These are circular 48313 Provider: null, 48314 Consumer: null 48315 }; 48316 context.Provider = { 48317 $$typeof: REACT_PROVIDER_TYPE, 48318 _context: context 48319 }; 48320 var hasWarnedAboutUsingNestedContextConsumers = false; 48321 var hasWarnedAboutUsingConsumerProvider = false; 48322 48323 { 48324 // A separate object, but proxies back to the original context object for 48325 // backwards compatibility. It has a different $$typeof, so we can properly 48326 // warn for the incorrect usage of Context as a Consumer. 48327 var Consumer = { 48328 $$typeof: REACT_CONTEXT_TYPE, 48329 _context: context, 48330 _calculateChangedBits: context._calculateChangedBits 48331 }; // $FlowFixMe: Flow complains about not setting a value, which is intentional here 48332 48333 Object.defineProperties(Consumer, { 48334 Provider: { 48335 get: function () { 48336 if (!hasWarnedAboutUsingConsumerProvider) { 48337 hasWarnedAboutUsingConsumerProvider = true; 48338 48339 error('Rendering <Context.Consumer.Provider> is not supported and will be removed in ' + 'a future major release. Did you mean to render <Context.Provider> instead?'); 48340 } 48341 48342 return context.Provider; 48343 }, 48344 set: function (_Provider) { 48345 context.Provider = _Provider; 48346 } 48347 }, 48348 _currentValue: { 48349 get: function () { 48350 return context._currentValue; 48351 }, 48352 set: function (_currentValue) { 48353 context._currentValue = _currentValue; 48354 } 48355 }, 48356 _currentValue2: { 48357 get: function () { 48358 return context._currentValue2; 48359 }, 48360 set: function (_currentValue2) { 48361 context._currentValue2 = _currentValue2; 48362 } 48363 }, 48364 _threadCount: { 48365 get: function () { 48366 return context._threadCount; 48367 }, 48368 set: function (_threadCount) { 48369 context._threadCount = _threadCount; 48370 } 48371 }, 48372 Consumer: { 48373 get: function () { 48374 if (!hasWarnedAboutUsingNestedContextConsumers) { 48375 hasWarnedAboutUsingNestedContextConsumers = true; 48376 48377 error('Rendering <Context.Consumer.Consumer> is not supported and will be removed in ' + 'a future major release. Did you mean to render <Context.Consumer> instead?'); 48378 } 48379 48380 return context.Consumer; 48381 } 48382 } 48383 }); // $FlowFixMe: Flow complains about missing properties because it doesn't understand defineProperty 48384 48385 context.Consumer = Consumer; 48386 } 48387 48388 { 48389 context._currentRenderer = null; 48390 context._currentRenderer2 = null; 48391 } 48392 48393 return context; 48394} 48395 48396function lazy(ctor) { 48397 var lazyType = { 48398 $$typeof: REACT_LAZY_TYPE, 48399 _ctor: ctor, 48400 // React uses these fields to store the result. 48401 _status: -1, 48402 _result: null 48403 }; 48404 48405 { 48406 // In production, this would just set it on the object. 48407 var defaultProps; 48408 var propTypes; 48409 Object.defineProperties(lazyType, { 48410 defaultProps: { 48411 configurable: true, 48412 get: function () { 48413 return defaultProps; 48414 }, 48415 set: function (newDefaultProps) { 48416 error('React.lazy(...): It is not supported to assign `defaultProps` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.'); 48417 48418 defaultProps = newDefaultProps; // Match production behavior more closely: 48419 48420 Object.defineProperty(lazyType, 'defaultProps', { 48421 enumerable: true 48422 }); 48423 } 48424 }, 48425 propTypes: { 48426 configurable: true, 48427 get: function () { 48428 return propTypes; 48429 }, 48430 set: function (newPropTypes) { 48431 error('React.lazy(...): It is not supported to assign `propTypes` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.'); 48432 48433 propTypes = newPropTypes; // Match production behavior more closely: 48434 48435 Object.defineProperty(lazyType, 'propTypes', { 48436 enumerable: true 48437 }); 48438 } 48439 } 48440 }); 48441 } 48442 48443 return lazyType; 48444} 48445 48446function forwardRef(render) { 48447 { 48448 if (render != null && render.$$typeof === REACT_MEMO_TYPE) { 48449 error('forwardRef requires a render function but received a `memo` ' + 'component. Instead of forwardRef(memo(...)), use ' + 'memo(forwardRef(...)).'); 48450 } else if (typeof render !== 'function') { 48451 error('forwardRef requires a render function but was given %s.', render === null ? 'null' : typeof render); 48452 } else { 48453 if (render.length !== 0 && render.length !== 2) { 48454 error('forwardRef render functions accept exactly two parameters: props and ref. %s', render.length === 1 ? 'Did you forget to use the ref parameter?' : 'Any additional parameter will be undefined.'); 48455 } 48456 } 48457 48458 if (render != null) { 48459 if (render.defaultProps != null || render.propTypes != null) { 48460 error('forwardRef render functions do not support propTypes or defaultProps. ' + 'Did you accidentally pass a React component?'); 48461 } 48462 } 48463 } 48464 48465 return { 48466 $$typeof: REACT_FORWARD_REF_TYPE, 48467 render: render 48468 }; 48469} 48470 48471function isValidElementType(type) { 48472 return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill. 48473 type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE); 48474} 48475 48476function memo(type, compare) { 48477 { 48478 if (!isValidElementType(type)) { 48479 error('memo: The first argument must be a component. Instead ' + 'received: %s', type === null ? 'null' : typeof type); 48480 } 48481 } 48482 48483 return { 48484 $$typeof: REACT_MEMO_TYPE, 48485 type: type, 48486 compare: compare === undefined ? null : compare 48487 }; 48488} 48489 48490function resolveDispatcher() { 48491 var dispatcher = ReactCurrentDispatcher.current; 48492 48493 if (!(dispatcher !== null)) { 48494 { 48495 throw Error( "Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://fb.me/react-invalid-hook-call for tips about how to debug and fix this problem." ); 48496 } 48497 } 48498 48499 return dispatcher; 48500} 48501 48502function useContext(Context, unstable_observedBits) { 48503 var dispatcher = resolveDispatcher(); 48504 48505 { 48506 if (unstable_observedBits !== undefined) { 48507 error('useContext() second argument is reserved for future ' + 'use in React. Passing it is not supported. ' + 'You passed: %s.%s', unstable_observedBits, typeof unstable_observedBits === 'number' && Array.isArray(arguments[2]) ? '\n\nDid you call array.map(useContext)? ' + 'Calling Hooks inside a loop is not supported. ' + 'Learn more at https://fb.me/rules-of-hooks' : ''); 48508 } // TODO: add a more generic warning for invalid values. 48509 48510 48511 if (Context._context !== undefined) { 48512 var realContext = Context._context; // Don't deduplicate because this legitimately causes bugs 48513 // and nobody should be using this in existing code. 48514 48515 if (realContext.Consumer === Context) { 48516 error('Calling useContext(Context.Consumer) is not supported, may cause bugs, and will be ' + 'removed in a future major release. Did you mean to call useContext(Context) instead?'); 48517 } else if (realContext.Provider === Context) { 48518 error('Calling useContext(Context.Provider) is not supported. ' + 'Did you mean to call useContext(Context) instead?'); 48519 } 48520 } 48521 } 48522 48523 return dispatcher.useContext(Context, unstable_observedBits); 48524} 48525function useState(initialState) { 48526 var dispatcher = resolveDispatcher(); 48527 return dispatcher.useState(initialState); 48528} 48529function useReducer(reducer, initialArg, init) { 48530 var dispatcher = resolveDispatcher(); 48531 return dispatcher.useReducer(reducer, initialArg, init); 48532} 48533function useRef(initialValue) { 48534 var dispatcher = resolveDispatcher(); 48535 return dispatcher.useRef(initialValue); 48536} 48537function useEffect(create, deps) { 48538 var dispatcher = resolveDispatcher(); 48539 return dispatcher.useEffect(create, deps); 48540} 48541function useLayoutEffect(create, deps) { 48542 var dispatcher = resolveDispatcher(); 48543 return dispatcher.useLayoutEffect(create, deps); 48544} 48545function useCallback(callback, deps) { 48546 var dispatcher = resolveDispatcher(); 48547 return dispatcher.useCallback(callback, deps); 48548} 48549function useMemo(create, deps) { 48550 var dispatcher = resolveDispatcher(); 48551 return dispatcher.useMemo(create, deps); 48552} 48553function useImperativeHandle(ref, create, deps) { 48554 var dispatcher = resolveDispatcher(); 48555 return dispatcher.useImperativeHandle(ref, create, deps); 48556} 48557function useDebugValue(value, formatterFn) { 48558 { 48559 var dispatcher = resolveDispatcher(); 48560 return dispatcher.useDebugValue(value, formatterFn); 48561 } 48562} 48563 48564var propTypesMisspellWarningShown; 48565 48566{ 48567 propTypesMisspellWarningShown = false; 48568} 48569 48570function getDeclarationErrorAddendum() { 48571 if (ReactCurrentOwner.current) { 48572 var name = getComponentName(ReactCurrentOwner.current.type); 48573 48574 if (name) { 48575 return '\n\nCheck the render method of `' + name + '`.'; 48576 } 48577 } 48578 48579 return ''; 48580} 48581 48582function getSourceInfoErrorAddendum(source) { 48583 if (source !== undefined) { 48584 var fileName = source.fileName.replace(/^.*[\\\/]/, ''); 48585 var lineNumber = source.lineNumber; 48586 return '\n\nCheck your code at ' + fileName + ':' + lineNumber + '.'; 48587 } 48588 48589 return ''; 48590} 48591 48592function getSourceInfoErrorAddendumForProps(elementProps) { 48593 if (elementProps !== null && elementProps !== undefined) { 48594 return getSourceInfoErrorAddendum(elementProps.__source); 48595 } 48596 48597 return ''; 48598} 48599/** 48600 * Warn if there's no key explicitly set on dynamic arrays of children or 48601 * object keys are not valid. This allows us to keep track of children between 48602 * updates. 48603 */ 48604 48605 48606var ownerHasKeyUseWarning = {}; 48607 48608function getCurrentComponentErrorInfo(parentType) { 48609 var info = getDeclarationErrorAddendum(); 48610 48611 if (!info) { 48612 var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name; 48613 48614 if (parentName) { 48615 info = "\n\nCheck the top-level render call using <" + parentName + ">."; 48616 } 48617 } 48618 48619 return info; 48620} 48621/** 48622 * Warn if the element doesn't have an explicit key assigned to it. 48623 * This element is in an array. The array could grow and shrink or be 48624 * reordered. All children that haven't already been validated are required to 48625 * have a "key" property assigned to it. Error statuses are cached so a warning 48626 * will only be shown once. 48627 * 48628 * @internal 48629 * @param {ReactElement} element Element that requires a key. 48630 * @param {*} parentType element's parent's type. 48631 */ 48632 48633 48634function validateExplicitKey(element, parentType) { 48635 if (!element._store || element._store.validated || element.key != null) { 48636 return; 48637 } 48638 48639 element._store.validated = true; 48640 var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType); 48641 48642 if (ownerHasKeyUseWarning[currentComponentErrorInfo]) { 48643 return; 48644 } 48645 48646 ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a 48647 // property, it may be the creator of the child that's responsible for 48648 // assigning it a key. 48649 48650 var childOwner = ''; 48651 48652 if (element && element._owner && element._owner !== ReactCurrentOwner.current) { 48653 // Give the component that originally created this child. 48654 childOwner = " It was passed a child from " + getComponentName(element._owner.type) + "."; 48655 } 48656 48657 setCurrentlyValidatingElement(element); 48658 48659 { 48660 error('Each child in a list should have a unique "key" prop.' + '%s%s See https://fb.me/react-warning-keys for more information.', currentComponentErrorInfo, childOwner); 48661 } 48662 48663 setCurrentlyValidatingElement(null); 48664} 48665/** 48666 * Ensure that every element either is passed in a static location, in an 48667 * array with an explicit keys property defined, or in an object literal 48668 * with valid key property. 48669 * 48670 * @internal 48671 * @param {ReactNode} node Statically passed child of any type. 48672 * @param {*} parentType node's parent's type. 48673 */ 48674 48675 48676function validateChildKeys(node, parentType) { 48677 if (typeof node !== 'object') { 48678 return; 48679 } 48680 48681 if (Array.isArray(node)) { 48682 for (var i = 0; i < node.length; i++) { 48683 var child = node[i]; 48684 48685 if (isValidElement(child)) { 48686 validateExplicitKey(child, parentType); 48687 } 48688 } 48689 } else if (isValidElement(node)) { 48690 // This element was passed in a valid location. 48691 if (node._store) { 48692 node._store.validated = true; 48693 } 48694 } else if (node) { 48695 var iteratorFn = getIteratorFn(node); 48696 48697 if (typeof iteratorFn === 'function') { 48698 // Entry iterators used to provide implicit keys, 48699 // but now we print a separate warning for them later. 48700 if (iteratorFn !== node.entries) { 48701 var iterator = iteratorFn.call(node); 48702 var step; 48703 48704 while (!(step = iterator.next()).done) { 48705 if (isValidElement(step.value)) { 48706 validateExplicitKey(step.value, parentType); 48707 } 48708 } 48709 } 48710 } 48711 } 48712} 48713/** 48714 * Given an element, validate that its props follow the propTypes definition, 48715 * provided by the type. 48716 * 48717 * @param {ReactElement} element 48718 */ 48719 48720 48721function validatePropTypes(element) { 48722 { 48723 var type = element.type; 48724 48725 if (type === null || type === undefined || typeof type === 'string') { 48726 return; 48727 } 48728 48729 var name = getComponentName(type); 48730 var propTypes; 48731 48732 if (typeof type === 'function') { 48733 propTypes = type.propTypes; 48734 } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here. 48735 // Inner props are checked in the reconciler. 48736 type.$$typeof === REACT_MEMO_TYPE)) { 48737 propTypes = type.propTypes; 48738 } else { 48739 return; 48740 } 48741 48742 if (propTypes) { 48743 setCurrentlyValidatingElement(element); 48744 checkPropTypes(propTypes, element.props, 'prop', name, ReactDebugCurrentFrame.getStackAddendum); 48745 setCurrentlyValidatingElement(null); 48746 } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) { 48747 propTypesMisspellWarningShown = true; 48748 48749 error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', name || 'Unknown'); 48750 } 48751 48752 if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) { 48753 error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.'); 48754 } 48755 } 48756} 48757/** 48758 * Given a fragment, validate that it can only be provided with fragment props 48759 * @param {ReactElement} fragment 48760 */ 48761 48762 48763function validateFragmentProps(fragment) { 48764 { 48765 setCurrentlyValidatingElement(fragment); 48766 var keys = Object.keys(fragment.props); 48767 48768 for (var i = 0; i < keys.length; i++) { 48769 var key = keys[i]; 48770 48771 if (key !== 'children' && key !== 'key') { 48772 error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key); 48773 48774 break; 48775 } 48776 } 48777 48778 if (fragment.ref !== null) { 48779 error('Invalid attribute `ref` supplied to `React.Fragment`.'); 48780 } 48781 48782 setCurrentlyValidatingElement(null); 48783 } 48784} 48785function createElementWithValidation(type, props, children) { 48786 var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to 48787 // succeed and there will likely be errors in render. 48788 48789 if (!validType) { 48790 var info = ''; 48791 48792 if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) { 48793 info += ' You likely forgot to export your component from the file ' + "it's defined in, or you might have mixed up default and named imports."; 48794 } 48795 48796 var sourceInfo = getSourceInfoErrorAddendumForProps(props); 48797 48798 if (sourceInfo) { 48799 info += sourceInfo; 48800 } else { 48801 info += getDeclarationErrorAddendum(); 48802 } 48803 48804 var typeString; 48805 48806 if (type === null) { 48807 typeString = 'null'; 48808 } else if (Array.isArray(type)) { 48809 typeString = 'array'; 48810 } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) { 48811 typeString = "<" + (getComponentName(type.type) || 'Unknown') + " />"; 48812 info = ' Did you accidentally export a JSX literal instead of a component?'; 48813 } else { 48814 typeString = typeof type; 48815 } 48816 48817 { 48818 error('React.createElement: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info); 48819 } 48820 } 48821 48822 var element = createElement.apply(this, arguments); // The result can be nullish if a mock or a custom function is used. 48823 // TODO: Drop this when these are no longer allowed as the type argument. 48824 48825 if (element == null) { 48826 return element; 48827 } // Skip key warning if the type isn't valid since our key validation logic 48828 // doesn't expect a non-string/function type and can throw confusing errors. 48829 // We don't want exception behavior to differ between dev and prod. 48830 // (Rendering will throw with a helpful message and as soon as the type is 48831 // fixed, the key warnings will appear.) 48832 48833 48834 if (validType) { 48835 for (var i = 2; i < arguments.length; i++) { 48836 validateChildKeys(arguments[i], type); 48837 } 48838 } 48839 48840 if (type === REACT_FRAGMENT_TYPE) { 48841 validateFragmentProps(element); 48842 } else { 48843 validatePropTypes(element); 48844 } 48845 48846 return element; 48847} 48848var didWarnAboutDeprecatedCreateFactory = false; 48849function createFactoryWithValidation(type) { 48850 var validatedFactory = createElementWithValidation.bind(null, type); 48851 validatedFactory.type = type; 48852 48853 { 48854 if (!didWarnAboutDeprecatedCreateFactory) { 48855 didWarnAboutDeprecatedCreateFactory = true; 48856 48857 warn('React.createFactory() is deprecated and will be removed in ' + 'a future major release. Consider using JSX ' + 'or use React.createElement() directly instead.'); 48858 } // Legacy hook: remove it 48859 48860 48861 Object.defineProperty(validatedFactory, 'type', { 48862 enumerable: false, 48863 get: function () { 48864 warn('Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.'); 48865 48866 Object.defineProperty(this, 'type', { 48867 value: type 48868 }); 48869 return type; 48870 } 48871 }); 48872 } 48873 48874 return validatedFactory; 48875} 48876function cloneElementWithValidation(element, props, children) { 48877 var newElement = cloneElement.apply(this, arguments); 48878 48879 for (var i = 2; i < arguments.length; i++) { 48880 validateChildKeys(arguments[i], newElement.type); 48881 } 48882 48883 validatePropTypes(newElement); 48884 return newElement; 48885} 48886 48887{ 48888 48889 try { 48890 var frozenObject = Object.freeze({}); 48891 var testMap = new Map([[frozenObject, null]]); 48892 var testSet = new Set([frozenObject]); // This is necessary for Rollup to not consider these unused. 48893 // https://github.com/rollup/rollup/issues/1771 48894 // TODO: we can remove these if Rollup fixes the bug. 48895 48896 testMap.set(0, 0); 48897 testSet.add(0); 48898 } catch (e) { 48899 } 48900} 48901 48902var createElement$1 = createElementWithValidation ; 48903var cloneElement$1 = cloneElementWithValidation ; 48904var createFactory = createFactoryWithValidation ; 48905var Children = { 48906 map: mapChildren, 48907 forEach: forEachChildren, 48908 count: countChildren, 48909 toArray: toArray, 48910 only: onlyChild 48911}; 48912 48913exports.Children = Children; 48914exports.Component = Component; 48915exports.Fragment = REACT_FRAGMENT_TYPE; 48916exports.Profiler = REACT_PROFILER_TYPE; 48917exports.PureComponent = PureComponent; 48918exports.StrictMode = REACT_STRICT_MODE_TYPE; 48919exports.Suspense = REACT_SUSPENSE_TYPE; 48920exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = ReactSharedInternals; 48921exports.cloneElement = cloneElement$1; 48922exports.createContext = createContext; 48923exports.createElement = createElement$1; 48924exports.createFactory = createFactory; 48925exports.createRef = createRef; 48926exports.forwardRef = forwardRef; 48927exports.isValidElement = isValidElement; 48928exports.lazy = lazy; 48929exports.memo = memo; 48930exports.useCallback = useCallback; 48931exports.useContext = useContext; 48932exports.useDebugValue = useDebugValue; 48933exports.useEffect = useEffect; 48934exports.useImperativeHandle = useImperativeHandle; 48935exports.useLayoutEffect = useLayoutEffect; 48936exports.useMemo = useMemo; 48937exports.useReducer = useReducer; 48938exports.useRef = useRef; 48939exports.useState = useState; 48940exports.version = ReactVersion; 48941 })(); 48942} 48943 48944 48945/***/ }), 48946
vendor: 716 bytes, lines 48947-48963
48947/***/ "../../node_modules/react/index.js": 48948/*!****************************************************************************************************************************!*\ 48949 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/react/index.js ***! 48950 \****************************************************************************************************************************/ 48951/*! no static exports found */ 48952/***/ (function(module, exports, __webpack_require__) { 48953 48954"use strict"; 48955 48956 48957if (false) {} else { 48958 module.exports = __webpack_require__(/*! ./cjs/react.development.js */ "../../node_modules/react/cjs/react.development.js"); 48959} 48960 48961 48962/***/ }), 48963
vendor: 9,993 bytes, lines 48964-49324
48964/***/ "../../node_modules/scheduler/cjs/scheduler-tracing.development.js": 48965/*!************************************************************************************************************************************************************!*\ 48966 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/scheduler/cjs/scheduler-tracing.development.js ***! 48967 \************************************************************************************************************************************************************/ 48968/*! no static exports found */ 48969/***/ (function(module, exports, __webpack_require__) { 48970 48971"use strict"; 48972/** @license React v0.19.1 48973 * scheduler-tracing.development.js 48974 * 48975 * Copyright (c) Facebook, Inc. and its affiliates. 48976 * 48977 * This source code is licensed under the MIT license found in the 48978 * LICENSE file in the root directory of this source tree. 48979 */ 48980 48981 48982 48983 48984 48985if (true) { 48986 (function() { 48987'use strict'; 48988 48989var DEFAULT_THREAD_ID = 0; // Counters used to generate unique IDs. 48990 48991var interactionIDCounter = 0; 48992var threadIDCounter = 0; // Set of currently traced interactions. 48993// Interactions "stack"â 48994// Meaning that newly traced interactions are appended to the previously active set. 48995// When an interaction goes out of scope, the previous set (if any) is restored. 48996 48997exports.__interactionsRef = null; // Listener(s) to notify when interactions begin and end. 48998 48999exports.__subscriberRef = null; 49000 49001{ 49002 exports.__interactionsRef = { 49003 current: new Set() 49004 }; 49005 exports.__subscriberRef = { 49006 current: null 49007 }; 49008} 49009function unstable_clear(callback) { 49010 49011 var prevInteractions = exports.__interactionsRef.current; 49012 exports.__interactionsRef.current = new Set(); 49013 49014 try { 49015 return callback(); 49016 } finally { 49017 exports.__interactionsRef.current = prevInteractions; 49018 } 49019} 49020function unstable_getCurrent() { 49021 { 49022 return exports.__interactionsRef.current; 49023 } 49024} 49025function unstable_getThreadID() { 49026 return ++threadIDCounter; 49027} 49028function unstable_trace(name, timestamp, callback) { 49029 var threadID = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : DEFAULT_THREAD_ID; 49030 49031 var interaction = { 49032 __count: 1, 49033 id: interactionIDCounter++, 49034 name: name, 49035 timestamp: timestamp 49036 }; 49037 var prevInteractions = exports.__interactionsRef.current; // Traced interactions should stack/accumulate. 49038 // To do that, clone the current interactions. 49039 // The previous set will be restored upon completion. 49040 49041 var interactions = new Set(prevInteractions); 49042 interactions.add(interaction); 49043 exports.__interactionsRef.current = interactions; 49044 var subscriber = exports.__subscriberRef.current; 49045 var returnValue; 49046 49047 try { 49048 if (subscriber !== null) { 49049 subscriber.onInteractionTraced(interaction); 49050 } 49051 } finally { 49052 try { 49053 if (subscriber !== null) { 49054 subscriber.onWorkStarted(interactions, threadID); 49055 } 49056 } finally { 49057 try { 49058 returnValue = callback(); 49059 } finally { 49060 exports.__interactionsRef.current = prevInteractions; 49061 49062 try { 49063 if (subscriber !== null) { 49064 subscriber.onWorkStopped(interactions, threadID); 49065 } 49066 } finally { 49067 interaction.__count--; // If no async work was scheduled for this interaction, 49068 // Notify subscribers that it's completed. 49069 49070 if (subscriber !== null && interaction.__count === 0) { 49071 subscriber.onInteractionScheduledWorkCompleted(interaction); 49072 } 49073 } 49074 } 49075 } 49076 } 49077 49078 return returnValue; 49079} 49080function unstable_wrap(callback) { 49081 var threadID = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_THREAD_ID; 49082 49083 var wrappedInteractions = exports.__interactionsRef.current; 49084 var subscriber = exports.__subscriberRef.current; 49085 49086 if (subscriber !== null) { 49087 subscriber.onWorkScheduled(wrappedInteractions, threadID); 49088 } // Update the pending async work count for the current interactions. 49089 // Update after calling subscribers in case of error. 49090 49091 49092 wrappedInteractions.forEach(function (interaction) { 49093 interaction.__count++; 49094 }); 49095 var hasRun = false; 49096 49097 function wrapped() { 49098 var prevInteractions = exports.__interactionsRef.current; 49099 exports.__interactionsRef.current = wrappedInteractions; 49100 subscriber = exports.__subscriberRef.current; 49101 49102 try { 49103 var returnValue; 49104 49105 try { 49106 if (subscriber !== null) { 49107 subscriber.onWorkStarted(wrappedInteractions, threadID); 49108 } 49109 } finally { 49110 try { 49111 returnValue = callback.apply(undefined, arguments); 49112 } finally { 49113 exports.__interactionsRef.current = prevInteractions; 49114 49115 if (subscriber !== null) { 49116 subscriber.onWorkStopped(wrappedInteractions, threadID); 49117 } 49118 } 49119 } 49120 49121 return returnValue; 49122 } finally { 49123 if (!hasRun) { 49124 // We only expect a wrapped function to be executed once, 49125 // But in the event that it's executed more than onceâ 49126 // Only decrement the outstanding interaction counts once. 49127 hasRun = true; // Update pending async counts for all wrapped interactions. 49128 // If this was the last scheduled async work for any of them, 49129 // Mark them as completed. 49130 49131 wrappedInteractions.forEach(function (interaction) { 49132 interaction.__count--; 49133 49134 if (subscriber !== null && interaction.__count === 0) { 49135 subscriber.onInteractionScheduledWorkCompleted(interaction); 49136 } 49137 }); 49138 } 49139 } 49140 } 49141 49142 wrapped.cancel = function cancel() { 49143 subscriber = exports.__subscriberRef.current; 49144 49145 try { 49146 if (subscriber !== null) { 49147 subscriber.onWorkCanceled(wrappedInteractions, threadID); 49148 } 49149 } finally { 49150 // Update pending async counts for all wrapped interactions. 49151 // If this was the last scheduled async work for any of them, 49152 // Mark them as completed. 49153 wrappedInteractions.forEach(function (interaction) { 49154 interaction.__count--; 49155 49156 if (subscriber && interaction.__count === 0) { 49157 subscriber.onInteractionScheduledWorkCompleted(interaction); 49158 } 49159 }); 49160 } 49161 }; 49162 49163 return wrapped; 49164} 49165 49166var subscribers = null; 49167 49168{ 49169 subscribers = new Set(); 49170} 49171 49172function unstable_subscribe(subscriber) { 49173 { 49174 subscribers.add(subscriber); 49175 49176 if (subscribers.size === 1) { 49177 exports.__subscriberRef.current = { 49178 onInteractionScheduledWorkCompleted: onInteractionScheduledWorkCompleted, 49179 onInteractionTraced: onInteractionTraced, 49180 onWorkCanceled: onWorkCanceled, 49181 onWorkScheduled: onWorkScheduled, 49182 onWorkStarted: onWorkStarted, 49183 onWorkStopped: onWorkStopped 49184 }; 49185 } 49186 } 49187} 49188function unstable_unsubscribe(subscriber) { 49189 { 49190 subscribers.delete(subscriber); 49191 49192 if (subscribers.size === 0) { 49193 exports.__subscriberRef.current = null; 49194 } 49195 } 49196} 49197 49198function onInteractionTraced(interaction) { 49199 var didCatchError = false; 49200 var caughtError = null; 49201 subscribers.forEach(function (subscriber) { 49202 try { 49203 subscriber.onInteractionTraced(interaction); 49204 } catch (error) { 49205 if (!didCatchError) { 49206 didCatchError = true; 49207 caughtError = error; 49208 } 49209 } 49210 }); 49211 49212 if (didCatchError) { 49213 throw caughtError; 49214 } 49215} 49216 49217function onInteractionScheduledWorkCompleted(interaction) { 49218 var didCatchError = false; 49219 var caughtError = null; 49220 subscribers.forEach(function (subscriber) { 49221 try { 49222 subscriber.onInteractionScheduledWorkCompleted(interaction); 49223 } catch (error) { 49224 if (!didCatchError) { 49225 didCatchError = true; 49226 caughtError = error; 49227 } 49228 } 49229 }); 49230 49231 if (didCatchError) { 49232 throw caughtError; 49233 } 49234} 49235 49236function onWorkScheduled(interactions, threadID) { 49237 var didCatchError = false; 49238 var caughtError = null; 49239 subscribers.forEach(function (subscriber) { 49240 try { 49241 subscriber.onWorkScheduled(interactions, threadID); 49242 } catch (error) { 49243 if (!didCatchError) { 49244 didCatchError = true; 49245 caughtError = error; 49246 } 49247 } 49248 }); 49249 49250 if (didCatchError) { 49251 throw caughtError; 49252 } 49253} 49254 49255function onWorkStarted(interactions, threadID) { 49256 var didCatchError = false; 49257 var caughtError = null; 49258 subscribers.forEach(function (subscriber) { 49259 try { 49260 subscriber.onWorkStarted(interactions, threadID); 49261 } catch (error) { 49262 if (!didCatchError) { 49263 didCatchError = true; 49264 caughtError = error; 49265 } 49266 } 49267 }); 49268 49269 if (didCatchError) { 49270 throw caughtError; 49271 } 49272} 49273 49274function onWorkStopped(interactions, threadID) { 49275 var didCatchError = false; 49276 var caughtError = null; 49277 subscribers.forEach(function (subscriber) { 49278 try { 49279 subscriber.onWorkStopped(interactions, threadID); 49280 } catch (error) { 49281 if (!didCatchError) { 49282 didCatchError = true; 49283 caughtError = error; 49284 } 49285 } 49286 }); 49287 49288 if (didCatchError) { 49289 throw caughtError; 49290 } 49291} 49292 49293function onWorkCanceled(interactions, threadID) { 49294 var didCatchError = false; 49295 var caughtError = null; 49296 subscribers.forEach(function (subscriber) { 49297 try { 49298 subscriber.onWorkCanceled(interactions, threadID); 49299 } catch (error) { 49300 if (!didCatchError) { 49301 didCatchError = true; 49302 caughtError = error; 49303 } 49304 } 49305 }); 49306 49307 if (didCatchError) { 49308 throw caughtError; 49309 } 49310} 49311 49312exports.unstable_clear = unstable_clear; 49313exports.unstable_getCurrent = unstable_getCurrent; 49314exports.unstable_getThreadID = unstable_getThreadID; 49315exports.unstable_subscribe = unstable_subscribe; 49316exports.unstable_trace = unstable_trace; 49317exports.unstable_unsubscribe = unstable_unsubscribe; 49318exports.unstable_wrap = unstable_wrap; 49319 })(); 49320} 49321 49322 49323/***/ }), 49324
vendor: 25,229 bytes, lines 49325-50194
49325/***/ "../../node_modules/scheduler/cjs/scheduler.development.js": 49326/*!****************************************************************************************************************************************************!*\ 49327 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/scheduler/cjs/scheduler.development.js ***! 49328 \****************************************************************************************************************************************************/ 49329/*! no static exports found */ 49330/***/ (function(module, exports, __webpack_require__) { 49331 49332"use strict"; 49333/** @license React v0.19.1 49334 * scheduler.development.js 49335 * 49336 * Copyright (c) Facebook, Inc. and its affiliates. 49337 * 49338 * This source code is licensed under the MIT license found in the 49339 * LICENSE file in the root directory of this source tree. 49340 */ 49341 49342 49343 49344 49345 49346if (true) { 49347 (function() { 49348'use strict'; 49349 49350var enableSchedulerDebugging = false; 49351var enableProfiling = true; 49352 49353var requestHostCallback; 49354var requestHostTimeout; 49355var cancelHostTimeout; 49356var shouldYieldToHost; 49357var requestPaint; 49358 49359if ( // If Scheduler runs in a non-DOM environment, it falls back to a naive 49360// implementation using setTimeout. 49361typeof window === 'undefined' || // Check if MessageChannel is supported, too. 49362typeof MessageChannel !== 'function') { 49363 // If this accidentally gets imported in a non-browser environment, e.g. JavaScriptCore, 49364 // fallback to a naive implementation. 49365 var _callback = null; 49366 var _timeoutID = null; 49367 49368 var _flushCallback = function () { 49369 if (_callback !== null) { 49370 try { 49371 var currentTime = exports.unstable_now(); 49372 var hasRemainingTime = true; 49373 49374 _callback(hasRemainingTime, currentTime); 49375 49376 _callback = null; 49377 } catch (e) { 49378 setTimeout(_flushCallback, 0); 49379 throw e; 49380 } 49381 } 49382 }; 49383 49384 var initialTime = Date.now(); 49385 49386 exports.unstable_now = function () { 49387 return Date.now() - initialTime; 49388 }; 49389 49390 requestHostCallback = function (cb) { 49391 if (_callback !== null) { 49392 // Protect against re-entrancy. 49393 setTimeout(requestHostCallback, 0, cb); 49394 } else { 49395 _callback = cb; 49396 setTimeout(_flushCallback, 0); 49397 } 49398 }; 49399 49400 requestHostTimeout = function (cb, ms) { 49401 _timeoutID = setTimeout(cb, ms); 49402 }; 49403 49404 cancelHostTimeout = function () { 49405 clearTimeout(_timeoutID); 49406 }; 49407 49408 shouldYieldToHost = function () { 49409 return false; 49410 }; 49411 49412 requestPaint = exports.unstable_forceFrameRate = function () {}; 49413} else { 49414 // Capture local references to native APIs, in case a polyfill overrides them. 49415 var performance = window.performance; 49416 var _Date = window.Date; 49417 var _setTimeout = window.setTimeout; 49418 var _clearTimeout = window.clearTimeout; 49419 49420 if (typeof console !== 'undefined') { 49421 // TODO: Scheduler no longer requires these methods to be polyfilled. But 49422 // maybe we want to continue warning if they don't exist, to preserve the 49423 // option to rely on it in the future? 49424 var requestAnimationFrame = window.requestAnimationFrame; 49425 var cancelAnimationFrame = window.cancelAnimationFrame; // TODO: Remove fb.me link 49426 49427 if (typeof requestAnimationFrame !== 'function') { 49428 // Using console['error'] to evade Babel and ESLint 49429 console['error']("This browser doesn't support requestAnimationFrame. " + 'Make sure that you load a ' + 'polyfill in older browsers. https://fb.me/react-polyfills'); 49430 } 49431 49432 if (typeof cancelAnimationFrame !== 'function') { 49433 // Using console['error'] to evade Babel and ESLint 49434 console['error']("This browser doesn't support cancelAnimationFrame. " + 'Make sure that you load a ' + 'polyfill in older browsers. https://fb.me/react-polyfills'); 49435 } 49436 } 49437 49438 if (typeof performance === 'object' && typeof performance.now === 'function') { 49439 exports.unstable_now = function () { 49440 return performance.now(); 49441 }; 49442 } else { 49443 var _initialTime = _Date.now(); 49444 49445 exports.unstable_now = function () { 49446 return _Date.now() - _initialTime; 49447 }; 49448 } 49449 49450 var isMessageLoopRunning = false; 49451 var scheduledHostCallback = null; 49452 var taskTimeoutID = -1; // Scheduler periodically yields in case there is other work on the main 49453 // thread, like user events. By default, it yields multiple times per frame. 49454 // It does not attempt to align with frame boundaries, since most tasks don't 49455 // need to be frame aligned; for those that do, use requestAnimationFrame. 49456 49457 var yieldInterval = 5; 49458 var deadline = 0; // TODO: Make this configurable 49459 49460 { 49461 // `isInputPending` is not available. Since we have no way of knowing if 49462 // there's pending input, always yield at the end of the frame. 49463 shouldYieldToHost = function () { 49464 return exports.unstable_now() >= deadline; 49465 }; // Since we yield every frame regardless, `requestPaint` has no effect. 49466 49467 49468 requestPaint = function () {}; 49469 } 49470 49471 exports.unstable_forceFrameRate = function (fps) { 49472 if (fps < 0 || fps > 125) { 49473 // Using console['error'] to evade Babel and ESLint 49474 console['error']('forceFrameRate takes a positive int between 0 and 125, ' + 'forcing framerates higher than 125 fps is not unsupported'); 49475 return; 49476 } 49477 49478 if (fps > 0) { 49479 yieldInterval = Math.floor(1000 / fps); 49480 } else { 49481 // reset the framerate 49482 yieldInterval = 5; 49483 } 49484 }; 49485 49486 var performWorkUntilDeadline = function () { 49487 if (scheduledHostCallback !== null) { 49488 var currentTime = exports.unstable_now(); // Yield after `yieldInterval` ms, regardless of where we are in the vsync 49489 // cycle. This means there's always time remaining at the beginning of 49490 // the message event. 49491 49492 deadline = currentTime + yieldInterval; 49493 var hasTimeRemaining = true; 49494 49495 try { 49496 var hasMoreWork = scheduledHostCallback(hasTimeRemaining, currentTime); 49497 49498 if (!hasMoreWork) { 49499 isMessageLoopRunning = false; 49500 scheduledHostCallback = null; 49501 } else { 49502 // If there's more work, schedule the next message event at the end 49503 // of the preceding one. 49504 port.postMessage(null); 49505 } 49506 } catch (error) { 49507 // If a scheduler task throws, exit the current browser task so the 49508 // error can be observed. 49509 port.postMessage(null); 49510 throw error; 49511 } 49512 } else { 49513 isMessageLoopRunning = false; 49514 } // Yielding to the browser will give it a chance to paint, so we can 49515 }; 49516 49517 var channel = new MessageChannel(); 49518 var port = channel.port2; 49519 channel.port1.onmessage = performWorkUntilDeadline; 49520 49521 requestHostCallback = function (callback) { 49522 scheduledHostCallback = callback; 49523 49524 if (!isMessageLoopRunning) { 49525 isMessageLoopRunning = true; 49526 port.postMessage(null); 49527 } 49528 }; 49529 49530 requestHostTimeout = function (callback, ms) { 49531 taskTimeoutID = _setTimeout(function () { 49532 callback(exports.unstable_now()); 49533 }, ms); 49534 }; 49535 49536 cancelHostTimeout = function () { 49537 _clearTimeout(taskTimeoutID); 49538 49539 taskTimeoutID = -1; 49540 }; 49541} 49542 49543function push(heap, node) { 49544 var index = heap.length; 49545 heap.push(node); 49546 siftUp(heap, node, index); 49547} 49548function peek(heap) { 49549 var first = heap[0]; 49550 return first === undefined ? null : first; 49551} 49552function pop(heap) { 49553 var first = heap[0]; 49554 49555 if (first !== undefined) { 49556 var last = heap.pop(); 49557 49558 if (last !== first) { 49559 heap[0] = last; 49560 siftDown(heap, last, 0); 49561 } 49562 49563 return first; 49564 } else { 49565 return null; 49566 } 49567} 49568 49569function siftUp(heap, node, i) { 49570 var index = i; 49571 49572 while (true) { 49573 var parentIndex = index - 1 >>> 1; 49574 var parent = heap[parentIndex]; 49575 49576 if (parent !== undefined && compare(parent, node) > 0) { 49577 // The parent is larger. Swap positions. 49578 heap[parentIndex] = node; 49579 heap[index] = parent; 49580 index = parentIndex; 49581 } else { 49582 // The parent is smaller. Exit. 49583 return; 49584 } 49585 } 49586} 49587 49588function siftDown(heap, node, i) { 49589 var index = i; 49590 var length = heap.length; 49591 49592 while (index < length) { 49593 var leftIndex = (index + 1) * 2 - 1; 49594 var left = heap[leftIndex]; 49595 var rightIndex = leftIndex + 1; 49596 var right = heap[rightIndex]; // If the left or right node is smaller, swap with the smaller of those. 49597 49598 if (left !== undefined && compare(left, node) < 0) { 49599 if (right !== undefined && compare(right, left) < 0) { 49600 heap[index] = right; 49601 heap[rightIndex] = node; 49602 index = rightIndex; 49603 } else { 49604 heap[index] = left; 49605 heap[leftIndex] = node; 49606 index = leftIndex; 49607 } 49608 } else if (right !== undefined && compare(right, node) < 0) { 49609 heap[index] = right; 49610 heap[rightIndex] = node; 49611 index = rightIndex; 49612 } else { 49613 // Neither child is smaller. Exit. 49614 return; 49615 } 49616 } 49617} 49618 49619function compare(a, b) { 49620 // Compare sort index first, then task id. 49621 var diff = a.sortIndex - b.sortIndex; 49622 return diff !== 0 ? diff : a.id - b.id; 49623} 49624 49625// TODO: Use symbols? 49626var NoPriority = 0; 49627var ImmediatePriority = 1; 49628var UserBlockingPriority = 2; 49629var NormalPriority = 3; 49630var LowPriority = 4; 49631var IdlePriority = 5; 49632 49633var runIdCounter = 0; 49634var mainThreadIdCounter = 0; 49635var profilingStateSize = 4; 49636var sharedProfilingBuffer = // $FlowFixMe Flow doesn't know about SharedArrayBuffer 49637typeof SharedArrayBuffer === 'function' ? new SharedArrayBuffer(profilingStateSize * Int32Array.BYTES_PER_ELEMENT) : // $FlowFixMe Flow doesn't know about ArrayBuffer 49638typeof ArrayBuffer === 'function' ? new ArrayBuffer(profilingStateSize * Int32Array.BYTES_PER_ELEMENT) : null // Don't crash the init path on IE9 49639; 49640var profilingState = sharedProfilingBuffer !== null ? new Int32Array(sharedProfilingBuffer) : []; // We can't read this but it helps save bytes for null checks 49641 49642var PRIORITY = 0; 49643var CURRENT_TASK_ID = 1; 49644var CURRENT_RUN_ID = 2; 49645var QUEUE_SIZE = 3; 49646 49647{ 49648 profilingState[PRIORITY] = NoPriority; // This is maintained with a counter, because the size of the priority queue 49649 // array might include canceled tasks. 49650 49651 profilingState[QUEUE_SIZE] = 0; 49652 profilingState[CURRENT_TASK_ID] = 0; 49653} // Bytes per element is 4 49654 49655 49656var INITIAL_EVENT_LOG_SIZE = 131072; 49657var MAX_EVENT_LOG_SIZE = 524288; // Equivalent to 2 megabytes 49658 49659var eventLogSize = 0; 49660var eventLogBuffer = null; 49661var eventLog = null; 49662var eventLogIndex = 0; 49663var TaskStartEvent = 1; 49664var TaskCompleteEvent = 2; 49665var TaskErrorEvent = 3; 49666var TaskCancelEvent = 4; 49667var TaskRunEvent = 5; 49668var TaskYieldEvent = 6; 49669var SchedulerSuspendEvent = 7; 49670var SchedulerResumeEvent = 8; 49671 49672function logEvent(entries) { 49673 if (eventLog !== null) { 49674 var offset = eventLogIndex; 49675 eventLogIndex += entries.length; 49676 49677 if (eventLogIndex + 1 > eventLogSize) { 49678 eventLogSize *= 2; 49679 49680 if (eventLogSize > MAX_EVENT_LOG_SIZE) { 49681 // Using console['error'] to evade Babel and ESLint 49682 console['error']("Scheduler Profiling: Event log exceeded maximum size. Don't " + 'forget to call `stopLoggingProfilingEvents()`.'); 49683 stopLoggingProfilingEvents(); 49684 return; 49685 } 49686 49687 var newEventLog = new Int32Array(eventLogSize * 4); 49688 newEventLog.set(eventLog); 49689 eventLogBuffer = newEventLog.buffer; 49690 eventLog = newEventLog; 49691 } 49692 49693 eventLog.set(entries, offset); 49694 } 49695} 49696 49697function startLoggingProfilingEvents() { 49698 eventLogSize = INITIAL_EVENT_LOG_SIZE; 49699 eventLogBuffer = new ArrayBuffer(eventLogSize * 4); 49700 eventLog = new Int32Array(eventLogBuffer); 49701 eventLogIndex = 0; 49702} 49703function stopLoggingProfilingEvents() { 49704 var buffer = eventLogBuffer; 49705 eventLogSize = 0; 49706 eventLogBuffer = null; 49707 eventLog = null; 49708 eventLogIndex = 0; 49709 return buffer; 49710} 49711function markTaskStart(task, ms) { 49712 { 49713 profilingState[QUEUE_SIZE]++; 49714 49715 if (eventLog !== null) { 49716 // performance.now returns a float, representing milliseconds. When the 49717 // event is logged, it's coerced to an int. Convert to microseconds to 49718 // maintain extra degrees of precision. 49719 logEvent([TaskStartEvent, ms * 1000, task.id, task.priorityLevel]); 49720 } 49721 } 49722} 49723function markTaskCompleted(task, ms) { 49724 { 49725 profilingState[PRIORITY] = NoPriority; 49726 profilingState[CURRENT_TASK_ID] = 0; 49727 profilingState[QUEUE_SIZE]--; 49728 49729 if (eventLog !== null) { 49730 logEvent([TaskCompleteEvent, ms * 1000, task.id]); 49731 } 49732 } 49733} 49734function markTaskCanceled(task, ms) { 49735 { 49736 profilingState[QUEUE_SIZE]--; 49737 49738 if (eventLog !== null) { 49739 logEvent([TaskCancelEvent, ms * 1000, task.id]); 49740 } 49741 } 49742} 49743function markTaskErrored(task, ms) { 49744 { 49745 profilingState[PRIORITY] = NoPriority; 49746 profilingState[CURRENT_TASK_ID] = 0; 49747 profilingState[QUEUE_SIZE]--; 49748 49749 if (eventLog !== null) { 49750 logEvent([TaskErrorEvent, ms * 1000, task.id]); 49751 } 49752 } 49753} 49754function markTaskRun(task, ms) { 49755 { 49756 runIdCounter++; 49757 profilingState[PRIORITY] = task.priorityLevel; 49758 profilingState[CURRENT_TASK_ID] = task.id; 49759 profilingState[CURRENT_RUN_ID] = runIdCounter; 49760 49761 if (eventLog !== null) { 49762 logEvent([TaskRunEvent, ms * 1000, task.id, runIdCounter]); 49763 } 49764 } 49765} 49766function markTaskYield(task, ms) { 49767 { 49768 profilingState[PRIORITY] = NoPriority; 49769 profilingState[CURRENT_TASK_ID] = 0; 49770 profilingState[CURRENT_RUN_ID] = 0; 49771 49772 if (eventLog !== null) { 49773 logEvent([TaskYieldEvent, ms * 1000, task.id, runIdCounter]); 49774 } 49775 } 49776} 49777function markSchedulerSuspended(ms) { 49778 { 49779 mainThreadIdCounter++; 49780 49781 if (eventLog !== null) { 49782 logEvent([SchedulerSuspendEvent, ms * 1000, mainThreadIdCounter]); 49783 } 49784 } 49785} 49786function markSchedulerUnsuspended(ms) { 49787 { 49788 if (eventLog !== null) { 49789 logEvent([SchedulerResumeEvent, ms * 1000, mainThreadIdCounter]); 49790 } 49791 } 49792} 49793 49794/* eslint-disable no-var */ 49795// Math.pow(2, 30) - 1 49796// 0b111111111111111111111111111111 49797 49798var maxSigned31BitInt = 1073741823; // Times out immediately 49799 49800var IMMEDIATE_PRIORITY_TIMEOUT = -1; // Eventually times out 49801 49802var USER_BLOCKING_PRIORITY = 250; 49803var NORMAL_PRIORITY_TIMEOUT = 5000; 49804var LOW_PRIORITY_TIMEOUT = 10000; // Never times out 49805 49806var IDLE_PRIORITY = maxSigned31BitInt; // Tasks are stored on a min heap 49807 49808var taskQueue = []; 49809var timerQueue = []; // Incrementing id counter. Used to maintain insertion order. 49810 49811var taskIdCounter = 1; // Pausing the scheduler is useful for debugging. 49812var currentTask = null; 49813var currentPriorityLevel = NormalPriority; // This is set while performing work, to prevent re-entrancy. 49814 49815var isPerformingWork = false; 49816var isHostCallbackScheduled = false; 49817var isHostTimeoutScheduled = false; 49818 49819function advanceTimers(currentTime) { 49820 // Check for tasks that are no longer delayed and add them to the queue. 49821 var timer = peek(timerQueue); 49822 49823 while (timer !== null) { 49824 if (timer.callback === null) { 49825 // Timer was cancelled. 49826 pop(timerQueue); 49827 } else if (timer.startTime <= currentTime) { 49828 // Timer fired. Transfer to the task queue. 49829 pop(timerQueue); 49830 timer.sortIndex = timer.expirationTime; 49831 push(taskQueue, timer); 49832 49833 { 49834 markTaskStart(timer, currentTime); 49835 timer.isQueued = true; 49836 } 49837 } else { 49838 // Remaining timers are pending. 49839 return; 49840 } 49841 49842 timer = peek(timerQueue); 49843 } 49844} 49845 49846function handleTimeout(currentTime) { 49847 isHostTimeoutScheduled = false; 49848 advanceTimers(currentTime); 49849 49850 if (!isHostCallbackScheduled) { 49851 if (peek(taskQueue) !== null) { 49852 isHostCallbackScheduled = true; 49853 requestHostCallback(flushWork); 49854 } else { 49855 var firstTimer = peek(timerQueue); 49856 49857 if (firstTimer !== null) { 49858 requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime); 49859 } 49860 } 49861 } 49862} 49863 49864function flushWork(hasTimeRemaining, initialTime) { 49865 { 49866 markSchedulerUnsuspended(initialTime); 49867 } // We'll need a host callback the next time work is scheduled. 49868 49869 49870 isHostCallbackScheduled = false; 49871 49872 if (isHostTimeoutScheduled) { 49873 // We scheduled a timeout but it's no longer needed. Cancel it. 49874 isHostTimeoutScheduled = false; 49875 cancelHostTimeout(); 49876 } 49877 49878 isPerformingWork = true; 49879 var previousPriorityLevel = currentPriorityLevel; 49880 49881 try { 49882 if (enableProfiling) { 49883 try { 49884 return workLoop(hasTimeRemaining, initialTime); 49885 } catch (error) { 49886 if (currentTask !== null) { 49887 var currentTime = exports.unstable_now(); 49888 markTaskErrored(currentTask, currentTime); 49889 currentTask.isQueued = false; 49890 } 49891 49892 throw error; 49893 } 49894 } else { 49895 // No catch in prod codepath. 49896 return workLoop(hasTimeRemaining, initialTime); 49897 } 49898 } finally { 49899 currentTask = null; 49900 currentPriorityLevel = previousPriorityLevel; 49901 isPerformingWork = false; 49902 49903 { 49904 var _currentTime = exports.unstable_now(); 49905 49906 markSchedulerSuspended(_currentTime); 49907 } 49908 } 49909} 49910 49911function workLoop(hasTimeRemaining, initialTime) { 49912 var currentTime = initialTime; 49913 advanceTimers(currentTime); 49914 currentTask = peek(taskQueue); 49915 49916 while (currentTask !== null && !(enableSchedulerDebugging )) { 49917 if (currentTask.expirationTime > currentTime && (!hasTimeRemaining || shouldYieldToHost())) { 49918 // This currentTask hasn't expired, and we've reached the deadline. 49919 break; 49920 } 49921 49922 var callback = currentTask.callback; 49923 49924 if (callback !== null) { 49925 currentTask.callback = null; 49926 currentPriorityLevel = currentTask.priorityLevel; 49927 var didUserCallbackTimeout = currentTask.expirationTime <= currentTime; 49928 markTaskRun(currentTask, currentTime); 49929 var continuationCallback = callback(didUserCallbackTimeout); 49930 currentTime = exports.unstable_now(); 49931 49932 if (typeof continuationCallback === 'function') { 49933 currentTask.callback = continuationCallback; 49934 markTaskYield(currentTask, currentTime); 49935 } else { 49936 { 49937 markTaskCompleted(currentTask, currentTime); 49938 currentTask.isQueued = false; 49939 } 49940 49941 if (currentTask === peek(taskQueue)) { 49942 pop(taskQueue); 49943 } 49944 } 49945 49946 advanceTimers(currentTime); 49947 } else { 49948 pop(taskQueue); 49949 } 49950 49951 currentTask = peek(taskQueue); 49952 } // Return whether there's additional work 49953 49954 49955 if (currentTask !== null) { 49956 return true; 49957 } else { 49958 var firstTimer = peek(timerQueue); 49959 49960 if (firstTimer !== null) { 49961 requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime); 49962 } 49963 49964 return false; 49965 } 49966} 49967 49968function unstable_runWithPriority(priorityLevel, eventHandler) { 49969 switch (priorityLevel) { 49970 case ImmediatePriority: 49971 case UserBlockingPriority: 49972 case NormalPriority: 49973 case LowPriority: 49974 case IdlePriority: 49975 break; 49976 49977 default: 49978 priorityLevel = NormalPriority; 49979 } 49980 49981 var previousPriorityLevel = currentPriorityLevel; 49982 currentPriorityLevel = priorityLevel; 49983 49984 try { 49985 return eventHandler(); 49986 } finally { 49987 currentPriorityLevel = previousPriorityLevel; 49988 } 49989} 49990 49991function unstable_next(eventHandler) { 49992 var priorityLevel; 49993 49994 switch (currentPriorityLevel) { 49995 case ImmediatePriority: 49996 case UserBlockingPriority: 49997 case NormalPriority: 49998 // Shift down to normal priority 49999 priorityLevel = NormalPriority; 50000 break; 50001 50002 default: 50003 // Anything lower than normal priority should remain at the current level. 50004 priorityLevel = currentPriorityLevel; 50005 break; 50006 } 50007 50008 var previousPriorityLevel = currentPriorityLevel; 50009 currentPriorityLevel = priorityLevel; 50010 50011 try { 50012 return eventHandler(); 50013 } finally { 50014 currentPriorityLevel = previousPriorityLevel; 50015 } 50016} 50017 50018function unstable_wrapCallback(callback) { 50019 var parentPriorityLevel = currentPriorityLevel; 50020 return function () { 50021 // This is a fork of runWithPriority, inlined for performance. 50022 var previousPriorityLevel = currentPriorityLevel; 50023 currentPriorityLevel = parentPriorityLevel; 50024 50025 try { 50026 return callback.apply(this, arguments); 50027 } finally { 50028 currentPriorityLevel = previousPriorityLevel; 50029 } 50030 }; 50031} 50032 50033function timeoutForPriorityLevel(priorityLevel) { 50034 switch (priorityLevel) { 50035 case ImmediatePriority: 50036 return IMMEDIATE_PRIORITY_TIMEOUT; 50037 50038 case UserBlockingPriority: 50039 return USER_BLOCKING_PRIORITY; 50040 50041 case IdlePriority: 50042 return IDLE_PRIORITY; 50043 50044 case LowPriority: 50045 return LOW_PRIORITY_TIMEOUT; 50046 50047 case NormalPriority: 50048 default: 50049 return NORMAL_PRIORITY_TIMEOUT; 50050 } 50051} 50052 50053function unstable_scheduleCallback(priorityLevel, callback, options) { 50054 var currentTime = exports.unstable_now(); 50055 var startTime; 50056 var timeout; 50057 50058 if (typeof options === 'object' && options !== null) { 50059 var delay = options.delay; 50060 50061 if (typeof delay === 'number' && delay > 0) { 50062 startTime = currentTime + delay; 50063 } else { 50064 startTime = currentTime; 50065 } 50066 50067 timeout = typeof options.timeout === 'number' ? options.timeout : timeoutForPriorityLevel(priorityLevel); 50068 } else { 50069 timeout = timeoutForPriorityLevel(priorityLevel); 50070 startTime = currentTime; 50071 } 50072 50073 var expirationTime = startTime + timeout; 50074 var newTask = { 50075 id: taskIdCounter++, 50076 callback: callback, 50077 priorityLevel: priorityLevel, 50078 startTime: startTime, 50079 expirationTime: expirationTime, 50080 sortIndex: -1 50081 }; 50082 50083 { 50084 newTask.isQueued = false; 50085 } 50086 50087 if (startTime > currentTime) { 50088 // This is a delayed task. 50089 newTask.sortIndex = startTime; 50090 push(timerQueue, newTask); 50091 50092 if (peek(taskQueue) === null && newTask === peek(timerQueue)) { 50093 // All tasks are delayed, and this is the task with the earliest delay. 50094 if (isHostTimeoutScheduled) { 50095 // Cancel an existing timeout. 50096 cancelHostTimeout(); 50097 } else { 50098 isHostTimeoutScheduled = true; 50099 } // Schedule a timeout. 50100 50101 50102 requestHostTimeout(handleTimeout, startTime - currentTime); 50103 } 50104 } else { 50105 newTask.sortIndex = expirationTime; 50106 push(taskQueue, newTask); 50107 50108 { 50109 markTaskStart(newTask, currentTime); 50110 newTask.isQueued = true; 50111 } // Schedule a host callback, if needed. If we're already performing work, 50112 // wait until the next time we yield. 50113 50114 50115 if (!isHostCallbackScheduled && !isPerformingWork) { 50116 isHostCallbackScheduled = true; 50117 requestHostCallback(flushWork); 50118 } 50119 } 50120 50121 return newTask; 50122} 50123 50124function unstable_pauseExecution() { 50125} 50126 50127function unstable_continueExecution() { 50128 50129 if (!isHostCallbackScheduled && !isPerformingWork) { 50130 isHostCallbackScheduled = true; 50131 requestHostCallback(flushWork); 50132 } 50133} 50134 50135function unstable_getFirstCallbackNode() { 50136 return peek(taskQueue); 50137} 50138 50139function unstable_cancelCallback(task) { 50140 { 50141 if (task.isQueued) { 50142 var currentTime = exports.unstable_now(); 50143 markTaskCanceled(task, currentTime); 50144 task.isQueued = false; 50145 } 50146 } // Null out the callback to indicate the task has been canceled. (Can't 50147 // remove from the queue because you can't remove arbitrary nodes from an 50148 // array based heap, only the first one.) 50149 50150 50151 task.callback = null; 50152} 50153 50154function unstable_getCurrentPriorityLevel() { 50155 return currentPriorityLevel; 50156} 50157 50158function unstable_shouldYield() { 50159 var currentTime = exports.unstable_now(); 50160 advanceTimers(currentTime); 50161 var firstTask = peek(taskQueue); 50162 return firstTask !== currentTask && currentTask !== null && firstTask !== null && firstTask.callback !== null && firstTask.startTime <= currentTime && firstTask.expirationTime < currentTask.expirationTime || shouldYieldToHost(); 50163} 50164 50165var unstable_requestPaint = requestPaint; 50166var unstable_Profiling = { 50167 startLoggingProfilingEvents: startLoggingProfilingEvents, 50168 stopLoggingProfilingEvents: stopLoggingProfilingEvents, 50169 sharedProfilingBuffer: sharedProfilingBuffer 50170} ; 50171 50172exports.unstable_IdlePriority = IdlePriority; 50173exports.unstable_ImmediatePriority = ImmediatePriority; 50174exports.unstable_LowPriority = LowPriority; 50175exports.unstable_NormalPriority = NormalPriority; 50176exports.unstable_Profiling = unstable_Profiling; 50177exports.unstable_UserBlockingPriority = UserBlockingPriority; 50178exports.unstable_cancelCallback = unstable_cancelCallback; 50179exports.unstable_continueExecution = unstable_continueExecution; 50180exports.unstable_getCurrentPriorityLevel = unstable_getCurrentPriorityLevel; 50181exports.unstable_getFirstCallbackNode = unstable_getFirstCallbackNode; 50182exports.unstable_next = unstable_next; 50183exports.unstable_pauseExecution = unstable_pauseExecution; 50184exports.unstable_requestPaint = unstable_requestPaint; 50185exports.unstable_runWithPriority = unstable_runWithPriority; 50186exports.unstable_scheduleCallback = unstable_scheduleCallback; 50187exports.unstable_shouldYield = unstable_shouldYield; 50188exports.unstable_wrapCallback = unstable_wrapCallback; 50189 })(); 50190} 50191 50192 50193/***/ }), 50194
vendor: 744 bytes, lines 50195-50211
50195/***/ "../../node_modules/scheduler/index.js": 50196/*!********************************************************************************************************************************!*\ 50197 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/scheduler/index.js ***! 50198 \********************************************************************************************************************************/ 50199/*! no static exports found */ 50200/***/ (function(module, exports, __webpack_require__) { 50201 50202"use strict"; 50203 50204 50205if (false) {} else { 50206 module.exports = __webpack_require__(/*! ./cjs/scheduler.development.js */ "../../node_modules/scheduler/cjs/scheduler.development.js"); 50207} 50208 50209 50210/***/ }), 50211
vendor: 768 bytes, lines 50212-50228
50212/***/ "../../node_modules/scheduler/tracing.js": 50213/*!**********************************************************************************************************************************!*\ 50214 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/scheduler/tracing.js ***! 50215 \**********************************************************************************************************************************/ 50216/*! no static exports found */ 50217/***/ (function(module, exports, __webpack_require__) { 50218 50219"use strict"; 50220 50221 50222if (false) {} else { 50223 module.exports = __webpack_require__(/*! ./cjs/scheduler-tracing.development.js */ "../../node_modules/scheduler/cjs/scheduler-tracing.development.js"); 50224} 50225 50226 50227/***/ }), 50228
vendor: 13,236 bytes, lines 50229-50669
50229/***/ "../../node_modules/smoothscroll-polyfill/dist/smoothscroll.js": 50230/*!********************************************************************************************************************************************************!*\ 50231 !*** /Applications/XAMPP/xamppfiles/htdocs/gwu-wordpress/wp-content/themes/gardnerwebb-twenty/node_modules/smoothscroll-polyfill/dist/smoothscroll.js ***! 50232 \********************************************************************************************************************************************************/ 50233/*! no static exports found */ 50234/***/ (function(module, exports, __webpack_require__) { 50235 50236/* smoothscroll v0.4.4 - 2019 - Dustan Kasten, Jeremias Menichelli - MIT License */ 50237(function () { 50238 'use strict'; 50239 50240 // polyfill 50241 function polyfill() { 50242 // aliases 50243 var w = window; 50244 var d = document; 50245 50246 // return if scroll behavior is supported and polyfill is not forced 50247 if ( 50248 'scrollBehavior' in d.documentElement.style && 50249 w.__forceSmoothScrollPolyfill__ !== true 50250 ) { 50251 return; 50252 } 50253 50254 // globals 50255 var Element = w.HTMLElement || w.Element; 50256 var SCROLL_TIME = 468; 50257 50258 // object gathering original scroll methods 50259 var original = { 50260 scroll: w.scroll || w.scrollTo, 50261 scrollBy: w.scrollBy, 50262 elementScroll: Element.prototype.scroll || scrollElement, 50263 scrollIntoView: Element.prototype.scrollIntoView 50264 }; 50265 50266 // define timing method 50267 var now = 50268 w.performance && w.performance.now 50269 ? w.performance.now.bind(w.performance) 50270 : Date.now; 50271 50272 /** 50273 * indicates if a the current browser is made by Microsoft 50274 * @method isMicrosoftBrowser 50275 * @param {String} userAgent 50276 * @returns {Boolean} 50277 */ 50278 function isMicrosoftBrowser(userAgent) { 50279 var userAgentPatterns = ['MSIE ', 'Trident/', 'Edge/']; 50280 50281 return new RegExp(userAgentPatterns.join('|')).test(userAgent); 50282 } 50283 50284 /* 50285 * IE has rounding bug rounding down clientHeight and clientWidth and 50286 * rounding up scrollHeight and scrollWidth causing false positives 50287 * on hasScrollableSpace 50288 */ 50289 var ROUNDING_TOLERANCE = isMicrosoftBrowser(w.navigator.userAgent) ? 1 : 0; 50290 50291 /** 50292 * changes scroll position inside an element 50293 * @method scrollElement 50294 * @param {Number} x 50295 * @param {Number} y 50296 * @returns {undefined} 50297 */ 50298 function scrollElement(x, y) { 50299 this.scrollLeft = x; 50300 this.scrollTop = y; 50301 } 50302 50303 /** 50304 * returns result of applying ease math function to a number 50305 * @method ease 50306 * @param {Number} k 50307 * @returns {Number} 50308 */ 50309 function ease(k) { 50310 return 0.5 * (1 - Math.cos(Math.PI * k)); 50311 } 50312 50313 /** 50314 * indicates if a smooth behavior should be applied 50315 * @method shouldBailOut 50316 * @param {Number|Object} firstArg 50317 * @returns {Boolean} 50318 */ 50319 function shouldBailOut(firstArg) { 50320 if ( 50321 firstArg === null || 50322 typeof firstArg !== 'object' || 50323 firstArg.behavior === undefined || 50324 firstArg.behavior === 'auto' || 50325 firstArg.behavior === 'instant' 50326 ) { 50327 // first argument is not an object/null 50328 // or behavior is auto, instant or undefined 50329 return true; 50330 } 50331 50332 if (typeof firstArg === 'object' && firstArg.behavior === 'smooth') { 50333 // first argument is an object and behavior is smooth 50334 return false; 50335 } 50336 50337 // throw error when behavior is not supported 50338 throw new TypeError( 50339 'behavior member of ScrollOptions ' + 50340 firstArg.behavior + 50341 ' is not a valid value for enumeration ScrollBehavior.' 50342 ); 50343 } 50344 50345 /** 50346 * indicates if an element has scrollable space in the provided axis 50347 * @method hasScrollableSpace 50348 * @param {Node} el 50349 * @param {String} axis 50350 * @returns {Boolean} 50351 */ 50352 function hasScrollableSpace(el, axis) { 50353 if (axis === 'Y') { 50354 return el.clientHeight + ROUNDING_TOLERANCE < el.scrollHeight; 50355 } 50356 50357 if (axis === 'X') { 50358 return el.clientWidth + ROUNDING_TOLERANCE < el.scrollWidth; 50359 } 50360 } 50361 50362 /** 50363 * indicates if an element has a scrollable overflow property in the axis 50364 * @method canOverflow 50365 * @param {Node} el 50366 * @param {String} axis 50367 * @returns {Boolean} 50368 */ 50369 function canOverflow(el, axis) { 50370 var overflowValue = w.getComputedStyle(el, null)['overflow' + axis]; 50371 50372 return overflowValue === 'auto' || overflowValue === 'scroll'; 50373 } 50374 50375 /** 50376 * indicates if an element can be scrolled in either axis 50377 * @method isScrollable 50378 * @param {Node} el 50379 * @param {String} axis 50380 * @returns {Boolean} 50381 */ 50382 function isScrollable(el) { 50383 var isScrollableY = hasScrollableSpace(el, 'Y') && canOverflow(el, 'Y'); 50384 var isScrollableX = hasScrollableSpace(el, 'X') && canOverflow(el, 'X'); 50385 50386 return isScrollableY || isScrollableX; 50387 } 50388 50389 /** 50390 * finds scrollable parent of an element 50391 * @method findScrollableParent 50392 * @param {Node} el 50393 * @returns {Node} el 50394 */ 50395 function findScrollableParent(el) { 50396 while (el !== d.body && isScrollable(el) === false) { 50397 el = el.parentNode || el.host; 50398 } 50399 50400 return el; 50401 } 50402 50403 /** 50404 * self invoked function that, given a context, steps through scrolling 50405 * @method step 50406 * @param {Object} context 50407 * @returns {undefined} 50408 */ 50409 function step(context) { 50410 var time = now(); 50411 var value; 50412 var currentX; 50413 var currentY; 50414 var elapsed = (time - context.startTime) / SCROLL_TIME; 50415 50416 // avoid elapsed times higher than one 50417 elapsed = elapsed > 1 ? 1 : elapsed; 50418 50419 // apply easing to elapsed time 50420 value = ease(elapsed); 50421 50422 currentX = context.startX + (context.x - context.startX) * value; 50423 currentY = context.startY + (context.y - context.startY) * value; 50424 50425 context.method.call(context.scrollable, currentX, currentY); 50426 50427 // scroll more if we have not reached our destination 50428 if (currentX !== context.x || currentY !== context.y) { 50429 w.requestAnimationFrame(step.bind(w, context)); 50430 } 50431 } 50432 50433 /** 50434 * scrolls window or element with a smooth behavior 50435 * @method smoothScroll 50436 * @param {Object|Node} el 50437 * @param {Number} x 50438 * @param {Number} y 50439 * @returns {undefined} 50440 */ 50441 function smoothScroll(el, x, y) { 50442 var scrollable; 50443 var startX; 50444 var startY; 50445 var method; 50446 var startTime = now(); 50447 50448 // define scroll context 50449 if (el === d.body) { 50450 scrollable = w; 50451 startX = w.scrollX || w.pageXOffset; 50452 startY = w.scrollY || w.pageYOffset; 50453 method = original.scroll; 50454 } else { 50455 scrollable = el; 50456 startX = el.scrollLeft; 50457 startY = el.scrollTop; 50458 method = scrollElement; 50459 } 50460 50461 // scroll looping over a frame 50462 step({ 50463 scrollable: scrollable, 50464 method: method, 50465 startTime: startTime, 50466 startX: startX, 50467 startY: startY, 50468 x: x, 50469 y: y 50470 }); 50471 } 50472 50473 // ORIGINAL METHODS OVERRIDES 50474 // w.scroll and w.scrollTo 50475 w.scroll = w.scrollTo = function() { 50476 // avoid action when no arguments are passed 50477 if (arguments[0] === undefined) { 50478 return; 50479 } 50480 50481 // avoid smooth behavior if not required 50482 if (shouldBailOut(arguments[0]) === true) { 50483 original.scroll.call( 50484 w, 50485 arguments[0].left !== undefined 50486 ? arguments[0].left 50487 : typeof arguments[0] !== 'object' 50488 ? arguments[0] 50489 : w.scrollX || w.pageXOffset, 50490 // use top prop, second argument if present or fallback to scrollY 50491 arguments[0].top !== undefined 50492 ? arguments[0].top 50493 : arguments[1] !== undefined 50494 ? arguments[1] 50495 : w.scrollY || w.pageYOffset 50496 ); 50497 50498 return; 50499 } 50500 50501 // LET THE SMOOTHNESS BEGIN! 50502 smoothScroll.call( 50503 w, 50504 d.body, 50505 arguments[0].left !== undefined 50506 ? ~~arguments[0].left 50507 : w.scrollX || w.pageXOffset, 50508 arguments[0].top !== undefined 50509 ? ~~arguments[0].top 50510 : w.scrollY || w.pageYOffset 50511 ); 50512 }; 50513 50514 // w.scrollBy 50515 w.scrollBy = function() { 50516 // avoid action when no arguments are passed 50517 if (arguments[0] === undefined) { 50518 return; 50519 } 50520 50521 // avoid smooth behavior if not required 50522 if (shouldBailOut(arguments[0])) { 50523 original.scrollBy.call( 50524 w, 50525 arguments[0].left !== undefined 50526 ? arguments[0].left 50527 : typeof arguments[0] !== 'object' ? arguments[0] : 0, 50528 arguments[0].top !== undefined 50529 ? arguments[0].top 50530 : arguments[1] !== undefined ? arguments[1] : 0 50531 ); 50532 50533 return; 50534 } 50535 50536 // LET THE SMOOTHNESS BEGIN! 50537 smoothScroll.call( 50538 w, 50539 d.body, 50540 ~~arguments[0].left + (w.scrollX || w.pageXOffset), 50541 ~~arguments[0].top + (w.scrollY || w.pageYOffset) 50542 ); 50543 }; 50544 50545 // Element.prototype.scroll and Element.prototype.scrollTo 50546 Element.prototype.scroll = Element.prototype.scrollTo = function() { 50547 // avoid action when no arguments are passed 50548 if (arguments[0] === undefined) { 50549 return; 50550 } 50551 50552 // avoid smooth behavior if not required 50553 if (shouldBailOut(arguments[0]) === true) { 50554 // if one number is passed, throw error to match Firefox implementation 50555 if (typeof arguments[0] === 'number' && arguments[1] === undefined) { 50556 throw new SyntaxError('Value could not be converted'); 50557 } 50558 50559 original.elementScroll.call( 50560 this, 50561 // use left prop, first number argument or fallback to scrollLeft 50562 arguments[0].left !== undefined 50563 ? ~~arguments[0].left 50564 : typeof arguments[0] !== 'object' ? ~~arguments[0] : this.scrollLeft, 50565 // use top prop, second argument or fallback to scrollTop 50566 arguments[0].top !== undefined 50567 ? ~~arguments[0].top 50568 : arguments[1] !== undefined ? ~~arguments[1] : this.scrollTop 50569 ); 50570 50571 return; 50572 } 50573 50574 var left = arguments[0].left; 50575 var top = arguments[0].top; 50576 50577 // LET THE SMOOTHNESS BEGIN! 50578 smoothScroll.call( 50579 this, 50580 this, 50581 typeof left === 'undefined' ? this.scrollLeft : ~~left, 50582 typeof top === 'undefined' ? this.scrollTop : ~~top 50583 ); 50584 }; 50585 50586 // Element.prototype.scrollBy 50587 Element.prototype.scrollBy = function() { 50588 // avoid action when no arguments are passed 50589 if (arguments[0] === undefined) { 50590 return; 50591 } 50592 50593 // avoid smooth behavior if not required 50594 if (shouldBailOut(arguments[0]) === true) { 50595 original.elementScroll.call( 50596 this, 50597 arguments[0].left !== undefined 50598 ? ~~arguments[0].left + this.scrollLeft 50599 : ~~arguments[0] + this.scrollLeft, 50600 arguments[0].top !== undefined 50601 ? ~~arguments[0].top + this.scrollTop 50602 : ~~arguments[1] + this.scrollTop 50603 ); 50604 50605 return; 50606 } 50607 50608 this.scroll({ 50609 left: ~~arguments[0].left + this.scrollLeft, 50610 top: ~~arguments[0].top + this.scrollTop, 50611 behavior: arguments[0].behavior 50612 }); 50613 }; 50614 50615 // Element.prototype.scrollIntoView 50616 Element.prototype.scrollIntoView = function() { 50617 // avoid smooth behavior if not required 50618 if (shouldBailOut(arguments[0]) === true) { 50619 original.scrollIntoView.call( 50620 this, 50621 arguments[0] === undefined ? true : arguments[0] 50622 ); 50623 50624 return; 50625 } 50626 50627 // LET THE SMOOTHNESS BEGIN! 50628 var scrollableParent = findScrollableParent(this); 50629 var parentRects = scrollableParent.getBoundingClientRect(); 50630 var clientRects = this.getBoundingClientRect(); 50631 50632 if (scrollableParent !== d.body) { 50633 // reveal element inside parent 50634 smoothScroll.call( 50635 this, 50636 scrollableParent, 50637 scrollableParent.scrollLeft + clientRects.left - parentRects.left, 50638 scrollableParent.scrollTop + clientRects.top - parentRects.top 50639 ); 50640 50641 // reveal parent in viewport unless is fixed 50642 if (w.getComputedStyle(scrollableParent).position !== 'fixed') { 50643 w.scrollBy({ 50644 left: parentRects.left, 50645 top: parentRects.top, 50646 behavior: 'smooth' 50647 }); 50648 } 50649 } else { 50650 // reveal element in viewport 50651 w.scrollBy({ 50652 left: clientRects.left, 50653 top: clientRects.top, 50654 behavior: 'smooth' 50655 }); 50656 } 50657 }; 50658 } 50659 50660 if (true) { 50661 // commonjs 50662 module.exports = { polyfill: polyfill }; 50663 } else {} 50664 50665}()); 50666 50667 50668/***/ }), 50669
vendor: 786 bytes, lines 50670-50702
50670/***/ "../../node_modules/webpack/buildin/module.js": 50671/*!***********************************!*\ 50672 !*** (webpack)/buildin/module.js ***! 50673 \***********************************/ 50674/*! no static exports found */ 50675/***/ (function(module, exports) { 50676 50677module.exports = function(module) { 50678 if (!module.webpackPolyfill) { 50679 module.deprecate = function() {}; 50680 module.paths = []; 50681 // module.parent = undefined by default 50682 if (!module.children) module.children = []; 50683 Object.defineProperty(module, "loaded", { 50684 enumerable: true, 50685 get: function() { 50686 return module.l; 50687 } 50688 }); 50689 Object.defineProperty(module, "id", { 50690 enumerable: true, 50691 get: function() { 50692 return module.i; 50693 } 50694 }); 50695 module.webpackPolyfill = 1; 50696 } 50697 return module; 50698}; 50699 50700 50701/***/ }), 50702
50703/***/ "./search-filter-results/formats/job-card.jsx": 50704/*!****************************************************!*\ 50705 !*** ./search-filter-results/formats/job-card.jsx ***! 50706 \****************************************************/ 50707/*! exports provided: default */ 50708/***/ (function(module, __webpack_exports__, __webpack_require__) { 50709 50710"use strict"; 50711__webpack_require__.r(__webpack_exports__); 50712/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "../../node_modules/react/index.js"); 50713/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 50714/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! moment */ "../../node_modules/moment/moment.js"); 50715/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_1__); 50716/* harmony import */ var _utility__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utility */ "./utility.js"); 50717function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } 50718 50719function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 50720 50721function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } 50722 50723function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } 50724 50725function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } 50726 50727function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } 50728 50729function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } 50730 50731function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } 50732 50733function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } 50734 50735function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } 50736 50737function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } 50738 50739 50740 50741 50742/** 50743 * PostRow 50744 * Formatted output for search and filter experience 50745 * Used for post, news, magazine, spotlight 50746 */ 50747 50748var PostRow = /*#__PURE__*/function (_React$Component) { 50749 _inherits(PostRow, _React$Component); 50750 50751 var _super = _createSuper(PostRow); 50752 50753 function PostRow() { 50754 _classCallCheck(this, PostRow); 50755 50756 return _super.apply(this, arguments); 50757 } 50758 50759 _createClass(PostRow, [{ 50760 key: "render", 50761 value: function render() { 50762 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("li", { 50763 key: this.props.key, 50764 className: "post-row results-grid__item job-card", 50765 style: { 50766 transitionDelay: this.props.index * 0.025 + 's' 50767 } 50768 }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("a", { 50769 "aria-labelledby": this.props.ID + '_header', 50770 href: this.props.permalink, 50771 className: "results-grid__item-link" 50772 }), this._getCategory(), this._getContent(), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", { 50773 className: "post-row__image" 50774 }, this._getImage())); 50775 } 50776 }, { 50777 key: "_getCategory", 50778 value: function _getCategory() { 50779 // news does not show a category label 50780 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", { 50781 className: "post-row__category" 50782 }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", { 50783 className: "supercap" 50784 }, this._getCategoryLabel())); 50785 } 50786 /** 50787 * Show a category label 50788 * @returns {*} 50789 * @private 50790 */ 50791 50792 }, { 50793 key: "_getCategoryLabel", 50794 value: function _getCategoryLabel() { 50795 return this.props.terms['position-type'] ? this.props.terms['position-type'][0].name : 'JOB'; 50796 } 50797 }, { 50798 key: "_getContent", 50799 value: function _getContent() { 50800 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", { 50801 className: "post-row__content" 50802 }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("h2", { 50803 id: this.props.ID + '_header', 50804 className: "post-row__title" 50805 }, this.props.post_title), this._getExcerpt(), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", { 50806 className: "post-row__byline supercap" 50807 }, this._getMetadata())); 50808 } 50809 }, { 50810 key: "_getMetadata", 50811 value: function _getMetadata() { 50812 return this.props.terms['job-area'] ? this.props.terms['job-area'][0].name : ''; 50813 } 50814 }, { 50815 key: "_getImage", 50816 value: function _getImage() { 50817 if (this.props.featured_image_url) { 50818 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("img", { 50819 src: this.props.featured_image_url, 50820 alt: this.props.featured_image_alt 50821 }); 50822 } 50823 } 50824 }, { 50825 key: "_getExcerpt", 50826 value: function _getExcerpt() { 50827 if (this.props.post_excerpt) { 50828 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("p", { 50829 className: "result-card__description" 50830 }, Object(_utility__WEBPACK_IMPORTED_MODULE_2__["decodeString"])(this.props.post_excerpt)); 50831 } 50832 } 50833 }]); 50834 50835 return PostRow; 50836}(react__WEBPACK_IMPORTED_MODULE_0___default.a.Component); 50837 50838/* harmony default export */ __webpack_exports__["default"] = (PostRow); 50839 50840/***/ }), 50841
50842/***/ "./search-filter-results/formats/person-card.jsx": 50843/*!*******************************************************!*\ 50844 !*** ./search-filter-results/formats/person-card.jsx ***! 50845 \*******************************************************/ 50846/*! exports provided: default */ 50847/***/ (function(module, __webpack_exports__, __webpack_require__) { 50848 50849"use strict"; 50850__webpack_require__.r(__webpack_exports__); 50851/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "../../node_modules/react/index.js"); 50852/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 50853function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } 50854 50855function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 50856 50857function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } 50858 50859function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } 50860 50861function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } 50862 50863function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } 50864 50865function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } 50866 50867function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } 50868 50869function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } 50870 50871function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } 50872 50873function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } 50874 50875 50876/** 50877 * The person card is used for the people post type 50878 * Searching a directory - faculty/ staff 50879 */ 50880 50881var PersonCard = /*#__PURE__*/function (_React$Component) { 50882 _inherits(PersonCard, _React$Component); 50883 50884 var _super = _createSuper(PersonCard); 50885 50886 function PersonCard(props) { 50887 var _this; 50888 50889 _classCallCheck(this, PersonCard); 50890 50891 _this = _super.call(this, props); 50892 _this.inputRef = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createRef(); 50893 return _this; 50894 } 50895 50896 _createClass(PersonCard, [{ 50897 key: "componentDidUpdate", 50898 value: function componentDidUpdate(prevProps, prevState, snapshot) { 50899 /*if (this.props.index === 0) { 50900 this.inputRef.current.focus(); 50901 }*/ 50902 } 50903 }, { 50904 key: "render", 50905 value: function render() { 50906 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("li", { 50907 className: "results-grid__item person-card", 50908 style: { 50909 transitionDelay: this.props.index * 0.025 + 's' 50910 } 50911 }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("a", { 50912 ref: this.inputRef, 50913 href: this.props.permalink, 50914 className: "person-card__link", 50915 "aria-labelledby": this.props.ID + '_header' 50916 }), this._getProfileImage(), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", { 50917 className: "person-card__content" 50918 }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", { 50919 className: "person-card__department supercap" 50920 }, this.props.terms.department ? this.props.terms.department[0].name : 'Department'), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", { 50921 className: "person-card__name h4", 50922 id: this.props.ID + '_header' 50923 }, this.props.post_title), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", { 50924 className: "person-card__title" 50925 }, this.props.people_meta.title), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", { 50926 className: "person-card__contact" 50927 }, this._getEmail(), this._getPhone()), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", { 50928 className: "cta-link supercap" 50929 }, "See More"))); 50930 } 50931 }, { 50932 key: "_getEmail", 50933 value: function _getEmail() { 50934 if (this.props.people_meta.email) { 50935 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("p", { 50936 className: "person-card__email" 50937 }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", { 50938 className: "screen-reader-text"
50939 }, "Email: "), this.props.people_meta.email); 50940 } 50941 } 50942 }, { 50943 key: "_getPhone", 50944 value: function _getPhone() { 50945 if (this.props.people_meta.phone) { 50946 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("p", { 50947 className: "person-card__phone" 50948 }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", { 50949 className: "screen-reader-text" 50950 }, "Phone: "), this.props.people_meta.phone); 50951 } 50952 } 50953 }, { 50954 key: "_getProfileImage", 50955 value: function _getProfileImage() { 50956 if (this.props.featured_image_url) { 50957 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", { 50958 className: "person-card__image-container" 50959 }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("img", { 50960 className: "person-card__image", 50961 src: this.props.featured_image_url, 50962 alt: this.props.featured_image_alt 50963 })); 50964 } 50965 } 50966 }]); 50967 50968 return PersonCard; 50969}(react__WEBPACK_IMPORTED_MODULE_0___default.a.Component); 50970 50971/* harmony default export */ __webpack_exports__["default"] = (PersonCard); 50972 50973/***/ }), 50974
50975/***/ "./search-filter-results/formats/post-card.jsx": 50976/*!*****************************************************!*\ 50977 !*** ./search-filter-results/formats/post-card.jsx ***! 50978 \*****************************************************/ 50979/*! exports provided: default */ 50980/***/ (function(module, __webpack_exports__, __webpack_require__) { 50981 50982"use strict"; 50983__webpack_require__.r(__webpack_exports__); 50984/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "../../node_modules/react/index.js"); 50985/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 50986/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! moment */ "../../node_modules/moment/moment.js"); 50987/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_1__); 50988function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } 50989 50990function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 50991 50992function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } 50993 50994function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } 50995 50996function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } 50997 50998function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } 50999 51000function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } 51001 51002function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } 51003 51004function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } 51005 51006function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } 51007 51008function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } 51009 51010 51011 51012/** 51013 * PostCard 51014 * Handles Outputs for the programs and radio post types in search 51015 */ 51016 51017var PostCard = /*#__PURE__*/function (_React$Component) { 51018 _inherits(PostCard, _React$Component); 51019 51020 var _super = _createSuper(PostCard); 51021 51022 function PostCard(props) { 51023 var _this; 51024 51025 _classCallCheck(this, PostCard); 51026 51027 _this = _super.call(this, props); 51028 _this.inputRef = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createRef(); 51029 return _this; 51030 } 51031 51032 _createClass(PostCard, [{ 51033 key: "componentDidUpdate", 51034 value: function componentDidUpdate(prevProps, prevState, snapshot) { 51035 /*if (this.props.index === 0) { 51036 this.inputRef.current.focus(); 51037 }*/ 51038 } 51039 }, { 51040 key: "render", 51041 value: function render() { 51042 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("li", { 51043 key: this.props.key, 51044 className: "post-card results-grid__item post-card--" + this.props.post_type, 51045 style: { 51046 transitionDelay: this.props.index * 0.025 + 's' 51047 } 51048 }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("a", { 51049 ref: this.inputRef, 51050 href: this.props.permalink, 51051 "aria-labelledby": this.props.ID + '_header', 51052 className: "results-grid__item-link" 51053 }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", { 51054 className: "post-card__category supercap" 51055 }, this._getCategory()), this._getTitle(), this._getSubLabel()); 51056 } 51057 }, { 51058 key: "_getCategory", 51059 value: function _getCategory() { 51060 switch (this.props.post_type) { 51061 case 'program': 51062 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", null, this.props.terms['program-type'] ? this.props.terms['program-type'][0].name : 'Program'); 51063 51064 case 'radio': 51065 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", null, this.props.terms['radio-category'] ? this.props.terms['radio-category'][0].name : 'Show'); 51066 51067 default: 51068 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", null, "Category Label"); 51069 } 51070 } 51071 }, { 51072 key: "_getTitle", 51073 value: function _getTitle() { 51074 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", { 51075 id: this.props.ID + '_header', 51076 className: "post-card__title post-card__title--h2 post-card__title--" + this.props.post_type 51077 }, this.props.post_title); 51078 } // depends on post type what this outputs 51079 51080 }, { 51081 key: "_getSubLabel", 51082 value: function _getSubLabel() { 51083 switch (this.props.post_type) { 51084 // program shows the degree Types 51085 case 'program': 51086 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", { 51087 className: "post-card__sub-label" 51088 }, this._getDegreeTypes()); 51089 51090 case 'radio': 51091 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", { 51092 className: "post-card__sub-label supercap" 51093 }, moment__WEBPACK_IMPORTED_MODULE_1___default()(this.props.post_date).format('MMMM D, Y')); 51094 51095 default: 51096 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", { 51097 className: "post-card__sub-label" 51098 }, "Sub Label"); 51099 } 51100 } 51101 /** 51102 * Get degree types for programs 51103 */ 51104 51105 }, { 51106 key: "_getDegreeTypes", 51107 value: function _getDegreeTypes() { 51108 if (this.props.terms['degree-type']) { 51109 var degreeTypeNames = this.props.terms['degree-type'].map(function (term) { 51110 return term.name; 51111 }); 51112 return degreeTypeNames.join(', '); 51113 } 51114 } 51115 }]); 51116 51117 return PostCard; 51118}(react__WEBPACK_IMPORTED_MODULE_0___default.a.Component); 51119 51120/* harmony default export */ __webpack_exports__["default"] = (PostCard); 51121 51122/***/ }), 51123
51124/***/ "./search-filter-results/formats/post-list-card.jsx": 51125/*!**********************************************************!*\ 51126 !*** ./search-filter-results/formats/post-list-card.jsx ***! 51127 \**********************************************************/ 51128/*! exports provided: default */ 51129/***/ (function(module, __webpack_exports__, __webpack_require__) { 51130 51131"use strict"; 51132__webpack_require__.r(__webpack_exports__); 51133/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "../../node_modules/react/index.js"); 51134/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 51135/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! moment */ "../../node_modules/moment/moment.js"); 51136/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_1__); 51137function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } 51138 51139function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 51140 51141function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } 51142 51143function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } 51144 51145function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } 51146 51147function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } 51148 51149function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } 51150 51151function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } 51152 51153function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } 51154 51155function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } 51156 51157function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } 51158 51159 51160 51161/** 51162 * PostCard 51163 * Handles Outputs for the programs and radio post types in search 51164 */ 51165 51166var PostListCard = /*#__PURE__*/function (_React$Component) { 51167 _inherits(PostListCard, _React$Component); 51168 51169 var _super = _createSuper(PostListCard); 51170 51171 function PostListCard(props) { 51172 var _this; 51173 51174 _classCallCheck(this, PostListCard); 51175 51176 _this = _super.call(this, props); 51177 _this.inputRef = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createRef(); 51178 return _this; 51179 } 51180 51181 _createClass(PostListCard, [{ 51182 key: "componentDidUpdate", 51183 value: function componentDidUpdate(prevProps, prevState, snapshot) { 51184 /*if (this.props.index === 0) { 51185 this.inputRef.current.focus(); 51186 }*/ 51187 } 51188 }, { 51189 key: "render", 51190 value: function render() { 51191 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("li", { 51192 key: this.props.key, 51193 className: "post-card results-grid__item post-card--" + this.props.post_type, 51194 style: { 51195 transitionDelay: this.props.index * 0.025 + 's' 51196 } 51197 }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("a", { 51198 ref: this.inputRef, 51199 href: this.props.permalink, 51200 "aria-labelledby": this.props.ID + '_header', 51201 className: "results-grid__item-link" 51202 }), this._getTitle(), this._getSubLabel()); 51203 } 51204 }, { 51205 key: "_getCategory", 51206 value: function _getCategory() { 51207 switch (this.props.post_type) { 51208 case 'program': 51209 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", null, this.props.terms['program-type'] ? this.props.terms['program-type'][0].name : 'Program'); 51210 51211 case 'radio': 51212 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", null, this.props.terms['radio-category'] ? this.props.terms['radio-category'][0].name : 'Show'); 51213 51214 default: 51215 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", null, "Category Label"); 51216 } 51217 } 51218 }, { 51219 key: "_getTitle", 51220 value: function _getTitle() { 51221 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", { 51222 id: this.props.ID + '_header', 51223 className: "post-card__title post-card__title--h2 post-card__title--" + this.props.post_type 51224 }, this.props.post_title); 51225 } // depends on post type what this outputs 51226 51227 }, { 51228 key: "_getSubLabel", 51229 value: function _getSubLabel() { 51230 switch (this.props.post_type) { 51231 // program shows the degree Types 51232 case 'program': 51233 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", { 51234 className: "post-card__sub-label" 51235 }, this._getDegreeTypes()); 51236 51237 case 'radio': 51238 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", { 51239 className: "post-card__sub-label supercap" 51240 }, moment__WEBPACK_IMPORTED_MODULE_1___default()(this.props.post_date).format('MMMM D, Y')); 51241 51242 default: 51243 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", { 51244 className: "post-card__sub-label" 51245 }, "Sub Label"); 51246 } 51247 } 51248 /** 51249 * Get degree types for programs 51250 */ 51251 51252 }, { 51253 key: "_getDegreeTypes", 51254 value: function _getDegreeTypes() { 51255 if (this.props.terms['degree-type']) { 51256 var degreeTypeNames = this.props.terms['degree-type'].map(function (term) { 51257 return term.name; 51258 }); 51259 return degreeTypeNames.join(', '); 51260 } 51261 } 51262 }]); 51263 51264 return PostListCard; 51265}(react__WEBPACK_IMPORTED_MODULE_0___default.a.Component); 51266 51267/* harmony default export */ __webpack_exports__["default"] = (PostListCard); 51268 51269/***/ }), 51270
51271/***/ "./search-filter-results/formats/post-row.jsx": 51272/*!****************************************************!*\ 51273 !*** ./search-filter-results/formats/post-row.jsx ***! 51274 \****************************************************/ 51275/*! exports provided: default */ 51276/***/ (function(module, __webpack_exports__, __webpack_require__) { 51277 51278"use strict"; 51279__webpack_require__.r(__webpack_exports__); 51280/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "../../node_modules/react/index.js"); 51281/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 51282/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! moment */ "../../node_modules/moment/moment.js"); 51283/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_1__); 51284/* harmony import */ var _utility__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../utility */ "./utility.js"); 51285function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } 51286 51287function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 51288 51289function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } 51290 51291function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } 51292 51293function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } 51294 51295function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } 51296 51297function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; } 51298 51299function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } 51300 51301function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } 51302 51303function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } } 51304 51305function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } 51306 51307 51308 51309 51310/** 51311 * PostRow 51312 * Formatted output for search and filter experience 51313 * Used for post, news, magazine, spotlight 51314 */ 51315 51316var PostRow = /*#__PURE__*/function (_React$Component) { 51317 _inherits(PostRow, _React$Component); 51318 51319 var _super = _createSuper(PostRow); 51320 51321 function PostRow() { 51322 _classCallCheck(this, PostRow); 51323 51324 return _super.apply(this, arguments); 51325 } 51326 51327 _createClass(PostRow, [{ 51328 key: "render", 51329 value: function render() { 51330 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("li", { 51331 key: this.props.key, 51332 className: "post-row results-grid__item", 51333 style: { 51334 transitionDelay: this.props.index * 0.025 + 's' 51335 } 51336 }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("a", { 51337 "aria-labelledby": this.props.ID + '_header', 51338 href: this.props.permalink, 51339 className: "results-grid__item-link" 51340 }), this._getCategory(), this._getContent(), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", { 51341 className: "post-row__image" 51342 }, this._getImage())); 51343 } 51344 }, { 51345 key: "_getCategory", 51346 value: function _getCategory() { 51347 // news does not show a category label 51348 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", { 51349 className: "post-row__category" 51350 }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", { 51351 className: "supercap" 51352 }, this._getCategoryLabel())); 51353 } 51354 /** 51355 * Show a category label 51356 * @returns {*} 51357 * @private 51358 */ 51359 51360 }, { 51361 key: "_getCategoryLabel", 51362 value: function _getCategoryLabel() { 51363 switch (this.props.post_type) { 51364 case 'spotlight': 51365 return this.props.terms['spotlight-category'] ? this.props.terms['spotlight-category'][0].name : 'No Category'; 51366 51367 case 'magazine': 51368 return this.props.terms['magazine-category'] ? this.props.terms['magazine-category'][0].name : 'No Category'; 51369 51370 case 'club': 51371 return this.props.terms['club-category'] ? this.props.terms['club-category'][0].name : 'No Category'; 51372 51373 case 'press-release': 51374 return this.props.terms['press-release-category'] ? this.props.terms['press-release-category'][0].name : 'No Category'; 51375 51376 case 'news': 51377 return this.props.terms['news-category'] ? this.props.terms['news-category'][0].name : 'No Category'; 51378 51379 default: 51380 return this.props.terms.category ? this.props.terms.category[0].name : this.props.post_type_name; 51381 } 51382 } 51383 }, { 51384 key: "_getContent", 51385 value: function _getContent() { 51386 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("div", { 51387 className: "post-row__content" 51388 }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("h2", { 51389 id: this.props.ID + '_header', 51390 className: "post-row__title" 51391 }, this.props.post_title), this._getExcerpt(), this._getByline()); 51392 } 51393 }, { 51394 key: "_getByline", 51395 value: function _getByline() { 51396 if (this.props.post_type !== 'club') { 51397 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("span", { 51398 className: "post-row__byline supercap" 51399 }, this.props.author_name ? this.props.author_name + ' | ' : '', moment__WEBPACK_IMPORTED_MODULE_1___default()(this.props.post_date).format('MMMM D, Y')); 51400 } 51401 } 51402 }, { 51403 key: "_getImage", 51404 value: function _getImage() { 51405 if (this.props.featured_image_url) { 51406 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("img", { 51407 src: this.props.featured_image_url, 51408 alt: this.props.featured_image_alt 51409 }); 51410 } 51411 } 51412 }, { 51413 key: "_getExcerpt", 51414 value: function _getExcerpt() { 51415 if (this.props.post_excerpt) { 51416 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("p", { 51417 className: "result-card__description" 51418 }, Object(_utility__WEBPACK_IMPORTED_MODULE_2__["decodeString"])(this.props.post_excerpt)); 51419 } 51420 } 51421 }]); 51422 51423 return PostRow; 51424}(react__WEBPACK_IMPORTED_MODULE_0___default.a.Component); 51425 51426/* harmony default export */ __webpack_exports__["default"] = (PostRow); 51427 51428/***/ }), 51429
51430/***/ "./search-filter.jsx": 51431/*!***************************!*\ 51432 !*** ./search-filter.jsx ***! 51433 \***************************/ 51434/*! no exports provided */ 51435/***/ (function(module, __webpack_exports__, __webpack_require__) { 51436 51437"use strict"; 51438__webpack_require__.r(__webpack_exports__); 51439/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "../../node_modules/react/index.js"); 51440/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 51441/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-dom */ "../../node_modules/react-dom/index.js"); 51442/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_1__); 51443/* harmony import */ var smoothscroll_polyfill__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! smoothscroll-polyfill */ "../../node_modules/smoothscroll-polyfill/dist/smoothscroll.js"); 51444/* harmony import */ var smoothscroll_polyfill__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(smoothscroll_polyfill__WEBPACK_IMPORTED_MODULE_2__); 51445/* harmony import */ var _search_filter_results_formats_post_row__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./search-filter-results/formats/post-row */ "./search-filter-results/formats/post-row.jsx"); 51446/* harmony import */ var _search_filter_results_formats_post_card__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./search-filter-results/formats/post-card */ "./search-filter-results/formats/post-card.jsx"); 51447/* harmony import */ var _search_filter_results_formats_person_card__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./search-filter-results/formats/person-card */ "./search-filter-results/formats/person-card.jsx"); 51448/* harmony import */ var _search_filter_results_formats_post_list_card__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./search-filter-results/formats/post-list-card */ "./search-filter-results/formats/post-list-card.jsx"); 51449/* harmony import */ var _search_filter_results_formats_job_card__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./search-filter-results/formats/job-card */ "./search-filter-results/formats/job-card.jsx"); 51450 51451 51452 51453 51454 51455 51456 51457 51458window.registerSearchFilterFomat('post-row', /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_search_filter_results_formats_post_row__WEBPACK_IMPORTED_MODULE_3__["default"], null)); 51459window.registerSearchFilterFomat('post-card', /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_search_filter_results_formats_post_card__WEBPACK_IMPORTED_MODULE_4__["default"], null)); 51460window.registerSearchFilterFomat('person-card', /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_search_filter_results_formats_person_card__WEBPACK_IMPORTED_MODULE_5__["default"], null)); 51461window.registerSearchFilterFomat('post-list-card', /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_search_filter_results_formats_post_list_card__WEBPACK_IMPORTED_MODULE_6__["default"], null)); 51462window.registerSearchFilterFomat('job-card', /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_search_filter_results_formats_job_card__WEBPACK_IMPORTED_MODULE_7__["default"], null)); 51463 51464/***/ }), 51465
51466/***/ "./utility.js": 51467/*!********************!*\ 51468 !*** ./utility.js ***! 51469 \********************/ 51470/*! exports provided: setSearchHeaderHeight, handleAnchorHashJump, decodeString, decimalToUnicode, htmlEntityToUnicode */ 51471/***/ (function(module, __webpack_exports__, __webpack_require__) { 51472 51473"use strict"; 51474__webpack_require__.r(__webpack_exports__); 51475/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setSearchHeaderHeight", function() { return setSearchHeaderHeight; }); 51476/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "handleAnchorHashJump", function() { return handleAnchorHashJump; }); 51477/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "decodeString", function() { return decodeString; }); 51478/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "decimalToUnicode", function() { return decimalToUnicode; }); 51479/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "htmlEntityToUnicode", function() { return htmlEntityToUnicode; }); 51480/* harmony import */ var _upup_baseline_js_src_utility__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../upup-baseline/js/src/utility */ "../../../upup-baseline/js/src/utility.js"); 51481 51482function setSearchHeaderHeight() { 51483 var siteSearch = document.getElementById('site-search'), 51484 searchHeader = siteSearch.querySelector('.site-search__header'), 51485 searchHeaderHeight = searchHeader.offsetHeight; 51486 document.documentElement.style.setProperty('--searchHeaderHeight', searchHeaderHeight + 'px'); 51487} 51488/** 51489 * Handles anchor jumping behavior 51490 * This is to handle offset for the fixed header 51491 */ 51492 51493function handleAnchorHashJump(path) { 51494 // grab the hash 51495 // get the ID - look for this element on the page 51496 var link = document.createElement('a'), 51497 headerBottom = parseInt(document.documentElement.style.getPropertyValue('--headerBottom')), 51498 elem = null, 51499 offset = null; 51500 link.href = path; 51501 51502 if (link.hash) { 51503 elem = document.getElementById(link.hash.replace('#', '')); 51504 51505 if (elem) { 51506 offset = Object(_upup_baseline_js_src_utility__WEBPACK_IMPORTED_MODULE_0__["getElOffset"])(elem); // timing hiccup allows this to be applied after initial load/ behavior 51507 51508 setTimeout(function () { 51509 window.scrollTo({ 51510 top: offset.top - (headerBottom ? headerBottom : 100) - 32, 51511 // offset for the header 51512 left: offset.left 51513 }); 51514 }, 1); 51515 } 51516 } 51517} 51518function decodeString(incomingString) { 51519 return htmlEntityToUnicode(decimalToUnicode(incomingString)); 51520} 51521/** 51522 * Map decimal values to char codes and output string using the char code 51523 * Since decimal format uses char code natively, this will catch/ convert all decimal codes 51524 * React will escape this output before render 51525 * @param incomingString 51526 * @returns {*} 51527 */ 51528 51529function decimalToUnicode(incomingString) { 51530 return incomingString.replace(/&#(\w+);/gi, function (a, b) { 51531 var charCode = parseInt(b); 51532 return String.fromCharCode(charCode); 51533 }); 51534} 51535/** 51536 * Convert select html entities in strings to corresponding unicode characters. 51537 * The contained map can be expanded as additional characters are identified. 51538 * React will escape this output before render 51539 * @param incomingString 51540 * @returns {*} 51541 */ 51542 51543function htmlEntityToUnicode(incomingString) { 51544 var map = { 51545 'amp': 38, 51546 'nbsp': 160, 51547 'rsquo': 8217, 51548 'lsquo': 8216 51549 }; 51550 return incomingString.replace(/&(\w+);/gi, function (a, b) { 51551 if (map[b]) { 51552 return String.fromCharCode(map[b]); 51553 } // no mapped value, return the original 51554 51555 51556 return a; 51557 }); 51558} 51559 51560/***/ })
51560, 51561 51562/***/ 1: 51563/*!*****************************!*\ 51564 !*** multi ./search-filter ***! 51565 \*****************************/ 51566/*! no static exports found */ 51567/***/ (function(module, exports, __webpack_require__) { 51568 51569module.exports = __webpack_require__(/*! ./search-filter */"./search-filter.jsx"); 51570 51571 51572/***/ }) 51573 51574/******/ });
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.