vendor: 3,609 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 = "./src/index.js"); 85/******/ }) 86/************************************************************************/ 87/******/ ({ 88
89/***/ "./assets/GitHub_Action_Results.png": 90/*!******************************************!*\ 91 !*** ./assets/GitHub_Action_Results.png ***! 92 \******************************************/ 93/*! exports provided: default */ 94/***/ (function(module, __webpack_exports__, __webpack_require__) { 95 96"use strict"; 97__webpack_require__.r(__webpack_exports__); 98/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "304c9d3583ef209df42e2461c696d88e.png"); 99 100/***/ }), 101
102/***/ "./assets/GitHub_Action_Results_lint.png": 103/*!***********************************************!*\ 104 !*** ./assets/GitHub_Action_Results_lint.png ***! 105 \***********************************************/ 106/*! exports provided: default */ 107/***/ (function(module, __webpack_exports__, __webpack_require__) { 108 109"use strict"; 110__webpack_require__.r(__webpack_exports__); 111/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "350109e0f7b93c218679bf1e0c0ee9aa.png"); 112 113/***/ }), 114
115/***/ "./assets/IDE_screenshot.png": 116/*!***********************************!*\ 117 !*** ./assets/IDE_screenshot.png ***! 118 \***********************************/ 119/*! exports provided: default */ 120/***/ (function(module, __webpack_exports__, __webpack_require__) { 121 122"use strict"; 123__webpack_require__.r(__webpack_exports__); 124/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "5914f288720d7122e4eb70076cda31bb.png"); 125 126/***/ }), 127
128/***/ "./assets/Jenkins-logo.png": 129/*!*********************************!*\ 130 !*** ./assets/Jenkins-logo.png ***! 131 \*********************************/ 132/*! exports provided: default */ 133/***/ (function(module, __webpack_exports__, __webpack_require__) { 134 135"use strict"; 136__webpack_require__.r(__webpack_exports__); 137/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "b54e1fc08496ee4414616e5da116ccdd.png"); 138 139/***/ }), 140
141/***/ "./assets/Jenkins_Lighthouse_Plugin.png": 142/*!**********************************************!*\ 143 !*** ./assets/Jenkins_Lighthouse_Plugin.png ***! 144 \**********************************************/ 145/*! exports provided: default */ 146/***/ (function(module, __webpack_exports__, __webpack_require__) { 147 148"use strict"; 149__webpack_require__.r(__webpack_exports__); 150/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "8d87276400e2dacbe0bdfeefc12d86fc.png"); 151 152/***/ }), 153
154/***/ "./assets/Lighthouse_GitHub_App_Install.png": 155/*!**************************************************!*\ 156 !*** ./assets/Lighthouse_GitHub_App_Install.png ***! 157 \**************************************************/ 158/*! exports provided: default */ 159/***/ (function(module, __webpack_exports__, __webpack_require__) { 160 161"use strict"; 162__webpack_require__.r(__webpack_exports__); 163/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "112cf4f9c5ded43dc30cda62ae1c72c3.png"); 164 165/***/ }), 166
167/***/ "./assets/Lighthouse_Report.png": 168/*!**************************************!*\ 169 !*** ./assets/Lighthouse_Report.png ***! 170 \**************************************/ 171/*! exports provided: default */ 172/***/ (function(module, __webpack_exports__, __webpack_require__) { 173 174"use strict"; 175__webpack_require__.r(__webpack_exports__); 176/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "098302ea49d5761544dc788143e70811.png"); 177 178/***/ }), 179
180/***/ "./assets/Lighthouse_Status_Check.png": 181/*!********************************************!*\ 182 !*** ./assets/Lighthouse_Status_Check.png ***! 183 \********************************************/ 184/*! exports provided: default */ 185/***/ (function(module, __webpack_exports__, __webpack_require__) { 186 187"use strict"; 188__webpack_require__.r(__webpack_exports__); 189/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "0914ac39aab55858c22caab69213b1fa.png"); 190 191/***/ }), 192
193/***/ "./assets/Twitter_Logo_Blue.svg": 194/*!**************************************!*\ 195 !*** ./assets/Twitter_Logo_Blue.svg ***! 196 \**************************************/ 197/*! exports provided: default */ 198/***/ (function(module, __webpack_exports__, __webpack_require__) { 199 200"use strict"; 201__webpack_require__.r(__webpack_exports__); 202/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "a7a925c7c07f163f3274df0c1ab2c321.svg"); 203 204/***/ }), 205
206/***/ "./assets/aXe_documentation_1.png": 207/*!****************************************!*\ 208 !*** ./assets/aXe_documentation_1.png ***! 209 \****************************************/ 210/*! exports provided: default */ 211/***/ (function(module, __webpack_exports__, __webpack_require__) { 212 213"use strict"; 214__webpack_require__.r(__webpack_exports__); 215/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "029d3521be5b156046c7a7a4df54d4bf.png"); 216 217/***/ }), 218
219/***/ "./assets/aXe_documentation_2.png": 220/*!****************************************!*\ 221 !*** ./assets/aXe_documentation_2.png ***! 222 \****************************************/ 223/*! exports provided: default */ 224/***/ (function(module, __webpack_exports__, __webpack_require__) { 225 226"use strict"; 227__webpack_require__.r(__webpack_exports__); 228/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "4909de9edb855dea90057b635e332c46.png"); 229 230/***/ }), 231
232/***/ "./assets/aXe_documentation_3.png": 233/*!****************************************!*\ 234 !*** ./assets/aXe_documentation_3.png ***! 235 \****************************************/ 236/*! exports provided: default */ 237/***/ (function(module, __webpack_exports__, __webpack_require__) { 238 239"use strict"; 240__webpack_require__.r(__webpack_exports__); 241/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "72ccfccf1733890f6a3e7a9dcaf77164.png"); 242 243/***/ }), 244
245/***/ "./assets/blue_hair_headshot.jpg": 246/*!***************************************!*\ 247 !*** ./assets/blue_hair_headshot.jpg ***! 248 \***************************************/ 249/*! exports provided: default */ 250/***/ (function(module, __webpack_exports__, __webpack_require__) { 251 252"use strict"; 253__webpack_require__.r(__webpack_exports__); 254/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "74acc99dcb784e85f28e63247f0ca426.jpg"); 255 256/***/ }), 257
258/***/ "./assets/broken_arm.jpg": 259/*!*******************************!*\ 260 !*** ./assets/broken_arm.jpg ***! 261 \*******************************/ 262/*! exports provided: default */ 263/***/ (function(module, __webpack_exports__, __webpack_require__) { 264 265"use strict"; 266__webpack_require__.r(__webpack_exports__); 267/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "a8161c62bb573f1a2ecd3c34ad1c190a.jpg"); 268 269/***/ }), 270
271/***/ "./assets/can_telephone.jpg": 272/*!**********************************!*\ 273 !*** ./assets/can_telephone.jpg ***! 274 \**********************************/ 275/*! exports provided: default */ 276/***/ (function(module, __webpack_exports__, __webpack_require__) { 277 278"use strict"; 279__webpack_require__.r(__webpack_exports__); 280/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "63fe3032ef52ae4a9ff5b51503e3f550.jpg"); 281 282/***/ }), 283
284/***/ "./assets/circle-logo-horizontal-white.png": 285/*!*************************************************!*\ 286 !*** ./assets/circle-logo-horizontal-white.png ***! 287 \*************************************************/ 288/*! exports provided: default */ 289/***/ (function(module, __webpack_exports__, __webpack_require__) { 290 291"use strict"; 292__webpack_require__.r(__webpack_exports__); 293/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "fd48c4065198e6c99542ae6918352843.png"); 294 295/***/ }), 296
297/***/ "./assets/computer_vision.jpg": 298/*!************************************!*\ 299 !*** ./assets/computer_vision.jpg ***! 300 \************************************/ 301/*! exports provided: default */ 302/***/ (function(module, __webpack_exports__, __webpack_require__) { 303 304"use strict"; 305__webpack_require__.r(__webpack_exports__); 306/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "8d4a6ae0e9edae9afc7b714ca093d571.jpg"); 307 308/***/ }), 309
310/***/ "./assets/cypress-logo.png": 311/*!*********************************!*\ 312 !*** ./assets/cypress-logo.png ***! 313 \*********************************/ 314/*! exports provided: default */ 315/***/ (function(module, __webpack_exports__, __webpack_require__) { 316 317"use strict"; 318__webpack_require__.r(__webpack_exports__); 319/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "ab790903dfa344b56e4f5a03b25519a0.png"); 320 321/***/ }), 322
323/***/ "./assets/cypress_app.png": 324/*!********************************!*\ 325 !*** ./assets/cypress_app.png ***! 326 \********************************/ 327/*! exports provided: default */ 328/***/ (function(module, __webpack_exports__, __webpack_require__) { 329 330"use strict"; 331__webpack_require__.r(__webpack_exports__); 332/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "6381e0775f49919f628edc9e8f3aeb7a.png"); 333 334/***/ }), 335
336/***/ "./assets/cypress_app_run_test.png": 337/*!*****************************************!*\ 338 !*** ./assets/cypress_app_run_test.png ***! 339 \*****************************************/ 340/*! exports provided: default */ 341/***/ (function(module, __webpack_exports__, __webpack_require__) { 342 343"use strict"; 344__webpack_require__.r(__webpack_exports__); 345/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "ad808646ada78942cb82caa05ea28bc4.png"); 346 347/***/ }), 348
349/***/ "./assets/cypress_results_in_console.png": 350/*!***********************************************!*\ 351 !*** ./assets/cypress_results_in_console.png ***! 352 \***********************************************/ 353/*! exports provided: default */ 354/***/ (function(module, __webpack_exports__, __webpack_require__) { 355 356"use strict"; 357__webpack_require__.r(__webpack_exports__); 358/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "edb06969089e2d3f436922a0530355bf.png"); 359 360/***/ }), 361
362/***/ "./assets/cypress_run_results.png": 363/*!****************************************!*\ 364 !*** ./assets/cypress_run_results.png ***! 365 \****************************************/ 366/*! exports provided: default */ 367/***/ (function(module, __webpack_exports__, __webpack_require__) { 368 369"use strict"; 370__webpack_require__.r(__webpack_exports__); 371/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "b05e2b51e1fde29b570be7c6db0cce7a.png"); 372 373/***/ }), 374
375/***/ "./assets/cypress_run_results_error.png": 376/*!**********************************************!*\ 377 !*** ./assets/cypress_run_results_error.png ***! 378 \**********************************************/ 379/*! exports provided: default */ 380/***/ (function(module, __webpack_exports__, __webpack_require__) { 381 382"use strict"; 383__webpack_require__.r(__webpack_exports__); 384/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "1be5a67d9b736f27ff0f524930c6d1e9.png"); 385 386/***/ }), 387
388/***/ "./assets/deque_logo.png": 389/*!*******************************!*\ 390 !*** ./assets/deque_logo.png ***! 391 \*******************************/ 392/*! exports provided: default */ 393/***/ (function(module, __webpack_exports__, __webpack_require__) { 394 395"use strict"; 396__webpack_require__.r(__webpack_exports__); 397/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "c2c57418d059d192a459c481f94478e0.png"); 398 399/***/ }), 400
401/***/ "./assets/eslint_logo.png": 402/*!********************************!*\ 403 !*** ./assets/eslint_logo.png ***! 404 \********************************/ 405/*! exports provided: default */ 406/***/ (function(module, __webpack_exports__, __webpack_require__) { 407 408"use strict"; 409__webpack_require__.r(__webpack_exports__); 410/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "fde298bbc01e44d034e6eac70c59729f.png"); 411 412/***/ }), 413
414/***/ "./assets/eslint_terminal.png": 415/*!************************************!*\ 416 !*** ./assets/eslint_terminal.png ***! 417 \************************************/ 418/*! exports provided: default */ 419/***/ (function(module, __webpack_exports__, __webpack_require__) { 420 421"use strict"; 422__webpack_require__.r(__webpack_exports__); 423/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "71ab606914e3d690983bffde55d4ae7c.png"); 424 425/***/ }), 426
427/***/ "./assets/example-button-args.png": 428/*!****************************************!*\ 429 !*** ./assets/example-button-args.png ***! 430 \****************************************/ 431/*! exports provided: default */ 432/***/ (function(module, __webpack_exports__, __webpack_require__) { 433 434"use strict"; 435__webpack_require__.r(__webpack_exports__); 436/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "707b96e9d0a243e4d232005b7a27c379.png"); 437 438/***/ }), 439
440/***/ "./assets/ghost_busters_book_stack.jpg": 441/*!*********************************************!*\ 442 !*** ./assets/ghost_busters_book_stack.jpg ***! 443 \*********************************************/ 444/*! exports provided: default */ 445/***/ (function(module, __webpack_exports__, __webpack_require__) { 446 447"use strict"; 448__webpack_require__.r(__webpack_exports__); 449/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "3f1e21dca6e31456c5c15909ad734ece.jpg"); 450 451/***/ }), 452
453/***/ "./assets/gitHub_Action_Results_unittest.png": 454/*!***************************************************!*\ 455 !*** ./assets/gitHub_Action_Results_unittest.png ***! 456 \***************************************************/ 457/*! exports provided: default */ 458/***/ (function(module, __webpack_exports__, __webpack_require__) { 459 460"use strict"; 461__webpack_require__.r(__webpack_exports__); 462/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "e733589ba9cfdc80e81f92e1067aa75f.png"); 463 464/***/ }), 465
466/***/ "./assets/github_logo.png": 467/*!********************************!*\ 468 !*** ./assets/github_logo.png ***! 469 \********************************/ 470/*! exports provided: default */ 471/***/ (function(module, __webpack_exports__, __webpack_require__) { 472 473"use strict"; 474__webpack_require__.r(__webpack_exports__); 475/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "c92b2e8ccb2aaf52dd3ace0f8fc9e83d.png"); 476 477/***/ }), 478
479/***/ "./assets/jest-axe_output.png": 480/*!************************************!*\ 481 !*** ./assets/jest-axe_output.png ***! 482 \************************************/ 483/*! exports provided: default */ 484/***/ (function(module, __webpack_exports__, __webpack_require__) { 485 486"use strict"; 487__webpack_require__.r(__webpack_exports__); 488/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "3c0f1f9f134b9b6f17de6b56c832ba4b.png"); 489 490/***/ }), 491
492/***/ "./assets/jest_logo.png": 493/*!******************************!*\ 494 !*** ./assets/jest_logo.png ***! 495 \******************************/ 496/*! exports provided: default */ 497/***/ (function(module, __webpack_exports__, __webpack_require__) { 498 499"use strict"; 500__webpack_require__.r(__webpack_exports__); 501/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "08b7e749efb6f9fee1ee08cc0dc4aeba.png"); 502 503/***/ }), 504
505/***/ "./assets/jsx-a11y_rule_detail.png": 506/*!*****************************************!*\ 507 !*** ./assets/jsx-a11y_rule_detail.png ***! 508 \*****************************************/ 509/*! exports provided: default */ 510/***/ (function(module, __webpack_exports__, __webpack_require__) { 511 512"use strict"; 513__webpack_require__.r(__webpack_exports__); 514/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "6a316bcb4ad9eb0921aa8afa86042d84.png"); 515 516/***/ }), 517
518/***/ "./assets/jsx-a11y_rules_documentation.png": 519/*!*************************************************!*\ 520 !*** ./assets/jsx-a11y_rules_documentation.png ***! 521 \*************************************************/ 522/*! exports provided: default */ 523/***/ (function(module, __webpack_exports__, __webpack_require__) { 524 525"use strict"; 526__webpack_require__.r(__webpack_exports__); 527/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "fce9d335c5260be86ead2c164e374275.png"); 528 529/***/ }), 530
531/***/ "./assets/lighthouse-logo.png": 532/*!************************************!*\ 533 !*** ./assets/lighthouse-logo.png ***! 534 \************************************/ 535/*! exports provided: default */ 536/***/ (function(module, __webpack_exports__, __webpack_require__) { 537 538"use strict"; 539__webpack_require__.r(__webpack_exports__); 540/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "1eab774a411f398a97de4904743622a5.png"); 541 542/***/ }), 543
544/***/ "./assets/living-with-disabilities_ambulatory.jpg": 545/*!********************************************************!*\ 546 !*** ./assets/living-with-disabilities_ambulatory.jpg ***! 547 \********************************************************/ 548/*! exports provided: default */ 549/***/ (function(module, __webpack_exports__, __webpack_require__) { 550 551"use strict"; 552__webpack_require__.r(__webpack_exports__); 553/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "d407989f434a3f3ec9b53b23b09faf76.jpg"); 554 555/***/ }), 556
557/***/ "./assets/living-with-disabilities_cognitive.jpg": 558/*!*******************************************************!*\ 559 !*** ./assets/living-with-disabilities_cognitive.jpg ***! 560 \*******************************************************/ 561/*! exports provided: default */ 562/***/ (function(module, __webpack_exports__, __webpack_require__) { 563 564"use strict"; 565__webpack_require__.r(__webpack_exports__); 566/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "4a6099541af2a864b0d81213e053eed4.jpg"); 567 568/***/ }), 569
570/***/ "./assets/living-with-disabilities_hearing.jpg": 571/*!*****************************************************!*\ 572 !*** ./assets/living-with-disabilities_hearing.jpg ***! 573 \*****************************************************/ 574/*! exports provided: default */ 575/***/ (function(module, __webpack_exports__, __webpack_require__) { 576 577"use strict"; 578__webpack_require__.r(__webpack_exports__); 579/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "e3246ec9a1b691841bc4f2dd77841b4d.jpg"); 580 581/***/ }), 582
583/***/ "./assets/living-with-disabilities_independent.jpg": 584/*!*********************************************************!*\ 585 !*** ./assets/living-with-disabilities_independent.jpg ***! 586 \*********************************************************/ 587/*! exports provided: default */ 588/***/ (function(module, __webpack_exports__, __webpack_require__) { 589 590"use strict"; 591__webpack_require__.r(__webpack_exports__); 592/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "cb77baa6d25ee9317fc6394b526da4f5.jpg"); 593 594/***/ }), 595
596/***/ "./assets/living-with-disabilities_legend.jpg": 597/*!****************************************************!*\ 598 !*** ./assets/living-with-disabilities_legend.jpg ***! 599 \****************************************************/ 600/*! exports provided: default */ 601/***/ (function(module, __webpack_exports__, __webpack_require__) { 602 603"use strict"; 604__webpack_require__.r(__webpack_exports__); 605/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "3041c4bf078d1e43cad19770803c4b8c.jpg"); 606 607/***/ }), 608
609/***/ "./assets/living-with-disabilities_selfcare.jpg": 610/*!******************************************************!*\ 611 !*** ./assets/living-with-disabilities_selfcare.jpg ***! 612 \******************************************************/ 613/*! exports provided: default */ 614/***/ (function(module, __webpack_exports__, __webpack_require__) { 615 616"use strict"; 617__webpack_require__.r(__webpack_exports__); 618/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "9785681a1e6ec9981a673add549d1cc0.jpg"); 619 620/***/ }), 621
622/***/ "./assets/living-with-disabilities_vision.jpg": 623/*!****************************************************!*\ 624 !*** ./assets/living-with-disabilities_vision.jpg ***! 625 \****************************************************/ 626/*! exports provided: default */ 627/***/ (function(module, __webpack_exports__, __webpack_require__) { 628 629"use strict"; 630__webpack_require__.r(__webpack_exports__); 631/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "be28cf9b9c882efad4df5e6e87297c81.jpg"); 632 633/***/ }), 634
635/***/ "./assets/mobile_screen_glare.jpg": 636/*!****************************************!*\ 637 !*** ./assets/mobile_screen_glare.jpg ***! 638 \****************************************/ 639/*! exports provided: default */ 640/***/ (function(module, __webpack_exports__, __webpack_require__) { 641 642"use strict"; 643__webpack_require__.r(__webpack_exports__); 644/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "6cd35235b10b8bb003a432941387ab2a.jpg"); 645 646/***/ }), 647
648/***/ "./assets/mouse_cat.jpg": 649/*!******************************!*\ 650 !*** ./assets/mouse_cat.jpg ***! 651 \******************************/ 652/*! exports provided: default */ 653/***/ (function(module, __webpack_exports__, __webpack_require__) { 654 655"use strict"; 656__webpack_require__.r(__webpack_exports__); 657/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "1715e2b5f1b0ffd8e6722c78bdb59d83.jpg"); 658 659/***/ }), 660
661/***/ "./assets/netlify_logo.png": 662/*!*********************************!*\ 663 !*** ./assets/netlify_logo.png ***! 664 \*********************************/ 665/*! exports provided: default */ 666/***/ (function(module, __webpack_exports__, __webpack_require__) { 667 668"use strict"; 669__webpack_require__.r(__webpack_exports__); 670/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "27945efc06def8bb176c19087a32e7b7.png"); 671 672/***/ }), 673
674/***/ "./assets/out_of_the_box.jpg": 675/*!***********************************!*\ 676 !*** ./assets/out_of_the_box.jpg ***! 677 \***********************************/ 678/*! exports provided: default */ 679/***/ (function(module, __webpack_exports__, __webpack_require__) { 680 681"use strict"; 682__webpack_require__.r(__webpack_exports__); 683/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "66850652d70f3850b15940eed3c24f4d.jpg"); 684 685/***/ }), 686
687/***/ "./assets/pa11y_logo.png": 688/*!*******************************!*\ 689 !*** ./assets/pa11y_logo.png ***! 690 \*******************************/ 691/*! exports provided: default */ 692/***/ (function(module, __webpack_exports__, __webpack_require__) { 693 694"use strict"; 695__webpack_require__.r(__webpack_exports__); 696/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "c7a21793ac6daada9ce78316e4e7e5ef.png"); 697 698/***/ }), 699
700/***/ "./assets/pa11y_travis_results.png": 701/*!*****************************************!*\ 702 !*** ./assets/pa11y_travis_results.png ***! 703 \*****************************************/ 704/*! exports provided: default */ 705/***/ (function(module, __webpack_exports__, __webpack_require__) { 706 707"use strict"; 708__webpack_require__.r(__webpack_exports__); 709/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "04cd6584ff112ff95b5d674077dc651a.png"); 710 711/***/ }), 712
713/***/ "./assets/react-axe_screenshot.png": 714/*!*****************************************!*\ 715 !*** ./assets/react-axe_screenshot.png ***! 716 \*****************************************/ 717/*! exports provided: default */ 718/***/ (function(module, __webpack_exports__, __webpack_require__) { 719 720"use strict"; 721__webpack_require__.r(__webpack_exports__); 722/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "9b5913823d3857a05668ebdcfa3ea060.png"); 723 724/***/ }), 725
726/***/ "./assets/react-axe_screenshot_expanded.png": 727/*!**************************************************!*\ 728 !*** ./assets/react-axe_screenshot_expanded.png ***! 729 \**************************************************/ 730/*! exports provided: default */ 731/***/ (function(module, __webpack_exports__, __webpack_require__) { 732 733"use strict"; 734__webpack_require__.r(__webpack_exports__); 735/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "1664d20cdaaa6e9a255c691cbd9bab19.png"); 736 737/***/ }), 738
739/***/ "./assets/selenium_logo_large.png": 740/*!****************************************!*\ 741 !*** ./assets/selenium_logo_large.png ***! 742 \****************************************/ 743/*! exports provided: default */ 744/***/ (function(module, __webpack_exports__, __webpack_require__) { 745 746"use strict"; 747__webpack_require__.r(__webpack_exports__); 748/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "f7726897c5c65a62320d588d38c107f8.png"); 749 750/***/ }), 751
752/***/ "./assets/sick_at_computer.jpg": 753/*!*************************************!*\ 754 !*** ./assets/sick_at_computer.jpg ***! 755 \*************************************/ 756/*! exports provided: default */ 757/***/ (function(module, __webpack_exports__, __webpack_require__) { 758 759"use strict"; 760__webpack_require__.r(__webpack_exports__); 761/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "8fc4e7082411975c26157f1832d39301.jpg"); 762 763/***/ }), 764
765/***/ "./assets/storybook_a11y_addon.png": 766/*!*****************************************!*\ 767 !*** ./assets/storybook_a11y_addon.png ***! 768 \*****************************************/ 769/*! exports provided: default */ 770/***/ (function(module, __webpack_exports__, __webpack_require__) { 771 772"use strict"; 773__webpack_require__.r(__webpack_exports__); 774/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "c888b27a3b59f0d75dfe922ebee3d8ff.png"); 775 776/***/ }), 777
778/***/ "./assets/storybook_logo.png": 779/*!***********************************!*\ 780 !*** ./assets/storybook_logo.png ***! 781 \***********************************/ 782/*! exports provided: default */ 783/***/ (function(module, __webpack_exports__, __webpack_require__) { 784 785"use strict"; 786__webpack_require__.r(__webpack_exports__); 787/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "4497eedaf0c8cde8fa881f47a8ba196b.png"); 788 789/***/ }), 790 791/***/ "./assets/t&p-favicon.png": 792/*!********************************!*\ 793 !*** ./assets/t&p-favicon.png ***! 794 \********************************/ 795/*! exports provided: default */ 796/***/ (function(module, __webpack_exports__, __webpack_require__) { 797 798"use strict"; 799__webpack_require__.r(__webpack_exports__); 800/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "3c4e083b77e7ce8f7e4e03cedaee57da.png"); 801 802/***/ }), 803 804/***/ "./assets/toolbar-walkthrough-optimized.mp4": 805/*!**************************************************!*\ 806 !*** ./assets/toolbar-walkthrough-optimized.mp4 ***! 807 \**************************************************/ 808/*! exports provided: default */ 809/***/ (function(module, __webpack_exports__, __webpack_require__) { 810 811"use strict"; 812__webpack_require__.r(__webpack_exports__); 813/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "8b083907d74e7f2b9a298e5f324cc751.mp4"); 814 815/***/ }), 816
817/***/ "./assets/travisci_logo.png": 818/*!**********************************!*\ 819 !*** ./assets/travisci_logo.png ***! 820 \**********************************/ 821/*! exports provided: default */ 822/***/ (function(module, __webpack_exports__, __webpack_require__) { 823 824"use strict"; 825__webpack_require__.r(__webpack_exports__); 826/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "cbdc7e9f241e185945fa7a6d6bf4ca59.png"); 827 828/***/ }), 829
830/***/ "./assets/video_in_loud_room.png": 831/*!***************************************!*\ 832 !*** ./assets/video_in_loud_room.png ***! 833 \***************************************/ 834/*! exports provided: default */ 835/***/ (function(module, __webpack_exports__, __webpack_require__) { 836 837"use strict"; 838__webpack_require__.r(__webpack_exports__); 839/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "a8ccf1413354931d57b04e84d1d0f2ab.png"); 840 841/***/ }), 842
843/***/ "./assets/webdriver_chrome_window.png": 844/*!********************************************!*\ 845 !*** ./assets/webdriver_chrome_window.png ***! 846 \********************************************/ 847/*! exports provided: default */ 848/***/ (function(module, __webpack_exports__, __webpack_require__) { 849 850"use strict"; 851__webpack_require__.r(__webpack_exports__); 852/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "4386fa9c7f4584d51881ec4c4ed4e101.png"); 853 854/***/ }), 855
856/***/ "./assets/webdriver_results_page1.png": 857/*!********************************************!*\ 858 !*** ./assets/webdriver_results_page1.png ***! 859 \********************************************/ 860/*! exports provided: default */ 861/***/ (function(module, __webpack_exports__, __webpack_require__) { 862 863"use strict"; 864__webpack_require__.r(__webpack_exports__); 865/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "75699ca351ab68e66a8578e37792faf0.png"); 866 867/***/ }), 868
869/***/ "./assets/webdriver_results_page2.png": 870/*!********************************************!*\ 871 !*** ./assets/webdriver_results_page2.png ***! 872 \********************************************/ 873/*! exports provided: default */ 874/***/ (function(module, __webpack_exports__, __webpack_require__) { 875 876"use strict"; 877__webpack_require__.r(__webpack_exports__); 878/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "f842127f1bff19fee896a26aba3b5c1d.png"); 879 880/***/ }), 881
882/***/ "./assets/webdriver_results_page3.png": 883/*!********************************************!*\ 884 !*** ./assets/webdriver_results_page3.png ***! 885 \********************************************/ 886/*! exports provided: default */ 887/***/ (function(module, __webpack_exports__, __webpack_require__) { 888 889"use strict"; 890__webpack_require__.r(__webpack_exports__); 891/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "4d7567947229c339b8d00b01e02d24e6.png"); 892 893/***/ }), 894
895/***/ "./assets/webdriver_results_page4.png": 896/*!********************************************!*\ 897 !*** ./assets/webdriver_results_page4.png ***! 898 \********************************************/ 899/*! exports provided: default */ 900/***/ (function(module, __webpack_exports__, __webpack_require__) { 901 902"use strict"; 903__webpack_require__.r(__webpack_exports__); 904/* harmony default export */ __webpack_exports__["default"] = (__webpack_require__.p + "8a1b01b68572b714cb7f365bbb429991.png"); 905 906/***/ }), 907
vendor: 933 bytes, lines 908-937
908/***/ "./node_modules/@babel/runtime/helpers/esm/extends.js": 909/*!************************************************************!*\ 910 !*** ./node_modules/@babel/runtime/helpers/esm/extends.js ***! 911 \************************************************************/ 912/*! exports provided: default */ 913/***/ (function(module, __webpack_exports__, __webpack_require__) { 914 915"use strict"; 916__webpack_require__.r(__webpack_exports__); 917/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _extends; }); 918function _extends() { 919 _extends = Object.assign || function (target) { 920 for (var i = 1; i < arguments.length; i++) { 921 var source = arguments[i]; 922 923 for (var key in source) { 924 if (Object.prototype.hasOwnProperty.call(source, key)) { 925 target[key] = source[key]; 926 } 927 } 928 } 929 930 return target; 931 }; 932 933 return _extends.apply(this, arguments); 934} 935 936/***/ }), 937
vendor: 991 bytes, lines 938-964
938/***/ "./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js": 939/*!*********************************************************************************!*\ 940 !*** ./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js ***! 941 \*********************************************************************************/ 942/*! exports provided: default */ 943/***/ (function(module, __webpack_exports__, __webpack_require__) { 944 945"use strict"; 946__webpack_require__.r(__webpack_exports__); 947/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _objectWithoutPropertiesLoose; }); 948function _objectWithoutPropertiesLoose(source, excluded) { 949 if (source == null) return {}; 950 var target = {}; 951 var sourceKeys = Object.keys(source); 952 var key, i; 953 954 for (i = 0; i < sourceKeys.length; i++) { 955 key = sourceKeys[i]; 956 if (excluded.indexOf(key) >= 0) continue; 957 target[key] = source[key]; 958 } 959 960 return target; 961} 962 963/***/ }), 964
vendor: 5,092 bytes, lines 965-990
965/***/ "./node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.esm.js": 966/*!*******************************************************************************!*\ 967 !*** ./node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.esm.js ***! 968 \*******************************************************************************/ 969/*! exports provided: default */ 970/***/ (function(module, __webpack_exports__, __webpack_require__) { 971 972"use strict"; 973__webpack_require__.r(__webpack_exports__); 974/* harmony import */ var _emotion_memoize__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @emotion/memoize */ "./node_modules/@emotion/memoize/dist/memoize.browser.esm.js"); 975 976var reactPropsRegex = /^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|inert|itemProp|itemScope|itemType|itemID|itemRef|on|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/; // https://esbench.com/bench/5bfee68a4cd7e6009ef61d23 977 978var index = Object(_emotion_memoize__WEBPACK_IMPORTED_MODULE_0__["default"])(function (prop) { 979 return reactPropsRegex.test(prop) || prop.charCodeAt(0) === 111 980 /* o */ 981 && prop.charCodeAt(1) === 110 982 /* n */ 983 && prop.charCodeAt(2) < 91; 984} 985/* Z+1 */ 986); 987/* harmony default export */ __webpack_exports__["default"] = (index); 988 989/***/ }), 990
vendor: 686 bytes, lines 991-1011
991/***/ "./node_modules/@emotion/memoize/dist/memoize.browser.esm.js": 992/*!*******************************************************************!*\ 993 !*** ./node_modules/@emotion/memoize/dist/memoize.browser.esm.js ***! 994 \*******************************************************************/ 995/*! exports provided: default */ 996/***/ (function(module, __webpack_exports__, __webpack_require__) { 997 998"use strict"; 999__webpack_require__.r(__webpack_exports__); 1000function memoize(fn) { 1001 var cache = {}; 1002 return function (arg) { 1003 if (cache[arg] === undefined) cache[arg] = fn(arg); 1004 return cache[arg]; 1005 }; 1006} 1007 1008/* harmony default export */ __webpack_exports__["default"] = (memoize); 1009 1010/***/ }), 1011
vendor: 1,414 bytes, lines 1012-1072
1012/***/ "./node_modules/@emotion/unitless/dist/unitless.browser.esm.js": 1013/*!*********************************************************************!*\ 1014 !*** ./node_modules/@emotion/unitless/dist/unitless.browser.esm.js ***! 1015 \*********************************************************************/ 1016/*! exports provided: default */ 1017/***/ (function(module, __webpack_exports__, __webpack_require__) { 1018 1019"use strict"; 1020__webpack_require__.r(__webpack_exports__); 1021var unitlessKeys = { 1022 animationIterationCount: 1, 1023 borderImageOutset: 1, 1024 borderImageSlice: 1, 1025 borderImageWidth: 1, 1026 boxFlex: 1, 1027 boxFlexGroup: 1, 1028 boxOrdinalGroup: 1, 1029 columnCount: 1, 1030 columns: 1, 1031 flex: 1, 1032 flexGrow: 1, 1033 flexPositive: 1, 1034 flexShrink: 1, 1035 flexNegative: 1, 1036 flexOrder: 1, 1037 gridRow: 1, 1038 gridRowEnd: 1, 1039 gridRowSpan: 1, 1040 gridRowStart: 1, 1041 gridColumn: 1, 1042 gridColumnEnd: 1, 1043 gridColumnSpan: 1, 1044 gridColumnStart: 1, 1045 msGridRow: 1, 1046 msGridRowSpan: 1, 1047 msGridColumn: 1, 1048 msGridColumnSpan: 1, 1049 fontWeight: 1, 1050 lineHeight: 1, 1051 opacity: 1, 1052 order: 1, 1053 orphans: 1, 1054 tabSize: 1, 1055 widows: 1, 1056 zIndex: 1, 1057 zoom: 1, 1058 WebkitLineClamp: 1, 1059 // SVG-related properties 1060 fillOpacity: 1, 1061 floodOpacity: 1, 1062 stopOpacity: 1, 1063 strokeDasharray: 1, 1064 strokeDashoffset: 1, 1065 strokeMiterlimit: 1, 1066 strokeOpacity: 1, 1067 strokeWidth: 1 1068}; 1069/* harmony default export */ __webpack_exports__["default"] = (unitlessKeys); 1070 1071/***/ }), 1072
vendor: 1,251 bytes, lines 1073-1100
1073/***/ "./node_modules/@styled-system/background/dist/index.esm.js": 1074/*!******************************************************************!*\ 1075 !*** ./node_modules/@styled-system/background/dist/index.esm.js ***! 1076 \******************************************************************/ 1077/*! exports provided: background, default */ 1078/***/ (function(module, __webpack_exports__, __webpack_require__) { 1079 1080"use strict"; 1081__webpack_require__.r(__webpack_exports__); 1082/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "background", function() { return background; }); 1083/* harmony import */ var _styled_system_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @styled-system/core */ "./node_modules/@styled-system/core/dist/index.esm.js"); 1084 1085var config = { 1086 background: true, 1087 backgroundImage: true, 1088 backgroundSize: true, 1089 backgroundPosition: true, 1090 backgroundRepeat: true 1091}; 1092config.bgImage = config.backgroundImage; 1093config.bgSize = config.backgroundSize; 1094config.bgPosition = config.backgroundPosition; 1095config.bgRepeat = config.backgroundRepeat; 1096var background = Object(_styled_system_core__WEBPACK_IMPORTED_MODULE_0__["system"])(config); 1097/* harmony default export */ __webpack_exports__["default"] = (background); 1098 1099/***/ }), 1100
vendor: 3,465 bytes, lines 1101-1243
1101/***/ "./node_modules/@styled-system/border/dist/index.esm.js": 1102/*!**************************************************************!*\ 1103 !*** ./node_modules/@styled-system/border/dist/index.esm.js ***! 1104 \**************************************************************/ 1105/*! exports provided: border, default */ 1106/***/ (function(module, __webpack_exports__, __webpack_require__) { 1107 1108"use strict"; 1109__webpack_require__.r(__webpack_exports__); 1110/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "border", function() { return border; }); 1111/* harmony import */ var _styled_system_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @styled-system/core */ "./node_modules/@styled-system/core/dist/index.esm.js"); 1112 1113var config = { 1114 border: { 1115 property: 'border', 1116 scale: 'borders' 1117 }, 1118 borderWidth: { 1119 property: 'borderWidth', 1120 scale: 'borderWidths' 1121 }, 1122 borderStyle: { 1123 property: 'borderStyle', 1124 scale: 'borderStyles' 1125 }, 1126 borderColor: { 1127 property: 'borderColor', 1128 scale: 'colors' 1129 }, 1130 borderRadius: { 1131 property: 'borderRadius', 1132 scale: 'radii' 1133 }, 1134 borderTop: { 1135 property: 'borderTop', 1136 scale: 'borders' 1137 }, 1138 borderTopLeftRadius: { 1139 property: 'borderTopLeftRadius', 1140 scale: 'radii' 1141 }, 1142 borderTopRightRadius: { 1143 property: 'borderTopRightRadius', 1144 scale: 'radii' 1145 }, 1146 borderRight: { 1147 property: 'borderRight', 1148 scale: 'borders' 1149 }, 1150 borderBottom: { 1151 property: 'borderBottom', 1152 scale: 'borders' 1153 }, 1154 borderBottomLeftRadius: { 1155 property: 'borderBottomLeftRadius', 1156 scale: 'radii' 1157 }, 1158 borderBottomRightRadius: { 1159 property: 'borderBottomRightRadius', 1160 scale: 'radii' 1161 }, 1162 borderLeft: { 1163 property: 'borderLeft', 1164 scale: 'borders' 1165 }, 1166 borderX: { 1167 properties: ['borderLeft', 'borderRight'], 1168 scale: 'borders' 1169 }, 1170 borderY: { 1171 properties: ['borderTop', 'borderBottom'], 1172 scale: 'borders' 1173 } 1174}; 1175config.borderTopWidth = { 1176 property: 'borderTopWidth', 1177 scale: 'borderWidths' 1178}; 1179config.borderTopColor = { 1180 property: 'borderTopColor', 1181 scale: 'colors' 1182}; 1183config.borderTopStyle = { 1184 property: 'borderTopStyle', 1185 scale: 'borderStyles' 1186}; 1187config.borderTopLeftRadius = { 1188 property: 'borderTopLeftRadius', 1189 scale: 'radii' 1190}; 1191config.borderTopRightRadius = { 1192 property: 'borderTopRightRadius', 1193 scale: 'radii' 1194}; 1195config.borderBottomWidth = { 1196 property: 'borderBottomWidth', 1197 scale: 'borderWidths' 1198}; 1199config.borderBottomColor = { 1200 property: 'borderBottomColor', 1201 scale: 'colors' 1202}; 1203config.borderBottomStyle = { 1204 property: 'borderBottomStyle', 1205 scale: 'borderStyles' 1206}; 1207config.borderBottomLeftRadius = { 1208 property: 'borderBottomLeftRadius', 1209 scale: 'radii' 1210}; 1211config.borderBottomRightRadius = { 1212 property: 'borderBottomRightRadius', 1213 scale: 'radii' 1214}; 1215config.borderLeftWidth = { 1216 property: 'borderLeftWidth', 1217 scale: 'borderWidths' 1218}; 1219config.borderLeftColor = { 1220 property: 'borderLeftColor', 1221 scale: 'colors' 1222}; 1223config.borderLeftStyle = { 1224 property: 'borderLeftStyle', 1225 scale: 'borderStyles' 1226}; 1227config.borderRightWidth = { 1228 property: 'borderRightWidth', 1229 scale: 'borderWidths' 1230}; 1231config.borderRightColor = { 1232 property: 'borderRightColor', 1233 scale: 'colors' 1234}; 1235config.borderRightStyle = { 1236 property: 'borderRightStyle', 1237 scale: 'borderStyles' 1238}; 1239var border = Object(_styled_system_core__WEBPACK_IMPORTED_MODULE_0__["system"])(config); 1240/* harmony default export */ __webpack_exports__["default"] = (border); 1241 1242/***/ }), 1243
vendor: 1,104 bytes, lines 1244-1272
1244/***/ "./node_modules/@styled-system/color/dist/index.esm.js": 1245/*!*************************************************************!*\ 1246 !*** ./node_modules/@styled-system/color/dist/index.esm.js ***! 1247 \*************************************************************/ 1248/*! exports provided: color, default */ 1249/***/ (function(module, __webpack_exports__, __webpack_require__) { 1250 1251"use strict"; 1252__webpack_require__.r(__webpack_exports__); 1253/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "color", function() { return color; }); 1254/* harmony import */ var _styled_system_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @styled-system/core */ "./node_modules/@styled-system/core/dist/index.esm.js"); 1255 1256var config = { 1257 color: { 1258 property: 'color', 1259 scale: 'colors' 1260 }, 1261 backgroundColor: { 1262 property: 'backgroundColor', 1263 scale: 'colors' 1264 }, 1265 opacity: true 1266}; 1267config.bg = config.backgroundColor; 1268var color = Object(_styled_system_core__WEBPACK_IMPORTED_MODULE_0__["system"])(config); 1269/* harmony default export */ __webpack_exports__["default"] = (color); 1270 1271/***/ }), 1272
vendor: 7,307 bytes, lines 1273-1506
1273/***/ "./node_modules/@styled-system/core/dist/index.esm.js": 1274/*!************************************************************!*\ 1275 !*** ./node_modules/@styled-system/core/dist/index.esm.js ***! 1276 \************************************************************/ 1277/*! exports provided: merge, get, createParser, createStyleFunction, system, compose */ 1278/***/ (function(module, __webpack_exports__, __webpack_require__) { 1279 1280"use strict"; 1281__webpack_require__.r(__webpack_exports__); 1282/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return merge; }); 1283/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "get", function() { return get; }); 1284/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createParser", function() { return createParser; }); 1285/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createStyleFunction", function() { return createStyleFunction; }); 1286/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "system", function() { return system; }); 1287/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "compose", function() { return compose; }); 1288/* harmony import */ var object_assign__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! object-assign */ "./node_modules/object-assign/index.js"); 1289/* harmony import */ var object_assign__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(object_assign__WEBPACK_IMPORTED_MODULE_0__); 1290 1291var merge = function merge(a, b) { 1292 var result = object_assign__WEBPACK_IMPORTED_MODULE_0___default()({}, a, b); 1293 1294 for (var key in a) { 1295 var _assign; 1296 1297 if (!a[key] || typeof b[key] !== 'object') continue; 1298 object_assign__WEBPACK_IMPORTED_MODULE_0___default()(result, (_assign = {}, _assign[key] = object_assign__WEBPACK_IMPORTED_MODULE_0___default()(a[key], b[key]), _assign)); 1299 } 1300 1301 return result; 1302}; // sort object-value responsive styles 1303 1304var sort = function sort(obj) { 1305 var next = {}; 1306 Object.keys(obj).sort(function (a, b) { 1307 return a.localeCompare(b, undefined, { 1308 numeric: true, 1309 sensitivity: 'base' 1310 }); 1311 }).forEach(function (key) { 1312 next[key] = obj[key]; 1313 }); 1314 return next; 1315}; 1316 1317var defaults = { 1318 breakpoints: [40, 52, 64].map(function (n) { 1319 return n + 'em'; 1320 }) 1321}; 1322 1323var createMediaQuery = function createMediaQuery(n) { 1324 return "@media screen and (min-width: " + n + ")"; 1325}; 1326 1327var getValue = function getValue(n, scale) { 1328 return get(scale, n, n); 1329}; 1330 1331var get = function get(obj, key, def, p, undef) { 1332 key = key && key.split ? key.split('.') : [key]; 1333 1334 for (p = 0; p < key.length; p++) { 1335 obj = obj ? obj[key[p]] : undef; 1336 } 1337 1338 return obj === undef ? def : obj; 1339}; 1340var createParser = function createParser(config) { 1341 var cache = {}; 1342 1343 var parse = function parse(props) { 1344 var styles = {}; 1345 var shouldSort = false; 1346 var isCacheDisabled = props.theme && props.theme.disableStyledSystemCache; 1347 1348 for (var key in props) { 1349 if (!config[key]) continue; 1350 var sx = config[key]; 1351 var raw = props[key]; 1352 var scale = get(props.theme, sx.scale, sx.defaults); 1353 1354 if (typeof raw === 'object') { 1355 cache.breakpoints = !isCacheDisabled && cache.breakpoints || get(props.theme, 'breakpoints', defaults.breakpoints); 1356 1357 if (Array.isArray(raw)) { 1358 cache.media = !isCacheDisabled && cache.media || [null].concat(cache.breakpoints.map(createMediaQuery)); 1359 styles = merge(styles, parseResponsiveStyle(cache.media, sx, scale, raw, props)); 1360 continue; 1361 } 1362 1363 if (raw !== null) { 1364 styles = merge(styles, parseResponsiveObject(cache.breakpoints, sx, scale, raw, props)); 1365 shouldSort = true; 1366 } 1367 1368 continue; 1369 } 1370 1371 object_assign__WEBPACK_IMPORTED_MODULE_0___default()(styles, sx(raw, scale, props)); 1372 } // sort object-based responsive styles 1373 1374 1375 if (shouldSort) { 1376 styles = sort(styles); 1377 } 1378 1379 return styles; 1380 }; 1381 1382 parse.config = config; 1383 parse.propNames = Object.keys(config); 1384 parse.cache = cache; 1385 var keys = Object.keys(config).filter(function (k) { 1386 return k !== 'config'; 1387 }); 1388 1389 if (keys.length > 1) { 1390 keys.forEach(function (key) { 1391 var _createParser; 1392 1393 parse[key] = createParser((_createParser = {}, _createParser[key] = config[key], _createParser)); 1394 }); 1395 } 1396 1397 return parse; 1398}; 1399 1400var parseResponsiveStyle = function parseResponsiveStyle(mediaQueries, sx, scale, raw, _props) { 1401 var styles = {}; 1402 raw.slice(0, mediaQueries.length).forEach(function (value, i) { 1403 var media = mediaQueries[i]; 1404 var style = sx(value, scale, _props); 1405 1406 if (!media) { 1407 object_assign__WEBPACK_IMPORTED_MODULE_0___default()(styles, style); 1408 } else { 1409 var _assign2; 1410 1411 object_assign__WEBPACK_IMPORTED_MODULE_0___default()(styles, (_assign2 = {}, _assign2[media] = object_assign__WEBPACK_IMPORTED_MODULE_0___default()({}, styles[media], style), _assign2)); 1412 } 1413 }); 1414 return styles; 1415}; 1416 1417var parseResponsiveObject = function parseResponsiveObject(breakpoints, sx, scale, raw, _props) { 1418 var styles = {}; 1419 1420 for (var key in raw) { 1421 var breakpoint = breakpoints[key]; 1422 var value = raw[key]; 1423 var style = sx(value, scale, _props); 1424 1425 if (!breakpoint) { 1426 object_assign__WEBPACK_IMPORTED_MODULE_0___default()(styles, style); 1427 } else { 1428 var _assign3; 1429 1430 var media = createMediaQuery(breakpoint); 1431 object_assign__WEBPACK_IMPORTED_MODULE_0___default()(styles, (_assign3 = {}, _assign3[media] = object_assign__WEBPACK_IMPORTED_MODULE_0___default()({}, styles[media], style), _assign3)); 1432 } 1433 } 1434 1435 return styles; 1436}; 1437 1438var createStyleFunction = function createStyleFunction(_ref) { 1439 var properties = _ref.properties, 1440 property = _ref.property, 1441 scale = _ref.scale, 1442 _ref$transform = _ref.transform, 1443 transform = _ref$transform === void 0 ? getValue : _ref$transform, 1444 defaultScale = _ref.defaultScale; 1445 properties = properties || [property]; 1446 1447 var sx = function sx(value, scale, _props) { 1448 var result = {}; 1449 var n = transform(value, scale, _props); 1450 if (n === null) return; 1451 properties.forEach(function (prop) { 1452 result[prop] = n; 1453 }); 1454 return result; 1455 }; 1456 1457 sx.scale = scale; 1458 sx.defaults = defaultScale; 1459 return sx; 1460}; // new v5 API 1461 1462var system = function system(args) { 1463 if (args === void 0) { 1464 args = {}; 1465 } 1466 1467 var config = {}; 1468 Object.keys(args).forEach(function (key) { 1469 var conf = args[key]; 1470 1471 if (conf === true) { 1472 // shortcut definition 1473 config[key] = createStyleFunction({ 1474 property: key, 1475 scale: key 1476 }); 1477 return; 1478 } 1479 1480 if (typeof conf === 'function') { 1481 config[key] = conf; 1482 return; 1483 } 1484 1485 config[key] = createStyleFunction(conf); 1486 }); 1487 var parser = createParser(config); 1488 return parser; 1489}; 1490var compose = function compose() { 1491 var config = {}; 1492 1493 for (var _len = arguments.length, parsers = new Array(_len), _key = 0; _key < _len; _key++) { 1494 parsers[_key] = arguments[_key]; 1495 } 1496 1497 parsers.forEach(function (parser) { 1498 if (!parser || !parser.config) return; 1499 object_assign__WEBPACK_IMPORTED_MODULE_0___default()(config, parser.config); 1500 }); 1501 var parser = createParser(config); 1502 return parser; 1503}; 1504 1505/***/ }), 1506
vendor: 6,719 bytes, lines 1507-1752
1507/***/ "./node_modules/@styled-system/css/dist/index.esm.js": 1508/*!***********************************************************!*\ 1509 !*** ./node_modules/@styled-system/css/dist/index.esm.js ***! 1510 \***********************************************************/ 1511/*! exports provided: get, responsive, css, default */ 1512/***/ (function(module, __webpack_exports__, __webpack_require__) { 1513 1514"use strict"; 1515__webpack_require__.r(__webpack_exports__); 1516/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "get", function() { return get; }); 1517/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "responsive", function() { return responsive; }); 1518/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "css", function() { return css; }); 1519function _extends() { 1520 _extends = Object.assign || function (target) { 1521 for (var i = 1; i < arguments.length; i++) { 1522 var source = arguments[i]; 1523 1524 for (var key in source) { 1525 if (Object.prototype.hasOwnProperty.call(source, key)) { 1526 target[key] = source[key]; 1527 } 1528 } 1529 } 1530 1531 return target; 1532 }; 1533 1534 return _extends.apply(this, arguments); 1535} // based on https://github.com/developit/dlv 1536 1537 1538var get = function get(obj, key, def, p, undef) { 1539 key = key && key.split ? key.split('.') : [key]; 1540 1541 for (p = 0; p < key.length; p++) { 1542 obj = obj ? obj[key[p]] : undef; 1543 } 1544 1545 return obj === undef ? def : obj; 1546}; 1547var defaultBreakpoints = [40, 52, 64].map(function (n) { 1548 return n + 'em'; 1549}); 1550var defaultTheme = { 1551 space: [0, 4, 8, 16, 32, 64, 128, 256, 512], 1552 fontSizes: [12, 14, 16, 20, 24, 32, 48, 64, 72] 1553}; 1554var aliases = { 1555 bg: 'backgroundColor', 1556 m: 'margin', 1557 mt: 'marginTop', 1558 mr: 'marginRight', 1559 mb: 'marginBottom', 1560 ml: 'marginLeft', 1561 mx: 'marginX', 1562 my: 'marginY', 1563 p: 'padding', 1564 pt: 'paddingTop', 1565 pr: 'paddingRight', 1566 pb: 'paddingBottom', 1567 pl: 'paddingLeft', 1568 px: 'paddingX', 1569 py: 'paddingY' 1570}; 1571var multiples = { 1572 marginX: ['marginLeft', 'marginRight'], 1573 marginY: ['marginTop', 'marginBottom'], 1574 paddingX: ['paddingLeft', 'paddingRight'], 1575 paddingY: ['paddingTop', 'paddingBottom'], 1576 size: ['width', 'height'] 1577}; 1578var scales = { 1579 color: 'colors', 1580 backgroundColor: 'colors', 1581 borderColor: 'colors', 1582 margin: 'space', 1583 marginTop: 'space', 1584 marginRight: 'space', 1585 marginBottom: 'space', 1586 marginLeft: 'space', 1587 marginX: 'space', 1588 marginY: 'space', 1589 padding: 'space', 1590 paddingTop: 'space', 1591 paddingRight: 'space', 1592 paddingBottom: 'space', 1593 paddingLeft: 'space', 1594 paddingX: 'space', 1595 paddingY: 'space', 1596 top: 'space', 1597 right: 'space', 1598 bottom: 'space', 1599 left: 'space', 1600 gridGap: 'space', 1601 gridColumnGap: 'space', 1602 gridRowGap: 'space', 1603 gap: 'space', 1604 columnGap: 'space', 1605 rowGap: 'space', 1606 fontFamily: 'fonts', 1607 fontSize: 'fontSizes', 1608 fontWeight: 'fontWeights', 1609 lineHeight: 'lineHeights', 1610 letterSpacing: 'letterSpacings', 1611 border: 'borders', 1612 borderTop: 'borders', 1613 borderRight: 'borders', 1614 borderBottom: 'borders', 1615 borderLeft: 'borders', 1616 borderWidth: 'borderWidths', 1617 borderStyle: 'borderStyles', 1618 borderRadius: 'radii', 1619 borderTopRightRadius: 'radii', 1620 borderTopLeftRadius: 'radii', 1621 borderBottomRightRadius: 'radii', 1622 borderBottomLeftRadius: 'radii', 1623 borderTopWidth: 'borderWidths', 1624 borderTopColor: 'colors', 1625 borderTopStyle: 'borderStyles', 1626 borderBottomWidth: 'borderWidths', 1627 borderBottomColor: 'colors', 1628 borderBottomStyle: 'borderStyles', 1629 borderLeftWidth: 'borderWidths', 1630 borderLeftColor: 'colors', 1631 borderLeftStyle: 'borderStyles', 1632 borderRightWidth: 'borderWidths', 1633 borderRightColor: 'colors', 1634 borderRightStyle: 'borderStyles', 1635 outlineColor: 'colors', 1636 boxShadow: 'shadows', 1637 textShadow: 'shadows', 1638 zIndex: 'zIndices', 1639 width: 'sizes', 1640 minWidth: 'sizes', 1641 maxWidth: 'sizes', 1642 height: 'sizes', 1643 minHeight: 'sizes', 1644 maxHeight: 'sizes', 1645 flexBasis: 'sizes', 1646 size: 'sizes', 1647 // svg 1648 fill: 'colors', 1649 stroke: 'colors' 1650}; 1651 1652var positiveOrNegative = function positiveOrNegative(scale, value) { 1653 if (typeof value !== 'number' || value >= 0) { 1654 return get(scale, value, value); 1655 } 1656 1657 var absolute = Math.abs(value); 1658 var n = get(scale, absolute, absolute); 1659 if (typeof n === 'string') return '-' + n; 1660 return n * -1; 1661}; 1662 1663var transforms = ['margin', 'marginTop', 'marginRight', 'marginBottom', 'marginLeft', 'marginX', 'marginY', 'top', 'bottom', 'left', 'right'].reduce(function (acc, curr) { 1664 var _extends2; 1665 1666 return _extends({}, acc, (_extends2 = {}, _extends2[curr] = positiveOrNegative, _extends2)); 1667}, {}); 1668var responsive = function responsive(styles) { 1669 return function (theme) { 1670 var next = {}; 1671 var breakpoints = get(theme, 'breakpoints', defaultBreakpoints); 1672 var mediaQueries = [null].concat(breakpoints.map(function (n) { 1673 return "@media screen and (min-width: " + n + ")"; 1674 })); 1675 1676 for (var key in styles) { 1677 var value = typeof styles[key] === 'function' ? styles[key](theme) : styles[key]; 1678 if (value == null) continue; 1679 1680 if (!Array.isArray(value)) { 1681 next[key] = value; 1682 continue; 1683 } 1684 1685 for (var i = 0; i < value.slice(0, mediaQueries.length).length; i++) { 1686 var media = mediaQueries[i]; 1687 1688 if (!media) { 1689 next[key] = value[i]; 1690 continue; 1691 } 1692 1693 next[media] = next[media] || {}; 1694 if (value[i] == null) continue; 1695 next[media][key] = value[i]; 1696 } 1697 } 1698 1699 return next; 1700 }; 1701}; 1702var css = function css(args) { 1703 return function (props) { 1704 if (props === void 0) { 1705 props = {}; 1706 } 1707 1708 var theme = _extends({}, defaultTheme, {}, props.theme || props); 1709 1710 var result = {}; 1711 var obj = typeof args === 'function' ? args(theme) : args; 1712 var styles = responsive(obj)(theme); 1713 1714 for (var key in styles) { 1715 var x = styles[key]; 1716 var val = typeof x === 'function' ? x(theme) : x; 1717 1718 if (key === 'variant') { 1719 var variant = css(get(theme, val))(theme); 1720 result = _extends({}, result, {}, variant); 1721 continue; 1722 } 1723 1724 if (val && typeof val === 'object') { 1725 result[key] = css(val)(theme); 1726 continue; 1727 } 1728 1729 var prop = get(aliases, key, key); 1730 var scaleName = get(scales, prop); 1731 var scale = get(theme, scaleName, get(theme, prop, {})); 1732 var transform = get(transforms, prop, get); 1733 var value = transform(scale, val, val); 1734 1735 if (multiples[prop]) { 1736 var dirs = multiples[prop]; 1737 1738 for (var i = 0; i < dirs.length; i++) { 1739 result[dirs[i]] = value; 1740 } 1741 } else { 1742 result[prop] = value; 1743 } 1744 } 1745 1746 return result; 1747 }; 1748}; 1749/* harmony default export */ __webpack_exports__["default"] = (css); 1750 1751/***/ }), 1752
vendor: 1,196 bytes, lines 1753-1785
1753/***/ "./node_modules/@styled-system/flexbox/dist/index.esm.js": 1754/*!***************************************************************!*\ 1755 !*** ./node_modules/@styled-system/flexbox/dist/index.esm.js ***! 1756 \***************************************************************/ 1757/*! exports provided: flexbox, default */ 1758/***/ (function(module, __webpack_exports__, __webpack_require__) { 1759 1760"use strict"; 1761__webpack_require__.r(__webpack_exports__); 1762/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "flexbox", function() { return flexbox; }); 1763/* harmony import */ var _styled_system_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @styled-system/core */ "./node_modules/@styled-system/core/dist/index.esm.js"); 1764 1765var config = { 1766 alignItems: true, 1767 alignContent: true, 1768 justifyItems: true, 1769 justifyContent: true, 1770 flexWrap: true, 1771 flexDirection: true, 1772 // item 1773 flex: true, 1774 flexGrow: true, 1775 flexShrink: true, 1776 flexBasis: true, 1777 justifySelf: true, 1778 alignSelf: true, 1779 order: true 1780}; 1781var flexbox = Object(_styled_system_core__WEBPACK_IMPORTED_MODULE_0__["system"])(config); 1782/* harmony default export */ __webpack_exports__["default"] = (flexbox); 1783 1784/***/ }), 1785
vendor: 1,482 bytes, lines 1786-1831
1786/***/ "./node_modules/@styled-system/grid/dist/index.esm.js": 1787/*!************************************************************!*\ 1788 !*** ./node_modules/@styled-system/grid/dist/index.esm.js ***! 1789 \************************************************************/ 1790/*! exports provided: grid, default */ 1791/***/ (function(module, __webpack_exports__, __webpack_require__) { 1792 1793"use strict"; 1794__webpack_require__.r(__webpack_exports__); 1795/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "grid", function() { return grid; }); 1796/* harmony import */ var _styled_system_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @styled-system/core */ "./node_modules/@styled-system/core/dist/index.esm.js"); 1797 1798var defaults = { 1799 space: [0, 4, 8, 16, 32, 64, 128, 256, 512] 1800}; 1801var config = { 1802 gridGap: { 1803 property: 'gridGap', 1804 scale: 'space', 1805 defaultScale: defaults.space 1806 }, 1807 gridColumnGap: { 1808 property: 'gridColumnGap', 1809 scale: 'space', 1810 defaultScale: defaults.space 1811 }, 1812 gridRowGap: { 1813 property: 'gridRowGap', 1814 scale: 'space', 1815 defaultScale: defaults.space 1816 }, 1817 gridColumn: true, 1818 gridRow: true, 1819 gridAutoFlow: true, 1820 gridAutoColumns: true, 1821 gridAutoRows: true, 1822 gridTemplateColumns: true, 1823 gridTemplateRows: true, 1824 gridTemplateAreas: true, 1825 gridArea: true 1826}; 1827var grid = Object(_styled_system_core__WEBPACK_IMPORTED_MODULE_0__["system"])(config); 1828/* harmony default export */ __webpack_exports__["default"] = (grid); 1829 1830/***/ }), 1831
vendor: 1,756 bytes, lines 1832-1893
1832/***/ "./node_modules/@styled-system/layout/dist/index.esm.js": 1833/*!**************************************************************!*\ 1834 !*** ./node_modules/@styled-system/layout/dist/index.esm.js ***! 1835 \**************************************************************/ 1836/*! exports provided: layout, default */ 1837/***/ (function(module, __webpack_exports__, __webpack_require__) { 1838 1839"use strict"; 1840__webpack_require__.r(__webpack_exports__); 1841/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "layout", function() { return layout; }); 1842/* harmony import */ var _styled_system_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @styled-system/core */ "./node_modules/@styled-system/core/dist/index.esm.js"); 1843 1844 1845var isNumber = function isNumber(n) { 1846 return typeof n === 'number' && !isNaN(n); 1847}; 1848 1849var getWidth = function getWidth(n, scale) { 1850 return Object(_styled_system_core__WEBPACK_IMPORTED_MODULE_0__["get"])(scale, n, !isNumber(n) || n > 1 ? n : n * 100 + '%'); 1851}; 1852 1853var config = { 1854 width: { 1855 property: 'width', 1856 scale: 'sizes', 1857 transform: getWidth 1858 }, 1859 height: { 1860 property: 'height', 1861 scale: 'sizes' 1862 }, 1863 minWidth: { 1864 property: 'minWidth', 1865 scale: 'sizes' 1866 }, 1867 minHeight: { 1868 property: 'minHeight', 1869 scale: 'sizes' 1870 }, 1871 maxWidth: { 1872 property: 'maxWidth', 1873 scale: 'sizes' 1874 }, 1875 maxHeight: { 1876 property: 'maxHeight', 1877 scale: 'sizes' 1878 }, 1879 size: { 1880 properties: ['width', 'height'], 1881 scale: 'sizes' 1882 }, 1883 overflow: true, 1884 overflowX: true, 1885 overflowY: true, 1886 display: true, 1887 verticalAlign: true 1888}; 1889var layout = Object(_styled_system_core__WEBPACK_IMPORTED_MODULE_0__["system"])(config); 1890/* harmony default export */ __webpack_exports__["default"] = (layout); 1891 1892/***/ }), 1893
vendor: 1,451 bytes, lines 1894-1940
1894/***/ "./node_modules/@styled-system/position/dist/index.esm.js": 1895/*!****************************************************************!*\ 1896 !*** ./node_modules/@styled-system/position/dist/index.esm.js ***! 1897 \****************************************************************/ 1898/*! exports provided: position, default */ 1899/***/ (function(module, __webpack_exports__, __webpack_require__) { 1900 1901"use strict"; 1902__webpack_require__.r(__webpack_exports__); 1903/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "position", function() { return position; }); 1904/* harmony import */ var _styled_system_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @styled-system/core */ "./node_modules/@styled-system/core/dist/index.esm.js"); 1905 1906var defaults = { 1907 space: [0, 4, 8, 16, 32, 64, 128, 256, 512] 1908}; 1909var config = { 1910 position: true, 1911 zIndex: { 1912 property: 'zIndex', 1913 scale: 'zIndices' 1914 }, 1915 top: { 1916 property: 'top', 1917 scale: 'space', 1918 defaultScale: defaults.space 1919 }, 1920 right: { 1921 property: 'right', 1922 scale: 'space', 1923 defaultScale: defaults.space 1924 }, 1925 bottom: { 1926 property: 'bottom', 1927 scale: 'space', 1928 defaultScale: defaults.space 1929 }, 1930 left: { 1931 property: 'left', 1932 scale: 'space', 1933 defaultScale: defaults.space 1934 } 1935}; 1936var position = Object(_styled_system_core__WEBPACK_IMPORTED_MODULE_0__["system"])(config); 1937/* harmony default export */ __webpack_exports__["default"] = (position); 1938 1939/***/ }), 1940
vendor: 1,039 bytes, lines 1941-1966
1941/***/ "./node_modules/@styled-system/shadow/dist/index.esm.js": 1942/*!**************************************************************!*\ 1943 !*** ./node_modules/@styled-system/shadow/dist/index.esm.js ***! 1944 \**************************************************************/ 1945/*! exports provided: shadow, default */ 1946/***/ (function(module, __webpack_exports__, __webpack_require__) { 1947 1948"use strict"; 1949__webpack_require__.r(__webpack_exports__); 1950/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "shadow", function() { return shadow; }); 1951/* harmony import */ var _styled_system_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @styled-system/core */ "./node_modules/@styled-system/core/dist/index.esm.js"); 1952 1953var shadow = Object(_styled_system_core__WEBPACK_IMPORTED_MODULE_0__["system"])({ 1954 boxShadow: { 1955 property: 'boxShadow', 1956 scale: 'shadows' 1957 }, 1958 textShadow: { 1959 property: 'textShadow', 1960 scale: 'shadows' 1961 } 1962}); 1963/* harmony default export */ __webpack_exports__["default"] = (shadow); 1964 1965/***/ }), 1966
vendor: 4,357 bytes, lines 1967-2107
1967/***/ "./node_modules/@styled-system/space/dist/index.esm.js": 1968/*!*************************************************************!*\ 1969 !*** ./node_modules/@styled-system/space/dist/index.esm.js ***! 1970 \*************************************************************/ 1971/*! exports provided: margin, padding, space, default */ 1972/***/ (function(module, __webpack_exports__, __webpack_require__) { 1973 1974"use strict"; 1975__webpack_require__.r(__webpack_exports__); 1976/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "margin", function() { return margin; }); 1977/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "padding", function() { return padding; }); 1978/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "space", function() { return space; }); 1979/* harmony import */ var _styled_system_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @styled-system/core */ "./node_modules/@styled-system/core/dist/index.esm.js"); 1980 1981var defaults = { 1982 space: [0, 4, 8, 16, 32, 64, 128, 256, 512] 1983}; 1984 1985var isNumber = function isNumber(n) { 1986 return typeof n === 'number' && !isNaN(n); 1987}; 1988 1989var getMargin = function getMargin(n, scale) { 1990 if (!isNumber(n)) { 1991 return Object(_styled_system_core__WEBPACK_IMPORTED_MODULE_0__["get"])(scale, n, n); 1992 } 1993 1994 var isNegative = n < 0; 1995 var absolute = Math.abs(n); 1996 var value = Object(_styled_system_core__WEBPACK_IMPORTED_MODULE_0__["get"])(scale, absolute, absolute); 1997 1998 if (!isNumber(value)) { 1999 return isNegative ? '-' + value : value; 2000 } 2001 2002 return value * (isNegative ? -1 : 1); 2003}; 2004 2005var configs = {}; 2006configs.margin = { 2007 margin: { 2008 property: 'margin', 2009 scale: 'space', 2010 transform: getMargin, 2011 defaultScale: defaults.space 2012 }, 2013 marginTop: { 2014 property: 'marginTop', 2015 scale: 'space', 2016 transform: getMargin, 2017 defaultScale: defaults.space 2018 }, 2019 marginRight: { 2020 property: 'marginRight', 2021 scale: 'space', 2022 transform: getMargin, 2023 defaultScale: defaults.space 2024 }, 2025 marginBottom: { 2026 property: 'marginBottom', 2027 scale: 'space', 2028 transform: getMargin, 2029 defaultScale: defaults.space 2030 }, 2031 marginLeft: { 2032 property: 'marginLeft', 2033 scale: 'space', 2034 transform: getMargin, 2035 defaultScale: defaults.space 2036 }, 2037 marginX: { 2038 properties: ['marginLeft', 'marginRight'], 2039 scale: 'space', 2040 transform: getMargin, 2041 defaultScale: defaults.space 2042 }, 2043 marginY: { 2044 properties: ['marginTop', 'marginBottom'], 2045 scale: 'space', 2046 transform: getMargin, 2047 defaultScale: defaults.space 2048 } 2049}; 2050configs.margin.m = configs.margin.margin; 2051configs.margin.mt = configs.margin.marginTop; 2052configs.margin.mr = configs.margin.marginRight; 2053configs.margin.mb = configs.margin.marginBottom; 2054configs.margin.ml = configs.margin.marginLeft; 2055configs.margin.mx = configs.margin.marginX; 2056configs.margin.my = configs.margin.marginY; 2057configs.padding = { 2058 padding: { 2059 property: 'padding', 2060 scale: 'space', 2061 defaultScale: defaults.space 2062 }, 2063 paddingTop: { 2064 property: 'paddingTop', 2065 scale: 'space', 2066 defaultScale: defaults.space 2067 }, 2068 paddingRight: { 2069 property: 'paddingRight', 2070 scale: 'space', 2071 defaultScale: defaults.space 2072 }, 2073 paddingBottom: { 2074 property: 'paddingBottom', 2075 scale: 'space', 2076 defaultScale: defaults.space 2077 }, 2078 paddingLeft: { 2079 property: 'paddingLeft', 2080 scale: 'space', 2081 defaultScale: defaults.space 2082 }, 2083 paddingX: { 2084 properties: ['paddingLeft', 'paddingRight'], 2085 scale: 'space', 2086 defaultScale: defaults.space 2087 }, 2088 paddingY: { 2089 properties: ['paddingTop', 'paddingBottom'], 2090 scale: 'space', 2091 defaultScale: defaults.space 2092 } 2093}; 2094configs.padding.p = configs.padding.padding; 2095configs.padding.pt = configs.padding.paddingTop; 2096configs.padding.pr = configs.padding.paddingRight; 2097configs.padding.pb = configs.padding.paddingBottom; 2098configs.padding.pl = configs.padding.paddingLeft; 2099configs.padding.px = configs.padding.paddingX; 2100configs.padding.py = configs.padding.paddingY; 2101var margin = Object(_styled_system_core__WEBPACK_IMPORTED_MODULE_0__["system"])(configs.margin); 2102var padding = Object(_styled_system_core__WEBPACK_IMPORTED_MODULE_0__["system"])(configs.padding); 2103var space = Object(_styled_system_core__WEBPACK_IMPORTED_MODULE_0__["compose"])(margin, padding); 2104/* harmony default export */ __webpack_exports__["default"] = (space); 2105 2106/***/ }), 2107
vendor: 1,471 bytes, lines 2108-2152
2108/***/ "./node_modules/@styled-system/typography/dist/index.esm.js": 2109/*!******************************************************************!*\ 2110 !*** ./node_modules/@styled-system/typography/dist/index.esm.js ***! 2111 \******************************************************************/ 2112/*! exports provided: typography, default */ 2113/***/ (function(module, __webpack_exports__, __webpack_require__) { 2114 2115"use strict"; 2116__webpack_require__.r(__webpack_exports__); 2117/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "typography", function() { return typography; }); 2118/* harmony import */ var _styled_system_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @styled-system/core */ "./node_modules/@styled-system/core/dist/index.esm.js"); 2119 2120var defaults = { 2121 fontSizes: [12, 14, 16, 20, 24, 32, 48, 64, 72] 2122}; 2123var config = { 2124 fontFamily: { 2125 property: 'fontFamily', 2126 scale: 'fonts' 2127 }, 2128 fontSize: { 2129 property: 'fontSize', 2130 scale: 'fontSizes', 2131 defaultScale: defaults.fontSizes 2132 }, 2133 fontWeight: { 2134 property: 'fontWeight', 2135 scale: 'fontWeights' 2136 }, 2137 lineHeight: { 2138 property: 'lineHeight', 2139 scale: 'lineHeights' 2140 }, 2141 letterSpacing: { 2142 property: 'letterSpacing', 2143 scale: 'letterSpacings' 2144 }, 2145 textAlign: true, 2146 fontStyle: true 2147}; 2148var typography = Object(_styled_system_core__WEBPACK_IMPORTED_MODULE_0__["system"])(config); 2149/* harmony default export */ __webpack_exports__["default"] = (typography); 2150 2151/***/ }), 2152
vendor: 2,559 bytes, lines 2153-2211
2153/***/ "./node_modules/@styled-system/variant/dist/index.esm.js": 2154/*!***************************************************************!*\ 2155 !*** ./node_modules/@styled-system/variant/dist/index.esm.js ***! 2156 \***************************************************************/ 2157/*! exports provided: variant, default, buttonStyle, textStyle, colorStyle */ 2158/***/ (function(module, __webpack_exports__, __webpack_require__) { 2159 2160"use strict"; 2161__webpack_require__.r(__webpack_exports__); 2162/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "variant", function() { return variant; }); 2163/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "buttonStyle", function() { return buttonStyle; }); 2164/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "textStyle", function() { return textStyle; }); 2165/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "colorStyle", function() { return colorStyle; }); 2166/* harmony import */ var _styled_system_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @styled-system/core */ "./node_modules/@styled-system/core/dist/index.esm.js"); 2167/* harmony import */ var _styled_system_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @styled-system/css */ "./node_modules/@styled-system/css/dist/index.esm.js"); 2168 2169 2170var variant = function variant(_ref) { 2171 var _config; 2172 2173 var scale = _ref.scale, 2174 _ref$prop = _ref.prop, 2175 prop = _ref$prop === void 0 ? 'variant' : _ref$prop, 2176 _ref$variants = _ref.variants, 2177 variants = _ref$variants === void 0 ? {} : _ref$variants, 2178 key = _ref.key; 2179 var sx; 2180 2181 if (Object.keys(variants).length) { 2182 sx = function sx(value, scale, props) { 2183 return Object(_styled_system_css__WEBPACK_IMPORTED_MODULE_1__["default"])(Object(_styled_system_core__WEBPACK_IMPORTED_MODULE_0__["get"])(scale, value, null))(props.theme); 2184 }; 2185 } else { 2186 sx = function sx(value, scale) { 2187 return Object(_styled_system_core__WEBPACK_IMPORTED_MODULE_0__["get"])(scale, value, null); 2188 }; 2189 } 2190 2191 sx.scale = scale || key; 2192 sx.defaults = variants; 2193 var config = (_config = {}, _config[prop] = sx, _config); 2194 var parser = Object(_styled_system_core__WEBPACK_IMPORTED_MODULE_0__["createParser"])(config); 2195 return parser; 2196}; 2197/* harmony default export */ __webpack_exports__["default"] = (variant); 2198var buttonStyle = variant({ 2199 key: 'buttons' 2200}); 2201var textStyle = variant({ 2202 key: 'textStyles', 2203 prop: 'textStyle' 2204}); 2205var colorStyle = variant({ 2206 key: 'colorStyles', 2207 prop: 'colors' 2208}); 2209 2210/***/ }), 2211
vendor: 4,067 bytes, lines 2212-2341
2212/***/ "./node_modules/base64-js/index.js": 2213/*!*****************************************!*\ 2214 !*** ./node_modules/base64-js/index.js ***! 2215 \*****************************************/ 2216/*! no static exports found */ 2217/***/ (function(module, exports, __webpack_require__) { 2218 2219"use strict"; 2220 2221 2222exports.byteLength = byteLength; 2223exports.toByteArray = toByteArray; 2224exports.fromByteArray = fromByteArray; 2225var lookup = []; 2226var revLookup = []; 2227var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array; 2228var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; 2229 2230for (var i = 0, len = code.length; i < len; ++i) { 2231 lookup[i] = code[i]; 2232 revLookup[code.charCodeAt(i)] = i; 2233} // Support decoding URL-safe base64 strings, as Node.js does. 2234// See: https://en.wikipedia.org/wiki/Base64#URL_applications 2235 2236 2237revLookup['-'.charCodeAt(0)] = 62; 2238revLookup['_'.charCodeAt(0)] = 63; 2239 2240function getLens(b64) { 2241 var len = b64.length; 2242 2243 if (len % 4 > 0) { 2244 throw new Error('Invalid string. Length must be a multiple of 4'); 2245 } // Trim off extra bytes after placeholder bytes are found 2246 // See: https://github.com/beatgammit/base64-js/issues/42 2247 2248 2249 var validLen = b64.indexOf('='); 2250 if (validLen === -1) validLen = len; 2251 var placeHoldersLen = validLen === len ? 0 : 4 - validLen % 4; 2252 return [validLen, placeHoldersLen]; 2253} // base64 is 4/3 + up to two characters of the original data 2254 2255 2256function byteLength(b64) { 2257 var lens = getLens(b64); 2258 var validLen = lens[0]; 2259 var placeHoldersLen = lens[1]; 2260 return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen; 2261} 2262 2263function _byteLength(b64, validLen, placeHoldersLen) { 2264 return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen; 2265} 2266 2267function toByteArray(b64) { 2268 var tmp; 2269 var lens = getLens(b64); 2270 var validLen = lens[0]; 2271 var placeHoldersLen = lens[1]; 2272 var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen)); 2273 var curByte = 0; // if there are placeholders, only get up to the last complete 4 chars 2274 2275 var len = placeHoldersLen > 0 ? validLen - 4 : validLen; 2276 var i; 2277 2278 for (i = 0; i < len; i += 4) { 2279 tmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | revLookup[b64.charCodeAt(i + 3)]; 2280 arr[curByte++] = tmp >> 16 & 0xFF; 2281 arr[curByte++] = tmp >> 8 & 0xFF; 2282 arr[curByte++] = tmp & 0xFF; 2283 } 2284 2285 if (placeHoldersLen === 2) { 2286 tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4; 2287 arr[curByte++] = tmp & 0xFF; 2288 } 2289 2290 if (placeHoldersLen === 1) { 2291 tmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | revLookup[b64.charCodeAt(i + 2)] >> 2; 2292 arr[curByte++] = tmp >> 8 & 0xFF; 2293 arr[curByte++] = tmp & 0xFF; 2294 } 2295 2296 return arr; 2297} 2298 2299function tripletToBase64(num) { 2300 return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]; 2301} 2302 2303function encodeChunk(uint8, start, end) { 2304 var tmp; 2305 var output = []; 2306 2307 for (var i = start; i < end; i += 3) { 2308 tmp = (uint8[i] << 16 & 0xFF0000) + (uint8[i + 1] << 8 & 0xFF00) + (uint8[i + 2] & 0xFF); 2309 output.push(tripletToBase64(tmp)); 2310 } 2311 2312 return output.join(''); 2313} 2314 2315function fromByteArray(uint8) { 2316 var tmp; 2317 var len = uint8.length; 2318 var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes 2319 2320 var parts = []; 2321 var maxChunkLength = 16383; // must be multiple of 3 2322 // go through the array every three bytes, we'll deal with trailing stuff later 2323 2324 for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { 2325 parts.push(encodeChunk(uint8, i, i + maxChunkLength > len2 ? len2 : i + maxChunkLength)); 2326 } // pad the end with zeros, but make sure to not forget the extra bytes 2327 2328 2329 if (extraBytes === 1) { 2330 tmp = uint8[len - 1]; 2331 parts.push(lookup[tmp >> 2] + lookup[tmp << 4 & 0x3F] + '=='); 2332 } else if (extraBytes === 2) { 2333 tmp = (uint8[len - 2] << 8) + uint8[len - 1]; 2334 parts.push(lookup[tmp >> 10] + lookup[tmp >> 4 & 0x3F] + lookup[tmp << 2 & 0x3F] + '='); 2335 } 2336 2337 return parts.join(''); 2338} 2339 2340/***/ }), 2341
vendor: 2,840 bytes, lines 2342-2448
2342/***/ "./node_modules/broadcastchannel-polyfill/index.js": 2343/*!*********************************************************!*\ 2344 !*** ./node_modules/broadcastchannel-polyfill/index.js ***! 2345 \*********************************************************/ 2346/*! no static exports found */ 2347/***/ (function(module, exports) { 2348 2349(function (global) { 2350 var channels = []; 2351 2352 function BroadcastChannel(channel) { 2353 var $this = this; 2354 channel = String(channel); 2355 var id = '$BroadcastChannel$' + channel + '$'; 2356 channels[id] = channels[id] || []; 2357 channels[id].push(this); 2358 this._name = channel; 2359 this._id = id; 2360 this._closed = false; 2361 this._mc = new MessageChannel(); 2362 2363 this._mc.port1.start(); 2364 2365 this._mc.port2.start(); 2366 2367 global.addEventListener('storage', function (e) { 2368 if (e.storageArea !== global.localStorage) return; 2369 if (e.newValue == null || e.newValue === '') return; 2370 if (e.key.substring(0, id.length) !== id) return; 2371 var data = JSON.parse(e.newValue); 2372 2373 $this._mc.port2.postMessage(data); 2374 }); 2375 } 2376 2377 BroadcastChannel.prototype = { 2378 // BroadcastChannel API 2379 get name() { 2380 return this._name; 2381 }, 2382 2383 postMessage: function (message) { 2384 var $this = this; 2385 2386 if (this._closed) { 2387 var e = new Error(); 2388 e.name = 'InvalidStateError'; 2389 throw e; 2390 } 2391 2392 var value = JSON.stringify(message); // Broadcast to other contexts via storage events... 2393 2394 var key = this._id + String(Date.now()) + '$' + String(Math.random()); 2395 global.localStorage.setItem(key, value); 2396 setTimeout(function () { 2397 global.localStorage.removeItem(key); 2398 }, 500); // Broadcast to current context via ports 2399 2400 channels[this._id].forEach(function (bc) { 2401 if (bc === $this) return; 2402 2403 bc._mc.port2.postMessage(JSON.parse(value)); 2404 }); 2405 }, 2406 close: function () { 2407 if (this._closed) return; 2408 this._closed = true; 2409 2410 this._mc.port1.close(); 2411 2412 this._mc.port2.close(); 2413 2414 var index = channels[this._id].indexOf(this); 2415 2416 channels[this._id].splice(index, 1); 2417 }, 2418 2419 // EventTarget API 2420 get onmessage() { 2421 return this._mc.port1.onmessage; 2422 }, 2423 2424 set onmessage(value) { 2425 this._mc.port1.onmessage = value; 2426 }, 2427 2428 addEventListener: function () 2429 /*type, listener , useCapture*/ 2430 { 2431 return this._mc.port1.addEventListener.apply(this._mc.port1, arguments); 2432 }, 2433 removeEventListener: function () 2434 /*type, listener , useCapture*/ 2435 { 2436 return this._mc.port1.removeEventListener.apply(this._mc.port1, arguments); 2437 }, 2438 dispatchEvent: function () 2439 /*event*/ 2440 { 2441 return this._mc.port1.dispatchEvent.apply(this._mc.port1, arguments); 2442 } 2443 }; 2444 global.BroadcastChannel = global.BroadcastChannel || BroadcastChannel; 2445})(self); 2446 2447/***/ }), 2448
vendor: 49,440 bytes, lines 2449-4313
2449/***/ "./node_modules/buffer/index.js": 2450/*!**************************************!*\ 2451 !*** ./node_modules/buffer/index.js ***! 2452 \**************************************/ 2453/*! no static exports found */ 2454/***/ (function(module, exports, __webpack_require__) { 2455 2456"use strict"; 2457/* WEBPACK VAR INJECTION */(function(global) {/*! 2458 * The buffer module from node.js, for the browser. 2459 * 2460 * @author Feross Aboukhadijeh <http://feross.org> 2461 * @license MIT 2462 */ 2463 2464/* eslint-disable no-proto */ 2465 2466 2467var base64 = __webpack_require__(/*! base64-js */ "./node_modules/base64-js/index.js"); 2468 2469var ieee754 = __webpack_require__(/*! ieee754 */ "./node_modules/ieee754/index.js"); 2470 2471var isArray = __webpack_require__(/*! isarray */ "./node_modules/isarray/index.js"); 2472 2473exports.Buffer = Buffer; 2474exports.SlowBuffer = SlowBuffer; 2475exports.INSPECT_MAX_BYTES = 50; 2476/** 2477 * If `Buffer.TYPED_ARRAY_SUPPORT`: 2478 * === true Use Uint8Array implementation (fastest) 2479 * === false Use Object implementation (most compatible, even IE6) 2480 * 2481 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, 2482 * Opera 11.6+, iOS 4.2+. 2483 * 2484 * Due to various browser bugs, sometimes the Object implementation will be used even 2485 * when the browser supports typed arrays. 2486 * 2487 * Note: 2488 * 2489 * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances, 2490 * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438. 2491 * 2492 * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function. 2493 * 2494 * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of 2495 * incorrect length in some situations. 2496 2497 * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they 2498 * get the Object implementation, which is slower but behaves correctly. 2499 */ 2500 2501Buffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined ? global.TYPED_ARRAY_SUPPORT : typedArraySupport(); 2502/* 2503 * Export kMaxLength after typed array support is determined. 2504 */ 2505 2506exports.kMaxLength = kMaxLength(); 2507 2508function typedArraySupport() { 2509 try { 2510 var arr = new Uint8Array(1); 2511 arr.__proto__ = { 2512 __proto__: Uint8Array.prototype, 2513 foo: function () { 2514 return 42; 2515 } 2516 }; 2517 return arr.foo() === 42 && // typed array instances can be augmented 2518 typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray` 2519 arr.subarray(1, 1).byteLength === 0; // ie10 has broken `subarray` 2520 } catch (e) { 2521 return false; 2522 } 2523} 2524 2525function kMaxLength() { 2526 return Buffer.TYPED_ARRAY_SUPPORT ? 0x7fffffff : 0x3fffffff; 2527} 2528 2529function createBuffer(that, length) { 2530 if (kMaxLength() < length) { 2531 throw new RangeError('Invalid typed array length'); 2532 } 2533 2534 if (Buffer.TYPED_ARRAY_SUPPORT) { 2535 // Return an augmented `Uint8Array` instance, for best performance 2536 that = new Uint8Array(length); 2537 that.__proto__ = Buffer.prototype; 2538 } else { 2539 // Fallback: Return an object instance of the Buffer class 2540 if (that === null) { 2541 that = new Buffer(length); 2542 } 2543 2544 that.length = length; 2545 } 2546 2547 return that; 2548} 2549/** 2550 * The Buffer constructor returns instances of `Uint8Array` that have their 2551 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of 2552 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods 2553 * and the `Uint8Array` methods. Square bracket notation works as expected -- it 2554 * returns a single octet. 2555 * 2556 * The `Uint8Array` prototype remains unmodified. 2557 */ 2558 2559 2560function Buffer(arg, encodingOrOffset, length) { 2561 if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) { 2562 return new Buffer(arg, encodingOrOffset, length); 2563 } // Common case. 2564 2565 2566 if (typeof arg === 'number') { 2567 if (typeof encodingOrOffset === 'string') { 2568 throw new Error('If encoding is specified then the first argument must be a string'); 2569 } 2570 2571 return allocUnsafe(this, arg); 2572 } 2573 2574 return from(this, arg, encodingOrOffset, length); 2575} 2576 2577Buffer.poolSize = 8192; // not used by this implementation 2578// TODO: Legacy, not needed anymore. Remove in next major version. 2579 2580Buffer._augment = function (arr) { 2581 arr.__proto__ = Buffer.prototype; 2582 return arr; 2583}; 2584 2585function from(that, value, encodingOrOffset, length) { 2586 if (typeof value === 'number') { 2587 throw new TypeError('"value" argument must not be a number'); 2588 } 2589 2590 if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) { 2591 return fromArrayBuffer(that, value, encodingOrOffset, length); 2592 } 2593 2594 if (typeof value === 'string') { 2595 return fromString(that, value, encodingOrOffset); 2596 } 2597 2598 return fromObject(that, value); 2599} 2600/** 2601 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError 2602 * if value is a number. 2603 * Buffer.from(str[, encoding]) 2604 * Buffer.from(array) 2605 * Buffer.from(buffer) 2606 * Buffer.from(arrayBuffer[, byteOffset[, length]]) 2607 **/ 2608 2609 2610Buffer.from = function (value, encodingOrOffset, length) { 2611 return from(null, value, encodingOrOffset, length); 2612}; 2613 2614if (Buffer.TYPED_ARRAY_SUPPORT) { 2615 Buffer.prototype.__proto__ = Uint8Array.prototype; 2616 Buffer.__proto__ = Uint8Array; 2617 2618 if (typeof Symbol !== 'undefined' && Symbol.species && Buffer[Symbol.species] === Buffer) { 2619 // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97 2620 Object.defineProperty(Buffer, Symbol.species, { 2621 value: null, 2622 configurable: true 2623 }); 2624 } 2625} 2626 2627function assertSize(size) { 2628 if (typeof size !== 'number') { 2629 throw new TypeError('"size" argument must be a number'); 2630 } else if (size < 0) { 2631 throw new RangeError('"size" argument must not be negative'); 2632 } 2633} 2634 2635function alloc(that, size, fill, encoding) { 2636 assertSize(size); 2637 2638 if (size <= 0) { 2639 return createBuffer(that, size); 2640 } 2641 2642 if (fill !== undefined) { 2643 // Only pay attention to encoding if it's a string. This 2644 // prevents accidentally sending in a number that would 2645 // be interpretted as a start offset. 2646 return typeof encoding === 'string' ? createBuffer(that, size).fill(fill, encoding) : createBuffer(that, size).fill(fill); 2647 } 2648 2649 return createBuffer(that, size); 2650} 2651/** 2652 * Creates a new filled Buffer instance. 2653 * alloc(size[, fill[, encoding]]) 2654 **/ 2655 2656 2657Buffer.alloc = function (size, fill, encoding) { 2658 return alloc(null, size, fill, encoding); 2659}; 2660 2661function allocUnsafe(that, size) { 2662 assertSize(size); 2663 that = createBuffer(that, size < 0 ? 0 : checked(size) | 0); 2664 2665 if (!Buffer.TYPED_ARRAY_SUPPORT) { 2666 for (var i = 0; i < size; ++i) { 2667 that[i] = 0; 2668 } 2669 } 2670 2671 return that; 2672} 2673/** 2674 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. 2675 * */ 2676 2677 2678Buffer.allocUnsafe = function (size) { 2679 return allocUnsafe(null, size); 2680}; 2681/** 2682 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. 2683 */ 2684 2685 2686Buffer.allocUnsafeSlow = function (size) { 2687 return allocUnsafe(null, size); 2688}; 2689 2690function fromString(that, string, encoding) { 2691 if (typeof encoding !== 'string' || encoding === '') { 2692 encoding = 'utf8'; 2693 } 2694 2695 if (!Buffer.isEncoding(encoding)) { 2696 throw new TypeError('"encoding" must be a valid string encoding'); 2697 } 2698 2699 var length = byteLength(string, encoding) | 0; 2700 that = createBuffer(that, length); 2701 var actual = that.write(string, encoding); 2702 2703 if (actual !== length) { 2704 // Writing a hex string, for example, that contains invalid characters will 2705 // cause everything after the first invalid character to be ignored. (e.g. 2706 // 'abxxcd' will be treated as 'ab') 2707 that = that.slice(0, actual); 2708 } 2709 2710 return that; 2711} 2712 2713function fromArrayLike(that, array) { 2714 var length = array.length < 0 ? 0 : checked(array.length) | 0; 2715 that = createBuffer(that, length); 2716 2717 for (var i = 0; i < length; i += 1) { 2718 that[i] = array[i] & 255; 2719 } 2720 2721 return that; 2722} 2723 2724function fromArrayBuffer(that, array, byteOffset, length) { 2725 array.byteLength; // this throws if `array` is not a valid ArrayBuffer 2726 2727 if (byteOffset < 0 || array.byteLength < byteOffset) { 2728 throw new RangeError('\'offset\' is out of bounds'); 2729 } 2730 2731 if (array.byteLength < byteOffset + (length || 0)) { 2732 throw new RangeError('\'length\' is out of bounds'); 2733 } 2734 2735 if (byteOffset === undefined && length === undefined) { 2736 array = new Uint8Array(array); 2737 } else if (length === undefined) { 2738 array = new Uint8Array(array, byteOffset); 2739 } else { 2740 array = new Uint8Array(array, byteOffset, length); 2741 } 2742 2743 if (Buffer.TYPED_ARRAY_SUPPORT) { 2744 // Return an augmented `Uint8Array` instance, for best performance 2745 that = array; 2746 that.__proto__ = Buffer.prototype; 2747 } else { 2748 // Fallback: Return an object instance of the Buffer class 2749 that = fromArrayLike(that, array); 2750 } 2751 2752 return that; 2753} 2754 2755function fromObject(that, obj) { 2756 if (Buffer.isBuffer(obj)) { 2757 var len = checked(obj.length) | 0; 2758 that = createBuffer(that, len); 2759 2760 if (that.length === 0) { 2761 return that; 2762 } 2763 2764 obj.copy(that, 0, 0, len); 2765 return that; 2766 } 2767 2768 if (obj) { 2769 if (typeof ArrayBuffer !== 'undefined' && obj.buffer instanceof ArrayBuffer || 'length' in obj) { 2770 if (typeof obj.length !== 'number' || isnan(obj.length)) { 2771 return createBuffer(that, 0); 2772 } 2773 2774 return fromArrayLike(that, obj); 2775 } 2776 2777 if (obj.type === 'Buffer' && isArray(obj.data)) { 2778 return fromArrayLike(that, obj.data); 2779 } 2780 } 2781 2782 throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.'); 2783} 2784 2785function checked(length) { 2786 // Note: cannot use `length < kMaxLength()` here because that fails when 2787 // length is NaN (which is otherwise coerced to zero.) 2788 if (length >= kMaxLength()) { 2789 throw new RangeError('Attempt to allocate Buffer larger than maximum ' + 'size: 0x' + kMaxLength().toString(16) + ' bytes'); 2790 } 2791 2792 return length | 0; 2793} 2794 2795function SlowBuffer(length) { 2796 if (+length != length) { 2797 // eslint-disable-line eqeqeq 2798 length = 0; 2799 } 2800 2801 return Buffer.alloc(+length); 2802} 2803 2804Buffer.isBuffer = function isBuffer(b) { 2805 return !!(b != null && b._isBuffer); 2806}; 2807 2808Buffer.compare = function compare(a, b) { 2809 if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { 2810 throw new TypeError('Arguments must be Buffers'); 2811 } 2812 2813 if (a === b) return 0; 2814 var x = a.length; 2815 var y = b.length; 2816 2817 for (var i = 0, len = Math.min(x, y); i < len; ++i) { 2818 if (a[i] !== b[i]) { 2819 x = a[i]; 2820 y = b[i]; 2821 break; 2822 } 2823 } 2824 2825 if (x < y) return -1; 2826 if (y < x) return 1; 2827 return 0; 2828}; 2829 2830Buffer.isEncoding = function isEncoding(encoding) { 2831 switch (String(encoding).toLowerCase()) { 2832 case 'hex': 2833 case 'utf8': 2834 case 'utf-8': 2835 case 'ascii': 2836 case 'latin1': 2837 case 'binary': 2838 case 'base64': 2839 case 'ucs2': 2840 case 'ucs-2': 2841 case 'utf16le': 2842 case 'utf-16le': 2843 return true; 2844 2845 default: 2846 return false; 2847 } 2848}; 2849 2850Buffer.concat = function concat(list, length) { 2851 if (!isArray(list)) { 2852 throw new TypeError('"list" argument must be an Array of Buffers'); 2853 } 2854 2855 if (list.length === 0) { 2856 return Buffer.alloc(0); 2857 } 2858 2859 var i; 2860 2861 if (length === undefined) { 2862 length = 0; 2863 2864 for (i = 0; i < list.length; ++i) { 2865 length += list[i].length; 2866 } 2867 } 2868 2869 var buffer = Buffer.allocUnsafe(length); 2870 var pos = 0; 2871 2872 for (i = 0; i < list.length; ++i) { 2873 var buf = list[i]; 2874 2875 if (!Buffer.isBuffer(buf)) { 2876 throw new TypeError('"list" argument must be an Array of Buffers'); 2877 } 2878 2879 buf.copy(buffer, pos); 2880 pos += buf.length; 2881 } 2882 2883 return buffer; 2884}; 2885 2886function byteLength(string, encoding) { 2887 if (Buffer.isBuffer(string)) { 2888 return string.length; 2889 } 2890 2891 if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) { 2892 return string.byteLength; 2893 } 2894 2895 if (typeof string !== 'string') { 2896 string = '' + string; 2897 } 2898 2899 var len = string.length; 2900 if (len === 0) return 0; // Use a for loop to avoid recursion 2901 2902 var loweredCase = false; 2903 2904 for (;;) { 2905 switch (encoding) { 2906 case 'ascii': 2907 case 'latin1': 2908 case 'binary': 2909 return len; 2910 2911 case 'utf8': 2912 case 'utf-8': 2913 case undefined: 2914 return utf8ToBytes(string).length; 2915 2916 case 'ucs2': 2917 case 'ucs-2': 2918 case 'utf16le': 2919 case 'utf-16le': 2920 return len * 2; 2921 2922 case 'hex': 2923 return len >>> 1; 2924 2925 case 'base64': 2926 return base64ToBytes(string).length; 2927 2928 default: 2929 if (loweredCase) return utf8ToBytes(string).length; // assume utf8 2930 2931 encoding = ('' + encoding).toLowerCase(); 2932 loweredCase = true; 2933 } 2934 } 2935} 2936 2937Buffer.byteLength = byteLength; 2938 2939function slowToString(encoding, start, end) { 2940 var loweredCase = false; // No need to verify that "this.length <= MAX_UINT32" since it's a read-only 2941 // property of a typed array. 2942 // This behaves neither like String nor Uint8Array in that we set start/end 2943 // to their upper/lower bounds if the value passed is out of range. 2944 // undefined is handled specially as per ECMA-262 6th Edition, 2945 // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. 2946 2947 if (start === undefined || start < 0) { 2948 start = 0; 2949 } // Return early if start > this.length. Done here to prevent potential uint32 2950 // coercion fail below. 2951 2952 2953 if (start > this.length) { 2954 return ''; 2955 } 2956 2957 if (end === undefined || end > this.length) { 2958 end = this.length; 2959 } 2960 2961 if (end <= 0) { 2962 return ''; 2963 } // Force coersion to uint32. This will also coerce falsey/NaN values to 0. 2964 2965 2966 end >>>= 0; 2967 start >>>= 0; 2968 2969 if (end <= start) { 2970 return ''; 2971 } 2972 2973 if (!encoding) encoding = 'utf8'; 2974 2975 while (true) { 2976 switch (encoding) { 2977 case 'hex': 2978 return hexSlice(this, start, end); 2979 2980 case 'utf8': 2981 case 'utf-8': 2982 return utf8Slice(this, start, end); 2983 2984 case 'ascii': 2985 return asciiSlice(this, start, end); 2986 2987 case 'latin1': 2988 case 'binary': 2989 return latin1Slice(this, start, end); 2990 2991 case 'base64': 2992 return base64Slice(this, start, end); 2993 2994 case 'ucs2': 2995 case 'ucs-2': 2996 case 'utf16le': 2997 case 'utf-16le': 2998 return utf16leSlice(this, start, end); 2999 3000 default: 3001 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding); 3002 encoding = (encoding + '').toLowerCase(); 3003 loweredCase = true; 3004 } 3005 } 3006} // The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect 3007// Buffer instances. 3008 3009 3010Buffer.prototype._isBuffer = true; 3011 3012function swap(b, n, m) { 3013 var i = b[n]; 3014 b[n] = b[m]; 3015 b[m] = i; 3016} 3017 3018Buffer.prototype.swap16 = function swap16() { 3019 var len = this.length; 3020 3021 if (len % 2 !== 0) { 3022 throw new RangeError('Buffer size must be a multiple of 16-bits'); 3023 } 3024 3025 for (var i = 0; i < len; i += 2) { 3026 swap(this, i, i + 1); 3027 } 3028 3029 return this; 3030}; 3031 3032Buffer.prototype.swap32 = function swap32() { 3033 var len = this.length; 3034 3035 if (len % 4 !== 0) { 3036 throw new RangeError('Buffer size must be a multiple of 32-bits'); 3037 } 3038 3039 for (var i = 0; i < len; i += 4) { 3040 swap(this, i, i + 3); 3041 swap(this, i + 1, i + 2); 3042 } 3043 3044 return this; 3045}; 3046 3047Buffer.prototype.swap64 = function swap64() { 3048 var len = this.length; 3049 3050 if (len % 8 !== 0) { 3051 throw new RangeError('Buffer size must be a multiple of 64-bits'); 3052 } 3053 3054 for (var i = 0; i < len; i += 8) { 3055 swap(this, i, i + 7); 3056 swap(this, i + 1, i + 6); 3057 swap(this, i + 2, i + 5); 3058 swap(this, i + 3, i + 4); 3059 } 3060 3061 return this; 3062}; 3063 3064Buffer.prototype.toString = function toString() { 3065 var length = this.length | 0; 3066 if (length === 0) return ''; 3067 if (arguments.length === 0) return utf8Slice(this, 0, length); 3068 return slowToString.apply(this, arguments); 3069}; 3070 3071Buffer.prototype.equals = function equals(b) { 3072 if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer'); 3073 if (this === b) return true; 3074 return Buffer.compare(this, b) === 0; 3075}; 3076 3077Buffer.prototype.inspect = function inspect() { 3078 var str = ''; 3079 var max = exports.INSPECT_MAX_BYTES; 3080 3081 if (this.length > 0) { 3082 str = this.toString('hex', 0, max).match(/.{2}/g).join(' '); 3083 if (this.length > max) str += ' ... '; 3084 } 3085 3086 return '<Buffer ' + str + '>'; 3087}; 3088 3089Buffer.prototype.compare = function compare(target, start, end, thisStart, thisEnd) { 3090 if (!Buffer.isBuffer(target)) { 3091 throw new TypeError('Argument must be a Buffer'); 3092 } 3093 3094 if (start === undefined) { 3095 start = 0; 3096 } 3097 3098 if (end === undefined) { 3099 end = target ? target.length : 0; 3100 } 3101 3102 if (thisStart === undefined) { 3103 thisStart = 0; 3104 } 3105 3106 if (thisEnd === undefined) { 3107 thisEnd = this.length; 3108 } 3109 3110 if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { 3111 throw new RangeError('out of range index'); 3112 } 3113 3114 if (thisStart >= thisEnd && start >= end) { 3115 return 0; 3116 } 3117 3118 if (thisStart >= thisEnd) { 3119 return -1; 3120 } 3121 3122 if (start >= end) { 3123 return 1; 3124 } 3125 3126 start >>>= 0; 3127 end >>>= 0; 3128 thisStart >>>= 0; 3129 thisEnd >>>= 0; 3130 if (this === target) return 0; 3131 var x = thisEnd - thisStart; 3132 var y = end - start; 3133 var len = Math.min(x, y); 3134 var thisCopy = this.slice(thisStart, thisEnd); 3135 var targetCopy = target.slice(start, end); 3136 3137 for (var i = 0; i < len; ++i) { 3138 if (thisCopy[i] !== targetCopy[i]) { 3139 x = thisCopy[i]; 3140 y = targetCopy[i]; 3141 break; 3142 } 3143 } 3144 3145 if (x < y) return -1; 3146 if (y < x) return 1; 3147 return 0; 3148}; // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, 3149// OR the last index of `val` in `buffer` at offset <= `byteOffset`. 3150// 3151// Arguments: 3152// - buffer - a Buffer to search 3153// - val - a string, Buffer, or number 3154// - byteOffset - an index into `buffer`; will be clamped to an int32 3155// - encoding - an optional encoding, relevant is val is a string 3156// - dir - true for indexOf, false for lastIndexOf 3157 3158 3159function bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) { 3160 // Empty buffer means no match 3161 if (buffer.length === 0) return -1; // Normalize byteOffset 3162 3163 if (typeof byteOffset === 'string') { 3164 encoding = byteOffset; 3165 byteOffset = 0; 3166 } else if (byteOffset > 0x7fffffff) { 3167 byteOffset = 0x7fffffff; 3168 } else if (byteOffset < -0x80000000) { 3169 byteOffset = -0x80000000; 3170 } 3171 3172 byteOffset = +byteOffset; // Coerce to Number. 3173 3174 if (isNaN(byteOffset)) { 3175 // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer 3176 byteOffset = dir ? 0 : buffer.length - 1; 3177 } // Normalize byteOffset: negative offsets start from the end of the buffer 3178 3179 3180 if (byteOffset < 0) byteOffset = buffer.length + byteOffset; 3181 3182 if (byteOffset >= buffer.length) { 3183 if (dir) return -1;else byteOffset = buffer.length - 1; 3184 } else if (byteOffset < 0) { 3185 if (dir) byteOffset = 0;else return -1; 3186 } // Normalize val 3187 3188 3189 if (typeof val === 'string') { 3190 val = Buffer.from(val, encoding); 3191 } // Finally, search either indexOf (if dir is true) or lastIndexOf 3192 3193 3194 if (Buffer.isBuffer(val)) { 3195 // Special case: looking for empty string/buffer always fails 3196 if (val.length === 0) { 3197 return -1; 3198 } 3199 3200 return arrayIndexOf(buffer, val, byteOffset, encoding, dir); 3201 } else if (typeof val === 'number') { 3202 val = val & 0xFF; // Search for a byte value [0-255] 3203 3204 if (Buffer.TYPED_ARRAY_SUPPORT && typeof Uint8Array.prototype.indexOf === 'function') { 3205 if (dir) { 3206 return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset); 3207 } else { 3208 return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset); 3209 } 3210 } 3211 3212 return arrayIndexOf(buffer, [val], byteOffset, encoding, dir); 3213 } 3214 3215 throw new TypeError('val must be string, number or Buffer'); 3216} 3217 3218function arrayIndexOf(arr, val, byteOffset, encoding, dir) { 3219 var indexSize = 1; 3220 var arrLength = arr.length; 3221 var valLength = val.length; 3222 3223 if (encoding !== undefined) { 3224 encoding = String(encoding).toLowerCase(); 3225 3226 if (encoding === 'ucs2' || encoding === 'ucs-2' || encoding === 'utf16le' || encoding === 'utf-16le') { 3227 if (arr.length < 2 || val.length < 2) { 3228 return -1; 3229 } 3230 3231 indexSize = 2; 3232 arrLength /= 2; 3233 valLength /= 2; 3234 byteOffset /= 2; 3235 } 3236 } 3237 3238 function read(buf, i) { 3239 if (indexSize === 1) { 3240 return buf[i]; 3241 } else { 3242 return buf.readUInt16BE(i * indexSize); 3243 } 3244 } 3245 3246 var i; 3247 3248 if (dir) { 3249 var foundIndex = -1; 3250 3251 for (i = byteOffset; i < arrLength; i++) { 3252 if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { 3253 if (foundIndex === -1) foundIndex = i; 3254 if (i - foundIndex + 1 === valLength) return foundIndex * indexSize; 3255 } else { 3256 if (foundIndex !== -1) i -= i - foundIndex; 3257 foundIndex = -1; 3258 } 3259 } 3260 } else { 3261 if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength; 3262 3263 for (i = byteOffset; i >= 0; i--) { 3264 var found = true; 3265 3266 for (var j = 0; j < valLength; j++) { 3267 if (read(arr, i + j) !== read(val, j)) { 3268 found = false; 3269 break; 3270 } 3271 } 3272 3273 if (found) return i; 3274 } 3275 } 3276 3277 return -1; 3278} 3279 3280Buffer.prototype.includes = function includes(val, byteOffset, encoding) { 3281 return this.indexOf(val, byteOffset, encoding) !== -1; 3282}; 3283 3284Buffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) { 3285 return bidirectionalIndexOf(this, val, byteOffset, encoding, true); 3286}; 3287 3288Buffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) { 3289 return bidirectionalIndexOf(this, val, byteOffset, encoding, false); 3290}; 3291 3292function hexWrite(buf, string, offset, length) { 3293 offset = Number(offset) || 0; 3294 var remaining = buf.length - offset; 3295 3296 if (!length) { 3297 length = remaining; 3298 } else { 3299 length = Number(length); 3300 3301 if (length > remaining) { 3302 length = remaining; 3303 } 3304 } // must be an even number of digits 3305 3306 3307 var strLen = string.length; 3308 if (strLen % 2 !== 0) throw new TypeError('Invalid hex string'); 3309 3310 if (length > strLen / 2) { 3311 length = strLen / 2; 3312 } 3313 3314 for (var i = 0; i < length; ++i) { 3315 var parsed = parseInt(string.substr(i * 2, 2), 16); 3316 if (isNaN(parsed)) return i; 3317 buf[offset + i] = parsed; 3318 } 3319 3320 return i; 3321} 3322 3323function utf8Write(buf, string, offset, length) { 3324 return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length); 3325} 3326 3327function asciiWrite(buf, string, offset, length) { 3328 return blitBuffer(asciiToBytes(string), buf, offset, length); 3329} 3330 3331function latin1Write(buf, string, offset, length) { 3332 return asciiWrite(buf, string, offset, length); 3333} 3334 3335function base64Write(buf, string, offset, length) { 3336 return blitBuffer(base64ToBytes(string), buf, offset, length); 3337} 3338 3339function ucs2Write(buf, string, offset, length) { 3340 return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length); 3341} 3342 3343Buffer.prototype.write = function write(string, offset, length, encoding) { 3344 // Buffer#write(string) 3345 if (offset === undefined) { 3346 encoding = 'utf8'; 3347 length = this.length; 3348 offset = 0; // Buffer#write(string, encoding) 3349 } else if (length === undefined && typeof offset === 'string') { 3350 encoding = offset; 3351 length = this.length; 3352 offset = 0; // Buffer#write(string, offset[, length][, encoding]) 3353 } else if (isFinite(offset)) { 3354 offset = offset | 0; 3355 3356 if (isFinite(length)) { 3357 length = length | 0; 3358 if (encoding === undefined) encoding = 'utf8'; 3359 } else { 3360 encoding = length; 3361 length = undefined; 3362 } // legacy write(string, encoding, offset, length) - remove in v0.13 3363 3364 } else { 3365 throw new Error('Buffer.write(string, encoding, offset[, length]) is no longer supported'); 3366 } 3367 3368 var remaining = this.length - offset; 3369 if (length === undefined || length > remaining) length = remaining; 3370 3371 if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) { 3372 throw new RangeError('Attempt to write outside buffer bounds'); 3373 } 3374 3375 if (!encoding) encoding = 'utf8'; 3376 var loweredCase = false; 3377 3378 for (;;) { 3379 switch (encoding) { 3380 case 'hex': 3381 return hexWrite(this, string, offset, length); 3382 3383 case 'utf8': 3384 case 'utf-8': 3385 return utf8Write(this, string, offset, length); 3386 3387 case 'ascii': 3388 return asciiWrite(this, string, offset, length); 3389 3390 case 'latin1': 3391 case 'binary': 3392 return latin1Write(this, string, offset, length); 3393 3394 case 'base64': 3395 // Warning: maxLength not taken into account in base64Write 3396 return base64Write(this, string, offset, length); 3397 3398 case 'ucs2': 3399 case 'ucs-2': 3400 case 'utf16le': 3401 case 'utf-16le': 3402 return ucs2Write(this, string, offset, length); 3403 3404 default: 3405 if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding); 3406 encoding = ('' + encoding).toLowerCase(); 3407 loweredCase = true; 3408 } 3409 } 3410}; 3411 3412Buffer.prototype.toJSON = function toJSON() { 3413 return { 3414 type: 'Buffer', 3415 data: Array.prototype.slice.call(this._arr || this, 0) 3416 }; 3417}; 3418 3419function base64Slice(buf, start, end) { 3420 if (start === 0 && end === buf.length) { 3421 return base64.fromByteArray(buf); 3422 } else { 3423 return base64.fromByteArray(buf.slice(start, end)); 3424 } 3425} 3426 3427function utf8Slice(buf, start, end) { 3428 end = Math.min(buf.length, end); 3429 var res = []; 3430 var i = start; 3431 3432 while (i < end) { 3433 var firstByte = buf[i]; 3434 var codePoint = null; 3435 var bytesPerSequence = firstByte > 0xEF ? 4 : firstByte > 0xDF ? 3 : firstByte > 0xBF ? 2 : 1; 3436 3437 if (i + bytesPerSequence <= end) { 3438 var secondByte, thirdByte, fourthByte, tempCodePoint; 3439 3440 switch (bytesPerSequence) { 3441 case 1: 3442 if (firstByte < 0x80) { 3443 codePoint = firstByte; 3444 } 3445 3446 break; 3447 3448 case 2: 3449 secondByte = buf[i + 1]; 3450 3451 if ((secondByte & 0xC0) === 0x80) { 3452 tempCodePoint = (firstByte & 0x1F) << 0x6 | secondByte & 0x3F; 3453 3454 if (tempCodePoint > 0x7F) { 3455 codePoint = tempCodePoint; 3456 } 3457 } 3458 3459 break; 3460 3461 case 3: 3462 secondByte = buf[i + 1]; 3463 thirdByte = buf[i + 2]; 3464 3465 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { 3466 tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | thirdByte & 0x3F; 3467 3468 if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { 3469 codePoint = tempCodePoint; 3470 } 3471 } 3472 3473 break; 3474 3475 case 4: 3476 secondByte = buf[i + 1]; 3477 thirdByte = buf[i + 2]; 3478 fourthByte = buf[i + 3]; 3479 3480 if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { 3481 tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | fourthByte & 0x3F; 3482 3483 if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { 3484 codePoint = tempCodePoint; 3485 } 3486 } 3487 3488 } 3489 } 3490 3491 if (codePoint === null) { 3492 // we did not generate a valid codePoint so insert a 3493 // replacement char (U+FFFD) and advance only 1 byte 3494 codePoint = 0xFFFD; 3495 bytesPerSequence = 1; 3496 } else if (codePoint > 0xFFFF) { 3497 // encode to utf16 (surrogate pair dance) 3498 codePoint -= 0x10000; 3499 res.push(codePoint >>> 10 & 0x3FF | 0xD800); 3500 codePoint = 0xDC00 | codePoint & 0x3FF; 3501 } 3502 3503 res.push(codePoint); 3504 i += bytesPerSequence; 3505 } 3506 3507 return decodeCodePointsArray(res); 3508} // Based on http://stackoverflow.com/a/22747272/680742, the browser with 3509// the lowest limit is Chrome, with 0x10000 args. 3510// We go 1 magnitude less, for safety 3511 3512 3513var MAX_ARGUMENTS_LENGTH = 0x1000; 3514 3515function decodeCodePointsArray(codePoints) { 3516 var len = codePoints.length; 3517 3518 if (len <= MAX_ARGUMENTS_LENGTH) { 3519 return String.fromCharCode.apply(String, codePoints); // avoid extra slice() 3520 } // Decode in chunks to avoid "call stack size exceeded". 3521 3522 3523 var res = ''; 3524 var i = 0; 3525 3526 while (i < len) { 3527 res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)); 3528 } 3529 3530 return res; 3531} 3532 3533function asciiSlice(buf, start, end) { 3534 var ret = ''; 3535 end = Math.min(buf.length, end); 3536 3537 for (var i = start; i < end; ++i) { 3538 ret += String.fromCharCode(buf[i] & 0x7F); 3539 } 3540 3541 return ret; 3542} 3543 3544function latin1Slice(buf, start, end) { 3545 var ret = ''; 3546 end = Math.min(buf.length, end); 3547 3548 for (var i = start; i < end; ++i) { 3549 ret += String.fromCharCode(buf[i]); 3550 } 3551 3552 return ret; 3553} 3554 3555function hexSlice(buf, start, end) { 3556 var len = buf.length; 3557 if (!start || start < 0) start = 0; 3558 if (!end || end < 0 || end > len) end = len; 3559 var out = ''; 3560 3561 for (var i = start; i < end; ++i) { 3562 out += toHex(buf[i]); 3563 } 3564 3565 return out; 3566} 3567 3568function utf16leSlice(buf, start, end) { 3569 var bytes = buf.slice(start, end); 3570 var res = ''; 3571 3572 for (var i = 0; i < bytes.length; i += 2) { 3573 res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256); 3574 } 3575 3576 return res; 3577} 3578 3579Buffer.prototype.slice = function slice(start, end) { 3580 var len = this.length; 3581 start = ~~start; 3582 end = end === undefined ? len : ~~end; 3583 3584 if (start < 0) { 3585 start += len; 3586 if (start < 0) start = 0; 3587 } else if (start > len) { 3588 start = len; 3589 } 3590 3591 if (end < 0) { 3592 end += len; 3593 if (end < 0) end = 0; 3594 } else if (end > len) { 3595 end = len; 3596 } 3597 3598 if (end < start) end = start; 3599 var newBuf; 3600 3601 if (Buffer.TYPED_ARRAY_SUPPORT) { 3602 newBuf = this.subarray(start, end); 3603 newBuf.__proto__ = Buffer.prototype; 3604 } else { 3605 var sliceLen = end - start; 3606 newBuf = new Buffer(sliceLen, undefined); 3607 3608 for (var i = 0; i < sliceLen; ++i) { 3609 newBuf[i] = this[i + start]; 3610 } 3611 } 3612 3613 return newBuf; 3614}; 3615/* 3616 * Need to make sure that buffer isn't trying to write out of bounds. 3617 */ 3618 3619 3620function checkOffset(offset, ext, length) { 3621 if (offset % 1 !== 0 || offset < 0) throw new RangeError('offset is not uint'); 3622 if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length'); 3623} 3624 3625Buffer.prototype.readUIntLE = function readUIntLE(offset, byteLength, noAssert) { 3626 offset = offset | 0; 3627 byteLength = byteLength | 0; 3628 if (!noAssert) checkOffset(offset, byteLength, this.length); 3629 var val = this[offset]; 3630 var mul = 1; 3631 var i = 0; 3632 3633 while (++i < byteLength && (mul *= 0x100)) { 3634 val += this[offset + i] * mul; 3635 } 3636 3637 return val; 3638}; 3639 3640Buffer.prototype.readUIntBE = function readUIntBE(offset, byteLength, noAssert) { 3641 offset = offset | 0; 3642 byteLength = byteLength | 0; 3643 3644 if (!noAssert) { 3645 checkOffset(offset, byteLength, this.length); 3646 } 3647 3648 var val = this[offset + --byteLength]; 3649 var mul = 1; 3650 3651 while (byteLength > 0 && (mul *= 0x100)) { 3652 val += this[offset + --byteLength] * mul; 3653 } 3654 3655 return val; 3656}; 3657 3658Buffer.prototype.readUInt8 = function readUInt8(offset, noAssert) { 3659 if (!noAssert) checkOffset(offset, 1, this.length); 3660 return this[offset]; 3661}; 3662 3663Buffer.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) { 3664 if (!noAssert) checkOffset(offset, 2, this.length); 3665 return this[offset] | this[offset + 1] << 8; 3666}; 3667 3668Buffer.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) { 3669 if (!noAssert) checkOffset(offset, 2, this.length); 3670 return this[offset] << 8 | this[offset + 1]; 3671}; 3672 3673Buffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) { 3674 if (!noAssert) checkOffset(offset, 4, this.length); 3675 return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 0x1000000; 3676}; 3677 3678Buffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) { 3679 if (!noAssert) checkOffset(offset, 4, this.length); 3680 return this[offset] * 0x1000000 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]); 3681}; 3682 3683Buffer.prototype.readIntLE = function readIntLE(offset, byteLength, noAssert) { 3684 offset = offset | 0; 3685 byteLength = byteLength | 0; 3686 if (!noAssert) checkOffset(offset, byteLength, this.length); 3687 var val = this[offset]; 3688 var mul = 1; 3689 var i = 0; 3690 3691 while (++i < byteLength && (mul *= 0x100)) { 3692 val += this[offset + i] * mul; 3693 } 3694 3695 mul *= 0x80; 3696 if (val >= mul) val -= Math.pow(2, 8 * byteLength); 3697 return val; 3698}; 3699 3700Buffer.prototype.readIntBE = function readIntBE(offset, byteLength, noAssert) { 3701 offset = offset | 0; 3702 byteLength = byteLength | 0; 3703 if (!noAssert) checkOffset(offset, byteLength, this.length); 3704 var i = byteLength; 3705 var mul = 1; 3706 var val = this[offset + --i]; 3707 3708 while (i > 0 && (mul *= 0x100)) { 3709 val += this[offset + --i] * mul; 3710 } 3711 3712 mul *= 0x80; 3713 if (val >= mul) val -= Math.pow(2, 8 * byteLength); 3714 return val; 3715}; 3716 3717Buffer.prototype.readInt8 = function readInt8(offset, noAssert) { 3718 if (!noAssert) checkOffset(offset, 1, this.length); 3719 if (!(this[offset] & 0x80)) return this[offset]; 3720 return (0xff - this[offset] + 1) * -1; 3721}; 3722 3723Buffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) { 3724 if (!noAssert) checkOffset(offset, 2, this.length); 3725 var val = this[offset] | this[offset + 1] << 8; 3726 return val & 0x8000 ? val | 0xFFFF0000 : val; 3727}; 3728 3729Buffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) { 3730 if (!noAssert) checkOffset(offset, 2, this.length); 3731 var val = this[offset + 1] | this[offset] << 8; 3732 return val & 0x8000 ? val | 0xFFFF0000 : val; 3733}; 3734 3735Buffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) { 3736 if (!noAssert) checkOffset(offset, 4, this.length); 3737 return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24; 3738}; 3739 3740Buffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) { 3741 if (!noAssert) checkOffset(offset, 4, this.length); 3742 return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]; 3743}; 3744 3745Buffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) { 3746 if (!noAssert) checkOffset(offset, 4, this.length); 3747 return ieee754.read(this, offset, true, 23, 4); 3748}; 3749 3750Buffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) { 3751 if (!noAssert) checkOffset(offset, 4, this.length); 3752 return ieee754.read(this, offset, false, 23, 4); 3753}; 3754 3755Buffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) { 3756 if (!noAssert) checkOffset(offset, 8, this.length); 3757 return ieee754.read(this, offset, true, 52, 8); 3758}; 3759 3760Buffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) { 3761 if (!noAssert) checkOffset(offset, 8, this.length); 3762 return ieee754.read(this, offset, false, 52, 8); 3763}; 3764 3765function checkInt(buf, value, offset, ext, max, min) { 3766 if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance'); 3767 if (value > max || value < min) throw new RangeError('"value" argument is out of bounds'); 3768 if (offset + ext > buf.length) throw new RangeError('Index out of range'); 3769} 3770 3771Buffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength, noAssert) { 3772 value = +value; 3773 offset = offset | 0; 3774 byteLength = byteLength | 0; 3775 3776 if (!noAssert) { 3777 var maxBytes = Math.pow(2, 8 * byteLength) - 1; 3778 checkInt(this, value, offset, byteLength, maxBytes, 0); 3779 } 3780 3781 var mul = 1; 3782 var i = 0; 3783 this[offset] = value & 0xFF; 3784 3785 while (++i < byteLength && (mul *= 0x100)) { 3786 this[offset + i] = value / mul & 0xFF; 3787 } 3788 3789 return offset + byteLength; 3790}; 3791 3792Buffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength, noAssert) { 3793 value = +value; 3794 offset = offset | 0; 3795 byteLength = byteLength | 0; 3796 3797 if (!noAssert) { 3798 var maxBytes = Math.pow(2, 8 * byteLength) - 1; 3799 checkInt(this, value, offset, byteLength, maxBytes, 0); 3800 } 3801 3802 var i = byteLength - 1; 3803 var mul = 1; 3804 this[offset + i] = value & 0xFF; 3805 3806 while (--i >= 0 && (mul *= 0x100)) { 3807 this[offset + i] = value / mul & 0xFF; 3808 } 3809 3810 return offset + byteLength; 3811}; 3812 3813Buffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) { 3814 value = +value; 3815 offset = offset | 0; 3816 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0); 3817 if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value); 3818 this[offset] = value & 0xff; 3819 return offset + 1; 3820}; 3821 3822function objectWriteUInt16(buf, value, offset, littleEndian) { 3823 if (value < 0) value = 0xffff + value + 1; 3824 3825 for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) { 3826 buf[offset + i] = (value & 0xff << 8 * (littleEndian ? i : 1 - i)) >>> (littleEndian ? i : 1 - i) * 8; 3827 } 3828} 3829 3830Buffer.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) { 3831 value = +value; 3832 offset = offset | 0; 3833 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0); 3834 3835 if (Buffer.TYPED_ARRAY_SUPPORT) { 3836 this[offset] = value & 0xff; 3837 this[offset + 1] = value >>> 8; 3838 } else { 3839 objectWriteUInt16(this, value, offset, true); 3840 } 3841 3842 return offset + 2; 3843}; 3844 3845Buffer.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) { 3846 value = +value; 3847 offset = offset | 0; 3848 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0); 3849 3850 if (Buffer.TYPED_ARRAY_SUPPORT) { 3851 this[offset] = value >>> 8; 3852 this[offset + 1] = value & 0xff; 3853 } else { 3854 objectWriteUInt16(this, value, offset, false); 3855 } 3856 3857 return offset + 2; 3858}; 3859 3860function objectWriteUInt32(buf, value, offset, littleEndian) { 3861 if (value < 0) value = 0xffffffff + value + 1; 3862 3863 for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) { 3864 buf[offset + i] = value >>> (littleEndian ? i : 3 - i) * 8 & 0xff; 3865 } 3866} 3867 3868Buffer.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) { 3869 value = +value; 3870 offset = offset | 0; 3871 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0); 3872 3873 if (Buffer.TYPED_ARRAY_SUPPORT) { 3874 this[offset + 3] = value >>> 24; 3875 this[offset + 2] = value >>> 16; 3876 this[offset + 1] = value >>> 8; 3877 this[offset] = value & 0xff; 3878 } else { 3879 objectWriteUInt32(this, value, offset, true); 3880 } 3881 3882 return offset + 4; 3883}; 3884 3885Buffer.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) { 3886 value = +value; 3887 offset = offset | 0; 3888 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0); 3889 3890 if (Buffer.TYPED_ARRAY_SUPPORT) { 3891 this[offset] = value >>> 24; 3892 this[offset + 1] = value >>> 16; 3893 this[offset + 2] = value >>> 8; 3894 this[offset + 3] = value & 0xff; 3895 } else { 3896 objectWriteUInt32(this, value, offset, false); 3897 } 3898 3899 return offset + 4; 3900}; 3901 3902Buffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength, noAssert) { 3903 value = +value; 3904 offset = offset | 0; 3905 3906 if (!noAssert) { 3907 var limit = Math.pow(2, 8 * byteLength - 1); 3908 checkInt(this, value, offset, byteLength, limit - 1, -limit); 3909 } 3910 3911 var i = 0; 3912 var mul = 1; 3913 var sub = 0; 3914 this[offset] = value & 0xFF; 3915 3916 while (++i < byteLength && (mul *= 0x100)) { 3917 if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { 3918 sub = 1; 3919 } 3920 3921 this[offset + i] = (value / mul >> 0) - sub & 0xFF; 3922 } 3923 3924 return offset + byteLength; 3925}; 3926 3927Buffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength, noAssert) { 3928 value = +value; 3929 offset = offset | 0; 3930 3931 if (!noAssert) { 3932 var limit = Math.pow(2, 8 * byteLength - 1); 3933 checkInt(this, value, offset, byteLength, limit - 1, -limit); 3934 } 3935 3936 var i = byteLength - 1; 3937 var mul = 1; 3938 var sub = 0; 3939 this[offset + i] = value & 0xFF; 3940 3941 while (--i >= 0 && (mul *= 0x100)) { 3942 if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { 3943 sub = 1; 3944 } 3945 3946 this[offset + i] = (value / mul >> 0) - sub & 0xFF; 3947 } 3948 3949 return offset + byteLength; 3950}; 3951 3952Buffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) { 3953 value = +value; 3954 offset = offset | 0; 3955 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80); 3956 if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value); 3957 if (value < 0) value = 0xff + value + 1; 3958 this[offset] = value & 0xff; 3959 return offset + 1; 3960}; 3961 3962Buffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) { 3963 value = +value; 3964 offset = offset | 0; 3965 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000); 3966 3967 if (Buffer.TYPED_ARRAY_SUPPORT) { 3968 this[offset] = value & 0xff; 3969 this[offset + 1] = value >>> 8; 3970 } else { 3971 objectWriteUInt16(this, value, offset, true); 3972 } 3973 3974 return offset + 2; 3975}; 3976 3977Buffer.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) { 3978 value = +value; 3979 offset = offset | 0; 3980 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000); 3981 3982 if (Buffer.TYPED_ARRAY_SUPPORT) { 3983 this[offset] = value >>> 8; 3984 this[offset + 1] = value & 0xff; 3985 } else { 3986 objectWriteUInt16(this, value, offset, false); 3987 } 3988 3989 return offset + 2; 3990}; 3991 3992Buffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) { 3993 value = +value; 3994 offset = offset | 0; 3995 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000); 3996 3997 if (Buffer.TYPED_ARRAY_SUPPORT) { 3998 this[offset] = value & 0xff; 3999 this[offset + 1] = value >>> 8; 4000 this[offset + 2] = value >>> 16; 4001 this[offset + 3] = value >>> 24; 4002 } else { 4003 objectWriteUInt32(this, value, offset, true); 4004 } 4005 4006 return offset + 4; 4007}; 4008 4009Buffer.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) { 4010 value = +value; 4011 offset = offset | 0; 4012 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000); 4013 if (value < 0) value = 0xffffffff + value + 1; 4014 4015 if (Buffer.TYPED_ARRAY_SUPPORT) { 4016 this[offset] = value >>> 24; 4017 this[offset + 1] = value >>> 16; 4018 this[offset + 2] = value >>> 8; 4019 this[offset + 3] = value & 0xff; 4020 } else { 4021 objectWriteUInt32(this, value, offset, false); 4022 } 4023 4024 return offset + 4; 4025}; 4026 4027function checkIEEE754(buf, value, offset, ext, max, min) { 4028 if (offset + ext > buf.length) throw new RangeError('Index out of range'); 4029 if (offset < 0) throw new RangeError('Index out of range'); 4030} 4031 4032function writeFloat(buf, value, offset, littleEndian, noAssert) { 4033 if (!noAssert) { 4034 checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38); 4035 } 4036 4037 ieee754.write(buf, value, offset, littleEndian, 23, 4); 4038 return offset + 4; 4039} 4040 4041Buffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) { 4042 return writeFloat(this, value, offset, true, noAssert); 4043}; 4044 4045Buffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) { 4046 return writeFloat(this, value, offset, false, noAssert); 4047}; 4048 4049function writeDouble(buf, value, offset, littleEndian, noAssert) { 4050 if (!noAssert) { 4051 checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308); 4052 } 4053 4054 ieee754.write(buf, value, offset, littleEndian, 52, 8); 4055 return offset + 8; 4056} 4057 4058Buffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) { 4059 return writeDouble(this, value, offset, true, noAssert); 4060}; 4061 4062Buffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) { 4063 return writeDouble(this, value, offset, false, noAssert); 4064}; // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) 4065 4066 4067Buffer.prototype.copy = function copy(target, targetStart, start, end) { 4068 if (!start) start = 0; 4069 if (!end && end !== 0) end = this.length; 4070 if (targetStart >= target.length) targetStart = target.length; 4071 if (!targetStart) targetStart = 0; 4072 if (end > 0 && end < start) end = start; // Copy 0 bytes; we're done 4073 4074 if (end === start) return 0; 4075 if (target.length === 0 || this.length === 0) return 0; // Fatal error conditions 4076 4077 if (targetStart < 0) { 4078 throw new RangeError('targetStart out of bounds'); 4079 } 4080 4081 if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds'); 4082 if (end < 0) throw new RangeError('sourceEnd out of bounds'); // Are we oob? 4083 4084 if (end > this.length) end = this.length; 4085 4086 if (target.length - targetStart < end - start) { 4087 end = target.length - targetStart + start; 4088 } 4089 4090 var len = end - start; 4091 var i; 4092 4093 if (this === target && start < targetStart && targetStart < end) { 4094 // descending copy from end 4095 for (i = len - 1; i >= 0; --i) { 4096 target[i + targetStart] = this[i + start]; 4097 } 4098 } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) { 4099 // ascending copy from start 4100 for (i = 0; i < len; ++i) { 4101 target[i + targetStart] = this[i + start]; 4102 } 4103 } else { 4104 Uint8Array.prototype.set.call(target, this.subarray(start, start + len), targetStart); 4105 } 4106 4107 return len; 4108}; // Usage: 4109// buffer.fill(number[, offset[, end]]) 4110// buffer.fill(buffer[, offset[, end]]) 4111// buffer.fill(string[, offset[, end]][, encoding]) 4112 4113 4114Buffer.prototype.fill = function fill(val, start, end, encoding) { 4115 // Handle string cases: 4116 if (typeof val === 'string') { 4117 if (typeof start === 'string') { 4118 encoding = start; 4119 start = 0; 4120 end = this.length; 4121 } else if (typeof end === 'string') { 4122 encoding = end; 4123 end = this.length; 4124 } 4125 4126 if (val.length === 1) { 4127 var code = val.charCodeAt(0); 4128 4129 if (code < 256) { 4130 val = code; 4131 } 4132 } 4133 4134 if (encoding !== undefined && typeof encoding !== 'string') { 4135 throw new TypeError('encoding must be a string'); 4136 } 4137 4138 if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { 4139 throw new TypeError('Unknown encoding: ' + encoding); 4140 } 4141 } else if (typeof val === 'number') { 4142 val = val & 255; 4143 } // Invalid ranges are not set to a default, so can range check early. 4144 4145 4146 if (start < 0 || this.length < start || this.length < end) { 4147 throw new RangeError('Out of range index'); 4148 } 4149 4150 if (end <= start) { 4151 return this; 4152 } 4153 4154 start = start >>> 0; 4155 end = end === undefined ? this.length : end >>> 0; 4156 if (!val) val = 0; 4157 var i; 4158 4159 if (typeof val === 'number') { 4160 for (i = start; i < end; ++i) { 4161 this[i] = val; 4162 } 4163 } else { 4164 var bytes = Buffer.isBuffer(val) ? val : utf8ToBytes(new Buffer(val, encoding).toString()); 4165 var len = bytes.length; 4166 4167 for (i = 0; i < end - start; ++i) { 4168 this[i + start] = bytes[i % len]; 4169 } 4170 } 4171 4172 return this; 4173}; // HELPER FUNCTIONS 4174// ================ 4175 4176 4177var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g; 4178 4179function base64clean(str) { 4180 // Node strips out invalid characters like \n and \t from the string, base64-js does not 4181 str = stringtrim(str).replace(INVALID_BASE64_RE, ''); // Node converts strings with length < 2 to '' 4182 4183 if (str.length < 2) return ''; // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not 4184 4185 while (str.length % 4 !== 0) { 4186 str = str + '='; 4187 } 4188 4189 return str; 4190} 4191 4192function stringtrim(str) { 4193 if (str.trim) return str.trim(); 4194 return str.replace(/^\s+|\s+$/g, ''); 4195} 4196 4197function toHex(n) { 4198 if (n < 16) return '0' + n.toString(16); 4199 return n.toString(16); 4200} 4201 4202function utf8ToBytes(string, units) { 4203 units = units || Infinity; 4204 var codePoint; 4205 var length = string.length; 4206 var leadSurrogate = null; 4207 var bytes = []; 4208 4209 for (var i = 0; i < length; ++i) { 4210 codePoint = string.charCodeAt(i); // is surrogate component 4211 4212 if (codePoint > 0xD7FF && codePoint < 0xE000) { 4213 // last char was a lead 4214 if (!leadSurrogate) { 4215 // no lead yet 4216 if (codePoint > 0xDBFF) { 4217 // unexpected trail 4218 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); 4219 continue; 4220 } else if (i + 1 === length) { 4221 // unpaired lead 4222 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); 4223 continue; 4224 } // valid lead 4225 4226 4227 leadSurrogate = codePoint; 4228 continue; 4229 } // 2 leads in a row 4230 4231 4232 if (codePoint < 0xDC00) { 4233 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); 4234 leadSurrogate = codePoint; 4235 continue; 4236 } // valid surrogate pair 4237 4238 4239 codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000; 4240 } else if (leadSurrogate) { 4241 // valid bmp char, but last char was a lead 4242 if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD); 4243 } 4244 4245 leadSurrogate = null; // encode utf8 4246 4247 if (codePoint < 0x80) { 4248 if ((units -= 1) < 0) break; 4249 bytes.push(codePoint); 4250 } else if (codePoint < 0x800) { 4251 if ((units -= 2) < 0) break; 4252 bytes.push(codePoint >> 0x6 | 0xC0, codePoint & 0x3F | 0x80); 4253 } else if (codePoint < 0x10000) { 4254 if ((units -= 3) < 0) break; 4255 bytes.push(codePoint >> 0xC | 0xE0, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80); 4256 } else if (codePoint < 0x110000) { 4257 if ((units -= 4) < 0) break; 4258 bytes.push(codePoint >> 0x12 | 0xF0, codePoint >> 0xC & 0x3F | 0x80, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80); 4259 } else { 4260 throw new Error('Invalid code point'); 4261 } 4262 } 4263 4264 return bytes; 4265} 4266 4267function asciiToBytes(str) { 4268 var byteArray = []; 4269 4270 for (var i = 0; i < str.length; ++i) { 4271 // Node's code seems to be doing this and not & 0x7F.. 4272 byteArray.push(str.charCodeAt(i) & 0xFF); 4273 } 4274 4275 return byteArray; 4276} 4277 4278function utf16leToBytes(str, units) { 4279 var c, hi, lo; 4280 var byteArray = []; 4281 4282 for (var i = 0; i < str.length; ++i) { 4283 if ((units -= 2) < 0) break; 4284 c = str.charCodeAt(i); 4285 hi = c >> 8; 4286 lo = c % 256; 4287 byteArray.push(lo); 4288 byteArray.push(hi); 4289 } 4290 4291 return byteArray; 4292} 4293 4294function base64ToBytes(str) { 4295 return base64.toByteArray(base64clean(str)); 4296} 4297 4298function blitBuffer(src, dst, offset, length) { 4299 for (var i = 0; i < length; ++i) { 4300 if (i + offset >= dst.length || i >= src.length) break; 4301 dst[i + offset] = src[i]; 4302 } 4303 4304 return i; 4305} 4306 4307function isnan(val) { 4308 return val !== val; // eslint-disable-line no-self-compare 4309} 4310/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) 4311 4312/***/ }), 4313
vendor: 2,643 bytes, lines 4314-4413
4314/***/ "./node_modules/decode-uri-component/index.js": 4315/*!****************************************************!*\ 4316 !*** ./node_modules/decode-uri-component/index.js ***! 4317 \****************************************************/ 4318/*! no static exports found */ 4319/***/ (function(module, exports, __webpack_require__) { 4320 4321"use strict"; 4322 4323 4324var token = '%[a-f0-9]{2}'; 4325var singleMatcher = new RegExp(token, 'gi'); 4326var multiMatcher = new RegExp('(' + token + ')+', 'gi'); 4327 4328function decodeComponents(components, split) { 4329 try { 4330 // Try to decode the entire string first 4331 return decodeURIComponent(components.join('')); 4332 } catch (err) {// Do nothing 4333 } 4334 4335 if (components.length === 1) { 4336 return components; 4337 } 4338 4339 split = split || 1; // Split the array in 2 parts 4340 4341 var left = components.slice(0, split); 4342 var right = components.slice(split); 4343 return Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right)); 4344} 4345 4346function decode(input) { 4347 try { 4348 return decodeURIComponent(input); 4349 } catch (err) { 4350 var tokens = input.match(singleMatcher); 4351 4352 for (var i = 1; i < tokens.length; i++) { 4353 input = decodeComponents(tokens, i).join(''); 4354 tokens = input.match(singleMatcher); 4355 } 4356 4357 return input; 4358 } 4359} 4360 4361function customDecodeURIComponent(input) { 4362 // Keep track of all the replacements and prefill the map with the `BOM` 4363 var replaceMap = { 4364 '%FE%FF': '\uFFFD\uFFFD', 4365 '%FF%FE': '\uFFFD\uFFFD' 4366 }; 4367 var match = multiMatcher.exec(input); 4368 4369 while (match) { 4370 try { 4371 // Decode as big chunks as possible 4372 replaceMap[match[0]] = decodeURIComponent(match[0]); 4373 } catch (err) { 4374 var result = decode(match[0]); 4375 4376 if (result !== match[0]) { 4377 replaceMap[match[0]] = result; 4378 } 4379 } 4380 4381 match = multiMatcher.exec(input); 4382 } // Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else 4383 4384 4385 replaceMap['%C2'] = '\uFFFD'; 4386 var entries = Object.keys(replaceMap); 4387 4388 for (var i = 0; i < entries.length; i++) { 4389 // Replace all decoded components 4390 var key = entries[i]; 4391 input = input.replace(new RegExp(key, 'g'), replaceMap[key]); 4392 } 4393 4394 return input; 4395} 4396 4397module.exports = function (encodedURI) { 4398 if (typeof encodedURI !== 'string') { 4399 throw new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`'); 4400 } 4401 4402 try { 4403 encodedURI = encodedURI.replace(/\+/g, ' '); // Try the built in decoder first 4404 4405 return decodeURIComponent(encodedURI); 4406 } catch (err) { 4407 // Fallback to a more advanced decoder 4408 return customDecodeURIComponent(encodedURI); 4409 } 4410}; 4411 4412/***/ }), 4413
vendor: 124,615 bytes, lines 4414-8542
4414/***/ "./node_modules/he/he.js": 4415/*!*******************************!*\ 4416 !*** ./node_modules/he/he.js ***! 4417 \*******************************/ 4418/*! no static exports found */ 4419/***/ (function(module, exports, __webpack_require__) { 4420 4421/* WEBPACK VAR INJECTION */(function(module, global) {var __WEBPACK_AMD_DEFINE_RESULT__;/*! https://mths.be/he v1.2.0 by @mathias | MIT license */ 4422; 4423 4424(function (root) { 4425 // Detect free variables `exports`. 4426 var freeExports = true && exports; // Detect free variable `module`. 4427 4428 var freeModule = true && module && module.exports == freeExports && module; // Detect free variable `global`, from Node.js or Browserified code, 4429 // and use it as `root`. 4430 4431 var freeGlobal = typeof global == 'object' && global; 4432 4433 if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) { 4434 root = freeGlobal; 4435 } 4436 /*--------------------------------------------------------------------------*/ 4437 // All astral symbols. 4438 4439 4440 var regexAstralSymbols = /[\uD800-\uDBFF][\uDC00-\uDFFF]/g; // All ASCII symbols (not just printable ASCII) except those listed in the 4441 // first column of the overrides table. 4442 // https://html.spec.whatwg.org/multipage/syntax.html#table-charref-overrides 4443 4444 var regexAsciiWhitelist = /[\x01-\x7F]/g; // All BMP symbols that are not ASCII newlines, printable ASCII symbols, or 4445 // code points listed in the first column of the overrides table on 4446 // https://html.spec.whatwg.org/multipage/syntax.html#table-charref-overrides. 4447 4448 var regexBmpWhitelist = /[\x01-\t\x0B\f\x0E-\x1F\x7F\x81\x8D\x8F\x90\x9D\xA0-\uFFFF]/g; 4449 var regexEncodeNonAscii = /<\u20D2|=\u20E5|>\u20D2|\u205F\u200A|\u219D\u0338|\u2202\u0338|\u2220\u20D2|\u2229\uFE00|\u222A\uFE00|\u223C\u20D2|\u223D\u0331|\u223E\u0333|\u2242\u0338|\u224B\u0338|\u224D\u20D2|\u224E\u0338|\u224F\u0338|\u2250\u0338|\u2261\u20E5|\u2264\u20D2|\u2265\u20D2|\u2266\u0338|\u2267\u0338|\u2268\uFE00|\u2269\uFE00|\u226A\u0338|\u226A\u20D2|\u226B\u0338|\u226B\u20D2|\u227F\u0338|\u2282\u20D2|\u2283\u20D2|\u228A\uFE00|\u228B\uFE00|\u228F\u0338|\u2290\u0338|\u2293\uFE00|\u2294\uFE00|\u22B4\u20D2|\u22B5\u20D2|\u22D8\u0338|\u22D9\u0338|\u22DA\uFE00|\u22DB\uFE00|\u22F5\u0338|\u22F9\u0338|\u2933\u0338|\u29CF\u0338|\u29D0\u0338|\u2A6D\u0338|\u2A70\u0338|\u2A7D\u0338|\u2A7E\u0338|\u2AA1\u0338|\u2AA2\u0338|\u2AAC\uFE00|\u2AAD\uFE00|\u2AAF\u0338|\u2AB0\u0338|\u2AC5\u0338|\u2AC6\u0338|\u2ACB\uFE00|\u2ACC\uFE00|\u2AFD\u20E5|[\xA0-\u0113\u0116-\u0122\u0124-\u012B\u012E-\u014D\u0150-\u017E\u0192\u01B5\u01F5\u0237\u02C6\u02C7\u02D8-\u02DD\u0311\u0391-\u03A1\u03A3-\u03A9\u03B1-\u03C9\u03D1\u03D2\u03D5\u03D6\u03DC\u03DD\u03F0\u03F1\u03F5\u03F6\u0401-\u040C\u040E-\u044F\u0451-\u045C\u045E\u045F\u2002-\u2005\u2007-\u2010\u2013-\u2016\u2018-\u201A\u201C-\u201E\u2020-\u2022\u2025\u2026\u2030-\u2035\u2039\u203A\u203E\u2041\u2043\u2044\u204F\u2057\u205F-\u2063\u20AC\u20DB\u20DC\u2102\u2105\u210A-\u2113\u2115-\u211E\u2122\u2124\u2127-\u2129\u212C\u212D\u212F-\u2131\u2133-\u2138\u2145-\u2148\u2153-\u215E\u2190-\u219B\u219D-\u21A7\u21A9-\u21AE\u21B0-\u21B3\u21B5-\u21B7\u21BA-\u21DB\u21DD\u21E4\u21E5\u21F5\u21FD-\u2205\u2207-\u2209\u220B\u220C\u220F-\u2214\u2216-\u2218\u221A\u221D-\u2238\u223A-\u2257\u2259\u225A\u225C\u225F-\u2262\u2264-\u228B\u228D-\u229B\u229D-\u22A5\u22A7-\u22B0\u22B2-\u22BB\u22BD-\u22DB\u22DE-\u22E3\u22E6-\u22F7\u22F9-\u22FE\u2305\u2306\u2308-\u2310\u2312\u2313\u2315\u2316\u231C-\u231F\u2322\u2323\u232D\u232E\u2336\u233D\u233F\u237C\u23B0\u23B1\u23B4-\u23B6\u23DC-\u23DF\u23E2\u23E7\u2423\u24C8\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2550-\u256C\u2580\u2584\u2588\u2591-\u2593\u25A1\u25AA\u25AB\u25AD\u25AE\u25B1\u25B3-\u25B5\u25B8\u25B9\u25BD-\u25BF\u25C2\u25C3\u25CA\u25CB\u25EC\u25EF\u25F8-\u25FC\u2605\u2606\u260E\u2640\u2642\u2660\u2663\u2665\u2666\u266A\u266D-\u266F\u2713\u2717\u2720\u2736\u2758\u2772\u2773\u27C8\u27C9\u27E6-\u27ED\u27F5-\u27FA\u27FC\u27FF\u2902-\u2905\u290C-\u2913\u2916\u2919-\u2920\u2923-\u292A\u2933\u2935-\u2939\u293C\u293D\u2945\u2948-\u294B\u294E-\u2976\u2978\u2979\u297B-\u297F\u2985\u2986\u298B-\u2996\u299A\u299C\u299D\u29A4-\u29B7\u29B9\u29BB\u29BC\u29BE-\u29C5\u29C9\u29CD-\u29D0\u29DC-\u29DE\u29E3-\u29E5\u29EB\u29F4\u29F6\u2A00-\u2A02\u2A04\u2A06\u2A0C\u2A0D\u2A10-\u2A17\u2A22-\u2A27\u2A29\u2A2A\u2A2D-\u2A31\u2A33-\u2A3C\u2A3F\u2A40\u2A42-\u2A4D\u2A50\u2A53-\u2A58\u2A5A-\u2A5D\u2A5F\u2A66\u2A6A\u2A6D-\u2A75\u2A77-\u2A9A\u2A9D-\u2AA2\u2AA4-\u2AB0\u2AB3-\u2AC8\u2ACB\u2ACC\u2ACF-\u2ADB\u2AE4\u2AE6-\u2AE9\u2AEB-\u2AF3\u2AFD\uFB00-\uFB04]|\uD835[\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDCCF\uDD04\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDD6B]/g; 4450 var encodeMap = { 4451 '\xAD': 'shy', 4452 '\u200C': 'zwnj', 4453 '\u200D': 'zwj', 4454 '\u200E': 'lrm', 4455 '\u2063': 'ic', 4456 '\u2062': 'it', 4457 '\u2061': 'af', 4458 '\u200F': 'rlm', 4459 '\u200B': 'ZeroWidthSpace', 4460 '\u2060': 'NoBreak', 4461 '\u0311': 'DownBreve', 4462 '\u20DB': 'tdot', 4463 '\u20DC': 'DotDot', 4464 '\t': 'Tab', 4465 '\n': 'NewLine', 4466 '\u2008': 'puncsp', 4467 '\u205F': 'MediumSpace', 4468 '\u2009': 'thinsp', 4469 '\u200A': 'hairsp', 4470 '\u2004': 'emsp13', 4471 '\u2002': 'ensp', 4472 '\u2005': 'emsp14', 4473 '\u2003': 'emsp', 4474 '\u2007': 'numsp', 4475 '\xA0': 'nbsp', 4476 '\u205F\u200A': 'ThickSpace', 4477 '\u203E': 'oline', 4478 '_': 'lowbar', 4479 '\u2010': 'dash', 4480 '\u2013': 'ndash', 4481 '\u2014': 'mdash', 4482 '\u2015': 'horbar', 4483 ',': 'comma', 4484 ';': 'semi', 4485 '\u204F': 'bsemi', 4486 ':': 'colon', 4487 '\u2A74': 'Colone', 4488 '!': 'excl', 4489 '\xA1': 'iexcl', 4490 '?': 'quest', 4491 '\xBF': 'iquest', 4492 '.': 'period', 4493 '\u2025': 'nldr', 4494 '\u2026': 'mldr', 4495 '\xB7': 'middot', 4496 '\'': 'apos', 4497 '\u2018': 'lsquo', 4498 '\u2019': 'rsquo', 4499 '\u201A': 'sbquo', 4500 '\u2039': 'lsaquo', 4501 '\u203A': 'rsaquo', 4502 '"': 'quot', 4503 '\u201C': 'ldquo', 4504 '\u201D': 'rdquo', 4505 '\u201E': 'bdquo', 4506 '\xAB': 'laquo', 4507 '\xBB': 'raquo', 4508 '(': 'lpar', 4509 ')': 'rpar', 4510 '[': 'lsqb', 4511 ']': 'rsqb', 4512 '{': 'lcub', 4513 '}': 'rcub', 4514 '\u2308': 'lceil', 4515 '\u2309': 'rceil', 4516 '\u230A': 'lfloor', 4517 '\u230B': 'rfloor', 4518 '\u2985': 'lopar', 4519 '\u2986': 'ropar', 4520 '\u298B': 'lbrke', 4521 '\u298C': 'rbrke', 4522 '\u298D': 'lbrkslu', 4523 '\u298E': 'rbrksld', 4524 '\u298F': 'lbrksld', 4525 '\u2990': 'rbrkslu', 4526 '\u2991': 'langd', 4527 '\u2992': 'rangd', 4528 '\u2993': 'lparlt', 4529 '\u2994': 'rpargt', 4530 '\u2995': 'gtlPar', 4531 '\u2996': 'ltrPar', 4532 '\u27E6': 'lobrk', 4533 '\u27E7': 'robrk', 4534 '\u27E8': 'lang', 4535 '\u27E9': 'rang', 4536 '\u27EA': 'Lang', 4537 '\u27EB': 'Rang', 4538 '\u27EC': 'loang', 4539 '\u27ED': 'roang', 4540 '\u2772': 'lbbrk', 4541 '\u2773': 'rbbrk', 4542 '\u2016': 'Vert', 4543 '\xA7': 'sect', 4544 '\xB6': 'para', 4545 '@': 'commat', 4546 '*': 'ast', 4547 '/': 'sol', 4548 'undefined': null, 4549 '&': 'amp', 4550 '#': 'num', 4551 '%': 'percnt', 4552 '\u2030': 'permil', 4553 '\u2031': 'pertenk', 4554 '\u2020': 'dagger', 4555 '\u2021': 'Dagger', 4556 '\u2022': 'bull', 4557 '\u2043': 'hybull', 4558 '\u2032': 'prime', 4559 '\u2033': 'Prime', 4560 '\u2034': 'tprime', 4561 '\u2057': 'qprime', 4562 '\u2035': 'bprime', 4563 '\u2041': 'caret', 4564 '`': 'grave', 4565 '\xB4': 'acute', 4566 '\u02DC': 'tilde', 4567 '^': 'Hat', 4568 '\xAF': 'macr', 4569 '\u02D8': 'breve', 4570 '\u02D9': 'dot', 4571 '\xA8': 'die', 4572 '\u02DA': 'ring', 4573 '\u02DD': 'dblac', 4574 '\xB8': 'cedil', 4575 '\u02DB': 'ogon', 4576 '\u02C6': 'circ', 4577 '\u02C7': 'caron', 4578 '\xB0': 'deg', 4579 '\xA9': 'copy', 4580 '\xAE': 'reg', 4581 '\u2117': 'copysr', 4582 '\u2118': 'wp', 4583 '\u211E': 'rx', 4584 '\u2127': 'mho', 4585 '\u2129': 'iiota', 4586 '\u2190': 'larr', 4587 '\u219A': 'nlarr', 4588 '\u2192': 'rarr', 4589 '\u219B': 'nrarr', 4590 '\u2191': 'uarr', 4591 '\u2193': 'darr', 4592 '\u2194': 'harr', 4593 '\u21AE': 'nharr', 4594 '\u2195': 'varr', 4595 '\u2196': 'nwarr', 4596 '\u2197': 'nearr', 4597 '\u2198': 'searr', 4598 '\u2199': 'swarr', 4599 '\u219D': 'rarrw', 4600 '\u219D\u0338': 'nrarrw', 4601 '\u219E': 'Larr', 4602 '\u219F': 'Uarr', 4603 '\u21A0': 'Rarr', 4604 '\u21A1': 'Darr', 4605 '\u21A2': 'larrtl', 4606 '\u21A3': 'rarrtl', 4607 '\u21A4': 'mapstoleft', 4608 '\u21A5': 'mapstoup', 4609 '\u21A6': 'map', 4610 '\u21A7': 'mapstodown', 4611 '\u21A9': 'larrhk', 4612 '\u21AA': 'rarrhk', 4613 '\u21AB': 'larrlp', 4614 '\u21AC': 'rarrlp', 4615 '\u21AD': 'harrw', 4616 '\u21B0': 'lsh', 4617 '\u21B1': 'rsh', 4618 '\u21B2': 'ldsh', 4619 '\u21B3': 'rdsh', 4620 '\u21B5': 'crarr', 4621 '\u21B6': 'cularr', 4622 '\u21B7': 'curarr', 4623 '\u21BA': 'olarr', 4624 '\u21BB': 'orarr', 4625 '\u21BC': 'lharu', 4626 '\u21BD': 'lhard', 4627 '\u21BE': 'uharr', 4628 '\u21BF': 'uharl', 4629 '\u21C0': 'rharu', 4630 '\u21C1': 'rhard', 4631 '\u21C2': 'dharr', 4632 '\u21C3': 'dharl', 4633 '\u21C4': 'rlarr', 4634 '\u21C5': 'udarr', 4635 '\u21C6': 'lrarr', 4636 '\u21C7': 'llarr', 4637 '\u21C8': 'uuarr', 4638 '\u21C9': 'rrarr', 4639 '\u21CA': 'ddarr', 4640 '\u21CB': 'lrhar', 4641 '\u21CC': 'rlhar', 4642 '\u21D0': 'lArr', 4643 '\u21CD': 'nlArr', 4644 '\u21D1': 'uArr', 4645 '\u21D2': 'rArr', 4646 '\u21CF': 'nrArr', 4647 '\u21D3': 'dArr', 4648 '\u21D4': 'iff', 4649 '\u21CE': 'nhArr', 4650 '\u21D5': 'vArr', 4651 '\u21D6': 'nwArr', 4652 '\u21D7': 'neArr', 4653 '\u21D8': 'seArr', 4654 '\u21D9': 'swArr', 4655 '\u21DA': 'lAarr', 4656 '\u21DB': 'rAarr', 4657 '\u21DD': 'zigrarr', 4658 '\u21E4': 'larrb', 4659 '\u21E5': 'rarrb', 4660 '\u21F5': 'duarr', 4661 '\u21FD': 'loarr', 4662 '\u21FE': 'roarr', 4663 '\u21FF': 'hoarr', 4664 '\u2200': 'forall', 4665 '\u2201': 'comp', 4666 '\u2202': 'part', 4667 '\u2202\u0338': 'npart', 4668 '\u2203': 'exist', 4669 '\u2204': 'nexist', 4670 '\u2205': 'empty', 4671 '\u2207': 'Del', 4672 '\u2208': 'in', 4673 '\u2209': 'notin', 4674 '\u220B': 'ni', 4675 '\u220C': 'notni', 4676 '\u03F6': 'bepsi', 4677 '\u220F': 'prod', 4678 '\u2210': 'coprod', 4679 '\u2211': 'sum', 4680 '+': 'plus', 4681 '\xB1': 'pm', 4682 '\xF7': 'div', 4683 '\xD7': 'times', 4684 '<': 'lt', 4685 '\u226E': 'nlt', 4686 '<\u20D2': 'nvlt', 4687 '=': 'equals', 4688 '\u2260': 'ne', 4689 '=\u20E5': 'bne', 4690 '\u2A75': 'Equal', 4691 '>': 'gt', 4692 '\u226F': 'ngt', 4693 '>\u20D2': 'nvgt', 4694 '\xAC': 'not', 4695 '|': 'vert', 4696 '\xA6': 'brvbar', 4697 '\u2212': 'minus', 4698 '\u2213': 'mp', 4699 '\u2214': 'plusdo', 4700 '\u2044': 'frasl', 4701 '\u2216': 'setmn', 4702 '\u2217': 'lowast', 4703 '\u2218': 'compfn', 4704 '\u221A': 'Sqrt', 4705 '\u221D': 'prop', 4706 '\u221E': 'infin', 4707 '\u221F': 'angrt', 4708 '\u2220': 'ang', 4709 '\u2220\u20D2': 'nang', 4710 '\u2221': 'angmsd', 4711 '\u2222': 'angsph', 4712 '\u2223': 'mid', 4713 '\u2224': 'nmid', 4714 '\u2225': 'par', 4715 '\u2226': 'npar', 4716 '\u2227': 'and', 4717 '\u2228': 'or', 4718 '\u2229': 'cap', 4719 '\u2229\uFE00': 'caps', 4720 '\u222A': 'cup', 4721 '\u222A\uFE00': 'cups', 4722 '\u222B': 'int', 4723 '\u222C': 'Int', 4724 '\u222D': 'tint', 4725 '\u2A0C': 'qint', 4726 '\u222E': 'oint', 4727 '\u222F': 'Conint', 4728 '\u2230': 'Cconint', 4729 '\u2231': 'cwint', 4730 '\u2232': 'cwconint', 4731 '\u2233': 'awconint', 4732 '\u2234': 'there4', 4733 '\u2235': 'becaus', 4734 '\u2236': 'ratio', 4735 '\u2237': 'Colon', 4736 '\u2238': 'minusd', 4737 '\u223A': 'mDDot', 4738 '\u223B': 'homtht', 4739 '\u223C': 'sim', 4740 '\u2241': 'nsim', 4741 '\u223C\u20D2': 'nvsim', 4742 '\u223D': 'bsim', 4743 '\u223D\u0331': 'race', 4744 '\u223E': 'ac', 4745 '\u223E\u0333': 'acE', 4746 '\u223F': 'acd', 4747 '\u2240': 'wr', 4748 '\u2242': 'esim', 4749 '\u2242\u0338': 'nesim', 4750 '\u2243': 'sime', 4751 '\u2244': 'nsime', 4752 '\u2245': 'cong', 4753 '\u2247': 'ncong', 4754 '\u2246': 'simne', 4755 '\u2248': 'ap', 4756 '\u2249': 'nap', 4757 '\u224A': 'ape', 4758 '\u224B': 'apid', 4759 '\u224B\u0338': 'napid', 4760 '\u224C': 'bcong', 4761 '\u224D': 'CupCap', 4762 '\u226D': 'NotCupCap', 4763 '\u224D\u20D2': 'nvap', 4764 '\u224E': 'bump', 4765 '\u224E\u0338': 'nbump', 4766 '\u224F': 'bumpe', 4767 '\u224F\u0338': 'nbumpe', 4768 '\u2250': 'doteq', 4769 '\u2250\u0338': 'nedot', 4770 '\u2251': 'eDot', 4771 '\u2252': 'efDot', 4772 '\u2253': 'erDot', 4773 '\u2254': 'colone', 4774 '\u2255': 'ecolon', 4775 '\u2256': 'ecir', 4776 '\u2257': 'cire', 4777 '\u2259': 'wedgeq', 4778 '\u225A': 'veeeq', 4779 '\u225C': 'trie', 4780 '\u225F': 'equest', 4781 '\u2261': 'equiv', 4782 '\u2262': 'nequiv', 4783 '\u2261\u20E5': 'bnequiv', 4784 '\u2264': 'le', 4785 '\u2270': 'nle', 4786 '\u2264\u20D2': 'nvle', 4787 '\u2265': 'ge', 4788 '\u2271': 'nge', 4789 '\u2265\u20D2': 'nvge', 4790 '\u2266': 'lE', 4791 '\u2266\u0338': 'nlE', 4792 '\u2267': 'gE', 4793 '\u2267\u0338': 'ngE', 4794 '\u2268\uFE00': 'lvnE', 4795 '\u2268': 'lnE', 4796 '\u2269': 'gnE', 4797 '\u2269\uFE00': 'gvnE', 4798 '\u226A': 'll', 4799 '\u226A\u0338': 'nLtv', 4800 '\u226A\u20D2': 'nLt', 4801 '\u226B': 'gg', 4802 '\u226B\u0338': 'nGtv', 4803 '\u226B\u20D2': 'nGt', 4804 '\u226C': 'twixt', 4805 '\u2272': 'lsim', 4806 '\u2274': 'nlsim', 4807 '\u2273': 'gsim', 4808 '\u2275': 'ngsim', 4809 '\u2276': 'lg', 4810 '\u2278': 'ntlg', 4811 '\u2277': 'gl', 4812 '\u2279': 'ntgl', 4813 '\u227A': 'pr', 4814 '\u2280': 'npr', 4815 '\u227B': 'sc', 4816 '\u2281': 'nsc', 4817 '\u227C': 'prcue', 4818 '\u22E0': 'nprcue', 4819 '\u227D': 'sccue', 4820 '\u22E1': 'nsccue', 4821 '\u227E': 'prsim', 4822 '\u227F': 'scsim', 4823 '\u227F\u0338': 'NotSucceedsTilde', 4824 '\u2282': 'sub', 4825 '\u2284': 'nsub', 4826 '\u2282\u20D2': 'vnsub', 4827 '\u2283': 'sup', 4828 '\u2285': 'nsup', 4829 '\u2283\u20D2': 'vnsup', 4830 '\u2286': 'sube', 4831 '\u2288': 'nsube', 4832 '\u2287': 'supe', 4833 '\u2289': 'nsupe', 4834 '\u228A\uFE00': 'vsubne', 4835 '\u228A': 'subne', 4836 '\u228B\uFE00': 'vsupne', 4837 '\u228B': 'supne', 4838 '\u228D': 'cupdot', 4839 '\u228E': 'uplus', 4840 '\u228F': 'sqsub', 4841 '\u228F\u0338': 'NotSquareSubset', 4842 '\u2290': 'sqsup', 4843 '\u2290\u0338': 'NotSquareSuperset', 4844 '\u2291': 'sqsube', 4845 '\u22E2': 'nsqsube', 4846 '\u2292': 'sqsupe', 4847 '\u22E3': 'nsqsupe', 4848 '\u2293': 'sqcap', 4849 '\u2293\uFE00': 'sqcaps', 4850 '\u2294': 'sqcup', 4851 '\u2294\uFE00': 'sqcups', 4852 '\u2295': 'oplus', 4853 '\u2296': 'ominus', 4854 '\u2297': 'otimes', 4855 '\u2298': 'osol', 4856 '\u2299': 'odot', 4857 '\u229A': 'ocir', 4858 '\u229B': 'oast', 4859 '\u229D': 'odash', 4860 '\u229E': 'plusb', 4861 '\u229F': 'minusb', 4862 '\u22A0': 'timesb', 4863 '\u22A1': 'sdotb', 4864 '\u22A2': 'vdash', 4865 '\u22AC': 'nvdash', 4866 '\u22A3': 'dashv', 4867 '\u22A4': 'top', 4868 '\u22A5': 'bot', 4869 '\u22A7': 'models', 4870 '\u22A8': 'vDash', 4871 '\u22AD': 'nvDash', 4872 '\u22A9': 'Vdash', 4873 '\u22AE': 'nVdash', 4874 '\u22AA': 'Vvdash', 4875 '\u22AB': 'VDash', 4876 '\u22AF': 'nVDash', 4877 '\u22B0': 'prurel', 4878 '\u22B2': 'vltri', 4879 '\u22EA': 'nltri', 4880 '\u22B3': 'vrtri', 4881 '\u22EB': 'nrtri', 4882 '\u22B4': 'ltrie', 4883 '\u22EC': 'nltrie', 4884 '\u22B4\u20D2': 'nvltrie', 4885 '\u22B5': 'rtrie', 4886 '\u22ED': 'nrtrie', 4887 '\u22B5\u20D2': 'nvrtrie', 4888 '\u22B6': 'origof', 4889 '\u22B7': 'imof', 4890 '\u22B8': 'mumap', 4891 '\u22B9': 'hercon', 4892 '\u22BA': 'intcal', 4893 '\u22BB': 'veebar', 4894 '\u22BD': 'barvee', 4895 '\u22BE': 'angrtvb', 4896 '\u22BF': 'lrtri', 4897 '\u22C0': 'Wedge', 4898 '\u22C1': 'Vee', 4899 '\u22C2': 'xcap', 4900 '\u22C3': 'xcup', 4901 '\u22C4': 'diam', 4902 '\u22C5': 'sdot', 4903 '\u22C6': 'Star', 4904 '\u22C7': 'divonx', 4905 '\u22C8': 'bowtie', 4906 '\u22C9': 'ltimes', 4907 '\u22CA': 'rtimes', 4908 '\u22CB': 'lthree', 4909 '\u22CC': 'rthree', 4910 '\u22CD': 'bsime', 4911 '\u22CE': 'cuvee', 4912 '\u22CF': 'cuwed', 4913 '\u22D0': 'Sub', 4914 '\u22D1': 'Sup', 4915 '\u22D2': 'Cap', 4916 '\u22D3': 'Cup', 4917 '\u22D4': 'fork', 4918 '\u22D5': 'epar', 4919 '\u22D6': 'ltdot', 4920 '\u22D7': 'gtdot', 4921 '\u22D8': 'Ll', 4922 '\u22D8\u0338': 'nLl', 4923 '\u22D9': 'Gg', 4924 '\u22D9\u0338': 'nGg', 4925 '\u22DA\uFE00': 'lesg', 4926 '\u22DA': 'leg', 4927 '\u22DB': 'gel', 4928 '\u22DB\uFE00': 'gesl', 4929 '\u22DE': 'cuepr', 4930 '\u22DF': 'cuesc', 4931 '\u22E6': 'lnsim', 4932 '\u22E7': 'gnsim', 4933 '\u22E8': 'prnsim', 4934 '\u22E9': 'scnsim', 4935 '\u22EE': 'vellip', 4936 '\u22EF': 'ctdot', 4937 '\u22F0': 'utdot', 4938 '\u22F1': 'dtdot', 4939 '\u22F2': 'disin', 4940 '\u22F3': 'isinsv', 4941 '\u22F4': 'isins', 4942 '\u22F5': 'isindot', 4943 '\u22F5\u0338': 'notindot', 4944 '\u22F6': 'notinvc', 4945 '\u22F7': 'notinvb', 4946 '\u22F9': 'isinE', 4947 '\u22F9\u0338': 'notinE', 4948 '\u22FA': 'nisd', 4949 '\u22FB': 'xnis', 4950 '\u22FC': 'nis', 4951 '\u22FD': 'notnivc', 4952 '\u22FE': 'notnivb', 4953 '\u2305': 'barwed', 4954 '\u2306': 'Barwed', 4955 '\u230C': 'drcrop', 4956 '\u230D': 'dlcrop', 4957 '\u230E': 'urcrop', 4958 '\u230F': 'ulcrop', 4959 '\u2310': 'bnot', 4960 '\u2312': 'profline', 4961 '\u2313': 'profsurf', 4962 '\u2315': 'telrec', 4963 '\u2316': 'target', 4964 '\u231C': 'ulcorn', 4965 '\u231D': 'urcorn', 4966 '\u231E': 'dlcorn', 4967 '\u231F': 'drcorn', 4968 '\u2322': 'frown', 4969 '\u2323': 'smile', 4970 '\u232D': 'cylcty', 4971 '\u232E': 'profalar', 4972 '\u2336': 'topbot', 4973 '\u233D': 'ovbar', 4974 '\u233F': 'solbar', 4975 '\u237C': 'angzarr', 4976 '\u23B0': 'lmoust', 4977 '\u23B1': 'rmoust', 4978 '\u23B4': 'tbrk', 4979 '\u23B5': 'bbrk', 4980 '\u23B6': 'bbrktbrk', 4981 '\u23DC': 'OverParenthesis', 4982 '\u23DD': 'UnderParenthesis', 4983 '\u23DE': 'OverBrace', 4984 '\u23DF': 'UnderBrace', 4985 '\u23E2': 'trpezium', 4986 '\u23E7': 'elinters', 4987 '\u2423': 'blank', 4988 '\u2500': 'boxh', 4989 '\u2502': 'boxv', 4990 '\u250C': 'boxdr', 4991 '\u2510': 'boxdl', 4992 '\u2514': 'boxur', 4993 '\u2518': 'boxul', 4994 '\u251C': 'boxvr', 4995 '\u2524': 'boxvl', 4996 '\u252C': 'boxhd', 4997 '\u2534': 'boxhu', 4998 '\u253C': 'boxvh', 4999 '\u2550': 'boxH', 5000 '\u2551': 'boxV', 5001 '\u2552': 'boxdR', 5002 '\u2553': 'boxDr', 5003 '\u2554': 'boxDR', 5004 '\u2555': 'boxdL', 5005 '\u2556': 'boxDl', 5006 '\u2557': 'boxDL', 5007 '\u2558': 'boxuR', 5008 '\u2559': 'boxUr', 5009 '\u255A': 'boxUR', 5010 '\u255B': 'boxuL', 5011 '\u255C': 'boxUl', 5012 '\u255D': 'boxUL', 5013 '\u255E': 'boxvR', 5014 '\u255F': 'boxVr', 5015 '\u2560': 'boxVR', 5016 '\u2561': 'boxvL', 5017 '\u2562': 'boxVl', 5018 '\u2563': 'boxVL', 5019 '\u2564': 'boxHd', 5020 '\u2565': 'boxhD', 5021 '\u2566': 'boxHD', 5022 '\u2567': 'boxHu', 5023 '\u2568': 'boxhU', 5024 '\u2569': 'boxHU', 5025 '\u256A': 'boxvH', 5026 '\u256B': 'boxVh', 5027 '\u256C': 'boxVH', 5028 '\u2580': 'uhblk', 5029 '\u2584': 'lhblk', 5030 '\u2588': 'block', 5031 '\u2591': 'blk14', 5032 '\u2592': 'blk12', 5033 '\u2593': 'blk34', 5034 '\u25A1': 'squ', 5035 '\u25AA': 'squf', 5036 '\u25AB': 'EmptyVerySmallSquare', 5037 '\u25AD': 'rect', 5038 '\u25AE': 'marker', 5039 '\u25B1': 'fltns', 5040 '\u25B3': 'xutri', 5041 '\u25B4': 'utrif', 5042 '\u25B5': 'utri', 5043 '\u25B8': 'rtrif', 5044 '\u25B9': 'rtri', 5045 '\u25BD': 'xdtri', 5046 '\u25BE': 'dtrif', 5047 '\u25BF': 'dtri', 5048 '\u25C2': 'ltrif', 5049 '\u25C3': 'ltri', 5050 '\u25CA': 'loz', 5051 '\u25CB': 'cir', 5052 '\u25EC': 'tridot', 5053 '\u25EF': 'xcirc', 5054 '\u25F8': 'ultri', 5055 '\u25F9': 'urtri', 5056 '\u25FA': 'lltri', 5057 '\u25FB': 'EmptySmallSquare', 5058 '\u25FC': 'FilledSmallSquare', 5059 '\u2605': 'starf', 5060 '\u2606': 'star', 5061 '\u260E': 'phone', 5062 '\u2640': 'female', 5063 '\u2642': 'male', 5064 '\u2660': 'spades', 5065 '\u2663': 'clubs', 5066 '\u2665': 'hearts', 5067 '\u2666': 'diams', 5068 '\u266A': 'sung', 5069 '\u2713': 'check', 5070 '\u2717': 'cross', 5071 '\u2720': 'malt', 5072 '\u2736': 'sext', 5073 '\u2758': 'VerticalSeparator', 5074 '\u27C8': 'bsolhsub', 5075 '\u27C9': 'suphsol', 5076 '\u27F5': 'xlarr', 5077 '\u27F6': 'xrarr', 5078 '\u27F7': 'xharr', 5079 '\u27F8': 'xlArr', 5080 '\u27F9': 'xrArr', 5081 '\u27FA': 'xhArr', 5082 '\u27FC': 'xmap', 5083 '\u27FF': 'dzigrarr', 5084 '\u2902': 'nvlArr', 5085 '\u2903': 'nvrArr', 5086 '\u2904': 'nvHarr', 5087 '\u2905': 'Map', 5088 '\u290C': 'lbarr', 5089 '\u290D': 'rbarr', 5090 '\u290E': 'lBarr', 5091 '\u290F': 'rBarr', 5092 '\u2910': 'RBarr', 5093 '\u2911': 'DDotrahd', 5094 '\u2912': 'UpArrowBar', 5095 '\u2913': 'DownArrowBar', 5096 '\u2916': 'Rarrtl', 5097 '\u2919': 'latail', 5098 '\u291A': 'ratail', 5099 '\u291B': 'lAtail', 5100 '\u291C': 'rAtail', 5101 '\u291D': 'larrfs', 5102 '\u291E': 'rarrfs', 5103 '\u291F': 'larrbfs', 5104 '\u2920': 'rarrbfs', 5105 '\u2923': 'nwarhk', 5106 '\u2924': 'nearhk', 5107 '\u2925': 'searhk', 5108 '\u2926': 'swarhk', 5109 '\u2927': 'nwnear', 5110 '\u2928': 'toea', 5111 '\u2929': 'tosa', 5112 '\u292A': 'swnwar', 5113 '\u2933': 'rarrc', 5114 '\u2933\u0338': 'nrarrc', 5115 '\u2935': 'cudarrr', 5116 '\u2936': 'ldca', 5117 '\u2937': 'rdca', 5118 '\u2938': 'cudarrl', 5119 '\u2939': 'larrpl', 5120 '\u293C': 'curarrm', 5121 '\u293D': 'cularrp', 5122 '\u2945': 'rarrpl', 5123 '\u2948': 'harrcir', 5124 '\u2949': 'Uarrocir', 5125 '\u294A': 'lurdshar', 5126 '\u294B': 'ldrushar', 5127 '\u294E': 'LeftRightVector', 5128 '\u294F': 'RightUpDownVector', 5129 '\u2950': 'DownLeftRightVector', 5130 '\u2951': 'LeftUpDownVector', 5131 '\u2952': 'LeftVectorBar', 5132 '\u2953': 'RightVectorBar', 5133 '\u2954': 'RightUpVectorBar', 5134 '\u2955': 'RightDownVectorBar', 5135 '\u2956': 'DownLeftVectorBar', 5136 '\u2957': 'DownRightVectorBar', 5137 '\u2958': 'LeftUpVectorBar', 5138 '\u2959': 'LeftDownVectorBar', 5139 '\u295A': 'LeftTeeVector', 5140 '\u295B': 'RightTeeVector', 5141 '\u295C': 'RightUpTeeVector', 5142 '\u295D': 'RightDownTeeVector', 5143 '\u295E': 'DownLeftTeeVector', 5144 '\u295F': 'DownRightTeeVector', 5145 '\u2960': 'LeftUpTeeVector', 5146 '\u2961': 'LeftDownTeeVector', 5147 '\u2962': 'lHar', 5148 '\u2963': 'uHar', 5149 '\u2964': 'rHar', 5150 '\u2965': 'dHar', 5151 '\u2966': 'luruhar', 5152 '\u2967': 'ldrdhar', 5153 '\u2968': 'ruluhar', 5154 '\u2969': 'rdldhar', 5155 '\u296A': 'lharul', 5156 '\u296B': 'llhard', 5157 '\u296C': 'rharul', 5158 '\u296D': 'lrhard', 5159 '\u296E': 'udhar', 5160 '\u296F': 'duhar', 5161 '\u2970': 'RoundImplies', 5162 '\u2971': 'erarr', 5163 '\u2972': 'simrarr', 5164 '\u2973': 'larrsim', 5165 '\u2974': 'rarrsim', 5166 '\u2975': 'rarrap', 5167 '\u2976': 'ltlarr', 5168 '\u2978': 'gtrarr', 5169 '\u2979': 'subrarr', 5170 '\u297B': 'suplarr', 5171 '\u297C': 'lfisht', 5172 '\u297D': 'rfisht', 5173 '\u297E': 'ufisht', 5174 '\u297F': 'dfisht', 5175 '\u299A': 'vzigzag', 5176 '\u299C': 'vangrt', 5177 '\u299D': 'angrtvbd', 5178 '\u29A4': 'ange', 5179 '\u29A5': 'range', 5180 '\u29A6': 'dwangle', 5181 '\u29A7': 'uwangle', 5182 '\u29A8': 'angmsdaa', 5183 '\u29A9': 'angmsdab', 5184 '\u29AA': 'angmsdac', 5185 '\u29AB': 'angmsdad', 5186 '\u29AC': 'angmsdae', 5187 '\u29AD': 'angmsdaf', 5188 '\u29AE': 'angmsdag', 5189 '\u29AF': 'angmsdah', 5190 '\u29B0': 'bemptyv', 5191 '\u29B1': 'demptyv', 5192 '\u29B2': 'cemptyv', 5193 '\u29B3': 'raemptyv', 5194 '\u29B4': 'laemptyv', 5195 '\u29B5': 'ohbar', 5196 '\u29B6': 'omid', 5197 '\u29B7': 'opar', 5198 '\u29B9': 'operp', 5199 '\u29BB': 'olcross', 5200 '\u29BC': 'odsold', 5201 '\u29BE': 'olcir', 5202 '\u29BF': 'ofcir', 5203 '\u29C0': 'olt', 5204 '\u29C1': 'ogt', 5205 '\u29C2': 'cirscir', 5206 '\u29C3': 'cirE', 5207 '\u29C4': 'solb', 5208 '\u29C5': 'bsolb', 5209 '\u29C9': 'boxbox', 5210 '\u29CD': 'trisb', 5211 '\u29CE': 'rtriltri', 5212 '\u29CF': 'LeftTriangleBar', 5213 '\u29CF\u0338': 'NotLeftTriangleBar', 5214 '\u29D0': 'RightTriangleBar', 5215 '\u29D0\u0338': 'NotRightTriangleBar', 5216 '\u29DC': 'iinfin', 5217 '\u29DD': 'infintie', 5218 '\u29DE': 'nvinfin', 5219 '\u29E3': 'eparsl', 5220 '\u29E4': 'smeparsl', 5221 '\u29E5': 'eqvparsl', 5222 '\u29EB': 'lozf', 5223 '\u29F4': 'RuleDelayed', 5224 '\u29F6': 'dsol', 5225 '\u2A00': 'xodot', 5226 '\u2A01': 'xoplus', 5227 '\u2A02': 'xotime', 5228 '\u2A04': 'xuplus', 5229 '\u2A06': 'xsqcup', 5230 '\u2A0D': 'fpartint', 5231 '\u2A10': 'cirfnint', 5232 '\u2A11': 'awint', 5233 '\u2A12': 'rppolint', 5234 '\u2A13': 'scpolint', 5235 '\u2A14': 'npolint', 5236 '\u2A15': 'pointint', 5237 '\u2A16': 'quatint', 5238 '\u2A17': 'intlarhk', 5239 '\u2A22': 'pluscir', 5240 '\u2A23': 'plusacir', 5241 '\u2A24': 'simplus', 5242 '\u2A25': 'plusdu', 5243 '\u2A26': 'plussim', 5244 '\u2A27': 'plustwo', 5245 '\u2A29': 'mcomma', 5246 '\u2A2A': 'minusdu', 5247 '\u2A2D': 'loplus', 5248 '\u2A2E': 'roplus', 5249 '\u2A2F': 'Cross', 5250 '\u2A30': 'timesd', 5251 '\u2A31': 'timesbar', 5252 '\u2A33': 'smashp', 5253 '\u2A34': 'lotimes', 5254 '\u2A35': 'rotimes', 5255 '\u2A36': 'otimesas', 5256 '\u2A37': 'Otimes', 5257 '\u2A38': 'odiv', 5258 '\u2A39': 'triplus', 5259 '\u2A3A': 'triminus', 5260 '\u2A3B': 'tritime', 5261 '\u2A3C': 'iprod', 5262 '\u2A3F': 'amalg', 5263 '\u2A40': 'capdot', 5264 '\u2A42': 'ncup', 5265 '\u2A43': 'ncap', 5266 '\u2A44': 'capand', 5267 '\u2A45': 'cupor', 5268 '\u2A46': 'cupcap', 5269 '\u2A47': 'capcup', 5270 '\u2A48': 'cupbrcap', 5271 '\u2A49': 'capbrcup', 5272 '\u2A4A': 'cupcup', 5273 '\u2A4B': 'capcap', 5274 '\u2A4C': 'ccups', 5275 '\u2A4D': 'ccaps', 5276 '\u2A50': 'ccupssm', 5277 '\u2A53': 'And', 5278 '\u2A54': 'Or', 5279 '\u2A55': 'andand', 5280 '\u2A56': 'oror', 5281 '\u2A57': 'orslope', 5282 '\u2A58': 'andslope', 5283 '\u2A5A': 'andv', 5284 '\u2A5B': 'orv', 5285 '\u2A5C': 'andd', 5286 '\u2A5D': 'ord', 5287 '\u2A5F': 'wedbar', 5288 '\u2A66': 'sdote', 5289 '\u2A6A': 'simdot', 5290 '\u2A6D': 'congdot', 5291 '\u2A6D\u0338': 'ncongdot', 5292 '\u2A6E': 'easter', 5293 '\u2A6F': 'apacir', 5294 '\u2A70': 'apE', 5295 '\u2A70\u0338': 'napE', 5296 '\u2A71': 'eplus', 5297 '\u2A72': 'pluse', 5298 '\u2A73': 'Esim', 5299 '\u2A77': 'eDDot', 5300 '\u2A78': 'equivDD', 5301 '\u2A79': 'ltcir', 5302 '\u2A7A': 'gtcir', 5303 '\u2A7B': 'ltquest', 5304 '\u2A7C': 'gtquest', 5305 '\u2A7D': 'les', 5306 '\u2A7D\u0338': 'nles', 5307 '\u2A7E': 'ges', 5308 '\u2A7E\u0338': 'nges', 5309 '\u2A7F': 'lesdot', 5310 '\u2A80': 'gesdot', 5311 '\u2A81': 'lesdoto', 5312 '\u2A82': 'gesdoto', 5313 '\u2A83': 'lesdotor', 5314 '\u2A84': 'gesdotol', 5315 '\u2A85': 'lap', 5316 '\u2A86': 'gap', 5317 '\u2A87': 'lne', 5318 '\u2A88': 'gne', 5319 '\u2A89': 'lnap', 5320 '\u2A8A': 'gnap', 5321 '\u2A8B': 'lEg', 5322 '\u2A8C': 'gEl', 5323 '\u2A8D': 'lsime', 5324 '\u2A8E': 'gsime', 5325 '\u2A8F': 'lsimg', 5326 '\u2A90': 'gsiml', 5327 '\u2A91': 'lgE', 5328 '\u2A92': 'glE', 5329 '\u2A93': 'lesges', 5330 '\u2A94': 'gesles', 5331 '\u2A95': 'els', 5332 '\u2A96': 'egs', 5333 '\u2A97': 'elsdot', 5334 '\u2A98': 'egsdot', 5335 '\u2A99': 'el', 5336 '\u2A9A': 'eg', 5337 '\u2A9D': 'siml', 5338 '\u2A9E': 'simg', 5339 '\u2A9F': 'simlE', 5340 '\u2AA0': 'simgE', 5341 '\u2AA1': 'LessLess', 5342 '\u2AA1\u0338': 'NotNestedLessLess', 5343 '\u2AA2': 'GreaterGreater', 5344 '\u2AA2\u0338': 'NotNestedGreaterGreater', 5345 '\u2AA4': 'glj', 5346 '\u2AA5': 'gla', 5347 '\u2AA6': 'ltcc', 5348 '\u2AA7': 'gtcc', 5349 '\u2AA8': 'lescc', 5350 '\u2AA9': 'gescc', 5351 '\u2AAA': 'smt', 5352 '\u2AAB': 'lat', 5353 '\u2AAC': 'smte', 5354 '\u2AAC\uFE00': 'smtes', 5355 '\u2AAD': 'late', 5356 '\u2AAD\uFE00': 'lates', 5357 '\u2AAE': 'bumpE', 5358 '\u2AAF': 'pre', 5359 '\u2AAF\u0338': 'npre', 5360 '\u2AB0': 'sce', 5361 '\u2AB0\u0338': 'nsce', 5362 '\u2AB3': 'prE', 5363 '\u2AB4': 'scE', 5364 '\u2AB5': 'prnE', 5365 '\u2AB6': 'scnE', 5366 '\u2AB7': 'prap', 5367 '\u2AB8': 'scap', 5368 '\u2AB9': 'prnap', 5369 '\u2ABA': 'scnap', 5370 '\u2ABB': 'Pr', 5371 '\u2ABC': 'Sc', 5372 '\u2ABD': 'subdot', 5373 '\u2ABE': 'supdot', 5374 '\u2ABF': 'subplus', 5375 '\u2AC0': 'supplus', 5376 '\u2AC1': 'submult', 5377 '\u2AC2': 'supmult', 5378 '\u2AC3': 'subedot', 5379 '\u2AC4': 'supedot', 5380 '\u2AC5': 'subE', 5381 '\u2AC5\u0338': 'nsubE', 5382 '\u2AC6': 'supE', 5383 '\u2AC6\u0338': 'nsupE', 5384 '\u2AC7': 'subsim', 5385 '\u2AC8': 'supsim', 5386 '\u2ACB\uFE00': 'vsubnE', 5387 '\u2ACB': 'subnE', 5388 '\u2ACC\uFE00': 'vsupnE', 5389 '\u2ACC': 'supnE', 5390 '\u2ACF': 'csub', 5391 '\u2AD0': 'csup', 5392 '\u2AD1': 'csube', 5393 '\u2AD2': 'csupe', 5394 '\u2AD3': 'subsup', 5395 '\u2AD4': 'supsub', 5396 '\u2AD5': 'subsub', 5397 '\u2AD6': 'supsup', 5398 '\u2AD7': 'suphsub', 5399 '\u2AD8': 'supdsub', 5400 '\u2AD9': 'forkv', 5401 '\u2ADA': 'topfork', 5402 '\u2ADB': 'mlcp', 5403 '\u2AE4': 'Dashv', 5404 '\u2AE6': 'Vdashl', 5405 '\u2AE7': 'Barv', 5406 '\u2AE8': 'vBar', 5407 '\u2AE9': 'vBarv', 5408 '\u2AEB': 'Vbar', 5409 '\u2AEC': 'Not', 5410 '\u2AED': 'bNot', 5411 '\u2AEE': 'rnmid', 5412 '\u2AEF': 'cirmid', 5413 '\u2AF0': 'midcir', 5414 '\u2AF1': 'topcir', 5415 '\u2AF2': 'nhpar', 5416 '\u2AF3': 'parsim', 5417 '\u2AFD': 'parsl', 5418 '\u2AFD\u20E5': 'nparsl', 5419 '\u266D': 'flat', 5420 '\u266E': 'natur', 5421 '\u266F': 'sharp', 5422 '\xA4': 'curren', 5423 '\xA2': 'cent', 5424 '$': 'dollar', 5425 '\xA3': 'pound', 5426 '\xA5': 'yen', 5427 '\u20AC': 'euro', 5428 '\xB9': 'sup1', 5429 '\xBD': 'half', 5430 '\u2153': 'frac13', 5431 '\xBC': 'frac14', 5432 '\u2155': 'frac15', 5433 '\u2159': 'frac16', 5434 '\u215B': 'frac18', 5435 '\xB2': 'sup2', 5436 '\u2154': 'frac23', 5437 '\u2156': 'frac25', 5438 '\xB3': 'sup3', 5439 '\xBE': 'frac34', 5440 '\u2157': 'frac35', 5441 '\u215C': 'frac38', 5442 '\u2158': 'frac45', 5443 '\u215A': 'frac56', 5444 '\u215D': 'frac58', 5445 '\u215E': 'frac78', 5446 '\uD835\uDCB6': 'ascr', 5447 '\uD835\uDD52': 'aopf', 5448 '\uD835\uDD1E': 'afr', 5449 '\uD835\uDD38': 'Aopf', 5450 '\uD835\uDD04': 'Afr', 5451 '\uD835\uDC9C': 'Ascr', 5452 '\xAA': 'ordf', 5453 '\xE1': 'aacute', 5454 '\xC1': 'Aacute', 5455 '\xE0': 'agrave', 5456 '\xC0': 'Agrave', 5457 '\u0103': 'abreve', 5458 '\u0102': 'Abreve', 5459 '\xE2': 'acirc', 5460 '\xC2': 'Acirc', 5461 '\xE5': 'aring', 5462 '\xC5': 'angst', 5463 '\xE4': 'auml', 5464 '\xC4': 'Auml', 5465 '\xE3': 'atilde', 5466 '\xC3': 'Atilde', 5467 '\u0105': 'aogon', 5468 '\u0104': 'Aogon', 5469 '\u0101': 'amacr', 5470 '\u0100': 'Amacr', 5471 '\xE6': 'aelig', 5472 '\xC6': 'AElig', 5473 '\uD835\uDCB7': 'bscr', 5474 '\uD835\uDD53': 'bopf', 5475 '\uD835\uDD1F': 'bfr', 5476 '\uD835\uDD39': 'Bopf', 5477 '\u212C': 'Bscr', 5478 '\uD835\uDD05': 'Bfr', 5479 '\uD835\uDD20': 'cfr', 5480 '\uD835\uDCB8': 'cscr', 5481 '\uD835\uDD54': 'copf', 5482 '\u212D': 'Cfr', 5483 '\uD835\uDC9E': 'Cscr', 5484 '\u2102': 'Copf', 5485 '\u0107': 'cacute', 5486 '\u0106': 'Cacute', 5487 '\u0109': 'ccirc', 5488 '\u0108': 'Ccirc', 5489 '\u010D': 'ccaron', 5490 '\u010C': 'Ccaron', 5491 '\u010B': 'cdot', 5492 '\u010A': 'Cdot', 5493 '\xE7': 'ccedil', 5494 '\xC7': 'Ccedil', 5495 '\u2105': 'incare', 5496 '\uD835\uDD21': 'dfr', 5497 '\u2146': 'dd', 5498 '\uD835\uDD55': 'dopf', 5499 '\uD835\uDCB9': 'dscr', 5500 '\uD835\uDC9F': 'Dscr', 5501 '\uD835\uDD07': 'Dfr', 5502 '\u2145': 'DD', 5503 '\uD835\uDD3B': 'Dopf', 5504 '\u010F': 'dcaron', 5505 '\u010E': 'Dcaron', 5506 '\u0111': 'dstrok', 5507 '\u0110': 'Dstrok', 5508 '\xF0': 'eth', 5509 '\xD0': 'ETH', 5510 '\u2147': 'ee', 5511 '\u212F': 'escr', 5512 '\uD835\uDD22': 'efr', 5513 '\uD835\uDD56': 'eopf', 5514 '\u2130': 'Escr', 5515 '\uD835\uDD08': 'Efr', 5516 '\uD835\uDD3C': 'Eopf', 5517 '\xE9': 'eacute', 5518 '\xC9': 'Eacute', 5519 '\xE8': 'egrave', 5520 '\xC8': 'Egrave', 5521 '\xEA': 'ecirc', 5522 '\xCA': 'Ecirc', 5523 '\u011B': 'ecaron', 5524 '\u011A': 'Ecaron', 5525 '\xEB': 'euml', 5526 '\xCB': 'Euml', 5527 '\u0117': 'edot', 5528 '\u0116': 'Edot', 5529 '\u0119': 'eogon', 5530 '\u0118': 'Eogon', 5531 '\u0113': 'emacr', 5532 '\u0112': 'Emacr', 5533 '\uD835\uDD23': 'ffr', 5534 '\uD835\uDD57': 'fopf', 5535 '\uD835\uDCBB': 'fscr', 5536 '\uD835\uDD09': 'Ffr', 5537 '\uD835\uDD3D': 'Fopf', 5538 '\u2131': 'Fscr', 5539 '\uFB00': 'fflig', 5540 '\uFB03': 'ffilig', 5541 '\uFB04': 'ffllig', 5542 '\uFB01': 'filig', 5543 'fj': 'fjlig', 5544 '\uFB02': 'fllig', 5545 '\u0192': 'fnof', 5546 '\u210A': 'gscr', 5547 '\uD835\uDD58': 'gopf', 5548 '\uD835\uDD24': 'gfr', 5549 '\uD835\uDCA2': 'Gscr', 5550 '\uD835\uDD3E': 'Gopf', 5551 '\uD835\uDD0A': 'Gfr', 5552 '\u01F5': 'gacute', 5553 '\u011F': 'gbreve', 5554 '\u011E': 'Gbreve', 5555 '\u011D': 'gcirc', 5556 '\u011C': 'Gcirc', 5557 '\u0121': 'gdot', 5558 '\u0120': 'Gdot', 5559 '\u0122': 'Gcedil', 5560 '\uD835\uDD25': 'hfr', 5561 '\u210E': 'planckh', 5562 '\uD835\uDCBD': 'hscr', 5563 '\uD835\uDD59': 'hopf', 5564 '\u210B': 'Hscr', 5565 '\u210C': 'Hfr', 5566 '\u210D': 'Hopf', 5567 '\u0125': 'hcirc', 5568 '\u0124': 'Hcirc', 5569 '\u210F': 'hbar', 5570 '\u0127': 'hstrok', 5571 '\u0126': 'Hstrok', 5572 '\uD835\uDD5A': 'iopf', 5573 '\uD835\uDD26': 'ifr', 5574 '\uD835\uDCBE': 'iscr', 5575 '\u2148': 'ii', 5576 '\uD835\uDD40': 'Iopf', 5577 '\u2110': 'Iscr', 5578 '\u2111': 'Im', 5579 '\xED': 'iacute', 5580 '\xCD': 'Iacute', 5581 '\xEC': 'igrave', 5582 '\xCC': 'Igrave', 5583 '\xEE': 'icirc', 5584 '\xCE': 'Icirc', 5585 '\xEF': 'iuml', 5586 '\xCF': 'Iuml', 5587 '\u0129': 'itilde', 5588 '\u0128': 'Itilde', 5589 '\u0130': 'Idot', 5590 '\u012F': 'iogon', 5591 '\u012E': 'Iogon', 5592 '\u012B': 'imacr', 5593 '\u012A': 'Imacr', 5594 '\u0133': 'ijlig', 5595 '\u0132': 'IJlig', 5596 '\u0131': 'imath', 5597 '\uD835\uDCBF': 'jscr', 5598 '\uD835\uDD5B': 'jopf', 5599 '\uD835\uDD27': 'jfr', 5600 '\uD835\uDCA5': 'Jscr', 5601 '\uD835\uDD0D': 'Jfr', 5602 '\uD835\uDD41': 'Jopf', 5603 '\u0135': 'jcirc', 5604 '\u0134': 'Jcirc', 5605 '\u0237': 'jmath', 5606 '\uD835\uDD5C': 'kopf', 5607 '\uD835\uDCC0': 'kscr', 5608 '\uD835\uDD28': 'kfr', 5609 '\uD835\uDCA6': 'Kscr', 5610 '\uD835\uDD42': 'Kopf', 5611 '\uD835\uDD0E': 'Kfr', 5612 '\u0137': 'kcedil', 5613 '\u0136': 'Kcedil', 5614 '\uD835\uDD29': 'lfr', 5615 '\uD835\uDCC1': 'lscr', 5616 '\u2113': 'ell', 5617 '\uD835\uDD5D': 'lopf', 5618 '\u2112': 'Lscr', 5619 '\uD835\uDD0F': 'Lfr', 5620 '\uD835\uDD43': 'Lopf', 5621 '\u013A': 'lacute', 5622 '\u0139': 'Lacute', 5623 '\u013E': 'lcaron', 5624 '\u013D': 'Lcaron', 5625 '\u013C': 'lcedil', 5626 '\u013B': 'Lcedil', 5627 '\u0142': 'lstrok', 5628 '\u0141': 'Lstrok', 5629 '\u0140': 'lmidot', 5630 '\u013F': 'Lmidot', 5631 '\uD835\uDD2A': 'mfr', 5632 '\uD835\uDD5E': 'mopf', 5633 '\uD835\uDCC2': 'mscr', 5634 '\uD835\uDD10': 'Mfr', 5635 '\uD835\uDD44': 'Mopf', 5636 '\u2133': 'Mscr', 5637 '\uD835\uDD2B': 'nfr', 5638 '\uD835\uDD5F': 'nopf', 5639 '\uD835\uDCC3': 'nscr', 5640 '\u2115': 'Nopf', 5641 '\uD835\uDCA9': 'Nscr', 5642 '\uD835\uDD11': 'Nfr', 5643 '\u0144': 'nacute', 5644 '\u0143': 'Nacute', 5645 '\u0148': 'ncaron', 5646 '\u0147': 'Ncaron', 5647 '\xF1': 'ntilde', 5648 '\xD1': 'Ntilde', 5649 '\u0146': 'ncedil', 5650 '\u0145': 'Ncedil', 5651 '\u2116': 'numero', 5652 '\u014B': 'eng', 5653 '\u014A': 'ENG', 5654 '\uD835\uDD60': 'oopf', 5655 '\uD835\uDD2C': 'ofr', 5656 '\u2134': 'oscr', 5657 '\uD835\uDCAA': 'Oscr', 5658 '\uD835\uDD12': 'Ofr', 5659 '\uD835\uDD46': 'Oopf', 5660 '\xBA': 'ordm', 5661 '\xF3': 'oacute', 5662 '\xD3': 'Oacute', 5663 '\xF2': 'ograve', 5664 '\xD2': 'Ograve', 5665 '\xF4': 'ocirc', 5666 '\xD4': 'Ocirc', 5667 '\xF6': 'ouml', 5668 '\xD6': 'Ouml', 5669 '\u0151': 'odblac', 5670 '\u0150': 'Odblac', 5671 '\xF5': 'otilde', 5672 '\xD5': 'Otilde', 5673 '\xF8': 'oslash', 5674 '\xD8': 'Oslash', 5675 '\u014D': 'omacr', 5676 '\u014C': 'Omacr', 5677 '\u0153': 'oelig', 5678 '\u0152': 'OElig', 5679 '\uD835\uDD2D': 'pfr', 5680 '\uD835\uDCC5': 'pscr', 5681 '\uD835\uDD61': 'popf', 5682 '\u2119': 'Popf', 5683 '\uD835\uDD13': 'Pfr', 5684 '\uD835\uDCAB': 'Pscr', 5685 '\uD835\uDD62': 'qopf', 5686 '\uD835\uDD2E': 'qfr', 5687 '\uD835\uDCC6': 'qscr', 5688 '\uD835\uDCAC': 'Qscr', 5689 '\uD835\uDD14': 'Qfr', 5690 '\u211A': 'Qopf', 5691 '\u0138': 'kgreen', 5692 '\uD835\uDD2F': 'rfr', 5693 '\uD835\uDD63': 'ropf', 5694 '\uD835\uDCC7': 'rscr', 5695 '\u211B': 'Rscr', 5696 '\u211C': 'Re', 5697 '\u211D': 'Ropf', 5698 '\u0155': 'racute', 5699 '\u0154': 'Racute', 5700 '\u0159': 'rcaron', 5701 '\u0158': 'Rcaron', 5702 '\u0157': 'rcedil', 5703 '\u0156': 'Rcedil', 5704 '\uD835\uDD64': 'sopf', 5705 '\uD835\uDCC8': 'sscr', 5706 '\uD835\uDD30': 'sfr', 5707 '\uD835\uDD4A': 'Sopf', 5708 '\uD835\uDD16': 'Sfr', 5709 '\uD835\uDCAE': 'Sscr', 5710 '\u24C8': 'oS', 5711 '\u015B': 'sacute', 5712 '\u015A': 'Sacute', 5713 '\u015D': 'scirc', 5714 '\u015C': 'Scirc', 5715 '\u0161': 'scaron', 5716 '\u0160': 'Scaron', 5717 '\u015F': 'scedil', 5718 '\u015E': 'Scedil', 5719 '\xDF': 'szlig', 5720 '\uD835\uDD31': 'tfr', 5721 '\uD835\uDCC9': 'tscr', 5722 '\uD835\uDD65': 'topf', 5723 '\uD835\uDCAF': 'Tscr', 5724 '\uD835\uDD17': 'Tfr', 5725 '\uD835\uDD4B': 'Topf', 5726 '\u0165': 'tcaron', 5727 '\u0164': 'Tcaron', 5728 '\u0163': 'tcedil', 5729 '\u0162': 'Tcedil', 5730 '\u2122': 'trade', 5731 '\u0167': 'tstrok', 5732 '\u0166': 'Tstrok', 5733 '\uD835\uDCCA': 'uscr', 5734 '\uD835\uDD66': 'uopf', 5735 '\uD835\uDD32': 'ufr', 5736 '\uD835\uDD4C': 'Uopf', 5737 '\uD835\uDD18': 'Ufr', 5738 '\uD835\uDCB0': 'Uscr', 5739 '\xFA': 'uacute', 5740 '\xDA': 'Uacute', 5741 '\xF9': 'ugrave', 5742 '\xD9': 'Ugrave', 5743 '\u016D': 'ubreve', 5744 '\u016C': 'Ubreve', 5745 '\xFB': 'ucirc', 5746 '\xDB': 'Ucirc', 5747 '\u016F': 'uring', 5748 '\u016E': 'Uring', 5749 '\xFC': 'uuml', 5750 '\xDC': 'Uuml', 5751 '\u0171': 'udblac', 5752 '\u0170': 'Udblac', 5753 '\u0169': 'utilde', 5754 '\u0168': 'Utilde', 5755 '\u0173': 'uogon', 5756 '\u0172': 'Uogon', 5757 '\u016B': 'umacr', 5758 '\u016A': 'Umacr', 5759 '\uD835\uDD33': 'vfr', 5760 '\uD835\uDD67': 'vopf', 5761 '\uD835\uDCCB': 'vscr', 5762 '\uD835\uDD19': 'Vfr', 5763 '\uD835\uDD4D': 'Vopf', 5764 '\uD835\uDCB1': 'Vscr', 5765 '\uD835\uDD68': 'wopf', 5766 '\uD835\uDCCC': 'wscr', 5767 '\uD835\uDD34': 'wfr', 5768 '\uD835\uDCB2': 'Wscr', 5769 '\uD835\uDD4E': 'Wopf', 5770 '\uD835\uDD1A': 'Wfr', 5771 '\u0175': 'wcirc', 5772 '\u0174': 'Wcirc', 5773 '\uD835\uDD35': 'xfr', 5774 '\uD835\uDCCD': 'xscr', 5775 '\uD835\uDD69': 'xopf', 5776 '\uD835\uDD4F': 'Xopf', 5777 '\uD835\uDD1B': 'Xfr', 5778 '\uD835\uDCB3': 'Xscr', 5779 '\uD835\uDD36': 'yfr', 5780 '\uD835\uDCCE': 'yscr', 5781 '\uD835\uDD6A': 'yopf', 5782 '\uD835\uDCB4': 'Yscr', 5783 '\uD835\uDD1C': 'Yfr', 5784 '\uD835\uDD50': 'Yopf', 5785 '\xFD': 'yacute', 5786 '\xDD': 'Yacute', 5787 '\u0177': 'ycirc', 5788 '\u0176': 'Ycirc', 5789 '\xFF': 'yuml', 5790 '\u0178': 'Yuml', 5791 '\uD835\uDCCF': 'zscr', 5792 '\uD835\uDD37': 'zfr', 5793 '\uD835\uDD6B': 'zopf', 5794 '\u2128': 'Zfr', 5795 '\u2124': 'Zopf', 5796 '\uD835\uDCB5': 'Zscr', 5797 '\u017A': 'zacute', 5798 '\u0179': 'Zacute', 5799 '\u017E': 'zcaron', 5800 '\u017D': 'Zcaron', 5801 '\u017C': 'zdot', 5802 '\u017B': 'Zdot', 5803 '\u01B5': 'imped', 5804 '\xFE': 'thorn', 5805 '\xDE': 'THORN', 5806 '\u0149': 'napos', 5807 '\u03B1': 'alpha', 5808 '\u0391': 'Alpha', 5809 '\u03B2': 'beta', 5810 '\u0392': 'Beta', 5811 '\u03B3': 'gamma', 5812 '\u0393': 'Gamma', 5813 '\u03B4': 'delta', 5814 '\u0394': 'Delta', 5815 '\u03B5': 'epsi', 5816 '\u03F5': 'epsiv', 5817 '\u0395': 'Epsilon', 5818 '\u03DD': 'gammad', 5819 '\u03DC': 'Gammad', 5820 '\u03B6': 'zeta', 5821 '\u0396': 'Zeta', 5822 '\u03B7': 'eta', 5823 '\u0397': 'Eta', 5824 '\u03B8': 'theta', 5825 '\u03D1': 'thetav', 5826 '\u0398': 'Theta', 5827 '\u03B9': 'iota', 5828 '\u0399': 'Iota', 5829 '\u03BA': 'kappa', 5830 '\u03F0': 'kappav', 5831 '\u039A': 'Kappa', 5832 '\u03BB': 'lambda', 5833 '\u039B': 'Lambda', 5834 '\u03BC': 'mu', 5835 '\xB5': 'micro', 5836 '\u039C': 'Mu', 5837 '\u03BD': 'nu', 5838 '\u039D': 'Nu', 5839 '\u03BE': 'xi', 5840 '\u039E': 'Xi', 5841 '\u03BF': 'omicron', 5842 '\u039F': 'Omicron', 5843 '\u03C0': 'pi', 5844 '\u03D6': 'piv', 5845 '\u03A0': 'Pi', 5846 '\u03C1': 'rho', 5847 '\u03F1': 'rhov', 5848 '\u03A1': 'Rho', 5849 '\u03C3': 'sigma', 5850 '\u03A3': 'Sigma', 5851 '\u03C2': 'sigmaf', 5852 '\u03C4': 'tau', 5853 '\u03A4': 'Tau', 5854 '\u03C5': 'upsi', 5855 '\u03A5': 'Upsilon', 5856 '\u03D2': 'Upsi', 5857 '\u03C6': 'phi', 5858 '\u03D5': 'phiv', 5859 '\u03A6': 'Phi', 5860 '\u03C7': 'chi', 5861 '\u03A7': 'Chi', 5862 '\u03C8': 'psi', 5863 '\u03A8': 'Psi', 5864 '\u03C9': 'omega', 5865 '\u03A9': 'ohm', 5866 '\u0430': 'acy', 5867 '\u0410': 'Acy', 5868 '\u0431': 'bcy', 5869 '\u0411': 'Bcy', 5870 '\u0432': 'vcy', 5871 '\u0412': 'Vcy', 5872 '\u0433': 'gcy', 5873 '\u0413': 'Gcy', 5874 '\u0453': 'gjcy', 5875 '\u0403': 'GJcy', 5876 '\u0434': 'dcy', 5877 '\u0414': 'Dcy', 5878 '\u0452': 'djcy', 5879 '\u0402': 'DJcy', 5880 '\u0435': 'iecy', 5881 '\u0415': 'IEcy', 5882 '\u0451': 'iocy', 5883 '\u0401': 'IOcy', 5884 '\u0454': 'jukcy', 5885 '\u0404': 'Jukcy', 5886 '\u0436': 'zhcy', 5887 '\u0416': 'ZHcy', 5888 '\u0437': 'zcy', 5889 '\u0417': 'Zcy', 5890 '\u0455': 'dscy', 5891 '\u0405': 'DScy', 5892 '\u0438': 'icy', 5893 '\u0418': 'Icy', 5894 '\u0456': 'iukcy', 5895 '\u0406': 'Iukcy', 5896 '\u0457': 'yicy', 5897 '\u0407': 'YIcy', 5898 '\u0439': 'jcy', 5899 '\u0419': 'Jcy', 5900 '\u0458': 'jsercy', 5901 '\u0408': 'Jsercy', 5902 '\u043A': 'kcy', 5903 '\u041A': 'Kcy', 5904 '\u045C': 'kjcy', 5905 '\u040C': 'KJcy', 5906 '\u043B': 'lcy', 5907 '\u041B': 'Lcy', 5908 '\u0459': 'ljcy', 5909 '\u0409': 'LJcy', 5910 '\u043C': 'mcy', 5911 '\u041C': 'Mcy', 5912 '\u043D': 'ncy', 5913 '\u041D': 'Ncy', 5914 '\u045A': 'njcy', 5915 '\u040A': 'NJcy', 5916 '\u043E': 'ocy', 5917 '\u041E': 'Ocy', 5918 '\u043F': 'pcy', 5919 '\u041F': 'Pcy', 5920 '\u0440': 'rcy', 5921 '\u0420': 'Rcy', 5922 '\u0441': 'scy', 5923 '\u0421': 'Scy', 5924 '\u0442': 'tcy', 5925 '\u0422': 'Tcy', 5926 '\u045B': 'tshcy', 5927 '\u040B': 'TSHcy', 5928 '\u0443': 'ucy', 5929 '\u0423': 'Ucy', 5930 '\u045E': 'ubrcy', 5931 '\u040E': 'Ubrcy', 5932 '\u0444': 'fcy', 5933 '\u0424': 'Fcy', 5934 '\u0445': 'khcy', 5935 '\u0425': 'KHcy', 5936 '\u0446': 'tscy', 5937 '\u0426': 'TScy', 5938 '\u0447': 'chcy', 5939 '\u0427': 'CHcy', 5940 '\u045F': 'dzcy', 5941 '\u040F': 'DZcy', 5942 '\u0448': 'shcy', 5943 '\u0428': 'SHcy', 5944 '\u0449': 'shchcy', 5945 '\u0429': 'SHCHcy', 5946 '\u044A': 'hardcy', 5947 '\u042A': 'HARDcy', 5948 '\u044B': 'ycy', 5949 '\u042B': 'Ycy', 5950 '\u044C': 'softcy', 5951 '\u042C': 'SOFTcy', 5952 '\u044D': 'ecy', 5953 '\u042D': 'Ecy', 5954 '\u044E': 'yucy', 5955 '\u042E': 'YUcy', 5956 '\u044F': 'yacy', 5957 '\u042F': 'YAcy', 5958 '\u2135': 'aleph', 5959 '\u2136': 'beth', 5960 '\u2137': 'gimel', 5961 '\u2138': 'daleth' 5962 }; 5963 var regexEscape = /["&'<>`]/g; 5964 var escapeMap = { 5965 '"': '"', 5966 '&': '&', 5967 '\'': ''', 5968 '<': '<', 5969 // See https://mathiasbynens.be/notes/ambiguous-ampersands: in HTML, the 5970 // following is not strictly necessary unless itâs part of a tag or an 5971 // unquoted attribute value. Weâre only escaping it to support those 5972 // situations, and for XML support. 5973 '>': '>', 5974 // In Internet Explorer ⤠8, the backtick character can be used 5975 // to break out of (un)quoted attribute values or HTML comments. 5976 // See http://html5sec.org/#102, http://html5sec.org/#108, and 5977 // http://html5sec.org/#133. 5978 '`': '`' 5979 }; 5980 var regexInvalidEntity = /&#(?:[xX][^a-fA-F0-9]|[^0-9xX])/; 5981 var regexInvalidRawCodePoint = /[\0-\x08\x0B\x0E-\x1F\x7F-\x9F\uFDD0-\uFDEF\uFFFE\uFFFF]|[\uD83F\uD87F\uD8BF\uD8FF\uD93F\uD97F\uD9BF\uD9FF\uDA3F\uDA7F\uDABF\uDAFF\uDB3F\uDB7F\uDBBF\uDBFF][\uDFFE\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/; 5982 var regexDecode = /&(CounterClockwiseContourIntegral|DoubleLongLeftRightArrow|ClockwiseContourIntegral|NotNestedGreaterGreater|NotSquareSupersetEqual|DiacriticalDoubleAcute|NotRightTriangleEqual|NotSucceedsSlantEqual|NotPrecedesSlantEqual|CloseCurlyDoubleQuote|NegativeVeryThinSpace|DoubleContourIntegral|FilledVerySmallSquare|CapitalDifferentialD|OpenCurlyDoubleQuote|EmptyVerySmallSquare|NestedGreaterGreater|DoubleLongRightArrow|NotLeftTriangleEqual|NotGreaterSlantEqual|ReverseUpEquilibrium|DoubleLeftRightArrow|NotSquareSubsetEqual|NotDoubleVerticalBar|RightArrowLeftArrow|NotGreaterFullEqual|NotRightTriangleBar|SquareSupersetEqual|DownLeftRightVector|DoubleLongLeftArrow|leftrightsquigarrow|LeftArrowRightArrow|NegativeMediumSpace|blacktriangleright|RightDownVectorBar|PrecedesSlantEqual|RightDoubleBracket|SucceedsSlantEqual|NotLeftTriangleBar|RightTriangleEqual|SquareIntersection|RightDownTeeVector|ReverseEquilibrium|NegativeThickSpace|longleftrightarrow|Longleftrightarrow|LongLeftRightArrow|DownRightTeeVector|DownRightVectorBar|GreaterSlantEqual|SquareSubsetEqual|LeftDownVectorBar|LeftDoubleBracket|VerticalSeparator|rightleftharpoons|NotGreaterGreater|NotSquareSuperset|blacktriangleleft|blacktriangledown|NegativeThinSpace|LeftDownTeeVector|NotLessSlantEqual|leftrightharpoons|DoubleUpDownArrow|DoubleVerticalBar|LeftTriangleEqual|FilledSmallSquare|twoheadrightarrow|NotNestedLessLess|DownLeftTeeVector|DownLeftVectorBar|RightAngleBracket|NotTildeFullEqual|NotReverseElement|RightUpDownVector|DiacriticalTilde|NotSucceedsTilde|circlearrowright|NotPrecedesEqual|rightharpoondown|DoubleRightArrow|NotSucceedsEqual|NonBreakingSpace|NotRightTriangle|LessEqualGreater|RightUpTeeVector|LeftAngleBracket|GreaterFullEqual|DownArrowUpArrow|RightUpVectorBar|twoheadleftarrow|GreaterEqualLess|downharpoonright|RightTriangleBar|ntrianglerighteq|NotSupersetEqual|LeftUpDownVector|DiacriticalAcute|rightrightarrows|vartriangleright|UpArrowDownArrow|DiacriticalGrave|UnderParenthesis|EmptySmallSquare|LeftUpVectorBar|leftrightarrows|DownRightVector|downharpoonleft|trianglerighteq|ShortRightArrow|OverParenthesis|DoubleLeftArrow|DoubleDownArrow|NotSquareSubset|bigtriangledown|ntrianglelefteq|UpperRightArrow|curvearrowright|vartriangleleft|NotLeftTriangle|nleftrightarrow|LowerRightArrow|NotHumpDownHump|NotGreaterTilde|rightthreetimes|LeftUpTeeVector|NotGreaterEqual|straightepsilon|LeftTriangleBar|rightsquigarrow|ContourIntegral|rightleftarrows|CloseCurlyQuote|RightDownVector|LeftRightVector|nLeftrightarrow|leftharpoondown|circlearrowleft|SquareSuperset|OpenCurlyQuote|hookrightarrow|HorizontalLine|DiacriticalDot|NotLessGreater|ntriangleright|DoubleRightTee|InvisibleComma|InvisibleTimes|LowerLeftArrow|DownLeftVector|NotSubsetEqual|curvearrowleft|trianglelefteq|NotVerticalBar|TildeFullEqual|downdownarrows|NotGreaterLess|RightTeeVector|ZeroWidthSpace|looparrowright|LongRightArrow|doublebarwedge|ShortLeftArrow|ShortDownArrow|RightVectorBar|GreaterGreater|ReverseElement|rightharpoonup|LessSlantEqual|leftthreetimes|upharpoonright|rightarrowtail|LeftDownVector|Longrightarrow|NestedLessLess|UpperLeftArrow|nshortparallel|leftleftarrows|leftrightarrow|Leftrightarrow|LeftRightArrow|longrightarrow|upharpoonleft|RightArrowBar|ApplyFunction|LeftTeeVector|leftarrowtail|NotEqualTilde|varsubsetneqq|varsupsetneqq|RightTeeArrow|SucceedsEqual|SucceedsTilde|LeftVectorBar|SupersetEqual|hookleftarrow|DifferentialD|VerticalTilde|VeryThinSpace|blacktriangle|bigtriangleup|LessFullEqual|divideontimes|leftharpoonup|UpEquilibrium|ntriangleleft|RightTriangle|measuredangle|shortparallel|longleftarrow|Longleftarrow|LongLeftArrow|DoubleLeftTee|Poincareplane|PrecedesEqual|triangleright|DoubleUpArrow|RightUpVector|fallingdotseq|looparrowleft|PrecedesTilde|NotTildeEqual|NotTildeTilde|smallsetminus|Proportional|triangleleft|triangledown|UnderBracket|NotHumpEqual|exponentiale|ExponentialE|NotLessTilde|HilbertSpace|RightCeiling|blacklozenge|varsupsetneq|HumpDownHump|GreaterEqual|VerticalLine|LeftTeeArrow|NotLessEqual|DownTeeArrow|LeftTriangle|varsubsetneq|Intersection|NotCongruent|DownArrowBar|LeftUpVector|LeftArrowBar|risingdotseq|GreaterTilde|RoundImplies|SquareSubset|ShortUpArrow|NotSuperset|quaternions|precnapprox|backepsilon|preccurlyeq|OverBracket|blacksquare|MediumSpace|VerticalBar|circledcirc|circleddash|CircleMinus|CircleTimes|LessGreater|curlyeqprec|curlyeqsucc|diamondsuit|UpDownArrow|Updownarrow|RuleDelayed|Rrightarrow|updownarrow|RightVector|nRightarrow|nrightarrow|eqslantless|LeftCeiling|Equilibrium|SmallCircle|expectation|NotSucceeds|thickapprox|GreaterLess|SquareUnion|NotPrecedes|NotLessLess|straightphi|succnapprox|succcurlyeq|SubsetEqual|sqsupseteq|Proportion|Laplacetrf|ImaginaryI|supsetneqq|NotGreater|gtreqqless|NotElement|ThickSpace|TildeEqual|TildeTilde|Fouriertrf|rmoustache|EqualTilde|eqslantgtr|UnderBrace|LeftVector|UpArrowBar|nLeftarrow|nsubseteqq|subsetneqq|nsupseteqq|nleftarrow|succapprox|lessapprox|UpTeeArrow|upuparrows|curlywedge|lesseqqgtr|varepsilon|varnothing|RightFloor|complement|CirclePlus|sqsubseteq|Lleftarrow|circledast|RightArrow|Rightarrow|rightarrow|lmoustache|Bernoullis|precapprox|mapstoleft|mapstodown|longmapsto|dotsquare|downarrow|DoubleDot|nsubseteq|supsetneq|leftarrow|nsupseteq|subsetneq|ThinSpace|ngeqslant|subseteqq|HumpEqual|NotSubset|triangleq|NotCupCap|lesseqgtr|heartsuit|TripleDot|Leftarrow|Coproduct|Congruent|varpropto|complexes|gvertneqq|LeftArrow|LessTilde|supseteqq|MinusPlus|CircleDot|nleqslant|NotExists|gtreqless|nparallel|UnionPlus|LeftFloor|checkmark|CenterDot|centerdot|Mellintrf|gtrapprox|bigotimes|OverBrace|spadesuit|therefore|pitchfork|rationals|PlusMinus|Backslash|Therefore|DownBreve|backsimeq|backprime|DownArrow|nshortmid|Downarrow|lvertneqq|eqvparsl|imagline|imagpart|infintie|integers|Integral|intercal|LessLess|Uarrocir|intlarhk|sqsupset|angmsdaf|sqsubset|llcorner|vartheta|cupbrcap|lnapprox|Superset|SuchThat|succnsim|succneqq|angmsdag|biguplus|curlyvee|trpezium|Succeeds|NotTilde|bigwedge|angmsdah|angrtvbd|triminus|cwconint|fpartint|lrcorner|smeparsl|subseteq|urcorner|lurdshar|laemptyv|DDotrahd|approxeq|ldrushar|awconint|mapstoup|backcong|shortmid|triangle|geqslant|gesdotol|timesbar|circledR|circledS|setminus|multimap|naturals|scpolint|ncongdot|RightTee|boxminus|gnapprox|boxtimes|andslope|thicksim|angmsdaa|varsigma|cirfnint|rtriltri|angmsdab|rppolint|angmsdac|barwedge|drbkarow|clubsuit|thetasym|bsolhsub|capbrcup|dzigrarr|doteqdot|DotEqual|dotminus|UnderBar|NotEqual|realpart|otimesas|ulcorner|hksearow|hkswarow|parallel|PartialD|elinters|emptyset|plusacir|bbrktbrk|angmsdad|pointint|bigoplus|angmsdae|Precedes|bigsqcup|varkappa|notindot|supseteq|precneqq|precnsim|profalar|profline|profsurf|leqslant|lesdotor|raemptyv|subplus|notnivb|notnivc|subrarr|zigrarr|vzigzag|submult|subedot|Element|between|cirscir|larrbfs|larrsim|lotimes|lbrksld|lbrkslu|lozenge|ldrdhar|dbkarow|bigcirc|epsilon|simrarr|simplus|ltquest|Epsilon|luruhar|gtquest|maltese|npolint|eqcolon|npreceq|bigodot|ddagger|gtrless|bnequiv|harrcir|ddotseq|equivDD|backsim|demptyv|nsqsube|nsqsupe|Upsilon|nsubset|upsilon|minusdu|nsucceq|swarrow|nsupset|coloneq|searrow|boxplus|napprox|natural|asympeq|alefsym|congdot|nearrow|bigstar|diamond|supplus|tritime|LeftTee|nvinfin|triplus|NewLine|nvltrie|nvrtrie|nwarrow|nexists|Diamond|ruluhar|Implies|supmult|angzarr|suplarr|suphsub|questeq|because|digamma|Because|olcross|bemptyv|omicron|Omicron|rotimes|NoBreak|intprod|angrtvb|orderof|uwangle|suphsol|lesdoto|orslope|DownTee|realine|cudarrl|rdldhar|OverBar|supedot|lessdot|supdsub|topfork|succsim|rbrkslu|rbrksld|pertenk|cudarrr|isindot|planckh|lessgtr|pluscir|gesdoto|plussim|plustwo|lesssim|cularrp|rarrsim|Cayleys|notinva|notinvb|notinvc|UpArrow|Uparrow|uparrow|NotLess|dwangle|precsim|Product|curarrm|Cconint|dotplus|rarrbfs|ccupssm|Cedilla|cemptyv|notniva|quatint|frac35|frac38|frac45|frac56|frac58|frac78|tridot|xoplus|gacute|gammad|Gammad|lfisht|lfloor|bigcup|sqsupe|gbreve|Gbreve|lharul|sqsube|sqcups|Gcedil|apacir|llhard|lmidot|Lmidot|lmoust|andand|sqcaps|approx|Abreve|spades|circeq|tprime|divide|topcir|Assign|topbot|gesdot|divonx|xuplus|timesd|gesles|atilde|solbar|SOFTcy|loplus|timesb|lowast|lowbar|dlcorn|dlcrop|softcy|dollar|lparlt|thksim|lrhard|Atilde|lsaquo|smashp|bigvee|thinsp|wreath|bkarow|lsquor|lstrok|Lstrok|lthree|ltimes|ltlarr|DotDot|simdot|ltrPar|weierp|xsqcup|angmsd|sigmav|sigmaf|zeetrf|Zcaron|zcaron|mapsto|vsupne|thetav|cirmid|marker|mcomma|Zacute|vsubnE|there4|gtlPar|vsubne|bottom|gtrarr|SHCHcy|shchcy|midast|midcir|middot|minusb|minusd|gtrdot|bowtie|sfrown|mnplus|models|colone|seswar|Colone|mstpos|searhk|gtrsim|nacute|Nacute|boxbox|telrec|hairsp|Tcedil|nbumpe|scnsim|ncaron|Ncaron|ncedil|Ncedil|hamilt|Scedil|nearhk|hardcy|HARDcy|tcedil|Tcaron|commat|nequiv|nesear|tcaron|target|hearts|nexist|varrho|scedil|Scaron|scaron|hellip|Sacute|sacute|hercon|swnwar|compfn|rtimes|rthree|rsquor|rsaquo|zacute|wedgeq|homtht|barvee|barwed|Barwed|rpargt|horbar|conint|swarhk|roplus|nltrie|hslash|hstrok|Hstrok|rmoust|Conint|bprime|hybull|hyphen|iacute|Iacute|supsup|supsub|supsim|varphi|coprod|brvbar|agrave|Supset|supset|igrave|Igrave|notinE|Agrave|iiiint|iinfin|copysr|wedbar|Verbar|vangrt|becaus|incare|verbar|inodot|bullet|drcorn|intcal|drcrop|cularr|vellip|Utilde|bumpeq|cupcap|dstrok|Dstrok|CupCap|cupcup|cupdot|eacute|Eacute|supdot|iquest|easter|ecaron|Ecaron|ecolon|isinsv|utilde|itilde|Itilde|curarr|succeq|Bumpeq|cacute|ulcrop|nparsl|Cacute|nprcue|egrave|Egrave|nrarrc|nrarrw|subsup|subsub|nrtrie|jsercy|nsccue|Jsercy|kappav|kcedil|Kcedil|subsim|ulcorn|nsimeq|egsdot|veebar|kgreen|capand|elsdot|Subset|subset|curren|aacute|lacute|Lacute|emptyv|ntilde|Ntilde|lagran|lambda|Lambda|capcap|Ugrave|langle|subdot|emsp13|numero|emsp14|nvdash|nvDash|nVdash|nVDash|ugrave|ufisht|nvHarr|larrfs|nvlArr|larrhk|larrlp|larrpl|nvrArr|Udblac|nwarhk|larrtl|nwnear|oacute|Oacute|latail|lAtail|sstarf|lbrace|odblac|Odblac|lbrack|udblac|odsold|eparsl|lcaron|Lcaron|ograve|Ograve|lcedil|Lcedil|Aacute|ssmile|ssetmn|squarf|ldquor|capcup|ominus|cylcty|rharul|eqcirc|dagger|rfloor|rfisht|Dagger|daleth|equals|origof|capdot|equest|dcaron|Dcaron|rdquor|oslash|Oslash|otilde|Otilde|otimes|Otimes|urcrop|Ubreve|ubreve|Yacute|Uacute|uacute|Rcedil|rcedil|urcorn|parsim|Rcaron|Vdashl|rcaron|Tstrok|percnt|period|permil|Exists|yacute|rbrack|rbrace|phmmat|ccaron|Ccaron|planck|ccedil|plankv|tstrok|female|plusdo|plusdu|ffilig|plusmn|ffllig|Ccedil|rAtail|dfisht|bernou|ratail|Rarrtl|rarrtl|angsph|rarrpl|rarrlp|rarrhk|xwedge|xotime|forall|ForAll|Vvdash|vsupnE|preceq|bigcap|frac12|frac13|frac14|primes|rarrfs|prnsim|frac15|Square|frac16|square|lesdot|frac18|frac23|propto|prurel|rarrap|rangle|puncsp|frac25|Racute|qprime|racute|lesges|frac34|abreve|AElig|eqsim|utdot|setmn|urtri|Equal|Uring|seArr|uring|searr|dashv|Dashv|mumap|nabla|iogon|Iogon|sdote|sdotb|scsim|napid|napos|equiv|natur|Acirc|dblac|erarr|nbump|iprod|erDot|ucirc|awint|esdot|angrt|ncong|isinE|scnap|Scirc|scirc|ndash|isins|Ubrcy|nearr|neArr|isinv|nedot|ubrcy|acute|Ycirc|iukcy|Iukcy|xutri|nesim|caret|jcirc|Jcirc|caron|twixt|ddarr|sccue|exist|jmath|sbquo|ngeqq|angst|ccaps|lceil|ngsim|UpTee|delta|Delta|rtrif|nharr|nhArr|nhpar|rtrie|jukcy|Jukcy|kappa|rsquo|Kappa|nlarr|nlArr|TSHcy|rrarr|aogon|Aogon|fflig|xrarr|tshcy|ccirc|nleqq|filig|upsih|nless|dharl|nlsim|fjlig|ropar|nltri|dharr|robrk|roarr|fllig|fltns|roang|rnmid|subnE|subne|lAarr|trisb|Ccirc|acirc|ccups|blank|VDash|forkv|Vdash|langd|cedil|blk12|blk14|laquo|strns|diams|notin|vDash|larrb|blk34|block|disin|uplus|vdash|vBarv|aelig|starf|Wedge|check|xrArr|lates|lbarr|lBarr|notni|lbbrk|bcong|frasl|lbrke|frown|vrtri|vprop|vnsup|gamma|Gamma|wedge|xodot|bdquo|srarr|doteq|ldquo|boxdl|boxdL|gcirc|Gcirc|boxDl|boxDL|boxdr|boxdR|boxDr|TRADE|trade|rlhar|boxDR|vnsub|npart|vltri|rlarr|boxhd|boxhD|nprec|gescc|nrarr|nrArr|boxHd|boxHD|boxhu|boxhU|nrtri|boxHu|clubs|boxHU|times|colon|Colon|gimel|xlArr|Tilde|nsime|tilde|nsmid|nspar|THORN|thorn|xlarr|nsube|nsubE|thkap|xhArr|comma|nsucc|boxul|boxuL|nsupe|nsupE|gneqq|gnsim|boxUl|boxUL|grave|boxur|boxuR|boxUr|boxUR|lescc|angle|bepsi|boxvh|varpi|boxvH|numsp|Theta|gsime|gsiml|theta|boxVh|boxVH|boxvl|gtcir|gtdot|boxvL|boxVl|boxVL|crarr|cross|Cross|nvsim|boxvr|nwarr|nwArr|sqsup|dtdot|Uogon|lhard|lharu|dtrif|ocirc|Ocirc|lhblk|duarr|odash|sqsub|Hacek|sqcup|llarr|duhar|oelig|OElig|ofcir|boxvR|uogon|lltri|boxVr|csube|uuarr|ohbar|csupe|ctdot|olarr|olcir|harrw|oline|sqcap|omacr|Omacr|omega|Omega|boxVR|aleph|lneqq|lnsim|loang|loarr|rharu|lobrk|hcirc|operp|oplus|rhard|Hcirc|orarr|Union|order|ecirc|Ecirc|cuepr|szlig|cuesc|breve|reals|eDDot|Breve|hoarr|lopar|utrif|rdquo|Umacr|umacr|efDot|swArr|ultri|alpha|rceil|ovbar|swarr|Wcirc|wcirc|smtes|smile|bsemi|lrarr|aring|parsl|lrhar|bsime|uhblk|lrtri|cupor|Aring|uharr|uharl|slarr|rbrke|bsolb|lsime|rbbrk|RBarr|lsimg|phone|rBarr|rbarr|icirc|lsquo|Icirc|emacr|Emacr|ratio|simne|plusb|simlE|simgE|simeq|pluse|ltcir|ltdot|empty|xharr|xdtri|iexcl|Alpha|ltrie|rarrw|pound|ltrif|xcirc|bumpe|prcue|bumpE|asymp|amacr|cuvee|Sigma|sigma|iiint|udhar|iiota|ijlig|IJlig|supnE|imacr|Imacr|prime|Prime|image|prnap|eogon|Eogon|rarrc|mdash|mDDot|cuwed|imath|supne|imped|Amacr|udarr|prsim|micro|rarrb|cwint|raquo|infin|eplus|range|rangd|Ucirc|radic|minus|amalg|veeeq|rAarr|epsiv|ycirc|quest|sharp|quot|zwnj|Qscr|race|qscr|Qopf|qopf|qint|rang|Rang|Zscr|zscr|Zopf|zopf|rarr|rArr|Rarr|Pscr|pscr|prop|prod|prnE|prec|ZHcy|zhcy|prap|Zeta|zeta|Popf|popf|Zdot|plus|zdot|Yuml|yuml|phiv|YUcy|yucy|Yscr|yscr|perp|Yopf|yopf|part|para|YIcy|Ouml|rcub|yicy|YAcy|rdca|ouml|osol|Oscr|rdsh|yacy|real|oscr|xvee|andd|rect|andv|Xscr|oror|ordm|ordf|xscr|ange|aopf|Aopf|rHar|Xopf|opar|Oopf|xopf|xnis|rhov|oopf|omid|xmap|oint|apid|apos|ogon|ascr|Ascr|odot|odiv|xcup|xcap|ocir|oast|nvlt|nvle|nvgt|nvge|nvap|Wscr|wscr|auml|ntlg|ntgl|nsup|nsub|nsim|Nscr|nscr|nsce|Wopf|ring|npre|wopf|npar|Auml|Barv|bbrk|Nopf|nopf|nmid|nLtv|beta|ropf|Ropf|Beta|beth|nles|rpar|nleq|bnot|bNot|nldr|NJcy|rscr|Rscr|Vscr|vscr|rsqb|njcy|bopf|nisd|Bopf|rtri|Vopf|nGtv|ngtr|vopf|boxh|boxH|boxv|nges|ngeq|boxV|bscr|scap|Bscr|bsim|Vert|vert|bsol|bull|bump|caps|cdot|ncup|scnE|ncap|nbsp|napE|Cdot|cent|sdot|Vbar|nang|vBar|chcy|Mscr|mscr|sect|semi|CHcy|Mopf|mopf|sext|circ|cire|mldr|mlcp|cirE|comp|shcy|SHcy|vArr|varr|cong|copf|Copf|copy|COPY|malt|male|macr|lvnE|cscr|ltri|sime|ltcc|simg|Cscr|siml|csub|Uuml|lsqb|lsim|uuml|csup|Lscr|lscr|utri|smid|lpar|cups|smte|lozf|darr|Lopf|Uscr|solb|lopf|sopf|Sopf|lneq|uscr|spar|dArr|lnap|Darr|dash|Sqrt|LJcy|ljcy|lHar|dHar|Upsi|upsi|diam|lesg|djcy|DJcy|leqq|dopf|Dopf|dscr|Dscr|dscy|ldsh|ldca|squf|DScy|sscr|Sscr|dsol|lcub|late|star|Star|Uopf|Larr|lArr|larr|uopf|dtri|dzcy|sube|subE|Lang|lang|Kscr|kscr|Kopf|kopf|KJcy|kjcy|KHcy|khcy|DZcy|ecir|edot|eDot|Jscr|jscr|succ|Jopf|jopf|Edot|uHar|emsp|ensp|Iuml|iuml|eopf|isin|Iscr|iscr|Eopf|epar|sung|epsi|escr|sup1|sup2|sup3|Iota|iota|supe|supE|Iopf|iopf|IOcy|iocy|Escr|esim|Esim|imof|Uarr|QUOT|uArr|uarr|euml|IEcy|iecy|Idot|Euml|euro|excl|Hscr|hscr|Hopf|hopf|TScy|tscy|Tscr|hbar|tscr|flat|tbrk|fnof|hArr|harr|half|fopf|Fopf|tdot|gvnE|fork|trie|gtcc|fscr|Fscr|gdot|gsim|Gscr|gscr|Gopf|gopf|gneq|Gdot|tosa|gnap|Topf|topf|geqq|toea|GJcy|gjcy|tint|gesl|mid|Sfr|ggg|top|ges|gla|glE|glj|geq|gne|gEl|gel|gnE|Gcy|gcy|gap|Tfr|tfr|Tcy|tcy|Hat|Tau|Ffr|tau|Tab|hfr|Hfr|ffr|Fcy|fcy|icy|Icy|iff|ETH|eth|ifr|Ifr|Eta|eta|int|Int|Sup|sup|ucy|Ucy|Sum|sum|jcy|ENG|ufr|Ufr|eng|Jcy|jfr|els|ell|egs|Efr|efr|Jfr|uml|kcy|Kcy|Ecy|ecy|kfr|Kfr|lap|Sub|sub|lat|lcy|Lcy|leg|Dot|dot|lEg|leq|les|squ|div|die|lfr|Lfr|lgE|Dfr|dfr|Del|deg|Dcy|dcy|lne|lnE|sol|loz|smt|Cup|lrm|cup|lsh|Lsh|sim|shy|map|Map|mcy|Mcy|mfr|Mfr|mho|gfr|Gfr|sfr|cir|Chi|chi|nap|Cfr|vcy|Vcy|cfr|Scy|scy|ncy|Ncy|vee|Vee|Cap|cap|nfr|scE|sce|Nfr|nge|ngE|nGg|vfr|Vfr|ngt|bot|nGt|nis|niv|Rsh|rsh|nle|nlE|bne|Bfr|bfr|nLl|nlt|nLt|Bcy|bcy|not|Not|rlm|wfr|Wfr|npr|nsc|num|ocy|ast|Ocy|ofr|xfr|Xfr|Ofr|ogt|ohm|apE|olt|Rho|ape|rho|Rfr|rfr|ord|REG|ang|reg|orv|And|and|AMP|Rcy|amp|Afr|ycy|Ycy|yen|yfr|Yfr|rcy|par|pcy|Pcy|pfr|Pfr|phi|Phi|afr|Acy|acy|zcy|Zcy|piv|acE|acd|zfr|Zfr|pre|prE|psi|Psi|qfr|Qfr|zwj|Or|ge|Gg|gt|gg|el|oS|lt|Lt|LT|Re|lg|gl|eg|ne|Im|it|le|DD|wp|wr|nu|Nu|dd|lE|Sc|sc|pi|Pi|ee|af|ll|Ll|rx|gE|xi|pm|Xi|ic|pr|Pr|in|ni|mp|mu|ac|Mu|or|ap|Gt|GT|ii);|&(Aacute|Agrave|Atilde|Ccedil|Eacute|Egrave|Iacute|Igrave|Ntilde|Oacute|Ograve|Oslash|Otilde|Uacute|Ugrave|Yacute|aacute|agrave|atilde|brvbar|ccedil|curren|divide|eacute|egrave|frac12|frac14|frac34|iacute|igrave|iquest|middot|ntilde|oacute|ograve|oslash|otilde|plusmn|uacute|ugrave|yacute|AElig|Acirc|Aring|Ecirc|Icirc|Ocirc|THORN|Ucirc|acirc|acute|aelig|aring|cedil|ecirc|icirc|iexcl|laquo|micro|ocirc|pound|raquo|szlig|thorn|times|ucirc|Auml|COPY|Euml|Iuml|Ouml|QUOT|Uuml|auml|cent|copy|euml|iuml|macr|nbsp|ordf|ordm|ouml|para|quot|sect|sup1|sup2|sup3|uuml|yuml|AMP|ETH|REG|amp|deg|eth|not|reg|shy|uml|yen|GT|LT|gt|lt)(?!;)([=a-zA-Z0-9]?)|&#([0-9]+)(;?)|&#[xX]([a-fA-F0-9]+)(;?)|&([0-9a-zA-Z]+)/g; 5983 var decodeMap = { 5984 'aacute': '\xE1', 5985 'Aacute': '\xC1', 5986 'abreve': '\u0103', 5987 'Abreve': '\u0102', 5988 'ac': '\u223E', 5989 'acd': '\u223F', 5990 'acE': '\u223E\u0333', 5991 'acirc': '\xE2', 5992 'Acirc': '\xC2', 5993 'acute': '\xB4', 5994 'acy': '\u0430', 5995 'Acy': '\u0410', 5996 'aelig': '\xE6', 5997 'AElig': '\xC6', 5998 'af': '\u2061', 5999 'afr': '\uD835\uDD1E', 6000 'Afr': '\uD835\uDD04', 6001 'agrave': '\xE0', 6002 'Agrave': '\xC0', 6003 'alefsym': '\u2135', 6004 'aleph': '\u2135', 6005 'alpha': '\u03B1', 6006 'Alpha': '\u0391', 6007 'amacr': '\u0101', 6008 'Amacr': '\u0100', 6009 'amalg': '\u2A3F', 6010 'amp': '&', 6011 'AMP': '&', 6012 'and': '\u2227', 6013 'And': '\u2A53', 6014 'andand': '\u2A55', 6015 'andd': '\u2A5C', 6016 'andslope': '\u2A58', 6017 'andv': '\u2A5A', 6018 'ang': '\u2220', 6019 'ange': '\u29A4', 6020 'angle': '\u2220', 6021 'angmsd': '\u2221', 6022 'angmsdaa': '\u29A8', 6023 'angmsdab': '\u29A9', 6024 'angmsdac': '\u29AA', 6025 'angmsdad': '\u29AB', 6026 'angmsdae': '\u29AC', 6027 'angmsdaf': '\u29AD', 6028 'angmsdag': '\u29AE', 6029 'angmsdah': '\u29AF', 6030 'angrt': '\u221F', 6031 'angrtvb': '\u22BE', 6032 'angrtvbd': '\u299D', 6033 'angsph': '\u2222', 6034 'angst': '\xC5', 6035 'angzarr': '\u237C', 6036 'aogon': '\u0105', 6037 'Aogon': '\u0104', 6038 'aopf': '\uD835\uDD52', 6039 'Aopf': '\uD835\uDD38', 6040 'ap': '\u2248', 6041 'apacir': '\u2A6F', 6042 'ape': '\u224A', 6043 'apE': '\u2A70', 6044 'apid': '\u224B', 6045 'apos': '\'', 6046 'ApplyFunction': '\u2061', 6047 'approx': '\u2248', 6048 'approxeq': '\u224A', 6049 'aring': '\xE5', 6050 'Aring': '\xC5', 6051 'ascr': '\uD835\uDCB6', 6052 'Ascr': '\uD835\uDC9C', 6053 'Assign': '\u2254', 6054 'ast': '*', 6055 'asymp': '\u2248', 6056 'asympeq': '\u224D', 6057 'atilde': '\xE3', 6058 'Atilde': '\xC3', 6059 'auml': '\xE4', 6060 'Auml': '\xC4', 6061 'awconint': '\u2233', 6062 'awint': '\u2A11', 6063 'backcong': '\u224C', 6064 'backepsilon': '\u03F6', 6065 'backprime': '\u2035', 6066 'backsim': '\u223D', 6067 'backsimeq': '\u22CD', 6068 'Backslash': '\u2216', 6069 'Barv': '\u2AE7', 6070 'barvee': '\u22BD', 6071 'barwed': '\u2305', 6072 'Barwed': '\u2306', 6073 'barwedge': '\u2305', 6074 'bbrk': '\u23B5', 6075 'bbrktbrk': '\u23B6', 6076 'bcong': '\u224C', 6077 'bcy': '\u0431', 6078 'Bcy': '\u0411', 6079 'bdquo': '\u201E', 6080 'becaus': '\u2235', 6081 'because': '\u2235', 6082 'Because': '\u2235', 6083 'bemptyv': '\u29B0', 6084 'bepsi': '\u03F6', 6085 'bernou': '\u212C', 6086 'Bernoullis': '\u212C', 6087 'beta': '\u03B2', 6088 'Beta': '\u0392', 6089 'beth': '\u2136', 6090 'between': '\u226C', 6091 'bfr': '\uD835\uDD1F', 6092 'Bfr': '\uD835\uDD05', 6093 'bigcap': '\u22C2', 6094 'bigcirc': '\u25EF', 6095 'bigcup': '\u22C3', 6096 'bigodot': '\u2A00', 6097 'bigoplus': '\u2A01', 6098 'bigotimes': '\u2A02', 6099 'bigsqcup': '\u2A06', 6100 'bigstar': '\u2605', 6101 'bigtriangledown': '\u25BD', 6102 'bigtriangleup': '\u25B3', 6103 'biguplus': '\u2A04', 6104 'bigvee': '\u22C1', 6105 'bigwedge': '\u22C0', 6106 'bkarow': '\u290D', 6107 'blacklozenge': '\u29EB', 6108 'blacksquare': '\u25AA', 6109 'blacktriangle': '\u25B4', 6110 'blacktriangledown': '\u25BE', 6111 'blacktriangleleft': '\u25C2', 6112 'blacktriangleright': '\u25B8', 6113 'blank': '\u2423', 6114 'blk12': '\u2592', 6115 'blk14': '\u2591', 6116 'blk34': '\u2593', 6117 'block': '\u2588', 6118 'bne': '=\u20E5', 6119 'bnequiv': '\u2261\u20E5', 6120 'bnot': '\u2310', 6121 'bNot': '\u2AED', 6122 'bopf': '\uD835\uDD53', 6123 'Bopf': '\uD835\uDD39', 6124 'bot': '\u22A5', 6125 'bottom': '\u22A5', 6126 'bowtie': '\u22C8', 6127 'boxbox': '\u29C9', 6128 'boxdl': '\u2510', 6129 'boxdL': '\u2555', 6130 'boxDl': '\u2556', 6131 'boxDL': '\u2557', 6132 'boxdr': '\u250C', 6133 'boxdR': '\u2552', 6134 'boxDr': '\u2553', 6135 'boxDR': '\u2554', 6136 'boxh': '\u2500', 6137 'boxH': '\u2550', 6138 'boxhd': '\u252C', 6139 'boxhD': '\u2565', 6140 'boxHd': '\u2564', 6141 'boxHD': '\u2566', 6142 'boxhu': '\u2534', 6143 'boxhU': '\u2568', 6144 'boxHu': '\u2567', 6145 'boxHU': '\u2569', 6146 'boxminus': '\u229F', 6147 'boxplus': '\u229E', 6148 'boxtimes': '\u22A0', 6149 'boxul': '\u2518', 6150 'boxuL': '\u255B', 6151 'boxUl': '\u255C', 6152 'boxUL': '\u255D', 6153 'boxur': '\u2514', 6154 'boxuR': '\u2558', 6155 'boxUr': '\u2559', 6156 'boxUR': '\u255A', 6157 'boxv': '\u2502', 6158 'boxV': '\u2551', 6159 'boxvh': '\u253C', 6160 'boxvH': '\u256A', 6161 'boxVh': '\u256B', 6162 'boxVH': '\u256C', 6163 'boxvl': '\u2524', 6164 'boxvL': '\u2561', 6165 'boxVl': '\u2562', 6166 'boxVL': '\u2563', 6167 'boxvr': '\u251C', 6168 'boxvR': '\u255E', 6169 'boxVr': '\u255F', 6170 'boxVR': '\u2560', 6171 'bprime': '\u2035', 6172 'breve': '\u02D8', 6173 'Breve': '\u02D8', 6174 'brvbar': '\xA6', 6175 'bscr': '\uD835\uDCB7', 6176 'Bscr': '\u212C', 6177 'bsemi': '\u204F', 6178 'bsim': '\u223D', 6179 'bsime': '\u22CD', 6180 'bsol': '\\', 6181 'bsolb': '\u29C5', 6182 'bsolhsub': '\u27C8', 6183 'bull': '\u2022', 6184 'bullet': '\u2022', 6185 'bump': '\u224E', 6186 'bumpe': '\u224F', 6187 'bumpE': '\u2AAE', 6188 'bumpeq': '\u224F', 6189 'Bumpeq': '\u224E', 6190 'cacute': '\u0107', 6191 'Cacute': '\u0106', 6192 'cap': '\u2229', 6193 'Cap': '\u22D2', 6194 'capand': '\u2A44', 6195 'capbrcup': '\u2A49', 6196 'capcap': '\u2A4B', 6197 'capcup': '\u2A47', 6198 'capdot': '\u2A40', 6199 'CapitalDifferentialD': '\u2145', 6200 'caps': '\u2229\uFE00', 6201 'caret': '\u2041', 6202 'caron': '\u02C7', 6203 'Cayleys': '\u212D', 6204 'ccaps': '\u2A4D', 6205 'ccaron': '\u010D', 6206 'Ccaron': '\u010C', 6207 'ccedil': '\xE7', 6208 'Ccedil': '\xC7', 6209 'ccirc': '\u0109', 6210 'Ccirc': '\u0108', 6211 'Cconint': '\u2230', 6212 'ccups': '\u2A4C', 6213 'ccupssm': '\u2A50', 6214 'cdot': '\u010B', 6215 'Cdot': '\u010A', 6216 'cedil': '\xB8', 6217 'Cedilla': '\xB8', 6218 'cemptyv': '\u29B2', 6219 'cent': '\xA2', 6220 'centerdot': '\xB7', 6221 'CenterDot': '\xB7', 6222 'cfr': '\uD835\uDD20', 6223 'Cfr': '\u212D', 6224 'chcy': '\u0447', 6225 'CHcy': '\u0427', 6226 'check': '\u2713', 6227 'checkmark': '\u2713', 6228 'chi': '\u03C7', 6229 'Chi': '\u03A7', 6230 'cir': '\u25CB', 6231 'circ': '\u02C6', 6232 'circeq': '\u2257', 6233 'circlearrowleft': '\u21BA', 6234 'circlearrowright': '\u21BB', 6235 'circledast': '\u229B', 6236 'circledcirc': '\u229A', 6237 'circleddash': '\u229D', 6238 'CircleDot': '\u2299', 6239 'circledR': '\xAE', 6240 'circledS': '\u24C8', 6241 'CircleMinus': '\u2296', 6242 'CirclePlus': '\u2295', 6243 'CircleTimes': '\u2297', 6244 'cire': '\u2257', 6245 'cirE': '\u29C3', 6246 'cirfnint': '\u2A10', 6247 'cirmid': '\u2AEF', 6248 'cirscir': '\u29C2', 6249 'ClockwiseContourIntegral': '\u2232', 6250 'CloseCurlyDoubleQuote': '\u201D', 6251 'CloseCurlyQuote': '\u2019', 6252 'clubs': '\u2663', 6253 'clubsuit': '\u2663', 6254 'colon': ':', 6255 'Colon': '\u2237', 6256 'colone': '\u2254', 6257 'Colone': '\u2A74', 6258 'coloneq': '\u2254', 6259 'comma': ',', 6260 'commat': '@', 6261 'comp': '\u2201', 6262 'compfn': '\u2218', 6263 'complement': '\u2201', 6264 'complexes': '\u2102', 6265 'cong': '\u2245', 6266 'congdot': '\u2A6D', 6267 'Congruent': '\u2261', 6268 'conint': '\u222E', 6269 'Conint': '\u222F', 6270 'ContourIntegral': '\u222E', 6271 'copf': '\uD835\uDD54', 6272 'Copf': '\u2102', 6273 'coprod': '\u2210', 6274 'Coproduct': '\u2210', 6275 'copy': '\xA9', 6276 'COPY': '\xA9', 6277 'copysr': '\u2117', 6278 'CounterClockwiseContourIntegral': '\u2233', 6279 'crarr': '\u21B5', 6280 'cross': '\u2717', 6281 'Cross': '\u2A2F', 6282 'cscr': '\uD835\uDCB8', 6283 'Cscr': '\uD835\uDC9E', 6284 'csub': '\u2ACF', 6285 'csube': '\u2AD1', 6286 'csup': '\u2AD0', 6287 'csupe': '\u2AD2', 6288 'ctdot': '\u22EF', 6289 'cudarrl': '\u2938', 6290 'cudarrr': '\u2935', 6291 'cuepr': '\u22DE', 6292 'cuesc': '\u22DF', 6293 'cularr': '\u21B6', 6294 'cularrp': '\u293D', 6295 'cup': '\u222A', 6296 'Cup': '\u22D3', 6297 'cupbrcap': '\u2A48', 6298 'cupcap': '\u2A46', 6299 'CupCap': '\u224D', 6300 'cupcup': '\u2A4A', 6301 'cupdot': '\u228D', 6302 'cupor': '\u2A45', 6303 'cups': '\u222A\uFE00', 6304 'curarr': '\u21B7', 6305 'curarrm': '\u293C', 6306 'curlyeqprec': '\u22DE', 6307 'curlyeqsucc': '\u22DF', 6308 'curlyvee': '\u22CE', 6309 'curlywedge': '\u22CF', 6310 'curren': '\xA4', 6311 'curvearrowleft': '\u21B6', 6312 'curvearrowright': '\u21B7', 6313 'cuvee': '\u22CE', 6314 'cuwed': '\u22CF', 6315 'cwconint': '\u2232', 6316 'cwint': '\u2231', 6317 'cylcty': '\u232D', 6318 'dagger': '\u2020', 6319 'Dagger': '\u2021', 6320 'daleth': '\u2138', 6321 'darr': '\u2193', 6322 'dArr': '\u21D3', 6323 'Darr': '\u21A1', 6324 'dash': '\u2010', 6325 'dashv': '\u22A3', 6326 'Dashv': '\u2AE4', 6327 'dbkarow': '\u290F', 6328 'dblac': '\u02DD', 6329 'dcaron': '\u010F', 6330 'Dcaron': '\u010E', 6331 'dcy': '\u0434', 6332 'Dcy': '\u0414', 6333 'dd': '\u2146', 6334 'DD': '\u2145', 6335 'ddagger': '\u2021', 6336 'ddarr': '\u21CA', 6337 'DDotrahd': '\u2911', 6338 'ddotseq': '\u2A77', 6339 'deg': '\xB0', 6340 'Del': '\u2207', 6341 'delta': '\u03B4', 6342 'Delta': '\u0394', 6343 'demptyv': '\u29B1', 6344 'dfisht': '\u297F', 6345 'dfr': '\uD835\uDD21', 6346 'Dfr': '\uD835\uDD07', 6347 'dHar': '\u2965', 6348 'dharl': '\u21C3', 6349 'dharr': '\u21C2', 6350 'DiacriticalAcute': '\xB4', 6351 'DiacriticalDot': '\u02D9', 6352 'DiacriticalDoubleAcute': '\u02DD', 6353 'DiacriticalGrave': '`', 6354 'DiacriticalTilde': '\u02DC', 6355 'diam': '\u22C4', 6356 'diamond': '\u22C4', 6357 'Diamond': '\u22C4', 6358 'diamondsuit': '\u2666', 6359 'diams': '\u2666', 6360 'die': '\xA8', 6361 'DifferentialD': '\u2146', 6362 'digamma': '\u03DD', 6363 'disin': '\u22F2', 6364 'div': '\xF7', 6365 'divide': '\xF7', 6366 'divideontimes': '\u22C7', 6367 'divonx': '\u22C7', 6368 'djcy': '\u0452', 6369 'DJcy': '\u0402', 6370 'dlcorn': '\u231E', 6371 'dlcrop': '\u230D', 6372 'dollar': '$', 6373 'dopf': '\uD835\uDD55', 6374 'Dopf': '\uD835\uDD3B', 6375 'dot': '\u02D9', 6376 'Dot': '\xA8', 6377 'DotDot': '\u20DC', 6378 'doteq': '\u2250', 6379 'doteqdot': '\u2251', 6380 'DotEqual': '\u2250', 6381 'dotminus': '\u2238', 6382 'dotplus': '\u2214', 6383 'dotsquare': '\u22A1', 6384 'doublebarwedge': '\u2306', 6385 'DoubleContourIntegral': '\u222F', 6386 'DoubleDot': '\xA8', 6387 'DoubleDownArrow': '\u21D3', 6388 'DoubleLeftArrow': '\u21D0', 6389 'DoubleLeftRightArrow': '\u21D4', 6390 'DoubleLeftTee': '\u2AE4', 6391 'DoubleLongLeftArrow': '\u27F8', 6392 'DoubleLongLeftRightArrow': '\u27FA', 6393 'DoubleLongRightArrow': '\u27F9', 6394 'DoubleRightArrow': '\u21D2', 6395 'DoubleRightTee': '\u22A8', 6396 'DoubleUpArrow': '\u21D1', 6397 'DoubleUpDownArrow': '\u21D5', 6398 'DoubleVerticalBar': '\u2225', 6399 'downarrow': '\u2193', 6400 'Downarrow': '\u21D3', 6401 'DownArrow': '\u2193', 6402 'DownArrowBar': '\u2913', 6403 'DownArrowUpArrow': '\u21F5', 6404 'DownBreve': '\u0311', 6405 'downdownarrows': '\u21CA', 6406 'downharpoonleft': '\u21C3', 6407 'downharpoonright': '\u21C2', 6408 'DownLeftRightVector': '\u2950', 6409 'DownLeftTeeVector': '\u295E', 6410 'DownLeftVector': '\u21BD', 6411 'DownLeftVectorBar': '\u2956', 6412 'DownRightTeeVector': '\u295F', 6413 'DownRightVector': '\u21C1', 6414 'DownRightVectorBar': '\u2957', 6415 'DownTee': '\u22A4', 6416 'DownTeeArrow': '\u21A7', 6417 'drbkarow': '\u2910', 6418 'drcorn': '\u231F', 6419 'drcrop': '\u230C', 6420 'dscr': '\uD835\uDCB9', 6421 'Dscr': '\uD835\uDC9F', 6422 'dscy': '\u0455', 6423 'DScy': '\u0405', 6424 'dsol': '\u29F6', 6425 'dstrok': '\u0111', 6426 'Dstrok': '\u0110', 6427 'dtdot': '\u22F1', 6428 'dtri': '\u25BF', 6429 'dtrif': '\u25BE', 6430 'duarr': '\u21F5', 6431 'duhar': '\u296F', 6432 'dwangle': '\u29A6', 6433 'dzcy': '\u045F', 6434 'DZcy': '\u040F', 6435 'dzigrarr': '\u27FF', 6436 'eacute': '\xE9', 6437 'Eacute': '\xC9', 6438 'easter': '\u2A6E', 6439 'ecaron': '\u011B', 6440 'Ecaron': '\u011A', 6441 'ecir': '\u2256', 6442 'ecirc': '\xEA', 6443 'Ecirc': '\xCA', 6444 'ecolon': '\u2255', 6445 'ecy': '\u044D', 6446 'Ecy': '\u042D', 6447 'eDDot': '\u2A77', 6448 'edot': '\u0117', 6449 'eDot': '\u2251', 6450 'Edot': '\u0116', 6451 'ee': '\u2147', 6452 'efDot': '\u2252', 6453 'efr': '\uD835\uDD22', 6454 'Efr': '\uD835\uDD08', 6455 'eg': '\u2A9A', 6456 'egrave': '\xE8', 6457 'Egrave': '\xC8', 6458 'egs': '\u2A96', 6459 'egsdot': '\u2A98', 6460 'el': '\u2A99', 6461 'Element': '\u2208', 6462 'elinters': '\u23E7', 6463 'ell': '\u2113', 6464 'els': '\u2A95', 6465 'elsdot': '\u2A97', 6466 'emacr': '\u0113', 6467 'Emacr': '\u0112', 6468 'empty': '\u2205', 6469 'emptyset': '\u2205', 6470 'EmptySmallSquare': '\u25FB', 6471 'emptyv': '\u2205', 6472 'EmptyVerySmallSquare': '\u25AB', 6473 'emsp': '\u2003', 6474 'emsp13': '\u2004', 6475 'emsp14': '\u2005', 6476 'eng': '\u014B', 6477 'ENG': '\u014A', 6478 'ensp': '\u2002', 6479 'eogon': '\u0119', 6480 'Eogon': '\u0118', 6481 'eopf': '\uD835\uDD56', 6482 'Eopf': '\uD835\uDD3C', 6483 'epar': '\u22D5', 6484 'eparsl': '\u29E3', 6485 'eplus': '\u2A71', 6486 'epsi': '\u03B5', 6487 'epsilon': '\u03B5', 6488 'Epsilon': '\u0395', 6489 'epsiv': '\u03F5', 6490 'eqcirc': '\u2256', 6491 'eqcolon': '\u2255', 6492 'eqsim': '\u2242', 6493 'eqslantgtr': '\u2A96', 6494 'eqslantless': '\u2A95', 6495 'Equal': '\u2A75', 6496 'equals': '=', 6497 'EqualTilde': '\u2242', 6498 'equest': '\u225F', 6499 'Equilibrium': '\u21CC', 6500 'equiv': '\u2261', 6501 'equivDD': '\u2A78', 6502 'eqvparsl': '\u29E5', 6503 'erarr': '\u2971', 6504 'erDot': '\u2253', 6505 'escr': '\u212F', 6506 'Escr': '\u2130', 6507 'esdot': '\u2250', 6508 'esim': '\u2242', 6509 'Esim': '\u2A73', 6510 'eta': '\u03B7', 6511 'Eta': '\u0397', 6512 'eth': '\xF0', 6513 'ETH': '\xD0', 6514 'euml': '\xEB', 6515 'Euml': '\xCB', 6516 'euro': '\u20AC', 6517 'excl': '!', 6518 'exist': '\u2203', 6519 'Exists': '\u2203', 6520 'expectation': '\u2130', 6521 'exponentiale': '\u2147', 6522 'ExponentialE': '\u2147', 6523 'fallingdotseq': '\u2252', 6524 'fcy': '\u0444', 6525 'Fcy': '\u0424', 6526 'female': '\u2640', 6527 'ffilig': '\uFB03', 6528 'fflig': '\uFB00', 6529 'ffllig': '\uFB04', 6530 'ffr': '\uD835\uDD23', 6531 'Ffr': '\uD835\uDD09', 6532 'filig': '\uFB01', 6533 'FilledSmallSquare': '\u25FC', 6534 'FilledVerySmallSquare': '\u25AA', 6535 'fjlig': 'fj', 6536 'flat': '\u266D', 6537 'fllig': '\uFB02', 6538 'fltns': '\u25B1', 6539 'fnof': '\u0192', 6540 'fopf': '\uD835\uDD57', 6541 'Fopf': '\uD835\uDD3D', 6542 'forall': '\u2200', 6543 'ForAll': '\u2200', 6544 'fork': '\u22D4', 6545 'forkv': '\u2AD9', 6546 'Fouriertrf': '\u2131', 6547 'fpartint': '\u2A0D', 6548 'frac12': '\xBD', 6549 'frac13': '\u2153', 6550 'frac14': '\xBC', 6551 'frac15': '\u2155', 6552 'frac16': '\u2159', 6553 'frac18': '\u215B', 6554 'frac23': '\u2154', 6555 'frac25': '\u2156', 6556 'frac34': '\xBE', 6557 'frac35': '\u2157', 6558 'frac38': '\u215C', 6559 'frac45': '\u2158', 6560 'frac56': '\u215A', 6561 'frac58': '\u215D', 6562 'frac78': '\u215E', 6563 'frasl': '\u2044', 6564 'frown': '\u2322', 6565 'fscr': '\uD835\uDCBB', 6566 'Fscr': '\u2131', 6567 'gacute': '\u01F5', 6568 'gamma': '\u03B3', 6569 'Gamma': '\u0393', 6570 'gammad': '\u03DD', 6571 'Gammad': '\u03DC', 6572 'gap': '\u2A86', 6573 'gbreve': '\u011F', 6574 'Gbreve': '\u011E', 6575 'Gcedil': '\u0122', 6576 'gcirc': '\u011D', 6577 'Gcirc': '\u011C', 6578 'gcy': '\u0433', 6579 'Gcy': '\u0413', 6580 'gdot': '\u0121', 6581 'Gdot': '\u0120', 6582 'ge': '\u2265', 6583 'gE': '\u2267', 6584 'gel': '\u22DB', 6585 'gEl': '\u2A8C', 6586 'geq': '\u2265', 6587 'geqq': '\u2267', 6588 'geqslant': '\u2A7E', 6589 'ges': '\u2A7E', 6590 'gescc': '\u2AA9', 6591 'gesdot': '\u2A80', 6592 'gesdoto': '\u2A82', 6593 'gesdotol': '\u2A84', 6594 'gesl': '\u22DB\uFE00', 6595 'gesles': '\u2A94', 6596 'gfr': '\uD835\uDD24', 6597 'Gfr': '\uD835\uDD0A', 6598 'gg': '\u226B', 6599 'Gg': '\u22D9', 6600 'ggg': '\u22D9', 6601 'gimel': '\u2137', 6602 'gjcy': '\u0453', 6603 'GJcy': '\u0403', 6604 'gl': '\u2277', 6605 'gla': '\u2AA5', 6606 'glE': '\u2A92', 6607 'glj': '\u2AA4', 6608 'gnap': '\u2A8A', 6609 'gnapprox': '\u2A8A', 6610 'gne': '\u2A88', 6611 'gnE': '\u2269', 6612 'gneq': '\u2A88', 6613 'gneqq': '\u2269', 6614 'gnsim': '\u22E7', 6615 'gopf': '\uD835\uDD58', 6616 'Gopf': '\uD835\uDD3E', 6617 'grave': '`', 6618 'GreaterEqual': '\u2265', 6619 'GreaterEqualLess': '\u22DB', 6620 'GreaterFullEqual': '\u2267', 6621 'GreaterGreater': '\u2AA2', 6622 'GreaterLess': '\u2277', 6623 'GreaterSlantEqual': '\u2A7E', 6624 'GreaterTilde': '\u2273', 6625 'gscr': '\u210A', 6626 'Gscr': '\uD835\uDCA2', 6627 'gsim': '\u2273', 6628 'gsime': '\u2A8E', 6629 'gsiml': '\u2A90', 6630 'gt': '>', 6631 'Gt': '\u226B', 6632 'GT': '>', 6633 'gtcc': '\u2AA7', 6634 'gtcir': '\u2A7A', 6635 'gtdot': '\u22D7', 6636 'gtlPar': '\u2995', 6637 'gtquest': '\u2A7C', 6638 'gtrapprox': '\u2A86', 6639 'gtrarr': '\u2978', 6640 'gtrdot': '\u22D7', 6641 'gtreqless': '\u22DB', 6642 'gtreqqless': '\u2A8C', 6643 'gtrless': '\u2277', 6644 'gtrsim': '\u2273', 6645 'gvertneqq': '\u2269\uFE00', 6646 'gvnE': '\u2269\uFE00', 6647 'Hacek': '\u02C7', 6648 'hairsp': '\u200A', 6649 'half': '\xBD', 6650 'hamilt': '\u210B', 6651 'hardcy': '\u044A', 6652 'HARDcy': '\u042A', 6653 'harr': '\u2194', 6654 'hArr': '\u21D4', 6655 'harrcir': '\u2948', 6656 'harrw': '\u21AD', 6657 'Hat': '^', 6658 'hbar': '\u210F', 6659 'hcirc': '\u0125', 6660 'Hcirc': '\u0124', 6661 'hearts': '\u2665', 6662 'heartsuit': '\u2665', 6663 'hellip': '\u2026', 6664 'hercon': '\u22B9', 6665 'hfr': '\uD835\uDD25', 6666 'Hfr': '\u210C', 6667 'HilbertSpace': '\u210B', 6668 'hksearow': '\u2925', 6669 'hkswarow': '\u2926', 6670 'hoarr': '\u21FF', 6671 'homtht': '\u223B', 6672 'hookleftarrow': '\u21A9', 6673 'hookrightarrow': '\u21AA', 6674 'hopf': '\uD835\uDD59', 6675 'Hopf': '\u210D', 6676 'horbar': '\u2015', 6677 'HorizontalLine': '\u2500', 6678 'hscr': '\uD835\uDCBD', 6679 'Hscr': '\u210B', 6680 'hslash': '\u210F', 6681 'hstrok': '\u0127', 6682 'Hstrok': '\u0126', 6683 'HumpDownHump': '\u224E', 6684 'HumpEqual': '\u224F', 6685 'hybull': '\u2043', 6686 'hyphen': '\u2010', 6687 'iacute': '\xED', 6688 'Iacute': '\xCD', 6689 'ic': '\u2063', 6690 'icirc': '\xEE', 6691 'Icirc': '\xCE', 6692 'icy': '\u0438', 6693 'Icy': '\u0418', 6694 'Idot': '\u0130', 6695 'iecy': '\u0435', 6696 'IEcy': '\u0415', 6697 'iexcl': '\xA1', 6698 'iff': '\u21D4', 6699 'ifr': '\uD835\uDD26', 6700 'Ifr': '\u2111', 6701 'igrave': '\xEC', 6702 'Igrave': '\xCC', 6703 'ii': '\u2148', 6704 'iiiint': '\u2A0C', 6705 'iiint': '\u222D', 6706 'iinfin': '\u29DC', 6707 'iiota': '\u2129', 6708 'ijlig': '\u0133', 6709 'IJlig': '\u0132', 6710 'Im': '\u2111', 6711 'imacr': '\u012B', 6712 'Imacr': '\u012A', 6713 'image': '\u2111', 6714 'ImaginaryI': '\u2148', 6715 'imagline': '\u2110', 6716 'imagpart': '\u2111', 6717 'imath': '\u0131', 6718 'imof': '\u22B7', 6719 'imped': '\u01B5', 6720 'Implies': '\u21D2', 6721 'in': '\u2208', 6722 'incare': '\u2105', 6723 'infin': '\u221E', 6724 'infintie': '\u29DD', 6725 'inodot': '\u0131', 6726 'int': '\u222B', 6727 'Int': '\u222C', 6728 'intcal': '\u22BA', 6729 'integers': '\u2124', 6730 'Integral': '\u222B', 6731 'intercal': '\u22BA', 6732 'Intersection': '\u22C2', 6733 'intlarhk': '\u2A17', 6734 'intprod': '\u2A3C', 6735 'InvisibleComma': '\u2063', 6736 'InvisibleTimes': '\u2062', 6737 'iocy': '\u0451', 6738 'IOcy': '\u0401', 6739 'iogon': '\u012F', 6740 'Iogon': '\u012E', 6741 'iopf': '\uD835\uDD5A', 6742 'Iopf': '\uD835\uDD40', 6743 'iota': '\u03B9', 6744 'Iota': '\u0399', 6745 'iprod': '\u2A3C', 6746 'iquest': '\xBF', 6747 'iscr': '\uD835\uDCBE', 6748 'Iscr': '\u2110', 6749 'isin': '\u2208', 6750 'isindot': '\u22F5', 6751 'isinE': '\u22F9', 6752 'isins': '\u22F4', 6753 'isinsv': '\u22F3', 6754 'isinv': '\u2208', 6755 'it': '\u2062', 6756 'itilde': '\u0129', 6757 'Itilde': '\u0128', 6758 'iukcy': '\u0456', 6759 'Iukcy': '\u0406', 6760 'iuml': '\xEF', 6761 'Iuml': '\xCF', 6762 'jcirc': '\u0135', 6763 'Jcirc': '\u0134', 6764 'jcy': '\u0439', 6765 'Jcy': '\u0419', 6766 'jfr': '\uD835\uDD27', 6767 'Jfr': '\uD835\uDD0D', 6768 'jmath': '\u0237', 6769 'jopf': '\uD835\uDD5B', 6770 'Jopf': '\uD835\uDD41', 6771 'jscr': '\uD835\uDCBF', 6772 'Jscr': '\uD835\uDCA5', 6773 'jsercy': '\u0458', 6774 'Jsercy': '\u0408', 6775 'jukcy': '\u0454', 6776 'Jukcy': '\u0404', 6777 'kappa': '\u03BA', 6778 'Kappa': '\u039A', 6779 'kappav': '\u03F0', 6780 'kcedil': '\u0137', 6781 'Kcedil': '\u0136', 6782 'kcy': '\u043A', 6783 'Kcy': '\u041A', 6784 'kfr': '\uD835\uDD28', 6785 'Kfr': '\uD835\uDD0E', 6786 'kgreen': '\u0138', 6787 'khcy': '\u0445', 6788 'KHcy': '\u0425', 6789 'kjcy': '\u045C', 6790 'KJcy': '\u040C', 6791 'kopf': '\uD835\uDD5C', 6792 'Kopf': '\uD835\uDD42', 6793 'kscr': '\uD835\uDCC0', 6794 'Kscr': '\uD835\uDCA6', 6795 'lAarr': '\u21DA', 6796 'lacute': '\u013A', 6797 'Lacute': '\u0139', 6798 'laemptyv': '\u29B4', 6799 'lagran': '\u2112', 6800 'lambda': '\u03BB', 6801 'Lambda': '\u039B', 6802 'lang': '\u27E8', 6803 'Lang': '\u27EA', 6804 'langd': '\u2991', 6805 'langle': '\u27E8', 6806 'lap': '\u2A85', 6807 'Laplacetrf': '\u2112', 6808 'laquo': '\xAB', 6809 'larr': '\u2190', 6810 'lArr': '\u21D0', 6811 'Larr': '\u219E', 6812 'larrb': '\u21E4', 6813 'larrbfs': '\u291F', 6814 'larrfs': '\u291D', 6815 'larrhk': '\u21A9', 6816 'larrlp': '\u21AB', 6817 'larrpl': '\u2939', 6818 'larrsim': '\u2973', 6819 'larrtl': '\u21A2', 6820 'lat': '\u2AAB', 6821 'latail': '\u2919', 6822 'lAtail': '\u291B', 6823 'late': '\u2AAD', 6824 'lates': '\u2AAD\uFE00', 6825 'lbarr': '\u290C', 6826 'lBarr': '\u290E', 6827 'lbbrk': '\u2772', 6828 'lbrace': '{', 6829 'lbrack': '[', 6830 'lbrke': '\u298B', 6831 'lbrksld': '\u298F', 6832 'lbrkslu': '\u298D', 6833 'lcaron': '\u013E', 6834 'Lcaron': '\u013D', 6835 'lcedil': '\u013C', 6836 'Lcedil': '\u013B', 6837 'lceil': '\u2308', 6838 'lcub': '{', 6839 'lcy': '\u043B', 6840 'Lcy': '\u041B', 6841 'ldca': '\u2936', 6842 'ldquo': '\u201C', 6843 'ldquor': '\u201E', 6844 'ldrdhar': '\u2967', 6845 'ldrushar': '\u294B', 6846 'ldsh': '\u21B2', 6847 'le': '\u2264', 6848 'lE': '\u2266', 6849 'LeftAngleBracket': '\u27E8', 6850 'leftarrow': '\u2190', 6851 'Leftarrow': '\u21D0', 6852 'LeftArrow': '\u2190', 6853 'LeftArrowBar': '\u21E4', 6854 'LeftArrowRightArrow': '\u21C6', 6855 'leftarrowtail': '\u21A2', 6856 'LeftCeiling': '\u2308', 6857 'LeftDoubleBracket': '\u27E6', 6858 'LeftDownTeeVector': '\u2961', 6859 'LeftDownVector': '\u21C3', 6860 'LeftDownVectorBar': '\u2959', 6861 'LeftFloor': '\u230A', 6862 'leftharpoondown': '\u21BD', 6863 'leftharpoonup': '\u21BC', 6864 'leftleftarrows': '\u21C7', 6865 'leftrightarrow': '\u2194', 6866 'Leftrightarrow': '\u21D4', 6867 'LeftRightArrow': '\u2194', 6868 'leftrightarrows': '\u21C6', 6869 'leftrightharpoons': '\u21CB', 6870 'leftrightsquigarrow': '\u21AD', 6871 'LeftRightVector': '\u294E', 6872 'LeftTee': '\u22A3', 6873 'LeftTeeArrow': '\u21A4', 6874 'LeftTeeVector': '\u295A', 6875 'leftthreetimes': '\u22CB', 6876 'LeftTriangle': '\u22B2', 6877 'LeftTriangleBar': '\u29CF', 6878 'LeftTriangleEqual': '\u22B4', 6879 'LeftUpDownVector': '\u2951', 6880 'LeftUpTeeVector': '\u2960', 6881 'LeftUpVector': '\u21BF', 6882 'LeftUpVectorBar': '\u2958', 6883 'LeftVector': '\u21BC', 6884 'LeftVectorBar': '\u2952', 6885 'leg': '\u22DA', 6886 'lEg': '\u2A8B', 6887 'leq': '\u2264', 6888 'leqq': '\u2266', 6889 'leqslant': '\u2A7D', 6890 'les': '\u2A7D', 6891 'lescc': '\u2AA8', 6892 'lesdot': '\u2A7F', 6893 'lesdoto': '\u2A81', 6894 'lesdotor': '\u2A83', 6895 'lesg': '\u22DA\uFE00', 6896 'lesges': '\u2A93', 6897 'lessapprox': '\u2A85', 6898 'lessdot': '\u22D6', 6899 'lesseqgtr': '\u22DA', 6900 'lesseqqgtr': '\u2A8B', 6901 'LessEqualGreater': '\u22DA', 6902 'LessFullEqual': '\u2266', 6903 'LessGreater': '\u2276', 6904 'lessgtr': '\u2276', 6905 'LessLess': '\u2AA1', 6906 'lesssim': '\u2272', 6907 'LessSlantEqual': '\u2A7D', 6908 'LessTilde': '\u2272', 6909 'lfisht': '\u297C', 6910 'lfloor': '\u230A', 6911 'lfr': '\uD835\uDD29', 6912 'Lfr': '\uD835\uDD0F', 6913 'lg': '\u2276', 6914 'lgE': '\u2A91', 6915 'lHar': '\u2962', 6916 'lhard': '\u21BD', 6917 'lharu': '\u21BC', 6918 'lharul': '\u296A', 6919 'lhblk': '\u2584', 6920 'ljcy': '\u0459', 6921 'LJcy': '\u0409', 6922 'll': '\u226A', 6923 'Ll': '\u22D8', 6924 'llarr': '\u21C7', 6925 'llcorner': '\u231E', 6926 'Lleftarrow': '\u21DA', 6927 'llhard': '\u296B', 6928 'lltri': '\u25FA', 6929 'lmidot': '\u0140', 6930 'Lmidot': '\u013F', 6931 'lmoust': '\u23B0', 6932 'lmoustache': '\u23B0', 6933 'lnap': '\u2A89', 6934 'lnapprox': '\u2A89', 6935 'lne': '\u2A87', 6936 'lnE': '\u2268', 6937 'lneq': '\u2A87', 6938 'lneqq': '\u2268', 6939 'lnsim': '\u22E6', 6940 'loang': '\u27EC', 6941 'loarr': '\u21FD', 6942 'lobrk': '\u27E6', 6943 'longleftarrow': '\u27F5', 6944 'Longleftarrow': '\u27F8', 6945 'LongLeftArrow': '\u27F5', 6946 'longleftrightarrow': '\u27F7', 6947 'Longleftrightarrow': '\u27FA', 6948 'LongLeftRightArrow': '\u27F7', 6949 'longmapsto': '\u27FC', 6950 'longrightarrow': '\u27F6', 6951 'Longrightarrow': '\u27F9', 6952 'LongRightArrow': '\u27F6', 6953 'looparrowleft': '\u21AB', 6954 'looparrowright': '\u21AC', 6955 'lopar': '\u2985', 6956 'lopf': '\uD835\uDD5D', 6957 'Lopf': '\uD835\uDD43', 6958 'loplus': '\u2A2D', 6959 'lotimes': '\u2A34', 6960 'lowast': '\u2217', 6961 'lowbar': '_', 6962 'LowerLeftArrow': '\u2199', 6963 'LowerRightArrow': '\u2198', 6964 'loz': '\u25CA', 6965 'lozenge': '\u25CA', 6966 'lozf': '\u29EB', 6967 'lpar': '(', 6968 'lparlt': '\u2993', 6969 'lrarr': '\u21C6', 6970 'lrcorner': '\u231F', 6971 'lrhar': '\u21CB', 6972 'lrhard': '\u296D', 6973 'lrm': '\u200E', 6974 'lrtri': '\u22BF', 6975 'lsaquo': '\u2039', 6976 'lscr': '\uD835\uDCC1', 6977 'Lscr': '\u2112', 6978 'lsh': '\u21B0', 6979 'Lsh': '\u21B0', 6980 'lsim': '\u2272', 6981 'lsime': '\u2A8D', 6982 'lsimg': '\u2A8F', 6983 'lsqb': '[', 6984 'lsquo': '\u2018', 6985 'lsquor': '\u201A', 6986 'lstrok': '\u0142', 6987 'Lstrok': '\u0141', 6988 'lt': '<', 6989 'Lt': '\u226A', 6990 'LT': '<', 6991 'ltcc': '\u2AA6', 6992 'ltcir': '\u2A79', 6993 'ltdot': '\u22D6', 6994 'lthree': '\u22CB', 6995 'ltimes': '\u22C9', 6996 'ltlarr': '\u2976', 6997 'ltquest': '\u2A7B', 6998 'ltri': '\u25C3', 6999 'ltrie': '\u22B4', 7000 'ltrif': '\u25C2', 7001 'ltrPar': '\u2996', 7002 'lurdshar': '\u294A', 7003 'luruhar': '\u2966', 7004 'lvertneqq': '\u2268\uFE00', 7005 'lvnE': '\u2268\uFE00', 7006 'macr': '\xAF', 7007 'male': '\u2642', 7008 'malt': '\u2720', 7009 'maltese': '\u2720', 7010 'map': '\u21A6', 7011 'Map': '\u2905', 7012 'mapsto': '\u21A6', 7013 'mapstodown': '\u21A7', 7014 'mapstoleft': '\u21A4', 7015 'mapstoup': '\u21A5', 7016 'marker': '\u25AE', 7017 'mcomma': '\u2A29', 7018 'mcy': '\u043C', 7019 'Mcy': '\u041C', 7020 'mdash': '\u2014', 7021 'mDDot': '\u223A', 7022 'measuredangle': '\u2221', 7023 'MediumSpace': '\u205F', 7024 'Mellintrf': '\u2133', 7025 'mfr': '\uD835\uDD2A', 7026 'Mfr': '\uD835\uDD10', 7027 'mho': '\u2127', 7028 'micro': '\xB5', 7029 'mid': '\u2223', 7030 'midast': '*', 7031 'midcir': '\u2AF0', 7032 'middot': '\xB7', 7033 'minus': '\u2212', 7034 'minusb': '\u229F', 7035 'minusd': '\u2238', 7036 'minusdu': '\u2A2A', 7037 'MinusPlus': '\u2213', 7038 'mlcp': '\u2ADB', 7039 'mldr': '\u2026', 7040 'mnplus': '\u2213', 7041 'models': '\u22A7', 7042 'mopf': '\uD835\uDD5E', 7043 'Mopf': '\uD835\uDD44', 7044 'mp': '\u2213', 7045 'mscr': '\uD835\uDCC2', 7046 'Mscr': '\u2133', 7047 'mstpos': '\u223E', 7048 'mu': '\u03BC', 7049 'Mu': '\u039C', 7050 'multimap': '\u22B8', 7051 'mumap': '\u22B8', 7052 'nabla': '\u2207', 7053 'nacute': '\u0144', 7054 'Nacute': '\u0143', 7055 'nang': '\u2220\u20D2', 7056 'nap': '\u2249', 7057 'napE': '\u2A70\u0338', 7058 'napid': '\u224B\u0338', 7059 'napos': '\u0149', 7060 'napprox': '\u2249', 7061 'natur': '\u266E', 7062 'natural': '\u266E', 7063 'naturals': '\u2115', 7064 'nbsp': '\xA0', 7065 'nbump': '\u224E\u0338', 7066 'nbumpe': '\u224F\u0338', 7067 'ncap': '\u2A43', 7068 'ncaron': '\u0148', 7069 'Ncaron': '\u0147', 7070 'ncedil': '\u0146', 7071 'Ncedil': '\u0145', 7072 'ncong': '\u2247', 7073 'ncongdot': '\u2A6D\u0338', 7074 'ncup': '\u2A42', 7075 'ncy': '\u043D', 7076 'Ncy': '\u041D', 7077 'ndash': '\u2013', 7078 'ne': '\u2260', 7079 'nearhk': '\u2924', 7080 'nearr': '\u2197', 7081 'neArr': '\u21D7', 7082 'nearrow': '\u2197', 7083 'nedot': '\u2250\u0338', 7084 'NegativeMediumSpace': '\u200B', 7085 'NegativeThickSpace': '\u200B', 7086 'NegativeThinSpace': '\u200B', 7087 'NegativeVeryThinSpace': '\u200B', 7088 'nequiv': '\u2262', 7089 'nesear': '\u2928', 7090 'nesim': '\u2242\u0338', 7091 'NestedGreaterGreater': '\u226B', 7092 'NestedLessLess': '\u226A', 7093 'NewLine': '\n', 7094 'nexist': '\u2204', 7095 'nexists': '\u2204', 7096 'nfr': '\uD835\uDD2B', 7097 'Nfr': '\uD835\uDD11', 7098 'nge': '\u2271', 7099 'ngE': '\u2267\u0338', 7100 'ngeq': '\u2271', 7101 'ngeqq': '\u2267\u0338', 7102 'ngeqslant': '\u2A7E\u0338', 7103 'nges': '\u2A7E\u0338', 7104 'nGg': '\u22D9\u0338', 7105 'ngsim': '\u2275', 7106 'ngt': '\u226F', 7107 'nGt': '\u226B\u20D2', 7108 'ngtr': '\u226F', 7109 'nGtv': '\u226B\u0338', 7110 'nharr': '\u21AE', 7111 'nhArr': '\u21CE', 7112 'nhpar': '\u2AF2', 7113 'ni': '\u220B', 7114 'nis': '\u22FC', 7115 'nisd': '\u22FA', 7116 'niv': '\u220B', 7117 'njcy': '\u045A', 7118 'NJcy': '\u040A', 7119 'nlarr': '\u219A', 7120 'nlArr': '\u21CD', 7121 'nldr': '\u2025', 7122 'nle': '\u2270', 7123 'nlE': '\u2266\u0338', 7124 'nleftarrow': '\u219A', 7125 'nLeftarrow': '\u21CD', 7126 'nleftrightarrow': '\u21AE', 7127 'nLeftrightarrow': '\u21CE', 7128 'nleq': '\u2270', 7129 'nleqq': '\u2266\u0338', 7130 'nleqslant': '\u2A7D\u0338', 7131 'nles': '\u2A7D\u0338', 7132 'nless': '\u226E', 7133 'nLl': '\u22D8\u0338', 7134 'nlsim': '\u2274', 7135 'nlt': '\u226E', 7136 'nLt': '\u226A\u20D2', 7137 'nltri': '\u22EA', 7138 'nltrie': '\u22EC', 7139 'nLtv': '\u226A\u0338', 7140 'nmid': '\u2224', 7141 'NoBreak': '\u2060', 7142 'NonBreakingSpace': '\xA0', 7143 'nopf': '\uD835\uDD5F', 7144 'Nopf': '\u2115', 7145 'not': '\xAC', 7146 'Not': '\u2AEC', 7147 'NotCongruent': '\u2262', 7148 'NotCupCap': '\u226D', 7149 'NotDoubleVerticalBar': '\u2226', 7150 'NotElement': '\u2209', 7151 'NotEqual': '\u2260', 7152 'NotEqualTilde': '\u2242\u0338', 7153 'NotExists': '\u2204', 7154 'NotGreater': '\u226F', 7155 'NotGreaterEqual': '\u2271', 7156 'NotGreaterFullEqual': '\u2267\u0338', 7157 'NotGreaterGreater': '\u226B\u0338', 7158 'NotGreaterLess': '\u2279', 7159 'NotGreaterSlantEqual': '\u2A7E\u0338', 7160 'NotGreaterTilde': '\u2275', 7161 'NotHumpDownHump': '\u224E\u0338', 7162 'NotHumpEqual': '\u224F\u0338', 7163 'notin': '\u2209', 7164 'notindot': '\u22F5\u0338', 7165 'notinE': '\u22F9\u0338', 7166 'notinva': '\u2209', 7167 'notinvb': '\u22F7', 7168 'notinvc': '\u22F6', 7169 'NotLeftTriangle': '\u22EA', 7170 'NotLeftTriangleBar': '\u29CF\u0338', 7171 'NotLeftTriangleEqual': '\u22EC', 7172 'NotLess': '\u226E', 7173 'NotLessEqual': '\u2270', 7174 'NotLessGreater': '\u2278', 7175 'NotLessLess': '\u226A\u0338', 7176 'NotLessSlantEqual': '\u2A7D\u0338', 7177 'NotLessTilde': '\u2274', 7178 'NotNestedGreaterGreater': '\u2AA2\u0338', 7179 'NotNestedLessLess': '\u2AA1\u0338', 7180 'notni': '\u220C', 7181 'notniva': '\u220C', 7182 'notnivb': '\u22FE', 7183 'notnivc': '\u22FD', 7184 'NotPrecedes': '\u2280', 7185 'NotPrecedesEqual': '\u2AAF\u0338', 7186 'NotPrecedesSlantEqual': '\u22E0', 7187 'NotReverseElement': '\u220C', 7188 'NotRightTriangle': '\u22EB', 7189 'NotRightTriangleBar': '\u29D0\u0338', 7190 'NotRightTriangleEqual': '\u22ED', 7191 'NotSquareSubset': '\u228F\u0338', 7192 'NotSquareSubsetEqual': '\u22E2', 7193 'NotSquareSuperset': '\u2290\u0338', 7194 'NotSquareSupersetEqual': '\u22E3', 7195 'NotSubset': '\u2282\u20D2', 7196 'NotSubsetEqual': '\u2288', 7197 'NotSucceeds': '\u2281', 7198 'NotSucceedsEqual': '\u2AB0\u0338', 7199 'NotSucceedsSlantEqual': '\u22E1', 7200 'NotSucceedsTilde': '\u227F\u0338', 7201 'NotSuperset': '\u2283\u20D2', 7202 'NotSupersetEqual': '\u2289', 7203 'NotTilde': '\u2241', 7204 'NotTildeEqual': '\u2244', 7205 'NotTildeFullEqual': '\u2247', 7206 'NotTildeTilde': '\u2249', 7207 'NotVerticalBar': '\u2224', 7208 'npar': '\u2226', 7209 'nparallel': '\u2226', 7210 'nparsl': '\u2AFD\u20E5', 7211 'npart': '\u2202\u0338', 7212 'npolint': '\u2A14', 7213 'npr': '\u2280', 7214 'nprcue': '\u22E0', 7215 'npre': '\u2AAF\u0338', 7216 'nprec': '\u2280', 7217 'npreceq': '\u2AAF\u0338', 7218 'nrarr': '\u219B', 7219 'nrArr': '\u21CF', 7220 'nrarrc': '\u2933\u0338', 7221 'nrarrw': '\u219D\u0338', 7222 'nrightarrow': '\u219B', 7223 'nRightarrow': '\u21CF', 7224 'nrtri': '\u22EB', 7225 'nrtrie': '\u22ED', 7226 'nsc': '\u2281', 7227 'nsccue': '\u22E1', 7228 'nsce': '\u2AB0\u0338', 7229 'nscr': '\uD835\uDCC3', 7230 'Nscr': '\uD835\uDCA9', 7231 'nshortmid': '\u2224', 7232 'nshortparallel': '\u2226', 7233 'nsim': '\u2241', 7234 'nsime': '\u2244', 7235 'nsimeq': '\u2244', 7236 'nsmid': '\u2224', 7237 'nspar': '\u2226', 7238 'nsqsube': '\u22E2', 7239 'nsqsupe': '\u22E3', 7240 'nsub': '\u2284', 7241 'nsube': '\u2288', 7242 'nsubE': '\u2AC5\u0338', 7243 'nsubset': '\u2282\u20D2', 7244 'nsubseteq': '\u2288', 7245 'nsubseteqq': '\u2AC5\u0338', 7246 'nsucc': '\u2281', 7247 'nsucceq': '\u2AB0\u0338', 7248 'nsup': '\u2285', 7249 'nsupe': '\u2289', 7250 'nsupE': '\u2AC6\u0338', 7251 'nsupset': '\u2283\u20D2', 7252 'nsupseteq': '\u2289', 7253 'nsupseteqq': '\u2AC6\u0338', 7254 'ntgl': '\u2279', 7255 'ntilde': '\xF1', 7256 'Ntilde': '\xD1', 7257 'ntlg': '\u2278', 7258 'ntriangleleft': '\u22EA', 7259 'ntrianglelefteq': '\u22EC', 7260 'ntriangleright': '\u22EB', 7261 'ntrianglerighteq': '\u22ED', 7262 'nu': '\u03BD', 7263 'Nu': '\u039D', 7264 'num': '#', 7265 'numero': '\u2116', 7266 'numsp': '\u2007', 7267 'nvap': '\u224D\u20D2', 7268 'nvdash': '\u22AC', 7269 'nvDash': '\u22AD', 7270 'nVdash': '\u22AE', 7271 'nVDash': '\u22AF', 7272 'nvge': '\u2265\u20D2', 7273 'nvgt': '>\u20D2', 7274 'nvHarr': '\u2904', 7275 'nvinfin': '\u29DE', 7276 'nvlArr': '\u2902', 7277 'nvle': '\u2264\u20D2', 7278 'nvlt': '<\u20D2', 7279 'nvltrie': '\u22B4\u20D2', 7280 'nvrArr': '\u2903', 7281 'nvrtrie': '\u22B5\u20D2', 7282 'nvsim': '\u223C\u20D2', 7283 'nwarhk': '\u2923', 7284 'nwarr': '\u2196', 7285 'nwArr': '\u21D6', 7286 'nwarrow': '\u2196', 7287 'nwnear': '\u2927', 7288 'oacute': '\xF3', 7289 'Oacute': '\xD3', 7290 'oast': '\u229B', 7291 'ocir': '\u229A', 7292 'ocirc': '\xF4', 7293 'Ocirc': '\xD4', 7294 'ocy': '\u043E', 7295 'Ocy': '\u041E', 7296 'odash': '\u229D', 7297 'odblac': '\u0151', 7298 'Odblac': '\u0150', 7299 'odiv': '\u2A38', 7300 'odot': '\u2299', 7301 'odsold': '\u29BC', 7302 'oelig': '\u0153', 7303 'OElig': '\u0152', 7304 'ofcir': '\u29BF', 7305 'ofr': '\uD835\uDD2C', 7306 'Ofr': '\uD835\uDD12', 7307 'ogon': '\u02DB', 7308 'ograve': '\xF2', 7309 'Ograve': '\xD2', 7310 'ogt': '\u29C1', 7311 'ohbar': '\u29B5', 7312 'ohm': '\u03A9', 7313 'oint': '\u222E', 7314 'olarr': '\u21BA', 7315 'olcir': '\u29BE', 7316 'olcross': '\u29BB', 7317 'oline': '\u203E', 7318 'olt': '\u29C0', 7319 'omacr': '\u014D', 7320 'Omacr': '\u014C', 7321 'omega': '\u03C9', 7322 'Omega': '\u03A9', 7323 'omicron': '\u03BF', 7324 'Omicron': '\u039F', 7325 'omid': '\u29B6', 7326 'ominus': '\u2296', 7327 'oopf': '\uD835\uDD60', 7328 'Oopf': '\uD835\uDD46', 7329 'opar': '\u29B7', 7330 'OpenCurlyDoubleQuote': '\u201C', 7331 'OpenCurlyQuote': '\u2018', 7332 'operp': '\u29B9', 7333 'oplus': '\u2295', 7334 'or': '\u2228', 7335 'Or': '\u2A54', 7336 'orarr': '\u21BB', 7337 'ord': '\u2A5D', 7338 'order': '\u2134', 7339 'orderof': '\u2134', 7340 'ordf': '\xAA', 7341 'ordm': '\xBA', 7342 'origof': '\u22B6', 7343 'oror': '\u2A56', 7344 'orslope': '\u2A57', 7345 'orv': '\u2A5B', 7346 'oS': '\u24C8', 7347 'oscr': '\u2134', 7348 'Oscr': '\uD835\uDCAA', 7349 'oslash': '\xF8', 7350 'Oslash': '\xD8', 7351 'osol': '\u2298', 7352 'otilde': '\xF5', 7353 'Otilde': '\xD5', 7354 'otimes': '\u2297', 7355 'Otimes': '\u2A37', 7356 'otimesas': '\u2A36', 7357 'ouml': '\xF6', 7358 'Ouml': '\xD6', 7359 'ovbar': '\u233D', 7360 'OverBar': '\u203E', 7361 'OverBrace': '\u23DE', 7362 'OverBracket': '\u23B4', 7363 'OverParenthesis': '\u23DC', 7364 'par': '\u2225', 7365 'para': '\xB6', 7366 'parallel': '\u2225', 7367 'parsim': '\u2AF3', 7368 'parsl': '\u2AFD', 7369 'part': '\u2202', 7370 'PartialD': '\u2202', 7371 'pcy': '\u043F', 7372 'Pcy': '\u041F', 7373 'percnt': '%', 7374 'period': '.', 7375 'permil': '\u2030', 7376 'perp': '\u22A5', 7377 'pertenk': '\u2031', 7378 'pfr': '\uD835\uDD2D', 7379 'Pfr': '\uD835\uDD13', 7380 'phi': '\u03C6', 7381 'Phi': '\u03A6', 7382 'phiv': '\u03D5', 7383 'phmmat': '\u2133', 7384 'phone': '\u260E', 7385 'pi': '\u03C0', 7386 'Pi': '\u03A0', 7387 'pitchfork': '\u22D4', 7388 'piv': '\u03D6', 7389 'planck': '\u210F', 7390 'planckh': '\u210E', 7391 'plankv': '\u210F', 7392 'plus': '+', 7393 'plusacir': '\u2A23', 7394 'plusb': '\u229E', 7395 'pluscir': '\u2A22', 7396 'plusdo': '\u2214', 7397 'plusdu': '\u2A25', 7398 'pluse': '\u2A72', 7399 'PlusMinus': '\xB1', 7400 'plusmn': '\xB1', 7401 'plussim': '\u2A26', 7402 'plustwo': '\u2A27', 7403 'pm': '\xB1', 7404 'Poincareplane': '\u210C', 7405 'pointint': '\u2A15', 7406 'popf': '\uD835\uDD61', 7407 'Popf': '\u2119', 7408 'pound': '\xA3', 7409 'pr': '\u227A', 7410 'Pr': '\u2ABB', 7411 'prap': '\u2AB7', 7412 'prcue': '\u227C', 7413 'pre': '\u2AAF', 7414 'prE': '\u2AB3', 7415 'prec': '\u227A', 7416 'precapprox': '\u2AB7', 7417 'preccurlyeq': '\u227C', 7418 'Precedes': '\u227A', 7419 'PrecedesEqual': '\u2AAF', 7420 'PrecedesSlantEqual': '\u227C', 7421 'PrecedesTilde': '\u227E', 7422 'preceq': '\u2AAF', 7423 'precnapprox': '\u2AB9', 7424 'precneqq': '\u2AB5', 7425 'precnsim': '\u22E8', 7426 'precsim': '\u227E', 7427 'prime': '\u2032', 7428 'Prime': '\u2033', 7429 'primes': '\u2119', 7430 'prnap': '\u2AB9', 7431 'prnE': '\u2AB5', 7432 'prnsim': '\u22E8', 7433 'prod': '\u220F', 7434 'Product': '\u220F', 7435 'profalar': '\u232E', 7436 'profline': '\u2312', 7437 'profsurf': '\u2313', 7438 'prop': '\u221D', 7439 'Proportion': '\u2237', 7440 'Proportional': '\u221D', 7441 'propto': '\u221D', 7442 'prsim': '\u227E', 7443 'prurel': '\u22B0', 7444 'pscr': '\uD835\uDCC5', 7445 'Pscr': '\uD835\uDCAB', 7446 'psi': '\u03C8', 7447 'Psi': '\u03A8', 7448 'puncsp': '\u2008', 7449 'qfr': '\uD835\uDD2E', 7450 'Qfr': '\uD835\uDD14', 7451 'qint': '\u2A0C', 7452 'qopf': '\uD835\uDD62', 7453 'Qopf': '\u211A', 7454 'qprime': '\u2057', 7455 'qscr': '\uD835\uDCC6', 7456 'Qscr': '\uD835\uDCAC', 7457 'quaternions': '\u210D', 7458 'quatint': '\u2A16', 7459 'quest': '?', 7460 'questeq': '\u225F', 7461 'quot': '"', 7462 'QUOT': '"', 7463 'rAarr': '\u21DB', 7464 'race': '\u223D\u0331', 7465 'racute': '\u0155', 7466 'Racute': '\u0154', 7467 'radic': '\u221A', 7468 'raemptyv': '\u29B3', 7469 'rang': '\u27E9', 7470 'Rang': '\u27EB', 7471 'rangd': '\u2992', 7472 'range': '\u29A5', 7473 'rangle': '\u27E9', 7474 'raquo': '\xBB', 7475 'rarr': '\u2192', 7476 'rArr': '\u21D2', 7477 'Rarr': '\u21A0', 7478 'rarrap': '\u2975', 7479 'rarrb': '\u21E5', 7480 'rarrbfs': '\u2920', 7481 'rarrc': '\u2933', 7482 'rarrfs': '\u291E', 7483 'rarrhk': '\u21AA', 7484 'rarrlp': '\u21AC', 7485 'rarrpl': '\u2945', 7486 'rarrsim': '\u2974', 7487 'rarrtl': '\u21A3', 7488 'Rarrtl': '\u2916', 7489 'rarrw': '\u219D', 7490 'ratail': '\u291A', 7491 'rAtail': '\u291C', 7492 'ratio': '\u2236', 7493 'rationals': '\u211A', 7494 'rbarr': '\u290D', 7495 'rBarr': '\u290F', 7496 'RBarr': '\u2910', 7497 'rbbrk': '\u2773', 7498 'rbrace': '}', 7499 'rbrack': ']', 7500 'rbrke': '\u298C', 7501 'rbrksld': '\u298E', 7502 'rbrkslu': '\u2990', 7503 'rcaron': '\u0159', 7504 'Rcaron': '\u0158', 7505 'rcedil': '\u0157', 7506 'Rcedil': '\u0156', 7507 'rceil': '\u2309', 7508 'rcub': '}', 7509 'rcy': '\u0440', 7510 'Rcy': '\u0420', 7511 'rdca': '\u2937', 7512 'rdldhar': '\u2969', 7513 'rdquo': '\u201D', 7514 'rdquor': '\u201D', 7515 'rdsh': '\u21B3', 7516 'Re': '\u211C', 7517 'real': '\u211C', 7518 'realine': '\u211B', 7519 'realpart': '\u211C', 7520 'reals': '\u211D', 7521 'rect': '\u25AD', 7522 'reg': '\xAE', 7523 'REG': '\xAE', 7524 'ReverseElement': '\u220B', 7525 'ReverseEquilibrium': '\u21CB', 7526 'ReverseUpEquilibrium': '\u296F', 7527 'rfisht': '\u297D', 7528 'rfloor': '\u230B', 7529 'rfr': '\uD835\uDD2F', 7530 'Rfr': '\u211C', 7531 'rHar': '\u2964', 7532 'rhard': '\u21C1', 7533 'rharu': '\u21C0', 7534 'rharul': '\u296C', 7535 'rho': '\u03C1', 7536 'Rho': '\u03A1', 7537 'rhov': '\u03F1', 7538 'RightAngleBracket': '\u27E9', 7539 'rightarrow': '\u2192', 7540 'Rightarrow': '\u21D2', 7541 'RightArrow': '\u2192', 7542 'RightArrowBar': '\u21E5', 7543 'RightArrowLeftArrow': '\u21C4', 7544 'rightarrowtail': '\u21A3', 7545 'RightCeiling': '\u2309', 7546 'RightDoubleBracket': '\u27E7', 7547 'RightDownTeeVector': '\u295D', 7548 'RightDownVector': '\u21C2', 7549 'RightDownVectorBar': '\u2955', 7550 'RightFloor': '\u230B', 7551 'rightharpoondown': '\u21C1', 7552 'rightharpoonup': '\u21C0', 7553 'rightleftarrows': '\u21C4', 7554 'rightleftharpoons': '\u21CC', 7555 'rightrightarrows': '\u21C9', 7556 'rightsquigarrow': '\u219D', 7557 'RightTee': '\u22A2', 7558 'RightTeeArrow': '\u21A6', 7559 'RightTeeVector': '\u295B', 7560 'rightthreetimes': '\u22CC', 7561 'RightTriangle': '\u22B3', 7562 'RightTriangleBar': '\u29D0', 7563 'RightTriangleEqual': '\u22B5', 7564 'RightUpDownVector': '\u294F', 7565 'RightUpTeeVector': '\u295C', 7566 'RightUpVector': '\u21BE', 7567 'RightUpVectorBar': '\u2954', 7568 'RightVector': '\u21C0', 7569 'RightVectorBar': '\u2953', 7570 'ring': '\u02DA', 7571 'risingdotseq': '\u2253', 7572 'rlarr': '\u21C4', 7573 'rlhar': '\u21CC', 7574 'rlm': '\u200F', 7575 'rmoust': '\u23B1', 7576 'rmoustache': '\u23B1', 7577 'rnmid': '\u2AEE', 7578 'roang': '\u27ED', 7579 'roarr': '\u21FE', 7580 'robrk': '\u27E7', 7581 'ropar': '\u2986', 7582 'ropf': '\uD835\uDD63', 7583 'Ropf': '\u211D', 7584 'roplus': '\u2A2E', 7585 'rotimes': '\u2A35', 7586 'RoundImplies': '\u2970', 7587 'rpar': ')', 7588 'rpargt': '\u2994', 7589 'rppolint': '\u2A12', 7590 'rrarr': '\u21C9', 7591 'Rrightarrow': '\u21DB', 7592 'rsaquo': '\u203A', 7593 'rscr': '\uD835\uDCC7', 7594 'Rscr': '\u211B', 7595 'rsh': '\u21B1', 7596 'Rsh': '\u21B1', 7597 'rsqb': ']', 7598 'rsquo': '\u2019', 7599 'rsquor': '\u2019', 7600 'rthree': '\u22CC', 7601 'rtimes': '\u22CA', 7602 'rtri': '\u25B9', 7603 'rtrie': '\u22B5', 7604 'rtrif': '\u25B8', 7605 'rtriltri': '\u29CE', 7606 'RuleDelayed': '\u29F4', 7607 'ruluhar': '\u2968', 7608 'rx': '\u211E', 7609 'sacute': '\u015B', 7610 'Sacute': '\u015A', 7611 'sbquo': '\u201A', 7612 'sc': '\u227B', 7613 'Sc': '\u2ABC', 7614 'scap': '\u2AB8', 7615 'scaron': '\u0161', 7616 'Scaron': '\u0160', 7617 'sccue': '\u227D', 7618 'sce': '\u2AB0', 7619 'scE': '\u2AB4', 7620 'scedil': '\u015F', 7621 'Scedil': '\u015E', 7622 'scirc': '\u015D', 7623 'Scirc': '\u015C', 7624 'scnap': '\u2ABA', 7625 'scnE': '\u2AB6', 7626 'scnsim': '\u22E9', 7627 'scpolint': '\u2A13', 7628 'scsim': '\u227F', 7629 'scy': '\u0441', 7630 'Scy': '\u0421', 7631 'sdot': '\u22C5', 7632 'sdotb': '\u22A1', 7633 'sdote': '\u2A66', 7634 'searhk': '\u2925', 7635 'searr': '\u2198', 7636 'seArr': '\u21D8', 7637 'searrow': '\u2198', 7638 'sect': '\xA7', 7639 'semi': ';', 7640 'seswar': '\u2929', 7641 'setminus': '\u2216', 7642 'setmn': '\u2216', 7643 'sext': '\u2736', 7644 'sfr': '\uD835\uDD30', 7645 'Sfr': '\uD835\uDD16', 7646 'sfrown': '\u2322', 7647 'sharp': '\u266F', 7648 'shchcy': '\u0449', 7649 'SHCHcy': '\u0429', 7650 'shcy': '\u0448', 7651 'SHcy': '\u0428', 7652 'ShortDownArrow': '\u2193', 7653 'ShortLeftArrow': '\u2190', 7654 'shortmid': '\u2223', 7655 'shortparallel': '\u2225', 7656 'ShortRightArrow': '\u2192', 7657 'ShortUpArrow': '\u2191', 7658 'shy': '\xAD', 7659 'sigma': '\u03C3', 7660 'Sigma': '\u03A3', 7661 'sigmaf': '\u03C2', 7662 'sigmav': '\u03C2', 7663 'sim': '\u223C', 7664 'simdot': '\u2A6A', 7665 'sime': '\u2243', 7666 'simeq': '\u2243', 7667 'simg': '\u2A9E', 7668 'simgE': '\u2AA0', 7669 'siml': '\u2A9D', 7670 'simlE': '\u2A9F', 7671 'simne': '\u2246', 7672 'simplus': '\u2A24', 7673 'simrarr': '\u2972', 7674 'slarr': '\u2190', 7675 'SmallCircle': '\u2218', 7676 'smallsetminus': '\u2216', 7677 'smashp': '\u2A33', 7678 'smeparsl': '\u29E4', 7679 'smid': '\u2223', 7680 'smile': '\u2323', 7681 'smt': '\u2AAA', 7682 'smte': '\u2AAC', 7683 'smtes': '\u2AAC\uFE00', 7684 'softcy': '\u044C', 7685 'SOFTcy': '\u042C', 7686 'sol': '/', 7687 'solb': '\u29C4', 7688 'solbar': '\u233F', 7689 'sopf': '\uD835\uDD64', 7690 'Sopf': '\uD835\uDD4A', 7691 'spades': '\u2660', 7692 'spadesuit': '\u2660', 7693 'spar': '\u2225', 7694 'sqcap': '\u2293', 7695 'sqcaps': '\u2293\uFE00', 7696 'sqcup': '\u2294', 7697 'sqcups': '\u2294\uFE00', 7698 'Sqrt': '\u221A', 7699 'sqsub': '\u228F', 7700 'sqsube': '\u2291', 7701 'sqsubset': '\u228F', 7702 'sqsubseteq': '\u2291', 7703 'sqsup': '\u2290', 7704 'sqsupe': '\u2292', 7705 'sqsupset': '\u2290', 7706 'sqsupseteq': '\u2292', 7707 'squ': '\u25A1', 7708 'square': '\u25A1', 7709 'Square': '\u25A1', 7710 'SquareIntersection': '\u2293', 7711 'SquareSubset': '\u228F', 7712 'SquareSubsetEqual': '\u2291', 7713 'SquareSuperset': '\u2290', 7714 'SquareSupersetEqual': '\u2292', 7715 'SquareUnion': '\u2294', 7716 'squarf': '\u25AA', 7717 'squf': '\u25AA', 7718 'srarr': '\u2192', 7719 'sscr': '\uD835\uDCC8', 7720 'Sscr': '\uD835\uDCAE', 7721 'ssetmn': '\u2216', 7722 'ssmile': '\u2323', 7723 'sstarf': '\u22C6', 7724 'star': '\u2606', 7725 'Star': '\u22C6', 7726 'starf': '\u2605', 7727 'straightepsilon': '\u03F5', 7728 'straightphi': '\u03D5', 7729 'strns': '\xAF', 7730 'sub': '\u2282', 7731 'Sub': '\u22D0', 7732 'subdot': '\u2ABD', 7733 'sube': '\u2286', 7734 'subE': '\u2AC5', 7735 'subedot': '\u2AC3', 7736 'submult': '\u2AC1', 7737 'subne': '\u228A', 7738 'subnE': '\u2ACB', 7739 'subplus': '\u2ABF', 7740 'subrarr': '\u2979', 7741 'subset': '\u2282', 7742 'Subset': '\u22D0', 7743 'subseteq': '\u2286', 7744 'subseteqq': '\u2AC5', 7745 'SubsetEqual': '\u2286', 7746 'subsetneq': '\u228A', 7747 'subsetneqq': '\u2ACB', 7748 'subsim': '\u2AC7', 7749 'subsub': '\u2AD5', 7750 'subsup': '\u2AD3', 7751 'succ': '\u227B', 7752 'succapprox': '\u2AB8', 7753 'succcurlyeq': '\u227D', 7754 'Succeeds': '\u227B', 7755 'SucceedsEqual': '\u2AB0', 7756 'SucceedsSlantEqual': '\u227D', 7757 'SucceedsTilde': '\u227F', 7758 'succeq': '\u2AB0', 7759 'succnapprox': '\u2ABA', 7760 'succneqq': '\u2AB6', 7761 'succnsim': '\u22E9', 7762 'succsim': '\u227F', 7763 'SuchThat': '\u220B', 7764 'sum': '\u2211', 7765 'Sum': '\u2211', 7766 'sung': '\u266A', 7767 'sup': '\u2283', 7768 'Sup': '\u22D1', 7769 'sup1': '\xB9', 7770 'sup2': '\xB2', 7771 'sup3': '\xB3', 7772 'supdot': '\u2ABE', 7773 'supdsub': '\u2AD8', 7774 'supe': '\u2287', 7775 'supE': '\u2AC6', 7776 'supedot': '\u2AC4', 7777 'Superset': '\u2283', 7778 'SupersetEqual': '\u2287', 7779 'suphsol': '\u27C9', 7780 'suphsub': '\u2AD7', 7781 'suplarr': '\u297B', 7782 'supmult': '\u2AC2', 7783 'supne': '\u228B', 7784 'supnE': '\u2ACC', 7785 'supplus': '\u2AC0', 7786 'supset': '\u2283', 7787 'Supset': '\u22D1', 7788 'supseteq': '\u2287', 7789 'supseteqq': '\u2AC6', 7790 'supsetneq': '\u228B', 7791 'supsetneqq': '\u2ACC', 7792 'supsim': '\u2AC8', 7793 'supsub': '\u2AD4', 7794 'supsup': '\u2AD6', 7795 'swarhk': '\u2926', 7796 'swarr': '\u2199', 7797 'swArr': '\u21D9', 7798 'swarrow': '\u2199', 7799 'swnwar': '\u292A', 7800 'szlig': '\xDF', 7801 'Tab': '\t', 7802 'target': '\u2316', 7803 'tau': '\u03C4', 7804 'Tau': '\u03A4', 7805 'tbrk': '\u23B4', 7806 'tcaron': '\u0165', 7807 'Tcaron': '\u0164', 7808 'tcedil': '\u0163', 7809 'Tcedil': '\u0162', 7810 'tcy': '\u0442', 7811 'Tcy': '\u0422', 7812 'tdot': '\u20DB', 7813 'telrec': '\u2315', 7814 'tfr': '\uD835\uDD31', 7815 'Tfr': '\uD835\uDD17', 7816 'there4': '\u2234', 7817 'therefore': '\u2234', 7818 'Therefore': '\u2234', 7819 'theta': '\u03B8', 7820 'Theta': '\u0398', 7821 'thetasym': '\u03D1', 7822 'thetav': '\u03D1', 7823 'thickapprox': '\u2248', 7824 'thicksim': '\u223C', 7825 'ThickSpace': '\u205F\u200A', 7826 'thinsp': '\u2009', 7827 'ThinSpace': '\u2009', 7828 'thkap': '\u2248', 7829 'thksim': '\u223C', 7830 'thorn': '\xFE', 7831 'THORN': '\xDE', 7832 'tilde': '\u02DC', 7833 'Tilde': '\u223C', 7834 'TildeEqual': '\u2243', 7835 'TildeFullEqual': '\u2245', 7836 'TildeTilde': '\u2248', 7837 'times': '\xD7', 7838 'timesb': '\u22A0', 7839 'timesbar': '\u2A31', 7840 'timesd': '\u2A30', 7841 'tint': '\u222D', 7842 'toea': '\u2928', 7843 'top': '\u22A4', 7844 'topbot': '\u2336', 7845 'topcir': '\u2AF1', 7846 'topf': '\uD835\uDD65', 7847 'Topf': '\uD835\uDD4B', 7848 'topfork': '\u2ADA', 7849 'tosa': '\u2929', 7850 'tprime': '\u2034', 7851 'trade': '\u2122', 7852 'TRADE': '\u2122', 7853 'triangle': '\u25B5', 7854 'triangledown': '\u25BF', 7855 'triangleleft': '\u25C3', 7856 'trianglelefteq': '\u22B4', 7857 'triangleq': '\u225C', 7858 'triangleright': '\u25B9', 7859 'trianglerighteq': '\u22B5', 7860 'tridot': '\u25EC', 7861 'trie': '\u225C', 7862 'triminus': '\u2A3A', 7863 'TripleDot': '\u20DB', 7864 'triplus': '\u2A39', 7865 'trisb': '\u29CD', 7866 'tritime': '\u2A3B', 7867 'trpezium': '\u23E2', 7868 'tscr': '\uD835\uDCC9', 7869 'Tscr': '\uD835\uDCAF', 7870 'tscy': '\u0446', 7871 'TScy': '\u0426', 7872 'tshcy': '\u045B', 7873 'TSHcy': '\u040B', 7874 'tstrok': '\u0167', 7875 'Tstrok': '\u0166', 7876 'twixt': '\u226C', 7877 'twoheadleftarrow': '\u219E', 7878 'twoheadrightarrow': '\u21A0', 7879 'uacute': '\xFA', 7880 'Uacute': '\xDA', 7881 'uarr': '\u2191', 7882 'uArr': '\u21D1', 7883 'Uarr': '\u219F', 7884 'Uarrocir': '\u2949', 7885 'ubrcy': '\u045E', 7886 'Ubrcy': '\u040E', 7887 'ubreve': '\u016D', 7888 'Ubreve': '\u016C', 7889 'ucirc': '\xFB', 7890 'Ucirc': '\xDB', 7891 'ucy': '\u0443', 7892 'Ucy': '\u0423', 7893 'udarr': '\u21C5', 7894 'udblac': '\u0171', 7895 'Udblac': '\u0170', 7896 'udhar': '\u296E', 7897 'ufisht': '\u297E', 7898 'ufr': '\uD835\uDD32', 7899 'Ufr': '\uD835\uDD18', 7900 'ugrave': '\xF9', 7901 'Ugrave': '\xD9', 7902 'uHar': '\u2963', 7903 'uharl': '\u21BF', 7904 'uharr': '\u21BE', 7905 'uhblk': '\u2580', 7906 'ulcorn': '\u231C', 7907 'ulcorner': '\u231C', 7908 'ulcrop': '\u230F', 7909 'ultri': '\u25F8', 7910 'umacr': '\u016B', 7911 'Umacr': '\u016A', 7912 'uml': '\xA8', 7913 'UnderBar': '_', 7914 'UnderBrace': '\u23DF', 7915 'UnderBracket': '\u23B5', 7916 'UnderParenthesis': '\u23DD', 7917 'Union': '\u22C3', 7918 'UnionPlus': '\u228E', 7919 'uogon': '\u0173', 7920 'Uogon': '\u0172', 7921 'uopf': '\uD835\uDD66', 7922 'Uopf': '\uD835\uDD4C', 7923 'uparrow': '\u2191', 7924 'Uparrow': '\u21D1', 7925 'UpArrow': '\u2191', 7926 'UpArrowBar': '\u2912', 7927 'UpArrowDownArrow': '\u21C5', 7928 'updownarrow': '\u2195', 7929 'Updownarrow': '\u21D5', 7930 'UpDownArrow': '\u2195', 7931 'UpEquilibrium': '\u296E', 7932 'upharpoonleft': '\u21BF', 7933 'upharpoonright': '\u21BE', 7934 'uplus': '\u228E', 7935 'UpperLeftArrow': '\u2196', 7936 'UpperRightArrow': '\u2197', 7937 'upsi': '\u03C5', 7938 'Upsi': '\u03D2', 7939 'upsih': '\u03D2', 7940 'upsilon': '\u03C5', 7941 'Upsilon': '\u03A5', 7942 'UpTee': '\u22A5', 7943 'UpTeeArrow': '\u21A5', 7944 'upuparrows': '\u21C8', 7945 'urcorn': '\u231D', 7946 'urcorner': '\u231D', 7947 'urcrop': '\u230E', 7948 'uring': '\u016F', 7949 'Uring': '\u016E', 7950 'urtri': '\u25F9', 7951 'uscr': '\uD835\uDCCA', 7952 'Uscr': '\uD835\uDCB0', 7953 'utdot': '\u22F0', 7954 'utilde': '\u0169', 7955 'Utilde': '\u0168', 7956 'utri': '\u25B5', 7957 'utrif': '\u25B4', 7958 'uuarr': '\u21C8', 7959 'uuml': '\xFC', 7960 'Uuml': '\xDC', 7961 'uwangle': '\u29A7', 7962 'vangrt': '\u299C', 7963 'varepsilon': '\u03F5', 7964 'varkappa': '\u03F0', 7965 'varnothing': '\u2205', 7966 'varphi': '\u03D5', 7967 'varpi': '\u03D6', 7968 'varpropto': '\u221D', 7969 'varr': '\u2195', 7970 'vArr': '\u21D5', 7971 'varrho': '\u03F1', 7972 'varsigma': '\u03C2', 7973 'varsubsetneq': '\u228A\uFE00', 7974 'varsubsetneqq': '\u2ACB\uFE00', 7975 'varsupsetneq': '\u228B\uFE00', 7976 'varsupsetneqq': '\u2ACC\uFE00', 7977 'vartheta': '\u03D1', 7978 'vartriangleleft': '\u22B2', 7979 'vartriangleright': '\u22B3', 7980 'vBar': '\u2AE8', 7981 'Vbar': '\u2AEB', 7982 'vBarv': '\u2AE9', 7983 'vcy': '\u0432', 7984 'Vcy': '\u0412', 7985 'vdash': '\u22A2', 7986 'vDash': '\u22A8', 7987 'Vdash': '\u22A9', 7988 'VDash': '\u22AB', 7989 'Vdashl': '\u2AE6', 7990 'vee': '\u2228', 7991 'Vee': '\u22C1', 7992 'veebar': '\u22BB', 7993 'veeeq': '\u225A', 7994 'vellip': '\u22EE', 7995 'verbar': '|', 7996 'Verbar': '\u2016', 7997 'vert': '|', 7998 'Vert': '\u2016', 7999 'VerticalBar': '\u2223', 8000 'VerticalLine': '|', 8001 'VerticalSeparator': '\u2758', 8002 'VerticalTilde': '\u2240', 8003 'VeryThinSpace': '\u200A', 8004 'vfr': '\uD835\uDD33', 8005 'Vfr': '\uD835\uDD19', 8006 'vltri': '\u22B2', 8007 'vnsub': '\u2282\u20D2', 8008 'vnsup': '\u2283\u20D2', 8009 'vopf': '\uD835\uDD67', 8010 'Vopf': '\uD835\uDD4D', 8011 'vprop': '\u221D', 8012 'vrtri': '\u22B3', 8013 'vscr': '\uD835\uDCCB', 8014 'Vscr': '\uD835\uDCB1', 8015 'vsubne': '\u228A\uFE00', 8016 'vsubnE': '\u2ACB\uFE00', 8017 'vsupne': '\u228B\uFE00', 8018 'vsupnE': '\u2ACC\uFE00', 8019 'Vvdash': '\u22AA', 8020 'vzigzag': '\u299A', 8021 'wcirc': '\u0175', 8022 'Wcirc': '\u0174', 8023 'wedbar': '\u2A5F', 8024 'wedge': '\u2227', 8025 'Wedge': '\u22C0', 8026 'wedgeq': '\u2259', 8027 'weierp': '\u2118', 8028 'wfr': '\uD835\uDD34', 8029 'Wfr': '\uD835\uDD1A', 8030 'wopf': '\uD835\uDD68', 8031 'Wopf': '\uD835\uDD4E', 8032 'wp': '\u2118', 8033 'wr': '\u2240', 8034 'wreath': '\u2240', 8035 'wscr': '\uD835\uDCCC', 8036 'Wscr': '\uD835\uDCB2', 8037 'xcap': '\u22C2', 8038 'xcirc': '\u25EF', 8039 'xcup': '\u22C3', 8040 'xdtri': '\u25BD', 8041 'xfr': '\uD835\uDD35', 8042 'Xfr': '\uD835\uDD1B', 8043 'xharr': '\u27F7', 8044 'xhArr': '\u27FA', 8045 'xi': '\u03BE', 8046 'Xi': '\u039E', 8047 'xlarr': '\u27F5', 8048 'xlArr': '\u27F8', 8049 'xmap': '\u27FC', 8050 'xnis': '\u22FB', 8051 'xodot': '\u2A00', 8052 'xopf': '\uD835\uDD69', 8053 'Xopf': '\uD835\uDD4F', 8054 'xoplus': '\u2A01', 8055 'xotime': '\u2A02', 8056 'xrarr': '\u27F6', 8057 'xrArr': '\u27F9', 8058 'xscr': '\uD835\uDCCD', 8059 'Xscr': '\uD835\uDCB3', 8060 'xsqcup': '\u2A06', 8061 'xuplus': '\u2A04', 8062 'xutri': '\u25B3', 8063 'xvee': '\u22C1', 8064 'xwedge': '\u22C0', 8065 'yacute': '\xFD', 8066 'Yacute': '\xDD', 8067 'yacy': '\u044F', 8068 'YAcy': '\u042F', 8069 'ycirc': '\u0177', 8070 'Ycirc': '\u0176', 8071 'ycy': '\u044B', 8072 'Ycy': '\u042B', 8073 'yen': '\xA5', 8074 'yfr': '\uD835\uDD36', 8075 'Yfr': '\uD835\uDD1C', 8076 'yicy': '\u0457', 8077 'YIcy': '\u0407', 8078 'yopf': '\uD835\uDD6A', 8079 'Yopf': '\uD835\uDD50', 8080 'yscr': '\uD835\uDCCE', 8081 'Yscr': '\uD835\uDCB4', 8082 'yucy': '\u044E', 8083 'YUcy': '\u042E', 8084 'yuml': '\xFF', 8085 'Yuml': '\u0178', 8086 'zacute': '\u017A', 8087 'Zacute': '\u0179', 8088 'zcaron': '\u017E', 8089 'Zcaron': '\u017D', 8090 'zcy': '\u0437', 8091 'Zcy': '\u0417', 8092 'zdot': '\u017C', 8093 'Zdot': '\u017B', 8094 'zeetrf': '\u2128', 8095 'ZeroWidthSpace': '\u200B', 8096 'zeta': '\u03B6', 8097 'Zeta': '\u0396', 8098 'zfr': '\uD835\uDD37', 8099 'Zfr': '\u2128', 8100 'zhcy': '\u0436', 8101 'ZHcy': '\u0416', 8102 'zigrarr': '\u21DD', 8103 'zopf': '\uD835\uDD6B', 8104 'Zopf': '\u2124', 8105 'zscr': '\uD835\uDCCF', 8106 'Zscr': '\uD835\uDCB5', 8107 'zwj': '\u200D', 8108 'zwnj': '\u200C' 8109 }; 8110 var decodeMapLegacy = { 8111 'aacute': '\xE1', 8112 'Aacute': '\xC1', 8113 'acirc': '\xE2', 8114 'Acirc': '\xC2', 8115 'acute': '\xB4', 8116 'aelig': '\xE6', 8117 'AElig': '\xC6', 8118 'agrave': '\xE0', 8119 'Agrave': '\xC0', 8120 'amp': '&', 8121 'AMP': '&', 8122 'aring': '\xE5', 8123 'Aring': '\xC5', 8124 'atilde': '\xE3', 8125 'Atilde': '\xC3', 8126 'auml': '\xE4', 8127 'Auml': '\xC4', 8128 'brvbar': '\xA6', 8129 'ccedil': '\xE7', 8130 'Ccedil': '\xC7', 8131 'cedil': '\xB8', 8132 'cent': '\xA2', 8133 'copy': '\xA9', 8134 'COPY': '\xA9', 8135 'curren': '\xA4', 8136 'deg': '\xB0', 8137 'divide': '\xF7', 8138 'eacute': '\xE9', 8139 'Eacute': '\xC9', 8140 'ecirc': '\xEA', 8141 'Ecirc': '\xCA', 8142 'egrave': '\xE8', 8143 'Egrave': '\xC8', 8144 'eth': '\xF0', 8145 'ETH': '\xD0', 8146 'euml': '\xEB', 8147 'Euml': '\xCB', 8148 'frac12': '\xBD', 8149 'frac14': '\xBC', 8150 'frac34': '\xBE', 8151 'gt': '>', 8152 'GT': '>', 8153 'iacute': '\xED', 8154 'Iacute': '\xCD', 8155 'icirc': '\xEE', 8156 'Icirc': '\xCE', 8157 'iexcl': '\xA1', 8158 'igrave': '\xEC', 8159 'Igrave': '\xCC', 8160 'iquest': '\xBF', 8161 'iuml': '\xEF', 8162 'Iuml': '\xCF', 8163 'laquo': '\xAB', 8164 'lt': '<', 8165 'LT': '<', 8166 'macr': '\xAF', 8167 'micro': '\xB5', 8168 'middot': '\xB7', 8169 'nbsp': '\xA0', 8170 'not': '\xAC', 8171 'ntilde': '\xF1', 8172 'Ntilde': '\xD1', 8173 'oacute': '\xF3', 8174 'Oacute': '\xD3', 8175 'ocirc': '\xF4', 8176 'Ocirc': '\xD4', 8177 'ograve': '\xF2', 8178 'Ograve': '\xD2', 8179 'ordf': '\xAA', 8180 'ordm': '\xBA', 8181 'oslash': '\xF8', 8182 'Oslash': '\xD8', 8183 'otilde': '\xF5', 8184 'Otilde': '\xD5', 8185 'ouml': '\xF6', 8186 'Ouml': '\xD6', 8187 'para': '\xB6', 8188 'plusmn': '\xB1', 8189 'pound': '\xA3', 8190 'quot': '"', 8191 'QUOT': '"', 8192 'raquo': '\xBB', 8193 'reg': '\xAE', 8194 'REG': '\xAE', 8195 'sect': '\xA7', 8196 'shy': '\xAD', 8197 'sup1': '\xB9', 8198 'sup2': '\xB2', 8199 'sup3': '\xB3', 8200 'szlig': '\xDF', 8201 'thorn': '\xFE', 8202 'THORN': '\xDE', 8203 'times': '\xD7', 8204 'uacute': '\xFA', 8205 'Uacute': '\xDA', 8206 'ucirc': '\xFB', 8207 'Ucirc': '\xDB', 8208 'ugrave': '\xF9', 8209 'Ugrave': '\xD9', 8210 'uml': '\xA8', 8211 'uuml': '\xFC', 8212 'Uuml': '\xDC', 8213 'yacute': '\xFD', 8214 'Yacute': '\xDD', 8215 'yen': '\xA5', 8216 'yuml': '\xFF' 8217 }; 8218 var decodeMapNumeric = { 8219 '0': '\uFFFD', 8220 '128': '\u20AC', 8221 '130': '\u201A', 8222 '131': '\u0192', 8223 '132': '\u201E', 8224 '133': '\u2026', 8225 '134': '\u2020', 8226 '135': '\u2021', 8227 '136': '\u02C6', 8228 '137': '\u2030', 8229 '138': '\u0160', 8230 '139': '\u2039', 8231 '140': '\u0152', 8232 '142': '\u017D', 8233 '145': '\u2018', 8234 '146': '\u2019', 8235 '147': '\u201C', 8236 '148': '\u201D', 8237 '149': '\u2022', 8238 '150': '\u2013', 8239 '151': '\u2014', 8240 '152': '\u02DC', 8241 '153': '\u2122', 8242 '154': '\u0161', 8243 '155': '\u203A', 8244 '156': '\u0153', 8245 '158': '\u017E', 8246 '159': '\u0178' 8247 }; 8248 var invalidReferenceCodePoints = [1, 2, 3, 4, 5, 6, 7, 8, 11, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 64976, 64977, 64978, 64979, 64980, 64981, 64982, 64983, 64984, 64985, 64986, 64987, 64988, 64989, 64990, 64991, 64992, 64993, 64994, 64995, 64996, 64997, 64998, 64999, 65000, 65001, 65002, 65003, 65004, 65005, 65006, 65007, 65534, 65535, 131070, 131071, 196606, 196607, 262142, 262143, 327678, 327679, 393214, 393215, 458750, 458751, 524286, 524287, 589822, 589823, 655358, 655359, 720894, 720895, 786430, 786431, 851966, 851967, 917502, 917503, 983038, 983039, 1048574, 1048575, 1114110, 1114111]; 8249 /*--------------------------------------------------------------------------*/ 8250 8251 var stringFromCharCode = String.fromCharCode; 8252 var object = {}; 8253 var hasOwnProperty = object.hasOwnProperty; 8254 8255 var has = function (object, propertyName) { 8256 return hasOwnProperty.call(object, propertyName); 8257 }; 8258 8259 var contains = function (array, value) { 8260 var index = -1; 8261 var length = array.length; 8262 8263 while (++index < length) { 8264 if (array[index] == value) { 8265 return true; 8266 } 8267 } 8268 8269 return false; 8270 }; 8271 8272 var merge = function (options, defaults) { 8273 if (!options) { 8274 return defaults; 8275 } 8276 8277 var result = {}; 8278 var key; 8279 8280 for (key in defaults) { 8281 // A `hasOwnProperty` check is not needed here, since only recognized 8282 // option names are used anyway. Any others are ignored. 8283 result[key] = has(options, key) ? options[key] : defaults[key]; 8284 } 8285 8286 return result; 8287 }; // Modified version of `ucs2encode`; see https://mths.be/punycode. 8288 8289 8290 var codePointToSymbol = function (codePoint, strict) { 8291 var output = ''; 8292 8293 if (codePoint >= 0xD800 && codePoint <= 0xDFFF || codePoint > 0x10FFFF) { 8294 // See issue #4: 8295 // âOtherwise, if the number is in the range 0xD800 to 0xDFFF or is 8296 // greater than 0x10FFFF, then this is a parse error. Return a U+FFFD 8297 // REPLACEMENT CHARACTER.â 8298 if (strict) { 8299 parseError('character reference outside the permissible Unicode range'); 8300 } 8301 8302 return '\uFFFD'; 8303 } 8304 8305 if (has(decodeMapNumeric, codePoint)) { 8306 if (strict) { 8307 parseError('disallowed character reference'); 8308 } 8309 8310 return decodeMapNumeric[codePoint]; 8311 } 8312 8313 if (strict && contains(invalidReferenceCodePoints, codePoint)) { 8314 parseError('disallowed character reference'); 8315 } 8316 8317 if (codePoint > 0xFFFF) { 8318 codePoint -= 0x10000; 8319 output += stringFromCharCode(codePoint >>> 10 & 0x3FF | 0xD800); 8320 codePoint = 0xDC00 | codePoint & 0x3FF; 8321 } 8322 8323 output += stringFromCharCode(codePoint); 8324 return output; 8325 }; 8326 8327 var hexEscape = function (codePoint) { 8328 return '&#x' + codePoint.toString(16).toUpperCase() + ';'; 8329 }; 8330 8331 var decEscape = function (codePoint) { 8332 return '&#' + codePoint + ';'; 8333 }; 8334 8335 var parseError = function (message) { 8336 throw Error('Parse error: ' + message); 8337 }; 8338 /*--------------------------------------------------------------------------*/ 8339 8340 8341 var encode = function (string, options) { 8342 options = merge(options, encode.options); 8343 var strict = options.strict; 8344 8345 if (strict && regexInvalidRawCodePoint.test(string)) { 8346 parseError('forbidden code point'); 8347 } 8348 8349 var encodeEverything = options.encodeEverything; 8350 var useNamedReferences = options.useNamedReferences; 8351 var allowUnsafeSymbols = options.allowUnsafeSymbols; 8352 var escapeCodePoint = options.decimal ? decEscape : hexEscape; 8353 8354 var escapeBmpSymbol = function (symbol) { 8355 return escapeCodePoint(symbol.charCodeAt(0)); 8356 }; 8357 8358 if (encodeEverything) { 8359 // Encode ASCII symbols. 8360 string = string.replace(regexAsciiWhitelist, function (symbol) { 8361 // Use named references if requested & possible. 8362 if (useNamedReferences && has(encodeMap, symbol)) { 8363 return '&' + encodeMap[symbol] + ';'; 8364 } 8365 8366 return escapeBmpSymbol(symbol); 8367 }); // Shorten a few escapes that represent two symbols, of which at least one 8368 // is within the ASCII range. 8369 8370 if (useNamedReferences) { 8371 string = string.replace(/>\u20D2/g, '>⃒').replace(/<\u20D2/g, '<⃒').replace(/fj/g, 'fj'); 8372 } // Encode non-ASCII symbols. 8373 8374 8375 if (useNamedReferences) { 8376 // Encode non-ASCII symbols that can be replaced with a named reference. 8377 string = string.replace(regexEncodeNonAscii, function (string) { 8378 // Note: there is no need to check `has(encodeMap, string)` here. 8379 return '&' + encodeMap[string] + ';'; 8380 }); 8381 } // Note: any remaining non-ASCII symbols are handled outside of the `if`. 8382 8383 } else if (useNamedReferences) { 8384 // Apply named character references. 8385 // Encode `<>"'&` using named character references. 8386 if (!allowUnsafeSymbols) { 8387 string = string.replace(regexEscape, function (string) { 8388 return '&' + encodeMap[string] + ';'; // no need to check `has()` here 8389 }); 8390 } // Shorten escapes that represent two symbols, of which at least one is 8391 // `<>"'&`. 8392 8393 8394 string = string.replace(/>\u20D2/g, '>⃒').replace(/<\u20D2/g, '<⃒'); // Encode non-ASCII symbols that can be replaced with a named reference. 8395 8396 string = string.replace(regexEncodeNonAscii, function (string) { 8397 // Note: there is no need to check `has(encodeMap, string)` here. 8398 return '&' + encodeMap[string] + ';'; 8399 }); 8400 } else if (!allowUnsafeSymbols) { 8401 // Encode `<>"'&` using hexadecimal escapes, now that theyâre not handled 8402 // using named character references. 8403 string = string.replace(regexEscape, escapeBmpSymbol); 8404 } 8405 8406 return string // Encode astral symbols. 8407 .replace(regexAstralSymbols, function ($0) { 8408 // https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae 8409 var high = $0.charCodeAt(0); 8410 var low = $0.charCodeAt(1); 8411 var codePoint = (high - 0xD800) * 0x400 + low - 0xDC00 + 0x10000; 8412 return escapeCodePoint(codePoint); 8413 }) // Encode any remaining BMP symbols that are not printable ASCII symbols 8414 // using a hexadecimal escape. 8415 .replace(regexBmpWhitelist, escapeBmpSymbol); 8416 }; // Expose default options (so they can be overridden globally). 8417 8418 8419 encode.options = { 8420 'allowUnsafeSymbols': false, 8421 'encodeEverything': false, 8422 'strict': false, 8423 'useNamedReferences': false, 8424 'decimal': false 8425 }; 8426 8427 var decode = function (html, options) { 8428 options = merge(options, decode.options); 8429 var strict = options.strict; 8430 8431 if (strict && regexInvalidEntity.test(html)) { 8432 parseError('malformed character reference'); 8433 } 8434 8435 return html.replace(regexDecode, function ($0, $1, $2, $3, $4, $5, $6, $7, $8) { 8436 var codePoint; 8437 var semicolon; 8438 var decDigits; 8439 var hexDigits; 8440 var reference; 8441 var next; 8442 8443 if ($1) { 8444 reference = $1; // Note: there is no need to check `has(decodeMap, reference)`. 8445 8446 return decodeMap[reference]; 8447 } 8448 8449 if ($2) { 8450 // Decode named character references without trailing `;`, e.g. `&`. 8451 // This is only a parse error if it gets converted to `&`, or if it is 8452 // followed by `=` in an attribute context. 8453 reference = $2; 8454 next = $3; 8455 8456 if (next && options.isAttributeValue) { 8457 if (strict && next == '=') { 8458 parseError('`&` did not start a character reference'); 8459 } 8460 8461 return $0; 8462 } else { 8463 if (strict) { 8464 parseError('named character reference was not terminated by a semicolon'); 8465 } // Note: there is no need to check `has(decodeMapLegacy, reference)`. 8466 8467 8468 return decodeMapLegacy[reference] + (next || ''); 8469 } 8470 } 8471 8472 if ($4) { 8473 // Decode decimal escapes, e.g. `𝌆`. 8474 decDigits = $4; 8475 semicolon = $5; 8476 8477 if (strict && !semicolon) { 8478 parseError('character reference was not terminated by a semicolon'); 8479 } 8480 8481 codePoint = parseInt(decDigits, 10); 8482 return codePointToSymbol(codePoint, strict); 8483 } 8484 8485 if ($6) { 8486 // Decode hexadecimal escapes, e.g. `𝌆`. 8487 hexDigits = $6; 8488 semicolon = $7; 8489 8490 if (strict && !semicolon) { 8491 parseError('character reference was not terminated by a semicolon'); 8492 } 8493 8494 codePoint = parseInt(hexDigits, 16); 8495 return codePointToSymbol(codePoint, strict); 8496 } // If weâre still here, `if ($7)` is implied; itâs an ambiguous 8497 // ampersand for sure. https://mths.be/notes/ambiguous-ampersands 8498 8499 8500 if (strict) { 8501 parseError('named character reference was not terminated by a semicolon'); 8502 } 8503 8504 return $0; 8505 }); 8506 }; // Expose default options (so they can be overridden globally). 8507 8508 8509 decode.options = { 8510 'isAttributeValue': false, 8511 'strict': false 8512 }; 8513 8514 var escape = function (string) { 8515 return string.replace(regexEscape, function ($0) { 8516 // Note: there is no need to check `has(escapeMap, $0)` here. 8517 return escapeMap[$0]; 8518 }); 8519 }; 8520 /*--------------------------------------------------------------------------*/ 8521 8522 8523 var he = { 8524 'version': '1.2.0', 8525 'encode': encode, 8526 'decode': decode, 8527 'escape': escape, 8528 'unescape': decode 8529 }; // Some AMD build optimizers, like r.js, check for specific condition patterns 8530 // like the following: 8531 8532 if (true) { 8533 !(__WEBPACK_AMD_DEFINE_RESULT__ = (function () { 8534 return he; 8535 }).call(exports, __webpack_require__, exports, module), 8536 __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); 8537 } else { var key; } 8538})(this); 8539/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module), __webpack_require__(/*! ./../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) 8540 8541/***/ }), 8542
vendor: 31,458 bytes, lines 8543-9497
8543/***/ "./node_modules/history/esm/history.js": 8544/*!*********************************************!*\ 8545 !*** ./node_modules/history/esm/history.js ***! 8546 \*********************************************/ 8547/*! exports provided: createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath */ 8548/***/ (function(module, __webpack_exports__, __webpack_require__) { 8549 8550"use strict"; 8551__webpack_require__.r(__webpack_exports__); 8552/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createBrowserHistory", function() { return createBrowserHistory; }); 8553/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createHashHistory", function() { return createHashHistory; }); 8554/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createMemoryHistory", function() { return createMemoryHistory; }); 8555/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createLocation", function() { return createLocation; }); 8556/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "locationsAreEqual", function() { return locationsAreEqual; }); 8557/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "parsePath", function() { return parsePath; }); 8558/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createPath", function() { return createPath; }); 8559/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "./node_modules/@babel/runtime/helpers/esm/extends.js"); 8560/* harmony import */ var resolve_pathname__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! resolve-pathname */ "./node_modules/resolve-pathname/esm/resolve-pathname.js"); 8561/* harmony import */ var value_equal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! value-equal */ "./node_modules/value-equal/esm/value-equal.js"); 8562/* harmony import */ var tiny_warning__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! tiny-warning */ "./node_modules/tiny-warning/dist/tiny-warning.esm.js"); 8563/* harmony import */ var tiny_invariant__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! tiny-invariant */ "./node_modules/tiny-invariant/dist/tiny-invariant.esm.js"); 8564 8565 8566 8567 8568 8569 8570function addLeadingSlash(path) { 8571 return path.charAt(0) === '/' ? path : '/' + path; 8572} 8573 8574function stripLeadingSlash(path) { 8575 return path.charAt(0) === '/' ? path.substr(1) : path; 8576} 8577 8578function hasBasename(path, prefix) { 8579 return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1; 8580} 8581 8582function stripBasename(path, prefix) { 8583 return hasBasename(path, prefix) ? path.substr(prefix.length) : path; 8584} 8585 8586function stripTrailingSlash(path) { 8587 return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path; 8588} 8589 8590function parsePath(path) { 8591 var pathname = path || '/'; 8592 var search = ''; 8593 var hash = ''; 8594 var hashIndex = pathname.indexOf('#'); 8595 8596 if (hashIndex !== -1) { 8597 hash = pathname.substr(hashIndex); 8598 pathname = pathname.substr(0, hashIndex); 8599 } 8600 8601 var searchIndex = pathname.indexOf('?'); 8602 8603 if (searchIndex !== -1) { 8604 search = pathname.substr(searchIndex); 8605 pathname = pathname.substr(0, searchIndex); 8606 } 8607 8608 return { 8609 pathname: pathname, 8610 search: search === '?' ? '' : search, 8611 hash: hash === '#' ? '' : hash 8612 }; 8613} 8614 8615function createPath(location) { 8616 var pathname = location.pathname, 8617 search = location.search, 8618 hash = location.hash; 8619 var path = pathname || '/'; 8620 if (search && search !== '?') path += search.charAt(0) === '?' ? search : "?" + search; 8621 if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : "#" + hash; 8622 return path; 8623} 8624 8625function createLocation(path, state, key, currentLocation) { 8626 var location; 8627 8628 if (typeof path === 'string') { 8629 // Two-arg form: push(path, state) 8630 location = parsePath(path); 8631 location.state = state; 8632 } else { 8633 // One-arg form: push(location) 8634 location = Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, path); 8635 if (location.pathname === undefined) location.pathname = ''; 8636 8637 if (location.search) { 8638 if (location.search.charAt(0) !== '?') location.search = '?' + location.search; 8639 } else { 8640 location.search = ''; 8641 } 8642 8643 if (location.hash) { 8644 if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash; 8645 } else { 8646 location.hash = ''; 8647 } 8648 8649 if (state !== undefined && location.state === undefined) location.state = state; 8650 } 8651 8652 try { 8653 location.pathname = decodeURI(location.pathname); 8654 } catch (e) { 8655 if (e instanceof URIError) { 8656 throw new URIError('Pathname "' + location.pathname + '" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.'); 8657 } else { 8658 throw e; 8659 } 8660 } 8661 8662 if (key) location.key = key; 8663 8664 if (currentLocation) { 8665 // Resolve incomplete/relative pathname relative to current location. 8666 if (!location.pathname) { 8667 location.pathname = currentLocation.pathname; 8668 } else if (location.pathname.charAt(0) !== '/') { 8669 location.pathname = Object(resolve_pathname__WEBPACK_IMPORTED_MODULE_1__["default"])(location.pathname, currentLocation.pathname); 8670 } 8671 } else { 8672 // When there is no prior location and pathname is empty, set it to / 8673 if (!location.pathname) { 8674 location.pathname = '/'; 8675 } 8676 } 8677 8678 return location; 8679} 8680 8681function locationsAreEqual(a, b) { 8682 return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && Object(value_equal__WEBPACK_IMPORTED_MODULE_2__["default"])(a.state, b.state); 8683} 8684 8685function createTransitionManager() { 8686 var prompt = null; 8687 8688 function setPrompt(nextPrompt) { 8689 true ? Object(tiny_warning__WEBPACK_IMPORTED_MODULE_3__["default"])(prompt == null, 'A history supports only one prompt at a time') : undefined; 8690 prompt = nextPrompt; 8691 return function () { 8692 if (prompt === nextPrompt) prompt = null; 8693 }; 8694 } 8695 8696 function confirmTransitionTo(location, action, getUserConfirmation, callback) { 8697 // TODO: If another transition starts while we're still confirming 8698 // the previous one, we may end up in a weird state. Figure out the 8699 // best way to handle this. 8700 if (prompt != null) { 8701 var result = typeof prompt === 'function' ? prompt(location, action) : prompt; 8702 8703 if (typeof result === 'string') { 8704 if (typeof getUserConfirmation === 'function') { 8705 getUserConfirmation(result, callback); 8706 } else { 8707 true ? Object(tiny_warning__WEBPACK_IMPORTED_MODULE_3__["default"])(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : undefined; 8708 callback(true); 8709 } 8710 } else { 8711 // Return false from a transition hook to cancel the transition. 8712 callback(result !== false); 8713 } 8714 } else { 8715 callback(true); 8716 } 8717 } 8718 8719 var listeners = []; 8720 8721 function appendListener(fn) { 8722 var isActive = true; 8723 8724 function listener() { 8725 if (isActive) fn.apply(void 0, arguments); 8726 } 8727 8728 listeners.push(listener); 8729 return function () { 8730 isActive = false; 8731 listeners = listeners.filter(function (item) { 8732 return item !== listener; 8733 }); 8734 }; 8735 } 8736 8737 function notifyListeners() { 8738 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { 8739 args[_key] = arguments[_key]; 8740 } 8741 8742 listeners.forEach(function (listener) { 8743 return listener.apply(void 0, args); 8744 }); 8745 } 8746 8747 return { 8748 setPrompt: setPrompt, 8749 confirmTransitionTo: confirmTransitionTo, 8750 appendListener: appendListener, 8751 notifyListeners: notifyListeners 8752 }; 8753} 8754 8755var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement); 8756 8757function getConfirmation(message, callback) { 8758 callback(window.confirm(message)); // eslint-disable-line no-alert 8759} 8760/** 8761 * Returns true if the HTML5 history API is supported. Taken from Modernizr. 8762 * 8763 * https://github.com/Modernizr/Modernizr/blob/master/LICENSE 8764 * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js 8765 * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586 8766 */ 8767 8768 8769function supportsHistory() { 8770 var ua = window.navigator.userAgent; 8771 if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false; 8772 return window.history && 'pushState' in window.history; 8773} 8774/** 8775 * Returns true if browser fires popstate on hash change. 8776 * IE10 and IE11 do not. 8777 */ 8778 8779 8780function supportsPopStateOnHashChange() { 8781 return window.navigator.userAgent.indexOf('Trident') === -1; 8782} 8783/** 8784 * Returns false if using go(n) with hash history causes a full page reload. 8785 */ 8786 8787 8788function supportsGoWithoutReloadUsingHash() { 8789 return window.navigator.userAgent.indexOf('Firefox') === -1; 8790} 8791/** 8792 * Returns true if a given popstate event is an extraneous WebKit event. 8793 * Accounts for the fact that Chrome on iOS fires real popstate events 8794 * containing undefined state when pressing the back button. 8795 */ 8796 8797 8798function isExtraneousPopstateEvent(event) { 8799 return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1; 8800} 8801 8802var PopStateEvent = 'popstate'; 8803var HashChangeEvent = 'hashchange'; 8804 8805function getHistoryState() { 8806 try { 8807 return window.history.state || {}; 8808 } catch (e) { 8809 // IE 11 sometimes throws when accessing window.history.state 8810 // See https://github.com/ReactTraining/history/pull/289 8811 return {}; 8812 } 8813} 8814/** 8815 * Creates a history object that uses the HTML5 history API including 8816 * pushState, replaceState, and the popstate event. 8817 */ 8818 8819 8820function createBrowserHistory(props) { 8821 if (props === void 0) { 8822 props = {}; 8823 } 8824 8825 !canUseDOM ? true ? Object(tiny_invariant__WEBPACK_IMPORTED_MODULE_4__["default"])(false, 'Browser history needs a DOM') : undefined : void 0; 8826 var globalHistory = window.history; 8827 var canUseHistory = supportsHistory(); 8828 var needsHashChangeListener = !supportsPopStateOnHashChange(); 8829 var _props = props, 8830 _props$forceRefresh = _props.forceRefresh, 8831 forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh, 8832 _props$getUserConfirm = _props.getUserConfirmation, 8833 getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm, 8834 _props$keyLength = _props.keyLength, 8835 keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength; 8836 var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : ''; 8837 8838 function getDOMLocation(historyState) { 8839 var _ref = historyState || {}, 8840 key = _ref.key, 8841 state = _ref.state; 8842 8843 var _window$location = window.location, 8844 pathname = _window$location.pathname, 8845 search = _window$location.search, 8846 hash = _window$location.hash; 8847 var path = pathname + search + hash; 8848 true ? Object(tiny_warning__WEBPACK_IMPORTED_MODULE_3__["default"])(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path "' + path + '" to begin with "' + basename + '".') : undefined; 8849 if (basename) path = stripBasename(path, basename); 8850 return createLocation(path, state, key); 8851 } 8852 8853 function createKey() { 8854 return Math.random().toString(36).substr(2, keyLength); 8855 } 8856 8857 var transitionManager = createTransitionManager(); 8858 8859 function setState(nextState) { 8860 Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])(history, nextState); 8861 8862 history.length = globalHistory.length; 8863 transitionManager.notifyListeners(history.location, history.action); 8864 } 8865 8866 function handlePopState(event) { 8867 // Ignore extraneous popstate events in WebKit. 8868 if (isExtraneousPopstateEvent(event)) return; 8869 handlePop(getDOMLocation(event.state)); 8870 } 8871 8872 function handleHashChange() { 8873 handlePop(getDOMLocation(getHistoryState())); 8874 } 8875 8876 var forceNextPop = false; 8877 8878 function handlePop(location) { 8879 if (forceNextPop) { 8880 forceNextPop = false; 8881 setState(); 8882 } else { 8883 var action = 'POP'; 8884 transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) { 8885 if (ok) { 8886 setState({ 8887 action: action, 8888 location: location 8889 }); 8890 } else { 8891 revertPop(location); 8892 } 8893 }); 8894 } 8895 } 8896 8897 function revertPop(fromLocation) { 8898 var toLocation = history.location; // TODO: We could probably make this more reliable by 8899 // keeping a list of keys we've seen in sessionStorage. 8900 // Instead, we just default to 0 for keys we don't know. 8901 8902 var toIndex = allKeys.indexOf(toLocation.key); 8903 if (toIndex === -1) toIndex = 0; 8904 var fromIndex = allKeys.indexOf(fromLocation.key); 8905 if (fromIndex === -1) fromIndex = 0; 8906 var delta = toIndex - fromIndex; 8907 8908 if (delta) { 8909 forceNextPop = true; 8910 go(delta); 8911 } 8912 } 8913 8914 var initialLocation = getDOMLocation(getHistoryState()); 8915 var allKeys = [initialLocation.key]; // Public interface 8916 8917 function createHref(location) { 8918 return basename + createPath(location); 8919 } 8920 8921 function push(path, state) { 8922 true ? Object(tiny_warning__WEBPACK_IMPORTED_MODULE_3__["default"])(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : undefined; 8923 var action = 'PUSH'; 8924 var location = createLocation(path, state, createKey(), history.location); 8925 transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) { 8926 if (!ok) return; 8927 var href = createHref(location); 8928 var key = location.key, 8929 state = location.state; 8930 8931 if (canUseHistory) { 8932 globalHistory.pushState({ 8933 key: key, 8934 state: state 8935 }, null, href); 8936 8937 if (forceRefresh) { 8938 window.location.href = href; 8939 } else { 8940 var prevIndex = allKeys.indexOf(history.location.key); 8941 var nextKeys = allKeys.slice(0, prevIndex + 1); 8942 nextKeys.push(location.key); 8943 allKeys = nextKeys; 8944 setState({ 8945 action: action, 8946 location: location 8947 }); 8948 } 8949 } else { 8950 true ? Object(tiny_warning__WEBPACK_IMPORTED_MODULE_3__["default"])(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : undefined; 8951 window.location.href = href; 8952 } 8953 }); 8954 } 8955 8956 function replace(path, state) { 8957 true ? Object(tiny_warning__WEBPACK_IMPORTED_MODULE_3__["default"])(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : undefined; 8958 var action = 'REPLACE'; 8959 var location = createLocation(path, state, createKey(), history.location); 8960 transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) { 8961 if (!ok) return; 8962 var href = createHref(location); 8963 var key = location.key, 8964 state = location.state; 8965 8966 if (canUseHistory) { 8967 globalHistory.replaceState({ 8968 key: key, 8969 state: state 8970 }, null, href); 8971 8972 if (forceRefresh) { 8973 window.location.replace(href); 8974 } else { 8975 var prevIndex = allKeys.indexOf(history.location.key); 8976 if (prevIndex !== -1) allKeys[prevIndex] = location.key; 8977 setState({ 8978 action: action, 8979 location: location 8980 }); 8981 } 8982 } else { 8983 true ? Object(tiny_warning__WEBPACK_IMPORTED_MODULE_3__["default"])(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : undefined; 8984 window.location.replace(href); 8985 } 8986 }); 8987 } 8988 8989 function go(n) { 8990 globalHistory.go(n); 8991 } 8992 8993 function goBack() { 8994 go(-1); 8995 } 8996 8997 function goForward() { 8998 go(1); 8999 } 9000 9001 var listenerCount = 0; 9002 9003 function checkDOMListeners(delta) { 9004 listenerCount += delta; 9005 9006 if (listenerCount === 1 && delta === 1) { 9007 window.addEventListener(PopStateEvent, handlePopState); 9008 if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange); 9009 } else if (listenerCount === 0) { 9010 window.removeEventListener(PopStateEvent, handlePopState); 9011 if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange); 9012 } 9013 } 9014 9015 var isBlocked = false; 9016 9017 function block(prompt) { 9018 if (prompt === void 0) { 9019 prompt = false; 9020 } 9021 9022 var unblock = transitionManager.setPrompt(prompt); 9023 9024 if (!isBlocked) { 9025 checkDOMListeners(1); 9026 isBlocked = true; 9027 } 9028 9029 return function () { 9030 if (isBlocked) { 9031 isBlocked = false; 9032 checkDOMListeners(-1); 9033 } 9034 9035 return unblock(); 9036 }; 9037 } 9038 9039 function listen(listener) { 9040 var unlisten = transitionManager.appendListener(listener); 9041 checkDOMListeners(1); 9042 return function () { 9043 checkDOMListeners(-1); 9044 unlisten(); 9045 }; 9046 } 9047 9048 var history = { 9049 length: globalHistory.length, 9050 action: 'POP', 9051 location: initialLocation, 9052 createHref: createHref, 9053 push: push, 9054 replace: replace, 9055 go: go, 9056 goBack: goBack, 9057 goForward: goForward, 9058 block: block, 9059 listen: listen 9060 }; 9061 return history; 9062} 9063 9064var HashChangeEvent$1 = 'hashchange'; 9065var HashPathCoders = { 9066 hashbang: { 9067 encodePath: function encodePath(path) { 9068 return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path); 9069 }, 9070 decodePath: function decodePath(path) { 9071 return path.charAt(0) === '!' ? path.substr(1) : path; 9072 } 9073 }, 9074 noslash: { 9075 encodePath: stripLeadingSlash, 9076 decodePath: addLeadingSlash 9077 }, 9078 slash: { 9079 encodePath: addLeadingSlash, 9080 decodePath: addLeadingSlash 9081 } 9082}; 9083 9084function stripHash(url) { 9085 var hashIndex = url.indexOf('#'); 9086 return hashIndex === -1 ? url : url.slice(0, hashIndex); 9087} 9088 9089function getHashPath() { 9090 // We can't use window.location.hash here because it's not 9091 // consistent across browsers - Firefox will pre-decode it! 9092 var href = window.location.href; 9093 var hashIndex = href.indexOf('#'); 9094 return hashIndex === -1 ? '' : href.substring(hashIndex + 1); 9095} 9096 9097function pushHashPath(path) { 9098 window.location.hash = path; 9099} 9100 9101function replaceHashPath(path) { 9102 window.location.replace(stripHash(window.location.href) + '#' + path); 9103} 9104 9105function createHashHistory(props) { 9106 if (props === void 0) { 9107 props = {}; 9108 } 9109 9110 !canUseDOM ? true ? Object(tiny_invariant__WEBPACK_IMPORTED_MODULE_4__["default"])(false, 'Hash history needs a DOM') : undefined : void 0; 9111 var globalHistory = window.history; 9112 var canGoWithoutReload = supportsGoWithoutReloadUsingHash(); 9113 var _props = props, 9114 _props$getUserConfirm = _props.getUserConfirmation, 9115 getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm, 9116 _props$hashType = _props.hashType, 9117 hashType = _props$hashType === void 0 ? 'slash' : _props$hashType; 9118 var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : ''; 9119 var _HashPathCoders$hashT = HashPathCoders[hashType], 9120 encodePath = _HashPathCoders$hashT.encodePath, 9121 decodePath = _HashPathCoders$hashT.decodePath; 9122 9123 function getDOMLocation() { 9124 var path = decodePath(getHashPath()); 9125 true ? Object(tiny_warning__WEBPACK_IMPORTED_MODULE_3__["default"])(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path "' + path + '" to begin with "' + basename + '".') : undefined; 9126 if (basename) path = stripBasename(path, basename); 9127 return createLocation(path); 9128 } 9129 9130 var transitionManager = createTransitionManager(); 9131 9132 function setState(nextState) { 9133 Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])(history, nextState); 9134 9135 history.length = globalHistory.length; 9136 transitionManager.notifyListeners(history.location, history.action); 9137 } 9138 9139 var forceNextPop = false; 9140 var ignorePath = null; 9141 9142 function locationsAreEqual$$1(a, b) { 9143 return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash; 9144 } 9145 9146 function handleHashChange() { 9147 var path = getHashPath(); 9148 var encodedPath = encodePath(path); 9149 9150 if (path !== encodedPath) { 9151 // Ensure we always have a properly-encoded hash. 9152 replaceHashPath(encodedPath); 9153 } else { 9154 var location = getDOMLocation(); 9155 var prevLocation = history.location; 9156 if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change. 9157 9158 if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace. 9159 9160 ignorePath = null; 9161 handlePop(location); 9162 } 9163 } 9164 9165 function handlePop(location) { 9166 if (forceNextPop) { 9167 forceNextPop = false; 9168 setState(); 9169 } else { 9170 var action = 'POP'; 9171 transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) { 9172 if (ok) { 9173 setState({ 9174 action: action, 9175 location: location 9176 }); 9177 } else { 9178 revertPop(location); 9179 } 9180 }); 9181 } 9182 } 9183 9184 function revertPop(fromLocation) { 9185 var toLocation = history.location; // TODO: We could probably make this more reliable by 9186 // keeping a list of paths we've seen in sessionStorage. 9187 // Instead, we just default to 0 for paths we don't know. 9188 9189 var toIndex = allPaths.lastIndexOf(createPath(toLocation)); 9190 if (toIndex === -1) toIndex = 0; 9191 var fromIndex = allPaths.lastIndexOf(createPath(fromLocation)); 9192 if (fromIndex === -1) fromIndex = 0; 9193 var delta = toIndex - fromIndex; 9194 9195 if (delta) { 9196 forceNextPop = true; 9197 go(delta); 9198 } 9199 } // Ensure the hash is encoded properly before doing anything else. 9200 9201 9202 var path = getHashPath(); 9203 var encodedPath = encodePath(path); 9204 if (path !== encodedPath) replaceHashPath(encodedPath); 9205 var initialLocation = getDOMLocation(); 9206 var allPaths = [createPath(initialLocation)]; // Public interface 9207 9208 function createHref(location) { 9209 var baseTag = document.querySelector('base'); 9210 var href = ''; 9211 9212 if (baseTag && baseTag.getAttribute('href')) { 9213 href = stripHash(window.location.href); 9214 } 9215 9216 return href + '#' + encodePath(basename + createPath(location)); 9217 } 9218 9219 function push(path, state) { 9220 true ? Object(tiny_warning__WEBPACK_IMPORTED_MODULE_3__["default"])(state === undefined, 'Hash history cannot push state; it is ignored') : undefined; 9221 var action = 'PUSH'; 9222 var location = createLocation(path, undefined, undefined, history.location); 9223 transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) { 9224 if (!ok) return; 9225 var path = createPath(location); 9226 var encodedPath = encodePath(basename + path); 9227 var hashChanged = getHashPath() !== encodedPath; 9228 9229 if (hashChanged) { 9230 // We cannot tell if a hashchange was caused by a PUSH, so we'd 9231 // rather setState here and ignore the hashchange. The caveat here 9232 // is that other hash histories in the page will consider it a POP. 9233 ignorePath = path; 9234 pushHashPath(encodedPath); 9235 var prevIndex = allPaths.lastIndexOf(createPath(history.location)); 9236 var nextPaths = allPaths.slice(0, prevIndex + 1); 9237 nextPaths.push(path); 9238 allPaths = nextPaths; 9239 setState({ 9240 action: action, 9241 location: location 9242 }); 9243 } else { 9244 true ? Object(tiny_warning__WEBPACK_IMPORTED_MODULE_3__["default"])(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : undefined; 9245 setState(); 9246 } 9247 }); 9248 } 9249 9250 function replace(path, state) { 9251 true ? Object(tiny_warning__WEBPACK_IMPORTED_MODULE_3__["default"])(state === undefined, 'Hash history cannot replace state; it is ignored') : undefined; 9252 var action = 'REPLACE'; 9253 var location = createLocation(path, undefined, undefined, history.location); 9254 transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) { 9255 if (!ok) return; 9256 var path = createPath(location); 9257 var encodedPath = encodePath(basename + path); 9258 var hashChanged = getHashPath() !== encodedPath; 9259 9260 if (hashChanged) { 9261 // We cannot tell if a hashchange was caused by a REPLACE, so we'd 9262 // rather setState here and ignore the hashchange. The caveat here 9263 // is that other hash histories in the page will consider it a POP. 9264 ignorePath = path; 9265 replaceHashPath(encodedPath); 9266 } 9267 9268 var prevIndex = allPaths.indexOf(createPath(history.location)); 9269 if (prevIndex !== -1) allPaths[prevIndex] = path; 9270 setState({ 9271 action: action, 9272 location: location 9273 }); 9274 }); 9275 } 9276 9277 function go(n) { 9278 true ? Object(tiny_warning__WEBPACK_IMPORTED_MODULE_3__["default"])(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : undefined; 9279 globalHistory.go(n); 9280 } 9281 9282 function goBack() { 9283 go(-1); 9284 } 9285 9286 function goForward() { 9287 go(1); 9288 } 9289 9290 var listenerCount = 0; 9291 9292 function checkDOMListeners(delta) { 9293 listenerCount += delta; 9294 9295 if (listenerCount === 1 && delta === 1) { 9296 window.addEventListener(HashChangeEvent$1, handleHashChange); 9297 } else if (listenerCount === 0) { 9298 window.removeEventListener(HashChangeEvent$1, handleHashChange); 9299 } 9300 } 9301 9302 var isBlocked = false; 9303 9304 function block(prompt) { 9305 if (prompt === void 0) { 9306 prompt = false; 9307 } 9308 9309 var unblock = transitionManager.setPrompt(prompt); 9310 9311 if (!isBlocked) { 9312 checkDOMListeners(1); 9313 isBlocked = true; 9314 } 9315 9316 return function () { 9317 if (isBlocked) { 9318 isBlocked = false; 9319 checkDOMListeners(-1); 9320 } 9321 9322 return unblock(); 9323 }; 9324 } 9325 9326 function listen(listener) { 9327 var unlisten = transitionManager.appendListener(listener); 9328 checkDOMListeners(1); 9329 return function () { 9330 checkDOMListeners(-1); 9331 unlisten(); 9332 }; 9333 } 9334 9335 var history = { 9336 length: globalHistory.length, 9337 action: 'POP', 9338 location: initialLocation, 9339 createHref: createHref, 9340 push: push, 9341 replace: replace, 9342 go: go, 9343 goBack: goBack, 9344 goForward: goForward, 9345 block: block, 9346 listen: listen 9347 }; 9348 return history; 9349} 9350 9351function clamp(n, lowerBound, upperBound) { 9352 return Math.min(Math.max(n, lowerBound), upperBound); 9353} 9354/** 9355 * Creates a history object that stores locations in memory. 9356 */ 9357 9358 9359function createMemoryHistory(props) { 9360 if (props === void 0) { 9361 props = {}; 9362 } 9363 9364 var _props = props, 9365 getUserConfirmation = _props.getUserConfirmation, 9366 _props$initialEntries = _props.initialEntries, 9367 initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries, 9368 _props$initialIndex = _props.initialIndex, 9369 initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex, 9370 _props$keyLength = _props.keyLength, 9371 keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength; 9372 var transitionManager = createTransitionManager(); 9373 9374 function setState(nextState) { 9375 Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])(history, nextState); 9376 9377 history.length = history.entries.length; 9378 transitionManager.notifyListeners(history.location, history.action); 9379 } 9380 9381 function createKey() { 9382 return Math.random().toString(36).substr(2, keyLength); 9383 } 9384 9385 var index = clamp(initialIndex, 0, initialEntries.length - 1); 9386 var entries = initialEntries.map(function (entry) { 9387 return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey()); 9388 }); // Public interface 9389 9390 var createHref = createPath; 9391 9392 function push(path, state) { 9393 true ? Object(tiny_warning__WEBPACK_IMPORTED_MODULE_3__["default"])(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : undefined; 9394 var action = 'PUSH'; 9395 var location = createLocation(path, state, createKey(), history.location); 9396 transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) { 9397 if (!ok) return; 9398 var prevIndex = history.index; 9399 var nextIndex = prevIndex + 1; 9400 var nextEntries = history.entries.slice(0); 9401 9402 if (nextEntries.length > nextIndex) { 9403 nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location); 9404 } else { 9405 nextEntries.push(location); 9406 } 9407 9408 setState({ 9409 action: action, 9410 location: location, 9411 index: nextIndex, 9412 entries: nextEntries 9413 }); 9414 }); 9415 } 9416 9417 function replace(path, state) { 9418 true ? Object(tiny_warning__WEBPACK_IMPORTED_MODULE_3__["default"])(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : undefined; 9419 var action = 'REPLACE'; 9420 var location = createLocation(path, state, createKey(), history.location); 9421 transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) { 9422 if (!ok) return; 9423 history.entries[history.index] = location; 9424 setState({ 9425 action: action, 9426 location: location 9427 }); 9428 }); 9429 } 9430 9431 function go(n) { 9432 var nextIndex = clamp(history.index + n, 0, history.entries.length - 1); 9433 var action = 'POP'; 9434 var location = history.entries[nextIndex]; 9435 transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) { 9436 if (ok) { 9437 setState({ 9438 action: action, 9439 location: location, 9440 index: nextIndex 9441 }); 9442 } else { 9443 // Mimic the behavior of DOM histories by 9444 // causing a render after a cancelled POP. 9445 setState(); 9446 } 9447 }); 9448 } 9449 9450 function goBack() { 9451 go(-1); 9452 } 9453 9454 function goForward() { 9455 go(1); 9456 } 9457 9458 function canGo(n) { 9459 var nextIndex = history.index + n; 9460 return nextIndex >= 0 && nextIndex < history.entries.length; 9461 } 9462 9463 function block(prompt) { 9464 if (prompt === void 0) { 9465 prompt = false; 9466 } 9467 9468 return transitionManager.setPrompt(prompt); 9469 } 9470 9471 function listen(listener) { 9472 return transitionManager.appendListener(listener); 9473 } 9474 9475 var history = { 9476 length: entries.length, 9477 action: 'POP', 9478 location: entries[index], 9479 index: index, 9480 entries: entries, 9481 createHref: createHref, 9482 push: push, 9483 replace: replace, 9484 go: go, 9485 goBack: goBack, 9486 goForward: goForward, 9487 canGo: canGo, 9488 block: block, 9489 listen: listen 9490 }; 9491 return history; 9492} 9493 9494 9495 9496/***/ }), 9497
vendor: 2,337 bytes, lines 9498-9595
9498/***/ "./node_modules/ieee754/index.js": 9499/*!***************************************!*\ 9500 !*** ./node_modules/ieee754/index.js ***! 9501 \***************************************/ 9502/*! no static exports found */ 9503/***/ (function(module, exports) { 9504 9505exports.read = function (buffer, offset, isLE, mLen, nBytes) { 9506 var e, m; 9507 var eLen = nBytes * 8 - mLen - 1; 9508 var eMax = (1 << eLen) - 1; 9509 var eBias = eMax >> 1; 9510 var nBits = -7; 9511 var i = isLE ? nBytes - 1 : 0; 9512 var d = isLE ? -1 : 1; 9513 var s = buffer[offset + i]; 9514 i += d; 9515 e = s & (1 << -nBits) - 1; 9516 s >>= -nBits; 9517 nBits += eLen; 9518 9519 for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {} 9520 9521 m = e & (1 << -nBits) - 1; 9522 e >>= -nBits; 9523 nBits += mLen; 9524 9525 for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {} 9526 9527 if (e === 0) { 9528 e = 1 - eBias; 9529 } else if (e === eMax) { 9530 return m ? NaN : (s ? -1 : 1) * Infinity; 9531 } else { 9532 m = m + Math.pow(2, mLen); 9533 e = e - eBias; 9534 } 9535 9536 return (s ? -1 : 1) * m * Math.pow(2, e - mLen); 9537}; 9538 9539exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { 9540 var e, m, c; 9541 var eLen = nBytes * 8 - mLen - 1; 9542 var eMax = (1 << eLen) - 1; 9543 var eBias = eMax >> 1; 9544 var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0; 9545 var i = isLE ? 0 : nBytes - 1; 9546 var d = isLE ? 1 : -1; 9547 var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0; 9548 value = Math.abs(value); 9549 9550 if (isNaN(value) || value === Infinity) { 9551 m = isNaN(value) ? 1 : 0; 9552 e = eMax; 9553 } else { 9554 e = Math.floor(Math.log(value) / Math.LN2); 9555 9556 if (value * (c = Math.pow(2, -e)) < 1) { 9557 e--; 9558 c *= 2; 9559 } 9560 9561 if (e + eBias >= 1) { 9562 value += rt / c; 9563 } else { 9564 value += rt * Math.pow(2, 1 - eBias); 9565 } 9566 9567 if (value * c >= 2) { 9568 e++; 9569 c /= 2; 9570 } 9571 9572 if (e + eBias >= eMax) { 9573 m = 0; 9574 e = eMax; 9575 } else if (e + eBias >= 1) { 9576 m = (value * c - 1) * Math.pow(2, mLen); 9577 e = e + eBias; 9578 } else { 9579 m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen); 9580 e = 0; 9581 } 9582 } 9583 9584 for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} 9585 9586 e = e << mLen | m; 9587 eLen += mLen; 9588 9589 for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} 9590 9591 buffer[offset + i - d] |= s * 128; 9592}; 9593 9594/***/ }), 9595
vendor: 12,022 bytes, lines 9596-10000
9596/***/ "./node_modules/is-what/dist/index.esm.js": 9597/*!************************************************!*\ 9598 !*** ./node_modules/is-what/dist/index.esm.js ***! 9599 \************************************************/ 9600/*! exports provided: getType, isAnyObject, isArray, isBlob, isBoolean, isDate, isEmptyArray, isEmptyObject, isEmptyString, isError, isFile, isFullString, isFunction, isMap, isNaNValue, isNull, isNullOrUndefined, isNumber, isObject, isObjectLike, isPlainObject, isPrimitive, isPromise, isRegExp, isSet, isString, isSymbol, isType, isUndefined, isWeakMap, isWeakSet */ 9601/***/ (function(module, __webpack_exports__, __webpack_require__) { 9602 9603"use strict"; 9604__webpack_require__.r(__webpack_exports__); 9605/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getType", function() { return getType; }); 9606/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isAnyObject", function() { return isAnyObject; }); 9607/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isArray", function() { return isArray; }); 9608/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isBlob", function() { return isBlob; }); 9609/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isBoolean", function() { return isBoolean; }); 9610/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isDate", function() { return isDate; }); 9611/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isEmptyArray", function() { return isEmptyArray; }); 9612/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isEmptyObject", function() { return isEmptyObject; }); 9613/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isEmptyString", function() { return isEmptyString; }); 9614/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isError", function() { return isError; }); 9615/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isFile", function() { return isFile; }); 9616/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isFullString", function() { return isFullString; }); 9617/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isFunction", function() { return isFunction; }); 9618/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isMap", function() { return isMap; }); 9619/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isNaNValue", function() { return isNaNValue; }); 9620/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isNull", function() { return isNull; }); 9621/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isNullOrUndefined", function() { return isNullOrUndefined; }); 9622/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isNumber", function() { return isNumber; }); 9623/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isObject", function() { return isObject; }); 9624/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isObjectLike", function() { return isObjectLike; }); 9625/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isPlainObject", function() { return isPlainObject; }); 9626/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isPrimitive", function() { return isPrimitive; }); 9627/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isPromise", function() { return isPromise; }); 9628/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isRegExp", function() { return isRegExp; }); 9629/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isSet", function() { return isSet; }); 9630/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isString", function() { return isString; }); 9631/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isSymbol", function() { return isSymbol; }); 9632/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isType", function() { return isType; }); 9633/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isUndefined", function() { return isUndefined; }); 9634/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isWeakMap", function() { return isWeakMap; }); 9635/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isWeakSet", function() { return isWeakSet; }); 9636/** 9637 * Returns the object type of the given payload 9638 * 9639 * @param {*} payload 9640 * @returns {string} 9641 */ 9642function getType(payload) { 9643 return Object.prototype.toString.call(payload).slice(8, -1); 9644} 9645/** 9646 * Returns whether the payload is undefined 9647 * 9648 * @param {*} payload 9649 * @returns {payload is undefined} 9650 */ 9651 9652 9653function isUndefined(payload) { 9654 return getType(payload) === 'Undefined'; 9655} 9656/** 9657 * Returns whether the payload is null 9658 * 9659 * @param {*} payload 9660 * @returns {payload is null} 9661 */ 9662 9663 9664function isNull(payload) { 9665 return getType(payload) === 'Null'; 9666} 9667/** 9668 * Returns whether the payload is a plain JavaScript object (excluding special classes or objects with other prototypes) 9669 * 9670 * @param {*} payload 9671 * @returns {payload is {[key: string]: any}} 9672 */ 9673 9674 9675function isPlainObject(payload) { 9676 if (getType(payload) !== 'Object') return false; 9677 return payload.constructor === Object && Object.getPrototypeOf(payload) === Object.prototype; 9678} 9679/** 9680 * Returns whether the payload is a plain JavaScript object (excluding special classes or objects with other prototypes) 9681 * 9682 * @param {*} payload 9683 * @returns {payload is {[key: string]: any}} 9684 */ 9685 9686 9687function isObject(payload) { 9688 return isPlainObject(payload); 9689} 9690/** 9691 * Returns whether the payload is a an empty object (excluding special classes or objects with other prototypes) 9692 * 9693 * @param {*} payload 9694 * @returns {payload is {}} 9695 */ 9696 9697 9698function isEmptyObject(payload) { 9699 return isPlainObject(payload) && Object.keys(payload).length === 0; 9700} 9701/** 9702 * Returns whether the payload is an any kind of object (including special classes or objects with different prototypes) 9703 * 9704 * @param {*} payload 9705 * @returns {payload is {[key: string]: any}} 9706 */ 9707 9708 9709function isAnyObject(payload) { 9710 return getType(payload) === 'Object'; 9711} 9712/** 9713 * Returns whether the payload is an object like a type passed in < > 9714 * 9715 * Usage: isObjectLike<{id: any}>(payload) // will make sure it's an object and has an `id` prop. 9716 * 9717 * @template T this must be passed in < > 9718 * @param {*} payload 9719 * @returns {payload is T} 9720 */ 9721 9722 9723function isObjectLike(payload) { 9724 return isAnyObject(payload); 9725} 9726/** 9727 * Returns whether the payload is a function 9728 * 9729 * @param {*} payload 9730 * @returns {payload is Function} 9731 */ 9732 9733 9734function isFunction(payload) { 9735 return getType(payload) === 'Function'; 9736} 9737/** 9738 * Returns whether the payload is an array 9739 * 9740 * @param {*} payload 9741 * @returns {payload is undefined} 9742 */ 9743 9744 9745function isArray(payload) { 9746 return getType(payload) === 'Array'; 9747} 9748/** 9749 * Returns whether the payload is a an empty array 9750 * 9751 * @param {*} payload 9752 * @returns {payload is []} 9753 */ 9754 9755 9756function isEmptyArray(payload) { 9757 return isArray(payload) && payload.length === 0; 9758} 9759/** 9760 * Returns whether the payload is a string 9761 * 9762 * @param {*} payload 9763 * @returns {payload is string} 9764 */ 9765 9766 9767function isString(payload) { 9768 return getType(payload) === 'String'; 9769} 9770/** 9771 * Returns whether the payload is a string, BUT returns false for '' 9772 * 9773 * @param {*} payload 9774 * @returns {payload is string} 9775 */ 9776 9777 9778function isFullString(payload) { 9779 return isString(payload) && payload !== ''; 9780} 9781/** 9782 * Returns whether the payload is '' 9783 * 9784 * @param {*} payload 9785 * @returns {payload is string} 9786 */ 9787 9788 9789function isEmptyString(payload) { 9790 return payload === ''; 9791} 9792/** 9793 * Returns whether the payload is a number 9794 * 9795 * This will return false for NaN 9796 * 9797 * @param {*} payload 9798 * @returns {payload is number} 9799 */ 9800 9801 9802function isNumber(payload) { 9803 return getType(payload) === 'Number' && !isNaN(payload); 9804} 9805/** 9806 * Returns whether the payload is a boolean 9807 * 9808 * @param {*} payload 9809 * @returns {payload is boolean} 9810 */ 9811 9812 9813function isBoolean(payload) { 9814 return getType(payload) === 'Boolean'; 9815} 9816/** 9817 * Returns whether the payload is a regular expression (RegExp) 9818 * 9819 * @param {*} payload 9820 * @returns {payload is RegExp} 9821 */ 9822 9823 9824function isRegExp(payload) { 9825 return getType(payload) === 'RegExp'; 9826} 9827/** 9828 * Returns whether the payload is a Map 9829 * 9830 * @param {*} payload 9831 * @returns {payload is Map} 9832 */ 9833 9834 9835function isMap(payload) { 9836 return getType(payload) === 'Map'; 9837} 9838/** 9839 * Returns whether the payload is a WeakMap 9840 * 9841 * @param {*} payload 9842 * @returns {payload is WeakMap} 9843 */ 9844 9845 9846function isWeakMap(payload) { 9847 return getType(payload) === 'WeakMap'; 9848} 9849/** 9850 * Returns whether the payload is a Set 9851 * 9852 * @param {*} payload 9853 * @returns {payload is Set} 9854 */ 9855 9856 9857function isSet(payload) { 9858 return getType(payload) === 'Set'; 9859} 9860/** 9861 * Returns whether the payload is a WeakSet 9862 * 9863 * @param {*} payload 9864 * @returns {payload is WeakSet} 9865 */ 9866 9867 9868function isWeakSet(payload) { 9869 return getType(payload) === 'WeakSet'; 9870} 9871/** 9872 * Returns whether the payload is a Symbol 9873 * 9874 * @param {*} payload 9875 * @returns {payload is symbol} 9876 */ 9877 9878 9879function isSymbol(payload) { 9880 return getType(payload) === 'Symbol'; 9881} 9882/** 9883 * Returns whether the payload is a Date, and that the date is valid 9884 * 9885 * @param {*} payload 9886 * @returns {payload is Date} 9887 */ 9888 9889 9890function isDate(payload) { 9891 return getType(payload) === 'Date' && !isNaN(payload); 9892} 9893/** 9894 * Returns whether the payload is a Blob 9895 * 9896 * @param {*} payload 9897 * @returns {payload is Blob} 9898 */ 9899 9900 9901function isBlob(payload) { 9902 return getType(payload) === 'Blob'; 9903} 9904/** 9905 * Returns whether the payload is a File 9906 * 9907 * @param {*} payload 9908 * @returns {payload is File} 9909 */ 9910 9911 9912function isFile(payload) { 9913 return getType(payload) === 'File'; 9914} 9915/** 9916 * Returns whether the payload is a Promise 9917 * 9918 * @param {*} payload 9919 * @returns {payload is Promise} 9920 */ 9921 9922 9923function isPromise(payload) { 9924 return getType(payload) === 'Promise'; 9925} 9926/** 9927 * Returns whether the payload is an Error 9928 * 9929 * @param {*} payload 9930 * @returns {payload is Error} 9931 */ 9932 9933 9934function isError(payload) { 9935 return getType(payload) === 'Error'; 9936} 9937/** 9938 * Returns whether the payload is `NaN` but also a `number` 9939 * 9940 * @param {*} payload 9941 * @returns {payload is typeof NaN} 9942 */ 9943 9944 9945function isNaNValue(payload) { 9946 return getType(payload) === 'Number' && isNaN(payload); 9947} 9948/** 9949 * Returns whether the payload is a primitive type (eg. Boolean | Null | Undefined | Number | String | Symbol) 9950 * 9951 * @param {*} payload 9952 * @returns {(payload is boolean | null | undefined | number | string | symbol)} 9953 */ 9954 9955 9956function isPrimitive(payload) { 9957 return isBoolean(payload) || isNull(payload) || isUndefined(payload) || isNumber(payload) || isString(payload) || isSymbol(payload); 9958} 9959/** 9960 * Returns true whether the payload is null or undefined 9961 * 9962 * @param {*} payload 9963 * @returns {(payload is null | undefined)} 9964 */ 9965 9966 9967function isNullOrUndefined(payload) { 9968 return isNull(payload) || isUndefined(payload); 9969} 9970/** 9971 * Does a generic check to check that the given payload is of a given type. 9972 * In cases like Number, it will return true for NaN as NaN is a Number (thanks javascript!); 9973 * It will, however, differentiate between object and null 9974 * 9975 * @template T 9976 * @param {*} payload 9977 * @param {T} type 9978 * @throws {TypeError} Will throw type error if type is an invalid type 9979 * @returns {payload is T} 9980 */ 9981 9982 9983function isType(payload, type) { 9984 if (!(type instanceof Function)) { 9985 throw new TypeError('Type must be a function'); 9986 } 9987 9988 if (!Object.prototype.hasOwnProperty.call(type, 'prototype')) { 9989 throw new TypeError('Type is not a class'); 9990 } // Classes usually have names (as functions usually have names) 9991 9992 9993 var name = type.name; 9994 return getType(payload) === name || Boolean(payload && payload.constructor === type); 9995} 9996 9997 9998 9999/***/ }), 10000
vendor: 386 bytes, lines 10001-10015
10001/***/ "./node_modules/isarray/index.js": 10002/*!***************************************!*\ 10003 !*** ./node_modules/isarray/index.js ***! 10004 \***************************************/ 10005/*! no static exports found */ 10006/***/ (function(module, exports) { 10007 10008var toString = {}.toString; 10009 10010module.exports = Array.isArray || function (arr) { 10011 return toString.call(arr) == '[object Array]'; 10012}; 10013 10014/***/ }), 10015
vendor: 34,092 bytes, lines 10016-11283
10016/***/ "./node_modules/marked/lib/marked.js": 10017/*!*******************************************!*\ 10018 !*** ./node_modules/marked/lib/marked.js ***! 10019 \*******************************************/ 10020/*! no static exports found */ 10021/***/ (function(module, exports, __webpack_require__) { 10022 10023/* WEBPACK VAR INJECTION */(function(global) {/** 10024 * marked - a markdown parser 10025 * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed) 10026 * https://github.com/markedjs/marked 10027 */ 10028; 10029 10030(function (root) { 10031 'use strict'; 10032 /** 10033 * Block-Level Grammar 10034 */ 10035 10036 var block = { 10037 newline: /^\n+/, 10038 code: /^( {4}[^\n]+\n*)+/, 10039 fences: noop, 10040 hr: /^ {0,3}((?:- *){3,}|(?:_ *){3,}|(?:\* *){3,})(?:\n+|$)/, 10041 heading: /^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/, 10042 nptable: noop, 10043 blockquote: /^( {0,3}> ?(paragraph|[^\n]*)(?:\n|$))+/, 10044 list: /^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/, 10045 html: /^ *(?:comment *(?:\n|\s*$)|closed *(?:\n{2,}|\s*$)|closing *(?:\n{2,}|\s*$))/, 10046 def: /^ {0,3}\[(label)\]: *\n? *<?([^\s>]+)>?(?:(?: +\n? *| *\n *)(title))? *(?:\n+|$)/, 10047 table: noop, 10048 lheading: /^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/, 10049 paragraph: /^([^\n]+(?:\n?(?!hr|heading|lheading| {0,3}>|tag)[^\n]+)+)/, 10050 text: /^[^\n]+/ 10051 }; 10052 block._label = /(?:\\[\[\]]|[^\[\]])+/; 10053 block._title = /(?:"(?:\\"|[^"]|"[^"\n]*")*"|'\n?(?:[^'\n]+\n?)*'|\([^()]*\))/; 10054 block.def = edit(block.def).replace('label', block._label).replace('title', block._title).getRegex(); 10055 block.bullet = /(?:[*+-]|\d+\.)/; 10056 block.item = /^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/; 10057 block.item = edit(block.item, 'gm').replace(/bull/g, block.bullet).getRegex(); 10058 block.list = edit(block.list).replace(/bull/g, block.bullet).replace('hr', '\\n+(?=\\1?(?:(?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$))').replace('def', '\\n+(?=' + block.def.source + ')').getRegex(); 10059 block._tag = '(?!(?:' + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code' + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo' + '|span|br|wbr|ins|del|img)\\b)\\w+(?!:|[^\\w\\s@]*@)\\b'; 10060 block.html = edit(block.html).replace('comment', /<!--[\s\S]*?-->/).replace('closed', /<(tag)[\s\S]+?<\/\1>/).replace('closing', /<tag(?:"[^"]*"|'[^']*'|\s[^'"\/>\s]*)*?\/?>/).replace(/tag/g, block._tag).getRegex(); 10061 block.paragraph = edit(block.paragraph).replace('hr', block.hr).replace('heading', block.heading).replace('lheading', block.lheading).replace('tag', '<' + block._tag).getRegex(); 10062 block.blockquote = edit(block.blockquote).replace('paragraph', block.paragraph).getRegex(); 10063 /** 10064 * Normal Block Grammar 10065 */ 10066 10067 block.normal = merge({}, block); 10068 /** 10069 * GFM Block Grammar 10070 */ 10071 10072 block.gfm = merge({}, block.normal, { 10073 fences: /^ *(`{3,}|~{3,})[ \.]*(\S+)? *\n([\s\S]*?)\n? *\1 *(?:\n+|$)/, 10074 paragraph: /^/, 10075 heading: /^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/ 10076 }); 10077 block.gfm.paragraph = edit(block.paragraph).replace('(?!', '(?!' + block.gfm.fences.source.replace('\\1', '\\2') + '|' + block.list.source.replace('\\1', '\\3') + '|').getRegex(); 10078 /** 10079 * GFM + Tables Block Grammar 10080 */ 10081 10082 block.tables = merge({}, block.gfm, { 10083 nptable: /^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/, 10084 table: /^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/ 10085 }); 10086 /** 10087 * Block Lexer 10088 */ 10089 10090 function Lexer(options) { 10091 this.tokens = []; 10092 this.tokens.links = {}; 10093 this.options = options || marked.defaults; 10094 this.rules = block.normal; 10095 10096 if (this.options.gfm) { 10097 if (this.options.tables) { 10098 this.rules = block.tables; 10099 } else { 10100 this.rules = block.gfm; 10101 } 10102 } 10103 } 10104 /** 10105 * Expose Block Rules 10106 */ 10107 10108 10109 Lexer.rules = block; 10110 /** 10111 * Static Lex Method 10112 */ 10113 10114 Lexer.lex = function (src, options) { 10115 var lexer = new Lexer(options); 10116 return lexer.lex(src); 10117 }; 10118 /** 10119 * Preprocessing 10120 */ 10121 10122 10123 Lexer.prototype.lex = function (src) { 10124 src = src.replace(/\r\n|\r/g, '\n').replace(/\t/g, ' ').replace(/\u00a0/g, ' ').replace(/\u2424/g, '\n'); 10125 return this.token(src, true); 10126 }; 10127 /** 10128 * Lexing 10129 */ 10130 10131 10132 Lexer.prototype.token = function (src, top) { 10133 src = src.replace(/^ +$/gm, ''); 10134 var next, loose, cap, bull, b, item, space, i, tag, l, isordered; 10135 10136 while (src) { 10137 // newline 10138 if (cap = this.rules.newline.exec(src)) { 10139 src = src.substring(cap[0].length); 10140 10141 if (cap[0].length > 1) { 10142 this.tokens.push({ 10143 type: 'space' 10144 }); 10145 } 10146 } // code 10147 10148 10149 if (cap = this.rules.code.exec(src)) { 10150 src = src.substring(cap[0].length); 10151 cap = cap[0].replace(/^ {4}/gm, ''); 10152 this.tokens.push({ 10153 type: 'code', 10154 text: !this.options.pedantic ? cap.replace(/\n+$/, '') : cap 10155 }); 10156 continue; 10157 } // fences (gfm) 10158 10159 10160 if (cap = this.rules.fences.exec(src)) { 10161 src = src.substring(cap[0].length); 10162 this.tokens.push({ 10163 type: 'code', 10164 lang: cap[2], 10165 text: cap[3] || '' 10166 }); 10167 continue; 10168 } // heading 10169 10170 10171 if (cap = this.rules.heading.exec(src)) { 10172 src = src.substring(cap[0].length); 10173 this.tokens.push({ 10174 type: 'heading', 10175 depth: cap[1].length, 10176 text: cap[2] 10177 }); 10178 continue; 10179 } // table no leading pipe (gfm) 10180 10181 10182 if (top && (cap = this.rules.nptable.exec(src))) { 10183 src = src.substring(cap[0].length); 10184 item = { 10185 type: 'table', 10186 header: cap[1].replace(/^ *| *\| *$/g, '').split(/ *\| */), 10187 align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */), 10188 cells: cap[3].replace(/\n$/, '').split('\n') 10189 }; 10190 10191 for (i = 0; i < item.align.length; i++) { 10192 if (/^ *-+: *$/.test(item.align[i])) { 10193 item.align[i] = 'right'; 10194 } else if (/^ *:-+: *$/.test(item.align[i])) { 10195 item.align[i] = 'center'; 10196 } else if (/^ *:-+ *$/.test(item.align[i])) { 10197 item.align[i] = 'left'; 10198 } else { 10199 item.align[i] = null; 10200 } 10201 } 10202 10203 for (i = 0; i < item.cells.length; i++) { 10204 item.cells[i] = item.cells[i].split(/ *\| */); 10205 } 10206 10207 this.tokens.push(item); 10208 continue; 10209 } // hr 10210 10211 10212 if (cap = this.rules.hr.exec(src)) { 10213 src = src.substring(cap[0].length); 10214 this.tokens.push({ 10215 type: 'hr' 10216 }); 10217 continue; 10218 } // blockquote 10219 10220 10221 if (cap = this.rules.blockquote.exec(src)) { 10222 src = src.substring(cap[0].length); 10223 this.tokens.push({ 10224 type: 'blockquote_start' 10225 }); 10226 cap = cap[0].replace(/^ *> ?/gm, ''); // Pass `top` to keep the current 10227 // "toplevel" state. This is exactly 10228 // how markdown.pl works. 10229 10230 this.token(cap, top); 10231 this.tokens.push({ 10232 type: 'blockquote_end' 10233 }); 10234 continue; 10235 } // list 10236 10237 10238 if (cap = this.rules.list.exec(src)) { 10239 src = src.substring(cap[0].length); 10240 bull = cap[2]; 10241 isordered = bull.length > 1; 10242 this.tokens.push({ 10243 type: 'list_start', 10244 ordered: isordered, 10245 start: isordered ? +bull : '' 10246 }); // Get each top-level item. 10247 10248 cap = cap[0].match(this.rules.item); 10249 next = false; 10250 l = cap.length; 10251 i = 0; 10252 10253 for (; i < l; i++) { 10254 item = cap[i]; // Remove the list item's bullet 10255 // so it is seen as the next token. 10256 10257 space = item.length; 10258 item = item.replace(/^ *([*+-]|\d+\.) +/, ''); // Outdent whatever the 10259 // list item contains. Hacky. 10260 10261 if (~item.indexOf('\n ')) { 10262 space -= item.length; 10263 item = !this.options.pedantic ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '') : item.replace(/^ {1,4}/gm, ''); 10264 } // Determine whether the next list item belongs here. 10265 // Backpedal if it does not belong in this list. 10266 10267 10268 if (this.options.smartLists && i !== l - 1) { 10269 b = block.bullet.exec(cap[i + 1])[0]; 10270 10271 if (bull !== b && !(bull.length > 1 && b.length > 1)) { 10272 src = cap.slice(i + 1).join('\n') + src; 10273 i = l - 1; 10274 } 10275 } // Determine whether item is loose or not. 10276 // Use: /(^|\n)(?! )[^\n]+\n\n(?!\s*$)/ 10277 // for discount behavior. 10278 10279 10280 loose = next || /\n\n(?!\s*$)/.test(item); 10281 10282 if (i !== l - 1) { 10283 next = item.charAt(item.length - 1) === '\n'; 10284 if (!loose) loose = next; 10285 } 10286 10287 this.tokens.push({ 10288 type: loose ? 'loose_item_start' : 'list_item_start' 10289 }); // Recurse. 10290 10291 this.token(item, false); 10292 this.tokens.push({ 10293 type: 'list_item_end' 10294 }); 10295 } 10296 10297 this.tokens.push({ 10298 type: 'list_end' 10299 }); 10300 continue; 10301 } // html 10302 10303 10304 if (cap = this.rules.html.exec(src)) { 10305 src = src.substring(cap[0].length); 10306 this.tokens.push({ 10307 type: this.options.sanitize ? 'paragraph' : 'html', 10308 pre: !this.options.sanitizer && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'), 10309 text: cap[0] 10310 }); 10311 continue; 10312 } // def 10313 10314 10315 if (top && (cap = this.rules.def.exec(src))) { 10316 src = src.substring(cap[0].length); 10317 if (cap[3]) cap[3] = cap[3].substring(1, cap[3].length - 1); 10318 tag = cap[1].toLowerCase(); 10319 10320 if (!this.tokens.links[tag]) { 10321 this.tokens.links[tag] = { 10322 href: cap[2], 10323 title: cap[3] 10324 }; 10325 } 10326 10327 continue; 10328 } // table (gfm) 10329 10330 10331 if (top && (cap = this.rules.table.exec(src))) { 10332 src = src.substring(cap[0].length); 10333 item = { 10334 type: 'table', 10335 header: cap[1].replace(/^ *| *\| *$/g, '').split(/ *\| */), 10336 align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */), 10337 cells: cap[3].replace(/(?: *\| *)?\n$/, '').split('\n') 10338 }; 10339 10340 for (i = 0; i < item.align.length; i++) { 10341 if (/^ *-+: *$/.test(item.align[i])) { 10342 item.align[i] = 'right'; 10343 } else if (/^ *:-+: *$/.test(item.align[i])) { 10344 item.align[i] = 'center'; 10345 } else if (/^ *:-+ *$/.test(item.align[i])) { 10346 item.align[i] = 'left'; 10347 } else { 10348 item.align[i] = null; 10349 } 10350 } 10351 10352 for (i = 0; i < item.cells.length; i++) { 10353 item.cells[i] = item.cells[i].replace(/^ *\| *| *\| *$/g, '').split(/ *\| */); 10354 } 10355 10356 this.tokens.push(item); 10357 continue; 10358 } // lheading 10359 10360 10361 if (cap = this.rules.lheading.exec(src)) { 10362 src = src.substring(cap[0].length); 10363 this.tokens.push({ 10364 type: 'heading', 10365 depth: cap[2] === '=' ? 1 : 2, 10366 text: cap[1] 10367 }); 10368 continue; 10369 } // top-level paragraph 10370 10371 10372 if (top && (cap = this.rules.paragraph.exec(src))) { 10373 src = src.substring(cap[0].length); 10374 this.tokens.push({ 10375 type: 'paragraph', 10376 text: cap[1].charAt(cap[1].length - 1) === '\n' ? cap[1].slice(0, -1) : cap[1] 10377 }); 10378 continue; 10379 } // text 10380 10381 10382 if (cap = this.rules.text.exec(src)) { 10383 // Top-level should never reach here. 10384 src = src.substring(cap[0].length); 10385 this.tokens.push({ 10386 type: 'text', 10387 text: cap[0] 10388 }); 10389 continue; 10390 } 10391 10392 if (src) { 10393 throw new Error('Infinite loop on byte: ' + src.charCodeAt(0)); 10394 } 10395 } 10396 10397 return this.tokens; 10398 }; 10399 /** 10400 * Inline-Level Grammar 10401 */ 10402 10403 10404 var inline = { 10405 escape: /^\\([\\`*{}\[\]()#+\-.!_>])/, 10406 autolink: /^<(scheme:[^\s\x00-\x1f<>]*|email)>/, 10407 url: noop, 10408 tag: /^<!--[\s\S]*?-->|^<\/?[a-zA-Z0-9\-]+(?:"[^"]*"|'[^']*'|\s[^<'">\/\s]*)*?\/?>/, 10409 link: /^!?\[(inside)\]\(href\)/, 10410 reflink: /^!?\[(inside)\]\s*\[([^\]]*)\]/, 10411 nolink: /^!?\[((?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]])*)\]/, 10412 strong: /^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/, 10413 em: /^_([^\s_](?:[^_]|__)+?[^\s_])_\b|^\*((?:\*\*|[^*])+?)\*(?!\*)/, 10414 code: /^(`+)\s*([\s\S]*?[^`]?)\s*\1(?!`)/, 10415 br: /^ {2,}\n(?!\s*$)/, 10416 del: noop, 10417 text: /^[\s\S]+?(?=[\\<!\[`*]|\b_| {2,}\n|$)/ 10418 }; 10419 inline._scheme = /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/; 10420 inline._email = /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/; 10421 inline.autolink = edit(inline.autolink).replace('scheme', inline._scheme).replace('email', inline._email).getRegex(); 10422 inline._inside = /(?:\[[^\[\]]*\]|\\[\[\]]|[^\[\]]|\](?=[^\[]*\]))*/; 10423 inline._href = /\s*<?([\s\S]*?)>?(?:\s+['"]([\s\S]*?)['"])?\s*/; 10424 inline.link = edit(inline.link).replace('inside', inline._inside).replace('href', inline._href).getRegex(); 10425 inline.reflink = edit(inline.reflink).replace('inside', inline._inside).getRegex(); 10426 /** 10427 * Normal Inline Grammar 10428 */ 10429 10430 inline.normal = merge({}, inline); 10431 /** 10432 * Pedantic Inline Grammar 10433 */ 10434 10435 inline.pedantic = merge({}, inline.normal, { 10436 strong: /^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/, 10437 em: /^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/ 10438 }); 10439 /** 10440 * GFM Inline Grammar 10441 */ 10442 10443 inline.gfm = merge({}, inline.normal, { 10444 escape: edit(inline.escape).replace('])', '~|])').getRegex(), 10445 url: edit(/^((?:ftp|https?):\/\/|www\.)(?:[a-zA-Z0-9\-]+\.?)+[^\s<]*|^email/).replace('email', inline._email).getRegex(), 10446 _backpedal: /(?:[^?!.,:;*_~()&]+|\([^)]*\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_~)]+(?!$))+/, 10447 del: /^~~(?=\S)([\s\S]*?\S)~~/, 10448 text: edit(inline.text).replace(']|', '~]|').replace('|', '|https?://|ftp://|www\\.|[a-zA-Z0-9.!#$%&\'*+/=?^_`{\\|}~-]+@|').getRegex() 10449 }); 10450 /** 10451 * GFM + Line Breaks Inline Grammar 10452 */ 10453 10454 inline.breaks = merge({}, inline.gfm, { 10455 br: edit(inline.br).replace('{2,}', '*').getRegex(), 10456 text: edit(inline.gfm.text).replace('{2,}', '*').getRegex() 10457 }); 10458 /** 10459 * Inline Lexer & Compiler 10460 */ 10461 10462 function InlineLexer(links, options) { 10463 this.options = options || marked.defaults; 10464 this.links = links; 10465 this.rules = inline.normal; 10466 this.renderer = this.options.renderer || new Renderer(); 10467 this.renderer.options = this.options; 10468 10469 if (!this.links) { 10470 throw new Error('Tokens array requires a `links` property.'); 10471 } 10472 10473 if (this.options.gfm) { 10474 if (this.options.breaks) { 10475 this.rules = inline.breaks; 10476 } else { 10477 this.rules = inline.gfm; 10478 } 10479 } else if (this.options.pedantic) { 10480 this.rules = inline.pedantic; 10481 } 10482 } 10483 /** 10484 * Expose Inline Rules 10485 */ 10486 10487 10488 InlineLexer.rules = inline; 10489 /** 10490 * Static Lexing/Compiling Method 10491 */ 10492 10493 InlineLexer.output = function (src, links, options) { 10494 var inline = new InlineLexer(links, options); 10495 return inline.output(src); 10496 }; 10497 /** 10498 * Lexing/Compiling 10499 */ 10500 10501 10502 InlineLexer.prototype.output = function (src) { 10503 var out = '', 10504 link, 10505 text, 10506 href, 10507 cap; 10508 10509 while (src) { 10510 // escape 10511 if (cap = this.rules.escape.exec(src)) { 10512 src = src.substring(cap[0].length); 10513 out += cap[1]; 10514 continue; 10515 } // autolink 10516 10517 10518 if (cap = this.rules.autolink.exec(src)) { 10519 src = src.substring(cap[0].length); 10520 10521 if (cap[2] === '@') { 10522 text = escape(this.mangle(cap[1])); 10523 href = 'mailto:' + text; 10524 } else { 10525 text = escape(cap[1]); 10526 href = text; 10527 } 10528 10529 out += this.renderer.link(href, null, text); 10530 continue; 10531 } // url (gfm) 10532 10533 10534 if (!this.inLink && (cap = this.rules.url.exec(src))) { 10535 cap[0] = this.rules._backpedal.exec(cap[0])[0]; 10536 src = src.substring(cap[0].length); 10537 10538 if (cap[2] === '@') { 10539 text = escape(cap[0]); 10540 href = 'mailto:' + text; 10541 } else { 10542 text = escape(cap[0]); 10543 10544 if (cap[1] === 'www.') { 10545 href = 'http://' + text; 10546 } else { 10547 href = text; 10548 } 10549 } 10550 10551 out += this.renderer.link(href, null, text); 10552 continue; 10553 } // tag 10554 10555 10556 if (cap = this.rules.tag.exec(src)) { 10557 if (!this.inLink && /^<a /i.test(cap[0])) { 10558 this.inLink = true; 10559 } else if (this.inLink && /^<\/a>/i.test(cap[0])) { 10560 this.inLink = false; 10561 } 10562 10563 src = src.substring(cap[0].length); 10564 out += this.options.sanitize ? this.options.sanitizer ? this.options.sanitizer(cap[0]) : escape(cap[0]) : cap[0]; 10565 continue; 10566 } // link 10567 10568 10569 if (cap = this.rules.link.exec(src)) { 10570 src = src.substring(cap[0].length); 10571 this.inLink = true; 10572 out += this.outputLink(cap, { 10573 href: cap[2], 10574 title: cap[3] 10575 }); 10576 this.inLink = false; 10577 continue; 10578 } // reflink, nolink 10579 10580 10581 if ((cap = this.rules.reflink.exec(src)) || (cap = this.rules.nolink.exec(src))) { 10582 src = src.substring(cap[0].length); 10583 link = (cap[2] || cap[1]).replace(/\s+/g, ' '); 10584 link = this.links[link.toLowerCase()]; 10585 10586 if (!link || !link.href) { 10587 out += cap[0].charAt(0); 10588 src = cap[0].substring(1) + src; 10589 continue; 10590 } 10591 10592 this.inLink = true; 10593 out += this.outputLink(cap, link); 10594 this.inLink = false; 10595 continue; 10596 } // strong 10597 10598 10599 if (cap = this.rules.strong.exec(src)) { 10600 src = src.substring(cap[0].length); 10601 out += this.renderer.strong(this.output(cap[2] || cap[1])); 10602 continue; 10603 } // em 10604 10605 10606 if (cap = this.rules.em.exec(src)) { 10607 src = src.substring(cap[0].length); 10608 out += this.renderer.em(this.output(cap[2] || cap[1])); 10609 continue; 10610 } // code 10611 10612 10613 if (cap = this.rules.code.exec(src)) { 10614 src = src.substring(cap[0].length); 10615 out += this.renderer.codespan(escape(cap[2].trim(), true)); 10616 continue; 10617 } // br 10618 10619 10620 if (cap = this.rules.br.exec(src)) { 10621 src = src.substring(cap[0].length); 10622 out += this.renderer.br(); 10623 continue; 10624 } // del (gfm) 10625 10626 10627 if (cap = this.rules.del.exec(src)) { 10628 src = src.substring(cap[0].length); 10629 out += this.renderer.del(this.output(cap[1])); 10630 continue; 10631 } // text 10632 10633 10634 if (cap = this.rules.text.exec(src)) { 10635 src = src.substring(cap[0].length); 10636 out += this.renderer.text(escape(this.smartypants(cap[0]))); 10637 continue; 10638 } 10639 10640 if (src) { 10641 throw new Error('Infinite loop on byte: ' + src.charCodeAt(0)); 10642 } 10643 } 10644 10645 return out; 10646 }; 10647 /** 10648 * Compile Link 10649 */ 10650 10651 10652 InlineLexer.prototype.outputLink = function (cap, link) { 10653 var href = escape(link.href), 10654 title = link.title ? escape(link.title) : null; 10655 return cap[0].charAt(0) !== '!' ? this.renderer.link(href, title, this.output(cap[1])) : this.renderer.image(href, title, escape(cap[1])); 10656 }; 10657 /** 10658 * Smartypants Transformations 10659 */ 10660 10661 10662 InlineLexer.prototype.smartypants = function (text) { 10663 if (!this.options.smartypants) return text; 10664 return text // em-dashes 10665 .replace(/---/g, '\u2014') // en-dashes 10666 .replace(/--/g, '\u2013') // opening singles 10667 .replace(/(^|[-\u2014/(\[{"\s])'/g, '$1\u2018') // closing singles & apostrophes 10668 .replace(/'/g, '\u2019') // opening doubles 10669 .replace(/(^|[-\u2014/(\[{\u2018\s])"/g, '$1\u201c') // closing doubles 10670 .replace(/"/g, '\u201d') // ellipses 10671 .replace(/\.{3}/g, '\u2026'); 10672 }; 10673 /** 10674 * Mangle Links 10675 */ 10676 10677 10678 InlineLexer.prototype.mangle = function (text) { 10679 if (!this.options.mangle) return text; 10680 var out = '', 10681 l = text.length, 10682 i = 0, 10683 ch; 10684 10685 for (; i < l; i++) { 10686 ch = text.charCodeAt(i); 10687 10688 if (Math.random() > 0.5) { 10689 ch = 'x' + ch.toString(16); 10690 } 10691 10692 out += '&#' + ch + ';'; 10693 } 10694 10695 return out; 10696 }; 10697 /** 10698 * Renderer 10699 */ 10700 10701 10702 function Renderer(options) { 10703 this.options = options || {}; 10704 } 10705 10706 Renderer.prototype.code = function (code, lang, escaped) { 10707 if (this.options.highlight) { 10708 var out = this.options.highlight(code, lang); 10709 10710 if (out != null && out !== code) { 10711 escaped = true; 10712 code = out; 10713 } 10714 } 10715 10716 if (!lang) { 10717 return '<pre><code>' + (escaped ? code : escape(code, true)) + '\n</code></pre>'; 10718 } 10719 10720 return '<pre><code class="' + this.options.langPrefix + escape(lang, true) + '">' + (escaped ? code : escape(code, true)) + '\n</code></pre>\n'; 10721 }; 10722 10723 Renderer.prototype.blockquote = function (quote) { 10724 return '<blockquote>\n' + quote + '</blockquote>\n'; 10725 }; 10726 10727 Renderer.prototype.html = function (html) { 10728 return html; 10729 }; 10730 10731 Renderer.prototype.heading = function (text, level, raw) { 10732 return '<h' + level + ' id="' + this.options.headerPrefix + raw.toLowerCase().replace(/[^\w]+/g, '-') + '">' + text + '</h' + level + '>\n'; 10733 }; 10734 10735 Renderer.prototype.hr = function () { 10736 return this.options.xhtml ? '<hr/>\n' : '<hr>\n'; 10737 }; 10738 10739 Renderer.prototype.list = function (body, ordered, start) { 10740 var type = ordered ? 'ol' : 'ul', 10741 startatt = ordered && start !== 1 ? ' start="' + start + '"' : ''; 10742 return '<' + type + startatt + '>\n' + body + '</' + type + '>\n'; 10743 }; 10744 10745 Renderer.prototype.listitem = function (text) { 10746 return '<li>' + text + '</li>\n'; 10747 }; 10748 10749 Renderer.prototype.paragraph = function (text) { 10750 return '<p>' + text + '</p>\n'; 10751 }; 10752 10753 Renderer.prototype.table = function (header, body) { 10754 return '<table>\n' + '<thead>\n' + header + '</thead>\n' + '<tbody>\n' + body + '</tbody>\n' + '</table>\n'; 10755 }; 10756 10757 Renderer.prototype.tablerow = function (content) { 10758 return '<tr>\n' + content + '</tr>\n'; 10759 }; 10760 10761 Renderer.prototype.tablecell = function (content, flags) { 10762 var type = flags.header ? 'th' : 'td'; 10763 var tag = flags.align ? '<' + type + ' style="text-align:' + flags.align + '">' : '<' + type + '>'; 10764 return tag + content + '</' + type + '>\n'; 10765 }; // span level renderer 10766 10767 10768 Renderer.prototype.strong = function (text) { 10769 return '<strong>' + text + '</strong>'; 10770 }; 10771 10772 Renderer.prototype.em = function (text) { 10773 return '<em>' + text + '</em>'; 10774 }; 10775 10776 Renderer.prototype.codespan = function (text) { 10777 return '<code>' + text + '</code>'; 10778 }; 10779 10780 Renderer.prototype.br = function () { 10781 return this.options.xhtml ? '<br/>' : '<br>'; 10782 }; 10783 10784 Renderer.prototype.del = function (text) { 10785 return '<del>' + text + '</del>'; 10786 }; 10787 10788 Renderer.prototype.link = function (href, title, text) { 10789 if (this.options.sanitize) { 10790 try { 10791 var prot = decodeURIComponent(unescape(href)).replace(/[^\w:]/g, '').toLowerCase(); 10792 } catch (e) { 10793 return text; 10794 } 10795 10796 if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) { 10797 return text; 10798 } 10799 } 10800 10801 if (this.options.baseUrl && !originIndependentUrl.test(href)) { 10802 href = resolveUrl(this.options.baseUrl, href); 10803 } 10804 10805 var out = '<a href="' + href + '"'; 10806 10807 if (title) { 10808 out += ' title="' + title + '"'; 10809 } 10810 10811 out += '>' + text + '</a>'; 10812 return out; 10813 }; 10814 10815 Renderer.prototype.image = function (href, title, text) { 10816 if (this.options.baseUrl && !originIndependentUrl.test(href)) { 10817 href = resolveUrl(this.options.baseUrl, href); 10818 } 10819 10820 var out = '<img src="' + href + '" alt="' + text + '"'; 10821 10822 if (title) { 10823 out += ' title="' + title + '"'; 10824 } 10825 10826 out += this.options.xhtml ? '/>' : '>'; 10827 return out; 10828 }; 10829 10830 Renderer.prototype.text = function (text) { 10831 return text; 10832 }; 10833 /** 10834 * TextRenderer 10835 * returns only the textual part of the token 10836 */ 10837 10838 10839 function TextRenderer() {} // no need for block level renderers 10840 10841 10842 TextRenderer.prototype.strong = TextRenderer.prototype.em = TextRenderer.prototype.codespan = TextRenderer.prototype.del = TextRenderer.prototype.text = function (text) { 10843 return text; 10844 }; 10845 10846 TextRenderer.prototype.link = TextRenderer.prototype.image = function (href, title, text) { 10847 return '' + text; 10848 }; 10849 10850 TextRenderer.prototype.br = function () { 10851 return ''; 10852 }; 10853 /** 10854 * Parsing & Compiling 10855 */ 10856 10857 10858 function Parser(options) { 10859 this.tokens = []; 10860 this.token = null; 10861 this.options = options || marked.defaults; 10862 this.options.renderer = this.options.renderer || new Renderer(); 10863 this.renderer = this.options.renderer; 10864 this.renderer.options = this.options; 10865 } 10866 /** 10867 * Static Parse Method 10868 */ 10869 10870 10871 Parser.parse = function (src, options) { 10872 var parser = new Parser(options); 10873 return parser.parse(src); 10874 }; 10875 /** 10876 * Parse Loop 10877 */ 10878 10879 10880 Parser.prototype.parse = function (src) { 10881 this.inline = new InlineLexer(src.links, this.options); // use an InlineLexer with a TextRenderer to extract pure text 10882 10883 this.inlineText = new InlineLexer(src.links, merge({}, this.options, { 10884 renderer: new TextRenderer() 10885 })); 10886 this.tokens = src.reverse(); 10887 var out = ''; 10888 10889 while (this.next()) { 10890 out += this.tok(); 10891 } 10892 10893 return out; 10894 }; 10895 /** 10896 * Next Token 10897 */ 10898 10899 10900 Parser.prototype.next = function () { 10901 return this.token = this.tokens.pop(); 10902 }; 10903 /** 10904 * Preview Next Token 10905 */ 10906 10907 10908 Parser.prototype.peek = function () { 10909 return this.tokens[this.tokens.length - 1] || 0; 10910 }; 10911 /** 10912 * Parse Text Tokens 10913 */ 10914 10915 10916 Parser.prototype.parseText = function () { 10917 var body = this.token.text; 10918 10919 while (this.peek().type === 'text') { 10920 body += '\n' + this.next().text; 10921 } 10922 10923 return this.inline.output(body); 10924 }; 10925 /** 10926 * Parse Current Token 10927 */ 10928 10929 10930 Parser.prototype.tok = function () { 10931 switch (this.token.type) { 10932 case 'space': 10933 { 10934 return ''; 10935 } 10936 10937 case 'hr': 10938 { 10939 return this.renderer.hr(); 10940 } 10941 10942 case 'heading': 10943 { 10944 return this.renderer.heading(this.inline.output(this.token.text), this.token.depth, unescape(this.inlineText.output(this.token.text))); 10945 } 10946 10947 case 'code': 10948 { 10949 return this.renderer.code(this.token.text, this.token.lang, this.token.escaped); 10950 } 10951 10952 case 'table': 10953 { 10954 var header = '', 10955 body = '', 10956 i, 10957 row, 10958 cell, 10959 j; // header 10960 10961 cell = ''; 10962 10963 for (i = 0; i < this.token.header.length; i++) { 10964 cell += this.renderer.tablecell(this.inline.output(this.token.header[i]), { 10965 header: true, 10966 align: this.token.align[i] 10967 }); 10968 } 10969 10970 header += this.renderer.tablerow(cell); 10971 10972 for (i = 0; i < this.token.cells.length; i++) { 10973 row = this.token.cells[i]; 10974 cell = ''; 10975 10976 for (j = 0; j < row.length; j++) { 10977 cell += this.renderer.tablecell(this.inline.output(row[j]), { 10978 header: false, 10979 align: this.token.align[j] 10980 }); 10981 } 10982 10983 body += this.renderer.tablerow(cell); 10984 } 10985 10986 return this.renderer.table(header, body); 10987 } 10988 10989 case 'blockquote_start': 10990 { 10991 body = ''; 10992 10993 while (this.next().type !== 'blockquote_end') { 10994 body += this.tok(); 10995 } 10996 10997 return this.renderer.blockquote(body); 10998 } 10999 11000 case 'list_start': 11001 { 11002 body = ''; 11003 var ordered = this.token.ordered, 11004 start = this.token.start; 11005 11006 while (this.next().type !== 'list_end') { 11007 body += this.tok(); 11008 } 11009 11010 return this.renderer.list(body, ordered, start); 11011 } 11012 11013 case 'list_item_start': 11014 { 11015 body = ''; 11016 11017 while (this.next().type !== 'list_item_end') { 11018 body += this.token.type === 'text' ? this.parseText() : this.tok(); 11019 } 11020 11021 return this.renderer.listitem(body); 11022 } 11023 11024 case 'loose_item_start': 11025 { 11026 body = ''; 11027 11028 while (this.next().type !== 'list_item_end') { 11029 body += this.tok(); 11030 } 11031 11032 return this.renderer.listitem(body); 11033 } 11034 11035 case 'html': 11036 { 11037 var html = !this.token.pre && !this.options.pedantic ? this.inline.output(this.token.text) : this.token.text; 11038 return this.renderer.html(html); 11039 } 11040 11041 case 'paragraph': 11042 { 11043 return this.renderer.paragraph(this.inline.output(this.token.text)); 11044 } 11045 11046 case 'text': 11047 { 11048 return this.renderer.paragraph(this.parseText()); 11049 } 11050 } 11051 }; 11052 /** 11053 * Helpers 11054 */ 11055 11056 11057 function escape(html, encode) { 11058 return html.replace(!encode ? /&(?!#?\w+;)/g : /&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"').replace(/'/g, '''); 11059 } 11060 11061 function unescape(html) { 11062 // explicitly match decimal, hex, and named HTML entities 11063 return html.replace(/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig, function (_, n) { 11064 n = n.toLowerCase(); 11065 if (n === 'colon') return ':'; 11066 11067 if (n.charAt(0) === '#') { 11068 return n.charAt(1) === 'x' ? String.fromCharCode(parseInt(n.substring(2), 16)) : String.fromCharCode(+n.substring(1)); 11069 } 11070 11071 return ''; 11072 }); 11073 } 11074 11075 function edit(regex, opt) { 11076 regex = regex.source; 11077 opt = opt || ''; 11078 return { 11079 replace: function (name, val) { 11080 val = val.source || val; 11081 val = val.replace(/(^|[^\[])\^/g, '$1'); 11082 regex = regex.replace(name, val); 11083 return this; 11084 }, 11085 getRegex: function () { 11086 return new RegExp(regex, opt); 11087 } 11088 }; 11089 } 11090 11091 function resolveUrl(base, href) { 11092 if (!baseUrls[' ' + base]) { 11093 // we can ignore everything in base after the last slash of its path component, 11094 // but we might need to add _that_ 11095 // https://tools.ietf.org/html/rfc3986#section-3 11096 if (/^[^:]+:\/*[^/]*$/.test(base)) { 11097 baseUrls[' ' + base] = base + '/'; 11098 } else { 11099 baseUrls[' ' + base] = base.replace(/[^/]*$/, ''); 11100 } 11101 } 11102 11103 base = baseUrls[' ' + base]; 11104 11105 if (href.slice(0, 2) === '//') { 11106 return base.replace(/:[\s\S]*/, ':') + href; 11107 } else if (href.charAt(0) === '/') { 11108 return base.replace(/(:\/*[^/]*)[\s\S]*/, '$1') + href; 11109 } else { 11110 return base + href; 11111 } 11112 } 11113 11114 var baseUrls = {}; 11115 var originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i; 11116 11117 function noop() {} 11118 11119 noop.exec = noop; 11120 11121 function merge(obj) { 11122 var i = 1, 11123 target, 11124 key; 11125 11126 for (; i < arguments.length; i++) { 11127 target = arguments[i]; 11128 11129 for (key in target) { 11130 if (Object.prototype.hasOwnProperty.call(target, key)) { 11131 obj[key] = target[key]; 11132 } 11133 } 11134 } 11135 11136 return obj; 11137 } 11138 /** 11139 * Marked 11140 */ 11141 11142 11143 function marked(src, opt, callback) { 11144 // throw error in case of non string input 11145 if (typeof src === 'undefined' || src === null) { 11146 throw new Error('marked(): input parameter is undefined or null'); 11147 } 11148 11149 if (typeof src !== 'string') { 11150 throw new Error('marked(): input parameter is of type ' + Object.prototype.toString.call(src) + ', string expected'); 11151 } 11152 11153 if (callback || typeof opt === 'function') { 11154 if (!callback) { 11155 callback = opt; 11156 opt = null; 11157 } 11158 11159 opt = merge({}, marked.defaults, opt || {}); 11160 var highlight = opt.highlight, 11161 tokens, 11162 pending, 11163 i = 0; 11164 11165 try { 11166 tokens = Lexer.lex(src, opt); 11167 } catch (e) { 11168 return callback(e); 11169 } 11170 11171 pending = tokens.length; 11172 11173 var done = function (err) { 11174 if (err) { 11175 opt.highlight = highlight; 11176 return callback(err); 11177 } 11178 11179 var out; 11180 11181 try { 11182 out = Parser.parse(tokens, opt); 11183 } catch (e) { 11184 err = e; 11185 } 11186 11187 opt.highlight = highlight; 11188 return err ? callback(err) : callback(null, out); 11189 }; 11190 11191 if (!highlight || highlight.length < 3) { 11192 return done(); 11193 } 11194 11195 delete opt.highlight; 11196 if (!pending) return done(); 11197 11198 for (; i < tokens.length; i++) { 11199 (function (token) { 11200 if (token.type !== 'code') { 11201 return --pending || done(); 11202 } 11203 11204 return highlight(token.text, token.lang, function (err, code) { 11205 if (err) return done(err); 11206 11207 if (code == null || code === token.text) { 11208 return --pending || done(); 11209 } 11210 11211 token.text = code; 11212 token.escaped = true; 11213 --pending || done(); 11214 }); 11215 })(tokens[i]); 11216 } 11217 11218 return; 11219 } 11220 11221 try { 11222 if (opt) opt = merge({}, marked.defaults, opt); 11223 return Parser.parse(Lexer.lex(src, opt), opt); 11224 } catch (e) { 11225 e.message += '\nPlease report this to https://github.com/markedjs/marked.'; 11226 11227 if ((opt || marked.defaults).silent) { 11228 return '<p>An error occurred:</p><pre>' + escape(e.message + '', true) + '</pre>'; 11229 } 11230 11231 throw e; 11232 } 11233 } 11234 /** 11235 * Options 11236 */ 11237 11238 11239 marked.options = marked.setOptions = function (opt) { 11240 merge(marked.defaults, opt); 11241 return marked; 11242 }; 11243 11244 marked.defaults = { 11245 gfm: true, 11246 tables: true, 11247 breaks: false, 11248 pedantic: false, 11249 sanitize: false, 11250 sanitizer: null, 11251 mangle: true, 11252 smartLists: false, 11253 silent: false, 11254 highlight: null, 11255 langPrefix: 'lang-', 11256 smartypants: false, 11257 headerPrefix: '', 11258 renderer: new Renderer(), 11259 xhtml: false, 11260 baseUrl: null 11261 }; 11262 /** 11263 * Expose 11264 */ 11265 11266 marked.Parser = Parser; 11267 marked.parser = Parser.parse; 11268 marked.Renderer = Renderer; 11269 marked.TextRenderer = TextRenderer; 11270 marked.Lexer = Lexer; 11271 marked.lexer = Lexer.lex; 11272 marked.InlineLexer = InlineLexer; 11273 marked.inlineLexer = InlineLexer.output; 11274 marked.parse = marked; 11275 11276 if (true) { 11277 module.exports = marked; 11278 } else {} 11279})(this || (typeof window !== 'undefined' ? window : global)); 11280/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) 11281 11282/***/ }), 11283
vendor: 7,438 bytes, lines 11284-11527
11284/***/ "./node_modules/marksy/lib/createRenderer.js": 11285/*!***************************************************!*\ 11286 !*** ./node_modules/marksy/lib/createRenderer.js ***! 11287 \***************************************************/ 11288/*! no static exports found */ 11289/***/ (function(module, exports, __webpack_require__) { 11290 11291"use strict"; 11292 11293 11294Object.defineProperty(exports, "__esModule", { 11295 value: true 11296}); 11297exports.codeRenderer = codeRenderer; 11298exports["default"] = createRenderer; 11299 11300var _marked = _interopRequireDefault(__webpack_require__(/*! marked */ "./node_modules/marked/lib/marked.js")); 11301 11302var _he = _interopRequireDefault(__webpack_require__(/*! he */ "./node_modules/he/he.js")); 11303 11304function _interopRequireDefault(obj) { 11305 return obj && obj.__esModule ? obj : { 11306 "default": obj 11307 }; 11308} 11309 11310function codeRenderer(tracker, options) { 11311 function CodeComponent(props) { 11312 var children; 11313 11314 try { 11315 // eslint-disable-next-line react/no-danger-with-children 11316 children = options.createElement('code', { 11317 className: "language-".concat(props.language), 11318 dangerouslySetInnerHTML: options.highlight ? { 11319 __html: options.highlight(props.language, props.code) 11320 } : null 11321 }, options.highlight ? null : props.code); 11322 } catch (e) { 11323 // eslint-disable-next-line 11324 console.warn("".concat(props.language, " is not supported by your defined highlighter.")); 11325 children = options.createElement('code', null, props.code); 11326 } 11327 11328 return options.createElement('pre', null, children); 11329 } 11330 11331 return function (code, language) { 11332 // eslint-disable-next-line no-plusplus, no-param-reassign 11333 var elementId = tracker.nextElementId++; // eslint-disable-next-line no-param-reassign 11334 11335 tracker.elements[elementId] = options.createElement(options.elements && options.elements.code || CodeComponent, { 11336 key: elementId, 11337 code: code, 11338 language: language 11339 }); 11340 tracker.tree.push(tracker.elements[elementId]); 11341 return "{{".concat(elementId, "}}"); 11342 }; 11343} 11344 11345function createRenderer(tracker, options) { 11346 var overrides = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; 11347 var renderer = new _marked["default"].Renderer(); 11348 11349 function getTocPosition(toc, level) { 11350 var currentLevel = toc.children; // eslint-disable-next-line no-constant-condition 11351 11352 while (true) { 11353 if (!currentLevel.length || currentLevel[currentLevel.length - 1].level === level) { 11354 return currentLevel; 11355 } 11356 11357 currentLevel = currentLevel[currentLevel.length - 1].children; 11358 } 11359 } 11360 11361 function populateInlineContent() { 11362 var content = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; 11363 var contentArray = content.split(/(\{\{.*?\}\})/); 11364 var extractedElements = contentArray.map(function (text) { 11365 var elementIdMatch = text.match(/\{\{(.*)\}\}/); 11366 11367 if (elementIdMatch) { 11368 tracker.tree.splice(tracker.tree.indexOf(tracker.elements[elementIdMatch[1]]), 1); 11369 return tracker.elements[elementIdMatch[1]]; 11370 } 11371 11372 if (text !== '') { 11373 return _he["default"].decode(text); 11374 } 11375 11376 return null; 11377 }); 11378 return extractedElements; 11379 } 11380 11381 function addElement(tag) { 11382 var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; 11383 var children = arguments.length > 2 ? arguments[2] : undefined; 11384 var type = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : tag; // eslint-disable-next-line no-plusplus, no-param-reassign 11385 11386 var elementId = tracker.nextElementId++; 11387 var inlineContent = null; 11388 var elementType = options.elements && options.elements[type]; 11389 11390 if (children) { 11391 inlineContent = Array.isArray(children) ? children.map(populateInlineContent) : populateInlineContent(children); 11392 } // eslint-disable-next-line no-param-reassign 11393 11394 11395 tracker.elements[elementId] = options.createElement(elementType || tag, Object.assign({ 11396 key: elementId 11397 }, props, elementType ? { 11398 context: tracker.context 11399 } : {}), inlineContent); 11400 tracker.tree.push(tracker.elements[elementId]); 11401 return "{{".concat(elementId, "}}"); 11402 } 11403 11404 renderer.code = overrides.code || codeRenderer(tracker, options); 11405 11406 renderer.html = overrides.html || function (html) { 11407 // eslint-disable-next-line no-plusplus, no-param-reassign 11408 var elementId = tracker.nextElementId++; 11409 tracker.tree.push(options.createElement('div', { 11410 key: elementId, 11411 dangerouslySetInnerHTML: { 11412 __html: html 11413 } 11414 })); 11415 }; 11416 11417 renderer.paragraph = overrides.paragraph || function (text) { 11418 return addElement('p', null, text); 11419 }; 11420 11421 renderer.blockquote = overrides.blockquote || function (text) { 11422 return addElement('blockquote', null, text); 11423 }; 11424 11425 renderer.link = overrides.link || function (href, title, text) { 11426 return addElement('a', { 11427 href: href, 11428 title: title 11429 }, text); 11430 }; 11431 11432 renderer.br = overrides.br || function () { 11433 return addElement('br'); 11434 }; 11435 11436 renderer.hr = overrides.hr || function () { 11437 return addElement('hr'); 11438 }; 11439 11440 renderer.strong = overrides.strong || function (text) { 11441 return addElement('strong', null, text); 11442 }; 11443 11444 renderer.del = overrides.del || function (text) { 11445 return addElement('del', null, text); 11446 }; 11447 11448 renderer.em = overrides.em || function (text) { 11449 return addElement('em', null, text); 11450 }; 11451 11452 renderer.heading = overrides.heading || function (text, level) { 11453 // eslint-disable-next-line no-param-reassign 11454 tracker.currentId = tracker.currentId.slice(0, level - 1); 11455 tracker.currentId.push(text.replace(/\s/g, '-').toLowerCase()); 11456 var id = tracker.currentId.join('-'); 11457 var lastToc = tracker.toc[tracker.toc.length - 1]; 11458 11459 if (!lastToc || lastToc.level > level) { 11460 tracker.toc.push({ 11461 id: id, 11462 title: text, 11463 level: level, 11464 children: [] 11465 }); 11466 } else { 11467 var tocPosition = getTocPosition(lastToc, level); 11468 tocPosition.push({ 11469 id: id, 11470 title: text, 11471 level: level, 11472 children: [] 11473 }); 11474 } 11475 11476 return addElement("h".concat(level), { 11477 id: id 11478 }, text); 11479 }; 11480 11481 renderer.list = overrides.list || function (body, ordered) { 11482 return addElement(ordered ? 'ol' : 'ul', null, body); 11483 }; 11484 11485 renderer.listitem = overrides.listitem || function (text) { 11486 return addElement('li', null, text); 11487 }; 11488 11489 renderer.table = overrides.table || function (header, body) { 11490 return addElement('table', null, [addElement('thead', null, header), addElement('tbody', null, body)]); 11491 }; 11492 11493 renderer.thead = overrides.thead || function (content) { 11494 return addElement('thead', null, content); 11495 }; 11496 11497 renderer.tbody = overrides.tbody || function (content) { 11498 return addElement('tbody', null, content); 11499 }; 11500 11501 renderer.tablerow = overrides.tablerow || function (content) { 11502 return addElement('tr', null, content); 11503 }; 11504 11505 renderer.tablecell = overrides.tablecell || function (content, flag) { 11506 var tag = flag.header ? 'th' : 'td'; 11507 return addElement(tag, { 11508 className: flag.align ? "text-".concat(flag.align) : undefined 11509 }, content); 11510 }; 11511 11512 renderer.codespan = overrides.codespan || function (text) { 11513 return addElement('code', null, text, 'codespan'); 11514 }; 11515 11516 renderer.image = overrides.image || function (href, title, text) { 11517 return addElement('img', { 11518 src: href, 11519 alt: text 11520 }); 11521 }; 11522 11523 return renderer; 11524} 11525 11526/***/ }), 11527
vendor: 5,516 bytes, lines 11528-11713
11528/***/ "./node_modules/marksy/lib/index.js": 11529/*!******************************************!*\ 11530 !*** ./node_modules/marksy/lib/index.js ***! 11531 \******************************************/ 11532/*! no static exports found */ 11533/***/ (function(module, exports, __webpack_require__) { 11534 11535"use strict"; 11536 11537 11538Object.defineProperty(exports, "__esModule", { 11539 value: true 11540}); 11541exports.marksy = marksy; 11542exports["default"] = _default; 11543 11544var _marked = _interopRequireDefault(__webpack_require__(/*! marked */ "./node_modules/marked/lib/marked.js")); 11545 11546var _createRenderer = _interopRequireWildcard(__webpack_require__(/*! ./createRenderer */ "./node_modules/marksy/lib/createRenderer.js")); 11547 11548function _interopRequireWildcard(obj) { 11549 if (obj && obj.__esModule) { 11550 return obj; 11551 } else { 11552 var newObj = {}; 11553 11554 if (obj != null) { 11555 for (var key in obj) { 11556 if (Object.prototype.hasOwnProperty.call(obj, key)) { 11557 var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; 11558 11559 if (desc.get || desc.set) { 11560 Object.defineProperty(newObj, key, desc); 11561 } else { 11562 newObj[key] = obj[key]; 11563 } 11564 } 11565 } 11566 } 11567 11568 newObj["default"] = obj; 11569 return newObj; 11570 } 11571} 11572 11573function _interopRequireDefault(obj) { 11574 return obj && obj.__esModule ? obj : { 11575 "default": obj 11576 }; 11577} 11578 11579function isNativeReflectConstruct() { 11580 if (typeof Reflect === "undefined" || !Reflect.construct) return false; 11581 if (Reflect.construct.sham) return false; 11582 if (typeof Proxy === "function") return true; 11583 11584 try { 11585 Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); 11586 return true; 11587 } catch (e) { 11588 return false; 11589 } 11590} 11591 11592function _construct(Parent, args, Class) { 11593 if (isNativeReflectConstruct()) { 11594 _construct = Reflect.construct; 11595 } else { 11596 _construct = function _construct(Parent, args, Class) { 11597 var a = [null]; 11598 a.push.apply(a, args); 11599 var Constructor = Function.bind.apply(Parent, a); 11600 var instance = new Constructor(); 11601 if (Class) _setPrototypeOf(instance, Class.prototype); 11602 return instance; 11603 }; 11604 } 11605 11606 return _construct.apply(null, arguments); 11607} 11608 11609function _setPrototypeOf(o, p) { 11610 _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { 11611 o.__proto__ = p; 11612 return o; 11613 }; 11614 11615 return _setPrototypeOf(o, p); 11616} 11617 11618function _toConsumableArray(arr) { 11619 return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); 11620} 11621 11622function _nonIterableSpread() { 11623 throw new TypeError("Invalid attempt to spread non-iterable instance"); 11624} 11625 11626function _iterableToArray(iter) { 11627 if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); 11628} 11629 11630function _arrayWithoutHoles(arr) { 11631 if (Array.isArray(arr)) { 11632 for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { 11633 arr2[i] = arr[i]; 11634 } 11635 11636 return arr2; 11637 } 11638} 11639 11640function marksy() { 11641 var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; 11642 var tracker = { 11643 tree: null, 11644 elements: null, 11645 nextElementId: null, 11646 toc: null, 11647 currentIdLevel: 0, 11648 currentId: [] 11649 }; 11650 var renderer = (0, _createRenderer["default"])(tracker, options, { 11651 code: function code(_code, language) { 11652 if (language === 'marksy') { 11653 try { 11654 // eslint-disable-next-line no-plusplus 11655 var elementId = tracker.nextElementId++; 11656 var components = Object.keys(options.components).map(function (key) { 11657 return options.components[key]; 11658 }); 11659 11660 var mockedReact = function mockedReact(tag) { 11661 var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; 11662 var componentProps = components.indexOf(tag) >= 0 ? Object.assign(props || {}, { 11663 // eslint-disable-next-line no-plusplus 11664 key: tracker.nextElementId++, 11665 context: tracker.context 11666 }) : props; 11667 11668 for (var _len = arguments.length, children = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { 11669 children[_key - 2] = arguments[_key]; 11670 } 11671 11672 return options.createElement(tag, componentProps, children); 11673 }; 11674 11675 tracker.elements[elementId] = // eslint-disable-next-line no-new-func 11676 _construct(Function, ['h'].concat(_toConsumableArray(Object.keys(options.components)), ["return ".concat(_code)])).apply(void 0, [mockedReact].concat(_toConsumableArray(components))) || null; 11677 tracker.tree.push(tracker.elements[elementId]); 11678 return "{{".concat(elementId, "}}"); 11679 } catch (e) {// 11680 } 11681 11682 return null; 11683 } 11684 11685 return (0, _createRenderer.codeRenderer)(tracker, options)(_code, language); 11686 } 11687 }); 11688 return function compile(content) { 11689 var markedOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; 11690 var context = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; 11691 tracker.tree = []; 11692 tracker.elements = {}; 11693 tracker.toc = []; 11694 tracker.nextElementId = 0; 11695 tracker.context = context; 11696 tracker.currentId = []; 11697 (0, _marked["default"])(content, Object.assign({ 11698 renderer: renderer, 11699 smartypants: true 11700 }, markedOptions)); 11701 return { 11702 tree: tracker.tree, 11703 toc: tracker.toc 11704 }; 11705 }; 11706} 11707 11708function _default(options) { 11709 return marksy(options); 11710} 11711 11712/***/ }), 11713
vendor: 1,355 bytes, lines 11714-11771
11714/***/ "./node_modules/memoize-one/dist/memoize-one.esm.js": 11715/*!**********************************************************!*\ 11716 !*** ./node_modules/memoize-one/dist/memoize-one.esm.js ***! 11717 \**********************************************************/ 11718/*! exports provided: default */ 11719/***/ (function(module, __webpack_exports__, __webpack_require__) { 11720 11721"use strict"; 11722__webpack_require__.r(__webpack_exports__); 11723function areInputsEqual(newInputs, lastInputs) { 11724 if (newInputs.length !== lastInputs.length) { 11725 return false; 11726 } 11727 11728 for (var i = 0; i < newInputs.length; i++) { 11729 if (newInputs[i] !== lastInputs[i]) { 11730 return false; 11731 } 11732 } 11733 11734 return true; 11735} 11736 11737function memoizeOne(resultFn, isEqual) { 11738 if (isEqual === void 0) { 11739 isEqual = areInputsEqual; 11740 } 11741 11742 var lastThis; 11743 var lastArgs = []; 11744 var lastResult; 11745 var calledOnce = false; 11746 11747 function memoized() { 11748 var newArgs = []; 11749 11750 for (var _i = 0; _i < arguments.length; _i++) { 11751 newArgs[_i] = arguments[_i]; 11752 } 11753 11754 if (calledOnce && lastThis === this && isEqual(newArgs, lastArgs)) { 11755 return lastResult; 11756 } 11757 11758 lastResult = resultFn.apply(this, newArgs); 11759 calledOnce = true; 11760 lastThis = this; 11761 lastArgs = newArgs; 11762 return lastResult; 11763 } 11764 11765 return memoized; 11766} 11767 11768/* harmony default export */ __webpack_exports__["default"] = (memoizeOne); 11769 11770/***/ }), 11771
vendor: 5,629 bytes, lines 11772-11923
11772/***/ "./node_modules/merge-anything/dist/index.esm.js": 11773/*!*******************************************************!*\ 11774 !*** ./node_modules/merge-anything/dist/index.esm.js ***! 11775 \*******************************************************/ 11776/*! exports provided: default, concatArrays, merge */ 11777/***/ (function(module, __webpack_exports__, __webpack_require__) { 11778 11779"use strict"; 11780__webpack_require__.r(__webpack_exports__); 11781/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "concatArrays", function() { return concatArrays; }); 11782/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return merge; }); 11783/* harmony import */ var is_what__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! is-what */ "./node_modules/is-what/dist/index.esm.js"); 11784 11785/*! ***************************************************************************** 11786Copyright (c) Microsoft Corporation. All rights reserved. 11787Licensed under the Apache License, Version 2.0 (the "License"); you may not use 11788this file except in compliance with the License. You may obtain a copy of the 11789License at http://www.apache.org/licenses/LICENSE-2.0 11790 11791THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 11792KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED 11793WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, 11794MERCHANTABLITY OR NON-INFRINGEMENT. 11795 11796See the Apache Version 2.0 License for specific language governing permissions 11797and limitations under the License. 11798***************************************************************************** */ 11799 11800function __spreadArrays() { 11801 for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; 11802 11803 for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j]; 11804 11805 return r; 11806} 11807 11808function assignProp(carry, key, newVal, originalObject) { 11809 var propType = originalObject.propertyIsEnumerable(key) ? 'enumerable' : 'nonenumerable'; 11810 if (propType === 'enumerable') carry[key] = newVal; 11811 11812 if (propType === 'nonenumerable') { 11813 Object.defineProperty(carry, key, { 11814 value: newVal, 11815 enumerable: false, 11816 writable: true, 11817 configurable: true 11818 }); 11819 } 11820} 11821 11822function mergeRecursively(origin, newComer, extensions) { 11823 // work directly on newComer if its not an object 11824 if (!Object(is_what__WEBPACK_IMPORTED_MODULE_0__["isPlainObject"])(newComer)) { 11825 // extend merge rules 11826 if (extensions && Object(is_what__WEBPACK_IMPORTED_MODULE_0__["isArray"])(extensions)) { 11827 extensions.forEach(function (extend) { 11828 newComer = extend(origin, newComer); 11829 }); 11830 } 11831 11832 return newComer; 11833 } // define newObject to merge all values upon 11834 11835 11836 var newObject = {}; 11837 11838 if (Object(is_what__WEBPACK_IMPORTED_MODULE_0__["isPlainObject"])(origin)) { 11839 var props_1 = Object.getOwnPropertyNames(origin); 11840 var symbols_1 = Object.getOwnPropertySymbols(origin); 11841 newObject = __spreadArrays(props_1, symbols_1).reduce(function (carry, key) { 11842 // @ts-ignore 11843 var targetVal = origin[key]; 11844 11845 if (!Object(is_what__WEBPACK_IMPORTED_MODULE_0__["isSymbol"])(key) && !Object.getOwnPropertyNames(newComer).includes(key) || Object(is_what__WEBPACK_IMPORTED_MODULE_0__["isSymbol"])(key) && !Object.getOwnPropertySymbols(newComer).includes(key)) { 11846 assignProp(carry, key, targetVal, origin); 11847 } 11848 11849 return carry; 11850 }, {}); 11851 } 11852 11853 var props = Object.getOwnPropertyNames(newComer); 11854 var symbols = Object.getOwnPropertySymbols(newComer); 11855 11856 var result = __spreadArrays(props, symbols).reduce(function (carry, key) { 11857 // re-define the origin and newComer as targetVal and newVal 11858 var newVal = newComer[key]; 11859 var targetVal = Object(is_what__WEBPACK_IMPORTED_MODULE_0__["isPlainObject"])(origin) ? // @ts-ignore 11860 origin[key] : undefined; // extend merge rules 11861 11862 if (extensions && Object(is_what__WEBPACK_IMPORTED_MODULE_0__["isArray"])(extensions)) { 11863 extensions.forEach(function (extend) { 11864 newVal = extend(targetVal, newVal); 11865 }); 11866 } // When newVal is an object do the merge recursively 11867 11868 11869 if (targetVal !== undefined && Object(is_what__WEBPACK_IMPORTED_MODULE_0__["isPlainObject"])(newVal)) { 11870 newVal = mergeRecursively(targetVal, newVal, extensions); 11871 } 11872 11873 assignProp(carry, key, newVal, newComer); 11874 return carry; 11875 }, newObject); 11876 11877 return result; 11878} 11879/** 11880 * Merge anything recursively. 11881 * Objects get merged, special objects (classes etc.) are re-assigned "as is". 11882 * Basic types overwrite objects or other basic types. 11883 * 11884 * @param {(IConfig | any)} origin 11885 * @param {...any[]} newComers 11886 * @returns the result 11887 */ 11888 11889 11890function merge(origin) { 11891 var newComers = []; 11892 11893 for (var _i = 1; _i < arguments.length; _i++) { 11894 newComers[_i - 1] = arguments[_i]; 11895 } 11896 11897 var extensions = null; 11898 var base = origin; 11899 11900 if (Object(is_what__WEBPACK_IMPORTED_MODULE_0__["isPlainObject"])(origin) && origin.extensions && Object.keys(origin).length === 1) { 11901 base = {}; 11902 extensions = origin.extensions; 11903 } 11904 11905 return newComers.reduce(function (result, newComer) { 11906 return mergeRecursively(result, newComer, extensions); 11907 }, base); 11908} 11909 11910function concatArrays(originVal, newVal) { 11911 if (Object(is_what__WEBPACK_IMPORTED_MODULE_0__["isArray"])(originVal) && Object(is_what__WEBPACK_IMPORTED_MODULE_0__["isArray"])(newVal)) { 11912 // concat logic 11913 return originVal.concat(newVal); 11914 } 11915 11916 return newVal; // always return newVal as fallback!! 11917} 11918 11919/* harmony default export */ __webpack_exports__["default"] = (merge); 11920 11921 11922/***/ }), 11923
vendor: 1,073 bytes, lines 11924-11959
11924/***/ "./node_modules/normalize-newline/index.js": 11925/*!*************************************************!*\ 11926 !*** ./node_modules/normalize-newline/index.js ***! 11927 \*************************************************/ 11928/*! no static exports found */ 11929/***/ (function(module, exports, __webpack_require__) { 11930 11931"use strict"; 11932/* WEBPACK VAR INJECTION */(function(Buffer) { 11933 11934const CRLF = '\r\n'; 11935 11936const replaceBuf = buf => { 11937 const i = buf.indexOf(CRLF); 11938 11939 if (i === -1) { 11940 return buf; 11941 } 11942 11943 const start = buf.slice(0, i); 11944 const end = replaceBuf(buf.slice(i + CRLF.length)); 11945 const len = i + start.length + end.length; 11946 return Buffer.concat([start, '\n', end], len); 11947}; 11948 11949module.exports = x => { 11950 if (typeof x !== 'string' && !Buffer.isBuffer(x)) { 11951 throw new TypeError(`Expected a \`string\` or a \`Buffer\`, got \`${typeof x}\``); 11952 } 11953 11954 return Buffer.isBuffer(x) ? replaceBuf(x) : x.replace(new RegExp(CRLF, 'g'), '\n'); 11955}; 11956/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../buffer/index.js */ "./node_modules/buffer/index.js").Buffer)) 11957 11958/***/ }), 11959
vendor: 2,527 bytes, lines 11960-12065
11960/***/ "./node_modules/object-assign/index.js": 11961/*!*********************************************!*\ 11962 !*** ./node_modules/object-assign/index.js ***! 11963 \*********************************************/ 11964/*! no static exports found */ 11965/***/ (function(module, exports, __webpack_require__) { 11966 11967"use strict"; 11968/* 11969object-assign 11970(c) Sindre Sorhus 11971@license MIT 11972*/ 11973 11974/* eslint-disable no-unused-vars */ 11975 11976var getOwnPropertySymbols = Object.getOwnPropertySymbols; 11977var hasOwnProperty = Object.prototype.hasOwnProperty; 11978var propIsEnumerable = Object.prototype.propertyIsEnumerable; 11979 11980function toObject(val) { 11981 if (val === null || val === undefined) { 11982 throw new TypeError('Object.assign cannot be called with null or undefined'); 11983 } 11984 11985 return Object(val); 11986} 11987 11988function shouldUseNative() { 11989 try { 11990 if (!Object.assign) { 11991 return false; 11992 } // Detect buggy property enumeration order in older V8 versions. 11993 // https://bugs.chromium.org/p/v8/issues/detail?id=4118 11994 11995 11996 var test1 = new String('abc'); // eslint-disable-line no-new-wrappers 11997 11998 test1[5] = 'de'; 11999 12000 if (Object.getOwnPropertyNames(test1)[0] === '5') { 12001 return false; 12002 } // https://bugs.chromium.org/p/v8/issues/detail?id=3056 12003 12004 12005 var test2 = {}; 12006 12007 for (var i = 0; i < 10; i++) { 12008 test2['_' + String.fromCharCode(i)] = i; 12009 } 12010 12011 var order2 = Object.getOwnPropertyNames(test2).map(function (n) { 12012 return test2[n]; 12013 }); 12014 12015 if (order2.join('') !== '0123456789') { 12016 return false; 12017 } // https://bugs.chromium.org/p/v8/issues/detail?id=3056 12018 12019 12020 var test3 = {}; 12021 'abcdefghijklmnopqrst'.split('').forEach(function (letter) { 12022 test3[letter] = letter; 12023 }); 12024 12025 if (Object.keys(Object.assign({}, test3)).join('') !== 'abcdefghijklmnopqrst') { 12026 return false; 12027 } 12028 12029 return true; 12030 } catch (err) { 12031 // We don't expect any of the above to throw, but better to be safe. 12032 return false; 12033 } 12034} 12035 12036module.exports = shouldUseNative() ? Object.assign : function (target, source) { 12037 var from; 12038 var to = toObject(target); 12039 var symbols; 12040 12041 for (var s = 1; s < arguments.length; s++) { 12042 from = Object(arguments[s]); 12043 12044 for (var key in from) { 12045 if (hasOwnProperty.call(from, key)) { 12046 to[key] = from[key]; 12047 } 12048 } 12049 12050 if (getOwnPropertySymbols) { 12051 symbols = getOwnPropertySymbols(from); 12052 12053 for (var i = 0; i < symbols.length; i++) { 12054 if (propIsEnumerable.call(from, symbols[i])) { 12055 to[symbols[i]] = from[symbols[i]]; 12056 } 12057 } 12058 } 12059 } 12060 12061 return to; 12062}; 12063 12064/***/ }), 12065
vendor: 1,611 bytes, lines 12066-12133
12066/***/ "./node_modules/prism-react-renderer/themes/dracula/index.js": 12067/*!*******************************************************************!*\ 12068 !*** ./node_modules/prism-react-renderer/themes/dracula/index.js ***! 12069 \*******************************************************************/ 12070/*! exports provided: default */ 12071/***/ (function(module, __webpack_exports__, __webpack_require__) { 12072 12073"use strict"; 12074__webpack_require__.r(__webpack_exports__); 12075// Original: https://github.com/dracula/visual-studio-code 12076// Converted automatically using ./tools/themeFromVsCode 12077var theme = { 12078 plain: { 12079 color: "#F8F8F2", 12080 backgroundColor: "#282A36" 12081 }, 12082 styles: [{ 12083 types: ["prolog", "constant", "builtin"], 12084 style: { 12085 color: "rgb(189, 147, 249)" 12086 } 12087 }, { 12088 types: ["inserted", "function"], 12089 style: { 12090 color: "rgb(80, 250, 123)" 12091 } 12092 }, { 12093 types: ["deleted"], 12094 style: { 12095 color: "rgb(255, 85, 85)" 12096 } 12097 }, { 12098 types: ["changed"], 12099 style: { 12100 color: "rgb(255, 184, 108)" 12101 } 12102 }, { 12103 types: ["punctuation", "symbol"], 12104 style: { 12105 color: "rgb(248, 248, 242)" 12106 } 12107 }, { 12108 types: ["string", "char", "tag", "selector"], 12109 style: { 12110 color: "rgb(255, 121, 198)" 12111 } 12112 }, { 12113 types: ["keyword", "variable"], 12114 style: { 12115 color: "rgb(189, 147, 249)", 12116 fontStyle: "italic" 12117 } 12118 }, { 12119 types: ["comment"], 12120 style: { 12121 color: "rgb(98, 114, 164)" 12122 } 12123 }, { 12124 types: ["attr-name"], 12125 style: { 12126 color: "rgb(241, 250, 140)" 12127 } 12128 }] 12129}; 12130/* harmony default export */ __webpack_exports__["default"] = (theme); 12131 12132/***/ }), 12133
vendor: 5,344 bytes, lines 12134-12351
12134/***/ "./node_modules/process/browser.js": 12135/*!*****************************************!*\ 12136 !*** ./node_modules/process/browser.js ***! 12137 \*****************************************/ 12138/*! no static exports found */ 12139/***/ (function(module, exports) { 12140 12141// shim for using process in browser 12142var process = module.exports = {}; // cached from whatever global is present so that test runners that stub it 12143// don't break things. But we need to wrap it in a try catch in case it is 12144// wrapped in strict mode code which doesn't define any globals. It's inside a 12145// function because try/catches deoptimize in certain engines. 12146 12147var cachedSetTimeout; 12148var cachedClearTimeout; 12149 12150function defaultSetTimout() { 12151 throw new Error('setTimeout has not been defined'); 12152} 12153 12154function defaultClearTimeout() { 12155 throw new Error('clearTimeout has not been defined'); 12156} 12157 12158(function () { 12159 try { 12160 if (typeof setTimeout === 'function') { 12161 cachedSetTimeout = setTimeout; 12162 } else { 12163 cachedSetTimeout = defaultSetTimout; 12164 } 12165 } catch (e) { 12166 cachedSetTimeout = defaultSetTimout; 12167 } 12168 12169 try { 12170 if (typeof clearTimeout === 'function') { 12171 cachedClearTimeout = clearTimeout; 12172 } else { 12173 cachedClearTimeout = defaultClearTimeout; 12174 } 12175 } catch (e) { 12176 cachedClearTimeout = defaultClearTimeout; 12177 } 12178})(); 12179 12180function runTimeout(fun) { 12181 if (cachedSetTimeout === setTimeout) { 12182 //normal enviroments in sane situations 12183 return setTimeout(fun, 0); 12184 } // if setTimeout wasn't available but was latter defined 12185 12186 12187 if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { 12188 cachedSetTimeout = setTimeout; 12189 return setTimeout(fun, 0); 12190 } 12191 12192 try { 12193 // when when somebody has screwed with setTimeout but no I.E. maddness 12194 return cachedSetTimeout(fun, 0); 12195 } catch (e) { 12196 try { 12197 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally 12198 return cachedSetTimeout.call(null, fun, 0); 12199 } catch (e) { 12200 // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error 12201 return cachedSetTimeout.call(this, fun, 0); 12202 } 12203 } 12204} 12205 12206function runClearTimeout(marker) { 12207 if (cachedClearTimeout === clearTimeout) { 12208 //normal enviroments in sane situations 12209 return clearTimeout(marker); 12210 } // if clearTimeout wasn't available but was latter defined 12211 12212 12213 if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { 12214 cachedClearTimeout = clearTimeout; 12215 return clearTimeout(marker); 12216 } 12217 12218 try { 12219 // when when somebody has screwed with setTimeout but no I.E. maddness 12220 return cachedClearTimeout(marker); 12221 } catch (e) { 12222 try { 12223 // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally 12224 return cachedClearTimeout.call(null, marker); 12225 } catch (e) { 12226 // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error. 12227 // Some versions of I.E. have different rules for clearTimeout vs setTimeout 12228 return cachedClearTimeout.call(this, marker); 12229 } 12230 } 12231} 12232 12233var queue = []; 12234var draining = false; 12235var currentQueue; 12236var queueIndex = -1; 12237 12238function cleanUpNextTick() { 12239 if (!draining || !currentQueue) { 12240 return; 12241 } 12242 12243 draining = false; 12244 12245 if (currentQueue.length) { 12246 queue = currentQueue.concat(queue); 12247 } else { 12248 queueIndex = -1; 12249 } 12250 12251 if (queue.length) { 12252 drainQueue(); 12253 } 12254} 12255 12256function drainQueue() { 12257 if (draining) { 12258 return; 12259 } 12260 12261 var timeout = runTimeout(cleanUpNextTick); 12262 draining = true; 12263 var len = queue.length; 12264 12265 while (len) { 12266 currentQueue = queue; 12267 queue = []; 12268 12269 while (++queueIndex < len) { 12270 if (currentQueue) { 12271 currentQueue[queueIndex].run(); 12272 } 12273 } 12274 12275 queueIndex = -1; 12276 len = queue.length; 12277 } 12278 12279 currentQueue = null; 12280 draining = false; 12281 runClearTimeout(timeout); 12282} 12283 12284process.nextTick = function (fun) { 12285 var args = new Array(arguments.length - 1); 12286 12287 if (arguments.length > 1) { 12288 for (var i = 1; i < arguments.length; i++) { 12289 args[i - 1] = arguments[i]; 12290 } 12291 } 12292 12293 queue.push(new Item(fun, args)); 12294 12295 if (queue.length === 1 && !draining) { 12296 runTimeout(drainQueue); 12297 } 12298}; // v8 likes predictible objects 12299 12300 12301function Item(fun, array) { 12302 this.fun = fun; 12303 this.array = array; 12304} 12305 12306Item.prototype.run = function () { 12307 this.fun.apply(null, this.array); 12308}; 12309 12310process.title = 'browser'; 12311process.browser = true; 12312process.env = {}; 12313process.argv = []; 12314process.version = ''; // empty string to avoid regexp issues 12315 12316process.versions = {}; 12317 12318function noop() {} 12319 12320process.on = noop; 12321process.addListener = noop; 12322process.once = noop; 12323process.off = noop; 12324process.removeListener = noop; 12325process.removeAllListeners = noop; 12326process.emit = noop; 12327process.prependListener = noop; 12328process.prependOnceListener = noop; 12329 12330process.listeners = function (name) { 12331 return []; 12332}; 12333 12334process.binding = function (name) { 12335 throw new Error('process.binding is not supported'); 12336}; 12337 12338process.cwd = function () { 12339 return '/'; 12340}; 12341 12342process.chdir = function (dir) { 12343 throw new Error('process.chdir is not supported'); 12344}; 12345 12346process.umask = function () { 12347 return 0; 12348}; 12349 12350/***/ }), 12351
vendor: 3,931 bytes, lines 12352-12457
12352/***/ "./node_modules/prop-types/checkPropTypes.js": 12353/*!***************************************************!*\ 12354 !*** ./node_modules/prop-types/checkPropTypes.js ***! 12355 \***************************************************/ 12356/*! no static exports found */ 12357/***/ (function(module, exports, __webpack_require__) { 12358 12359"use strict"; 12360/** 12361 * Copyright (c) 2013-present, Facebook, Inc. 12362 * 12363 * This source code is licensed under the MIT license found in the 12364 * LICENSE file in the root directory of this source tree. 12365 */ 12366 12367 12368var printWarning = function () {}; 12369 12370if (true) { 12371 var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ "./node_modules/prop-types/lib/ReactPropTypesSecret.js"); 12372 12373 var loggedTypeFailures = {}; 12374 var has = Function.call.bind(Object.prototype.hasOwnProperty); 12375 12376 printWarning = function (text) { 12377 var message = 'Warning: ' + text; 12378 12379 if (typeof console !== 'undefined') { 12380 console.error(message); 12381 } 12382 12383 try { 12384 // --- Welcome to debugging React --- 12385 // This error was thrown as a convenience so that you can use this stack 12386 // to find the callsite that caused this warning to fire. 12387 throw new Error(message); 12388 } catch (x) {} 12389 }; 12390} 12391/** 12392 * Assert that the values match with the type specs. 12393 * Error messages are memorized and will only be shown once. 12394 * 12395 * @param {object} typeSpecs Map of name to a ReactPropType 12396 * @param {object} values Runtime values that need to be type-checked 12397 * @param {string} location e.g. "prop", "context", "child context" 12398 * @param {string} componentName Name of the component for error messages. 12399 * @param {?Function} getStack Returns the component stack. 12400 * @private 12401 */ 12402 12403 12404function checkPropTypes(typeSpecs, values, location, componentName, getStack) { 12405 if (true) { 12406 for (var typeSpecName in typeSpecs) { 12407 if (has(typeSpecs, typeSpecName)) { 12408 var error; // Prop type validation may throw. In case they do, we don't want to 12409 // fail the render phase where it didn't fail before. So we log it. 12410 // After these have been cleaned up, we'll let them throw. 12411 12412 try { 12413 // This is intentionally an invariant that gets caught. It's the same 12414 // behavior as without this statement except with a better message. 12415 if (typeof typeSpecs[typeSpecName] !== 'function') { 12416 var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.'); 12417 err.name = 'Invariant Violation'; 12418 throw err; 12419 } 12420 12421 error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret); 12422 } catch (ex) { 12423 error = ex; 12424 } 12425 12426 if (error && !(error instanceof Error)) { 12427 printWarning((componentName || 'React class') + ': type specification of ' + location + ' `' + typeSpecName + '` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).'); 12428 } 12429 12430 if (error instanceof Error && !(error.message in loggedTypeFailures)) { 12431 // Only monitor this failure once because there tends to be a lot of the 12432 // same error. 12433 loggedTypeFailures[error.message] = true; 12434 var stack = getStack ? getStack() : ''; 12435 printWarning('Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')); 12436 } 12437 } 12438 } 12439 } 12440} 12441/** 12442 * Resets warning cache when testing. 12443 * 12444 * @private 12445 */ 12446 12447 12448checkPropTypes.resetWarningCache = function () { 12449 if (true) { 12450 loggedTypeFailures = {}; 12451 } 12452}; 12453 12454module.exports = checkPropTypes; 12455 12456/***/ }), 12457
vendor: 21,779 bytes, lines 12458-13111
12458/***/ "./node_modules/prop-types/factoryWithTypeCheckers.js": 12459/*!************************************************************!*\ 12460 !*** ./node_modules/prop-types/factoryWithTypeCheckers.js ***! 12461 \************************************************************/ 12462/*! no static exports found */ 12463/***/ (function(module, exports, __webpack_require__) { 12464 12465"use strict"; 12466/** 12467 * Copyright (c) 2013-present, Facebook, Inc. 12468 * 12469 * This source code is licensed under the MIT license found in the 12470 * LICENSE file in the root directory of this source tree. 12471 */ 12472 12473 12474var ReactIs = __webpack_require__(/*! react-is */ "./node_modules/react-is/index.js"); 12475 12476var assign = __webpack_require__(/*! object-assign */ "./node_modules/object-assign/index.js"); 12477 12478var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ "./node_modules/prop-types/lib/ReactPropTypesSecret.js"); 12479 12480var checkPropTypes = __webpack_require__(/*! ./checkPropTypes */ "./node_modules/prop-types/checkPropTypes.js"); 12481 12482var has = Function.call.bind(Object.prototype.hasOwnProperty); 12483 12484var printWarning = function () {}; 12485 12486if (true) { 12487 printWarning = function (text) { 12488 var message = 'Warning: ' + text; 12489 12490 if (typeof console !== 'undefined') { 12491 console.error(message); 12492 } 12493 12494 try { 12495 // --- Welcome to debugging React --- 12496 // This error was thrown as a convenience so that you can use this stack 12497 // to find the callsite that caused this warning to fire. 12498 throw new Error(message); 12499 } catch (x) {} 12500 }; 12501} 12502 12503function emptyFunctionThatReturnsNull() { 12504 return null; 12505} 12506 12507module.exports = function (isValidElement, throwOnDirectAccess) { 12508 /* global Symbol */ 12509 var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator; 12510 var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec. 12511 12512 /** 12513 * Returns the iterator method function contained on the iterable object. 12514 * 12515 * Be sure to invoke the function with the iterable as context: 12516 * 12517 * var iteratorFn = getIteratorFn(myIterable); 12518 * if (iteratorFn) { 12519 * var iterator = iteratorFn.call(myIterable); 12520 * ... 12521 * } 12522 * 12523 * @param {?object} maybeIterable 12524 * @return {?function} 12525 */ 12526 12527 function getIteratorFn(maybeIterable) { 12528 var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]); 12529 12530 if (typeof iteratorFn === 'function') { 12531 return iteratorFn; 12532 } 12533 } 12534 /** 12535 * Collection of methods that allow declaration and validation of props that are 12536 * supplied to React components. Example usage: 12537 * 12538 * var Props = require('ReactPropTypes'); 12539 * var MyArticle = React.createClass({ 12540 * propTypes: { 12541 * // An optional string prop named "description". 12542 * description: Props.string, 12543 * 12544 * // A required enum prop named "category". 12545 * category: Props.oneOf(['News','Photos']).isRequired, 12546 * 12547 * // A prop named "dialog" that requires an instance of Dialog. 12548 * dialog: Props.instanceOf(Dialog).isRequired 12549 * }, 12550 * render: function() { ... } 12551 * }); 12552 * 12553 * A more formal specification of how these methods are used: 12554 * 12555 * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...) 12556 * decl := ReactPropTypes.{type}(.isRequired)? 12557 * 12558 * Each and every declaration produces a function with the same signature. This 12559 * allows the creation of custom validation functions. For example: 12560 * 12561 * var MyLink = React.createClass({ 12562 * propTypes: { 12563 * // An optional string or URI prop named "href". 12564 * href: function(props, propName, componentName) { 12565 * var propValue = props[propName]; 12566 * if (propValue != null && typeof propValue !== 'string' && 12567 * !(propValue instanceof URI)) { 12568 * return new Error( 12569 * 'Expected a string or an URI for ' + propName + ' in ' + 12570 * componentName 12571 * ); 12572 * } 12573 * } 12574 * }, 12575 * render: function() {...} 12576 * }); 12577 * 12578 * @internal 12579 */ 12580 12581 12582 var ANONYMOUS = '<<anonymous>>'; // Important! 12583 // Keep this list in sync with production version in `./factoryWithThrowingShims.js`. 12584 12585 var ReactPropTypes = { 12586 array: createPrimitiveTypeChecker('array'), 12587 bool: createPrimitiveTypeChecker('boolean'), 12588 func: createPrimitiveTypeChecker('function'), 12589 number: createPrimitiveTypeChecker('number'), 12590 object: createPrimitiveTypeChecker('object'), 12591 string: createPrimitiveTypeChecker('string'), 12592 symbol: createPrimitiveTypeChecker('symbol'), 12593 any: createAnyTypeChecker(), 12594 arrayOf: createArrayOfTypeChecker, 12595 element: createElementTypeChecker(), 12596 elementType: createElementTypeTypeChecker(), 12597 instanceOf: createInstanceTypeChecker, 12598 node: createNodeChecker(), 12599 objectOf: createObjectOfTypeChecker, 12600 oneOf: createEnumTypeChecker, 12601 oneOfType: createUnionTypeChecker, 12602 shape: createShapeTypeChecker, 12603 exact: createStrictShapeTypeChecker 12604 }; 12605 /** 12606 * inlined Object.is polyfill to avoid requiring consumers ship their own 12607 * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is 12608 */ 12609 12610 /*eslint-disable no-self-compare*/ 12611 12612 function is(x, y) { 12613 // SameValue algorithm 12614 if (x === y) { 12615 // Steps 1-5, 7-10 12616 // Steps 6.b-6.e: +0 != -0 12617 return x !== 0 || 1 / x === 1 / y; 12618 } else { 12619 // Step 6.a: NaN == NaN 12620 return x !== x && y !== y; 12621 } 12622 } 12623 /*eslint-enable no-self-compare*/ 12624 12625 /** 12626 * We use an Error-like object for backward compatibility as people may call 12627 * PropTypes directly and inspect their output. However, we don't use real 12628 * Errors anymore. We don't inspect their stack anyway, and creating them 12629 * is prohibitively expensive if they are created too often, such as what 12630 * happens in oneOfType() for any type before the one that matched. 12631 */ 12632 12633 12634 function PropTypeError(message) { 12635 this.message = message; 12636 this.stack = ''; 12637 } // Make `instanceof Error` still work for returned errors. 12638 12639 12640 PropTypeError.prototype = Error.prototype; 12641 12642 function createChainableTypeChecker(validate) { 12643 if (true) { 12644 var manualPropTypeCallCache = {}; 12645 var manualPropTypeWarningCount = 0; 12646 } 12647 12648 function checkType(isRequired, props, propName, componentName, location, propFullName, secret) { 12649 componentName = componentName || ANONYMOUS; 12650 propFullName = propFullName || propName; 12651 12652 if (secret !== ReactPropTypesSecret) { 12653 if (throwOnDirectAccess) { 12654 // New behavior only for users of `prop-types` package 12655 var err = new Error('Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use `PropTypes.checkPropTypes()` to call them. ' + 'Read more at http://fb.me/use-check-prop-types'); 12656 err.name = 'Invariant Violation'; 12657 throw err; 12658 } else if ( true && typeof console !== 'undefined') { 12659 // Old behavior for people using React.PropTypes 12660 var cacheKey = componentName + ':' + propName; 12661 12662 if (!manualPropTypeCallCache[cacheKey] && // Avoid spamming the console because they are often not actionable except for lib authors 12663 manualPropTypeWarningCount < 3) { 12664 printWarning('You are manually calling a React.PropTypes validation ' + 'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' + 'and will throw in the standalone `prop-types` package. ' + 'You may be seeing this warning due to a third-party PropTypes ' + 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'); 12665 manualPropTypeCallCache[cacheKey] = true; 12666 manualPropTypeWarningCount++; 12667 } 12668 } 12669 } 12670 12671 if (props[propName] == null) { 12672 if (isRequired) { 12673 if (props[propName] === null) { 12674 return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.')); 12675 } 12676 12677 return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.')); 12678 } 12679 12680 return null; 12681 } else { 12682 return validate(props, propName, componentName, location, propFullName); 12683 } 12684 } 12685 12686 var chainedCheckType = checkType.bind(null, false); 12687 chainedCheckType.isRequired = checkType.bind(null, true); 12688 return chainedCheckType; 12689 } 12690 12691 function createPrimitiveTypeChecker(expectedType) { 12692 function validate(props, propName, componentName, location, propFullName, secret) { 12693 var propValue = props[propName]; 12694 var propType = getPropType(propValue); 12695 12696 if (propType !== expectedType) { 12697 // `propValue` being instance of, say, date/regexp, pass the 'object' 12698 // check, but we can offer a more precise error message here rather than 12699 // 'of type `object`'. 12700 var preciseType = getPreciseType(propValue); 12701 return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.')); 12702 } 12703 12704 return null; 12705 } 12706 12707 return createChainableTypeChecker(validate); 12708 } 12709 12710 function createAnyTypeChecker() { 12711 return createChainableTypeChecker(emptyFunctionThatReturnsNull); 12712 } 12713 12714 function createArrayOfTypeChecker(typeChecker) { 12715 function validate(props, propName, componentName, location, propFullName) { 12716 if (typeof typeChecker !== 'function') { 12717 return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.'); 12718 } 12719 12720 var propValue = props[propName]; 12721 12722 if (!Array.isArray(propValue)) { 12723 var propType = getPropType(propValue); 12724 return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.')); 12725 } 12726 12727 for (var i = 0; i < propValue.length; i++) { 12728 var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret); 12729 12730 if (error instanceof Error) { 12731 return error; 12732 } 12733 } 12734 12735 return null; 12736 } 12737 12738 return createChainableTypeChecker(validate); 12739 } 12740 12741 function createElementTypeChecker() { 12742 function validate(props, propName, componentName, location, propFullName) { 12743 var propValue = props[propName]; 12744 12745 if (!isValidElement(propValue)) { 12746 var propType = getPropType(propValue); 12747 return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.')); 12748 } 12749 12750 return null; 12751 } 12752 12753 return createChainableTypeChecker(validate); 12754 } 12755 12756 function createElementTypeTypeChecker() { 12757 function validate(props, propName, componentName, location, propFullName) { 12758 var propValue = props[propName]; 12759 12760 if (!ReactIs.isValidElementType(propValue)) { 12761 var propType = getPropType(propValue); 12762 return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.')); 12763 } 12764 12765 return null; 12766 } 12767 12768 return createChainableTypeChecker(validate); 12769 } 12770 12771 function createInstanceTypeChecker(expectedClass) { 12772 function validate(props, propName, componentName, location, propFullName) { 12773 if (!(props[propName] instanceof expectedClass)) { 12774 var expectedClassName = expectedClass.name || ANONYMOUS; 12775 var actualClassName = getClassName(props[propName]); 12776 return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.')); 12777 } 12778 12779 return null; 12780 } 12781 12782 return createChainableTypeChecker(validate); 12783 } 12784 12785 function createEnumTypeChecker(expectedValues) { 12786 if (!Array.isArray(expectedValues)) { 12787 if (true) { 12788 if (arguments.length > 1) { 12789 printWarning('Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' + 'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'); 12790 } else { 12791 printWarning('Invalid argument supplied to oneOf, expected an array.'); 12792 } 12793 } 12794 12795 return emptyFunctionThatReturnsNull; 12796 } 12797 12798 function validate(props, propName, componentName, location, propFullName) { 12799 var propValue = props[propName]; 12800 12801 for (var i = 0; i < expectedValues.length; i++) { 12802 if (is(propValue, expectedValues[i])) { 12803 return null; 12804 } 12805 } 12806 12807 var valuesString = JSON.stringify(expectedValues, function replacer(key, value) { 12808 var type = getPreciseType(value); 12809 12810 if (type === 'symbol') { 12811 return String(value); 12812 } 12813 12814 return value; 12815 }); 12816 return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.')); 12817 } 12818 12819 return createChainableTypeChecker(validate); 12820 } 12821 12822 function createObjectOfTypeChecker(typeChecker) { 12823 function validate(props, propName, componentName, location, propFullName) { 12824 if (typeof typeChecker !== 'function') { 12825 return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.'); 12826 } 12827 12828 var propValue = props[propName]; 12829 var propType = getPropType(propValue); 12830 12831 if (propType !== 'object') { 12832 return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.')); 12833 } 12834 12835 for (var key in propValue) { 12836 if (has(propValue, key)) { 12837 var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); 12838 12839 if (error instanceof Error) { 12840 return error; 12841 } 12842 } 12843 } 12844 12845 return null; 12846 } 12847 12848 return createChainableTypeChecker(validate); 12849 } 12850 12851 function createUnionTypeChecker(arrayOfTypeCheckers) { 12852 if (!Array.isArray(arrayOfTypeCheckers)) { 12853 true ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : undefined; 12854 return emptyFunctionThatReturnsNull; 12855 } 12856 12857 for (var i = 0; i < arrayOfTypeCheckers.length; i++) { 12858 var checker = arrayOfTypeCheckers[i]; 12859 12860 if (typeof checker !== 'function') { 12861 printWarning('Invalid argument supplied to oneOfType. Expected an array of check functions, but ' + 'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'); 12862 return emptyFunctionThatReturnsNull; 12863 } 12864 } 12865 12866 function validate(props, propName, componentName, location, propFullName) { 12867 for (var i = 0; i < arrayOfTypeCheckers.length; i++) { 12868 var checker = arrayOfTypeCheckers[i]; 12869 12870 if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) { 12871 return null; 12872 } 12873 } 12874 12875 return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.')); 12876 } 12877 12878 return createChainableTypeChecker(validate); 12879 } 12880 12881 function createNodeChecker() { 12882 function validate(props, propName, componentName, location, propFullName) { 12883 if (!isNode(props[propName])) { 12884 return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.')); 12885 } 12886 12887 return null; 12888 } 12889 12890 return createChainableTypeChecker(validate); 12891 } 12892 12893 function createShapeTypeChecker(shapeTypes) { 12894 function validate(props, propName, componentName, location, propFullName) { 12895 var propValue = props[propName]; 12896 var propType = getPropType(propValue); 12897 12898 if (propType !== 'object') { 12899 return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); 12900 } 12901 12902 for (var key in shapeTypes) { 12903 var checker = shapeTypes[key]; 12904 12905 if (!checker) { 12906 continue; 12907 } 12908 12909 var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); 12910 12911 if (error) { 12912 return error; 12913 } 12914 } 12915 12916 return null; 12917 } 12918 12919 return createChainableTypeChecker(validate); 12920 } 12921 12922 function createStrictShapeTypeChecker(shapeTypes) { 12923 function validate(props, propName, componentName, location, propFullName) { 12924 var propValue = props[propName]; 12925 var propType = getPropType(propValue); 12926 12927 if (propType !== 'object') { 12928 return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.')); 12929 } // We need to check all keys in case some are required but missing from 12930 // props. 12931 12932 12933 var allKeys = assign({}, props[propName], shapeTypes); 12934 12935 for (var key in allKeys) { 12936 var checker = shapeTypes[key]; 12937 12938 if (!checker) { 12939 return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' + '\nBad object: ' + JSON.stringify(props[propName], null, ' ') + '\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' ')); 12940 } 12941 12942 var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret); 12943 12944 if (error) { 12945 return error; 12946 } 12947 } 12948 12949 return null; 12950 } 12951 12952 return createChainableTypeChecker(validate); 12953 } 12954 12955 function isNode(propValue) { 12956 switch (typeof propValue) { 12957 case 'number': 12958 case 'string': 12959 case 'undefined': 12960 return true; 12961 12962 case 'boolean': 12963 return !propValue; 12964 12965 case 'object': 12966 if (Array.isArray(propValue)) { 12967 return propValue.every(isNode); 12968 } 12969 12970 if (propValue === null || isValidElement(propValue)) { 12971 return true; 12972 } 12973 12974 var iteratorFn = getIteratorFn(propValue); 12975 12976 if (iteratorFn) { 12977 var iterator = iteratorFn.call(propValue); 12978 var step; 12979 12980 if (iteratorFn !== propValue.entries) { 12981 while (!(step = iterator.next()).done) { 12982 if (!isNode(step.value)) { 12983 return false; 12984 } 12985 } 12986 } else { 12987 // Iterator will provide entry [k,v] tuples rather than values. 12988 while (!(step = iterator.next()).done) { 12989 var entry = step.value; 12990 12991 if (entry) { 12992 if (!isNode(entry[1])) { 12993 return false; 12994 } 12995 } 12996 } 12997 } 12998 } else { 12999 return false; 13000 } 13001 13002 return true; 13003 13004 default: 13005 return false; 13006 } 13007 } 13008 13009 function isSymbol(propType, propValue) { 13010 // Native Symbol. 13011 if (propType === 'symbol') { 13012 return true; 13013 } // falsy value can't be a Symbol 13014 13015 13016 if (!propValue) { 13017 return false; 13018 } // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol' 13019 13020 13021 if (propValue['@@toStringTag'] === 'Symbol') { 13022 return true; 13023 } // Fallback for non-spec compliant Symbols which are polyfilled. 13024 13025 13026 if (typeof Symbol === 'function' && propValue instanceof Symbol) { 13027 return true; 13028 } 13029 13030 return false; 13031 } // Equivalent of `typeof` but with special handling for array and regexp. 13032 13033 13034 function getPropType(propValue) { 13035 var propType = typeof propValue; 13036 13037 if (Array.isArray(propValue)) { 13038 return 'array'; 13039 } 13040 13041 if (propValue instanceof RegExp) { 13042 // Old webkits (at least until Android 4.0) return 'function' rather than 13043 // 'object' for typeof a RegExp. We'll normalize this here so that /bla/ 13044 // passes PropTypes.object. 13045 return 'object'; 13046 } 13047 13048 if (isSymbol(propType, propValue)) { 13049 return 'symbol'; 13050 } 13051 13052 return propType; 13053 } // This handles more types than `getPropType`. Only used for error messages. 13054 // See `createPrimitiveTypeChecker`. 13055 13056 13057 function getPreciseType(propValue) { 13058 if (typeof propValue === 'undefined' || propValue === null) { 13059 return '' + propValue; 13060 } 13061 13062 var propType = getPropType(propValue); 13063 13064 if (propType === 'object') { 13065 if (propValue instanceof Date) { 13066 return 'date'; 13067 } else if (propValue instanceof RegExp) { 13068 return 'regexp'; 13069 } 13070 } 13071 13072 return propType; 13073 } // Returns a string that is postfixed to a warning about an invalid type. 13074 // For example, "undefined" or "of type array" 13075 13076 13077 function getPostfixForTypeWarning(value) { 13078 var type = getPreciseType(value); 13079 13080 switch (type) { 13081 case 'array': 13082 case 'object': 13083 return 'an ' + type; 13084 13085 case 'boolean': 13086 case 'date': 13087 case 'regexp': 13088 return 'a ' + type; 13089 13090 default: 13091 return type; 13092 } 13093 } // Returns class name of the object, if any. 13094 13095 13096 function getClassName(propValue) { 13097 if (!propValue.constructor || !propValue.constructor.name) { 13098 return ANONYMOUS; 13099 } 13100 13101 return propValue.constructor.name; 13102 } 13103 13104 ReactPropTypes.checkPropTypes = checkPropTypes; 13105 ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache; 13106 ReactPropTypes.PropTypes = ReactPropTypes; 13107 return ReactPropTypes; 13108}; 13109 13110/***/ }), 13111
vendor: 905 bytes, lines 13112-13135
13112/***/ "./node_modules/prop-types/index.js": 13113/*!******************************************!*\ 13114 !*** ./node_modules/prop-types/index.js ***! 13115 \******************************************/ 13116/*! no static exports found */ 13117/***/ (function(module, exports, __webpack_require__) { 13118 13119/** 13120 * Copyright (c) 2013-present, Facebook, Inc. 13121 * 13122 * This source code is licensed under the MIT license found in the 13123 * LICENSE file in the root directory of this source tree. 13124 */ 13125if (true) { 13126 var ReactIs = __webpack_require__(/*! react-is */ "./node_modules/react-is/index.js"); // By explicitly using `prop-types` you are opting into new development behavior. 13127 // http://fb.me/prop-types-in-prod 13128 13129 13130 var throwOnDirectAccess = true; 13131 module.exports = __webpack_require__(/*! ./factoryWithTypeCheckers */ "./node_modules/prop-types/factoryWithTypeCheckers.js")(ReactIs.isElement, throwOnDirectAccess); 13132} else {} 13133 13134/***/ }), 13135
vendor: 676 bytes, lines 13136-13156
13136/***/ "./node_modules/prop-types/lib/ReactPropTypesSecret.js": 13137/*!*************************************************************!*\ 13138 !*** ./node_modules/prop-types/lib/ReactPropTypesSecret.js ***! 13139 \*************************************************************/ 13140/*! no static exports found */ 13141/***/ (function(module, exports, __webpack_require__) { 13142 13143"use strict"; 13144/** 13145 * Copyright (c) 2013-present, Facebook, Inc. 13146 * 13147 * This source code is licensed under the MIT license found in the 13148 * LICENSE file in the root directory of this source tree. 13149 */ 13150 13151 13152var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; 13153module.exports = ReactPropTypesSecret; 13154 13155/***/ }), 13156
vendor: 9,608 bytes, lines 13157-13523
13157/***/ "./node_modules/query-string/index.js": 13158/*!********************************************!*\ 13159 !*** ./node_modules/query-string/index.js ***! 13160 \********************************************/ 13161/*! no static exports found */ 13162/***/ (function(module, exports, __webpack_require__) { 13163 13164"use strict"; 13165 13166 13167const strictUriEncode = __webpack_require__(/*! strict-uri-encode */ "./node_modules/strict-uri-encode/index.js"); 13168 13169const decodeComponent = __webpack_require__(/*! decode-uri-component */ "./node_modules/decode-uri-component/index.js"); 13170 13171const splitOnFirst = __webpack_require__(/*! split-on-first */ "./node_modules/split-on-first/index.js"); 13172 13173const isNullOrUndefined = value => value === null || value === undefined; 13174 13175function encoderForArrayFormat(options) { 13176 switch (options.arrayFormat) { 13177 case 'index': 13178 return key => (result, value) => { 13179 const index = result.length; 13180 13181 if (value === undefined || options.skipNull && value === null || options.skipEmptyString && value === '') { 13182 return result; 13183 } 13184 13185 if (value === null) { 13186 return [...result, [encode(key, options), '[', index, ']'].join('')]; 13187 } 13188 13189 return [...result, [encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')]; 13190 }; 13191 13192 case 'bracket': 13193 return key => (result, value) => { 13194 if (value === undefined || options.skipNull && value === null || options.skipEmptyString && value === '') { 13195 return result; 13196 } 13197 13198 if (value === null) { 13199 return [...result, [encode(key, options), '[]'].join('')]; 13200 } 13201 13202 return [...result, [encode(key, options), '[]=', encode(value, options)].join('')]; 13203 }; 13204 13205 case 'comma': 13206 case 'separator': 13207 return key => (result, value) => { 13208 if (value === null || value === undefined || value.length === 0) { 13209 return result; 13210 } 13211 13212 if (result.length === 0) { 13213 return [[encode(key, options), '=', encode(value, options)].join('')]; 13214 } 13215 13216 return [[result, encode(value, options)].join(options.arrayFormatSeparator)]; 13217 }; 13218 13219 default: 13220 return key => (result, value) => { 13221 if (value === undefined || options.skipNull && value === null || options.skipEmptyString && value === '') { 13222 return result; 13223 } 13224 13225 if (value === null) { 13226 return [...result, encode(key, options)]; 13227 } 13228 13229 return [...result, [encode(key, options), '=', encode(value, options)].join('')]; 13230 }; 13231 } 13232} 13233 13234function parserForArrayFormat(options) { 13235 let result; 13236 13237 switch (options.arrayFormat) { 13238 case 'index': 13239 return (key, value, accumulator) => { 13240 result = /\[(\d*)\]$/.exec(key); 13241 key = key.replace(/\[\d*\]$/, ''); 13242 13243 if (!result) { 13244 accumulator[key] = value; 13245 return; 13246 } 13247 13248 if (accumulator[key] === undefined) { 13249 accumulator[key] = {}; 13250 } 13251 13252 accumulator[key][result[1]] = value; 13253 }; 13254 13255 case 'bracket': 13256 return (key, value, accumulator) => { 13257 result = /(\[\])$/.exec(key); 13258 key = key.replace(/\[\]$/, ''); 13259 13260 if (!result) { 13261 accumulator[key] = value; 13262 return; 13263 } 13264 13265 if (accumulator[key] === undefined) { 13266 accumulator[key] = [value]; 13267 return; 13268 } 13269 13270 accumulator[key] = [].concat(accumulator[key], value); 13271 }; 13272 13273 case 'comma': 13274 case 'separator': 13275 return (key, value, accumulator) => { 13276 const isArray = typeof value === 'string' && value.split('').indexOf(options.arrayFormatSeparator) > -1; 13277 const newValue = isArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options); 13278 accumulator[key] = newValue; 13279 }; 13280 13281 default: 13282 return (key, value, accumulator) => { 13283 if (accumulator[key] === undefined) { 13284 accumulator[key] = value; 13285 return; 13286 } 13287 13288 accumulator[key] = [].concat(accumulator[key], value); 13289 }; 13290 } 13291} 13292 13293function validateArrayFormatSeparator(value) { 13294 if (typeof value !== 'string' || value.length !== 1) { 13295 throw new TypeError('arrayFormatSeparator must be single character string'); 13296 } 13297} 13298 13299function encode(value, options) { 13300 if (options.encode) { 13301 return options.strict ? strictUriEncode(value) : encodeURIComponent(value); 13302 } 13303 13304 return value; 13305} 13306 13307function decode(value, options) { 13308 if (options.decode) { 13309 return decodeComponent(value); 13310 } 13311 13312 return value; 13313} 13314 13315function keysSorter(input) { 13316 if (Array.isArray(input)) { 13317 return input.sort(); 13318 } 13319 13320 if (typeof input === 'object') { 13321 return keysSorter(Object.keys(input)).sort((a, b) => Number(a) - Number(b)).map(key => input[key]); 13322 } 13323 13324 return input; 13325} 13326 13327function removeHash(input) { 13328 const hashStart = input.indexOf('#'); 13329 13330 if (hashStart !== -1) { 13331 input = input.slice(0, hashStart); 13332 } 13333 13334 return input; 13335} 13336 13337function getHash(url) { 13338 let hash = ''; 13339 const hashStart = url.indexOf('#'); 13340 13341 if (hashStart !== -1) { 13342 hash = url.slice(hashStart); 13343 } 13344 13345 return hash; 13346} 13347 13348function extract(input) { 13349 input = removeHash(input); 13350 const queryStart = input.indexOf('?'); 13351 13352 if (queryStart === -1) { 13353 return ''; 13354 } 13355 13356 return input.slice(queryStart + 1); 13357} 13358 13359function parseValue(value, options) { 13360 if (options.parseNumbers && !Number.isNaN(Number(value)) && typeof value === 'string' && value.trim() !== '') { 13361 value = Number(value); 13362 } else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) { 13363 value = value.toLowerCase() === 'true'; 13364 } 13365 13366 return value; 13367} 13368 13369function parse(input, options) { 13370 options = Object.assign({ 13371 decode: true, 13372 sort: true, 13373 arrayFormat: 'none', 13374 arrayFormatSeparator: ',', 13375 parseNumbers: false, 13376 parseBooleans: false 13377 }, options); 13378 validateArrayFormatSeparator(options.arrayFormatSeparator); 13379 const formatter = parserForArrayFormat(options); // Create an object with no prototype 13380 13381 const ret = Object.create(null); 13382 13383 if (typeof input !== 'string') { 13384 return ret; 13385 } 13386 13387 input = input.trim().replace(/^[?#&]/, ''); 13388 13389 if (!input) { 13390 return ret; 13391 } 13392 13393 for (const param of input.split('&')) { 13394 let [key, value] = splitOnFirst(options.decode ? param.replace(/\+/g, ' ') : param, '='); // Missing `=` should be `null`: 13395 // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters 13396 13397 value = value === undefined ? null : ['comma', 'separator'].includes(options.arrayFormat) ? value : decode(value, options); 13398 formatter(decode(key, options), value, ret); 13399 } 13400 13401 for (const key of Object.keys(ret)) { 13402 const value = ret[key]; 13403 13404 if (typeof value === 'object' && value !== null) { 13405 for (const k of Object.keys(value)) { 13406 value[k] = parseValue(value[k], options); 13407 } 13408 } else { 13409 ret[key] = parseValue(value, options); 13410 } 13411 } 13412 13413 if (options.sort === false) { 13414 return ret; 13415 } 13416 13417 return (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => { 13418 const value = ret[key]; 13419 13420 if (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) { 13421 // Sort object keys, not values 13422 result[key] = keysSorter(value); 13423 } else { 13424 result[key] = value; 13425 } 13426 13427 return result; 13428 }, Object.create(null)); 13429} 13430 13431exports.extract = extract; 13432exports.parse = parse; 13433 13434exports.stringify = (object, options) => { 13435 if (!object) { 13436 return ''; 13437 } 13438 13439 options = Object.assign({ 13440 encode: true, 13441 strict: true, 13442 arrayFormat: 'none', 13443 arrayFormatSeparator: ',' 13444 }, options); 13445 validateArrayFormatSeparator(options.arrayFormatSeparator); 13446 13447 const shouldFilter = key => options.skipNull && isNullOrUndefined(object[key]) || options.skipEmptyString && object[key] === ''; 13448 13449 const formatter = encoderForArrayFormat(options); 13450 const objectCopy = {}; 13451 13452 for (const key of Object.keys(object)) { 13453 if (!shouldFilter(key)) { 13454 objectCopy[key] = object[key]; 13455 } 13456 } 13457 13458 const keys = Object.keys(objectCopy); 13459 13460 if (options.sort !== false) { 13461 keys.sort(options.sort); 13462 } 13463 13464 return keys.map(key => { 13465 const value = object[key]; 13466 13467 if (value === undefined) { 13468 return ''; 13469 } 13470 13471 if (value === null) { 13472 return encode(key, options); 13473 } 13474 13475 if (Array.isArray(value)) { 13476 return value.reduce(formatter(key), []).join('&'); 13477 } 13478 13479 return encode(key, options) + '=' + encode(value, options); 13480 }).filter(x => x.length > 0).join('&'); 13481}; 13482 13483exports.parseUrl = (input, options) => { 13484 options = Object.assign({ 13485 decode: true 13486 }, options); 13487 const [url, hash] = splitOnFirst(input, '#'); 13488 return Object.assign({ 13489 url: url.split('?')[0] || '', 13490 query: parse(extract(input), options) 13491 }, options && options.parseFragmentIdentifier && hash ? { 13492 fragmentIdentifier: decode(hash, options) 13493 } : {}); 13494}; 13495 13496exports.stringifyUrl = (input, options) => { 13497 options = Object.assign({ 13498 encode: true, 13499 strict: true 13500 }, options); 13501 const url = removeHash(input.url).split('?')[0] || ''; 13502 const queryFromUrl = exports.extract(input.url); 13503 const parsedQueryFromUrl = exports.parse(queryFromUrl, { 13504 sort: false 13505 }); 13506 const query = Object.assign(parsedQueryFromUrl, input.query); 13507 let queryString = exports.stringify(query, options); 13508 13509 if (queryString) { 13510 queryString = `?${queryString}`; 13511 } 13512 13513 let hash = getHash(input.url); 13514 13515 if (input.fragmentIdentifier) { 13516 hash = `#${encode(input.fragmentIdentifier, options)}`; 13517 } 13518 13519 return `${url}${queryString}${hash}`; 13520}; 13521 13522/***/ }), 13523
vendor: 721,738 bytes, lines 13524-17669
13524/***/ "./node_modules/react-dom/cjs/react-dom.development.js": 13525/*!*************************************************************!*\ 13526 !*** ./node_modules/react-dom/cjs/react-dom.development.js ***! 13527 \*************************************************************/ 13528/*! no static exports found */ 13529/***/ (function(module, exports, __webpack_require__) { 13530 13531"use strict"; 13532/** @license React v16.13.1 13533 * react-dom.development.js 13534 * 13535 * Copyright (c) Facebook, Inc. and its affiliates. 13536 * 13537 * This source code is licensed under the MIT license found in the 13538 * LICENSE file in the root directory of this source tree. 13539 */if(true){(function(){'use strict';var React=__webpack_require__(/*! react */ "./node_modules/react/index.js");var _assign=__webpack_require__(/*! object-assign */ "./node_modules/object-assign/index.js");var Scheduler=__webpack_require__(/*! scheduler */ "./node_modules/scheduler/index.js");var checkPropTypes=__webpack_require__(/*! prop-types/checkPropTypes */ "./node_modules/prop-types/checkPropTypes.js");var tracing=__webpack_require__(/*! scheduler/tracing */ "./node_modules/scheduler/tracing.js");var ReactSharedInternals=React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;// Prevent newer renderers from RTE when used with older react package versions. 13540// Current owner and dispatcher used to share the same ref, 13541// but PR #14548 split them out to better support the react-debug-tools package. 13542if(!ReactSharedInternals.hasOwnProperty('ReactCurrentDispatcher')){ReactSharedInternals.ReactCurrentDispatcher={current:null};}if(!ReactSharedInternals.hasOwnProperty('ReactCurrentBatchConfig')){ReactSharedInternals.ReactCurrentBatchConfig={suspense:null};}// by calls to these methods by a Babel plugin. 13543// 13544// In PROD (or in packages without access to React internals), 13545// they are left as they are instead. 13546function warn(format){{for(var _len=arguments.length,args=new Array(_len>1?_len-1:0),_key=1;_key<_len;_key++){args[_key-1]=arguments[_key];}printWarning('warn',format,args);}}function error(format){{for(var _len2=arguments.length,args=new Array(_len2>1?_len2-1:0),_key2=1;_key2<_len2;_key2++){args[_key2-1]=arguments[_key2];}printWarning('error',format,args);}}function printWarning(level,format,args){// When changing this logic, you might want to also 13547// update consoleWithStackDev.www.js as well. 13548{var hasExistingStack=args.length>0&&typeof args[args.length-1]==='string'&&args[args.length-1].indexOf('\n in')===0;if(!hasExistingStack){var ReactDebugCurrentFrame=ReactSharedInternals.ReactDebugCurrentFrame;var stack=ReactDebugCurrentFrame.getStackAddendum();if(stack!==''){format+='%s';args=args.concat([stack]);}}var argsWithFormat=args.map(function(item){return''+item;});// Careful: RN currently depends on this prefix 13549argsWithFormat.unshift('Warning: '+format);// We intentionally don't use spread (or .apply) directly because it 13550// breaks IE9: https://github.com/facebook/react/issues/13610 13551// eslint-disable-next-line react-internal/no-production-logging 13552Function.prototype.apply.call(console[level],console,argsWithFormat);try{// --- Welcome to debugging React --- 13553// This error was thrown as a convenience so that you can use this stack 13554// to find the callsite that caused this warning to fire. 13555var argIndex=0;var message='Warning: '+format.replace(/%s/g,function(){return args[argIndex++];});throw new Error(message);}catch(x){}}}if(!React){{throw Error("ReactDOM was loaded before React. Make sure you load the React package before loading ReactDOM.");}}var invokeGuardedCallbackImpl=function(name,func,context,a,b,c,d,e,f){var funcArgs=Array.prototype.slice.call(arguments,3);try{func.apply(context,funcArgs);}catch(error){this.onError(error);}};{// In DEV mode, we swap out invokeGuardedCallback for a special version 13556// that plays more nicely with the browser's DevTools. The idea is to preserve 13557// "Pause on exceptions" behavior. Because React wraps all user-provided 13558// functions in invokeGuardedCallback, and the production version of 13559// invokeGuardedCallback uses a try-catch, all user exceptions are treated 13560// like caught exceptions, and the DevTools won't pause unless the developer 13561// takes the extra step of enabling pause on caught exceptions. This is 13562// unintuitive, though, because even though React has caught the error, from 13563// the developer's perspective, the error is uncaught. 13564// 13565// To preserve the expected "Pause on exceptions" behavior, we don't use a 13566// try-catch in DEV. Instead, we synchronously dispatch a fake event to a fake 13567// DOM node, and call the user-provided callback from inside an event handler 13568// for that fake event. If the callback throws, the error is "captured" using 13569// a global event handler. But because the error happens in a different 13570// event loop context, it does not interrupt the normal program flow. 13571// Effectively, this gives us try-catch behavior without actually using 13572// try-catch. Neat! 13573// Check that the browser supports the APIs we need to implement our special 13574// DEV version of invokeGuardedCallback 13575if(typeof window!=='undefined'&&typeof window.dispatchEvent==='function'&&typeof document!=='undefined'&&typeof document.createEvent==='function'){var fakeNode=document.createElement('react');var invokeGuardedCallbackDev=function(name,func,context,a,b,c,d,e,f){// If document doesn't exist we know for sure we will crash in this method 13576// when we call document.createEvent(). However this can cause confusing 13577// errors: https://github.com/facebookincubator/create-react-app/issues/3482 13578// So we preemptively throw with a better message instead. 13579if(!(typeof document!=='undefined')){{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.");}}var evt=document.createEvent('Event');// Keeps track of whether the user-provided callback threw an error. We 13580// set this to true at the beginning, then set it to false right after 13581// calling the function. If the function errors, `didError` will never be 13582// set to false. This strategy works even if the browser is flaky and 13583// fails to call our global error handler, because it doesn't rely on 13584// the error event at all. 13585var didError=true;// Keeps track of the value of window.event so that we can reset it 13586// during the callback to let user code access window.event in the 13587// browsers that support it. 13588var windowEvent=window.event;// Keeps track of the descriptor of window.event to restore it after event 13589// dispatching: https://github.com/facebook/react/issues/13688 13590var windowEventDescriptor=Object.getOwnPropertyDescriptor(window,'event');// Create an event handler for our fake event. We will synchronously 13591// dispatch our fake event using `dispatchEvent`. Inside the handler, we 13592// call the user-provided callback. 13593var funcArgs=Array.prototype.slice.call(arguments,3);function callCallback(){// We immediately remove the callback from event listeners so that 13594// nested `invokeGuardedCallback` calls do not clash. Otherwise, a 13595// nested call would trigger the fake event handlers of any call higher 13596// in the stack. 13597fakeNode.removeEventListener(evtType,callCallback,false);// We check for window.hasOwnProperty('event') to prevent the 13598// window.event assignment in both IE <= 10 as they throw an error 13599// "Member not found" in strict mode, and in Firefox which does not 13600// support window.event. 13601if(typeof window.event!=='undefined'&&window.hasOwnProperty('event')){window.event=windowEvent;}func.apply(context,funcArgs);didError=false;}// Create a global error event handler. We use this to capture the value 13602// that was thrown. It's possible that this error handler will fire more 13603// than once; for example, if non-React code also calls `dispatchEvent` 13604// and a handler for that event throws. We should be resilient to most of 13605// those cases. Even if our error event handler fires more than once, the 13606// last error event is always used. If the callback actually does error, 13607// we know that the last error event is the correct one, because it's not 13608// possible for anything else to have happened in between our callback 13609// erroring and the code that follows the `dispatchEvent` call below. If 13610// the callback doesn't error, but the error event was fired, we know to 13611// ignore it because `didError` will be false, as described above. 13612var error;// Use this to track whether the error event is ever called. 13613var didSetError=false;var isCrossOriginError=false;function handleWindowError(event){error=event.error;didSetError=true;if(error===null&&event.colno===0&&event.lineno===0){isCrossOriginError=true;}if(event.defaultPrevented){// Some other error handler has prevented default. 13614// Browsers silence the error report if this happens. 13615// We'll remember this to later decide whether to log it or not. 13616if(error!=null&&typeof error==='object'){try{error._suppressLogging=true;}catch(inner){// Ignore. 13617}}}}// Create a fake event type. 13618var evtType="react-"+(name?name:'invokeguardedcallback');// Attach our event handlers 13619window.addEventListener('error',handleWindowError);fakeNode.addEventListener(evtType,callCallback,false);// Synchronously dispatch our fake event. If the user-provided function 13620// errors, it will trigger our global error handler. 13621evt.initEvent(evtType,false,false);fakeNode.dispatchEvent(evt);if(windowEventDescriptor){Object.defineProperty(window,'event',windowEventDescriptor);}if(didError){if(!didSetError){// The callback errored, but the error event never fired. 13622error=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.');}else if(isCrossOriginError){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.');}this.onError(error);}// Remove our event listeners 13623window.removeEventListener('error',handleWindowError);};invokeGuardedCallbackImpl=invokeGuardedCallbackDev;}}var invokeGuardedCallbackImpl$1=invokeGuardedCallbackImpl;var hasError=false;var caughtError=null;// Used by event system to capture/rethrow the first error. 13624var hasRethrowError=false;var rethrowError=null;var reporter={onError:function(error){hasError=true;caughtError=error;}};/** 13625 * Call a function while guarding against errors that happens within it. 13626 * Returns an error if it throws, otherwise null. 13627 * 13628 * In production, this is implemented using a try-catch. The reason we don't 13629 * use a try-catch directly is so that we can swap out a different 13630 * implementation in DEV mode. 13631 * 13632 * @param {String} name of the guard to use for logging or debugging 13633 * @param {Function} func The function to invoke 13634 * @param {*} context The context to use when calling the function 13635 * @param {...*} args Arguments for function 13636 */function invokeGuardedCallback(name,func,context,a,b,c,d,e,f){hasError=false;caughtError=null;invokeGuardedCallbackImpl$1.apply(reporter,arguments);}/** 13637 * Same as invokeGuardedCallback, but instead of returning an error, it stores 13638 * it in a global so it can be rethrown by `rethrowCaughtError` later. 13639 * TODO: See if caughtError and rethrowError can be unified. 13640 * 13641 * @param {String} name of the guard to use for logging or debugging 13642 * @param {Function} func The function to invoke 13643 * @param {*} context The context to use when calling the function 13644 * @param {...*} args Arguments for function 13645 */function invokeGuardedCallbackAndCatchFirstError(name,func,context,a,b,c,d,e,f){invokeGuardedCallback.apply(this,arguments);if(hasError){var error=clearCaughtError();if(!hasRethrowError){hasRethrowError=true;rethrowError=error;}}}/** 13646 * During execution of guarded functions we will capture the first error which 13647 * we will rethrow to be handled by the top level error handler. 13648 */function rethrowCaughtError(){if(hasRethrowError){var error=rethrowError;hasRethrowError=false;rethrowError=null;throw error;}}function hasCaughtError(){return hasError;}function clearCaughtError(){if(hasError){var error=caughtError;hasError=false;caughtError=null;return error;}else{{{throw Error("clearCaughtError was called but no error was captured. This error is likely caused by a bug in React. Please file an issue.");}}}}var getFiberCurrentPropsFromNode=null;var getInstanceFromNode=null;var getNodeFromInstance=null;function setComponentTree(getFiberCurrentPropsFromNodeImpl,getInstanceFromNodeImpl,getNodeFromInstanceImpl){getFiberCurrentPropsFromNode=getFiberCurrentPropsFromNodeImpl;getInstanceFromNode=getInstanceFromNodeImpl;getNodeFromInstance=getNodeFromInstanceImpl;{if(!getNodeFromInstance||!getInstanceFromNode){error('EventPluginUtils.setComponentTree(...): Injected '+'module is missing getNodeFromInstance or getInstanceFromNode.');}}}var validateEventDispatches;{validateEventDispatches=function(event){var dispatchListeners=event._dispatchListeners;var dispatchInstances=event._dispatchInstances;var listenersIsArr=Array.isArray(dispatchListeners);var listenersLen=listenersIsArr?dispatchListeners.length:dispatchListeners?1:0;var instancesIsArr=Array.isArray(dispatchInstances);var instancesLen=instancesIsArr?dispatchInstances.length:dispatchInstances?1:0;if(instancesIsArr!==listenersIsArr||instancesLen!==listenersLen){error('EventPluginUtils: Invalid `event`.');}};}/** 13649 * Dispatch the event to the listener. 13650 * @param {SyntheticEvent} event SyntheticEvent to handle 13651 * @param {function} listener Application-level callback 13652 * @param {*} inst Internal component instance 13653 */function executeDispatch(event,listener,inst){var type=event.type||'unknown-event';event.currentTarget=getNodeFromInstance(inst);invokeGuardedCallbackAndCatchFirstError(type,listener,undefined,event);event.currentTarget=null;}/** 13654 * Standard/simple iteration through an event's collected dispatches. 13655 */function executeDispatchesInOrder(event){var dispatchListeners=event._dispatchListeners;var dispatchInstances=event._dispatchInstances;{validateEventDispatches(event);}if(Array.isArray(dispatchListeners)){for(var i=0;i<dispatchListeners.length;i++){if(event.isPropagationStopped()){break;}// Listeners and Instances are two parallel arrays that are always in sync. 13656executeDispatch(event,dispatchListeners[i],dispatchInstances[i]);}}else if(dispatchListeners){executeDispatch(event,dispatchListeners,dispatchInstances);}event._dispatchListeners=null;event._dispatchInstances=null;}var FunctionComponent=0;var ClassComponent=1;var IndeterminateComponent=2;// Before we know whether it is function or class 13657var HostRoot=3;// Root of a host tree. Could be nested inside another node. 13658var HostPortal=4;// A subtree. Could be an entry point to a different renderer. 13659var HostComponent=5;var HostText=6;var Fragment=7;var Mode=8;var ContextConsumer=9;var ContextProvider=10;var ForwardRef=11;var Profiler=12;var SuspenseComponent=13;var MemoComponent=14;var SimpleMemoComponent=15;var LazyComponent=16;var IncompleteClassComponent=17;var DehydratedFragment=18;var SuspenseListComponent=19;var FundamentalComponent=20;var ScopeComponent=21;var Block=22;/** 13660 * Injectable ordering of event plugins. 13661 */var eventPluginOrder=null;/** 13662 * Injectable mapping from names to event plugin modules. 13663 */var namesToPlugins={};/** 13664 * Recomputes the plugin list using the injected plugins and plugin ordering. 13665 * 13666 * @private 13667 */function recomputePluginOrdering(){if(!eventPluginOrder){// Wait until an `eventPluginOrder` is injected. 13668return;}for(var pluginName in namesToPlugins){var pluginModule=namesToPlugins[pluginName];var pluginIndex=eventPluginOrder.indexOf(pluginName);if(!(pluginIndex>-1)){{throw Error("EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `"+pluginName+"`.");}}if(plugins[pluginIndex]){continue;}if(!pluginModule.extractEvents){{throw Error("EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `"+pluginName+"` does not.");}}plugins[pluginIndex]=pluginModule;var publishedEvents=pluginModule.eventTypes;for(var eventName in publishedEvents){if(!publishEventForPlugin(publishedEvents[eventName],pluginModule,eventName)){{throw Error("EventPluginRegistry: Failed to publish event `"+eventName+"` for plugin `"+pluginName+"`.");}}}}}/** 13669 * Publishes an event so that it can be dispatched by the supplied plugin. 13670 * 13671 * @param {object} dispatchConfig Dispatch configuration for the event. 13672 * @param {object} PluginModule Plugin publishing the event. 13673 * @return {boolean} True if the event was successfully published. 13674 * @private 13675 */function publishEventForPlugin(dispatchConfig,pluginModule,eventName){if(!!eventNameDispatchConfigs.hasOwnProperty(eventName)){{throw Error("EventPluginRegistry: More than one plugin attempted to publish the same event name, `"+eventName+"`.");}}eventNameDispatchConfigs[eventName]=dispatchConfig;var phasedRegistrationNames=dispatchConfig.phasedRegistrationNames;if(phasedRegistrationNames){for(var phaseName in phasedRegistrationNames){if(phasedRegistrationNames.hasOwnProperty(phaseName)){var phasedRegistrationName=phasedRegistrationNames[phaseName];publishRegistrationName(phasedRegistrationName,pluginModule,eventName);}}return true;}else if(dispatchConfig.registrationName){publishRegistrationName(dispatchConfig.registrationName,pluginModule,eventName);return true;}return false;}/** 13676 * Publishes a registration name that is used to identify dispatched events. 13677 * 13678 * @param {string} registrationName Registration name to add. 13679 * @param {object} PluginModule Plugin publishing the event. 13680 * @private 13681 */function publishRegistrationName(registrationName,pluginModule,eventName){if(!!registrationNameModules[registrationName]){{throw Error("EventPluginRegistry: More than one plugin attempted to publish the same registration name, `"+registrationName+"`.");}}registrationNameModules[registrationName]=pluginModule;registrationNameDependencies[registrationName]=pluginModule.eventTypes[eventName].dependencies;{var lowerCasedName=registrationName.toLowerCase();possibleRegistrationNames[lowerCasedName]=registrationName;if(registrationName==='onDoubleClick'){possibleRegistrationNames.ondblclick=registrationName;}}}/** 13682 * Registers plugins so that they can extract and dispatch events. 13683 */ /** 13684 * Ordered list of injected plugins. 13685 */var plugins=[];/** 13686 * Mapping from event name to dispatch config 13687 */var eventNameDispatchConfigs={};/** 13688 * Mapping from registration name to plugin module 13689 */var registrationNameModules={};/** 13690 * Mapping from registration name to event name 13691 */var registrationNameDependencies={};/** 13692 * Mapping from lowercase registration names to the properly cased version, 13693 * used to warn in the case of missing event handlers. Available 13694 * only in true. 13695 * @type {Object} 13696 */var possibleRegistrationNames={};// Trust the developer to only use possibleRegistrationNames in true 13697/** 13698 * Injects an ordering of plugins (by plugin name). This allows the ordering 13699 * to be decoupled from injection of the actual plugins so that ordering is 13700 * always deterministic regardless of packaging, on-the-fly injection, etc. 13701 * 13702 * @param {array} InjectedEventPluginOrder 13703 * @internal 13704 */function injectEventPluginOrder(injectedEventPluginOrder){if(!!eventPluginOrder){{throw Error("EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React.");}}// Clone the ordering so it cannot be dynamically mutated. 13705eventPluginOrder=Array.prototype.slice.call(injectedEventPluginOrder);recomputePluginOrdering();}/** 13706 * Injects plugins to be used by plugin event system. The plugin names must be 13707 * in the ordering injected by `injectEventPluginOrder`. 13708 * 13709 * Plugins can be injected as part of page initialization or on-the-fly. 13710 * 13711 * @param {object} injectedNamesToPlugins Map from names to plugin modules. 13712 * @internal 13713 */function injectEventPluginsByName(injectedNamesToPlugins){var isOrderingDirty=false;for(var pluginName in injectedNamesToPlugins){if(!injectedNamesToPlugins.hasOwnProperty(pluginName)){continue;}var pluginModule=injectedNamesToPlugins[pluginName];if(!namesToPlugins.hasOwnProperty(pluginName)||namesToPlugins[pluginName]!==pluginModule){if(!!namesToPlugins[pluginName]){{throw Error("EventPluginRegistry: Cannot inject two different event plugins using the same name, `"+pluginName+"`.");}}namesToPlugins[pluginName]=pluginModule;isOrderingDirty=true;}}if(isOrderingDirty){recomputePluginOrdering();}}var canUseDOM=!!(typeof window!=='undefined'&&typeof window.document!=='undefined'&&typeof window.document.createElement!=='undefined');var PLUGIN_EVENT_SYSTEM=1;var IS_REPLAYED=1<<5;var IS_FIRST_ANCESTOR=1<<6;var restoreImpl=null;var restoreTarget=null;var restoreQueue=null;function restoreStateOfTarget(target){// We perform this translation at the end of the event loop so that we 13714// always receive the correct fiber here 13715var internalInstance=getInstanceFromNode(target);if(!internalInstance){// Unmounted 13716return;}if(!(typeof restoreImpl==='function')){{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.");}}var stateNode=internalInstance.stateNode;// Guard against Fiber being unmounted. 13717if(stateNode){var _props=getFiberCurrentPropsFromNode(stateNode);restoreImpl(internalInstance.stateNode,internalInstance.type,_props);}}function setRestoreImplementation(impl){restoreImpl=impl;}function enqueueStateRestore(target){if(restoreTarget){if(restoreQueue){restoreQueue.push(target);}else{restoreQueue=[target];}}else{restoreTarget=target;}}function needsStateRestore(){return restoreTarget!==null||restoreQueue!==null;}function restoreStateIfNeeded(){if(!restoreTarget){return;}var target=restoreTarget;var queuedTargets=restoreQueue;restoreTarget=null;restoreQueue=null;restoreStateOfTarget(target);if(queuedTargets){for(var i=0;i<queuedTargets.length;i++){restoreStateOfTarget(queuedTargets[i]);}}}var enableProfilerTimer=true;// Trace which interactions trigger each commit. 13718var enableDeprecatedFlareAPI=false;// Experimental Host Component support. 13719var enableFundamentalAPI=false;// Experimental Scope support. 13720var warnAboutStringRefs=false;// the renderer. Such as when we're dispatching events or if third party 13721// libraries need to call batchedUpdates. Eventually, this API will go away when 13722// everything is batched by default. We'll then have a similar API to opt-out of 13723// scheduled work and instead do synchronous work. 13724// Defaults 13725var batchedUpdatesImpl=function(fn,bookkeeping){return fn(bookkeeping);};var discreteUpdatesImpl=function(fn,a,b,c,d){return fn(a,b,c,d);};var flushDiscreteUpdatesImpl=function(){};var batchedEventUpdatesImpl=batchedUpdatesImpl;var isInsideEventHandler=false;var isBatchingEventUpdates=false;function finishEventHandler(){// Here we wait until all updates have propagated, which is important 13726// when using controlled components within layers: 13727// https://github.com/facebook/react/issues/1698 13728// Then we restore state of any controlled component. 13729var controlledComponentsHavePendingUpdates=needsStateRestore();if(controlledComponentsHavePendingUpdates){// If a controlled event was fired, we may need to restore the state of 13730// the DOM node back to the controlled value. This is necessary when React 13731// bails out of the update without touching the DOM. 13732flushDiscreteUpdatesImpl();restoreStateIfNeeded();}}function batchedUpdates(fn,bookkeeping){if(isInsideEventHandler){// If we are currently inside another batch, we need to wait until it 13733// fully completes before restoring state. 13734return fn(bookkeeping);}isInsideEventHandler=true;try{return batchedUpdatesImpl(fn,bookkeeping);}finally{isInsideEventHandler=false;finishEventHandler();}}function batchedEventUpdates(fn,a,b){if(isBatchingEventUpdates){// If we are currently inside another batch, we need to wait until it 13735// fully completes before restoring state. 13736return fn(a,b);}isBatchingEventUpdates=true;try{return batchedEventUpdatesImpl(fn,a,b);}finally{isBatchingEventUpdates=false;finishEventHandler();}}// This is for the React Flare event system 13737function discreteUpdates(fn,a,b,c,d){var prevIsInsideEventHandler=isInsideEventHandler;isInsideEventHandler=true;try{return discreteUpdatesImpl(fn,a,b,c,d);}finally{isInsideEventHandler=prevIsInsideEventHandler;if(!isInsideEventHandler){finishEventHandler();}}}function flushDiscreteUpdatesIfNeeded(timeStamp){// event.timeStamp isn't overly reliable due to inconsistencies in 13738// how different browsers have historically provided the time stamp. 13739// Some browsers provide high-resolution time stamps for all events, 13740// some provide low-resolution time stamps for all events. FF < 52 13741// even mixes both time stamps together. Some browsers even report 13742// negative time stamps or time stamps that are 0 (iOS9) in some cases. 13743// Given we are only comparing two time stamps with equality (!==), 13744// we are safe from the resolution differences. If the time stamp is 0 13745// we bail-out of preventing the flush, which can affect semantics, 13746// such as if an earlier flush removes or adds event listeners that 13747// are fired in the subsequent flush. However, this is the same 13748// behaviour as we had before this change, so the risks are low. 13749if(!isInsideEventHandler&&!enableDeprecatedFlareAPI){flushDiscreteUpdatesImpl();}}function setBatchingImplementation(_batchedUpdatesImpl,_discreteUpdatesImpl,_flushDiscreteUpdatesImpl,_batchedEventUpdatesImpl){batchedUpdatesImpl=_batchedUpdatesImpl;discreteUpdatesImpl=_discreteUpdatesImpl;flushDiscreteUpdatesImpl=_flushDiscreteUpdatesImpl;batchedEventUpdatesImpl=_batchedEventUpdatesImpl;}var DiscreteEvent=0;var UserBlockingEvent=1;var ContinuousEvent=2;// A reserved attribute. 13750// It is handled by React separately and shouldn't be written to the DOM. 13751var RESERVED=0;// A simple string attribute. 13752// Attributes that aren't in the whitelist are presumed to have this type. 13753var STRING=1;// A string attribute that accepts booleans in React. In HTML, these are called 13754// "enumerated" attributes with "true" and "false" as possible values. 13755// When true, it should be set to a "true" string. 13756// When false, it should be set to a "false" string. 13757var BOOLEANISH_STRING=2;// A real boolean attribute. 13758// When true, it should be present (set either to an empty string or its name). 13759// When false, it should be omitted. 13760var BOOLEAN=3;// An attribute that can be used as a flag as well as with a value. 13761// When true, it should be present (set either to an empty string or its name). 13762// When false, it should be omitted. 13763// For any other value, should be present with that value. 13764var OVERLOADED_BOOLEAN=4;// An attribute that must be numeric or parse as a numeric. 13765// When falsy, it should be removed. 13766var NUMERIC=5;// An attribute that must be positive numeric or parse as a positive numeric. 13767// When falsy, it should be removed. 13768var POSITIVE_NUMERIC=6;/* eslint-disable max-len */var 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";/* eslint-enable max-len */var ATTRIBUTE_NAME_CHAR=ATTRIBUTE_NAME_START_CHAR+"\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040";var ROOT_ATTRIBUTE_NAME='data-reactroot';var VALID_ATTRIBUTE_NAME_REGEX=new RegExp('^['+ATTRIBUTE_NAME_START_CHAR+']['+ATTRIBUTE_NAME_CHAR+']*$');var hasOwnProperty=Object.prototype.hasOwnProperty;var illegalAttributeNameCache={};var validatedAttributeNameCache={};function isAttributeNameSafe(attributeName){if(hasOwnProperty.call(validatedAttributeNameCache,attributeName)){return true;}if(hasOwnProperty.call(illegalAttributeNameCache,attributeName)){return false;}if(VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)){validatedAttributeNameCache[attributeName]=true;return true;}illegalAttributeNameCache[attributeName]=true;{error('Invalid attribute name: `%s`',attributeName);}return false;}function shouldIgnoreAttribute(name,propertyInfo,isCustomComponentTag){if(propertyInfo!==null){return propertyInfo.type===RESERVED;}if(isCustomComponentTag){return false;}if(name.length>2&&(name[0]==='o'||name[0]==='O')&&(name[1]==='n'||name[1]==='N')){return true;}return false;}function shouldRemoveAttributeWithWarning(name,value,propertyInfo,isCustomComponentTag){if(propertyInfo!==null&&propertyInfo.type===RESERVED){return false;}switch(typeof value){case'function':// $FlowIssue symbol is perfectly valid here 13769case'symbol':// eslint-disable-line 13770return true;case'boolean':{if(isCustomComponentTag){return false;}if(propertyInfo!==null){return!propertyInfo.acceptsBooleans;}else{var prefix=name.toLowerCase().slice(0,5);return prefix!=='data-'&&prefix!=='aria-';}}default:return false;}}function shouldRemoveAttribute(name,value,propertyInfo,isCustomComponentTag){if(value===null||typeof value==='undefined'){return true;}if(shouldRemoveAttributeWithWarning(name,value,propertyInfo,isCustomComponentTag)){return true;}if(isCustomComponentTag){return false;}if(propertyInfo!==null){switch(propertyInfo.type){case BOOLEAN:return!value;case OVERLOADED_BOOLEAN:return value===false;case NUMERIC:return isNaN(value);case POSITIVE_NUMERIC:return isNaN(value)||value<1;}}return false;}function getPropertyInfo(name){return properties.hasOwnProperty(name)?properties[name]:null;}function PropertyInfoRecord(name,type,mustUseProperty,attributeName,attributeNamespace,sanitizeURL){this.acceptsBooleans=type===BOOLEANISH_STRING||type===BOOLEAN||type===OVERLOADED_BOOLEAN;this.attributeName=attributeName;this.attributeNamespace=attributeNamespace;this.mustUseProperty=mustUseProperty;this.propertyName=name;this.type=type;this.sanitizeURL=sanitizeURL;}// When adding attributes to this list, be sure to also add them to 13771// the `possibleStandardNames` module to ensure casing and incorrect 13772// name warnings. 13773var properties={};// These props are reserved by React. They shouldn't be written to the DOM. 13774var reservedProps=['children','dangerouslySetInnerHTML',// TODO: This prevents the assignment of defaultValue to regular 13775// elements (not just inputs). Now that ReactDOMInput assigns to the 13776// defaultValue property -- do we need this? 13777'defaultValue','defaultChecked','innerHTML','suppressContentEditableWarning','suppressHydrationWarning','style'];reservedProps.forEach(function(name){properties[name]=new PropertyInfoRecord(name,RESERVED,false,// mustUseProperty 13778name,// attributeName 13779null,// attributeNamespace 13780false);});// A few React string attributes have a different name. 13781// This is a mapping from React prop names to the attribute names. 13782[['acceptCharset','accept-charset'],['className','class'],['htmlFor','for'],['httpEquiv','http-equiv']].forEach(function(_ref){var name=_ref[0],attributeName=_ref[1];properties[name]=new PropertyInfoRecord(name,STRING,false,// mustUseProperty 13783attributeName,// attributeName 13784null,// attributeNamespace 13785false);});// These are "enumerated" HTML attributes that accept "true" and "false". 13786// In React, we let users pass `true` and `false` even though technically 13787// these aren't boolean attributes (they are coerced to strings). 13788['contentEditable','draggable','spellCheck','value'].forEach(function(name){properties[name]=new PropertyInfoRecord(name,BOOLEANISH_STRING,false,// mustUseProperty 13789name.toLowerCase(),// attributeName 13790null,// attributeNamespace 13791false);});// These are "enumerated" SVG attributes that accept "true" and "false". 13792// In React, we let users pass `true` and `false` even though technically 13793// these aren't boolean attributes (they are coerced to strings). 13794// Since these are SVG attributes, their attribute names are case-sensitive. 13795['autoReverse','externalResourcesRequired','focusable','preserveAlpha'].forEach(function(name){properties[name]=new PropertyInfoRecord(name,BOOLEANISH_STRING,false,// mustUseProperty 13796name,// attributeName 13797null,// attributeNamespace 13798false);});// These are HTML boolean attributes. 13799['allowFullScreen','async',// Note: there is a special case that prevents it from being written to the DOM 13800// on the client side because the browsers are inconsistent. Instead we call focus(). 13801'autoFocus','autoPlay','controls','default','defer','disabled','disablePictureInPicture','formNoValidate','hidden','loop','noModule','noValidate','open','playsInline','readOnly','required','reversed','scoped','seamless',// Microdata 13802'itemScope'].forEach(function(name){properties[name]=new PropertyInfoRecord(name,BOOLEAN,false,// mustUseProperty 13803name.toLowerCase(),// attributeName 13804null,// attributeNamespace 13805false);});// These are the few React props that we set as DOM properties 13806// rather than attributes. These are all booleans. 13807['checked',// Note: `option.selected` is not updated if `select.multiple` is 13808// disabled with `removeAttribute`. We have special logic for handling this. 13809'multiple','muted','selected'// NOTE: if you add a camelCased prop to this list, 13810// you'll need to set attributeName to name.toLowerCase() 13811// instead in the assignment below. 13812].forEach(function(name){properties[name]=new PropertyInfoRecord(name,BOOLEAN,true,// mustUseProperty 13813name,// attributeName 13814null,// attributeNamespace 13815false);});// These are HTML attributes that are "overloaded booleans": they behave like 13816// booleans, but can also accept a string value. 13817['capture','download'// NOTE: if you add a camelCased prop to this list, 13818// you'll need to set attributeName to name.toLowerCase() 13819// instead in the assignment below. 13820].forEach(function(name){properties[name]=new PropertyInfoRecord(name,OVERLOADED_BOOLEAN,false,// mustUseProperty 13821name,// attributeName 13822null,// attributeNamespace 13823false);});// These are HTML attributes that must be positive numbers. 13824['cols','rows','size','span'// NOTE: if you add a camelCased prop to this list, 13825// you'll need to set attributeName to name.toLowerCase() 13826// instead in the assignment below. 13827].forEach(function(name){properties[name]=new PropertyInfoRecord(name,POSITIVE_NUMERIC,false,// mustUseProperty 13828name,// attributeName 13829null,// attributeNamespace 13830false);});// These are HTML attributes that must be numbers. 13831['rowSpan','start'].forEach(function(name){properties[name]=new PropertyInfoRecord(name,NUMERIC,false,// mustUseProperty 13832name.toLowerCase(),// attributeName 13833null,// attributeNamespace 13834false);});var CAMELIZE=/[\-\:]([a-z])/g;var capitalize=function(token){return token[1].toUpperCase();};// This is a list of all SVG attributes that need special casing, namespacing, 13835// or boolean value assignment. Regular attributes that just accept strings 13836// and have the same names are omitted, just like in the HTML whitelist. 13837// Some of these attributes can be hard to find. This list was created by 13838// scraping the MDN documentation. 13839['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, 13840// you'll need to set attributeName to name.toLowerCase() 13841// instead in the assignment below. 13842].forEach(function(attributeName){var name=attributeName.replace(CAMELIZE,capitalize);properties[name]=new PropertyInfoRecord(name,STRING,false,// mustUseProperty 13843attributeName,null,// attributeNamespace 13844false);});// String SVG attributes with the xlink namespace. 13845['xlink:actuate','xlink:arcrole','xlink:role','xlink:show','xlink:title','xlink:type'// NOTE: if you add a camelCased prop to this list, 13846// you'll need to set attributeName to name.toLowerCase() 13847// instead in the assignment below. 13848].forEach(function(attributeName){var name=attributeName.replace(CAMELIZE,capitalize);properties[name]=new PropertyInfoRecord(name,STRING,false,// mustUseProperty 13849attributeName,'http://www.w3.org/1999/xlink',false);});// String SVG attributes with the xml namespace. 13850['xml:base','xml:lang','xml:space'// NOTE: if you add a camelCased prop to this list, 13851// you'll need to set attributeName to name.toLowerCase() 13852// instead in the assignment below. 13853].forEach(function(attributeName){var name=attributeName.replace(CAMELIZE,capitalize);properties[name]=new PropertyInfoRecord(name,STRING,false,// mustUseProperty 13854attributeName,'http://www.w3.org/XML/1998/namespace',false);});// These attribute exists both in HTML and SVG. 13855// The attribute name is case-sensitive in SVG so we can't just use 13856// the React name like we do for attributes that exist only in HTML. 13857['tabIndex','crossOrigin'].forEach(function(attributeName){properties[attributeName]=new PropertyInfoRecord(attributeName,STRING,false,// mustUseProperty 13858attributeName.toLowerCase(),// attributeName 13859null,// attributeNamespace 13860false);});// These attributes accept URLs. These must not allow javascript: URLS. 13861// These will also need to accept Trusted Types object in the future. 13862var xlinkHref='xlinkHref';properties[xlinkHref]=new PropertyInfoRecord('xlinkHref',STRING,false,// mustUseProperty 13863'xlink:href','http://www.w3.org/1999/xlink',true);['src','href','action','formAction'].forEach(function(attributeName){properties[attributeName]=new PropertyInfoRecord(attributeName,STRING,false,// mustUseProperty 13864attributeName.toLowerCase(),// attributeName 13865null,// attributeNamespace 13866true);});var ReactDebugCurrentFrame=null;{ReactDebugCurrentFrame=ReactSharedInternals.ReactDebugCurrentFrame;}// A javascript: URL can contain leading C0 control or \u0020 SPACE, 13867// and any newline or tab are filtered out as if they're not part of the URL. 13868// https://url.spec.whatwg.org/#url-parsing 13869// Tab or newline are defined as \r\n\t: 13870// https://infra.spec.whatwg.org/#ascii-tab-or-newline 13871// A C0 control is a code point in the range \u0000 NULL to \u001F 13872// INFORMATION SEPARATOR ONE, inclusive: 13873// https://infra.spec.whatwg.org/#c0-control-or-space 13874/* eslint-disable max-len */var 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;var didWarn=false;function sanitizeURL(url){{if(!didWarn&&isJavaScriptProtocol.test(url)){didWarn=true;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));}}}/** 13875 * Get the value for a property on a node. Only used in DEV for SSR validation. 13876 * The "expected" argument is used as a hint of what the expected value is. 13877 * Some properties have multiple equivalent values. 13878 */function getValueForProperty(node,name,expected,propertyInfo){{if(propertyInfo.mustUseProperty){var propertyName=propertyInfo.propertyName;return node[propertyName];}else{if(propertyInfo.sanitizeURL){// If we haven't fully disabled javascript: URLs, and if 13879// the hydration is successful of a javascript: URL, we 13880// still want to warn on the client. 13881sanitizeURL(''+expected);}var attributeName=propertyInfo.attributeName;var stringValue=null;if(propertyInfo.type===OVERLOADED_BOOLEAN){if(node.hasAttribute(attributeName)){var value=node.getAttribute(attributeName);if(value===''){return true;}if(shouldRemoveAttribute(name,expected,propertyInfo,false)){return value;}if(value===''+expected){return expected;}return value;}}else if(node.hasAttribute(attributeName)){if(shouldRemoveAttribute(name,expected,propertyInfo,false)){// We had an attribute but shouldn't have had one, so read it 13882// for the error message. 13883return node.getAttribute(attributeName);}if(propertyInfo.type===BOOLEAN){// If this was a boolean, it doesn't matter what the value is 13884// the fact that we have it is the same as the expected. 13885return expected;}// Even if this property uses a namespace we use getAttribute 13886// because we assume its namespaced name is the same as our config. 13887// To use getAttributeNS we need the local name which we don't have 13888// in our config atm. 13889stringValue=node.getAttribute(attributeName);}if(shouldRemoveAttribute(name,expected,propertyInfo,false)){return stringValue===null?expected:stringValue;}else if(stringValue===''+expected){return expected;}else{return stringValue;}}}}/** 13890 * Get the value for a attribute on a node. Only used in DEV for SSR validation. 13891 * The third argument is used as a hint of what the expected value is. Some 13892 * attributes have multiple equivalent values. 13893 */function getValueForAttribute(node,name,expected){{if(!isAttributeNameSafe(name)){return;}if(!node.hasAttribute(name)){return expected===undefined?undefined:null;}var value=node.getAttribute(name);if(value===''+expected){return expected;}return value;}}/** 13894 * Sets the value for a property on a node. 13895 * 13896 * @param {DOMElement} node 13897 * @param {string} name 13898 * @param {*} value 13899 */function setValueForProperty(node,name,value,isCustomComponentTag){var propertyInfo=getPropertyInfo(name);if(shouldIgnoreAttribute(name,propertyInfo,isCustomComponentTag)){return;}if(shouldRemoveAttribute(name,value,propertyInfo,isCustomComponentTag)){value=null;}// If the prop isn't in the special list, treat it as a simple attribute. 13900if(isCustomComponentTag||propertyInfo===null){if(isAttributeNameSafe(name)){var _attributeName=name;if(value===null){node.removeAttribute(_attributeName);}else{node.setAttribute(_attributeName,''+value);}}return;}var mustUseProperty=propertyInfo.mustUseProperty;if(mustUseProperty){var propertyName=propertyInfo.propertyName;if(value===null){var type=propertyInfo.type;node[propertyName]=type===BOOLEAN?false:'';}else{// Contrary to `setAttribute`, object properties are properly 13901// `toString`ed by IE8/9. 13902node[propertyName]=value;}return;}// The rest are treated as attributes with special cases. 13903var attributeName=propertyInfo.attributeName,attributeNamespace=propertyInfo.attributeNamespace;if(value===null){node.removeAttribute(attributeName);}else{var _type=propertyInfo.type;var attributeValue;if(_type===BOOLEAN||_type===OVERLOADED_BOOLEAN&&value===true){// If attribute type is boolean, we know for sure it won't be an execution sink 13904// and we won't require Trusted Type here. 13905attributeValue='';}else{// `setAttribute` with objects becomes only `[object]` in IE8/9, 13906// ('' + value) makes it output the correct toString()-value. 13907{attributeValue=''+value;}if(propertyInfo.sanitizeURL){sanitizeURL(attributeValue.toString());}}if(attributeNamespace){node.setAttributeNS(attributeNamespace,attributeName,attributeValue);}else{node.setAttribute(attributeName,attributeValue);}}}var BEFORE_SLASH_RE=/^(.*)[\\\/]/;function describeComponentFrame(name,source,ownerName){var sourceInfo='';if(source){var path=source.fileName;var fileName=path.replace(BEFORE_SLASH_RE,'');{// In DEV, include code for a common special case: 13908// prefer "folder/index.js" instead of just "index.js". 13909if(/^index\./.test(fileName)){var match=path.match(BEFORE_SLASH_RE);if(match){var pathBeforeSlash=match[1];if(pathBeforeSlash){var folderName=pathBeforeSlash.replace(BEFORE_SLASH_RE,'');fileName=folderName+'/'+fileName;}}}}sourceInfo=' (at '+fileName+':'+source.lineNumber+')';}else if(ownerName){sourceInfo=' (created by '+ownerName+')';}return'\n in '+(name||'Unknown')+sourceInfo;}// The Symbol used to tag the ReactElement-like types. If there is no native Symbol 13910// nor polyfill, then a plain number is used for performance. 13911var hasSymbol=typeof Symbol==='function'&&Symbol.for;var REACT_ELEMENT_TYPE=hasSymbol?Symbol.for('react.element'):0xeac7;var REACT_PORTAL_TYPE=hasSymbol?Symbol.for('react.portal'):0xeaca;var REACT_FRAGMENT_TYPE=hasSymbol?Symbol.for('react.fragment'):0xeacb;var REACT_STRICT_MODE_TYPE=hasSymbol?Symbol.for('react.strict_mode'):0xeacc;var REACT_PROFILER_TYPE=hasSymbol?Symbol.for('react.profiler'):0xead2;var REACT_PROVIDER_TYPE=hasSymbol?Symbol.for('react.provider'):0xeacd;var REACT_CONTEXT_TYPE=hasSymbol?Symbol.for('react.context'):0xeace;// TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary 13912var REACT_CONCURRENT_MODE_TYPE=hasSymbol?Symbol.for('react.concurrent_mode'):0xeacf;var REACT_FORWARD_REF_TYPE=hasSymbol?Symbol.for('react.forward_ref'):0xead0;var REACT_SUSPENSE_TYPE=hasSymbol?Symbol.for('react.suspense'):0xead1;var REACT_SUSPENSE_LIST_TYPE=hasSymbol?Symbol.for('react.suspense_list'):0xead8;var REACT_MEMO_TYPE=hasSymbol?Symbol.for('react.memo'):0xead3;var REACT_LAZY_TYPE=hasSymbol?Symbol.for('react.lazy'):0xead4;var REACT_BLOCK_TYPE=hasSymbol?Symbol.for('react.block'):0xead9;var MAYBE_ITERATOR_SYMBOL=typeof Symbol==='function'&&Symbol.iterator;var FAUX_ITERATOR_SYMBOL='@@iterator';function getIteratorFn(maybeIterable){if(maybeIterable===null||typeof maybeIterable!=='object'){return null;}var maybeIterator=MAYBE_ITERATOR_SYMBOL&&maybeIterable[MAYBE_ITERATOR_SYMBOL]||maybeIterable[FAUX_ITERATOR_SYMBOL];if(typeof maybeIterator==='function'){return maybeIterator;}return null;}var Uninitialized=-1;var Pending=0;var Resolved=1;var Rejected=2;function refineResolvedLazyComponent(lazyComponent){return lazyComponent._status===Resolved?lazyComponent._result:null;}function initializeLazyComponentType(lazyComponent){if(lazyComponent._status===Uninitialized){lazyComponent._status=Pending;var ctor=lazyComponent._ctor;var thenable=ctor();lazyComponent._result=thenable;thenable.then(function(moduleObject){if(lazyComponent._status===Pending){var defaultExport=moduleObject.default;{if(defaultExport===undefined){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);}}lazyComponent._status=Resolved;lazyComponent._result=defaultExport;}},function(error){if(lazyComponent._status===Pending){lazyComponent._status=Rejected;lazyComponent._result=error;}});}}function getWrappedName(outerType,innerType,wrapperName){var functionName=innerType.displayName||innerType.name||'';return outerType.displayName||(functionName!==''?wrapperName+"("+functionName+")":wrapperName);}function getComponentName(type){if(type==null){// Host root, text node or just invalid type. 13913return null;}{if(typeof type.tag==='number'){error('Received an unexpected object in getComponentName(). '+'This is likely a bug in React. Please file an issue.');}}if(typeof type==='function'){return type.displayName||type.name||null;}if(typeof type==='string'){return type;}switch(type){case REACT_FRAGMENT_TYPE:return'Fragment';case REACT_PORTAL_TYPE:return'Portal';case REACT_PROFILER_TYPE:return"Profiler";case REACT_STRICT_MODE_TYPE:return'StrictMode';case REACT_SUSPENSE_TYPE:return'Suspense';case REACT_SUSPENSE_LIST_TYPE:return'SuspenseList';}if(typeof type==='object'){switch(type.$$typeof){case REACT_CONTEXT_TYPE:return'Context.Consumer';case REACT_PROVIDER_TYPE:return'Context.Provider';case REACT_FORWARD_REF_TYPE:return getWrappedName(type,type.render,'ForwardRef');case REACT_MEMO_TYPE:return getComponentName(type.type);case REACT_BLOCK_TYPE:return getComponentName(type.render);case REACT_LAZY_TYPE:{var thenable=type;var resolvedThenable=refineResolvedLazyComponent(thenable);if(resolvedThenable){return getComponentName(resolvedThenable);}break;}}}return null;}var ReactDebugCurrentFrame$1=ReactSharedInternals.ReactDebugCurrentFrame;function describeFiber(fiber){switch(fiber.tag){case HostRoot:case HostPortal:case HostText:case Fragment:case ContextProvider:case ContextConsumer:return'';default:var owner=fiber._debugOwner;var source=fiber._debugSource;var name=getComponentName(fiber.type);var ownerName=null;if(owner){ownerName=getComponentName(owner.type);}return describeComponentFrame(name,source,ownerName);}}function getStackByFiberInDevAndProd(workInProgress){var info='';var node=workInProgress;do{info+=describeFiber(node);node=node.return;}while(node);return info;}var current=null;var isRendering=false;function getCurrentFiberOwnerNameInDevOrNull(){{if(current===null){return null;}var owner=current._debugOwner;if(owner!==null&&typeof owner!=='undefined'){return getComponentName(owner.type);}}return null;}function getCurrentFiberStackInDev(){{if(current===null){return'';}// Safe because if current fiber exists, we are reconciling, 13914// and it is guaranteed to be the work-in-progress version. 13915return getStackByFiberInDevAndProd(current);}}function resetCurrentFiber(){{ReactDebugCurrentFrame$1.getCurrentStack=null;current=null;isRendering=false;}}function setCurrentFiber(fiber){{ReactDebugCurrentFrame$1.getCurrentStack=getCurrentFiberStackInDev;current=fiber;isRendering=false;}}function setIsRendering(rendering){{isRendering=rendering;}}// Flow does not allow string concatenation of most non-string types. To work 13916// around this limitation, we use an opaque type that can only be obtained by 13917// passing the value through getToStringValue first. 13918function toString(value){return''+value;}function getToStringValue(value){switch(typeof value){case'boolean':case'number':case'object':case'string':case'undefined':return value;default:// function, symbol are assigned as empty strings 13919return'';}}var ReactDebugCurrentFrame$2=null;var ReactControlledValuePropTypes={checkPropTypes:null};{ReactDebugCurrentFrame$2=ReactSharedInternals.ReactDebugCurrentFrame;var hasReadOnlyValue={button:true,checkbox:true,image:true,hidden:true,radio:true,reset:true,submit:true};var propTypes={value:function(props,propName,componentName){if(hasReadOnlyValue[props.type]||props.onChange||props.readOnly||props.disabled||props[propName]==null||enableDeprecatedFlareAPI){return null;}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`.');},checked:function(props,propName,componentName){if(props.onChange||props.readOnly||props.disabled||props[propName]==null||enableDeprecatedFlareAPI){return null;}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`.');}};/** 13920 * Provide a linked `value` attribute for controlled forms. You should not use 13921 * this outside of the ReactDOM controlled form components. 13922 */ReactControlledValuePropTypes.checkPropTypes=function(tagName,props){checkPropTypes(propTypes,props,'prop',tagName,ReactDebugCurrentFrame$2.getStackAddendum);};}function isCheckable(elem){var type=elem.type;var nodeName=elem.nodeName;return nodeName&&nodeName.toLowerCase()==='input'&&(type==='checkbox'||type==='radio');}function getTracker(node){return node._valueTracker;}function detachTracker(node){node._valueTracker=null;}function getValueFromNode(node){var value='';if(!node){return value;}if(isCheckable(node)){value=node.checked?'true':'false';}else{value=node.value;}return value;}function trackValueOnNode(node){var valueField=isCheckable(node)?'checked':'value';var descriptor=Object.getOwnPropertyDescriptor(node.constructor.prototype,valueField);var currentValue=''+node[valueField];// if someone has already defined a value or Safari, then bail 13923// and don't track value will cause over reporting of changes, 13924// but it's better then a hard failure 13925// (needed for certain tests that spyOn input values and Safari) 13926if(node.hasOwnProperty(valueField)||typeof descriptor==='undefined'||typeof descriptor.get!=='function'||typeof descriptor.set!=='function'){return;}var get=descriptor.get,set=descriptor.set;Object.defineProperty(node,valueField,{configurable:true,get:function(){return get.call(this);},set:function(value){currentValue=''+value;set.call(this,value);}});// We could've passed this the first time 13927// but it triggers a bug in IE11 and Edge 14/15. 13928// Calling defineProperty() again should be equivalent. 13929// https://github.com/facebook/react/issues/11768 13930Object.defineProperty(node,valueField,{enumerable:descriptor.enumerable});var tracker={getValue:function(){return currentValue;},setValue:function(value){currentValue=''+value;},stopTracking:function(){detachTracker(node);delete node[valueField];}};return tracker;}function track(node){if(getTracker(node)){return;}// TODO: Once it's just Fiber we can move this to node._wrapperState 13931node._valueTracker=trackValueOnNode(node);}function updateValueIfChanged(node){if(!node){return false;}var tracker=getTracker(node);// if there is no tracker at this point it's unlikely 13932// that trying again will succeed 13933if(!tracker){return true;}var lastValue=tracker.getValue();var nextValue=getValueFromNode(node);if(nextValue!==lastValue){tracker.setValue(nextValue);return true;}return false;}var didWarnValueDefaultValue=false;var didWarnCheckedDefaultChecked=false;var didWarnControlledToUncontrolled=false;var didWarnUncontrolledToControlled=false;function isControlled(props){var usesChecked=props.type==='checkbox'||props.type==='radio';return usesChecked?props.checked!=null:props.value!=null;}/** 13934 * Implements an <input> host component that allows setting these optional 13935 * props: `checked`, `value`, `defaultChecked`, and `defaultValue`. 13936 * 13937 * If `checked` or `value` are not supplied (or null/undefined), user actions 13938 * that affect the checked state or value will trigger updates to the element. 13939 * 13940 * If they are supplied (and not null/undefined), the rendered element will not 13941 * trigger updates to the element. Instead, the props must change in order for 13942 * the rendered element to be updated. 13943 * 13944 * The rendered element will be initialized as unchecked (or `defaultChecked`) 13945 * with an empty value (or `defaultValue`). 13946 * 13947 * See http://www.w3.org/TR/2012/WD-html5-20121025/the-input-element.html 13948 */function getHostProps(element,props){var node=element;var checked=props.checked;var hostProps=_assign({},props,{defaultChecked:undefined,defaultValue:undefined,value:undefined,checked:checked!=null?checked:node._wrapperState.initialChecked});return hostProps;}function initWrapperState(element,props){{ReactControlledValuePropTypes.checkPropTypes('input',props);if(props.checked!==undefined&&props.defaultChecked!==undefined&&!didWarnCheckedDefaultChecked){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);didWarnCheckedDefaultChecked=true;}if(props.value!==undefined&&props.defaultValue!==undefined&&!didWarnValueDefaultValue){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);didWarnValueDefaultValue=true;}}var node=element;var defaultValue=props.defaultValue==null?'':props.defaultValue;node._wrapperState={initialChecked:props.checked!=null?props.checked:props.defaultChecked,initialValue:getToStringValue(props.value!=null?props.value:defaultValue),controlled:isControlled(props)};}function updateChecked(element,props){var node=element;var checked=props.checked;if(checked!=null){setValueForProperty(node,'checked',checked,false);}}function updateWrapper(element,props){var node=element;{var controlled=isControlled(props);if(!node._wrapperState.controlled&&controlled&&!didWarnUncontrolledToControlled){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);didWarnUncontrolledToControlled=true;}if(node._wrapperState.controlled&&!controlled&&!didWarnControlledToUncontrolled){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);didWarnControlledToUncontrolled=true;}}updateChecked(element,props);var value=getToStringValue(props.value);var type=props.type;if(value!=null){if(type==='number'){if(value===0&&node.value===''||// We explicitly want to coerce to number here if possible. 13949// eslint-disable-next-line 13950node.value!=value){node.value=toString(value);}}else if(node.value!==toString(value)){node.value=toString(value);}}else if(type==='submit'||type==='reset'){// Submit/reset inputs need the attribute removed completely to avoid 13951// blank-text buttons. 13952node.removeAttribute('value');return;}{// When syncing the value attribute, the value comes from a cascade of 13953// properties: 13954// 1. The value React property 13955// 2. The defaultValue React property 13956// 3. Otherwise there should be no change 13957if(props.hasOwnProperty('value')){setDefaultValue(node,props.type,value);}else if(props.hasOwnProperty('defaultValue')){setDefaultValue(node,props.type,getToStringValue(props.defaultValue));}}{// When syncing the checked attribute, it only changes when it needs 13958// to be removed, such as transitioning from a checkbox into a text input 13959if(props.checked==null&&props.defaultChecked!=null){node.defaultChecked=!!props.defaultChecked;}}}function postMountWrapper(element,props,isHydrating){var node=element;// Do not assign value if it is already set. This prevents user text input 13960// from being lost during SSR hydration. 13961if(props.hasOwnProperty('value')||props.hasOwnProperty('defaultValue')){var type=props.type;var isButton=type==='submit'||type==='reset';// Avoid setting value attribute on submit/reset inputs as it overrides the 13962// default value provided by the browser. See: #12872 13963if(isButton&&(props.value===undefined||props.value===null)){return;}var initialValue=toString(node._wrapperState.initialValue);// Do not assign value if it is already set. This prevents user text input 13964// from being lost during SSR hydration. 13965if(!isHydrating){{// When syncing the value attribute, the value property should use 13966// the wrapperState._initialValue property. This uses: 13967// 13968// 1. The value React property when present 13969// 2. The defaultValue React property when present 13970// 3. An empty string 13971if(initialValue!==node.value){node.value=initialValue;}}}{// Otherwise, the value attribute is synchronized to the property, 13972// so we assign defaultValue to the same thing as the value property 13973// assignment step above. 13974node.defaultValue=initialValue;}}// Normally, we'd just do `node.checked = node.checked` upon initial mount, less this bug 13975// this is needed to work around a chrome bug where setting defaultChecked 13976// will sometimes influence the value of checked (even after detachment). 13977// Reference: https://bugs.chromium.org/p/chromium/issues/detail?id=608416 13978// We need to temporarily unset name to avoid disrupting radio button groups. 13979var name=node.name;if(name!==''){node.name='';}{// When syncing the checked attribute, both the checked property and 13980// attribute are assigned at the same time using defaultChecked. This uses: 13981// 13982// 1. The checked React property when present 13983// 2. The defaultChecked React property when present 13984// 3. Otherwise, false 13985node.defaultChecked=!node.defaultChecked;node.defaultChecked=!!node._wrapperState.initialChecked;}if(name!==''){node.name=name;}}function restoreControlledState(element,props){var node=element;updateWrapper(node,props);updateNamedCousins(node,props);}function updateNamedCousins(rootNode,props){var name=props.name;if(props.type==='radio'&&name!=null){var queryRoot=rootNode;while(queryRoot.parentNode){queryRoot=queryRoot.parentNode;}// If `rootNode.form` was non-null, then we could try `form.elements`, 13986// but that sometimes behaves strangely in IE8. We could also try using 13987// `form.getElementsByName`, but that will only return direct children 13988// and won't include inputs that use the HTML5 `form=` attribute. Since 13989// the input might not even be in a form. It might not even be in the 13990// document. Let's just use the local `querySelectorAll` to ensure we don't 13991// miss anything. 13992var group=queryRoot.querySelectorAll('input[name='+JSON.stringify(''+name)+'][type="radio"]');for(var i=0;i<group.length;i++){var otherNode=group[i];if(otherNode===rootNode||otherNode.form!==rootNode.form){continue;}// This will throw if radio buttons rendered by different copies of React 13993// and the same name are rendered into the same form (same as #1939). 13994// That's probably okay; we don't support it just as we don't support 13995// mixing React radio buttons with non-React ones. 13996var otherProps=getFiberCurrentPropsFromNode$1(otherNode);if(!otherProps){{throw Error("ReactDOMInput: Mixing React and non-React radio inputs with the same `name` is not supported.");}}// We need update the tracked value on the named cousin since the value 13997// was changed but the input saw no event or value set 13998updateValueIfChanged(otherNode);// If this is a controlled radio button group, forcing the input that 13999// was previously checked to update will cause it to be come re-checked 14000// as appropriate. 14001updateWrapper(otherNode,otherProps);}}}// In Chrome, assigning defaultValue to certain input types triggers input validation. 14002// For number inputs, the display value loses trailing decimal points. For email inputs, 14003// Chrome raises "The specified value <x> is not a valid email address". 14004// 14005// Here we check to see if the defaultValue has actually changed, avoiding these problems 14006// when the user is inputting text 14007// 14008// https://github.com/facebook/react/issues/7253 14009function setDefaultValue(node,type,value){if(// Focused number inputs synchronize on blur. See ChangeEventPlugin.js 14010type!=='number'||node.ownerDocument.activeElement!==node){if(value==null){node.defaultValue=toString(node._wrapperState.initialValue);}else if(node.defaultValue!==toString(value)){node.defaultValue=toString(value);}}}var didWarnSelectedSetOnOption=false;var didWarnInvalidChild=false;function flattenChildren(children){var content='';// Flatten children. We'll warn if they are invalid 14011// during validateProps() which runs for hydration too. 14012// Note that this would throw on non-element objects. 14013// Elements are stringified (which is normally irrelevant 14014// but matters for <fbt>). 14015React.Children.forEach(children,function(child){if(child==null){return;}content+=child;// Note: we don't warn about invalid children here. 14016// Instead, this is done separately below so that 14017// it happens during the hydration codepath too. 14018});return content;}/** 14019 * Implements an <option> host component that warns when `selected` is set. 14020 */function validateProps(element,props){{// This mirrors the codepath above, but runs for hydration too. 14021// Warn about invalid children here so that client and hydration are consistent. 14022// TODO: this seems like it could cause a DEV-only throw for hydration 14023// if children contains a non-element object. We should try to avoid that. 14024if(typeof props.children==='object'&&props.children!==null){React.Children.forEach(props.children,function(child){if(child==null){return;}if(typeof child==='string'||typeof child==='number'){return;}if(typeof child.type!=='string'){return;}if(!didWarnInvalidChild){didWarnInvalidChild=true;error('Only strings and numbers are supported as <option> children.');}});}// TODO: Remove support for `selected` in <option>. 14025if(props.selected!=null&&!didWarnSelectedSetOnOption){error('Use the `defaultValue` or `value` props on <select> instead of '+'setting `selected` on <option>.');didWarnSelectedSetOnOption=true;}}}function postMountWrapper$1(element,props){// value="" should make a value attribute (#6219) 14026if(props.value!=null){element.setAttribute('value',toString(getToStringValue(props.value)));}}function getHostProps$1(element,props){var hostProps=_assign({children:undefined},props);var content=flattenChildren(props.children);if(content){hostProps.children=content;}return hostProps;}var didWarnValueDefaultValue$1;{didWarnValueDefaultValue$1=false;}function getDeclarationErrorAddendum(){var ownerName=getCurrentFiberOwnerNameInDevOrNull();if(ownerName){return'\n\nCheck the render method of `'+ownerName+'`.';}return'';}var valuePropNames=['value','defaultValue'];/** 14027 * Validation function for `value` and `defaultValue`. 14028 */function checkSelectPropTypes(props){{ReactControlledValuePropTypes.checkPropTypes('select',props);for(var i=0;i<valuePropNames.length;i++){var propName=valuePropNames[i];if(props[propName]==null){continue;}var isArray=Array.isArray(props[propName]);if(props.multiple&&!isArray){error('The `%s` prop supplied to <select> must be an array if '+'`multiple` is true.%s',propName,getDeclarationErrorAddendum());}else if(!props.multiple&&isArray){error('The `%s` prop supplied to <select> must be a scalar '+'value if `multiple` is false.%s',propName,getDeclarationErrorAddendum());}}}}function updateOptions(node,multiple,propValue,setDefaultSelected){var options=node.options;if(multiple){var selectedValues=propValue;var selectedValue={};for(var i=0;i<selectedValues.length;i++){// Prefix to avoid chaos with special keys. 14029selectedValue['$'+selectedValues[i]]=true;}for(var _i=0;_i<options.length;_i++){var selected=selectedValue.hasOwnProperty('$'+options[_i].value);if(options[_i].selected!==selected){options[_i].selected=selected;}if(selected&&setDefaultSelected){options[_i].defaultSelected=true;}}}else{// Do not set `select.value` as exact behavior isn't consistent across all 14030// browsers for all cases. 14031var _selectedValue=toString(getToStringValue(propValue));var defaultSelected=null;for(var _i2=0;_i2<options.length;_i2++){if(options[_i2].value===_selectedValue){options[_i2].selected=true;if(setDefaultSelected){options[_i2].defaultSelected=true;}return;}if(defaultSelected===null&&!options[_i2].disabled){defaultSelected=options[_i2];}}if(defaultSelected!==null){defaultSelected.selected=true;}}}/** 14032 * Implements a <select> host component that allows optionally setting the 14033 * props `value` and `defaultValue`. If `multiple` is false, the prop must be a 14034 * stringable. If `multiple` is true, the prop must be an array of stringables. 14035 * 14036 * If `value` is not supplied (or null/undefined), user actions that change the 14037 * selected option will trigger updates to the rendered options. 14038 * 14039 * If it is supplied (and not null/undefined), the rendered options will not 14040 * update in response to user actions. Instead, the `value` prop must change in 14041 * order for the rendered options to update. 14042 * 14043 * If `defaultValue` is provided, any options with the supplied values will be 14044 * selected. 14045 */function getHostProps$2(element,props){return _assign({},props,{value:undefined});}function initWrapperState$1(element,props){var node=element;{checkSelectPropTypes(props);}node._wrapperState={wasMultiple:!!props.multiple};{if(props.value!==undefined&&props.defaultValue!==undefined&&!didWarnValueDefaultValue$1){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');didWarnValueDefaultValue$1=true;}}}function postMountWrapper$2(element,props){var node=element;node.multiple=!!props.multiple;var value=props.value;if(value!=null){updateOptions(node,!!props.multiple,value,false);}else if(props.defaultValue!=null){updateOptions(node,!!props.multiple,props.defaultValue,true);}}function postUpdateWrapper(element,props){var node=element;var wasMultiple=node._wrapperState.wasMultiple;node._wrapperState.wasMultiple=!!props.multiple;var value=props.value;if(value!=null){updateOptions(node,!!props.multiple,value,false);}else if(wasMultiple!==!!props.multiple){// For simplicity, reapply `defaultValue` if `multiple` is toggled. 14046if(props.defaultValue!=null){updateOptions(node,!!props.multiple,props.defaultValue,true);}else{// Revert the select back to its default unselected state. 14047updateOptions(node,!!props.multiple,props.multiple?[]:'',false);}}}function restoreControlledState$1(element,props){var node=element;var value=props.value;if(value!=null){updateOptions(node,!!props.multiple,value,false);}}var didWarnValDefaultVal=false;/** 14048 * Implements a <textarea> host component that allows setting `value`, and 14049 * `defaultValue`. This differs from the traditional DOM API because value is 14050 * usually set as PCDATA children. 14051 * 14052 * If `value` is not supplied (or null/undefined), user actions that affect the 14053 * value will trigger updates to the element. 14054 * 14055 * If `value` is supplied (and not null/undefined), the rendered element will 14056 * not trigger updates to the element. Instead, the `value` prop must change in 14057 * order for the rendered element to be updated. 14058 * 14059 * The rendered element will be initialized with an empty value, the prop 14060 * `defaultValue` if specified, or the children content (deprecated). 14061 */function getHostProps$3(element,props){var node=element;if(!(props.dangerouslySetInnerHTML==null)){{throw Error("`dangerouslySetInnerHTML` does not make sense on <textarea>.");}}// Always set children to the same thing. In IE9, the selection range will 14062// get reset if `textContent` is mutated. We could add a check in setTextContent 14063// to only set the value if/when the value differs from the node value (which would 14064// completely solve this IE9 bug), but Sebastian+Sophie seemed to like this 14065// solution. The value can be a boolean or object so that's why it's forced 14066// to be a string. 14067var hostProps=_assign({},props,{value:undefined,defaultValue:undefined,children:toString(node._wrapperState.initialValue)});return hostProps;}function initWrapperState$2(element,props){var node=element;{ReactControlledValuePropTypes.checkPropTypes('textarea',props);if(props.value!==undefined&&props.defaultValue!==undefined&&!didWarnValDefaultVal){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');didWarnValDefaultVal=true;}}var initialValue=props.value;// Only bother fetching default value if we're going to use it 14068if(initialValue==null){var children=props.children,defaultValue=props.defaultValue;if(children!=null){{error('Use the `defaultValue` or `value` props instead of setting '+'children on <textarea>.');}{if(!(defaultValue==null)){{throw Error("If you supply `defaultValue` on a <textarea>, do not pass children.");}}if(Array.isArray(children)){if(!(children.length<=1)){{throw Error("<textarea> can only have at most one child.");}}children=children[0];}defaultValue=children;}}if(defaultValue==null){defaultValue='';}initialValue=defaultValue;}node._wrapperState={initialValue:getToStringValue(initialValue)};}function updateWrapper$1(element,props){var node=element;var value=getToStringValue(props.value);var defaultValue=getToStringValue(props.defaultValue);if(value!=null){// Cast `value` to a string to ensure the value is set correctly. While 14069// browsers typically do this as necessary, jsdom doesn't. 14070var newValue=toString(value);// To avoid side effects (such as losing text selection), only set value if changed 14071if(newValue!==node.value){node.value=newValue;}if(props.defaultValue==null&&node.defaultValue!==newValue){node.defaultValue=newValue;}}if(defaultValue!=null){node.defaultValue=toString(defaultValue);}}function postMountWrapper$3(element,props){var node=element;// This is in postMount because we need access to the DOM node, which is not 14072// available until after the component has mounted. 14073var textContent=node.textContent;// Only set node.value if textContent is equal to the expected 14074// initial value. In IE10/IE11 there is a bug where the placeholder attribute 14075// will populate textContent as well. 14076// https://developer.microsoft.com/microsoft-edge/platform/issues/101525/ 14077if(textContent===node._wrapperState.initialValue){if(textContent!==''&&textContent!==null){node.value=textContent;}}}function restoreControlledState$2(element,props){// DOM component is still mounted; update 14078updateWrapper$1(element,props);}var HTML_NAMESPACE='http://www.w3.org/1999/xhtml';var MATH_NAMESPACE='http://www.w3.org/1998/Math/MathML';var SVG_NAMESPACE='http://www.w3.org/2000/svg';var Namespaces={html:HTML_NAMESPACE,mathml:MATH_NAMESPACE,svg:SVG_NAMESPACE};// Assumes there is no parent namespace. 14079function getIntrinsicNamespace(type){switch(type){case'svg':return SVG_NAMESPACE;case'math':return MATH_NAMESPACE;default:return HTML_NAMESPACE;}}function getChildNamespace(parentNamespace,type){if(parentNamespace==null||parentNamespace===HTML_NAMESPACE){// No (or default) parent namespace: potential entry point. 14080return getIntrinsicNamespace(type);}if(parentNamespace===SVG_NAMESPACE&&type==='foreignObject'){// We're leaving SVG. 14081return HTML_NAMESPACE;}// By default, pass namespace below. 14082return parentNamespace;}/* globals MSApp */ /** 14083 * Create a function which has 'unsafe' privileges (required by windows8 apps) 14084 */var createMicrosoftUnsafeLocalFunction=function(func){if(typeof MSApp!=='undefined'&&MSApp.execUnsafeLocalFunction){return function(arg0,arg1,arg2,arg3){MSApp.execUnsafeLocalFunction(function(){return func(arg0,arg1,arg2,arg3);});};}else{return func;}};var reusableSVGContainer;/** 14085 * Set the innerHTML property of a node 14086 * 14087 * @param {DOMElement} node 14088 * @param {string} html 14089 * @internal 14090 */var setInnerHTML=createMicrosoftUnsafeLocalFunction(function(node,html){if(node.namespaceURI===Namespaces.svg){if(!('innerHTML'in node)){// IE does not have innerHTML for SVG nodes, so instead we inject the 14091// new markup in a temp node and then move the child nodes across into 14092// the target node 14093reusableSVGContainer=reusableSVGContainer||document.createElement('div');reusableSVGContainer.innerHTML='<svg>'+html.valueOf().toString()+'</svg>';var svgNode=reusableSVGContainer.firstChild;while(node.firstChild){node.removeChild(node.firstChild);}while(svgNode.firstChild){node.appendChild(svgNode.firstChild);}return;}}node.innerHTML=html;});/** 14094 * HTML nodeType values that represent the type of the node 14095 */var ELEMENT_NODE=1;var TEXT_NODE=3;var COMMENT_NODE=8;var DOCUMENT_NODE=9;var DOCUMENT_FRAGMENT_NODE=11;/** 14096 * Set the textContent property of a node. For text updates, it's faster 14097 * to set the `nodeValue` of the Text node directly instead of using 14098 * `.textContent` which will remove the existing node and create a new one. 14099 * 14100 * @param {DOMElement} node 14101 * @param {string} text 14102 * @internal 14103 */var setTextContent=function(node,text){if(text){var firstChild=node.firstChild;if(firstChild&&firstChild===node.lastChild&&firstChild.nodeType===TEXT_NODE){firstChild.nodeValue=text;return;}}node.textContent=text;};// Do not use the below two methods directly! 14104// Instead use constants exported from DOMTopLevelEventTypes in ReactDOM. 14105// (It is the only module that is allowed to access these methods.) 14106function unsafeCastStringToDOMTopLevelType(topLevelType){return topLevelType;}function unsafeCastDOMTopLevelTypeToString(topLevelType){return topLevelType;}/** 14107 * Generate a mapping of standard vendor prefixes using the defined style property and event name. 14108 * 14109 * @param {string} styleProp 14110 * @param {string} eventName 14111 * @returns {object} 14112 */function makePrefixMap(styleProp,eventName){var prefixes={};prefixes[styleProp.toLowerCase()]=eventName.toLowerCase();prefixes['Webkit'+styleProp]='webkit'+eventName;prefixes['Moz'+styleProp]='moz'+eventName;return prefixes;}/** 14113 * A list of event names to a configurable list of vendor prefixes. 14114 */var vendorPrefixes={animationend:makePrefixMap('Animation','AnimationEnd'),animationiteration:makePrefixMap('Animation','AnimationIteration'),animationstart:makePrefixMap('Animation','AnimationStart'),transitionend:makePrefixMap('Transition','TransitionEnd')};/** 14115 * Event names that have already been detected and prefixed (if applicable). 14116 */var prefixedEventNames={};/** 14117 * Element to check for prefixes on. 14118 */var style={};/** 14119 * Bootstrap if a DOM exists. 14120 */if(canUseDOM){style=document.createElement('div').style;// On some platforms, in particular some releases of Android 4.x, 14121// the un-prefixed "animation" and "transition" properties are defined on the 14122// style object but the events that fire will still be prefixed, so we need 14123// to check if the un-prefixed events are usable, and if not remove them from the map. 14124if(!('AnimationEvent'in window)){delete vendorPrefixes.animationend.animation;delete vendorPrefixes.animationiteration.animation;delete vendorPrefixes.animationstart.animation;}// Same as above 14125if(!('TransitionEvent'in window)){delete vendorPrefixes.transitionend.transition;}}/** 14126 * Attempts to determine the correct vendor prefixed event name. 14127 * 14128 * @param {string} eventName 14129 * @returns {string} 14130 */function getVendorPrefixedEventName(eventName){if(prefixedEventNames[eventName]){return prefixedEventNames[eventName];}else if(!vendorPrefixes[eventName]){return eventName;}var prefixMap=vendorPrefixes[eventName];for(var styleProp in prefixMap){if(prefixMap.hasOwnProperty(styleProp)&&styleProp in style){return prefixedEventNames[eventName]=prefixMap[styleProp];}}return eventName;}/** 14131 * To identify top level events in ReactDOM, we use constants defined by this 14132 * module. This is the only module that uses the unsafe* methods to express 14133 * that the constants actually correspond to the browser event names. This lets 14134 * us save some bundle size by avoiding a top level type -> event name map. 14135 * The rest of ReactDOM code should import top level types from this file. 14136 */var TOP_ABORT=unsafeCastStringToDOMTopLevelType('abort');var TOP_ANIMATION_END=unsafeCastStringToDOMTopLevelType(getVendorPrefixedEventName('animationend'));var TOP_ANIMATION_ITERATION=unsafeCastStringToDOMTopLevelType(getVendorPrefixedEventName('animationiteration'));var TOP_ANIMATION_START=unsafeCastStringToDOMTopLevelType(getVendorPrefixedEventName('animationstart'));var TOP_BLUR=unsafeCastStringToDOMTopLevelType('blur');var TOP_CAN_PLAY=unsafeCastStringToDOMTopLevelType('canplay');var TOP_CAN_PLAY_THROUGH=unsafeCastStringToDOMTopLevelType('canplaythrough');var TOP_CANCEL=unsafeCastStringToDOMTopLevelType('cancel');var TOP_CHANGE=unsafeCastStringToDOMTopLevelType('change');var TOP_CLICK=unsafeCastStringToDOMTopLevelType('click');var TOP_CLOSE=unsafeCastStringToDOMTopLevelType('close');var TOP_COMPOSITION_END=unsafeCastStringToDOMTopLevelType('compositionend');var TOP_COMPOSITION_START=unsafeCastStringToDOMTopLevelType('compositionstart');var TOP_COMPOSITION_UPDATE=unsafeCastStringToDOMTopLevelType('compositionupdate');var TOP_CONTEXT_MENU=unsafeCastStringToDOMTopLevelType('contextmenu');var TOP_COPY=unsafeCastStringToDOMTopLevelType('copy');var TOP_CUT=unsafeCastStringToDOMTopLevelType('cut');var TOP_DOUBLE_CLICK=unsafeCastStringToDOMTopLevelType('dblclick');var TOP_AUX_CLICK=unsafeCastStringToDOMTopLevelType('auxclick');var TOP_DRAG=unsafeCastStringToDOMTopLevelType('drag');var TOP_DRAG_END=unsafeCastStringToDOMTopLevelType('dragend');var TOP_DRAG_ENTER=unsafeCastStringToDOMTopLevelType('dragenter');var TOP_DRAG_EXIT=unsafeCastStringToDOMTopLevelType('dragexit');var TOP_DRAG_LEAVE=unsafeCastStringToDOMTopLevelType('dragleave');var TOP_DRAG_OVER=unsafeCastStringToDOMTopLevelType('dragover');var TOP_DRAG_START=unsafeCastStringToDOMTopLevelType('dragstart');var TOP_DROP=unsafeCastStringToDOMTopLevelType('drop');var TOP_DURATION_CHANGE=unsafeCastStringToDOMTopLevelType('durationchange');var TOP_EMPTIED=unsafeCastStringToDOMTopLevelType('emptied');var TOP_ENCRYPTED=unsafeCastStringToDOMTopLevelType('encrypted');var TOP_ENDED=unsafeCastStringToDOMTopLevelType('ended');var TOP_ERROR=unsafeCastStringToDOMTopLevelType('error');var TOP_FOCUS=unsafeCastStringToDOMTopLevelType('focus');var TOP_GOT_POINTER_CAPTURE=unsafeCastStringToDOMTopLevelType('gotpointercapture');var TOP_INPUT=unsafeCastStringToDOMTopLevelType('input');var TOP_INVALID=unsafeCastStringToDOMTopLevelType('invalid');var TOP_KEY_DOWN=unsafeCastStringToDOMTopLevelType('keydown');var TOP_KEY_PRESS=unsafeCastStringToDOMTopLevelType('keypress');var TOP_KEY_UP=unsafeCastStringToDOMTopLevelType('keyup');var TOP_LOAD=unsafeCastStringToDOMTopLevelType('load');var TOP_LOAD_START=unsafeCastStringToDOMTopLevelType('loadstart');var TOP_LOADED_DATA=unsafeCastStringToDOMTopLevelType('loadeddata');var TOP_LOADED_METADATA=unsafeCastStringToDOMTopLevelType('loadedmetadata');var TOP_LOST_POINTER_CAPTURE=unsafeCastStringToDOMTopLevelType('lostpointercapture');var TOP_MOUSE_DOWN=unsafeCastStringToDOMTopLevelType('mousedown');var TOP_MOUSE_MOVE=unsafeCastStringToDOMTopLevelType('mousemove');var TOP_MOUSE_OUT=unsafeCastStringToDOMTopLevelType('mouseout');var TOP_MOUSE_OVER=unsafeCastStringToDOMTopLevelType('mouseover');var TOP_MOUSE_UP=unsafeCastStringToDOMTopLevelType('mouseup');var TOP_PASTE=unsafeCastStringToDOMTopLevelType('paste');var TOP_PAUSE=unsafeCastStringToDOMTopLevelType('pause');var TOP_PLAY=unsafeCastStringToDOMTopLevelType('play');var TOP_PLAYING=unsafeCastStringToDOMTopLevelType('playing');var TOP_POINTER_CANCEL=unsafeCastStringToDOMTopLevelType('pointercancel');var TOP_POINTER_DOWN=unsafeCastStringToDOMTopLevelType('pointerdown');var TOP_POINTER_MOVE=unsafeCastStringToDOMTopLevelType('pointermove');var TOP_POINTER_OUT=unsafeCastStringToDOMTopLevelType('pointerout');var TOP_POINTER_OVER=unsafeCastStringToDOMTopLevelType('pointerover');var TOP_POINTER_UP=unsafeCastStringToDOMTopLevelType('pointerup');var TOP_PROGRESS=unsafeCastStringToDOMTopLevelType('progress');var TOP_RATE_CHANGE=unsafeCastStringToDOMTopLevelType('ratechange');var TOP_RESET=unsafeCastStringToDOMTopLevelType('reset');var TOP_SCROLL=unsafeCastStringToDOMTopLevelType('scroll');var TOP_SEEKED=unsafeCastStringToDOMTopLevelType('seeked');var TOP_SEEKING=unsafeCastStringToDOMTopLevelType('seeking');var TOP_SELECTION_CHANGE=unsafeCastStringToDOMTopLevelType('selectionchange');var TOP_STALLED=unsafeCastStringToDOMTopLevelType('stalled');var TOP_SUBMIT=unsafeCastStringToDOMTopLevelType('submit');var TOP_SUSPEND=unsafeCastStringToDOMTopLevelType('suspend');var TOP_TEXT_INPUT=unsafeCastStringToDOMTopLevelType('textInput');var TOP_TIME_UPDATE=unsafeCastStringToDOMTopLevelType('timeupdate');var TOP_TOGGLE=unsafeCastStringToDOMTopLevelType('toggle');var TOP_TOUCH_CANCEL=unsafeCastStringToDOMTopLevelType('touchcancel');var TOP_TOUCH_END=unsafeCastStringToDOMTopLevelType('touchend');var TOP_TOUCH_MOVE=unsafeCastStringToDOMTopLevelType('touchmove');var TOP_TOUCH_START=unsafeCastStringToDOMTopLevelType('touchstart');var TOP_TRANSITION_END=unsafeCastStringToDOMTopLevelType(getVendorPrefixedEventName('transitionend'));var TOP_VOLUME_CHANGE=unsafeCastStringToDOMTopLevelType('volumechange');var TOP_WAITING=unsafeCastStringToDOMTopLevelType('waiting');var TOP_WHEEL=unsafeCastStringToDOMTopLevelType('wheel');// List of events that need to be individually attached to media elements. 14137// Note that events in this list will *not* be listened to at the top level 14138// unless they're explicitly whitelisted in `ReactBrowserEventEmitter.listenTo`. 14139var 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];function getRawEventName(topLevelType){return unsafeCastDOMTopLevelTypeToString(topLevelType);}var PossiblyWeakMap=typeof WeakMap==='function'?WeakMap:Map;// prettier-ignore 14140var elementListenerMap=new PossiblyWeakMap();function getListenerMapForElement(element){var listenerMap=elementListenerMap.get(element);if(listenerMap===undefined){listenerMap=new Map();elementListenerMap.set(element,listenerMap);}return listenerMap;}/** 14141 * `ReactInstanceMap` maintains a mapping from a public facing stateful 14142 * instance (key) and the internal representation (value). This allows public 14143 * methods to accept the user facing instance as an argument and map them back 14144 * to internal methods. 14145 * 14146 * Note that this module is currently shared and assumed to be stateless. 14147 * If this becomes an actual Map, that will break. 14148 */function get(key){return key._reactInternalFiber;}function has(key){return key._reactInternalFiber!==undefined;}function set(key,value){key._reactInternalFiber=value;}// Don't change these two values. They're used by React Dev Tools. 14149var NoEffect=/* */0;var PerformedWork=/* */1;// You can change the rest (and add more). 14150var Placement=/* */2;var Update=/* */4;var PlacementAndUpdate=/* */6;var Deletion=/* */8;var ContentReset=/* */16;var Callback=/* */32;var DidCapture=/* */64;var Ref=/* */128;var Snapshot=/* */256;var Passive=/* */512;var Hydrating=/* */1024;var HydratingAndUpdate=/* */1028;// Passive & Update & Callback & Ref & Snapshot 14151var LifecycleEffectMask=/* */932;// Union of all host effects 14152var HostEffectMask=/* */2047;var Incomplete=/* */2048;var ShouldCapture=/* */4096;var ReactCurrentOwner=ReactSharedInternals.ReactCurrentOwner;function getNearestMountedFiber(fiber){var node=fiber;var nearestMounted=fiber;if(!fiber.alternate){// If there is no alternate, this might be a new tree that isn't inserted 14153// yet. If it is, then it will have a pending insertion effect on it. 14154var nextNode=node;do{node=nextNode;if((node.effectTag&(Placement|Hydrating))!==NoEffect){// This is an insertion or in-progress hydration. The nearest possible 14155// mounted fiber is the parent but we need to continue to figure out 14156// if that one is still mounted. 14157nearestMounted=node.return;}nextNode=node.return;}while(nextNode);}else{while(node.return){node=node.return;}}if(node.tag===HostRoot){// TODO: Check if this was a nested HostRoot when used with 14158// renderContainerIntoSubtree. 14159return nearestMounted;}// If we didn't hit the root, that means that we're in an disconnected tree 14160// that has been unmounted. 14161return null;}function getSuspenseInstanceFromFiber(fiber){if(fiber.tag===SuspenseComponent){var suspenseState=fiber.memoizedState;if(suspenseState===null){var current=fiber.alternate;if(current!==null){suspenseState=current.memoizedState;}}if(suspenseState!==null){return suspenseState.dehydrated;}}return null;}function getContainerFromFiber(fiber){return fiber.tag===HostRoot?fiber.stateNode.containerInfo:null;}function isFiberMounted(fiber){return getNearestMountedFiber(fiber)===fiber;}function isMounted(component){{var owner=ReactCurrentOwner.current;if(owner!==null&&owner.tag===ClassComponent){var ownerFiber=owner;var instance=ownerFiber.stateNode;if(!instance._warnedAboutRefsInRender){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');}instance._warnedAboutRefsInRender=true;}}var fiber=get(component);if(!fiber){return false;}return getNearestMountedFiber(fiber)===fiber;}function assertIsMounted(fiber){if(!(getNearestMountedFiber(fiber)===fiber)){{throw Error("Unable to find node on an unmounted component.");}}}function findCurrentFiberUsingSlowPath(fiber){var alternate=fiber.alternate;if(!alternate){// If there is no alternate, then we only need to check if it is mounted. 14162var nearestMounted=getNearestMountedFiber(fiber);if(!(nearestMounted!==null)){{throw Error("Unable to find node on an unmounted component.");}}if(nearestMounted!==fiber){return null;}return fiber;}// If we have two possible branches, we'll walk backwards up to the root 14163// to see what path the root points to. On the way we may hit one of the 14164// special cases and we'll deal with them. 14165var a=fiber;var b=alternate;while(true){var parentA=a.return;if(parentA===null){// We're at the root. 14166break;}var parentB=parentA.alternate;if(parentB===null){// There is no alternate. This is an unusual case. Currently, it only 14167// happens when a Suspense component is hidden. An extra fragment fiber 14168// is inserted in between the Suspense fiber and its children. Skip 14169// over this extra fragment fiber and proceed to the next parent. 14170var nextParent=parentA.return;if(nextParent!==null){a=b=nextParent;continue;}// If there's no parent, we're at the root. 14171break;}// If both copies of the parent fiber point to the same child, we can 14172// assume that the child is current. This happens when we bailout on low 14173// priority: the bailed out fiber's child reuses the current child. 14174if(parentA.child===parentB.child){var child=parentA.child;while(child){if(child===a){// We've determined that A is the current branch. 14175assertIsMounted(parentA);return fiber;}if(child===b){// We've determined that B is the current branch. 14176assertIsMounted(parentA);return alternate;}child=child.sibling;}// We should never have an alternate for any mounting node. So the only 14177// way this could possibly happen is if this was unmounted, if at all. 14178{{throw Error("Unable to find node on an unmounted component.");}}}if(a.return!==b.return){// The return pointer of A and the return pointer of B point to different 14179// fibers. We assume that return pointers never criss-cross, so A must 14180// belong to the child set of A.return, and B must belong to the child 14181// set of B.return. 14182a=parentA;b=parentB;}else{// The return pointers point to the same fiber. We'll have to use the 14183// default, slow path: scan the child sets of each parent alternate to see 14184// which child belongs to which set. 14185// 14186// Search parent A's child set 14187var didFindChild=false;var _child=parentA.child;while(_child){if(_child===a){didFindChild=true;a=parentA;b=parentB;break;}if(_child===b){didFindChild=true;b=parentA;a=parentB;break;}_child=_child.sibling;}if(!didFindChild){// Search parent B's child set 14188_child=parentB.child;while(_child){if(_child===a){didFindChild=true;a=parentB;b=parentA;break;}if(_child===b){didFindChild=true;b=parentB;a=parentA;break;}_child=_child.sibling;}if(!didFindChild){{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.");}}}}if(!(a.alternate===b)){{throw Error("Return fibers should always be each others' alternates. This error is likely caused by a bug in React. Please file an issue.");}}}// If the root is not a host container, we're in a disconnected tree. I.e. 14189// unmounted. 14190if(!(a.tag===HostRoot)){{throw Error("Unable to find node on an unmounted component.");}}if(a.stateNode.current===a){// We've determined that A is the current branch. 14191return fiber;}// Otherwise B has to be current branch. 14192return alternate;}function findCurrentHostFiber(parent){var currentParent=findCurrentFiberUsingSlowPath(parent);if(!currentParent){return null;}// Next we'll drill down this component to find the first HostComponent/Text. 14193var node=currentParent;while(true){if(node.tag===HostComponent||node.tag===HostText){return node;}else if(node.child){node.child.return=node;node=node.child;continue;}if(node===currentParent){return null;}while(!node.sibling){if(!node.return||node.return===currentParent){return null;}node=node.return;}node.sibling.return=node.return;node=node.sibling;}// Flow needs the return null here, but ESLint complains about it. 14194// eslint-disable-next-line no-unreachable 14195return null;}function findCurrentHostFiberWithNoPortals(parent){var currentParent=findCurrentFiberUsingSlowPath(parent);if(!currentParent){return null;}// Next we'll drill down this component to find the first HostComponent/Text. 14196var node=currentParent;while(true){if(node.tag===HostComponent||node.tag===HostText||enableFundamentalAPI){return node;}else if(node.child&&node.tag!==HostPortal){node.child.return=node;node=node.child;continue;}if(node===currentParent){return null;}while(!node.sibling){if(!node.return||node.return===currentParent){return null;}node=node.return;}node.sibling.return=node.return;node=node.sibling;}// Flow needs the return null here, but ESLint complains about it. 14197// eslint-disable-next-line no-unreachable 14198return null;}/** 14199 * Accumulates items that must not be null or undefined into the first one. This 14200 * is used to conserve memory by avoiding array allocations, and thus sacrifices 14201 * API cleanness. Since `current` can be null before being passed in and not 14202 * null after this function, make sure to assign it back to `current`: 14203 * 14204 * `a = accumulateInto(a, b);` 14205 * 14206 * This API should be sparingly used. Try `accumulate` for something cleaner. 14207 * 14208 * @return {*|array<*>} An accumulation of items. 14209 */function accumulateInto(current,next){if(!(next!=null)){{throw Error("accumulateInto(...): Accumulated items must not be null or undefined.");}}if(current==null){return next;}// Both are not empty. Warning: Never call x.concat(y) when you are not 14210// certain that x is an Array (x could be a string with concat method). 14211if(Array.isArray(current)){if(Array.isArray(next)){current.push.apply(current,next);return current;}current.push(next);return current;}if(Array.isArray(next)){// A bit too dangerous to mutate `next`. 14212return[current].concat(next);}return[current,next];}/** 14213 * @param {array} arr an "accumulation" of items which is either an Array or 14214 * a single item. Useful when paired with the `accumulate` module. This is a 14215 * simple utility that allows us to reason about a collection of items, but 14216 * handling the case when there is exactly one item (and we do not need to 14217 * allocate an array). 14218 * @param {function} cb Callback invoked with each element or a collection. 14219 * @param {?} [scope] Scope used as `this` in a callback. 14220 */function forEachAccumulated(arr,cb,scope){if(Array.isArray(arr)){arr.forEach(cb,scope);}else if(arr){cb.call(scope,arr);}}/** 14221 * Internal queue of events that have accumulated their dispatches and are 14222 * waiting to have their dispatches executed. 14223 */var eventQueue=null;/** 14224 * Dispatches an event and releases it back into the pool, unless persistent. 14225 * 14226 * @param {?object} event Synthetic event to be dispatched. 14227 * @private 14228 */var executeDispatchesAndRelease=function(event){if(event){executeDispatchesInOrder(event);if(!event.isPersistent()){event.constructor.release(event);}}};var executeDispatchesAndReleaseTopLevel=function(e){return executeDispatchesAndRelease(e);};function runEventsInBatch(events){if(events!==null){eventQueue=accumulateInto(eventQueue,events);}// Set `eventQueue` to null before processing it so that we can tell if more 14229// events get enqueued while processing. 14230var processingEventQueue=eventQueue;eventQueue=null;if(!processingEventQueue){return;}forEachAccumulated(processingEventQueue,executeDispatchesAndReleaseTopLevel);if(!!eventQueue){{throw Error("processEventQueue(): Additional events were enqueued while processing an event queue. Support for this has not yet been implemented.");}}// This would be a good time to rethrow if any of the event handlers threw. 14231rethrowCaughtError();}/** 14232 * Gets the target node from a native browser event by accounting for 14233 * inconsistencies in browser DOM APIs. 14234 * 14235 * @param {object} nativeEvent Native browser event. 14236 * @return {DOMEventTarget} Target node. 14237 */function getEventTarget(nativeEvent){// Fallback to nativeEvent.srcElement for IE9 14238// https://github.com/facebook/react/issues/12506 14239var target=nativeEvent.target||nativeEvent.srcElement||window;// Normalize SVG <use> element events #4963 14240if(target.correspondingUseElement){target=target.correspondingUseElement;}// Safari may fire events on text nodes (Node.TEXT_NODE is 3). 14241// @see http://www.quirksmode.org/js/events_properties.html 14242return target.nodeType===TEXT_NODE?target.parentNode:target;}/** 14243 * Checks if an event is supported in the current execution environment. 14244 * 14245 * NOTE: This will not work correctly for non-generic events such as `change`, 14246 * `reset`, `load`, `error`, and `select`. 14247 * 14248 * Borrows from Modernizr. 14249 * 14250 * @param {string} eventNameSuffix Event name, e.g. "click". 14251 * @return {boolean} True if the event is supported. 14252 * @internal 14253 * @license Modernizr 3.0.0pre (Custom Build) | MIT 14254 */function isEventSupported(eventNameSuffix){if(!canUseDOM){return false;}var eventName='on'+eventNameSuffix;var isSupported=(eventName in document);if(!isSupported){var element=document.createElement('div');element.setAttribute(eventName,'return;');isSupported=typeof element[eventName]==='function';}return isSupported;}/** 14255 * Summary of `DOMEventPluginSystem` event handling: 14256 * 14257 * - Top-level delegation is used to trap most native browser events. This 14258 * may only occur in the main thread and is the responsibility of 14259 * ReactDOMEventListener, which is injected and can therefore support 14260 * pluggable event sources. This is the only work that occurs in the main 14261 * thread. 14262 * 14263 * - We normalize and de-duplicate events to account for browser quirks. This 14264 * may be done in the worker thread. 14265 * 14266 * - Forward these native events (with the associated top-level type used to 14267 * trap it) to `EventPluginRegistry`, which in turn will ask plugins if they want 14268 * to extract any synthetic events. 14269 * 14270 * - The `EventPluginRegistry` will then process each event by annotating them with 14271 * "dispatches", a sequence of listeners and IDs that care about that event. 14272 * 14273 * - The `EventPluginRegistry` then dispatches the events. 14274 * 14275 * Overview of React and the event system: 14276 * 14277 * +------------+ . 14278 * | DOM | . 14279 * +------------+ . 14280 * | . 14281 * v . 14282 * +------------+ . 14283 * | ReactEvent | . 14284 * | Listener | . 14285 * +------------+ . +-----------+ 14286 * | . +--------+|SimpleEvent| 14287 * | . | |Plugin | 14288 * +-----|------+ . v +-----------+ 14289 * | | | . +--------------+ +------------+ 14290 * | +-----------.--->|PluginRegistry| | Event | 14291 * | | . | | +-----------+ | Propagators| 14292 * | ReactEvent | . | | |TapEvent | |------------| 14293 * | Emitter | . | |<---+|Plugin | |other plugin| 14294 * | | . | | +-----------+ | utilities | 14295 * | +-----------.--->| | +------------+ 14296 * | | | . +--------------+ 14297 * +-----|------+ . ^ +-----------+ 14298 * | . | |Enter/Leave| 14299 * + . +-------+|Plugin | 14300 * +-------------+ . +-----------+ 14301 * | application | . 14302 * |-------------| . 14303 * | | . 14304 * | | . 14305 * +-------------+ . 14306 * . 14307 * React Core . General Purpose Event Plugin System 14308 */var CALLBACK_BOOKKEEPING_POOL_SIZE=10;var callbackBookkeepingPool=[];function releaseTopLevelCallbackBookKeeping(instance){instance.topLevelType=null;instance.nativeEvent=null;instance.targetInst=null;instance.ancestors.length=0;if(callbackBookkeepingPool.length<CALLBACK_BOOKKEEPING_POOL_SIZE){callbackBookkeepingPool.push(instance);}}// Used to store ancestor hierarchy in top level callback 14309function getTopLevelCallbackBookKeeping(topLevelType,nativeEvent,targetInst,eventSystemFlags){if(callbackBookkeepingPool.length){var instance=callbackBookkeepingPool.pop();instance.topLevelType=topLevelType;instance.eventSystemFlags=eventSystemFlags;instance.nativeEvent=nativeEvent;instance.targetInst=targetInst;return instance;}return{topLevelType:topLevelType,eventSystemFlags:eventSystemFlags,nativeEvent:nativeEvent,targetInst:targetInst,ancestors:[]};}/** 14310 * Find the deepest React component completely containing the root of the 14311 * passed-in instance (for use when entire React trees are nested within each 14312 * other). If React trees are not nested, returns null. 14313 */function findRootContainerNode(inst){if(inst.tag===HostRoot){return inst.stateNode.containerInfo;}// TODO: It may be a good idea to cache this to prevent unnecessary DOM 14314// traversal, but caching is difficult to do correctly without using a 14315// mutation observer to listen for all DOM changes. 14316while(inst.return){inst=inst.return;}if(inst.tag!==HostRoot){// This can happen if we're in a detached tree. 14317return null;}return inst.stateNode.containerInfo;}/** 14318 * Allows registered plugins an opportunity to extract events from top-level 14319 * native browser events. 14320 * 14321 * @return {*} An accumulation of synthetic events. 14322 * @internal 14323 */function extractPluginEvents(topLevelType,targetInst,nativeEvent,nativeEventTarget,eventSystemFlags){var events=null;for(var i=0;i<plugins.length;i++){// Not every plugin in the ordering may be loaded at runtime. 14324var possiblePlugin=plugins[i];if(possiblePlugin){var extractedEvents=possiblePlugin.extractEvents(topLevelType,targetInst,nativeEvent,nativeEventTarget,eventSystemFlags);if(extractedEvents){events=accumulateInto(events,extractedEvents);}}}return events;}function runExtractedPluginEventsInBatch(topLevelType,targetInst,nativeEvent,nativeEventTarget,eventSystemFlags){var events=extractPluginEvents(topLevelType,targetInst,nativeEvent,nativeEventTarget,eventSystemFlags);runEventsInBatch(events);}function handleTopLevel(bookKeeping){var targetInst=bookKeeping.targetInst;// Loop through the hierarchy, in case there's any nested components. 14325// It's important that we build the array of ancestors before calling any 14326// event handlers, because event handlers can modify the DOM, leading to 14327// inconsistencies with ReactMount's node cache. See #1105. 14328var ancestor=targetInst;do{if(!ancestor){var ancestors=bookKeeping.ancestors;ancestors.push(ancestor);break;}var root=findRootContainerNode(ancestor);if(!root){break;}var tag=ancestor.tag;if(tag===HostComponent||tag===HostText){bookKeeping.ancestors.push(ancestor);}ancestor=getClosestInstanceFromNode(root);}while(ancestor);for(var i=0;i<bookKeeping.ancestors.length;i++){targetInst=bookKeeping.ancestors[i];var eventTarget=getEventTarget(bookKeeping.nativeEvent);var topLevelType=bookKeeping.topLevelType;var nativeEvent=bookKeeping.nativeEvent;var eventSystemFlags=bookKeeping.eventSystemFlags;// If this is the first ancestor, we mark it on the system flags 14329if(i===0){eventSystemFlags|=IS_FIRST_ANCESTOR;}runExtractedPluginEventsInBatch(topLevelType,targetInst,nativeEvent,eventTarget,eventSystemFlags);}}function dispatchEventForLegacyPluginEventSystem(topLevelType,eventSystemFlags,nativeEvent,targetInst){var bookKeeping=getTopLevelCallbackBookKeeping(topLevelType,nativeEvent,targetInst,eventSystemFlags);try{// Event queue being processed in the same cycle allows 14330// `preventDefault`. 14331batchedEventUpdates(handleTopLevel,bookKeeping);}finally{releaseTopLevelCallbackBookKeeping(bookKeeping);}}/** 14332 * We listen for bubbled touch events on the document object. 14333 * 14334 * Firefox v8.01 (and possibly others) exhibited strange behavior when 14335 * mounting `onmousemove` events at some node that was not the document 14336 * element. The symptoms were that if your mouse is not moving over something 14337 * contained within that mount point (for example on the background) the 14338 * top-level listeners for `onmousemove` won't be called. However, if you 14339 * register the `mousemove` on the document object, then it will of course 14340 * catch all `mousemove`s. This along with iOS quirks, justifies restricting 14341 * top-level listeners to the document object only, at least for these 14342 * movement types of events and possibly all events. 14343 * 14344 * @see http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html 14345 * 14346 * Also, `keyup`/`keypress`/`keydown` do not bubble to the window on IE, but 14347 * they bubble to document. 14348 * 14349 * @param {string} registrationName Name of listener (e.g. `onClick`). 14350 * @param {object} mountAt Container where to mount the listener 14351 */function legacyListenToEvent(registrationName,mountAt){var listenerMap=getListenerMapForElement(mountAt);var dependencies=registrationNameDependencies[registrationName];for(var i=0;i<dependencies.length;i++){var dependency=dependencies[i];legacyListenToTopLevelEvent(dependency,mountAt,listenerMap);}}function legacyListenToTopLevelEvent(topLevelType,mountAt,listenerMap){if(!listenerMap.has(topLevelType)){switch(topLevelType){case TOP_SCROLL:trapCapturedEvent(TOP_SCROLL,mountAt);break;case TOP_FOCUS:case TOP_BLUR:trapCapturedEvent(TOP_FOCUS,mountAt);trapCapturedEvent(TOP_BLUR,mountAt);// We set the flag for a single dependency later in this function, 14352// but this ensures we mark both as attached rather than just one. 14353listenerMap.set(TOP_BLUR,null);listenerMap.set(TOP_FOCUS,null);break;case TOP_CANCEL:case TOP_CLOSE:if(isEventSupported(getRawEventName(topLevelType))){trapCapturedEvent(topLevelType,mountAt);}break;case TOP_INVALID:case TOP_SUBMIT:case TOP_RESET:// We listen to them on the target DOM elements. 14354// Some of them bubble so we don't want them to fire twice. 14355break;default:// By default, listen on the top level to all non-media events. 14356// Media events don't bubble so adding the listener wouldn't do anything. 14357var isMediaEvent=mediaEventTypes.indexOf(topLevelType)!==-1;if(!isMediaEvent){trapBubbledEvent(topLevelType,mountAt);}break;}listenerMap.set(topLevelType,null);}}function isListeningToAllDependencies(registrationName,mountAt){var listenerMap=getListenerMapForElement(mountAt);var dependencies=registrationNameDependencies[registrationName];for(var i=0;i<dependencies.length;i++){var dependency=dependencies[i];if(!listenerMap.has(dependency)){return false;}}return true;}var attemptUserBlockingHydration;function setAttemptUserBlockingHydration(fn){attemptUserBlockingHydration=fn;}var attemptContinuousHydration;function setAttemptContinuousHydration(fn){attemptContinuousHydration=fn;}var attemptHydrationAtCurrentPriority;function setAttemptHydrationAtCurrentPriority(fn){attemptHydrationAtCurrentPriority=fn;}// TODO: Upgrade this definition once we're on a newer version of Flow that 14358var hasScheduledReplayAttempt=false;// The queue of discrete events to be replayed. 14359var queuedDiscreteEvents=[];// Indicates if any continuous event targets are non-null for early bailout. 14360// if the last target was dehydrated. 14361var queuedFocus=null;var queuedDrag=null;var queuedMouse=null;// For pointer events there can be one latest event per pointerId. 14362var queuedPointers=new Map();var queuedPointerCaptures=new Map();// We could consider replaying selectionchange and touchmoves too. 14363var queuedExplicitHydrationTargets=[];function hasQueuedDiscreteEvents(){return queuedDiscreteEvents.length>0;}var 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];var 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];function isReplayableDiscreteEvent(eventType){return discreteReplayableEvents.indexOf(eventType)>-1;}function trapReplayableEventForDocument(topLevelType,document,listenerMap){legacyListenToTopLevelEvent(topLevelType,document,listenerMap);}function eagerlyTrapReplayableEvents(container,document){var listenerMapForDoc=getListenerMapForElement(document);// Discrete 14364discreteReplayableEvents.forEach(function(topLevelType){trapReplayableEventForDocument(topLevelType,document,listenerMapForDoc);});// Continuous 14365continuousReplayableEvents.forEach(function(topLevelType){trapReplayableEventForDocument(topLevelType,document,listenerMapForDoc);});}function createQueuedReplayableEvent(blockedOn,topLevelType,eventSystemFlags,container,nativeEvent){return{blockedOn:blockedOn,topLevelType:topLevelType,eventSystemFlags:eventSystemFlags|IS_REPLAYED,nativeEvent:nativeEvent,container:container};}function queueDiscreteEvent(blockedOn,topLevelType,eventSystemFlags,container,nativeEvent){var queuedEvent=createQueuedReplayableEvent(blockedOn,topLevelType,eventSystemFlags,container,nativeEvent);queuedDiscreteEvents.push(queuedEvent);}// Resets the replaying for this type of continuous event to no event. 14366function clearIfContinuousEvent(topLevelType,nativeEvent){switch(topLevelType){case TOP_FOCUS:case TOP_BLUR:queuedFocus=null;break;case TOP_DRAG_ENTER:case TOP_DRAG_LEAVE:queuedDrag=null;break;case TOP_MOUSE_OVER:case TOP_MOUSE_OUT:queuedMouse=null;break;case TOP_POINTER_OVER:case TOP_POINTER_OUT:{var pointerId=nativeEvent.pointerId;queuedPointers.delete(pointerId);break;}case TOP_GOT_POINTER_CAPTURE:case TOP_LOST_POINTER_CAPTURE:{var _pointerId=nativeEvent.pointerId;queuedPointerCaptures.delete(_pointerId);break;}}}function accumulateOrCreateContinuousQueuedReplayableEvent(existingQueuedEvent,blockedOn,topLevelType,eventSystemFlags,container,nativeEvent){if(existingQueuedEvent===null||existingQueuedEvent.nativeEvent!==nativeEvent){var queuedEvent=createQueuedReplayableEvent(blockedOn,topLevelType,eventSystemFlags,container,nativeEvent);if(blockedOn!==null){var _fiber2=getInstanceFromNode$1(blockedOn);if(_fiber2!==null){// Attempt to increase the priority of this target. 14367attemptContinuousHydration(_fiber2);}}return queuedEvent;}// If we have already queued this exact event, then it's because 14368// the different event systems have different DOM event listeners. 14369// We can accumulate the flags and store a single event to be 14370// replayed. 14371existingQueuedEvent.eventSystemFlags|=eventSystemFlags;return existingQueuedEvent;}function queueIfContinuousEvent(blockedOn,topLevelType,eventSystemFlags,container,nativeEvent){// These set relatedTarget to null because the replayed event will be treated as if we 14372// moved from outside the window (no target) onto the target once it hydrates. 14373// Instead of mutating we could clone the event. 14374switch(topLevelType){case TOP_FOCUS:{var focusEvent=nativeEvent;queuedFocus=accumulateOrCreateContinuousQueuedReplayableEvent(queuedFocus,blockedOn,topLevelType,eventSystemFlags,container,focusEvent);return true;}case TOP_DRAG_ENTER:{var dragEvent=nativeEvent;queuedDrag=accumulateOrCreateContinuousQueuedReplayableEvent(queuedDrag,blockedOn,topLevelType,eventSystemFlags,container,dragEvent);return true;}case TOP_MOUSE_OVER:{var mouseEvent=nativeEvent;queuedMouse=accumulateOrCreateContinuousQueuedReplayableEvent(queuedMouse,blockedOn,topLevelType,eventSystemFlags,container,mouseEvent);return true;}case TOP_POINTER_OVER:{var pointerEvent=nativeEvent;var pointerId=pointerEvent.pointerId;queuedPointers.set(pointerId,accumulateOrCreateContinuousQueuedReplayableEvent(queuedPointers.get(pointerId)||null,blockedOn,topLevelType,eventSystemFlags,container,pointerEvent));return true;}case TOP_GOT_POINTER_CAPTURE:{var _pointerEvent=nativeEvent;var _pointerId2=_pointerEvent.pointerId;queuedPointerCaptures.set(_pointerId2,accumulateOrCreateContinuousQueuedReplayableEvent(queuedPointerCaptures.get(_pointerId2)||null,blockedOn,topLevelType,eventSystemFlags,container,_pointerEvent));return true;}}return false;}// Check if this target is unblocked. Returns true if it's unblocked. 14375function attemptExplicitHydrationTarget(queuedTarget){// TODO: This function shares a lot of logic with attemptToDispatchEvent. 14376// Try to unify them. It's a bit tricky since it would require two return 14377// values. 14378var targetInst=getClosestInstanceFromNode(queuedTarget.target);if(targetInst!==null){var nearestMounted=getNearestMountedFiber(targetInst);if(nearestMounted!==null){var tag=nearestMounted.tag;if(tag===SuspenseComponent){var instance=getSuspenseInstanceFromFiber(nearestMounted);if(instance!==null){// We're blocked on hydrating this boundary. 14379// Increase its priority. 14380queuedTarget.blockedOn=instance;Scheduler.unstable_runWithPriority(queuedTarget.priority,function(){attemptHydrationAtCurrentPriority(nearestMounted);});return;}}else if(tag===HostRoot){var root=nearestMounted.stateNode;if(root.hydrate){queuedTarget.blockedOn=getContainerFromFiber(nearestMounted);// We don't currently have a way to increase the priority of 14381// a root other than sync. 14382return;}}}}queuedTarget.blockedOn=null;}function attemptReplayContinuousQueuedEvent(queuedEvent){if(queuedEvent.blockedOn!==null){return false;}var nextBlockedOn=attemptToDispatchEvent(queuedEvent.topLevelType,queuedEvent.eventSystemFlags,queuedEvent.container,queuedEvent.nativeEvent);if(nextBlockedOn!==null){// We're still blocked. Try again later. 14383var _fiber3=getInstanceFromNode$1(nextBlockedOn);if(_fiber3!==null){attemptContinuousHydration(_fiber3);}queuedEvent.blockedOn=nextBlockedOn;return false;}return true;}function attemptReplayContinuousQueuedEventInMap(queuedEvent,key,map){if(attemptReplayContinuousQueuedEvent(queuedEvent)){map.delete(key);}}function replayUnblockedEvents(){hasScheduledReplayAttempt=false;// First replay discrete events. 14384while(queuedDiscreteEvents.length>0){var nextDiscreteEvent=queuedDiscreteEvents[0];if(nextDiscreteEvent.blockedOn!==null){// We're still blocked. 14385// Increase the priority of this boundary to unblock 14386// the next discrete event. 14387var _fiber4=getInstanceFromNode$1(nextDiscreteEvent.blockedOn);if(_fiber4!==null){attemptUserBlockingHydration(_fiber4);}break;}var nextBlockedOn=attemptToDispatchEvent(nextDiscreteEvent.topLevelType,nextDiscreteEvent.eventSystemFlags,nextDiscreteEvent.container,nextDiscreteEvent.nativeEvent);if(nextBlockedOn!==null){// We're still blocked. Try again later. 14388nextDiscreteEvent.blockedOn=nextBlockedOn;}else{// We've successfully replayed the first event. Let's try the next one. 14389queuedDiscreteEvents.shift();}}// Next replay any continuous events. 14390if(queuedFocus!==null&&attemptReplayContinuousQueuedEvent(queuedFocus)){queuedFocus=null;}if(queuedDrag!==null&&attemptReplayContinuousQueuedEvent(queuedDrag)){queuedDrag=null;}if(queuedMouse!==null&&attemptReplayContinuousQueuedEvent(queuedMouse)){queuedMouse=null;}queuedPointers.forEach(attemptReplayContinuousQueuedEventInMap);queuedPointerCaptures.forEach(attemptReplayContinuousQueuedEventInMap);}function scheduleCallbackIfUnblocked(queuedEvent,unblocked){if(queuedEvent.blockedOn===unblocked){queuedEvent.blockedOn=null;if(!hasScheduledReplayAttempt){hasScheduledReplayAttempt=true;// Schedule a callback to attempt replaying as many events as are 14391// now unblocked. This first might not actually be unblocked yet. 14392// We could check it early to avoid scheduling an unnecessary callback. 14393Scheduler.unstable_scheduleCallback(Scheduler.unstable_NormalPriority,replayUnblockedEvents);}}}function retryIfBlockedOn(unblocked){// Mark anything that was blocked on this as no longer blocked 14394// and eligible for a replay. 14395if(queuedDiscreteEvents.length>0){scheduleCallbackIfUnblocked(queuedDiscreteEvents[0],unblocked);// This is a exponential search for each boundary that commits. I think it's 14396// worth it because we expect very few discrete events to queue up and once 14397// we are actually fully unblocked it will be fast to replay them. 14398for(var i=1;i<queuedDiscreteEvents.length;i++){var queuedEvent=queuedDiscreteEvents[i];if(queuedEvent.blockedOn===unblocked){queuedEvent.blockedOn=null;}}}if(queuedFocus!==null){scheduleCallbackIfUnblocked(queuedFocus,unblocked);}if(queuedDrag!==null){scheduleCallbackIfUnblocked(queuedDrag,unblocked);}if(queuedMouse!==null){scheduleCallbackIfUnblocked(queuedMouse,unblocked);}var unblock=function(queuedEvent){return scheduleCallbackIfUnblocked(queuedEvent,unblocked);};queuedPointers.forEach(unblock);queuedPointerCaptures.forEach(unblock);for(var _i=0;_i<queuedExplicitHydrationTargets.length;_i++){var queuedTarget=queuedExplicitHydrationTargets[_i];if(queuedTarget.blockedOn===unblocked){queuedTarget.blockedOn=null;}}while(queuedExplicitHydrationTargets.length>0){var nextExplicitTarget=queuedExplicitHydrationTargets[0];if(nextExplicitTarget.blockedOn!==null){// We're still blocked. 14399break;}else{attemptExplicitHydrationTarget(nextExplicitTarget);if(nextExplicitTarget.blockedOn===null){// We're unblocked. 14400queuedExplicitHydrationTargets.shift();}}}}function addEventBubbleListener(element,eventType,listener){element.addEventListener(eventType,listener,false);}function addEventCaptureListener(element,eventType,listener){element.addEventListener(eventType,listener,true);}// do it in two places, which duplicates logic 14401// and increases the bundle size, we do it all 14402// here once. If we remove or refactor the 14403// SimpleEventPlugin, we should also remove or 14404// update the below line. 14405var simpleEventPluginEventTypes={};var topLevelEventsToDispatchConfig=new Map();var eventPriorities=new Map();// We store most of the events in this module in pairs of two strings so we can re-use 14406// the code required to apply the same logic for event prioritization and that of the 14407// SimpleEventPlugin. This complicates things slightly, but the aim is to reduce code 14408// duplication (for which there would be quite a bit). For the events that are not needed 14409// for the SimpleEventPlugin (otherDiscreteEvents) we process them separately as an 14410// array of top level events. 14411// Lastly, we ignore prettier so we can keep the formatting sane. 14412// prettier-ignore 14413var 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'];var otherDiscreteEvents=[TOP_CHANGE,TOP_SELECTION_CHANGE,TOP_TEXT_INPUT,TOP_COMPOSITION_START,TOP_COMPOSITION_END,TOP_COMPOSITION_UPDATE];// prettier-ignore 14414var 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 14415var 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'];/** 14416 * Turns 14417 * ['abort', ...] 14418 * into 14419 * eventTypes = { 14420 * 'abort': { 14421 * phasedRegistrationNames: { 14422 * bubbled: 'onAbort', 14423 * captured: 'onAbortCapture', 14424 * }, 14425 * dependencies: [TOP_ABORT], 14426 * }, 14427 * ... 14428 * }; 14429 * topLevelEventsToDispatchConfig = new Map([ 14430 * [TOP_ABORT, { sameConfig }], 14431 * ]); 14432 */function processSimpleEventPluginPairsByPriority(eventTypes,priority){// As the event types are in pairs of two, we need to iterate 14433// through in twos. The events are in pairs of two to save code 14434// and improve init perf of processing this array, as it will 14435// result in far fewer object allocations and property accesses 14436// if we only use three arrays to process all the categories of 14437// instead of tuples. 14438for(var i=0;i<eventTypes.length;i+=2){var topEvent=eventTypes[i];var event=eventTypes[i+1];var capitalizedEvent=event[0].toUpperCase()+event.slice(1);var onEvent='on'+capitalizedEvent;var config={phasedRegistrationNames:{bubbled:onEvent,captured:onEvent+'Capture'},dependencies:[topEvent],eventPriority:priority};eventPriorities.set(topEvent,priority);topLevelEventsToDispatchConfig.set(topEvent,config);simpleEventPluginEventTypes[event]=config;}}function processTopEventPairsByPriority(eventTypes,priority){for(var i=0;i<eventTypes.length;i++){eventPriorities.set(eventTypes[i],priority);}}// SimpleEventPlugin 14439processSimpleEventPluginPairsByPriority(discreteEventPairsForSimpleEventPlugin,DiscreteEvent);processSimpleEventPluginPairsByPriority(userBlockingPairsForSimpleEventPlugin,UserBlockingEvent);processSimpleEventPluginPairsByPriority(continuousPairsForSimpleEventPlugin,ContinuousEvent);// Not used by SimpleEventPlugin 14440processTopEventPairsByPriority(otherDiscreteEvents,DiscreteEvent);function getEventPriorityForPluginSystem(topLevelType){var priority=eventPriorities.get(topLevelType);// Default to a ContinuousEvent. Note: we might 14441// want to warn if we can't detect the priority 14442// for the event. 14443return priority===undefined?ContinuousEvent:priority;}// Intentionally not named imports because Rollup would use dynamic dispatch for 14444var UserBlockingPriority=Scheduler.unstable_UserBlockingPriority,runWithPriority=Scheduler.unstable_runWithPriority;// TODO: can we stop exporting these? 14445var _enabled=true;function setEnabled(enabled){_enabled=!!enabled;}function isEnabled(){return _enabled;}function trapBubbledEvent(topLevelType,element){trapEventForPluginEventSystem(element,topLevelType,false);}function trapCapturedEvent(topLevelType,element){trapEventForPluginEventSystem(element,topLevelType,true);}function trapEventForPluginEventSystem(container,topLevelType,capture){var listener;switch(getEventPriorityForPluginSystem(topLevelType)){case DiscreteEvent:listener=dispatchDiscreteEvent.bind(null,topLevelType,PLUGIN_EVENT_SYSTEM,container);break;case UserBlockingEvent:listener=dispatchUserBlockingUpdate.bind(null,topLevelType,PLUGIN_EVENT_SYSTEM,container);break;case ContinuousEvent:default:listener=dispatchEvent.bind(null,topLevelType,PLUGIN_EVENT_SYSTEM,container);break;}var rawEventName=getRawEventName(topLevelType);if(capture){addEventCaptureListener(container,rawEventName,listener);}else{addEventBubbleListener(container,rawEventName,listener);}}function dispatchDiscreteEvent(topLevelType,eventSystemFlags,container,nativeEvent){flushDiscreteUpdatesIfNeeded(nativeEvent.timeStamp);discreteUpdates(dispatchEvent,topLevelType,eventSystemFlags,container,nativeEvent);}function dispatchUserBlockingUpdate(topLevelType,eventSystemFlags,container,nativeEvent){runWithPriority(UserBlockingPriority,dispatchEvent.bind(null,topLevelType,eventSystemFlags,container,nativeEvent));}function dispatchEvent(topLevelType,eventSystemFlags,container,nativeEvent){if(!_enabled){return;}if(hasQueuedDiscreteEvents()&&isReplayableDiscreteEvent(topLevelType)){// If we already have a queue of discrete events, and this is another discrete 14446// event, then we can't dispatch it regardless of its target, since they 14447// need to dispatch in order. 14448queueDiscreteEvent(null,// Flags that we're not actually blocked on anything as far as we know. 14449topLevelType,eventSystemFlags,container,nativeEvent);return;}var blockedOn=attemptToDispatchEvent(topLevelType,eventSystemFlags,container,nativeEvent);if(blockedOn===null){// We successfully dispatched this event. 14450clearIfContinuousEvent(topLevelType,nativeEvent);return;}if(isReplayableDiscreteEvent(topLevelType)){// This this to be replayed later once the target is available. 14451queueDiscreteEvent(blockedOn,topLevelType,eventSystemFlags,container,nativeEvent);return;}if(queueIfContinuousEvent(blockedOn,topLevelType,eventSystemFlags,container,nativeEvent)){return;}// We need to clear only if we didn't queue because 14452// queueing is accummulative. 14453clearIfContinuousEvent(topLevelType,nativeEvent);// This is not replayable so we'll invoke it but without a target, 14454// in case the event system needs to trace it. 14455{dispatchEventForLegacyPluginEventSystem(topLevelType,eventSystemFlags,nativeEvent,null);}}// Attempt dispatching an event. Returns a SuspenseInstance or Container if it's blocked. 14456function attemptToDispatchEvent(topLevelType,eventSystemFlags,container,nativeEvent){// TODO: Warn if _enabled is false. 14457var nativeEventTarget=getEventTarget(nativeEvent);var targetInst=getClosestInstanceFromNode(nativeEventTarget);if(targetInst!==null){var nearestMounted=getNearestMountedFiber(targetInst);if(nearestMounted===null){// This tree has been unmounted already. Dispatch without a target. 14458targetInst=null;}else{var tag=nearestMounted.tag;if(tag===SuspenseComponent){var instance=getSuspenseInstanceFromFiber(nearestMounted);if(instance!==null){// Queue the event to be replayed later. Abort dispatching since we 14459// don't want this event dispatched twice through the event system. 14460// TODO: If this is the first discrete event in the queue. Schedule an increased 14461// priority for this boundary. 14462return instance;}// This shouldn't happen, something went wrong but to avoid blocking 14463// the whole system, dispatch the event without a target. 14464// TODO: Warn. 14465targetInst=null;}else if(tag===HostRoot){var root=nearestMounted.stateNode;if(root.hydrate){// If this happens during a replay something went wrong and it might block 14466// the whole system. 14467return getContainerFromFiber(nearestMounted);}targetInst=null;}else if(nearestMounted!==targetInst){// If we get an event (ex: img onload) before committing that 14468// component's mount, ignore it for now (that is, treat it as if it was an 14469// event on a non-React tree). We might also consider queueing events and 14470// dispatching them after the mount. 14471targetInst=null;}}}{dispatchEventForLegacyPluginEventSystem(topLevelType,eventSystemFlags,nativeEvent,targetInst);}// We're not blocked on anything. 14472return null;}// List derived from Gecko source code: 14473// https://github.com/mozilla/gecko-dev/blob/4e638efc71/layout/style/test/property_database.js 14474var shorthandToLonghand={animation:['animationDelay','animationDirection','animationDuration','animationFillMode','animationIterationCount','animationName','animationPlayState','animationTimingFunction'],background:['backgroundAttachment','backgroundClip','backgroundColor','backgroundImage','backgroundOrigin','backgroundPositionX','backgroundPositionY','backgroundRepeat','backgroundSize'],backgroundPosition:['backgroundPositionX','backgroundPositionY'],border:['borderBottomColor','borderBottomStyle','borderBottomWidth','borderImageOutset','borderImageRepeat','borderImageSlice','borderImageSource','borderImageWidth','borderLeftColor','borderLeftStyle','borderLeftWidth','borderRightColor','borderRightStyle','borderRightWidth','borderTopColor','borderTopStyle','borderTopWidth'],borderBlockEnd:['borderBlockEndColor','borderBlockEndStyle','borderBlockEndWidth'],borderBlockStart:['borderBlockStartColor','borderBlockStartStyle','borderBlockStartWidth'],borderBottom:['borderBottomColor','borderBottomStyle','borderBottomWidth'],borderColor:['borderBottomColor','borderLeftColor','borderRightColor','borderTopColor'],borderImage:['borderImageOutset','borderImageRepeat','borderImageSlice','borderImageSource','borderImageWidth'],borderInlineEnd:['borderInlineEndColor','borderInlineEndStyle','borderInlineEndWidth'],borderInlineStart:['borderInlineStartColor','borderInlineStartStyle','borderInlineStartWidth'],borderLeft:['borderLeftColor','borderLeftStyle','borderLeftWidth'],borderRadius:['borderBottomLeftRadius','borderBottomRightRadius','borderTopLeftRadius','borderTopRightRadius'],borderRight:['borderRightColor','borderRightStyle','borderRightWidth'],borderStyle:['borderBottomStyle','borderLeftStyle','borderRightStyle','borderTopStyle'],borderTop:['borderTopColor','borderTopStyle','borderTopWidth'],borderWidth:['borderBottomWidth','borderLeftWidth','borderRightWidth','borderTopWidth'],columnRule:['columnRuleColor','columnRuleStyle','columnRuleWidth'],columns:['columnCount','columnWidth'],flex:['flexBasis','flexGrow','flexShrink'],flexFlow:['flexDirection','flexWrap'],font:['fontFamily','fontFeatureSettings','fontKerning','fontLanguageOverride','fontSize','fontSizeAdjust','fontStretch','fontStyle','fontVariant','fontVariantAlternates','fontVariantCaps','fontVariantEastAsian','fontVariantLigatures','fontVariantNumeric','fontVariantPosition','fontWeight','lineHeight'],fontVariant:['fontVariantAlternates','fontVariantCaps','fontVariantEastAsian','fontVariantLigatures','fontVariantNumeric','fontVariantPosition'],gap:['columnGap','rowGap'],grid:['gridAutoColumns','gridAutoFlow','gridAutoRows','gridTemplateAreas','gridTemplateColumns','gridTemplateRows'],gridArea:['gridColumnEnd','gridColumnStart','gridRowEnd','gridRowStart'],gridColumn:['gridColumnEnd','gridColumnStart'],gridColumnGap:['columnGap'],gridGap:['columnGap','rowGap'],gridRow:['gridRowEnd','gridRowStart'],gridRowGap:['rowGap'],gridTemplate:['gridTemplateAreas','gridTemplateColumns','gridTemplateRows'],listStyle:['listStyleImage','listStylePosition','listStyleType'],margin:['marginBottom','marginLeft','marginRight','marginTop'],marker:['markerEnd','markerMid','markerStart'],mask:['maskClip','maskComposite','maskImage','maskMode','maskOrigin','maskPositionX','maskPositionY','maskRepeat','maskSize'],maskPosition:['maskPositionX','maskPositionY'],outline:['outlineColor','outlineStyle','outlineWidth'],overflow:['overflowX','overflowY'],padding:['paddingBottom','paddingLeft','paddingRight','paddingTop'],placeContent:['alignContent','justifyContent'],placeItems:['alignItems','justifyItems'],placeSelf:['alignSelf','justifySelf'],textDecoration:['textDecorationColor','textDecorationLine','textDecorationStyle'],textEmphasis:['textEmphasisColor','textEmphasisStyle'],transition:['transitionDelay','transitionDuration','transitionProperty','transitionTimingFunction'],wordWrap:['overflowWrap']};/** 14475 * CSS properties which accept numbers but are not in units of "px". 14476 */var isUnitlessNumber={animationIterationCount:true,borderImageOutset:true,borderImageSlice:true,borderImageWidth:true,boxFlex:true,boxFlexGroup:true,boxOrdinalGroup:true,columnCount:true,columns:true,flex:true,flexGrow:true,flexPositive:true,flexShrink:true,flexNegative:true,flexOrder:true,gridArea:true,gridRow:true,gridRowEnd:true,gridRowSpan:true,gridRowStart:true,gridColumn:true,gridColumnEnd:true,gridColumnSpan:true,gridColumnStart:true,fontWeight:true,lineClamp:true,lineHeight:true,opacity:true,order:true,orphans:true,tabSize:true,widows:true,zIndex:true,zoom:true,// SVG-related properties 14477fillOpacity:true,floodOpacity:true,stopOpacity:true,strokeDasharray:true,strokeDashoffset:true,strokeMiterlimit:true,strokeOpacity:true,strokeWidth:true};/** 14478 * @param {string} prefix vendor-specific prefix, eg: Webkit 14479 * @param {string} key style name, eg: transitionDuration 14480 * @return {string} style name prefixed with `prefix`, properly camelCased, eg: 14481 * WebkitTransitionDuration 14482 */function prefixKey(prefix,key){return prefix+key.charAt(0).toUpperCase()+key.substring(1);}/** 14483 * Support style names that may come passed in prefixed by adding permutations 14484 * of vendor prefixes. 14485 */var prefixes=['Webkit','ms','Moz','O'];// Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an 14486// infinite loop, because it iterates over the newly added props too. 14487Object.keys(isUnitlessNumber).forEach(function(prop){prefixes.forEach(function(prefix){isUnitlessNumber[prefixKey(prefix,prop)]=isUnitlessNumber[prop];});});/** 14488 * Convert a value into the proper css writable value. The style name `name` 14489 * should be logical (no hyphens), as specified 14490 * in `CSSProperty.isUnitlessNumber`. 14491 * 14492 * @param {string} name CSS property name such as `topMargin`. 14493 * @param {*} value CSS property value such as `10px`. 14494 * @return {string} Normalized style value with dimensions applied. 14495 */function dangerousStyleValue(name,value,isCustomProperty){// Note that we've removed escapeTextForBrowser() calls here since the 14496// whole string will be escaped when the attribute is injected into 14497// the markup. If you provide unsafe user data here they can inject 14498// arbitrary CSS which may be problematic (I couldn't repro this): 14499// https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet 14500// http://www.thespanner.co.uk/2007/11/26/ultimate-xss-css-injection/ 14501// This is not an XSS hole but instead a potential CSS injection issue 14502// which has lead to a greater discussion about how we're going to 14503// trust URLs moving forward. See #2115901 14504var isEmpty=value==null||typeof value==='boolean'||value==='';if(isEmpty){return'';}if(!isCustomProperty&&typeof value==='number'&&value!==0&&!(isUnitlessNumber.hasOwnProperty(name)&&isUnitlessNumber[name])){return value+'px';// Presumes implicit 'px' suffix for unitless numbers 14505}return(''+value).trim();}var uppercasePattern=/([A-Z])/g;var msPattern=/^ms-/;/** 14506 * Hyphenates a camelcased CSS property name, for example: 14507 * 14508 * > hyphenateStyleName('backgroundColor') 14509 * < "background-color" 14510 * > hyphenateStyleName('MozTransition') 14511 * < "-moz-transition" 14512 * > hyphenateStyleName('msTransition') 14513 * < "-ms-transition" 14514 * 14515 * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix 14516 * is converted to `-ms-`. 14517 */function hyphenateStyleName(name){return name.replace(uppercasePattern,'-$1').toLowerCase().replace(msPattern,'-ms-');}var warnValidStyle=function(){};{// 'msTransform' is correct, but the other prefixes should be capitalized 14518var badVendoredStyleNamePattern=/^(?:webkit|moz|o)[A-Z]/;var msPattern$1=/^-ms-/;var hyphenPattern=/-(.)/g;// style values shouldn't contain a semicolon 14519var badStyleValueWithSemicolonPattern=/;\s*$/;var warnedStyleNames={};var warnedStyleValues={};var warnedForNaNValue=false;var warnedForInfinityValue=false;var camelize=function(string){return string.replace(hyphenPattern,function(_,character){return character.toUpperCase();});};var warnHyphenatedStyleName=function(name){if(warnedStyleNames.hasOwnProperty(name)&&warnedStyleNames[name]){return;}warnedStyleNames[name]=true;error('Unsupported style property %s. Did you mean %s?',name,// As Andi Smith suggests 14520// (http://www.andismith.com/blog/2012/02/modernizr-prefixed/), an `-ms` prefix 14521// is converted to lowercase `ms`. 14522camelize(name.replace(msPattern$1,'ms-')));};var warnBadVendoredStyleName=function(name){if(warnedStyleNames.hasOwnProperty(name)&&warnedStyleNames[name]){return;}warnedStyleNames[name]=true;error('Unsupported vendor-prefixed style property %s. Did you mean %s?',name,name.charAt(0).toUpperCase()+name.slice(1));};var warnStyleValueWithSemicolon=function(name,value){if(warnedStyleValues.hasOwnProperty(value)&&warnedStyleValues[value]){return;}warnedStyleValues[value]=true;error("Style property values shouldn't contain a semicolon. "+'Try "%s: %s" instead.',name,value.replace(badStyleValueWithSemicolonPattern,''));};var warnStyleValueIsNaN=function(name,value){if(warnedForNaNValue){return;}warnedForNaNValue=true;error('`NaN` is an invalid value for the `%s` css style property.',name);};var warnStyleValueIsInfinity=function(name,value){if(warnedForInfinityValue){return;}warnedForInfinityValue=true;error('`Infinity` is an invalid value for the `%s` css style property.',name);};warnValidStyle=function(name,value){if(name.indexOf('-')>-1){warnHyphenatedStyleName(name);}else if(badVendoredStyleNamePattern.test(name)){warnBadVendoredStyleName(name);}else if(badStyleValueWithSemicolonPattern.test(value)){warnStyleValueWithSemicolon(name,value);}if(typeof value==='number'){if(isNaN(value)){warnStyleValueIsNaN(name,value);}else if(!isFinite(value)){warnStyleValueIsInfinity(name,value);}}};}var warnValidStyle$1=warnValidStyle;/** 14523 * Operations for dealing with CSS properties. 14524 */ /** 14525 * This creates a string that is expected to be equivalent to the style 14526 * attribute generated by server-side rendering. It by-passes warnings and 14527 * security checks so it's not safe to use this value for anything other than 14528 * comparison. It is only used in DEV for SSR validation. 14529 */function createDangerousStringForStyles(styles){{var serialized='';var delimiter='';for(var styleName in styles){if(!styles.hasOwnProperty(styleName)){continue;}var styleValue=styles[styleName];if(styleValue!=null){var isCustomProperty=styleName.indexOf('--')===0;serialized+=delimiter+(isCustomProperty?styleName:hyphenateStyleName(styleName))+':';serialized+=dangerousStyleValue(styleName,styleValue,isCustomProperty);delimiter=';';}}return serialized||null;}}/** 14530 * Sets the value for multiple styles on a node. If a value is specified as 14531 * '' (empty string), the corresponding style property will be unset. 14532 * 14533 * @param {DOMElement} node 14534 * @param {object} styles 14535 */function setValueForStyles(node,styles){var style=node.style;for(var styleName in styles){if(!styles.hasOwnProperty(styleName)){continue;}var isCustomProperty=styleName.indexOf('--')===0;{if(!isCustomProperty){warnValidStyle$1(styleName,styles[styleName]);}}var styleValue=dangerousStyleValue(styleName,styles[styleName],isCustomProperty);if(styleName==='float'){styleName='cssFloat';}if(isCustomProperty){style.setProperty(styleName,styleValue);}else{style[styleName]=styleValue;}}}function isValueEmpty(value){return value==null||typeof value==='boolean'||value==='';}/** 14536 * Given {color: 'red', overflow: 'hidden'} returns { 14537 * color: 'color', 14538 * overflowX: 'overflow', 14539 * overflowY: 'overflow', 14540 * }. This can be read as "the overflowY property was set by the overflow 14541 * shorthand". That is, the values are the property that each was derived from. 14542 */function expandShorthandMap(styles){var expanded={};for(var key in styles){var longhands=shorthandToLonghand[key]||[key];for(var i=0;i<longhands.length;i++){expanded[longhands[i]]=key;}}return expanded;}/** 14543 * When mixing shorthand and longhand property names, we warn during updates if 14544 * we expect an incorrect result to occur. In particular, we warn for: 14545 * 14546 * Updating a shorthand property (longhand gets overwritten): 14547 * {font: 'foo', fontVariant: 'bar'} -> {font: 'baz', fontVariant: 'bar'} 14548 * becomes .style.font = 'baz' 14549 * Removing a shorthand property (longhand gets lost too): 14550 * {font: 'foo', fontVariant: 'bar'} -> {fontVariant: 'bar'} 14551 * becomes .style.font = '' 14552 * Removing a longhand property (should revert to shorthand; doesn't): 14553 * {font: 'foo', fontVariant: 'bar'} -> {font: 'foo'} 14554 * becomes .style.fontVariant = '' 14555 */function validateShorthandPropertyCollisionInDev(styleUpdates,nextStyles){{if(!nextStyles){return;}var expandedUpdates=expandShorthandMap(styleUpdates);var expandedStyles=expandShorthandMap(nextStyles);var warnedAbout={};for(var key in expandedUpdates){var originalKey=expandedUpdates[key];var correctOriginalKey=expandedStyles[key];if(correctOriginalKey&&originalKey!==correctOriginalKey){var warningKey=originalKey+','+correctOriginalKey;if(warnedAbout[warningKey]){continue;}warnedAbout[warningKey]=true;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);}}}}// For HTML, certain tags should omit their close tag. We keep a whitelist for 14556// those special-case tags. 14557var omittedCloseTags={area:true,base:true,br:true,col:true,embed:true,hr:true,img:true,input:true,keygen:true,link:true,meta:true,param:true,source:true,track:true,wbr:true// NOTE: menuitem's close tag should be omitted, but that causes problems. 14558};// `omittedCloseTags` except that `menuitem` should still have its closing tag. 14559var voidElementTags=_assign({menuitem:true},omittedCloseTags);var HTML='__html';var ReactDebugCurrentFrame$3=null;{ReactDebugCurrentFrame$3=ReactSharedInternals.ReactDebugCurrentFrame;}function assertValidProps(tag,props){if(!props){return;}// Note the use of `==` which checks for null or undefined. 14560if(voidElementTags[tag]){if(!(props.children==null&&props.dangerouslySetInnerHTML==null)){{throw Error(tag+" is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`."+ReactDebugCurrentFrame$3.getStackAddendum());}}}if(props.dangerouslySetInnerHTML!=null){if(!(props.children==null)){{throw Error("Can only set one of `children` or `props.dangerouslySetInnerHTML`.");}}if(!(typeof props.dangerouslySetInnerHTML==='object'&&HTML in props.dangerouslySetInnerHTML)){{throw Error("`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://fb.me/react-invariant-dangerously-set-inner-html for more information.");}}}{if(!props.suppressContentEditableWarning&&props.contentEditable&&props.children!=null){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.');}}if(!(props.style==null||typeof props.style==='object')){{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());}}}function isCustomComponent(tagName,props){if(tagName.indexOf('-')===-1){return typeof props.is==='string';}switch(tagName){// These are reserved SVG and MathML elements. 14561// We don't mind this whitelist too much because we expect it to never grow. 14562// The alternative is to track the namespace in a few places which is convoluted. 14563// https://w3c.github.io/webcomponents/spec/custom/#custom-elements-core-concepts 14564case'annotation-xml':case'color-profile':case'font-face':case'font-face-src':case'font-face-uri':case'font-face-format':case'font-face-name':case'missing-glyph':return false;default:return true;}}// When adding attributes to the HTML or SVG whitelist, be sure to 14565// also add them to this module to ensure casing and incorrect name 14566// warnings. 14567var possibleStandardNames={// HTML 14568accept:'accept',acceptcharset:'acceptCharset','accept-charset':'acceptCharset',accesskey:'accessKey',action:'action',allowfullscreen:'allowFullScreen',alt:'alt',as:'as',async:'async',autocapitalize:'autoCapitalize',autocomplete:'autoComplete',autocorrect:'autoCorrect',autofocus:'autoFocus',autoplay:'autoPlay',autosave:'autoSave',capture:'capture',cellpadding:'cellPadding',cellspacing:'cellSpacing',challenge:'challenge',charset:'charSet',checked:'checked',children:'children',cite:'cite',class:'className',classid:'classID',classname:'className',cols:'cols',colspan:'colSpan',content:'content',contenteditable:'contentEditable',contextmenu:'contextMenu',controls:'controls',controlslist:'controlsList',coords:'coords',crossorigin:'crossOrigin',dangerouslysetinnerhtml:'dangerouslySetInnerHTML',data:'data',datetime:'dateTime',default:'default',defaultchecked:'defaultChecked',defaultvalue:'defaultValue',defer:'defer',dir:'dir',disabled:'disabled',disablepictureinpicture:'disablePictureInPicture',download:'download',draggable:'draggable',enctype:'encType',for:'htmlFor',form:'form',formmethod:'formMethod',formaction:'formAction',formenctype:'formEncType',formnovalidate:'formNoValidate',formtarget:'formTarget',frameborder:'frameBorder',headers:'headers',height:'height',hidden:'hidden',high:'high',href:'href',hreflang:'hrefLang',htmlfor:'htmlFor',httpequiv:'httpEquiv','http-equiv':'httpEquiv',icon:'icon',id:'id',innerhtml:'innerHTML',inputmode:'inputMode',integrity:'integrity',is:'is',itemid:'itemID',itemprop:'itemProp',itemref:'itemRef',itemscope:'itemScope',itemtype:'itemType',keyparams:'keyParams',keytype:'keyType',kind:'kind',label:'label',lang:'lang',list:'list',loop:'loop',low:'low',manifest:'manifest',marginwidth:'marginWidth',marginheight:'marginHeight',max:'max',maxlength:'maxLength',media:'media',mediagroup:'mediaGroup',method:'method',min:'min',minlength:'minLength',multiple:'multiple',muted:'muted',name:'name',nomodule:'noModule',nonce:'nonce',novalidate:'noValidate',open:'open',optimum:'optimum',pattern:'pattern',placeholder:'placeholder',playsinline:'playsInline',poster:'poster',preload:'preload',profile:'profile',radiogroup:'radioGroup',readonly:'readOnly',referrerpolicy:'referrerPolicy',rel:'rel',required:'required',reversed:'reversed',role:'role',rows:'rows',rowspan:'rowSpan',sandbox:'sandbox',scope:'scope',scoped:'scoped',scrolling:'scrolling',seamless:'seamless',selected:'selected',shape:'shape',size:'size',sizes:'sizes',span:'span',spellcheck:'spellCheck',src:'src',srcdoc:'srcDoc',srclang:'srcLang',srcset:'srcSet',start:'start',step:'step',style:'style',summary:'summary',tabindex:'tabIndex',target:'target',title:'title',type:'type',usemap:'useMap',value:'value',width:'width',wmode:'wmode',wrap:'wrap',// SVG 14569about:'about',accentheight:'accentHeight','accent-height':'accentHeight',accumulate:'accumulate',additive:'additive',alignmentbaseline:'alignmentBaseline','alignment-baseline':'alignmentBaseline',allowreorder:'allowReorder',alphabetic:'alphabetic',amplitude:'amplitude',arabicform:'arabicForm','arabic-form':'arabicForm',ascent:'ascent',attributename:'attributeName',attributetype:'attributeType',autoreverse:'autoReverse',azimuth:'azimuth',basefrequency:'baseFrequency',baselineshift:'baselineShift','baseline-shift':'baselineShift',baseprofile:'baseProfile',bbox:'bbox',begin:'begin',bias:'bias',by:'by',calcmode:'calcMode',capheight:'capHeight','cap-height':'capHeight',clip:'clip',clippath:'clipPath','clip-path':'clipPath',clippathunits:'clipPathUnits',cliprule:'clipRule','clip-rule':'clipRule',color:'color',colorinterpolation:'colorInterpolation','color-interpolation':'colorInterpolation',colorinterpolationfilters:'colorInterpolationFilters','color-interpolation-filters':'colorInterpolationFilters',colorprofile:'colorProfile','color-profile':'colorProfile',colorrendering:'colorRendering','color-rendering':'colorRendering',contentscripttype:'contentScriptType',contentstyletype:'contentStyleType',cursor:'cursor',cx:'cx',cy:'cy',d:'d',datatype:'datatype',decelerate:'decelerate',descent:'descent',diffuseconstant:'diffuseConstant',direction:'direction',display:'display',divisor:'divisor',dominantbaseline:'dominantBaseline','dominant-baseline':'dominantBaseline',dur:'dur',dx:'dx',dy:'dy',edgemode:'edgeMode',elevation:'elevation',enablebackground:'enableBackground','enable-background':'enableBackground',end:'end',exponent:'exponent',externalresourcesrequired:'externalResourcesRequired',fill:'fill',fillopacity:'fillOpacity','fill-opacity':'fillOpacity',fillrule:'fillRule','fill-rule':'fillRule',filter:'filter',filterres:'filterRes',filterunits:'filterUnits',floodopacity:'floodOpacity','flood-opacity':'floodOpacity',floodcolor:'floodColor','flood-color':'floodColor',focusable:'focusable',fontfamily:'fontFamily','font-family':'fontFamily',fontsize:'fontSize','font-size':'fontSize',fontsizeadjust:'fontSizeAdjust','font-size-adjust':'fontSizeAdjust',fontstretch:'fontStretch','font-stretch':'fontStretch',fontstyle:'fontStyle','font-style':'fontStyle',fontvariant:'fontVariant','font-variant':'fontVariant',fontweight:'fontWeight','font-weight':'fontWeight',format:'format',from:'from',fx:'fx',fy:'fy',g1:'g1',g2:'g2',glyphname:'glyphName','glyph-name':'glyphName',glyphorientationhorizontal:'glyphOrientationHorizontal','glyph-orientation-horizontal':'glyphOrientationHorizontal',glyphorientationvertical:'glyphOrientationVertical','glyph-orientation-vertical':'glyphOrientationVertical',glyphref:'glyphRef',gradienttransform:'gradientTransform',gradientunits:'gradientUnits',hanging:'hanging',horizadvx:'horizAdvX','horiz-adv-x':'horizAdvX',horizoriginx:'horizOriginX','horiz-origin-x':'horizOriginX',ideographic:'ideographic',imagerendering:'imageRendering','image-rendering':'imageRendering',in2:'in2',in:'in',inlist:'inlist',intercept:'intercept',k1:'k1',k2:'k2',k3:'k3',k4:'k4',k:'k',kernelmatrix:'kernelMatrix',kernelunitlength:'kernelUnitLength',kerning:'kerning',keypoints:'keyPoints',keysplines:'keySplines',keytimes:'keyTimes',lengthadjust:'lengthAdjust',letterspacing:'letterSpacing','letter-spacing':'letterSpacing',lightingcolor:'lightingColor','lighting-color':'lightingColor',limitingconeangle:'limitingConeAngle',local:'local',markerend:'markerEnd','marker-end':'markerEnd',markerheight:'markerHeight',markermid:'markerMid','marker-mid':'markerMid',markerstart:'markerStart','marker-start':'markerStart',markerunits:'markerUnits',markerwidth:'markerWidth',mask:'mask',maskcontentunits:'maskContentUnits',maskunits:'maskUnits',mathematical:'mathematical',mode:'mode',numoctaves:'numOctaves',offset:'offset',opacity:'opacity',operator:'operator',order:'order',orient:'orient',orientation:'orientation',origin:'origin',overflow:'overflow',overlineposition:'overlinePosition','overline-position':'overlinePosition',overlinethickness:'overlineThickness','overline-thickness':'overlineThickness',paintorder:'paintOrder','paint-order':'paintOrder',panose1:'panose1','panose-1':'panose1',pathlength:'pathLength',patterncontentunits:'patternContentUnits',patterntransform:'patternTransform',patternunits:'patternUnits',pointerevents:'pointerEvents','pointer-events':'pointerEvents',points:'points',pointsatx:'pointsAtX',pointsaty:'pointsAtY',pointsatz:'pointsAtZ',prefix:'prefix',preservealpha:'preserveAlpha',preserveaspectratio:'preserveAspectRatio',primitiveunits:'primitiveUnits',property:'property',r:'r',radius:'radius',refx:'refX',refy:'refY',renderingintent:'renderingIntent','rendering-intent':'renderingIntent',repeatcount:'repeatCount',repeatdur:'repeatDur',requiredextensions:'requiredExtensions',requiredfeatures:'requiredFeatures',resource:'resource',restart:'restart',result:'result',results:'results',rotate:'rotate',rx:'rx',ry:'ry',scale:'scale',security:'security',seed:'seed',shaperendering:'shapeRendering','shape-rendering':'shapeRendering',slope:'slope',spacing:'spacing',specularconstant:'specularConstant',specularexponent:'specularExponent',speed:'speed',spreadmethod:'spreadMethod',startoffset:'startOffset',stddeviation:'stdDeviation',stemh:'stemh',stemv:'stemv',stitchtiles:'stitchTiles',stopcolor:'stopColor','stop-color':'stopColor',stopopacity:'stopOpacity','stop-opacity':'stopOpacity',strikethroughposition:'strikethroughPosition','strikethrough-position':'strikethroughPosition',strikethroughthickness:'strikethroughThickness','strikethrough-thickness':'strikethroughThickness',string:'string',stroke:'stroke',strokedasharray:'strokeDasharray','stroke-dasharray':'strokeDasharray',strokedashoffset:'strokeDashoffset','stroke-dashoffset':'strokeDashoffset',strokelinecap:'strokeLinecap','stroke-linecap':'strokeLinecap',strokelinejoin:'strokeLinejoin','stroke-linejoin':'strokeLinejoin',strokemiterlimit:'strokeMiterlimit','stroke-miterlimit':'strokeMiterlimit',strokewidth:'strokeWidth','stroke-width':'strokeWidth',strokeopacity:'strokeOpacity','stroke-opacity':'strokeOpacity',suppresscontenteditablewarning:'suppressContentEditableWarning',suppresshydrationwarning:'suppressHydrationWarning',surfacescale:'surfaceScale',systemlanguage:'systemLanguage',tablevalues:'tableValues',targetx:'targetX',targety:'targetY',textanchor:'textAnchor','text-anchor':'textAnchor',textdecoration:'textDecoration','text-decoration':'textDecoration',textlength:'textLength',textrendering:'textRendering','text-rendering':'textRendering',to:'to',transform:'transform',typeof:'typeof',u1:'u1',u2:'u2',underlineposition:'underlinePosition','underline-position':'underlinePosition',underlinethickness:'underlineThickness','underline-thickness':'underlineThickness',unicode:'unicode',unicodebidi:'unicodeBidi','unicode-bidi':'unicodeBidi',unicoderange:'unicodeRange','unicode-range':'unicodeRange',unitsperem:'unitsPerEm','units-per-em':'unitsPerEm',unselectable:'unselectable',valphabetic:'vAlphabetic','v-alphabetic':'vAlphabetic',values:'values',vectoreffect:'vectorEffect','vector-effect':'vectorEffect',version:'version',vertadvy:'vertAdvY','vert-adv-y':'vertAdvY',vertoriginx:'vertOriginX','vert-origin-x':'vertOriginX',vertoriginy:'vertOriginY','vert-origin-y':'vertOriginY',vhanging:'vHanging','v-hanging':'vHanging',videographic:'vIdeographic','v-ideographic':'vIdeographic',viewbox:'viewBox',viewtarget:'viewTarget',visibility:'visibility',vmathematical:'vMathematical','v-mathematical':'vMathematical',vocab:'vocab',widths:'widths',wordspacing:'wordSpacing','word-spacing':'wordSpacing',writingmode:'writingMode','writing-mode':'writingMode',x1:'x1',x2:'x2',x:'x',xchannelselector:'xChannelSelector',xheight:'xHeight','x-height':'xHeight',xlinkactuate:'xlinkActuate','xlink:actuate':'xlinkActuate',xlinkarcrole:'xlinkArcrole','xlink:arcrole':'xlinkArcrole',xlinkhref:'xlinkHref','xlink:href':'xlinkHref',xlinkrole:'xlinkRole','xlink:role':'xlinkRole',xlinkshow:'xlinkShow','xlink:show':'xlinkShow',xlinktitle:'xlinkTitle','xlink:title':'xlinkTitle',xlinktype:'xlinkType','xlink:type':'xlinkType',xmlbase:'xmlBase','xml:base':'xmlBase',xmllang:'xmlLang','xml:lang':'xmlLang',xmlns:'xmlns','xml:space':'xmlSpace',xmlnsxlink:'xmlnsXlink','xmlns:xlink':'xmlnsXlink',xmlspace:'xmlSpace',y1:'y1',y2:'y2',y:'y',ychannelselector:'yChannelSelector',z:'z',zoomandpan:'zoomAndPan'};var ariaProperties={'aria-current':0,// state 14570'aria-details':0,'aria-disabled':0,// state 14571'aria-hidden':0,// state 14572'aria-invalid':0,// state 14573'aria-keyshortcuts':0,'aria-label':0,'aria-roledescription':0,// Widget Attributes 14574'aria-autocomplete':0,'aria-checked':0,'aria-expanded':0,'aria-haspopup':0,'aria-level':0,'aria-modal':0,'aria-multiline':0,'aria-multiselectable':0,'aria-orientation':0,'aria-placeholder':0,'aria-pressed':0,'aria-readonly':0,'aria-required':0,'aria-selected':0,'aria-sort':0,'aria-valuemax':0,'aria-valuemin':0,'aria-valuenow':0,'aria-valuetext':0,// Live Region Attributes 14575'aria-atomic':0,'aria-busy':0,'aria-live':0,'aria-relevant':0,// Drag-and-Drop Attributes 14576'aria-dropeffect':0,'aria-grabbed':0,// Relationship Attributes 14577'aria-activedescendant':0,'aria-colcount':0,'aria-colindex':0,'aria-colspan':0,'aria-controls':0,'aria-describedby':0,'aria-errormessage':0,'aria-flowto':0,'aria-labelledby':0,'aria-owns':0,'aria-posinset':0,'aria-rowcount':0,'aria-rowindex':0,'aria-rowspan':0,'aria-setsize':0};var warnedProperties={};var rARIA=new RegExp('^(aria)-['+ATTRIBUTE_NAME_CHAR+']*$');var rARIACamel=new RegExp('^(aria)[A-Z]['+ATTRIBUTE_NAME_CHAR+']*$');var hasOwnProperty$1=Object.prototype.hasOwnProperty;function validateProperty(tagName,name){{if(hasOwnProperty$1.call(warnedProperties,name)&&warnedProperties[name]){return true;}if(rARIACamel.test(name)){var ariaName='aria-'+name.slice(4).toLowerCase();var correctName=ariaProperties.hasOwnProperty(ariaName)?ariaName:null;// If this is an aria-* attribute, but is not listed in the known DOM 14578// DOM properties, then it is an invalid aria-* attribute. 14579if(correctName==null){error('Invalid ARIA attribute `%s`. ARIA attributes follow the pattern aria-* and must be lowercase.',name);warnedProperties[name]=true;return true;}// aria-* attributes should be lowercase; suggest the lowercase version. 14580if(name!==correctName){error('Invalid ARIA attribute `%s`. Did you mean `%s`?',name,correctName);warnedProperties[name]=true;return true;}}if(rARIA.test(name)){var lowerCasedName=name.toLowerCase();var standardName=ariaProperties.hasOwnProperty(lowerCasedName)?lowerCasedName:null;// If this is an aria-* attribute, but is not listed in the known DOM 14581// DOM properties, then it is an invalid aria-* attribute. 14582if(standardName==null){warnedProperties[name]=true;return false;}// aria-* attributes should be lowercase; suggest the lowercase version. 14583if(name!==standardName){error('Unknown ARIA attribute `%s`. Did you mean `%s`?',name,standardName);warnedProperties[name]=true;return true;}}}return true;}function warnInvalidARIAProps(type,props){{var invalidProps=[];for(var key in props){var isValid=validateProperty(type,key);if(!isValid){invalidProps.push(key);}}var unknownPropString=invalidProps.map(function(prop){return'`'+prop+'`';}).join(', ');if(invalidProps.length===1){error('Invalid aria prop %s on <%s> tag. '+'For details, see https://fb.me/invalid-aria-prop',unknownPropString,type);}else if(invalidProps.length>1){error('Invalid aria props %s on <%s> tag. '+'For details, see https://fb.me/invalid-aria-prop',unknownPropString,type);}}}function validateProperties(type,props){if(isCustomComponent(type,props)){return;}warnInvalidARIAProps(type,props);}var didWarnValueNull=false;function validateProperties$1(type,props){{if(type!=='input'&&type!=='textarea'&&type!=='select'){return;}if(props!=null&&props.value===null&&!didWarnValueNull){didWarnValueNull=true;if(type==='select'&&props.multiple){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);}else{error('`value` prop on `%s` should not be null. '+'Consider using an empty string to clear the component or `undefined` '+'for uncontrolled components.',type);}}}}var validateProperty$1=function(){};{var warnedProperties$1={};var _hasOwnProperty=Object.prototype.hasOwnProperty;var EVENT_NAME_REGEX=/^on./;var INVALID_EVENT_NAME_REGEX=/^on[^A-Z]/;var rARIA$1=new RegExp('^(aria)-['+ATTRIBUTE_NAME_CHAR+']*$');var rARIACamel$1=new RegExp('^(aria)[A-Z]['+ATTRIBUTE_NAME_CHAR+']*$');validateProperty$1=function(tagName,name,value,canUseEventSystem){if(_hasOwnProperty.call(warnedProperties$1,name)&&warnedProperties$1[name]){return true;}var lowerCasedName=name.toLowerCase();if(lowerCasedName==='onfocusin'||lowerCasedName==='onfocusout'){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.');warnedProperties$1[name]=true;return true;}// We can't rely on the event system being injected on the server. 14584if(canUseEventSystem){if(registrationNameModules.hasOwnProperty(name)){return true;}var registrationName=possibleRegistrationNames.hasOwnProperty(lowerCasedName)?possibleRegistrationNames[lowerCasedName]:null;if(registrationName!=null){error('Invalid event handler property `%s`. Did you mean `%s`?',name,registrationName);warnedProperties$1[name]=true;return true;}if(EVENT_NAME_REGEX.test(name)){error('Unknown event handler property `%s`. It will be ignored.',name);warnedProperties$1[name]=true;return true;}}else if(EVENT_NAME_REGEX.test(name)){// If no event plugins have been injected, we are in a server environment. 14585// So we can't tell if the event name is correct for sure, but we can filter 14586// out known bad ones like `onclick`. We can't suggest a specific replacement though. 14587if(INVALID_EVENT_NAME_REGEX.test(name)){error('Invalid event handler property `%s`. '+'React events use the camelCase naming convention, for example `onClick`.',name);}warnedProperties$1[name]=true;return true;}// Let the ARIA attribute hook validate ARIA attributes 14588if(rARIA$1.test(name)||rARIACamel$1.test(name)){return true;}if(lowerCasedName==='innerhtml'){error('Directly setting property `innerHTML` is not permitted. '+'For more information, lookup documentation on `dangerouslySetInnerHTML`.');warnedProperties$1[name]=true;return true;}if(lowerCasedName==='aria'){error('The `aria` attribute is reserved for future use in React. '+'Pass individual `aria-` attributes instead.');warnedProperties$1[name]=true;return true;}if(lowerCasedName==='is'&&value!==null&&value!==undefined&&typeof value!=='string'){error('Received a `%s` for a string attribute `is`. If this is expected, cast '+'the value to a string.',typeof value);warnedProperties$1[name]=true;return true;}if(typeof value==='number'&&isNaN(value)){error('Received NaN for the `%s` attribute. If this is expected, cast '+'the value to a string.',name);warnedProperties$1[name]=true;return true;}var propertyInfo=getPropertyInfo(name);var isReserved=propertyInfo!==null&&propertyInfo.type===RESERVED;// Known attributes should match the casing specified in the property config. 14589if(possibleStandardNames.hasOwnProperty(lowerCasedName)){var standardName=possibleStandardNames[lowerCasedName];if(standardName!==name){error('Invalid DOM property `%s`. Did you mean `%s`?',name,standardName);warnedProperties$1[name]=true;return true;}}else if(!isReserved&&name!==lowerCasedName){// Unknown attributes should have lowercase casing since that's how they 14590// will be cased anyway with server rendering. 14591error('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);warnedProperties$1[name]=true;return true;}if(typeof value==='boolean'&&shouldRemoveAttributeWithWarning(name,value,propertyInfo,false)){if(value){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);}else{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);}warnedProperties$1[name]=true;return true;}// Now that we've validated casing, do not validate 14592// data types for reserved props 14593if(isReserved){return true;}// Warn when a known attribute is a bad type 14594if(shouldRemoveAttributeWithWarning(name,value,propertyInfo,false)){warnedProperties$1[name]=true;return false;}// Warn when passing the strings 'false' or 'true' into a boolean prop 14595if((value==='false'||value==='true')&&propertyInfo!==null&&propertyInfo.type===BOOLEAN){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);warnedProperties$1[name]=true;return true;}return true;};}var warnUnknownProperties=function(type,props,canUseEventSystem){{var unknownProps=[];for(var key in props){var isValid=validateProperty$1(type,key,props[key],canUseEventSystem);if(!isValid){unknownProps.push(key);}}var unknownPropString=unknownProps.map(function(prop){return'`'+prop+'`';}).join(', ');if(unknownProps.length===1){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);}else if(unknownProps.length>1){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);}}};function validateProperties$2(type,props,canUseEventSystem){if(isCustomComponent(type,props)){return;}warnUnknownProperties(type,props,canUseEventSystem);}var didWarnInvalidHydration=false;var DANGEROUSLY_SET_INNER_HTML='dangerouslySetInnerHTML';var SUPPRESS_CONTENT_EDITABLE_WARNING='suppressContentEditableWarning';var SUPPRESS_HYDRATION_WARNING='suppressHydrationWarning';var AUTOFOCUS='autoFocus';var CHILDREN='children';var STYLE='style';var HTML$1='__html';var HTML_NAMESPACE$1=Namespaces.html;var warnedUnknownTags;var suppressHydrationWarning;var validatePropertiesInDevelopment;var warnForTextDifference;var warnForPropDifference;var warnForExtraAttributes;var warnForInvalidEventListener;var canDiffStyleForHydrationWarning;var normalizeMarkupForTextOrAttribute;var normalizeHTML;{warnedUnknownTags={// Chrome is the only major browser not shipping <time>. But as of July 14596// 2017 it intends to ship it due to widespread usage. We intentionally 14597// *don't* warn for <time> even if it's unrecognized by Chrome because 14598// it soon will be, and many apps have been using it anyway. 14599time:true,// There are working polyfills for <dialog>. Let people use it. 14600dialog:true,// Electron ships a custom <webview> tag to display external web content in 14601// an isolated frame and process. 14602// This tag is not present in non Electron environments such as JSDom which 14603// is often used for testing purposes. 14604// @see https://electronjs.org/docs/api/webview-tag 14605webview:true};validatePropertiesInDevelopment=function(type,props){validateProperties(type,props);validateProperties$1(type,props);validateProperties$2(type,props,/* canUseEventSystem */true);};// IE 11 parses & normalizes the style attribute as opposed to other 14606// browsers. It adds spaces and sorts the properties in some 14607// non-alphabetical order. Handling that would require sorting CSS 14608// properties in the client & server versions or applying 14609// `expectedStyle` to a temporary DOM node to read its `style` attribute 14610// normalized. Since it only affects IE, we're skipping style warnings 14611// in that browser completely in favor of doing all that work. 14612// See https://github.com/facebook/react/issues/11807 14613canDiffStyleForHydrationWarning=canUseDOM&&!document.documentMode;// HTML parsing normalizes CR and CRLF to LF. 14614// It also can turn \u0000 into \uFFFD inside attributes. 14615// https://www.w3.org/TR/html5/single-page.html#preprocessing-the-input-stream 14616// If we have a mismatch, it might be caused by that. 14617// We will still patch up in this case but not fire the warning. 14618var NORMALIZE_NEWLINES_REGEX=/\r\n?/g;var NORMALIZE_NULL_AND_REPLACEMENT_REGEX=/\u0000|\uFFFD/g;normalizeMarkupForTextOrAttribute=function(markup){var markupString=typeof markup==='string'?markup:''+markup;return markupString.replace(NORMALIZE_NEWLINES_REGEX,'\n').replace(NORMALIZE_NULL_AND_REPLACEMENT_REGEX,'');};warnForTextDifference=function(serverText,clientText){if(didWarnInvalidHydration){return;}var normalizedClientText=normalizeMarkupForTextOrAttribute(clientText);var normalizedServerText=normalizeMarkupForTextOrAttribute(serverText);if(normalizedServerText===normalizedClientText){return;}didWarnInvalidHydration=true;error('Text content did not match. Server: "%s" Client: "%s"',normalizedServerText,normalizedClientText);};warnForPropDifference=function(propName,serverValue,clientValue){if(didWarnInvalidHydration){return;}var normalizedClientValue=normalizeMarkupForTextOrAttribute(clientValue);var normalizedServerValue=normalizeMarkupForTextOrAttribute(serverValue);if(normalizedServerValue===normalizedClientValue){return;}didWarnInvalidHydration=true;error('Prop `%s` did not match. Server: %s Client: %s',propName,JSON.stringify(normalizedServerValue),JSON.stringify(normalizedClientValue));};warnForExtraAttributes=function(attributeNames){if(didWarnInvalidHydration){return;}didWarnInvalidHydration=true;var names=[];attributeNames.forEach(function(name){names.push(name);});error('Extra attributes from the server: %s',names);};warnForInvalidEventListener=function(registrationName,listener){if(listener===false){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);}else{error('Expected `%s` listener to be a function, instead got a value of `%s` type.',registrationName,typeof listener);}};// Parse the HTML and read it back to normalize the HTML string so that it 14619// can be used for comparison. 14620normalizeHTML=function(parent,html){// We could have created a separate document here to avoid 14621// re-initializing custom elements if they exist. But this breaks 14622// how <noscript> is being handled. So we use the same document. 14623// See the discussion in https://github.com/facebook/react/pull/11157. 14624var testElement=parent.namespaceURI===HTML_NAMESPACE$1?parent.ownerDocument.createElement(parent.tagName):parent.ownerDocument.createElementNS(parent.namespaceURI,parent.tagName);testElement.innerHTML=html;return testElement.innerHTML;};}function ensureListeningTo(rootContainerElement,registrationName){var isDocumentOrFragment=rootContainerElement.nodeType===DOCUMENT_NODE||rootContainerElement.nodeType===DOCUMENT_FRAGMENT_NODE;var doc=isDocumentOrFragment?rootContainerElement:rootContainerElement.ownerDocument;legacyListenToEvent(registrationName,doc);}function getOwnerDocumentFromRootContainer(rootContainerElement){return rootContainerElement.nodeType===DOCUMENT_NODE?rootContainerElement:rootContainerElement.ownerDocument;}function noop(){}function trapClickOnNonInteractiveElement(node){// Mobile Safari does not fire properly bubble click events on 14625// non-interactive elements, which means delegated click listeners do not 14626// fire. The workaround for this bug involves attaching an empty click 14627// listener on the target node. 14628// http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html 14629// Just set it using the onclick property so that we don't have to manage any 14630// bookkeeping for it. Not sure if we need to clear it when the listener is 14631// removed. 14632// TODO: Only do this for the relevant Safaris maybe? 14633node.onclick=noop;}function setInitialDOMProperties(tag,domElement,rootContainerElement,nextProps,isCustomComponentTag){for(var propKey in nextProps){if(!nextProps.hasOwnProperty(propKey)){continue;}var nextProp=nextProps[propKey];if(propKey===STYLE){{if(nextProp){// Freeze the next style object so that we can assume it won't be 14634// mutated. We have already warned for this in the past. 14635Object.freeze(nextProp);}}// Relies on `updateStylesByID` not mutating `styleUpdates`. 14636setValueForStyles(domElement,nextProp);}else if(propKey===DANGEROUSLY_SET_INNER_HTML){var nextHtml=nextProp?nextProp[HTML$1]:undefined;if(nextHtml!=null){setInnerHTML(domElement,nextHtml);}}else if(propKey===CHILDREN){if(typeof nextProp==='string'){// Avoid setting initial textContent when the text is empty. In IE11 setting 14637// textContent on a <textarea> will cause the placeholder to not 14638// show within the <textarea> until it has been focused and blurred again. 14639// https://github.com/facebook/react/issues/6731#issuecomment-254874553 14640var canSetTextContent=tag!=='textarea'||nextProp!=='';if(canSetTextContent){setTextContent(domElement,nextProp);}}else if(typeof nextProp==='number'){setTextContent(domElement,''+nextProp);}}else if(propKey===SUPPRESS_CONTENT_EDITABLE_WARNING||propKey===SUPPRESS_HYDRATION_WARNING);else if(propKey===AUTOFOCUS);else if(registrationNameModules.hasOwnProperty(propKey)){if(nextProp!=null){if(typeof nextProp!=='function'){warnForInvalidEventListener(propKey,nextProp);}ensureListeningTo(rootContainerElement,propKey);}}else if(nextProp!=null){setValueForProperty(domElement,propKey,nextProp,isCustomComponentTag);}}}function updateDOMProperties(domElement,updatePayload,wasCustomComponentTag,isCustomComponentTag){// TODO: Handle wasCustomComponentTag 14641for(var i=0;i<updatePayload.length;i+=2){var propKey=updatePayload[i];var propValue=updatePayload[i+1];if(propKey===STYLE){setValueForStyles(domElement,propValue);}else if(propKey===DANGEROUSLY_SET_INNER_HTML){setInnerHTML(domElement,propValue);}else if(propKey===CHILDREN){setTextContent(domElement,propValue);}else{setValueForProperty(domElement,propKey,propValue,isCustomComponentTag);}}}function createElement(type,props,rootContainerElement,parentNamespace){var isCustomComponentTag;// We create tags in the namespace of their parent container, except HTML 14642// tags get no namespace. 14643var ownerDocument=getOwnerDocumentFromRootContainer(rootContainerElement);var domElement;var namespaceURI=parentNamespace;if(namespaceURI===HTML_NAMESPACE$1){namespaceURI=getIntrinsicNamespace(type);}if(namespaceURI===HTML_NAMESPACE$1){{isCustomComponentTag=isCustomComponent(type,props);// Should this check be gated by parent namespace? Not sure we want to 14644// allow <SVG> or <mATH>. 14645if(!isCustomComponentTag&&type!==type.toLowerCase()){error('<%s /> is using incorrect casing. '+'Use PascalCase for React components, '+'or lowercase for HTML elements.',type);}}if(type==='script'){// Create the script via .innerHTML so its "parser-inserted" flag is 14646// set to true and it does not execute 14647var div=ownerDocument.createElement('div');div.innerHTML='<script><'+'/script>';// eslint-disable-line 14648// This is guaranteed to yield a script element. 14649var firstChild=div.firstChild;domElement=div.removeChild(firstChild);}else if(typeof props.is==='string'){// $FlowIssue `createElement` should be updated for Web Components 14650domElement=ownerDocument.createElement(type,{is:props.is});}else{// Separate else branch instead of using `props.is || undefined` above because of a Firefox bug. 14651// See discussion in https://github.com/facebook/react/pull/6896 14652// and discussion in https://bugzilla.mozilla.org/show_bug.cgi?id=1276240 14653domElement=ownerDocument.createElement(type);// Normally attributes are assigned in `setInitialDOMProperties`, however the `multiple` and `size` 14654// attributes on `select`s needs to be added before `option`s are inserted. 14655// This prevents: 14656// - a bug where the `select` does not scroll to the correct option because singular 14657// `select` elements automatically pick the first item #13222 14658// - a bug where the `select` set the first item as selected despite the `size` attribute #14239 14659// See https://github.com/facebook/react/issues/13222 14660// and https://github.com/facebook/react/issues/14239 14661if(type==='select'){var node=domElement;if(props.multiple){node.multiple=true;}else if(props.size){// Setting a size greater than 1 causes a select to behave like `multiple=true`, where 14662// it is possible that no option is selected. 14663// 14664// This is only necessary when a select in "single selection mode". 14665node.size=props.size;}}}}else{domElement=ownerDocument.createElementNS(namespaceURI,type);}{if(namespaceURI===HTML_NAMESPACE$1){if(!isCustomComponentTag&&Object.prototype.toString.call(domElement)==='[object HTMLUnknownElement]'&&!Object.prototype.hasOwnProperty.call(warnedUnknownTags,type)){warnedUnknownTags[type]=true;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);}}}return domElement;}function createTextNode(text,rootContainerElement){return getOwnerDocumentFromRootContainer(rootContainerElement).createTextNode(text);}function setInitialProperties(domElement,tag,rawProps,rootContainerElement){var isCustomComponentTag=isCustomComponent(tag,rawProps);{validatePropertiesInDevelopment(tag,rawProps);}// TODO: Make sure that we check isMounted before firing any of these events. 14666var props;switch(tag){case'iframe':case'object':case'embed':trapBubbledEvent(TOP_LOAD,domElement);props=rawProps;break;case'video':case'audio':// Create listener for each media event 14667for(var i=0;i<mediaEventTypes.length;i++){trapBubbledEvent(mediaEventTypes[i],domElement);}props=rawProps;break;case'source':trapBubbledEvent(TOP_ERROR,domElement);props=rawProps;break;case'img':case'image':case'link':trapBubbledEvent(TOP_ERROR,domElement);trapBubbledEvent(TOP_LOAD,domElement);props=rawProps;break;case'form':trapBubbledEvent(TOP_RESET,domElement);trapBubbledEvent(TOP_SUBMIT,domElement);props=rawProps;break;case'details':trapBubbledEvent(TOP_TOGGLE,domElement);props=rawProps;break;case'input':initWrapperState(domElement,rawProps);props=getHostProps(domElement,rawProps);trapBubbledEvent(TOP_INVALID,domElement);// For controlled components we always need to ensure we're listening 14668// to onChange. Even if there is no listener. 14669ensureListeningTo(rootContainerElement,'onChange');break;case'option':validateProps(domElement,rawProps);props=getHostProps$1(domElement,rawProps);break;case'select':initWrapperState$1(domElement,rawProps);props=getHostProps$2(domElement,rawProps);trapBubbledEvent(TOP_INVALID,domElement);// For controlled components we always need to ensure we're listening 14670// to onChange. Even if there is no listener. 14671ensureListeningTo(rootContainerElement,'onChange');break;case'textarea':initWrapperState$2(domElement,rawProps);props=getHostProps$3(domElement,rawProps);trapBubbledEvent(TOP_INVALID,domElement);// For controlled components we always need to ensure we're listening 14672// to onChange. Even if there is no listener. 14673ensureListeningTo(rootContainerElement,'onChange');break;default:props=rawProps;}assertValidProps(tag,props);setInitialDOMProperties(tag,domElement,rootContainerElement,props,isCustomComponentTag);switch(tag){case'input':// TODO: Make sure we check if this is still unmounted or do any clean 14674// up necessary since we never stop tracking anymore. 14675track(domElement);postMountWrapper(domElement,rawProps,false);break;case'textarea':// TODO: Make sure we check if this is still unmounted or do any clean 14676// up necessary since we never stop tracking anymore. 14677track(domElement);postMountWrapper$3(domElement);break;case'option':postMountWrapper$1(domElement,rawProps);break;case'select':postMountWrapper$2(domElement,rawProps);break;default:if(typeof props.onClick==='function'){// TODO: This cast may not be sound for SVG, MathML or custom elements. 14678trapClickOnNonInteractiveElement(domElement);}break;}}// Calculate the diff between the two objects. 14679function diffProperties(domElement,tag,lastRawProps,nextRawProps,rootContainerElement){{validatePropertiesInDevelopment(tag,nextRawProps);}var updatePayload=null;var lastProps;var nextProps;switch(tag){case'input':lastProps=getHostProps(domElement,lastRawProps);nextProps=getHostProps(domElement,nextRawProps);updatePayload=[];break;case'option':lastProps=getHostProps$1(domElement,lastRawProps);nextProps=getHostProps$1(domElement,nextRawProps);updatePayload=[];break;case'select':lastProps=getHostProps$2(domElement,lastRawProps);nextProps=getHostProps$2(domElement,nextRawProps);updatePayload=[];break;case'textarea':lastProps=getHostProps$3(domElement,lastRawProps);nextProps=getHostProps$3(domElement,nextRawProps);updatePayload=[];break;default:lastProps=lastRawProps;nextProps=nextRawProps;if(typeof lastProps.onClick!=='function'&&typeof nextProps.onClick==='function'){// TODO: This cast may not be sound for SVG, MathML or custom elements. 14680trapClickOnNonInteractiveElement(domElement);}break;}assertValidProps(tag,nextProps);var propKey;var styleName;var styleUpdates=null;for(propKey in lastProps){if(nextProps.hasOwnProperty(propKey)||!lastProps.hasOwnProperty(propKey)||lastProps[propKey]==null){continue;}if(propKey===STYLE){var lastStyle=lastProps[propKey];for(styleName in lastStyle){if(lastStyle.hasOwnProperty(styleName)){if(!styleUpdates){styleUpdates={};}styleUpdates[styleName]='';}}}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)){// This is a special case. If any listener updates we need to ensure 14681// that the "current" fiber pointer gets updated so we need a commit 14682// to update this element. 14683if(!updatePayload){updatePayload=[];}}else{// For all other deleted properties we add it to the queue. We use 14684// the whitelist in the commit phase instead. 14685(updatePayload=updatePayload||[]).push(propKey,null);}}for(propKey in nextProps){var nextProp=nextProps[propKey];var lastProp=lastProps!=null?lastProps[propKey]:undefined;if(!nextProps.hasOwnProperty(propKey)||nextProp===lastProp||nextProp==null&&lastProp==null){continue;}if(propKey===STYLE){{if(nextProp){// Freeze the next style object so that we can assume it won't be 14686// mutated. We have already warned for this in the past. 14687Object.freeze(nextProp);}}if(lastProp){// Unset styles on `lastProp` but not on `nextProp`. 14688for(styleName in lastProp){if(lastProp.hasOwnProperty(styleName)&&(!nextProp||!nextProp.hasOwnProperty(styleName))){if(!styleUpdates){styleUpdates={};}styleUpdates[styleName]='';}}// Update styles that changed since `lastProp`. 14689for(styleName in nextProp){if(nextProp.hasOwnProperty(styleName)&&lastProp[styleName]!==nextProp[styleName]){if(!styleUpdates){styleUpdates={};}styleUpdates[styleName]=nextProp[styleName];}}}else{// Relies on `updateStylesByID` not mutating `styleUpdates`. 14690if(!styleUpdates){if(!updatePayload){updatePayload=[];}updatePayload.push(propKey,styleUpdates);}styleUpdates=nextProp;}}else if(propKey===DANGEROUSLY_SET_INNER_HTML){var nextHtml=nextProp?nextProp[HTML$1]:undefined;var lastHtml=lastProp?lastProp[HTML$1]:undefined;if(nextHtml!=null){if(lastHtml!==nextHtml){(updatePayload=updatePayload||[]).push(propKey,nextHtml);}}}else if(propKey===CHILDREN){if(lastProp!==nextProp&&(typeof nextProp==='string'||typeof nextProp==='number')){(updatePayload=updatePayload||[]).push(propKey,''+nextProp);}}else if(propKey===SUPPRESS_CONTENT_EDITABLE_WARNING||propKey===SUPPRESS_HYDRATION_WARNING);else if(registrationNameModules.hasOwnProperty(propKey)){if(nextProp!=null){// We eagerly listen to this even though we haven't committed yet. 14691if(typeof nextProp!=='function'){warnForInvalidEventListener(propKey,nextProp);}ensureListeningTo(rootContainerElement,propKey);}if(!updatePayload&&lastProp!==nextProp){// This is a special case. If any listener updates we need to ensure 14692// that the "current" props pointer gets updated so we need a commit 14693// to update this element. 14694updatePayload=[];}}else{// For any other property we always add it to the queue and then we 14695// filter it out using the whitelist during the commit. 14696(updatePayload=updatePayload||[]).push(propKey,nextProp);}}if(styleUpdates){{validateShorthandPropertyCollisionInDev(styleUpdates,nextProps[STYLE]);}(updatePayload=updatePayload||[]).push(STYLE,styleUpdates);}return updatePayload;}// Apply the diff. 14697function updateProperties(domElement,updatePayload,tag,lastRawProps,nextRawProps){// Update checked *before* name. 14698// In the middle of an update, it is possible to have multiple checked. 14699// When a checked radio tries to change name, browser makes another radio's checked false. 14700if(tag==='input'&&nextRawProps.type==='radio'&&nextRawProps.name!=null){updateChecked(domElement,nextRawProps);}var wasCustomComponentTag=isCustomComponent(tag,lastRawProps);var isCustomComponentTag=isCustomComponent(tag,nextRawProps);// Apply the diff. 14701updateDOMProperties(domElement,updatePayload,wasCustomComponentTag,isCustomComponentTag);// TODO: Ensure that an update gets scheduled if any of the special props 14702// changed. 14703switch(tag){case'input':// Update the wrapper around inputs *after* updating props. This has to 14704// happen after `updateDOMProperties`. Otherwise HTML5 input validations 14705// raise warnings and prevent the new value from being assigned. 14706updateWrapper(domElement,nextRawProps);break;case'textarea':updateWrapper$1(domElement,nextRawProps);break;case'select':// <select> value update needs to occur after <option> children 14707// reconciliation 14708postUpdateWrapper(domElement,nextRawProps);break;}}function getPossibleStandardName(propName){{var lowerCasedName=propName.toLowerCase();if(!possibleStandardNames.hasOwnProperty(lowerCasedName)){return null;}return possibleStandardNames[lowerCasedName]||null;}}function diffHydratedProperties(domElement,tag,rawProps,parentNamespace,rootContainerElement){var isCustomComponentTag;var extraAttributeNames;{suppressHydrationWarning=rawProps[SUPPRESS_HYDRATION_WARNING]===true;isCustomComponentTag=isCustomComponent(tag,rawProps);validatePropertiesInDevelopment(tag,rawProps);}// TODO: Make sure that we check isMounted before firing any of these events. 14709switch(tag){case'iframe':case'object':case'embed':trapBubbledEvent(TOP_LOAD,domElement);break;case'video':case'audio':// Create listener for each media event 14710for(var i=0;i<mediaEventTypes.length;i++){trapBubbledEvent(mediaEventTypes[i],domElement);}break;case'source':trapBubbledEvent(TOP_ERROR,domElement);break;case'img':case'image':case'link':trapBubbledEvent(TOP_ERROR,domElement);trapBubbledEvent(TOP_LOAD,domElement);break;case'form':trapBubbledEvent(TOP_RESET,domElement);trapBubbledEvent(TOP_SUBMIT,domElement);break;case'details':trapBubbledEvent(TOP_TOGGLE,domElement);break;case'input':initWrapperState(domElement,rawProps);trapBubbledEvent(TOP_INVALID,domElement);// For controlled components we always need to ensure we're listening 14711// to onChange. Even if there is no listener. 14712ensureListeningTo(rootContainerElement,'onChange');break;case'option':validateProps(domElement,rawProps);break;case'select':initWrapperState$1(domElement,rawProps);trapBubbledEvent(TOP_INVALID,domElement);// For controlled components we always need to ensure we're listening 14713// to onChange. Even if there is no listener. 14714ensureListeningTo(rootContainerElement,'onChange');break;case'textarea':initWrapperState$2(domElement,rawProps);trapBubbledEvent(TOP_INVALID,domElement);// For controlled components we always need to ensure we're listening 14715// to onChange. Even if there is no listener. 14716ensureListeningTo(rootContainerElement,'onChange');break;}assertValidProps(tag,rawProps);{extraAttributeNames=new Set();var attributes=domElement.attributes;for(var _i=0;_i<attributes.length;_i++){var name=attributes[_i].name.toLowerCase();switch(name){// Built-in SSR attribute is whitelisted 14717case'data-reactroot':break;// Controlled attributes are not validated 14718// TODO: Only ignore them on controlled tags. 14719case'value':break;case'checked':break;case'selected':break;default:// Intentionally use the original name. 14720// See discussion in https://github.com/facebook/react/pull/10676. 14721extraAttributeNames.add(attributes[_i].name);}}}var updatePayload=null;for(var propKey in rawProps){if(!rawProps.hasOwnProperty(propKey)){continue;}var nextProp=rawProps[propKey];if(propKey===CHILDREN){// For text content children we compare against textContent. This 14722// might match additional HTML that is hidden when we read it using 14723// textContent. E.g. "foo" will match "f<span>oo</span>" but that still 14724// satisfies our requirement. Our requirement is not to produce perfect 14725// HTML and attributes. Ideally we should preserve structure but it's 14726// ok not to if the visible content is still enough to indicate what 14727// even listeners these nodes might be wired up to. 14728// TODO: Warn if there is more than a single textNode as a child. 14729// TODO: Should we use domElement.firstChild.nodeValue to compare? 14730if(typeof nextProp==='string'){if(domElement.textContent!==nextProp){if(!suppressHydrationWarning){warnForTextDifference(domElement.textContent,nextProp);}updatePayload=[CHILDREN,nextProp];}}else if(typeof nextProp==='number'){if(domElement.textContent!==''+nextProp){if(!suppressHydrationWarning){warnForTextDifference(domElement.textContent,nextProp);}updatePayload=[CHILDREN,''+nextProp];}}}else if(registrationNameModules.hasOwnProperty(propKey)){if(nextProp!=null){if(typeof nextProp!=='function'){warnForInvalidEventListener(propKey,nextProp);}ensureListeningTo(rootContainerElement,propKey);}}else if(// Convince Flow we've calculated it (it's DEV-only in this method.) 14731typeof isCustomComponentTag==='boolean'){// Validate that the properties correspond to their expected values. 14732var serverValue=void 0;var propertyInfo=getPropertyInfo(propKey);if(suppressHydrationWarning);else if(propKey===SUPPRESS_CONTENT_EDITABLE_WARNING||propKey===SUPPRESS_HYDRATION_WARNING||// Controlled attributes are not validated 14733// TODO: Only ignore them on controlled tags. 14734propKey==='value'||propKey==='checked'||propKey==='selected');else if(propKey===DANGEROUSLY_SET_INNER_HTML){var serverHTML=domElement.innerHTML;var nextHtml=nextProp?nextProp[HTML$1]:undefined;var expectedHTML=normalizeHTML(domElement,nextHtml!=null?nextHtml:'');if(expectedHTML!==serverHTML){warnForPropDifference(propKey,serverHTML,expectedHTML);}}else if(propKey===STYLE){// $FlowFixMe - Should be inferred as not undefined. 14735extraAttributeNames.delete(propKey);if(canDiffStyleForHydrationWarning){var expectedStyle=createDangerousStringForStyles(nextProp);serverValue=domElement.getAttribute('style');if(expectedStyle!==serverValue){warnForPropDifference(propKey,serverValue,expectedStyle);}}}else if(isCustomComponentTag){// $FlowFixMe - Should be inferred as not undefined. 14736extraAttributeNames.delete(propKey.toLowerCase());serverValue=getValueForAttribute(domElement,propKey,nextProp);if(nextProp!==serverValue){warnForPropDifference(propKey,serverValue,nextProp);}}else if(!shouldIgnoreAttribute(propKey,propertyInfo,isCustomComponentTag)&&!shouldRemoveAttribute(propKey,nextProp,propertyInfo,isCustomComponentTag)){var isMismatchDueToBadCasing=false;if(propertyInfo!==null){// $FlowFixMe - Should be inferred as not undefined. 14737extraAttributeNames.delete(propertyInfo.attributeName);serverValue=getValueForProperty(domElement,propKey,nextProp,propertyInfo);}else{var ownNamespace=parentNamespace;if(ownNamespace===HTML_NAMESPACE$1){ownNamespace=getIntrinsicNamespace(tag);}if(ownNamespace===HTML_NAMESPACE$1){// $FlowFixMe - Should be inferred as not undefined. 14738extraAttributeNames.delete(propKey.toLowerCase());}else{var standardName=getPossibleStandardName(propKey);if(standardName!==null&&standardName!==propKey){// If an SVG prop is supplied with bad casing, it will 14739// be successfully parsed from HTML, but will produce a mismatch 14740// (and would be incorrectly rendered on the client). 14741// However, we already warn about bad casing elsewhere. 14742// So we'll skip the misleading extra mismatch warning in this case. 14743isMismatchDueToBadCasing=true;// $FlowFixMe - Should be inferred as not undefined. 14744extraAttributeNames.delete(standardName);}// $FlowFixMe - Should be inferred as not undefined. 14745extraAttributeNames.delete(propKey);}serverValue=getValueForAttribute(domElement,propKey,nextProp);}if(nextProp!==serverValue&&!isMismatchDueToBadCasing){warnForPropDifference(propKey,serverValue,nextProp);}}}}{// $FlowFixMe - Should be inferred as not undefined. 14746if(extraAttributeNames.size>0&&!suppressHydrationWarning){// $FlowFixMe - Should be inferred as not undefined. 14747warnForExtraAttributes(extraAttributeNames);}}switch(tag){case'input':// TODO: Make sure we check if this is still unmounted or do any clean 14748// up necessary since we never stop tracking anymore. 14749track(domElement);postMountWrapper(domElement,rawProps,true);break;case'textarea':// TODO: Make sure we check if this is still unmounted or do any clean 14750// up necessary since we never stop tracking anymore. 14751track(domElement);postMountWrapper$3(domElement);break;case'select':case'option':// For input and textarea we current always set the value property at 14752// post mount to force it to diverge from attributes. However, for 14753// option and select we don't quite do the same thing and select 14754// is not resilient to the DOM state changing so we don't do that here. 14755// TODO: Consider not doing this for input and textarea. 14756break;default:if(typeof rawProps.onClick==='function'){// TODO: This cast may not be sound for SVG, MathML or custom elements. 14757trapClickOnNonInteractiveElement(domElement);}break;}return updatePayload;}function diffHydratedText(textNode,text){var isDifferent=textNode.nodeValue!==text;return isDifferent;}function warnForUnmatchedText(textNode,text){{warnForTextDifference(textNode.nodeValue,text);}}function warnForDeletedHydratableElement(parentNode,child){{if(didWarnInvalidHydration){return;}didWarnInvalidHydration=true;error('Did not expect server HTML to contain a <%s> in <%s>.',child.nodeName.toLowerCase(),parentNode.nodeName.toLowerCase());}}function warnForDeletedHydratableText(parentNode,child){{if(didWarnInvalidHydration){return;}didWarnInvalidHydration=true;error('Did not expect server HTML to contain the text node "%s" in <%s>.',child.nodeValue,parentNode.nodeName.toLowerCase());}}function warnForInsertedHydratedElement(parentNode,tag,props){{if(didWarnInvalidHydration){return;}didWarnInvalidHydration=true;error('Expected server HTML to contain a matching <%s> in <%s>.',tag,parentNode.nodeName.toLowerCase());}}function warnForInsertedHydratedText(parentNode,text){{if(text===''){// We expect to insert empty text nodes since they're not represented in 14758// the HTML. 14759// TODO: Remove this special case if we can just avoid inserting empty 14760// text nodes. 14761return;}if(didWarnInvalidHydration){return;}didWarnInvalidHydration=true;error('Expected server HTML to contain a matching text node for "%s" in <%s>.',text,parentNode.nodeName.toLowerCase());}}function restoreControlledState$3(domElement,tag,props){switch(tag){case'input':restoreControlledState(domElement,props);return;case'textarea':restoreControlledState$2(domElement,props);return;case'select':restoreControlledState$1(domElement,props);return;}}function getActiveElement(doc){doc=doc||(typeof document!=='undefined'?document:undefined);if(typeof doc==='undefined'){return null;}try{return doc.activeElement||doc.body;}catch(e){return doc.body;}}/** 14762 * Given any node return the first leaf node without children. 14763 * 14764 * @param {DOMElement|DOMTextNode} node 14765 * @return {DOMElement|DOMTextNode} 14766 */function getLeafNode(node){while(node&&node.firstChild){node=node.firstChild;}return node;}/** 14767 * Get the next sibling within a container. This will walk up the 14768 * DOM if a node's siblings have been exhausted. 14769 * 14770 * @param {DOMElement|DOMTextNode} node 14771 * @return {?DOMElement|DOMTextNode} 14772 */function getSiblingNode(node){while(node){if(node.nextSibling){return node.nextSibling;}node=node.parentNode;}}/** 14773 * Get object describing the nodes which contain characters at offset. 14774 * 14775 * @param {DOMElement|DOMTextNode} root 14776 * @param {number} offset 14777 * @return {?object} 14778 */function getNodeForCharacterOffset(root,offset){var node=getLeafNode(root);var nodeStart=0;var nodeEnd=0;while(node){if(node.nodeType===TEXT_NODE){nodeEnd=nodeStart+node.textContent.length;if(nodeStart<=offset&&nodeEnd>=offset){return{node:node,offset:offset-nodeStart};}nodeStart=nodeEnd;}node=getLeafNode(getSiblingNode(node));}}/** 14779 * @param {DOMElement} outerNode 14780 * @return {?object} 14781 */function getOffsets(outerNode){var ownerDocument=outerNode.ownerDocument;var win=ownerDocument&&ownerDocument.defaultView||window;var selection=win.getSelection&&win.getSelection();if(!selection||selection.rangeCount===0){return null;}var anchorNode=selection.anchorNode,anchorOffset=selection.anchorOffset,focusNode=selection.focusNode,focusOffset=selection.focusOffset;// In Firefox, anchorNode and focusNode can be "anonymous divs", e.g. the 14782// up/down buttons on an <input type="number">. Anonymous divs do not seem to 14783// expose properties, triggering a "Permission denied error" if any of its 14784// properties are accessed. The only seemingly possible way to avoid erroring 14785// is to access a property that typically works for non-anonymous divs and 14786// catch any error that may otherwise arise. See 14787// https://bugzilla.mozilla.org/show_bug.cgi?id=208427 14788try{/* eslint-disable no-unused-expressions */anchorNode.nodeType;focusNode.nodeType;/* eslint-enable no-unused-expressions */}catch(e){return null;}return getModernOffsetsFromPoints(outerNode,anchorNode,anchorOffset,focusNode,focusOffset);}/** 14789 * Returns {start, end} where `start` is the character/codepoint index of 14790 * (anchorNode, anchorOffset) within the textContent of `outerNode`, and 14791 * `end` is the index of (focusNode, focusOffset). 14792 * 14793 * Returns null if you pass in garbage input but we should probably just crash. 14794 * 14795 * Exported only for testing. 14796 */function getModernOffsetsFromPoints(outerNode,anchorNode,anchorOffset,focusNode,focusOffset){var length=0;var start=-1;var end=-1;var indexWithinAnchor=0;var indexWithinFocus=0;var node=outerNode;var parentNode=null;outer:while(true){var next=null;while(true){if(node===anchorNode&&(anchorOffset===0||node.nodeType===TEXT_NODE)){start=length+anchorOffset;}if(node===focusNode&&(focusOffset===0||node.nodeType===TEXT_NODE)){end=length+focusOffset;}if(node.nodeType===TEXT_NODE){length+=node.nodeValue.length;}if((next=node.firstChild)===null){break;}// Moving from `node` to its first child `next`. 14797parentNode=node;node=next;}while(true){if(node===outerNode){// If `outerNode` has children, this is always the second time visiting 14798// it. If it has no children, this is still the first loop, and the only 14799// valid selection is anchorNode and focusNode both equal to this node 14800// and both offsets 0, in which case we will have handled above. 14801break outer;}if(parentNode===anchorNode&&++indexWithinAnchor===anchorOffset){start=length;}if(parentNode===focusNode&&++indexWithinFocus===focusOffset){end=length;}if((next=node.nextSibling)!==null){break;}node=parentNode;parentNode=node.parentNode;}// Moving from `node` to its next sibling `next`. 14802node=next;}if(start===-1||end===-1){// This should never happen. (Would happen if the anchor/focus nodes aren't 14803// actually inside the passed-in node.) 14804return null;}return{start:start,end:end};}/** 14805 * In modern non-IE browsers, we can support both forward and backward 14806 * selections. 14807 * 14808 * Note: IE10+ supports the Selection object, but it does not support 14809 * the `extend` method, which means that even in modern IE, it's not possible 14810 * to programmatically create a backward selection. Thus, for all IE 14811 * versions, we use the old IE API to create our selections. 14812 * 14813 * @param {DOMElement|DOMTextNode} node 14814 * @param {object} offsets 14815 */function setOffsets(node,offsets){var doc=node.ownerDocument||document;var win=doc&&doc.defaultView||window;// Edge fails with "Object expected" in some scenarios. 14816// (For instance: TinyMCE editor used in a list component that supports pasting to add more, 14817// fails when pasting 100+ items) 14818if(!win.getSelection){return;}var selection=win.getSelection();var length=node.textContent.length;var start=Math.min(offsets.start,length);var end=offsets.end===undefined?start:Math.min(offsets.end,length);// IE 11 uses modern selection, but doesn't support the extend method. 14819// Flip backward selections, so we can set with a single range. 14820if(!selection.extend&&start>end){var temp=end;end=start;start=temp;}var startMarker=getNodeForCharacterOffset(node,start);var endMarker=getNodeForCharacterOffset(node,end);if(startMarker&&endMarker){if(selection.rangeCount===1&&selection.anchorNode===startMarker.node&&selection.anchorOffset===startMarker.offset&&selection.focusNode===endMarker.node&&selection.focusOffset===endMarker.offset){return;}var range=doc.createRange();range.setStart(startMarker.node,startMarker.offset);selection.removeAllRanges();if(start>end){selection.addRange(range);selection.extend(endMarker.node,endMarker.offset);}else{range.setEnd(endMarker.node,endMarker.offset);selection.addRange(range);}}}function isTextNode(node){return node&&node.nodeType===TEXT_NODE;}function containsNode(outerNode,innerNode){if(!outerNode||!innerNode){return false;}else if(outerNode===innerNode){return true;}else if(isTextNode(outerNode)){return false;}else if(isTextNode(innerNode)){return containsNode(outerNode,innerNode.parentNode);}else if('contains'in outerNode){return outerNode.contains(innerNode);}else if(outerNode.compareDocumentPosition){return!!(outerNode.compareDocumentPosition(innerNode)&16);}else{return false;}}function isInDocument(node){return node&&node.ownerDocument&&containsNode(node.ownerDocument.documentElement,node);}function isSameOriginFrame(iframe){try{// Accessing the contentDocument of a HTMLIframeElement can cause the browser 14821// to throw, e.g. if it has a cross-origin src attribute. 14822// Safari will show an error in the console when the access results in "Blocked a frame with origin". e.g: 14823// iframe.contentDocument.defaultView; 14824// A safety way is to access one of the cross origin properties: Window or Location 14825// Which might result in "SecurityError" DOM Exception and it is compatible to Safari. 14826// https://html.spec.whatwg.org/multipage/browsers.html#integration-with-idl 14827return typeof iframe.contentWindow.location.href==='string';}catch(err){return false;}}function getActiveElementDeep(){var win=window;var element=getActiveElement();while(element instanceof win.HTMLIFrameElement){if(isSameOriginFrame(element)){win=element.contentWindow;}else{return element;}element=getActiveElement(win.document);}return element;}/** 14828 * @ReactInputSelection: React input selection module. Based on Selection.js, 14829 * but modified to be suitable for react and has a couple of bug fixes (doesn't 14830 * assume buttons have range selections allowed). 14831 * Input selection module for React. 14832 */ /** 14833 * @hasSelectionCapabilities: we get the element types that support selection 14834 * from https://html.spec.whatwg.org/#do-not-apply, looking at `selectionStart` 14835 * and `selectionEnd` rows. 14836 */function hasSelectionCapabilities(elem){var nodeName=elem&&elem.nodeName&&elem.nodeName.toLowerCase();return nodeName&&(nodeName==='input'&&(elem.type==='text'||elem.type==='search'||elem.type==='tel'||elem.type==='url'||elem.type==='password')||nodeName==='textarea'||elem.contentEditable==='true');}function getSelectionInformation(){var focusedElem=getActiveElementDeep();return{// Used by Flare 14837activeElementDetached:null,focusedElem:focusedElem,selectionRange:hasSelectionCapabilities(focusedElem)?getSelection(focusedElem):null};}/** 14838 * @restoreSelection: If any selection information was potentially lost, 14839 * restore it. This is useful when performing operations that could remove dom 14840 * nodes and place them back in, resulting in focus being lost. 14841 */function restoreSelection(priorSelectionInformation){var curFocusedElem=getActiveElementDeep();var priorFocusedElem=priorSelectionInformation.focusedElem;var priorSelectionRange=priorSelectionInformation.selectionRange;if(curFocusedElem!==priorFocusedElem&&isInDocument(priorFocusedElem)){if(priorSelectionRange!==null&&hasSelectionCapabilities(priorFocusedElem)){setSelection(priorFocusedElem,priorSelectionRange);}// Focusing a node can change the scroll position, which is undesirable 14842var ancestors=[];var ancestor=priorFocusedElem;while(ancestor=ancestor.parentNode){if(ancestor.nodeType===ELEMENT_NODE){ancestors.push({element:ancestor,left:ancestor.scrollLeft,top:ancestor.scrollTop});}}if(typeof priorFocusedElem.focus==='function'){priorFocusedElem.focus();}for(var i=0;i<ancestors.length;i++){var info=ancestors[i];info.element.scrollLeft=info.left;info.element.scrollTop=info.top;}}}/** 14843 * @getSelection: Gets the selection bounds of a focused textarea, input or 14844 * contentEditable node. 14845 * -@input: Look up selection bounds of this input 14846 * -@return {start: selectionStart, end: selectionEnd} 14847 */function getSelection(input){var selection;if('selectionStart'in input){// Modern browser with input or textarea. 14848selection={start:input.selectionStart,end:input.selectionEnd};}else{// Content editable or old IE textarea. 14849selection=getOffsets(input);}return selection||{start:0,end:0};}/** 14850 * @setSelection: Sets the selection bounds of a textarea or input and focuses 14851 * the input. 14852 * -@input Set selection bounds of this input or textarea 14853 * -@offsets Object of same form that is returned from get* 14854 */function setSelection(input,offsets){var start=offsets.start,end=offsets.end;if(end===undefined){end=start;}if('selectionStart'in input){input.selectionStart=start;input.selectionEnd=Math.min(end,input.value.length);}else{setOffsets(input,offsets);}}var validateDOMNesting=function(){};var updatedAncestorInfo=function(){};{// This validation code was written based on the HTML5 parsing spec: 14855// https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope 14856// 14857// Note: this does not catch all invalid nesting, nor does it try to (as it's 14858// not clear what practical benefit doing so provides); instead, we warn only 14859// for cases where the parser will give a parse tree differing from what React 14860// intended. For example, <b><div></div></b> is invalid but we don't warn 14861// because it still parses correctly; we do warn for other cases like nested 14862// <p> tags where the beginning of the second element implicitly closes the 14863// first, causing a confusing mess. 14864// https://html.spec.whatwg.org/multipage/syntax.html#special 14865var 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 14866var inScopeTags=['applet','caption','html','table','td','th','marquee','object','template',// https://html.spec.whatwg.org/multipage/syntax.html#html-integration-point 14867// TODO: Distinguish by namespace here -- for <title>, including it here 14868// errs on the side of fewer warnings 14869'foreignObject','desc','title'];// https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-button-scope 14870var buttonScopeTags=inScopeTags.concat(['button']);// https://html.spec.whatwg.org/multipage/syntax.html#generate-implied-end-tags 14871var impliedEndTags=['dd','dt','li','option','optgroup','p','rp','rt'];var emptyAncestorInfo={current:null,formTag:null,aTagInScope:null,buttonTagInScope:null,nobrTagInScope:null,pTagInButtonScope:null,listItemTagAutoclosing:null,dlItemTagAutoclosing:null};updatedAncestorInfo=function(oldInfo,tag){var ancestorInfo=_assign({},oldInfo||emptyAncestorInfo);var info={tag:tag};if(inScopeTags.indexOf(tag)!==-1){ancestorInfo.aTagInScope=null;ancestorInfo.buttonTagInScope=null;ancestorInfo.nobrTagInScope=null;}if(buttonScopeTags.indexOf(tag)!==-1){ancestorInfo.pTagInButtonScope=null;}// See rules for 'li', 'dd', 'dt' start tags in 14872// https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody 14873if(specialTags.indexOf(tag)!==-1&&tag!=='address'&&tag!=='div'&&tag!=='p'){ancestorInfo.listItemTagAutoclosing=null;ancestorInfo.dlItemTagAutoclosing=null;}ancestorInfo.current=info;if(tag==='form'){ancestorInfo.formTag=info;}if(tag==='a'){ancestorInfo.aTagInScope=info;}if(tag==='button'){ancestorInfo.buttonTagInScope=info;}if(tag==='nobr'){ancestorInfo.nobrTagInScope=info;}if(tag==='p'){ancestorInfo.pTagInButtonScope=info;}if(tag==='li'){ancestorInfo.listItemTagAutoclosing=info;}if(tag==='dd'||tag==='dt'){ancestorInfo.dlItemTagAutoclosing=info;}return ancestorInfo;};/** 14874 * Returns whether 14875 */var isTagValidWithParent=function(tag,parentTag){// First, let's check if we're in an unusual parsing mode... 14876switch(parentTag){// https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inselect 14877case'select':return tag==='option'||tag==='optgroup'||tag==='#text';case'optgroup':return tag==='option'||tag==='#text';// Strictly speaking, seeing an <option> doesn't mean we're in a <select> 14878// but 14879case'option':return tag==='#text';// https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intd 14880// https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incaption 14881// No special behavior since these rules fall back to "in body" mode for 14882// all except special table nodes which cause bad parsing behavior anyway. 14883// https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intr 14884case'tr':return tag==='th'||tag==='td'||tag==='style'||tag==='script'||tag==='template';// https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intbody 14885case'tbody':case'thead':case'tfoot':return tag==='tr'||tag==='style'||tag==='script'||tag==='template';// https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incolgroup 14886case'colgroup':return tag==='col'||tag==='template';// https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intable 14887case'table':return tag==='caption'||tag==='colgroup'||tag==='tbody'||tag==='tfoot'||tag==='thead'||tag==='style'||tag==='script'||tag==='template';// https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inhead 14888case'head':return tag==='base'||tag==='basefont'||tag==='bgsound'||tag==='link'||tag==='meta'||tag==='title'||tag==='noscript'||tag==='noframes'||tag==='style'||tag==='script'||tag==='template';// https://html.spec.whatwg.org/multipage/semantics.html#the-html-element 14889case'html':return tag==='head'||tag==='body'||tag==='frameset';case'frameset':return tag==='frame';case'#document':return tag==='html';}// Probably in the "in body" parsing mode, so we outlaw only tag combos 14890// where the parsing rules cause implicit opens or closes to be added. 14891// https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody 14892switch(tag){case'h1':case'h2':case'h3':case'h4':case'h5':case'h6':return parentTag!=='h1'&&parentTag!=='h2'&&parentTag!=='h3'&&parentTag!=='h4'&&parentTag!=='h5'&&parentTag!=='h6';case'rp':case'rt':return impliedEndTags.indexOf(parentTag)===-1;case'body':case'caption':case'col':case'colgroup':case'frameset':case'frame':case'head':case'html':case'tbody':case'td':case'tfoot':case'th':case'thead':case'tr':// These tags are only valid with a few parents that have special child 14893// parsing rules -- if we're down here, then none of those matched and 14894// so we allow it only if we don't know what the parent is, as all other 14895// cases are invalid. 14896return parentTag==null;}return true;};/** 14897 * Returns whether 14898 */var findInvalidAncestorForTag=function(tag,ancestorInfo){switch(tag){case'address':case'article':case'aside':case'blockquote':case'center':case'details':case'dialog':case'dir':case'div':case'dl':case'fieldset':case'figcaption':case'figure':case'footer':case'header':case'hgroup':case'main':case'menu':case'nav':case'ol':case'p':case'section':case'summary':case'ul':case'pre':case'listing':case'table':case'hr':case'xmp':case'h1':case'h2':case'h3':case'h4':case'h5':case'h6':return ancestorInfo.pTagInButtonScope;case'form':return ancestorInfo.formTag||ancestorInfo.pTagInButtonScope;case'li':return ancestorInfo.listItemTagAutoclosing;case'dd':case'dt':return ancestorInfo.dlItemTagAutoclosing;case'button':return ancestorInfo.buttonTagInScope;case'a':// Spec says something about storing a list of markers, but it sounds 14899// equivalent to this check. 14900return ancestorInfo.aTagInScope;case'nobr':return ancestorInfo.nobrTagInScope;}return null;};var didWarn$1={};validateDOMNesting=function(childTag,childText,ancestorInfo){ancestorInfo=ancestorInfo||emptyAncestorInfo;var parentInfo=ancestorInfo.current;var parentTag=parentInfo&&parentInfo.tag;if(childText!=null){if(childTag!=null){error('validateDOMNesting: when childText is passed, childTag should be null');}childTag='#text';}var invalidParent=isTagValidWithParent(childTag,parentTag)?null:parentInfo;var invalidAncestor=invalidParent?null:findInvalidAncestorForTag(childTag,ancestorInfo);var invalidParentOrAncestor=invalidParent||invalidAncestor;if(!invalidParentOrAncestor){return;}var ancestorTag=invalidParentOrAncestor.tag;var addendum=getCurrentFiberStackInDev();var warnKey=!!invalidParent+'|'+childTag+'|'+ancestorTag+'|'+addendum;if(didWarn$1[warnKey]){return;}didWarn$1[warnKey]=true;var tagDisplayName=childTag;var whitespaceInfo='';if(childTag==='#text'){if(/\S/.test(childText)){tagDisplayName='Text nodes';}else{tagDisplayName='Whitespace text nodes';whitespaceInfo=" Make sure you don't have any extra whitespace between tags on "+'each line of your source code.';}}else{tagDisplayName='<'+childTag+'>';}if(invalidParent){var info='';if(ancestorTag==='table'&&childTag==='tr'){info+=' Add a <tbody>, <thead> or <tfoot> to your code to match the DOM tree generated by '+'the browser.';}error('validateDOMNesting(...): %s cannot appear as a child of <%s>.%s%s',tagDisplayName,ancestorTag,whitespaceInfo,info);}else{error('validateDOMNesting(...): %s cannot appear as a descendant of '+'<%s>.',tagDisplayName,ancestorTag);}};}var SUPPRESS_HYDRATION_WARNING$1;{SUPPRESS_HYDRATION_WARNING$1='suppressHydrationWarning';}var SUSPENSE_START_DATA='$';var SUSPENSE_END_DATA='/$';var SUSPENSE_PENDING_START_DATA='$?';var SUSPENSE_FALLBACK_START_DATA='$!';var STYLE$1='style';var eventsEnabled=null;var selectionInformation=null;function shouldAutoFocusHostComponent(type,props){switch(type){case'button':case'input':case'select':case'textarea':return!!props.autoFocus;}return false;}function getRootHostContext(rootContainerInstance){var type;var namespace;var nodeType=rootContainerInstance.nodeType;switch(nodeType){case DOCUMENT_NODE:case DOCUMENT_FRAGMENT_NODE:{type=nodeType===DOCUMENT_NODE?'#document':'#fragment';var root=rootContainerInstance.documentElement;namespace=root?root.namespaceURI:getChildNamespace(null,'');break;}default:{var container=nodeType===COMMENT_NODE?rootContainerInstance.parentNode:rootContainerInstance;var ownNamespace=container.namespaceURI||null;type=container.tagName;namespace=getChildNamespace(ownNamespace,type);break;}}{var validatedTag=type.toLowerCase();var ancestorInfo=updatedAncestorInfo(null,validatedTag);return{namespace:namespace,ancestorInfo:ancestorInfo};}}function getChildHostContext(parentHostContext,type,rootContainerInstance){{var parentHostContextDev=parentHostContext;var namespace=getChildNamespace(parentHostContextDev.namespace,type);var ancestorInfo=updatedAncestorInfo(parentHostContextDev.ancestorInfo,type);return{namespace:namespace,ancestorInfo:ancestorInfo};}}function getPublicInstance(instance){return instance;}function prepareForCommit(containerInfo){eventsEnabled=isEnabled();selectionInformation=getSelectionInformation();setEnabled(false);}function resetAfterCommit(containerInfo){restoreSelection(selectionInformation);setEnabled(eventsEnabled);eventsEnabled=null;selectionInformation=null;}function createInstance(type,props,rootContainerInstance,hostContext,internalInstanceHandle){var parentNamespace;{// TODO: take namespace into account when validating. 14901var hostContextDev=hostContext;validateDOMNesting(type,null,hostContextDev.ancestorInfo);if(typeof props.children==='string'||typeof props.children==='number'){var string=''+props.children;var ownAncestorInfo=updatedAncestorInfo(hostContextDev.ancestorInfo,type);validateDOMNesting(null,string,ownAncestorInfo);}parentNamespace=hostContextDev.namespace;}var domElement=createElement(type,props,rootContainerInstance,parentNamespace);precacheFiberNode(internalInstanceHandle,domElement);updateFiberProps(domElement,props);return domElement;}function appendInitialChild(parentInstance,child){parentInstance.appendChild(child);}function finalizeInitialChildren(domElement,type,props,rootContainerInstance,hostContext){setInitialProperties(domElement,type,props,rootContainerInstance);return shouldAutoFocusHostComponent(type,props);}function prepareUpdate(domElement,type,oldProps,newProps,rootContainerInstance,hostContext){{var hostContextDev=hostContext;if(typeof newProps.children!==typeof oldProps.children&&(typeof newProps.children==='string'||typeof newProps.children==='number')){var string=''+newProps.children;var ownAncestorInfo=updatedAncestorInfo(hostContextDev.ancestorInfo,type);validateDOMNesting(null,string,ownAncestorInfo);}}return diffProperties(domElement,type,oldProps,newProps,rootContainerInstance);}function shouldSetTextContent(type,props){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;}function shouldDeprioritizeSubtree(type,props){return!!props.hidden;}function createTextInstance(text,rootContainerInstance,hostContext,internalInstanceHandle){{var hostContextDev=hostContext;validateDOMNesting(null,text,hostContextDev.ancestorInfo);}var textNode=createTextNode(text,rootContainerInstance);precacheFiberNode(internalInstanceHandle,textNode);return textNode;}// if a component just imports ReactDOM (e.g. for findDOMNode). 14902// Some environments might not have setTimeout or clearTimeout. 14903var scheduleTimeout=typeof setTimeout==='function'?setTimeout:undefined;var cancelTimeout=typeof clearTimeout==='function'?clearTimeout:undefined;var noTimeout=-1;// ------------------- 14904function commitMount(domElement,type,newProps,internalInstanceHandle){// Despite the naming that might imply otherwise, this method only 14905// fires if there is an `Update` effect scheduled during mounting. 14906// This happens if `finalizeInitialChildren` returns `true` (which it 14907// does to implement the `autoFocus` attribute on the client). But 14908// there are also other cases when this might happen (such as patching 14909// up text content during hydration mismatch). So we'll check this again. 14910if(shouldAutoFocusHostComponent(type,newProps)){domElement.focus();}}function commitUpdate(domElement,updatePayload,type,oldProps,newProps,internalInstanceHandle){// Update the props handle so that we know which props are the ones with 14911// with current event handlers. 14912updateFiberProps(domElement,newProps);// Apply the diff to the DOM node. 14913updateProperties(domElement,updatePayload,type,oldProps,newProps);}function resetTextContent(domElement){setTextContent(domElement,'');}function commitTextUpdate(textInstance,oldText,newText){textInstance.nodeValue=newText;}function appendChild(parentInstance,child){parentInstance.appendChild(child);}function appendChildToContainer(container,child){var parentNode;if(container.nodeType===COMMENT_NODE){parentNode=container.parentNode;parentNode.insertBefore(child,container);}else{parentNode=container;parentNode.appendChild(child);}// This container might be used for a portal. 14914// If something inside a portal is clicked, that click should bubble 14915// through the React tree. However, on Mobile Safari the click would 14916// never bubble through the *DOM* tree unless an ancestor with onclick 14917// event exists. So we wouldn't see it and dispatch it. 14918// This is why we ensure that non React root containers have inline onclick 14919// defined. 14920// https://github.com/facebook/react/issues/11918 14921var reactRootContainer=container._reactRootContainer;if((reactRootContainer===null||reactRootContainer===undefined)&&parentNode.onclick===null){// TODO: This cast may not be sound for SVG, MathML or custom elements. 14922trapClickOnNonInteractiveElement(parentNode);}}function insertBefore(parentInstance,child,beforeChild){parentInstance.insertBefore(child,beforeChild);}function insertInContainerBefore(container,child,beforeChild){if(container.nodeType===COMMENT_NODE){container.parentNode.insertBefore(child,beforeChild);}else{container.insertBefore(child,beforeChild);}}function removeChild(parentInstance,child){parentInstance.removeChild(child);}function removeChildFromContainer(container,child){if(container.nodeType===COMMENT_NODE){container.parentNode.removeChild(child);}else{container.removeChild(child);}}function hideInstance(instance){// pass host context to this method? 14923instance=instance;var style=instance.style;if(typeof style.setProperty==='function'){style.setProperty('display','none','important');}else{style.display='none';}}function hideTextInstance(textInstance){textInstance.nodeValue='';}function unhideInstance(instance,props){instance=instance;var styleProp=props[STYLE$1];var display=styleProp!==undefined&&styleProp!==null&&styleProp.hasOwnProperty('display')?styleProp.display:null;instance.style.display=dangerousStyleValue('display',display);}function unhideTextInstance(textInstance,text){textInstance.nodeValue=text;}// ------------------- 14924function canHydrateInstance(instance,type,props){if(instance.nodeType!==ELEMENT_NODE||type.toLowerCase()!==instance.nodeName.toLowerCase()){return null;}// This has now been refined to an element node. 14925return instance;}function canHydrateTextInstance(instance,text){if(text===''||instance.nodeType!==TEXT_NODE){// Empty strings are not parsed by HTML so there won't be a correct match here. 14926return null;}// This has now been refined to a text node. 14927return instance;}function isSuspenseInstancePending(instance){return instance.data===SUSPENSE_PENDING_START_DATA;}function isSuspenseInstanceFallback(instance){return instance.data===SUSPENSE_FALLBACK_START_DATA;}function getNextHydratable(node){// Skip non-hydratable nodes. 14928for(;node!=null;node=node.nextSibling){var nodeType=node.nodeType;if(nodeType===ELEMENT_NODE||nodeType===TEXT_NODE){break;}}return node;}function getNextHydratableSibling(instance){return getNextHydratable(instance.nextSibling);}function getFirstHydratableChild(parentInstance){return getNextHydratable(parentInstance.firstChild);}function hydrateInstance(instance,type,props,rootContainerInstance,hostContext,internalInstanceHandle){precacheFiberNode(internalInstanceHandle,instance);// TODO: Possibly defer this until the commit phase where all the events 14929// get attached. 14930updateFiberProps(instance,props);var parentNamespace;{var hostContextDev=hostContext;parentNamespace=hostContextDev.namespace;}return diffHydratedProperties(instance,type,props,parentNamespace,rootContainerInstance);}function hydrateTextInstance(textInstance,text,internalInstanceHandle){precacheFiberNode(internalInstanceHandle,textInstance);return diffHydratedText(textInstance,text);}function getNextHydratableInstanceAfterSuspenseInstance(suspenseInstance){var node=suspenseInstance.nextSibling;// Skip past all nodes within this suspense boundary. 14931// There might be nested nodes so we need to keep track of how 14932// deep we are and only break out when we're back on top. 14933var depth=0;while(node){if(node.nodeType===COMMENT_NODE){var data=node.data;if(data===SUSPENSE_END_DATA){if(depth===0){return getNextHydratableSibling(node);}else{depth--;}}else if(data===SUSPENSE_START_DATA||data===SUSPENSE_FALLBACK_START_DATA||data===SUSPENSE_PENDING_START_DATA){depth++;}}node=node.nextSibling;}// TODO: Warn, we didn't find the end comment boundary. 14934return null;}// Returns the SuspenseInstance if this node is a direct child of a 14935// SuspenseInstance. I.e. if its previous sibling is a Comment with 14936// SUSPENSE_x_START_DATA. Otherwise, null. 14937function getParentSuspenseInstance(targetInstance){var node=targetInstance.previousSibling;// Skip past all nodes within this suspense boundary. 14938// There might be nested nodes so we need to keep track of how 14939// deep we are and only break out when we're back on top. 14940var depth=0;while(node){if(node.nodeType===COMMENT_NODE){var data=node.data;if(data===SUSPENSE_START_DATA||data===SUSPENSE_FALLBACK_START_DATA||data===SUSPENSE_PENDING_START_DATA){if(depth===0){return node;}else{depth--;}}else if(data===SUSPENSE_END_DATA){depth++;}}node=node.previousSibling;}return null;}function commitHydratedContainer(container){// Retry if any event replaying was blocked on this. 14941retryIfBlockedOn(container);}function commitHydratedSuspenseInstance(suspenseInstance){// Retry if any event replaying was blocked on this. 14942retryIfBlockedOn(suspenseInstance);}function didNotMatchHydratedContainerTextInstance(parentContainer,textInstance,text){{warnForUnmatchedText(textInstance,text);}}function didNotMatchHydratedTextInstance(parentType,parentProps,parentInstance,textInstance,text){if(parentProps[SUPPRESS_HYDRATION_WARNING$1]!==true){warnForUnmatchedText(textInstance,text);}}function didNotHydrateContainerInstance(parentContainer,instance){{if(instance.nodeType===ELEMENT_NODE){warnForDeletedHydratableElement(parentContainer,instance);}else if(instance.nodeType===COMMENT_NODE);else{warnForDeletedHydratableText(parentContainer,instance);}}}function didNotHydrateInstance(parentType,parentProps,parentInstance,instance){if(parentProps[SUPPRESS_HYDRATION_WARNING$1]!==true){if(instance.nodeType===ELEMENT_NODE){warnForDeletedHydratableElement(parentInstance,instance);}else if(instance.nodeType===COMMENT_NODE);else{warnForDeletedHydratableText(parentInstance,instance);}}}function didNotFindHydratableContainerInstance(parentContainer,type,props){{warnForInsertedHydratedElement(parentContainer,type);}}function didNotFindHydratableContainerTextInstance(parentContainer,text){{warnForInsertedHydratedText(parentContainer,text);}}function didNotFindHydratableInstance(parentType,parentProps,parentInstance,type,props){if(parentProps[SUPPRESS_HYDRATION_WARNING$1]!==true){warnForInsertedHydratedElement(parentInstance,type);}}function didNotFindHydratableTextInstance(parentType,parentProps,parentInstance,text){if(parentProps[SUPPRESS_HYDRATION_WARNING$1]!==true){warnForInsertedHydratedText(parentInstance,text);}}function didNotFindHydratableSuspenseInstance(parentType,parentProps,parentInstance){if(parentProps[SUPPRESS_HYDRATION_WARNING$1]!==true);}var randomKey=Math.random().toString(36).slice(2);var internalInstanceKey='__reactInternalInstance$'+randomKey;var internalEventHandlersKey='__reactEventHandlers$'+randomKey;var internalContainerInstanceKey='__reactContainere$'+randomKey;function precacheFiberNode(hostInst,node){node[internalInstanceKey]=hostInst;}function markContainerAsRoot(hostRoot,node){node[internalContainerInstanceKey]=hostRoot;}function unmarkContainerAsRoot(node){node[internalContainerInstanceKey]=null;}function isContainerMarkedAsRoot(node){return!!node[internalContainerInstanceKey];}// Given a DOM node, return the closest HostComponent or HostText fiber ancestor. 14943// If the target node is part of a hydrated or not yet rendered subtree, then 14944// this may also return a SuspenseComponent or HostRoot to indicate that. 14945// Conceptually the HostRoot fiber is a child of the Container node. So if you 14946// pass the Container node as the targetNode, you will not actually get the 14947// HostRoot back. To get to the HostRoot, you need to pass a child of it. 14948// The same thing applies to Suspense boundaries. 14949function getClosestInstanceFromNode(targetNode){var targetInst=targetNode[internalInstanceKey];if(targetInst){// Don't return HostRoot or SuspenseComponent here. 14950return targetInst;}// If the direct event target isn't a React owned DOM node, we need to look 14951// to see if one of its parents is a React owned DOM node. 14952var parentNode=targetNode.parentNode;while(parentNode){// We'll check if this is a container root that could include 14953// React nodes in the future. We need to check this first because 14954// if we're a child of a dehydrated container, we need to first 14955// find that inner container before moving on to finding the parent 14956// instance. Note that we don't check this field on the targetNode 14957// itself because the fibers are conceptually between the container 14958// node and the first child. It isn't surrounding the container node. 14959// If it's not a container, we check if it's an instance. 14960targetInst=parentNode[internalContainerInstanceKey]||parentNode[internalInstanceKey];if(targetInst){// Since this wasn't the direct target of the event, we might have 14961// stepped past dehydrated DOM nodes to get here. However they could 14962// also have been non-React nodes. We need to answer which one. 14963// If we the instance doesn't have any children, then there can't be 14964// a nested suspense boundary within it. So we can use this as a fast 14965// bailout. Most of the time, when people add non-React children to 14966// the tree, it is using a ref to a child-less DOM node. 14967// Normally we'd only need to check one of the fibers because if it 14968// has ever gone from having children to deleting them or vice versa 14969// it would have deleted the dehydrated boundary nested inside already. 14970// However, since the HostRoot starts out with an alternate it might 14971// have one on the alternate so we need to check in case this was a 14972// root. 14973var alternate=targetInst.alternate;if(targetInst.child!==null||alternate!==null&&alternate.child!==null){// Next we need to figure out if the node that skipped past is 14974// nested within a dehydrated boundary and if so, which one. 14975var suspenseInstance=getParentSuspenseInstance(targetNode);while(suspenseInstance!==null){// We found a suspense instance. That means that we haven't 14976// hydrated it yet. Even though we leave the comments in the 14977// DOM after hydrating, and there are boundaries in the DOM 14978// that could already be hydrated, we wouldn't have found them 14979// through this pass since if the target is hydrated it would 14980// have had an internalInstanceKey on it. 14981// Let's get the fiber associated with the SuspenseComponent 14982// as the deepest instance. 14983var targetSuspenseInst=suspenseInstance[internalInstanceKey];if(targetSuspenseInst){return targetSuspenseInst;}// If we don't find a Fiber on the comment, it might be because 14984// we haven't gotten to hydrate it yet. There might still be a 14985// parent boundary that hasn't above this one so we need to find 14986// the outer most that is known. 14987suspenseInstance=getParentSuspenseInstance(suspenseInstance);// If we don't find one, then that should mean that the parent 14988// host component also hasn't hydrated yet. We can return it 14989// below since it will bail out on the isMounted check later. 14990}}return targetInst;}targetNode=parentNode;parentNode=targetNode.parentNode;}return null;}/** 14991 * Given a DOM node, return the ReactDOMComponent or ReactDOMTextComponent 14992 * instance, or null if the node was not rendered by this React. 14993 */function getInstanceFromNode$1(node){var inst=node[internalInstanceKey]||node[internalContainerInstanceKey];if(inst){if(inst.tag===HostComponent||inst.tag===HostText||inst.tag===SuspenseComponent||inst.tag===HostRoot){return inst;}else{return null;}}return null;}/** 14994 * Given a ReactDOMComponent or ReactDOMTextComponent, return the corresponding 14995 * DOM node. 14996 */function getNodeFromInstance$1(inst){if(inst.tag===HostComponent||inst.tag===HostText){// In Fiber this, is just the state node right now. We assume it will be 14997// a host component or host text. 14998return inst.stateNode;}// Without this first invariant, passing a non-DOM-component triggers the next 14999// invariant for a missing parent, which is super confusing. 15000{{throw Error("getNodeFromInstance: Invalid argument.");}}}function getFiberCurrentPropsFromNode$1(node){return node[internalEventHandlersKey]||null;}function updateFiberProps(node,props){node[internalEventHandlersKey]=props;}function getParent(inst){do{inst=inst.return;// TODO: If this is a HostRoot we might want to bail out. 15001// That is depending on if we want nested subtrees (layers) to bubble 15002// events to their parent. We could also go through parentNode on the 15003// host node but that wouldn't work for React Native and doesn't let us 15004// do the portal feature. 15005}while(inst&&inst.tag!==HostComponent);if(inst){return inst;}return null;}/** 15006 * Return the lowest common ancestor of A and B, or null if they are in 15007 * different trees. 15008 */function getLowestCommonAncestor(instA,instB){var depthA=0;for(var tempA=instA;tempA;tempA=getParent(tempA)){depthA++;}var depthB=0;for(var tempB=instB;tempB;tempB=getParent(tempB)){depthB++;}// If A is deeper, crawl up. 15009while(depthA-depthB>0){instA=getParent(instA);depthA--;}// If B is deeper, crawl up. 15010while(depthB-depthA>0){instB=getParent(instB);depthB--;}// Walk in lockstep until we find a match. 15011var depth=depthA;while(depth--){if(instA===instB||instA===instB.alternate){return instA;}instA=getParent(instA);instB=getParent(instB);}return null;}/** 15012 * Simulates the traversal of a two-phase, capture/bubble event dispatch. 15013 */function traverseTwoPhase(inst,fn,arg){var path=[];while(inst){path.push(inst);inst=getParent(inst);}var i;for(i=path.length;i-->0;){fn(path[i],'captured',arg);}for(i=0;i<path.length;i++){fn(path[i],'bubbled',arg);}}/** 15014 * Traverses the ID hierarchy and invokes the supplied `cb` on any IDs that 15015 * should would receive a `mouseEnter` or `mouseLeave` event. 15016 * 15017 * Does not invoke the callback on the nearest common ancestor because nothing 15018 * "entered" or "left" that element. 15019 */function traverseEnterLeave(from,to,fn,argFrom,argTo){var common=from&&to?getLowestCommonAncestor(from,to):null;var pathFrom=[];while(true){if(!from){break;}if(from===common){break;}var alternate=from.alternate;if(alternate!==null&&alternate===common){break;}pathFrom.push(from);from=getParent(from);}var pathTo=[];while(true){if(!to){break;}if(to===common){break;}var _alternate=to.alternate;if(_alternate!==null&&_alternate===common){break;}pathTo.push(to);to=getParent(to);}for(var i=0;i<pathFrom.length;i++){fn(pathFrom[i],'bubbled',argFrom);}for(var _i=pathTo.length;_i-->0;){fn(pathTo[_i],'captured',argTo);}}function isInteractive(tag){return tag==='button'||tag==='input'||tag==='select'||tag==='textarea';}function shouldPreventMouseEvent(name,type,props){switch(name){case'onClick':case'onClickCapture':case'onDoubleClick':case'onDoubleClickCapture':case'onMouseDown':case'onMouseDownCapture':case'onMouseMove':case'onMouseMoveCapture':case'onMouseUp':case'onMouseUpCapture':case'onMouseEnter':return!!(props.disabled&&isInteractive(type));default:return false;}}/** 15020 * @param {object} inst The instance, which is the source of events. 15021 * @param {string} registrationName Name of listener (e.g. `onClick`). 15022 * @return {?function} The stored callback. 15023 */function getListener(inst,registrationName){var listener;// TODO: shouldPreventMouseEvent is DOM-specific and definitely should not 15024// live here; needs to be moved to a better place soon 15025var stateNode=inst.stateNode;if(!stateNode){// Work in progress (ex: onload events in incremental mode). 15026return null;}var props=getFiberCurrentPropsFromNode(stateNode);if(!props){// Work in progress. 15027return null;}listener=props[registrationName];if(shouldPreventMouseEvent(registrationName,inst.type,props)){return null;}if(!(!listener||typeof listener==='function')){{throw Error("Expected `"+registrationName+"` listener to be a function, instead got a value of `"+typeof listener+"` type.");}}return listener;}/** 15028 * Some event types have a notion of different registration names for different 15029 * "phases" of propagation. This finds listeners by a given phase. 15030 */function listenerAtPhase(inst,event,propagationPhase){var registrationName=event.dispatchConfig.phasedRegistrationNames[propagationPhase];return getListener(inst,registrationName);}/** 15031 * A small set of propagation patterns, each of which will accept a small amount 15032 * of information, and generate a set of "dispatch ready event objects" - which 15033 * are sets of events that have already been annotated with a set of dispatched 15034 * listener functions/ids. The API is designed this way to discourage these 15035 * propagation strategies from actually executing the dispatches, since we 15036 * always want to collect the entire set of dispatches before executing even a 15037 * single one. 15038 */ /** 15039 * Tags a `SyntheticEvent` with dispatched listeners. Creating this function 15040 * here, allows us to not have to bind or create functions for each event. 15041 * Mutating the event's members allows us to not have to create a wrapping 15042 * "dispatch" object that pairs the event with the listener. 15043 */function accumulateDirectionalDispatches(inst,phase,event){{if(!inst){error('Dispatching inst must not be null');}}var listener=listenerAtPhase(inst,event,phase);if(listener){event._dispatchListeners=accumulateInto(event._dispatchListeners,listener);event._dispatchInstances=accumulateInto(event._dispatchInstances,inst);}}/** 15044 * Collect dispatches (must be entirely collected before dispatching - see unit 15045 * tests). Lazily allocate the array to conserve memory. We must loop through 15046 * each event and perform the traversal for each one. We cannot perform a 15047 * single traversal for the entire collection of events because each event may 15048 * have a different target. 15049 */function accumulateTwoPhaseDispatchesSingle(event){if(event&&event.dispatchConfig.phasedRegistrationNames){traverseTwoPhase(event._targetInst,accumulateDirectionalDispatches,event);}}/** 15050 * Accumulates without regard to direction, does not look for phased 15051 * registration names. Same as `accumulateDirectDispatchesSingle` but without 15052 * requiring that the `dispatchMarker` be the same as the dispatched ID. 15053 */function accumulateDispatches(inst,ignoredDirection,event){if(inst&&event&&event.dispatchConfig.registrationName){var registrationName=event.dispatchConfig.registrationName;var listener=getListener(inst,registrationName);if(listener){event._dispatchListeners=accumulateInto(event._dispatchListeners,listener);event._dispatchInstances=accumulateInto(event._dispatchInstances,inst);}}}/** 15054 * Accumulates dispatches on an `SyntheticEvent`, but only for the 15055 * `dispatchMarker`. 15056 * @param {SyntheticEvent} event 15057 */function accumulateDirectDispatchesSingle(event){if(event&&event.dispatchConfig.registrationName){accumulateDispatches(event._targetInst,null,event);}}function accumulateTwoPhaseDispatches(events){forEachAccumulated(events,accumulateTwoPhaseDispatchesSingle);}function accumulateEnterLeaveDispatches(leave,enter,from,to){traverseEnterLeave(from,to,accumulateDispatches,leave,enter);}function accumulateDirectDispatches(events){forEachAccumulated(events,accumulateDirectDispatchesSingle);}/** 15058 * These variables store information about text content of a target node, 15059 * allowing comparison of content before and after a given event. 15060 * 15061 * Identify the node where selection currently begins, then observe 15062 * both its text content and its current position in the DOM. Since the 15063 * browser may natively replace the target node during composition, we can 15064 * use its position to find its replacement. 15065 * 15066 * 15067 */var root=null;var startText=null;var fallbackText=null;function initialize(nativeEventTarget){root=nativeEventTarget;startText=getText();return true;}function reset(){root=null;startText=null;fallbackText=null;}function getData(){if(fallbackText){return fallbackText;}var start;var startValue=startText;var startLength=startValue.length;var end;var endValue=getText();var endLength=endValue.length;for(start=0;start<startLength;start++){if(startValue[start]!==endValue[start]){break;}}var minEnd=startLength-start;for(end=1;end<=minEnd;end++){if(startValue[startLength-end]!==endValue[endLength-end]){break;}}var sliceTail=end>1?1-end:undefined;fallbackText=endValue.slice(start,sliceTail);return fallbackText;}function getText(){if('value'in root){return root.value;}return root.textContent;}var EVENT_POOL_SIZE=10;/** 15068 * @interface Event 15069 * @see http://www.w3.org/TR/DOM-Level-3-Events/ 15070 */var EventInterface={type:null,target:null,// currentTarget is set when dispatching; no use in copying it here 15071currentTarget:function(){return null;},eventPhase:null,bubbles:null,cancelable:null,timeStamp:function(event){return event.timeStamp||Date.now();},defaultPrevented:null,isTrusted:null};function functionThatReturnsTrue(){return true;}function functionThatReturnsFalse(){return false;}/** 15072 * Synthetic events are dispatched by event plugins, typically in response to a 15073 * top-level event delegation handler. 15074 * 15075 * These systems should generally use pooling to reduce the frequency of garbage 15076 * collection. The system should check `isPersistent` to determine whether the 15077 * event should be released into the pool after being dispatched. Users that 15078 * need a persisted event should invoke `persist`. 15079 * 15080 * Synthetic events (and subclasses) implement the DOM Level 3 Events API by 15081 * normalizing browser quirks. Subclasses do not necessarily have to implement a 15082 * DOM interface; custom application-specific events can also subclass this. 15083 * 15084 * @param {object} dispatchConfig Configuration used to dispatch this event. 15085 * @param {*} targetInst Marker identifying the event target. 15086 * @param {object} nativeEvent Native browser event. 15087 * @param {DOMEventTarget} nativeEventTarget Target node. 15088 */function SyntheticEvent(dispatchConfig,targetInst,nativeEvent,nativeEventTarget){{// these have a getter/setter for warnings 15089delete this.nativeEvent;delete this.preventDefault;delete this.stopPropagation;delete this.isDefaultPrevented;delete this.isPropagationStopped;}this.dispatchConfig=dispatchConfig;this._targetInst=targetInst;this.nativeEvent=nativeEvent;var Interface=this.constructor.Interface;for(var propName in Interface){if(!Interface.hasOwnProperty(propName)){continue;}{delete this[propName];// this has a getter/setter for warnings 15090}var normalize=Interface[propName];if(normalize){this[propName]=normalize(nativeEvent);}else{if(propName==='target'){this.target=nativeEventTarget;}else{this[propName]=nativeEvent[propName];}}}var defaultPrevented=nativeEvent.defaultPrevented!=null?nativeEvent.defaultPrevented:nativeEvent.returnValue===false;if(defaultPrevented){this.isDefaultPrevented=functionThatReturnsTrue;}else{this.isDefaultPrevented=functionThatReturnsFalse;}this.isPropagationStopped=functionThatReturnsFalse;return this;}_assign(SyntheticEvent.prototype,{preventDefault:function(){this.defaultPrevented=true;var event=this.nativeEvent;if(!event){return;}if(event.preventDefault){event.preventDefault();}else if(typeof event.returnValue!=='unknown'){event.returnValue=false;}this.isDefaultPrevented=functionThatReturnsTrue;},stopPropagation:function(){var event=this.nativeEvent;if(!event){return;}if(event.stopPropagation){event.stopPropagation();}else if(typeof event.cancelBubble!=='unknown'){// The ChangeEventPlugin registers a "propertychange" event for 15091// IE. This event does not support bubbling or cancelling, and 15092// any references to cancelBubble throw "Member not found". A 15093// typeof check of "unknown" circumvents this issue (and is also 15094// IE specific). 15095event.cancelBubble=true;}this.isPropagationStopped=functionThatReturnsTrue;},/** 15096 * We release all dispatched `SyntheticEvent`s after each event loop, adding 15097 * them back into the pool. This allows a way to hold onto a reference that 15098 * won't be added back into the pool. 15099 */persist:function(){this.isPersistent=functionThatReturnsTrue;},/** 15100 * Checks if this event should be released back into the pool. 15101 * 15102 * @return {boolean} True if this should not be released, false otherwise. 15103 */isPersistent:functionThatReturnsFalse,/** 15104 * `PooledClass` looks for `destructor` on each instance it releases. 15105 */destructor:function(){var Interface=this.constructor.Interface;for(var propName in Interface){{Object.defineProperty(this,propName,getPooledWarningPropertyDefinition(propName,Interface[propName]));}}this.dispatchConfig=null;this._targetInst=null;this.nativeEvent=null;this.isDefaultPrevented=functionThatReturnsFalse;this.isPropagationStopped=functionThatReturnsFalse;this._dispatchListeners=null;this._dispatchInstances=null;{Object.defineProperty(this,'nativeEvent',getPooledWarningPropertyDefinition('nativeEvent',null));Object.defineProperty(this,'isDefaultPrevented',getPooledWarningPropertyDefinition('isDefaultPrevented',functionThatReturnsFalse));Object.defineProperty(this,'isPropagationStopped',getPooledWarningPropertyDefinition('isPropagationStopped',functionThatReturnsFalse));Object.defineProperty(this,'preventDefault',getPooledWarningPropertyDefinition('preventDefault',function(){}));Object.defineProperty(this,'stopPropagation',getPooledWarningPropertyDefinition('stopPropagation',function(){}));}}});SyntheticEvent.Interface=EventInterface;/** 15106 * Helper to reduce boilerplate when creating subclasses. 15107 */SyntheticEvent.extend=function(Interface){var Super=this;var E=function(){};E.prototype=Super.prototype;var prototype=new E();function Class(){return Super.apply(this,arguments);}_assign(prototype,Class.prototype);Class.prototype=prototype;Class.prototype.constructor=Class;Class.Interface=_assign({},Super.Interface,Interface);Class.extend=Super.extend;addEventPoolingTo(Class);return Class;};addEventPoolingTo(SyntheticEvent);/** 15108 * Helper to nullify syntheticEvent instance properties when destructing 15109 * 15110 * @param {String} propName 15111 * @param {?object} getVal 15112 * @return {object} defineProperty object 15113 */function getPooledWarningPropertyDefinition(propName,getVal){var isFunction=typeof getVal==='function';return{configurable:true,set:set,get:get};function set(val){var action=isFunction?'setting the method':'setting the property';warn(action,'This is effectively a no-op');return val;}function get(){var action=isFunction?'accessing the method':'accessing the property';var result=isFunction?'This is a no-op function':'This is set to null';warn(action,result);return getVal;}function warn(action,result){{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);}}}function getPooledEvent(dispatchConfig,targetInst,nativeEvent,nativeInst){var EventConstructor=this;if(EventConstructor.eventPool.length){var instance=EventConstructor.eventPool.pop();EventConstructor.call(instance,dispatchConfig,targetInst,nativeEvent,nativeInst);return instance;}return new EventConstructor(dispatchConfig,targetInst,nativeEvent,nativeInst);}function releasePooledEvent(event){var EventConstructor=this;if(!(event instanceof EventConstructor)){{throw Error("Trying to release an event instance into a pool of a different type.");}}event.destructor();if(EventConstructor.eventPool.length<EVENT_POOL_SIZE){EventConstructor.eventPool.push(event);}}function addEventPoolingTo(EventConstructor){EventConstructor.eventPool=[];EventConstructor.getPooled=getPooledEvent;EventConstructor.release=releasePooledEvent;}/** 15114 * @interface Event 15115 * @see http://www.w3.org/TR/DOM-Level-3-Events/#events-compositionevents 15116 */var SyntheticCompositionEvent=SyntheticEvent.extend({data:null});/** 15117 * @interface Event 15118 * @see http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105 15119 * /#events-inputevents 15120 */var SyntheticInputEvent=SyntheticEvent.extend({data:null});var END_KEYCODES=[9,13,27,32];// Tab, Return, Esc, Space 15121var START_KEYCODE=229;var canUseCompositionEvent=canUseDOM&&'CompositionEvent'in window;var documentMode=null;if(canUseDOM&&'documentMode'in document){documentMode=document.documentMode;}// Webkit offers a very useful `textInput` event that can be used to 15122// directly represent `beforeInput`. The IE `textinput` event is not as 15123// useful, so we don't use it. 15124var canUseTextInputEvent=canUseDOM&&'TextEvent'in window&&!documentMode;// In IE9+, we have access to composition events, but the data supplied 15125// by the native compositionend event may be incorrect. Japanese ideographic 15126// spaces, for instance (\u3000) are not recorded correctly. 15127var useFallbackCompositionData=canUseDOM&&(!canUseCompositionEvent||documentMode&&documentMode>8&&documentMode<=11);var SPACEBAR_CODE=32;var SPACEBAR_CHAR=String.fromCharCode(SPACEBAR_CODE);// Events and their corresponding property names. 15128var eventTypes={beforeInput:{phasedRegistrationNames:{bubbled:'onBeforeInput',captured:'onBeforeInputCapture'},dependencies:[TOP_COMPOSITION_END,TOP_KEY_PRESS,TOP_TEXT_INPUT,TOP_PASTE]},compositionEnd:{phasedRegistrationNames:{bubbled:'onCompositionEnd',captured:'onCompositionEndCapture'},dependencies:[TOP_BLUR,TOP_COMPOSITION_END,TOP_KEY_DOWN,TOP_KEY_PRESS,TOP_KEY_UP,TOP_MOUSE_DOWN]},compositionStart:{phasedRegistrationNames:{bubbled:'onCompositionStart',captured:'onCompositionStartCapture'},dependencies:[TOP_BLUR,TOP_COMPOSITION_START,TOP_KEY_DOWN,TOP_KEY_PRESS,TOP_KEY_UP,TOP_MOUSE_DOWN]},compositionUpdate:{phasedRegistrationNames:{bubbled:'onCompositionUpdate',captured:'onCompositionUpdateCapture'},dependencies:[TOP_BLUR,TOP_COMPOSITION_UPDATE,TOP_KEY_DOWN,TOP_KEY_PRESS,TOP_KEY_UP,TOP_MOUSE_DOWN]}};// Track whether we've ever handled a keypress on the space key. 15129var hasSpaceKeypress=false;/** 15130 * Return whether a native keypress event is assumed to be a command. 15131 * This is required because Firefox fires `keypress` events for key commands 15132 * (cut, copy, select-all, etc.) even though no character is inserted. 15133 */function isKeypressCommand(nativeEvent){return(nativeEvent.ctrlKey||nativeEvent.altKey||nativeEvent.metaKey)&&// ctrlKey && altKey is equivalent to AltGr, and is not a command. 15134!(nativeEvent.ctrlKey&&nativeEvent.altKey);}/** 15135 * Translate native top level events into event types. 15136 * 15137 * @param {string} topLevelType 15138 * @return {object} 15139 */function getCompositionEventType(topLevelType){switch(topLevelType){case TOP_COMPOSITION_START:return eventTypes.compositionStart;case TOP_COMPOSITION_END:return eventTypes.compositionEnd;case TOP_COMPOSITION_UPDATE:return eventTypes.compositionUpdate;}}/** 15140 * Does our fallback best-guess model think this event signifies that 15141 * composition has begun? 15142 * 15143 * @param {string} topLevelType 15144 * @param {object} nativeEvent 15145 * @return {boolean} 15146 */function isFallbackCompositionStart(topLevelType,nativeEvent){return topLevelType===TOP_KEY_DOWN&&nativeEvent.keyCode===START_KEYCODE;}/** 15147 * Does our fallback mode think that this event is the end of composition? 15148 * 15149 * @param {string} topLevelType 15150 * @param {object} nativeEvent 15151 * @return {boolean} 15152 */function isFallbackCompositionEnd(topLevelType,nativeEvent){switch(topLevelType){case TOP_KEY_UP:// Command keys insert or clear IME input. 15153return END_KEYCODES.indexOf(nativeEvent.keyCode)!==-1;case TOP_KEY_DOWN:// Expect IME keyCode on each keydown. If we get any other 15154// code we must have exited earlier. 15155return nativeEvent.keyCode!==START_KEYCODE;case TOP_KEY_PRESS:case TOP_MOUSE_DOWN:case TOP_BLUR:// Events are not possible without cancelling IME. 15156return true;default:return false;}}/** 15157 * Google Input Tools provides composition data via a CustomEvent, 15158 * with the `data` property populated in the `detail` object. If this 15159 * is available on the event object, use it. If not, this is a plain 15160 * composition event and we have nothing special to extract. 15161 * 15162 * @param {object} nativeEvent 15163 * @return {?string} 15164 */function getDataFromCustomEvent(nativeEvent){var detail=nativeEvent.detail;if(typeof detail==='object'&&'data'in detail){return detail.data;}return null;}/** 15165 * Check if a composition event was triggered by Korean IME. 15166 * Our fallback mode does not work well with IE's Korean IME, 15167 * so just use native composition events when Korean IME is used. 15168 * Although CompositionEvent.locale property is deprecated, 15169 * it is available in IE, where our fallback mode is enabled. 15170 * 15171 * @param {object} nativeEvent 15172 * @return {boolean} 15173 */function isUsingKoreanIME(nativeEvent){return nativeEvent.locale==='ko';}// Track the current IME composition status, if any. 15174var isComposing=false;/** 15175 * @return {?object} A SyntheticCompositionEvent. 15176 */function extractCompositionEvent(topLevelType,targetInst,nativeEvent,nativeEventTarget){var eventType;var fallbackData;if(canUseCompositionEvent){eventType=getCompositionEventType(topLevelType);}else if(!isComposing){if(isFallbackCompositionStart(topLevelType,nativeEvent)){eventType=eventTypes.compositionStart;}}else if(isFallbackCompositionEnd(topLevelType,nativeEvent)){eventType=eventTypes.compositionEnd;}if(!eventType){return null;}if(useFallbackCompositionData&&!isUsingKoreanIME(nativeEvent)){// The current composition is stored statically and must not be 15177// overwritten while composition continues. 15178if(!isComposing&&eventType===eventTypes.compositionStart){isComposing=initialize(nativeEventTarget);}else if(eventType===eventTypes.compositionEnd){if(isComposing){fallbackData=getData();}}}var event=SyntheticCompositionEvent.getPooled(eventType,targetInst,nativeEvent,nativeEventTarget);if(fallbackData){// Inject data generated from fallback path into the synthetic event. 15179// This matches the property of native CompositionEventInterface. 15180event.data=fallbackData;}else{var customData=getDataFromCustomEvent(nativeEvent);if(customData!==null){event.data=customData;}}accumulateTwoPhaseDispatches(event);return event;}/** 15181 * @param {TopLevelType} topLevelType Number from `TopLevelType`. 15182 * @param {object} nativeEvent Native browser event. 15183 * @return {?string} The string corresponding to this `beforeInput` event. 15184 */function getNativeBeforeInputChars(topLevelType,nativeEvent){switch(topLevelType){case TOP_COMPOSITION_END:return getDataFromCustomEvent(nativeEvent);case TOP_KEY_PRESS:/** 15185 * If native `textInput` events are available, our goal is to make 15186 * use of them. However, there is a special case: the spacebar key. 15187 * In Webkit, preventing default on a spacebar `textInput` event 15188 * cancels character insertion, but it *also* causes the browser 15189 * to fall back to its default spacebar behavior of scrolling the 15190 * page. 15191 * 15192 * Tracking at: 15193 * https://code.google.com/p/chromium/issues/detail?id=355103 15194 * 15195 * To avoid this issue, use the keypress event as if no `textInput` 15196 * event is available. 15197 */var which=nativeEvent.which;if(which!==SPACEBAR_CODE){return null;}hasSpaceKeypress=true;return SPACEBAR_CHAR;case TOP_TEXT_INPUT:// Record the characters to be added to the DOM. 15198var chars=nativeEvent.data;// If it's a spacebar character, assume that we have already handled 15199// it at the keypress level and bail immediately. Android Chrome 15200// doesn't give us keycodes, so we need to ignore it. 15201if(chars===SPACEBAR_CHAR&&hasSpaceKeypress){return null;}return chars;default:// For other native event types, do nothing. 15202return null;}}/** 15203 * For browsers that do not provide the `textInput` event, extract the 15204 * appropriate string to use for SyntheticInputEvent. 15205 * 15206 * @param {number} topLevelType Number from `TopLevelEventTypes`. 15207 * @param {object} nativeEvent Native browser event. 15208 * @return {?string} The fallback string for this `beforeInput` event. 15209 */function getFallbackBeforeInputChars(topLevelType,nativeEvent){// If we are currently composing (IME) and using a fallback to do so, 15210// try to extract the composed characters from the fallback object. 15211// If composition event is available, we extract a string only at 15212// compositionevent, otherwise extract it at fallback events. 15213if(isComposing){if(topLevelType===TOP_COMPOSITION_END||!canUseCompositionEvent&&isFallbackCompositionEnd(topLevelType,nativeEvent)){var chars=getData();reset();isComposing=false;return chars;}return null;}switch(topLevelType){case TOP_PASTE:// If a paste event occurs after a keypress, throw out the input 15214// chars. Paste events should not lead to BeforeInput events. 15215return null;case TOP_KEY_PRESS:/** 15216 * As of v27, Firefox may fire keypress events even when no character 15217 * will be inserted. A few possibilities: 15218 * 15219 * - `which` is `0`. Arrow keys, Esc key, etc. 15220 * 15221 * - `which` is the pressed key code, but no char is available. 15222 * Ex: 'AltGr + d` in Polish. There is no modified character for 15223 * this key combination and no character is inserted into the 15224 * document, but FF fires the keypress for char code `100` anyway. 15225 * No `input` event will occur. 15226 * 15227 * - `which` is the pressed key code, but a command combination is 15228 * being used. Ex: `Cmd+C`. No character is inserted, and no 15229 * `input` event will occur. 15230 */if(!isKeypressCommand(nativeEvent)){// IE fires the `keypress` event when a user types an emoji via 15231// Touch keyboard of Windows. In such a case, the `char` property 15232// holds an emoji character like `\uD83D\uDE0A`. Because its length 15233// is 2, the property `which` does not represent an emoji correctly. 15234// In such a case, we directly return the `char` property instead of 15235// using `which`. 15236if(nativeEvent.char&&nativeEvent.char.length>1){return nativeEvent.char;}else if(nativeEvent.which){return String.fromCharCode(nativeEvent.which);}}return null;case TOP_COMPOSITION_END:return useFallbackCompositionData&&!isUsingKoreanIME(nativeEvent)?null:nativeEvent.data;default:return null;}}/** 15237 * Extract a SyntheticInputEvent for `beforeInput`, based on either native 15238 * `textInput` or fallback behavior. 15239 * 15240 * @return {?object} A SyntheticInputEvent. 15241 */function extractBeforeInputEvent(topLevelType,targetInst,nativeEvent,nativeEventTarget){var chars;if(canUseTextInputEvent){chars=getNativeBeforeInputChars(topLevelType,nativeEvent);}else{chars=getFallbackBeforeInputChars(topLevelType,nativeEvent);}// If no characters are being inserted, no BeforeInput event should 15242// be fired. 15243if(!chars){return null;}var event=SyntheticInputEvent.getPooled(eventTypes.beforeInput,targetInst,nativeEvent,nativeEventTarget);event.data=chars;accumulateTwoPhaseDispatches(event);return event;}/** 15244 * Create an `onBeforeInput` event to match 15245 * http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105/#events-inputevents. 15246 * 15247 * This event plugin is based on the native `textInput` event 15248 * available in Chrome, Safari, Opera, and IE. This event fires after 15249 * `onKeyPress` and `onCompositionEnd`, but before `onInput`. 15250 * 15251 * `beforeInput` is spec'd but not implemented in any browsers, and 15252 * the `input` event does not provide any useful information about what has 15253 * actually been added, contrary to the spec. Thus, `textInput` is the best 15254 * available event to identify the characters that have actually been inserted 15255 * into the target node. 15256 * 15257 * This plugin is also responsible for emitting `composition` events, thus 15258 * allowing us to share composition fallback code for both `beforeInput` and 15259 * `composition` event types. 15260 */var BeforeInputEventPlugin={eventTypes:eventTypes,extractEvents:function(topLevelType,targetInst,nativeEvent,nativeEventTarget,eventSystemFlags){var composition=extractCompositionEvent(topLevelType,targetInst,nativeEvent,nativeEventTarget);var beforeInput=extractBeforeInputEvent(topLevelType,targetInst,nativeEvent,nativeEventTarget);if(composition===null){return beforeInput;}if(beforeInput===null){return composition;}return[composition,beforeInput];}};/** 15261 * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary 15262 */var supportedInputTypes={color:true,date:true,datetime:true,'datetime-local':true,email:true,month:true,number:true,password:true,range:true,search:true,tel:true,text:true,time:true,url:true,week:true};function isTextInputElement(elem){var nodeName=elem&&elem.nodeName&&elem.nodeName.toLowerCase();if(nodeName==='input'){return!!supportedInputTypes[elem.type];}if(nodeName==='textarea'){return true;}return false;}var eventTypes$1={change:{phasedRegistrationNames:{bubbled:'onChange',captured:'onChangeCapture'},dependencies:[TOP_BLUR,TOP_CHANGE,TOP_CLICK,TOP_FOCUS,TOP_INPUT,TOP_KEY_DOWN,TOP_KEY_UP,TOP_SELECTION_CHANGE]}};function createAndAccumulateChangeEvent(inst,nativeEvent,target){var event=SyntheticEvent.getPooled(eventTypes$1.change,inst,nativeEvent,target);event.type='change';// Flag this event loop as needing state restore. 15263enqueueStateRestore(target);accumulateTwoPhaseDispatches(event);return event;}/** 15264 * For IE shims 15265 */var activeElement=null;var activeElementInst=null;/** 15266 * SECTION: handle `change` event 15267 */function shouldUseChangeEvent(elem){var nodeName=elem.nodeName&&elem.nodeName.toLowerCase();return nodeName==='select'||nodeName==='input'&&elem.type==='file';}function manualDispatchChangeEvent(nativeEvent){var event=createAndAccumulateChangeEvent(activeElementInst,nativeEvent,getEventTarget(nativeEvent));// If change and propertychange bubbled, we'd just bind to it like all the 15268// other events and have it go through ReactBrowserEventEmitter. Since it 15269// doesn't, we manually listen for the events and so we have to enqueue and 15270// process the abstract event manually. 15271// 15272// Batching is necessary here in order to ensure that all event handlers run 15273// before the next rerender (including event handlers attached to ancestor 15274// elements instead of directly on the input). Without this, controlled 15275// components don't work properly in conjunction with event bubbling because 15276// the component is rerendered and the value reverted before all the event 15277// handlers can run. See https://github.com/facebook/react/issues/708. 15278batchedUpdates(runEventInBatch,event);}function runEventInBatch(event){runEventsInBatch(event);}function getInstIfValueChanged(targetInst){var targetNode=getNodeFromInstance$1(targetInst);if(updateValueIfChanged(targetNode)){return targetInst;}}function getTargetInstForChangeEvent(topLevelType,targetInst){if(topLevelType===TOP_CHANGE){return targetInst;}}/** 15279 * SECTION: handle `input` event 15280 */var isInputEventSupported=false;if(canUseDOM){// IE9 claims to support the input event but fails to trigger it when 15281// deleting text, so we ignore its input events. 15282isInputEventSupported=isEventSupported('input')&&(!document.documentMode||document.documentMode>9);}/** 15283 * (For IE <=9) Starts tracking propertychange events on the passed-in element 15284 * and override the value property so that we can distinguish user events from 15285 * value changes in JS. 15286 */function startWatchingForValueChange(target,targetInst){activeElement=target;activeElementInst=targetInst;activeElement.attachEvent('onpropertychange',handlePropertyChange);}/** 15287 * (For IE <=9) Removes the event listeners from the currently-tracked element, 15288 * if any exists. 15289 */function stopWatchingForValueChange(){if(!activeElement){return;}activeElement.detachEvent('onpropertychange',handlePropertyChange);activeElement=null;activeElementInst=null;}/** 15290 * (For IE <=9) Handles a propertychange event, sending a `change` event if 15291 * the value of the active element has changed. 15292 */function handlePropertyChange(nativeEvent){if(nativeEvent.propertyName!=='value'){return;}if(getInstIfValueChanged(activeElementInst)){manualDispatchChangeEvent(nativeEvent);}}function handleEventsForInputEventPolyfill(topLevelType,target,targetInst){if(topLevelType===TOP_FOCUS){// In IE9, propertychange fires for most input events but is buggy and 15293// doesn't fire when text is deleted, but conveniently, selectionchange 15294// appears to fire in all of the remaining cases so we catch those and 15295// forward the event if the value has changed 15296// In either case, we don't want to call the event handler if the value 15297// is changed from JS so we redefine a setter for `.value` that updates 15298// our activeElementValue variable, allowing us to ignore those changes 15299// 15300// stopWatching() should be a noop here but we call it just in case we 15301// missed a blur event somehow. 15302stopWatchingForValueChange();startWatchingForValueChange(target,targetInst);}else if(topLevelType===TOP_BLUR){stopWatchingForValueChange();}}// For IE8 and IE9. 15303function getTargetInstForInputEventPolyfill(topLevelType,targetInst){if(topLevelType===TOP_SELECTION_CHANGE||topLevelType===TOP_KEY_UP||topLevelType===TOP_KEY_DOWN){// On the selectionchange event, the target is just document which isn't 15304// helpful for us so just check activeElement instead. 15305// 15306// 99% of the time, keydown and keyup aren't necessary. IE8 fails to fire 15307// propertychange on the first input event after setting `value` from a 15308// script and fires only keydown, keypress, keyup. Catching keyup usually 15309// gets it and catching keydown lets us fire an event for the first 15310// keystroke if user does a key repeat (it'll be a little delayed: right 15311// before the second keystroke). Other input methods (e.g., paste) seem to 15312// fire selectionchange normally. 15313return getInstIfValueChanged(activeElementInst);}}/** 15314 * SECTION: handle `click` event 15315 */function shouldUseClickEvent(elem){// Use the `click` event to detect changes to checkbox and radio inputs. 15316// This approach works across all browsers, whereas `change` does not fire 15317// until `blur` in IE8. 15318var nodeName=elem.nodeName;return nodeName&&nodeName.toLowerCase()==='input'&&(elem.type==='checkbox'||elem.type==='radio');}function getTargetInstForClickEvent(topLevelType,targetInst){if(topLevelType===TOP_CLICK){return getInstIfValueChanged(targetInst);}}function getTargetInstForInputOrChangeEvent(topLevelType,targetInst){if(topLevelType===TOP_INPUT||topLevelType===TOP_CHANGE){return getInstIfValueChanged(targetInst);}}function handleControlledInputBlur(node){var state=node._wrapperState;if(!state||!state.controlled||node.type!=='number'){return;}{// If controlled, assign the value attribute to the current value on blur 15319setDefaultValue(node,'number',node.value);}}/** 15320 * This plugin creates an `onChange` event that normalizes change events 15321 * across form elements. This event fires at a time when it's possible to 15322 * change the element's value without seeing a flicker. 15323 * 15324 * Supported elements are: 15325 * - input (see `isTextInputElement`) 15326 * - textarea 15327 * - select 15328 */var ChangeEventPlugin={eventTypes:eventTypes$1,_isInputEventSupported:isInputEventSupported,extractEvents:function(topLevelType,targetInst,nativeEvent,nativeEventTarget,eventSystemFlags){var targetNode=targetInst?getNodeFromInstance$1(targetInst):window;var getTargetInstFunc,handleEventFunc;if(shouldUseChangeEvent(targetNode)){getTargetInstFunc=getTargetInstForChangeEvent;}else if(isTextInputElement(targetNode)){if(isInputEventSupported){getTargetInstFunc=getTargetInstForInputOrChangeEvent;}else{getTargetInstFunc=getTargetInstForInputEventPolyfill;handleEventFunc=handleEventsForInputEventPolyfill;}}else if(shouldUseClickEvent(targetNode)){getTargetInstFunc=getTargetInstForClickEvent;}if(getTargetInstFunc){var inst=getTargetInstFunc(topLevelType,targetInst);if(inst){var event=createAndAccumulateChangeEvent(inst,nativeEvent,nativeEventTarget);return event;}}if(handleEventFunc){handleEventFunc(topLevelType,targetNode,targetInst);}// When blurring, set the value attribute for number inputs 15329if(topLevelType===TOP_BLUR){handleControlledInputBlur(targetNode);}}};var SyntheticUIEvent=SyntheticEvent.extend({view:null,detail:null});/** 15330 * Translation from modifier key to the associated property in the event. 15331 * @see http://www.w3.org/TR/DOM-Level-3-Events/#keys-Modifiers 15332 */var modifierKeyToProp={Alt:'altKey',Control:'ctrlKey',Meta:'metaKey',Shift:'shiftKey'};// Older browsers (Safari <= 10, iOS Safari <= 10.2) do not support 15333// getModifierState. If getModifierState is not supported, we map it to a set of 15334// modifier keys exposed by the event. In this case, Lock-keys are not supported. 15335function modifierStateGetter(keyArg){var syntheticEvent=this;var nativeEvent=syntheticEvent.nativeEvent;if(nativeEvent.getModifierState){return nativeEvent.getModifierState(keyArg);}var keyProp=modifierKeyToProp[keyArg];return keyProp?!!nativeEvent[keyProp]:false;}function getEventModifierState(nativeEvent){return modifierStateGetter;}var previousScreenX=0;var previousScreenY=0;// Use flags to signal movementX/Y has already been set 15336var isMovementXSet=false;var isMovementYSet=false;/** 15337 * @interface MouseEvent 15338 * @see http://www.w3.org/TR/DOM-Level-3-Events/ 15339 */var SyntheticMouseEvent=SyntheticUIEvent.extend({screenX:null,screenY:null,clientX:null,clientY:null,pageX:null,pageY:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,getModifierState:getEventModifierState,button:null,buttons:null,relatedTarget:function(event){return event.relatedTarget||(event.fromElement===event.srcElement?event.toElement:event.fromElement);},movementX:function(event){if('movementX'in event){return event.movementX;}var screenX=previousScreenX;previousScreenX=event.screenX;if(!isMovementXSet){isMovementXSet=true;return 0;}return event.type==='mousemove'?event.screenX-screenX:0;},movementY:function(event){if('movementY'in event){return event.movementY;}var screenY=previousScreenY;previousScreenY=event.screenY;if(!isMovementYSet){isMovementYSet=true;return 0;}return event.type==='mousemove'?event.screenY-screenY:0;}});/** 15340 * @interface PointerEvent 15341 * @see http://www.w3.org/TR/pointerevents/ 15342 */var SyntheticPointerEvent=SyntheticMouseEvent.extend({pointerId:null,width:null,height:null,pressure:null,tangentialPressure:null,tiltX:null,tiltY:null,twist:null,pointerType:null,isPrimary:null});var eventTypes$2={mouseEnter:{registrationName:'onMouseEnter',dependencies:[TOP_MOUSE_OUT,TOP_MOUSE_OVER]},mouseLeave:{registrationName:'onMouseLeave',dependencies:[TOP_MOUSE_OUT,TOP_MOUSE_OVER]},pointerEnter:{registrationName:'onPointerEnter',dependencies:[TOP_POINTER_OUT,TOP_POINTER_OVER]},pointerLeave:{registrationName:'onPointerLeave',dependencies:[TOP_POINTER_OUT,TOP_POINTER_OVER]}};var EnterLeaveEventPlugin={eventTypes:eventTypes$2,/** 15343 * For almost every interaction we care about, there will be both a top-level 15344 * `mouseover` and `mouseout` event that occurs. Only use `mouseout` so that 15345 * we do not extract duplicate events. However, moving the mouse into the 15346 * browser from outside will not fire a `mouseout` event. In this case, we use 15347 * the `mouseover` top-level event. 15348 */extractEvents:function(topLevelType,targetInst,nativeEvent,nativeEventTarget,eventSystemFlags){var isOverEvent=topLevelType===TOP_MOUSE_OVER||topLevelType===TOP_POINTER_OVER;var isOutEvent=topLevelType===TOP_MOUSE_OUT||topLevelType===TOP_POINTER_OUT;if(isOverEvent&&(eventSystemFlags&IS_REPLAYED)===0&&(nativeEvent.relatedTarget||nativeEvent.fromElement)){// If this is an over event with a target, then we've already dispatched 15349// the event in the out event of the other target. If this is replayed, 15350// then it's because we couldn't dispatch against this target previously 15351// so we have to do it now instead. 15352return null;}if(!isOutEvent&&!isOverEvent){// Must not be a mouse or pointer in or out - ignoring. 15353return null;}var win;if(nativeEventTarget.window===nativeEventTarget){// `nativeEventTarget` is probably a window object. 15354win=nativeEventTarget;}else{// TODO: Figure out why `ownerDocument` is sometimes undefined in IE8. 15355var doc=nativeEventTarget.ownerDocument;if(doc){win=doc.defaultView||doc.parentWindow;}else{win=window;}}var from;var to;if(isOutEvent){from=targetInst;var related=nativeEvent.relatedTarget||nativeEvent.toElement;to=related?getClosestInstanceFromNode(related):null;if(to!==null){var nearestMounted=getNearestMountedFiber(to);if(to!==nearestMounted||to.tag!==HostComponent&&to.tag!==HostText){to=null;}}}else{// Moving to a node from outside the window. 15356from=null;to=targetInst;}if(from===to){// Nothing pertains to our managed components. 15357return null;}var eventInterface,leaveEventType,enterEventType,eventTypePrefix;if(topLevelType===TOP_MOUSE_OUT||topLevelType===TOP_MOUSE_OVER){eventInterface=SyntheticMouseEvent;leaveEventType=eventTypes$2.mouseLeave;enterEventType=eventTypes$2.mouseEnter;eventTypePrefix='mouse';}else if(topLevelType===TOP_POINTER_OUT||topLevelType===TOP_POINTER_OVER){eventInterface=SyntheticPointerEvent;leaveEventType=eventTypes$2.pointerLeave;enterEventType=eventTypes$2.pointerEnter;eventTypePrefix='pointer';}var fromNode=from==null?win:getNodeFromInstance$1(from);var toNode=to==null?win:getNodeFromInstance$1(to);var leave=eventInterface.getPooled(leaveEventType,from,nativeEvent,nativeEventTarget);leave.type=eventTypePrefix+'leave';leave.target=fromNode;leave.relatedTarget=toNode;var enter=eventInterface.getPooled(enterEventType,to,nativeEvent,nativeEventTarget);enter.type=eventTypePrefix+'enter';enter.target=toNode;enter.relatedTarget=fromNode;accumulateEnterLeaveDispatches(leave,enter,from,to);// If we are not processing the first ancestor, then we 15358// should not process the same nativeEvent again, as we 15359// will have already processed it in the first ancestor. 15360if((eventSystemFlags&IS_FIRST_ANCESTOR)===0){return[leave];}return[leave,enter];}};/** 15361 * inlined Object.is polyfill to avoid requiring consumers ship their own 15362 * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is 15363 */function is(x,y){return x===y&&(x!==0||1/x===1/y)||x!==x&&y!==y// eslint-disable-line no-self-compare 15364;}var objectIs=typeof Object.is==='function'?Object.is:is;var hasOwnProperty$2=Object.prototype.hasOwnProperty;/** 15365 * Performs equality by iterating through keys on an object and returning false 15366 * when any key has values which are not strictly equal between the arguments. 15367 * Returns true when the values of all keys are strictly equal. 15368 */function shallowEqual(objA,objB){if(objectIs(objA,objB)){return true;}if(typeof objA!=='object'||objA===null||typeof objB!=='object'||objB===null){return false;}var keysA=Object.keys(objA);var keysB=Object.keys(objB);if(keysA.length!==keysB.length){return false;}// Test for A's keys different from B. 15369for(var i=0;i<keysA.length;i++){if(!hasOwnProperty$2.call(objB,keysA[i])||!objectIs(objA[keysA[i]],objB[keysA[i]])){return false;}}return true;}var skipSelectionChangeEvent=canUseDOM&&'documentMode'in document&&document.documentMode<=11;var eventTypes$3={select:{phasedRegistrationNames:{bubbled:'onSelect',captured:'onSelectCapture'},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]}};var activeElement$1=null;var activeElementInst$1=null;var lastSelection=null;var mouseDown=false;/** 15370 * Get an object which is a unique representation of the current selection. 15371 * 15372 * The return value will not be consistent across nodes or browsers, but 15373 * two identical selections on the same node will return identical objects. 15374 * 15375 * @param {DOMElement} node 15376 * @return {object} 15377 */function getSelection$1(node){if('selectionStart'in node&&hasSelectionCapabilities(node)){return{start:node.selectionStart,end:node.selectionEnd};}else{var win=node.ownerDocument&&node.ownerDocument.defaultView||window;var selection=win.getSelection();return{anchorNode:selection.anchorNode,anchorOffset:selection.anchorOffset,focusNode:selection.focusNode,focusOffset:selection.focusOffset};}}/** 15378 * Get document associated with the event target. 15379 * 15380 * @param {object} nativeEventTarget 15381 * @return {Document} 15382 */function getEventTargetDocument(eventTarget){return eventTarget.window===eventTarget?eventTarget.document:eventTarget.nodeType===DOCUMENT_NODE?eventTarget:eventTarget.ownerDocument;}/** 15383 * Poll selection to see whether it's changed. 15384 * 15385 * @param {object} nativeEvent 15386 * @param {object} nativeEventTarget 15387 * @return {?SyntheticEvent} 15388 */function constructSelectEvent(nativeEvent,nativeEventTarget){// Ensure we have the right element, and that the user is not dragging a 15389// selection (this matches native `select` event behavior). In HTML5, select 15390// fires only on input and textarea thus if there's no focused element we 15391// won't dispatch. 15392var doc=getEventTargetDocument(nativeEventTarget);if(mouseDown||activeElement$1==null||activeElement$1!==getActiveElement(doc)){return null;}// Only fire when selection has actually changed. 15393var currentSelection=getSelection$1(activeElement$1);if(!lastSelection||!shallowEqual(lastSelection,currentSelection)){lastSelection=currentSelection;var syntheticEvent=SyntheticEvent.getPooled(eventTypes$3.select,activeElementInst$1,nativeEvent,nativeEventTarget);syntheticEvent.type='select';syntheticEvent.target=activeElement$1;accumulateTwoPhaseDispatches(syntheticEvent);return syntheticEvent;}return null;}/** 15394 * This plugin creates an `onSelect` event that normalizes select events 15395 * across form elements. 15396 * 15397 * Supported elements are: 15398 * - input (see `isTextInputElement`) 15399 * - textarea 15400 * - contentEditable 15401 * 15402 * This differs from native browser implementations in the following ways: 15403 * - Fires on contentEditable fields as well as inputs. 15404 * - Fires for collapsed selection. 15405 * - Fires after user input. 15406 */var SelectEventPlugin={eventTypes:eventTypes$3,extractEvents:function(topLevelType,targetInst,nativeEvent,nativeEventTarget,eventSystemFlags,container){var containerOrDoc=container||getEventTargetDocument(nativeEventTarget);// Track whether all listeners exists for this plugin. If none exist, we do 15407// not extract events. See #3639. 15408if(!containerOrDoc||!isListeningToAllDependencies('onSelect',containerOrDoc)){return null;}var targetNode=targetInst?getNodeFromInstance$1(targetInst):window;switch(topLevelType){// Track the input node that has focus. 15409case TOP_FOCUS:if(isTextInputElement(targetNode)||targetNode.contentEditable==='true'){activeElement$1=targetNode;activeElementInst$1=targetInst;lastSelection=null;}break;case TOP_BLUR:activeElement$1=null;activeElementInst$1=null;lastSelection=null;break;// Don't fire the event while the user is dragging. This matches the 15410// semantics of the native select event. 15411case TOP_MOUSE_DOWN:mouseDown=true;break;case TOP_CONTEXT_MENU:case TOP_MOUSE_UP:case TOP_DRAG_END:mouseDown=false;return constructSelectEvent(nativeEvent,nativeEventTarget);// Chrome and IE fire non-standard event when selection is changed (and 15412// sometimes when it hasn't). IE's event fires out of order with respect 15413// to key and input events on deletion, so we discard it. 15414// 15415// Firefox doesn't support selectionchange, so check selection status 15416// after each key entry. The selection changes after keydown and before 15417// keyup, but we check on keydown as well in the case of holding down a 15418// key, when multiple keydown events are fired but only one keyup is. 15419// This is also our approach for IE handling, for the reason above. 15420case TOP_SELECTION_CHANGE:if(skipSelectionChangeEvent){break;}// falls through 15421case TOP_KEY_DOWN:case TOP_KEY_UP:return constructSelectEvent(nativeEvent,nativeEventTarget);}return null;}};/** 15422 * @interface Event 15423 * @see http://www.w3.org/TR/css3-animations/#AnimationEvent-interface 15424 * @see https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent 15425 */var SyntheticAnimationEvent=SyntheticEvent.extend({animationName:null,elapsedTime:null,pseudoElement:null});/** 15426 * @interface Event 15427 * @see http://www.w3.org/TR/clipboard-apis/ 15428 */var SyntheticClipboardEvent=SyntheticEvent.extend({clipboardData:function(event){return'clipboardData'in event?event.clipboardData:window.clipboardData;}});/** 15429 * @interface FocusEvent 15430 * @see http://www.w3.org/TR/DOM-Level-3-Events/ 15431 */var SyntheticFocusEvent=SyntheticUIEvent.extend({relatedTarget:null});/** 15432 * `charCode` represents the actual "character code" and is safe to use with 15433 * `String.fromCharCode`. As such, only keys that correspond to printable 15434 * characters produce a valid `charCode`, the only exception to this is Enter. 15435 * The Tab-key is considered non-printable and does not have a `charCode`, 15436 * presumably because it does not produce a tab-character in browsers. 15437 * 15438 * @param {object} nativeEvent Native browser event. 15439 * @return {number} Normalized `charCode` property. 15440 */function getEventCharCode(nativeEvent){var charCode;var keyCode=nativeEvent.keyCode;if('charCode'in nativeEvent){charCode=nativeEvent.charCode;// FF does not set `charCode` for the Enter-key, check against `keyCode`. 15441if(charCode===0&&keyCode===13){charCode=13;}}else{// IE8 does not implement `charCode`, but `keyCode` has the correct value. 15442charCode=keyCode;}// IE and Edge (on Windows) and Chrome / Safari (on Windows and Linux) 15443// report Enter as charCode 10 when ctrl is pressed. 15444if(charCode===10){charCode=13;}// Some non-printable keys are reported in `charCode`/`keyCode`, discard them. 15445// Must not discard the (non-)printable Enter-key. 15446if(charCode>=32||charCode===13){return charCode;}return 0;}/** 15447 * Normalization of deprecated HTML5 `key` values 15448 * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names 15449 */var normalizeKey={Esc:'Escape',Spacebar:' ',Left:'ArrowLeft',Up:'ArrowUp',Right:'ArrowRight',Down:'ArrowDown',Del:'Delete',Win:'OS',Menu:'ContextMenu',Apps:'ContextMenu',Scroll:'ScrollLock',MozPrintableKey:'Unidentified'};/** 15450 * Translation from legacy `keyCode` to HTML5 `key` 15451 * Only special keys supported, all others depend on keyboard layout or browser 15452 * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names 15453 */var translateToKey={'8':'Backspace','9':'Tab','12':'Clear','13':'Enter','16':'Shift','17':'Control','18':'Alt','19':'Pause','20':'CapsLock','27':'Escape','32':' ','33':'PageUp','34':'PageDown','35':'End','36':'Home','37':'ArrowLeft','38':'ArrowUp','39':'ArrowRight','40':'ArrowDown','45':'Insert','46':'Delete','112':'F1','113':'F2','114':'F3','115':'F4','116':'F5','117':'F6','118':'F7','119':'F8','120':'F9','121':'F10','122':'F11','123':'F12','144':'NumLock','145':'ScrollLock','224':'Meta'};/** 15454 * @param {object} nativeEvent Native browser event. 15455 * @return {string} Normalized `key` property. 15456 */function getEventKey(nativeEvent){if(nativeEvent.key){// Normalize inconsistent values reported by browsers due to 15457// implementations of a working draft specification. 15458// FireFox implements `key` but returns `MozPrintableKey` for all 15459// printable characters (normalized to `Unidentified`), ignore it. 15460var key=normalizeKey[nativeEvent.key]||nativeEvent.key;if(key!=='Unidentified'){return key;}}// Browser does not implement `key`, polyfill as much of it as we can. 15461if(nativeEvent.type==='keypress'){var charCode=getEventCharCode(nativeEvent);// The enter-key is technically both printable and non-printable and can 15462// thus be captured by `keypress`, no other non-printable key should. 15463return charCode===13?'Enter':String.fromCharCode(charCode);}if(nativeEvent.type==='keydown'||nativeEvent.type==='keyup'){// While user keyboard layout determines the actual meaning of each 15464// `keyCode` value, almost all function keys have a universal value. 15465return translateToKey[nativeEvent.keyCode]||'Unidentified';}return'';}/** 15466 * @interface KeyboardEvent 15467 * @see http://www.w3.org/TR/DOM-Level-3-Events/ 15468 */var SyntheticKeyboardEvent=SyntheticUIEvent.extend({key:getEventKey,location:null,ctrlKey:null,shiftKey:null,altKey:null,metaKey:null,repeat:null,locale:null,getModifierState:getEventModifierState,// Legacy Interface 15469charCode:function(event){// `charCode` is the result of a KeyPress event and represents the value of 15470// the actual printable character. 15471// KeyPress is deprecated, but its replacement is not yet final and not 15472// implemented in any major browser. Only KeyPress has charCode. 15473if(event.type==='keypress'){return getEventCharCode(event);}return 0;},keyCode:function(event){// `keyCode` is the result of a KeyDown/Up event and represents the value of 15474// physical keyboard key. 15475// The actual meaning of the value depends on the users' keyboard layout 15476// which cannot be detected. Assuming that it is a US keyboard layout 15477// provides a surprisingly accurate mapping for US and European users. 15478// Due to this, it is left to the user to implement at this time. 15479if(event.type==='keydown'||event.type==='keyup'){return event.keyCode;}return 0;},which:function(event){// `which` is an alias for either `keyCode` or `charCode` depending on the 15480// type of the event. 15481if(event.type==='keypress'){return getEventCharCode(event);}if(event.type==='keydown'||event.type==='keyup'){return event.keyCode;}return 0;}});/** 15482 * @interface DragEvent 15483 * @see http://www.w3.org/TR/DOM-Level-3-Events/ 15484 */var SyntheticDragEvent=SyntheticMouseEvent.extend({dataTransfer:null});/** 15485 * @interface TouchEvent 15486 * @see http://www.w3.org/TR/touch-events/ 15487 */var SyntheticTouchEvent=SyntheticUIEvent.extend({touches:null,targetTouches:null,changedTouches:null,altKey:null,metaKey:null,ctrlKey:null,shiftKey:null,getModifierState:getEventModifierState});/** 15488 * @interface Event 15489 * @see http://www.w3.org/TR/2009/WD-css3-transitions-20090320/#transition-events- 15490 * @see https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent 15491 */var SyntheticTransitionEvent=SyntheticEvent.extend({propertyName:null,elapsedTime:null,pseudoElement:null});/** 15492 * @interface WheelEvent 15493 * @see http://www.w3.org/TR/DOM-Level-3-Events/ 15494 */var SyntheticWheelEvent=SyntheticMouseEvent.extend({deltaX:function(event){return'deltaX'in event?event.deltaX:// Fallback to `wheelDeltaX` for Webkit and normalize (right is positive). 15495'wheelDeltaX'in event?-event.wheelDeltaX:0;},deltaY:function(event){return'deltaY'in event?event.deltaY:// Fallback to `wheelDeltaY` for Webkit and normalize (down is positive). 15496'wheelDeltaY'in event?-event.wheelDeltaY:// Fallback to `wheelDelta` for IE<9 and normalize (down is positive). 15497'wheelDelta'in event?-event.wheelDelta:0;},deltaZ:null,// Browsers without "deltaMode" is reporting in raw wheel delta where one 15498// notch on the scroll is always +/- 120, roughly equivalent to pixels. 15499// A good approximation of DOM_DELTA_LINE (1) is 5% of viewport size or 15500// ~40 pixels, for DOM_DELTA_SCREEN (2) it is 87.5% of viewport size. 15501deltaMode:null});var 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];var SimpleEventPlugin={// simpleEventPluginEventTypes gets populated from 15502// the DOMEventProperties module. 15503eventTypes:simpleEventPluginEventTypes,extractEvents:function(topLevelType,targetInst,nativeEvent,nativeEventTarget,eventSystemFlags){var dispatchConfig=topLevelEventsToDispatchConfig.get(topLevelType);if(!dispatchConfig){return null;}var EventConstructor;switch(topLevelType){case TOP_KEY_PRESS:// Firefox creates a keypress event for function keys too. This removes 15504// the unwanted keypress events. Enter is however both printable and 15505// non-printable. One would expect Tab to be as well (but it isn't). 15506if(getEventCharCode(nativeEvent)===0){return null;}/* falls through */case TOP_KEY_DOWN:case TOP_KEY_UP:EventConstructor=SyntheticKeyboardEvent;break;case TOP_BLUR:case TOP_FOCUS:EventConstructor=SyntheticFocusEvent;break;case TOP_CLICK:// Firefox creates a click event on right mouse clicks. This removes the 15507// unwanted click events. 15508if(nativeEvent.button===2){return null;}/* falls through */case TOP_AUX_CLICK:case TOP_DOUBLE_CLICK:case TOP_MOUSE_DOWN:case TOP_MOUSE_MOVE:case TOP_MOUSE_UP:// TODO: Disabled elements should not respond to mouse events 15509/* falls through */case TOP_MOUSE_OUT:case TOP_MOUSE_OVER:case TOP_CONTEXT_MENU:EventConstructor=SyntheticMouseEvent;break;case TOP_DRAG:case TOP_DRAG_END:case TOP_DRAG_ENTER:case TOP_DRAG_EXIT:case TOP_DRAG_LEAVE:case TOP_DRAG_OVER:case TOP_DRAG_START:case TOP_DROP:EventConstructor=SyntheticDragEvent;break;case TOP_TOUCH_CANCEL:case TOP_TOUCH_END:case TOP_TOUCH_MOVE:case TOP_TOUCH_START:EventConstructor=SyntheticTouchEvent;break;case TOP_ANIMATION_END:case TOP_ANIMATION_ITERATION:case TOP_ANIMATION_START:EventConstructor=SyntheticAnimationEvent;break;case TOP_TRANSITION_END:EventConstructor=SyntheticTransitionEvent;break;case TOP_SCROLL:EventConstructor=SyntheticUIEvent;break;case TOP_WHEEL:EventConstructor=SyntheticWheelEvent;break;case TOP_COPY:case TOP_CUT:case TOP_PASTE:EventConstructor=SyntheticClipboardEvent;break;case TOP_GOT_POINTER_CAPTURE:case TOP_LOST_POINTER_CAPTURE:case TOP_POINTER_CANCEL:case TOP_POINTER_DOWN:case TOP_POINTER_MOVE:case TOP_POINTER_OUT:case TOP_POINTER_OVER:case TOP_POINTER_UP:EventConstructor=SyntheticPointerEvent;break;default:{if(knownHTMLTopLevelTypes.indexOf(topLevelType)===-1){error('SimpleEventPlugin: Unhandled event type, `%s`. This warning '+'is likely caused by a bug in React. Please file an issue.',topLevelType);}}// HTML Events 15510// @see http://www.w3.org/TR/html5/index.html#events-0 15511EventConstructor=SyntheticEvent;break;}var event=EventConstructor.getPooled(dispatchConfig,targetInst,nativeEvent,nativeEventTarget);accumulateTwoPhaseDispatches(event);return event;}};/** 15512 * Specifies a deterministic ordering of `EventPlugin`s. A convenient way to 15513 * reason about plugins, without having to package every one of them. This 15514 * is better than having plugins be ordered in the same order that they 15515 * are injected because that ordering would be influenced by the packaging order. 15516 * `ResponderEventPlugin` must occur before `SimpleEventPlugin` so that 15517 * preventing default on events is convenient in `SimpleEventPlugin` handlers. 15518 */var DOMEventPluginOrder=['ResponderEventPlugin','SimpleEventPlugin','EnterLeaveEventPlugin','ChangeEventPlugin','SelectEventPlugin','BeforeInputEventPlugin'];/** 15519 * Inject modules for resolving DOM hierarchy and plugin ordering. 15520 */injectEventPluginOrder(DOMEventPluginOrder);setComponentTree(getFiberCurrentPropsFromNode$1,getInstanceFromNode$1,getNodeFromInstance$1);/** 15521 * Some important event plugins included by default (without having to require 15522 * them). 15523 */injectEventPluginsByName({SimpleEventPlugin:SimpleEventPlugin,EnterLeaveEventPlugin:EnterLeaveEventPlugin,ChangeEventPlugin:ChangeEventPlugin,SelectEventPlugin:SelectEventPlugin,BeforeInputEventPlugin:BeforeInputEventPlugin});// Prefix measurements so that it's possible to filter them. 15524// Longer prefixes are hard to read in DevTools. 15525var reactEmoji="\u269B";var warningEmoji="\u26D4";var 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. 15526// TODO: this looks the same as nextUnitOfWork in scheduler. Can we unify them? 15527var currentFiber=null;// If we're in the middle of user code, which fiber and method is it? 15528// Reusing `currentFiber` would be confusing for this because user code fiber 15529// can change during commit phase too, but we don't need to unwind it (since 15530// lifecycles in the commit phase don't resemble a tree). 15531var currentPhase=null;var currentPhaseFiber=null;// Did lifecycle hook schedule an update? This is often a performance problem, 15532// so we will keep track of it, and include it in the report. 15533// Track commits caused by cascading updates. 15534var isCommitting=false;var hasScheduledUpdateInCurrentCommit=false;var hasScheduledUpdateInCurrentPhase=false;var commitCountInCurrentWorkLoop=0;var effectCountInCurrentCommit=0;// to avoid stretch the commit phase with measurement overhead. 15535var labelsInCurrentCommit=new Set();var formatMarkName=function(markName){return reactEmoji+" "+markName;};var formatLabel=function(label,warning){var prefix=warning?warningEmoji+" ":reactEmoji+" ";var suffix=warning?" Warning: "+warning:'';return""+prefix+label+suffix;};var beginMark=function(markName){performance.mark(formatMarkName(markName));};var clearMark=function(markName){performance.clearMarks(formatMarkName(markName));};var endMark=function(label,markName,warning){var formattedMarkName=formatMarkName(markName);var formattedLabel=formatLabel(label,warning);try{performance.measure(formattedLabel,formattedMarkName);}catch(err){}// If previous mark was missing for some reason, this will throw. 15536// This could only happen if React crashed in an unexpected place earlier. 15537// Don't pile on with more errors. 15538// Clear marks immediately to avoid growing buffer. 15539performance.clearMarks(formattedMarkName);performance.clearMeasures(formattedLabel);};var getFiberMarkName=function(label,debugID){return label+" (#"+debugID+")";};var getFiberLabel=function(componentName,isMounted,phase){if(phase===null){// These are composite component total time measurements. 15540return componentName+" ["+(isMounted?'update':'mount')+"]";}else{// Composite component methods. 15541return componentName+"."+phase;}};var beginFiberMark=function(fiber,phase){var componentName=getComponentName(fiber.type)||'Unknown';var debugID=fiber._debugID;var isMounted=fiber.alternate!==null;var label=getFiberLabel(componentName,isMounted,phase);if(isCommitting&&labelsInCurrentCommit.has(label)){// During the commit phase, we don't show duplicate labels because 15542// there is a fixed overhead for every measurement, and we don't 15543// want to stretch the commit phase beyond necessary. 15544return false;}labelsInCurrentCommit.add(label);var markName=getFiberMarkName(label,debugID);beginMark(markName);return true;};var clearFiberMark=function(fiber,phase){var componentName=getComponentName(fiber.type)||'Unknown';var debugID=fiber._debugID;var isMounted=fiber.alternate!==null;var label=getFiberLabel(componentName,isMounted,phase);var markName=getFiberMarkName(label,debugID);clearMark(markName);};var endFiberMark=function(fiber,phase,warning){var componentName=getComponentName(fiber.type)||'Unknown';var debugID=fiber._debugID;var isMounted=fiber.alternate!==null;var label=getFiberLabel(componentName,isMounted,phase);var markName=getFiberMarkName(label,debugID);endMark(label,markName,warning);};var shouldIgnoreFiber=function(fiber){// Host components should be skipped in the timeline. 15545// We could check typeof fiber.type, but does this work with RN? 15546switch(fiber.tag){case HostRoot:case HostComponent:case HostText:case HostPortal:case Fragment:case ContextProvider:case ContextConsumer:case Mode:return true;default:return false;}};var clearPendingPhaseMeasurement=function(){if(currentPhase!==null&¤tPhaseFiber!==null){clearFiberMark(currentPhaseFiber,currentPhase);}currentPhaseFiber=null;currentPhase=null;hasScheduledUpdateInCurrentPhase=false;};var pauseTimers=function(){// Stops all currently active measurements so that they can be resumed 15547// if we continue in a later deferred loop from the same unit of work. 15548var fiber=currentFiber;while(fiber){if(fiber._debugIsCurrentlyTiming){endFiberMark(fiber,null,null);}fiber=fiber.return;}};var resumeTimersRecursively=function(fiber){if(fiber.return!==null){resumeTimersRecursively(fiber.return);}if(fiber._debugIsCurrentlyTiming){beginFiberMark(fiber,null);}};var resumeTimers=function(){// Resumes all measurements that were active during the last deferred loop. 15549if(currentFiber!==null){resumeTimersRecursively(currentFiber);}};function recordEffect(){{effectCountInCurrentCommit++;}}function recordScheduleUpdate(){{if(isCommitting){hasScheduledUpdateInCurrentCommit=true;}if(currentPhase!==null&¤tPhase!=='componentWillMount'&¤tPhase!=='componentWillReceiveProps'){hasScheduledUpdateInCurrentPhase=true;}}}function startWorkTimer(fiber){{if(!supportsUserTiming||shouldIgnoreFiber(fiber)){return;}// If we pause, this is the fiber to unwind from. 15550currentFiber=fiber;if(!beginFiberMark(fiber,null)){return;}fiber._debugIsCurrentlyTiming=true;}}function cancelWorkTimer(fiber){{if(!supportsUserTiming||shouldIgnoreFiber(fiber)){return;}// Remember we shouldn't complete measurement for this fiber. 15551// Otherwise flamechart will be deep even for small updates. 15552fiber._debugIsCurrentlyTiming=false;clearFiberMark(fiber,null);}}function stopWorkTimer(fiber){{if(!supportsUserTiming||shouldIgnoreFiber(fiber)){return;}// If we pause, its parent is the fiber to unwind from. 15553currentFiber=fiber.return;if(!fiber._debugIsCurrentlyTiming){return;}fiber._debugIsCurrentlyTiming=false;endFiberMark(fiber,null,null);}}function stopFailedWorkTimer(fiber){{if(!supportsUserTiming||shouldIgnoreFiber(fiber)){return;}// If we pause, its parent is the fiber to unwind from. 15554currentFiber=fiber.return;if(!fiber._debugIsCurrentlyTiming){return;}fiber._debugIsCurrentlyTiming=false;var warning=fiber.tag===SuspenseComponent?'Rendering was suspended':'An error was thrown inside this error boundary';endFiberMark(fiber,null,warning);}}function startPhaseTimer(fiber,phase){{if(!supportsUserTiming){return;}clearPendingPhaseMeasurement();if(!beginFiberMark(fiber,phase)){return;}currentPhaseFiber=fiber;currentPhase=phase;}}function stopPhaseTimer(){{if(!supportsUserTiming){return;}if(currentPhase!==null&¤tPhaseFiber!==null){var warning=hasScheduledUpdateInCurrentPhase?'Scheduled a cascading update':null;endFiberMark(currentPhaseFiber,currentPhase,warning);}currentPhase=null;currentPhaseFiber=null;}}function startWorkLoopTimer(nextUnitOfWork){{currentFiber=nextUnitOfWork;if(!supportsUserTiming){return;}commitCountInCurrentWorkLoop=0;// This is top level call. 15555// Any other measurements are performed within. 15556beginMark('(React Tree Reconciliation)');// Resume any measurements that were in progress during the last loop. 15557resumeTimers();}}function stopWorkLoopTimer(interruptedBy,didCompleteRoot){{if(!supportsUserTiming){return;}var warning=null;if(interruptedBy!==null){if(interruptedBy.tag===HostRoot){warning='A top-level update interrupted the previous render';}else{var componentName=getComponentName(interruptedBy.type)||'Unknown';warning="An update to "+componentName+" interrupted the previous render";}}else if(commitCountInCurrentWorkLoop>1){warning='There were cascading updates';}commitCountInCurrentWorkLoop=0;var label=didCompleteRoot?'(React Tree Reconciliation: Completed Root)':'(React Tree Reconciliation: Yielded)';// Pause any measurements until the next loop. 15558pauseTimers();endMark(label,'(React Tree Reconciliation)',warning);}}function startCommitTimer(){{if(!supportsUserTiming){return;}isCommitting=true;hasScheduledUpdateInCurrentCommit=false;labelsInCurrentCommit.clear();beginMark('(Committing Changes)');}}function stopCommitTimer(){{if(!supportsUserTiming){return;}var warning=null;if(hasScheduledUpdateInCurrentCommit){warning='Lifecycle hook scheduled a cascading update';}else if(commitCountInCurrentWorkLoop>0){warning='Caused by a cascading update in earlier commit';}hasScheduledUpdateInCurrentCommit=false;commitCountInCurrentWorkLoop++;isCommitting=false;labelsInCurrentCommit.clear();endMark('(Committing Changes)','(Committing Changes)',warning);}}function startCommitSnapshotEffectsTimer(){{if(!supportsUserTiming){return;}effectCountInCurrentCommit=0;beginMark('(Committing Snapshot Effects)');}}function stopCommitSnapshotEffectsTimer(){{if(!supportsUserTiming){return;}var count=effectCountInCurrentCommit;effectCountInCurrentCommit=0;endMark("(Committing Snapshot Effects: "+count+" Total)",'(Committing Snapshot Effects)',null);}}function startCommitHostEffectsTimer(){{if(!supportsUserTiming){return;}effectCountInCurrentCommit=0;beginMark('(Committing Host Effects)');}}function stopCommitHostEffectsTimer(){{if(!supportsUserTiming){return;}var count=effectCountInCurrentCommit;effectCountInCurrentCommit=0;endMark("(Committing Host Effects: "+count+" Total)",'(Committing Host Effects)',null);}}function startCommitLifeCyclesTimer(){{if(!supportsUserTiming){return;}effectCountInCurrentCommit=0;beginMark('(Calling Lifecycle Methods)');}}function stopCommitLifeCyclesTimer(){{if(!supportsUserTiming){return;}var count=effectCountInCurrentCommit;effectCountInCurrentCommit=0;endMark("(Calling Lifecycle Methods: "+count+" Total)",'(Calling Lifecycle Methods)',null);}}var valueStack=[];var fiberStack;{fiberStack=[];}var index=-1;function createCursor(defaultValue){return{current:defaultValue};}function pop(cursor,fiber){if(index<0){{error('Unexpected pop.');}return;}{if(fiber!==fiberStack[index]){error('Unexpected Fiber popped.');}}cursor.current=valueStack[index];valueStack[index]=null;{fiberStack[index]=null;}index--;}function push(cursor,value,fiber){index++;valueStack[index]=cursor.current;{fiberStack[index]=fiber;}cursor.current=value;}var warnedAboutMissingGetChildContext;{warnedAboutMissingGetChildContext={};}var emptyContextObject={};{Object.freeze(emptyContextObject);}// A cursor to the current merged context object on the stack. 15559var contextStackCursor=createCursor(emptyContextObject);// A cursor to a boolean indicating whether the context has changed. 15560var didPerformWorkStackCursor=createCursor(false);// Keep track of the previous context object that was on the stack. 15561// We use this to get access to the parent context after we have already 15562// pushed the next context provider, and now need to merge their contexts. 15563var previousContext=emptyContextObject;function getUnmaskedContext(workInProgress,Component,didPushOwnContextIfProvider){{if(didPushOwnContextIfProvider&&isContextProvider(Component)){// If the fiber is a context provider itself, when we read its context 15564// we may have already pushed its own child context on the stack. A context 15565// provider should not "see" its own child context. Therefore we read the 15566// previous (parent) context instead for a context provider. 15567return previousContext;}return contextStackCursor.current;}}function cacheContext(workInProgress,unmaskedContext,maskedContext){{var instance=workInProgress.stateNode;instance.__reactInternalMemoizedUnmaskedChildContext=unmaskedContext;instance.__reactInternalMemoizedMaskedChildContext=maskedContext;}}function getMaskedContext(workInProgress,unmaskedContext){{var type=workInProgress.type;var contextTypes=type.contextTypes;if(!contextTypes){return emptyContextObject;}// Avoid recreating masked context unless unmasked context has changed. 15568// Failing to do this will result in unnecessary calls to componentWillReceiveProps. 15569// This may trigger infinite loops if componentWillReceiveProps calls setState. 15570var instance=workInProgress.stateNode;if(instance&&instance.__reactInternalMemoizedUnmaskedChildContext===unmaskedContext){return instance.__reactInternalMemoizedMaskedChildContext;}var context={};for(var key in contextTypes){context[key]=unmaskedContext[key];}{var name=getComponentName(type)||'Unknown';checkPropTypes(contextTypes,context,'context',name,getCurrentFiberStackInDev);}// Cache unmasked context so we can avoid recreating masked context unless necessary. 15571// Context is created before the class component is instantiated so check for instance. 15572if(instance){cacheContext(workInProgress,unmaskedContext,context);}return context;}}function hasContextChanged(){{return didPerformWorkStackCursor.current;}}function isContextProvider(type){{var childContextTypes=type.childContextTypes;return childContextTypes!==null&&childContextTypes!==undefined;}}function popContext(fiber){{pop(didPerformWorkStackCursor,fiber);pop(contextStackCursor,fiber);}}function popTopLevelContextObject(fiber){{pop(didPerformWorkStackCursor,fiber);pop(contextStackCursor,fiber);}}function pushTopLevelContextObject(fiber,context,didChange){{if(!(contextStackCursor.current===emptyContextObject)){{throw Error("Unexpected context found on stack. This error is likely caused by a bug in React. Please file an issue.");}}push(contextStackCursor,context,fiber);push(didPerformWorkStackCursor,didChange,fiber);}}function processChildContext(fiber,type,parentContext){{var instance=fiber.stateNode;var childContextTypes=type.childContextTypes;// TODO (bvaughn) Replace this behavior with an invariant() in the future. 15573// It has only been added in Fiber to match the (unintentional) behavior in Stack. 15574if(typeof instance.getChildContext!=='function'){{var componentName=getComponentName(type)||'Unknown';if(!warnedAboutMissingGetChildContext[componentName]){warnedAboutMissingGetChildContext[componentName]=true;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);}}return parentContext;}var childContext;startPhaseTimer(fiber,'getChildContext');childContext=instance.getChildContext();stopPhaseTimer();for(var contextKey in childContext){if(!(contextKey in childContextTypes)){{throw Error((getComponentName(type)||'Unknown')+".getChildContext(): key \""+contextKey+"\" is not defined in childContextTypes.");}}}{var name=getComponentName(type)||'Unknown';checkPropTypes(childContextTypes,childContext,'child context',name,// In practice, there is one case in which we won't get a stack. It's when 15575// somebody calls unstable_renderSubtreeIntoContainer() and we process 15576// context from the parent component instance. The stack will be missing 15577// because it's outside of the reconciliation, and so the pointer has not 15578// been set. This is rare and doesn't matter. We'll also remove that API. 15579getCurrentFiberStackInDev);}return _assign({},parentContext,{},childContext);}}function pushContextProvider(workInProgress){{var instance=workInProgress.stateNode;// We push the context as early as possible to ensure stack integrity. 15580// If the instance does not exist yet, we will push null at first, 15581// and replace it on the stack later when invalidating the context. 15582var memoizedMergedChildContext=instance&&instance.__reactInternalMemoizedMergedChildContext||emptyContextObject;// Remember the parent context so we can merge with it later. 15583// Inherit the parent's did-perform-work value to avoid inadvertently blocking updates. 15584previousContext=contextStackCursor.current;push(contextStackCursor,memoizedMergedChildContext,workInProgress);push(didPerformWorkStackCursor,didPerformWorkStackCursor.current,workInProgress);return true;}}function invalidateContextProvider(workInProgress,type,didChange){{var instance=workInProgress.stateNode;if(!instance){{throw Error("Expected to have an instance by this point. This error is likely caused by a bug in React. Please file an issue.");}}if(didChange){// Merge parent and own context. 15585// Skip this if we're not updating due to sCU. 15586// This avoids unnecessarily recomputing memoized values. 15587var mergedContext=processChildContext(workInProgress,type,previousContext);instance.__reactInternalMemoizedMergedChildContext=mergedContext;// Replace the old (or empty) context with the new one. 15588// It is important to unwind the context in the reverse order. 15589pop(didPerformWorkStackCursor,workInProgress);pop(contextStackCursor,workInProgress);// Now push the new context and mark that it has changed. 15590push(contextStackCursor,mergedContext,workInProgress);push(didPerformWorkStackCursor,didChange,workInProgress);}else{pop(didPerformWorkStackCursor,workInProgress);push(didPerformWorkStackCursor,didChange,workInProgress);}}}function findCurrentUnmaskedContext(fiber){{// Currently this is only used with renderSubtreeIntoContainer; not sure if it 15591// makes sense elsewhere 15592if(!(isFiberMounted(fiber)&&fiber.tag===ClassComponent)){{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.");}}var node=fiber;do{switch(node.tag){case HostRoot:return node.stateNode.context;case ClassComponent:{var Component=node.type;if(isContextProvider(Component)){return node.stateNode.__reactInternalMemoizedMergedChildContext;}break;}}node=node.return;}while(node!==null);{{throw Error("Found unexpected detached subtree parent. This error is likely caused by a bug in React. Please file an issue.");}}}}var LegacyRoot=0;var BlockingRoot=1;var ConcurrentRoot=2;var Scheduler_runWithPriority=Scheduler.unstable_runWithPriority,Scheduler_scheduleCallback=Scheduler.unstable_scheduleCallback,Scheduler_cancelCallback=Scheduler.unstable_cancelCallback,Scheduler_shouldYield=Scheduler.unstable_shouldYield,Scheduler_requestPaint=Scheduler.unstable_requestPaint,Scheduler_now=Scheduler.unstable_now,Scheduler_getCurrentPriorityLevel=Scheduler.unstable_getCurrentPriorityLevel,Scheduler_ImmediatePriority=Scheduler.unstable_ImmediatePriority,Scheduler_UserBlockingPriority=Scheduler.unstable_UserBlockingPriority,Scheduler_NormalPriority=Scheduler.unstable_NormalPriority,Scheduler_LowPriority=Scheduler.unstable_LowPriority,Scheduler_IdlePriority=Scheduler.unstable_IdlePriority;{// Provide explicit error message when production+profiling bundle of e.g. 15593// react-dom is used with production (non-profiling) bundle of 15594// scheduler/tracing 15595if(!(tracing.__interactionsRef!=null&&tracing.__interactionsRef.current!=null)){{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");}}}var fakeCallbackNode={};// Except for NoPriority, these correspond to Scheduler priorities. We use 15596// ascending numbers so we can compare them like numbers. They start at 90 to 15597// avoid clashing with Scheduler's priorities. 15598var ImmediatePriority=99;var UserBlockingPriority$1=98;var NormalPriority=97;var LowPriority=96;var IdlePriority=95;// NoPriority is the absence of priority. Also React-only. 15599var NoPriority=90;var shouldYield=Scheduler_shouldYield;var requestPaint=// Fall back gracefully if we're running an older version of Scheduler. 15600Scheduler_requestPaint!==undefined?Scheduler_requestPaint:function(){};var syncQueue=null;var immediateQueueCallbackNode=null;var isFlushingSyncQueue=false;var initialTimeMs=Scheduler_now();// If the initial timestamp is reasonably small, use Scheduler's `now` directly. 15601// This will be the case for modern browsers that support `performance.now`. In 15602// older browsers, Scheduler falls back to `Date.now`, which returns a Unix 15603// timestamp. In that case, subtract the module initialization time to simulate 15604// the behavior of performance.now and keep our times small enough to fit 15605// within 32 bits. 15606// TODO: Consider lifting this into Scheduler. 15607var now=initialTimeMs<10000?Scheduler_now:function(){return Scheduler_now()-initialTimeMs;};function getCurrentPriorityLevel(){switch(Scheduler_getCurrentPriorityLevel()){case Scheduler_ImmediatePriority:return ImmediatePriority;case Scheduler_UserBlockingPriority:return UserBlockingPriority$1;case Scheduler_NormalPriority:return NormalPriority;case Scheduler_LowPriority:return LowPriority;case Scheduler_IdlePriority:return IdlePriority;default:{{throw Error("Unknown priority level.");}}}}function reactPriorityToSchedulerPriority(reactPriorityLevel){switch(reactPriorityLevel){case ImmediatePriority:return Scheduler_ImmediatePriority;case UserBlockingPriority$1:return Scheduler_UserBlockingPriority;case NormalPriority:return Scheduler_NormalPriority;case LowPriority:return Scheduler_LowPriority;case IdlePriority:return Scheduler_IdlePriority;default:{{throw Error("Unknown priority level.");}}}}function runWithPriority$1(reactPriorityLevel,fn){var priorityLevel=reactPriorityToSchedulerPriority(reactPriorityLevel);return Scheduler_runWithPriority(priorityLevel,fn);}function scheduleCallback(reactPriorityLevel,callback,options){var priorityLevel=reactPriorityToSchedulerPriority(reactPriorityLevel);return Scheduler_scheduleCallback(priorityLevel,callback,options);}function scheduleSyncCallback(callback){// Push this callback into an internal queue. We'll flush these either in 15608// the next tick, or earlier if something calls `flushSyncCallbackQueue`. 15609if(syncQueue===null){syncQueue=[callback];// Flush the queue in the next tick, at the earliest. 15610immediateQueueCallbackNode=Scheduler_scheduleCallback(Scheduler_ImmediatePriority,flushSyncCallbackQueueImpl);}else{// Push onto existing queue. Don't need to schedule a callback because 15611// we already scheduled one when we created the queue. 15612syncQueue.push(callback);}return fakeCallbackNode;}function cancelCallback(callbackNode){if(callbackNode!==fakeCallbackNode){Scheduler_cancelCallback(callbackNode);}}function flushSyncCallbackQueue(){if(immediateQueueCallbackNode!==null){var node=immediateQueueCallbackNode;immediateQueueCallbackNode=null;Scheduler_cancelCallback(node);}flushSyncCallbackQueueImpl();}function flushSyncCallbackQueueImpl(){if(!isFlushingSyncQueue&&syncQueue!==null){// Prevent re-entrancy. 15613isFlushingSyncQueue=true;var i=0;try{var _isSync=true;var queue=syncQueue;runWithPriority$1(ImmediatePriority,function(){for(;i<queue.length;i++){var callback=queue[i];do{callback=callback(_isSync);}while(callback!==null);}});syncQueue=null;}catch(error){// If something throws, leave the remaining callbacks on the queue. 15614if(syncQueue!==null){syncQueue=syncQueue.slice(i+1);}// Resume flushing in the next tick 15615Scheduler_scheduleCallback(Scheduler_ImmediatePriority,flushSyncCallbackQueue);throw error;}finally{isFlushingSyncQueue=false;}}}var NoMode=0;var StrictMode=1;// TODO: Remove BlockingMode and ConcurrentMode by reading from the root 15616// tag instead 15617var BlockingMode=2;var ConcurrentMode=4;var ProfileMode=8;// Max 31 bit integer. The max integer size in V8 for 32-bit systems. 15618// Math.pow(2, 30) - 1 15619// 0b111111111111111111111111111111 15620var MAX_SIGNED_31_BIT_INT=1073741823;var NoWork=0;// TODO: Think of a better name for Never. The key difference with Idle is that 15621// Never work can be committed in an inconsistent state without tearing the UI. 15622// The main example is offscreen content, like a hidden subtree. So one possible 15623// name is Offscreen. However, it also includes dehydrated Suspense boundaries, 15624// which are inconsistent in the sense that they haven't finished yet, but 15625// aren't visibly inconsistent because the server rendered HTML matches what the 15626// hydrated tree would look like. 15627var Never=1;// Idle is slightly higher priority than Never. It must completely finish in 15628// order to be consistent. 15629var Idle=2;// Continuous Hydration is slightly higher than Idle and is used to increase 15630// priority of hover targets. 15631var ContinuousHydration=3;var Sync=MAX_SIGNED_31_BIT_INT;var Batched=Sync-1;var UNIT_SIZE=10;var MAGIC_NUMBER_OFFSET=Batched-1;// 1 unit of expiration time represents 10ms. 15632function msToExpirationTime(ms){// Always subtract from the offset so that we don't clash with the magic number for NoWork. 15633return MAGIC_NUMBER_OFFSET-(ms/UNIT_SIZE|0);}function expirationTimeToMs(expirationTime){return(MAGIC_NUMBER_OFFSET-expirationTime)*UNIT_SIZE;}function ceiling(num,precision){return((num/precision|0)+1)*precision;}function computeExpirationBucket(currentTime,expirationInMs,bucketSizeMs){return MAGIC_NUMBER_OFFSET-ceiling(MAGIC_NUMBER_OFFSET-currentTime+expirationInMs/UNIT_SIZE,bucketSizeMs/UNIT_SIZE);}// TODO: This corresponds to Scheduler's NormalPriority, not LowPriority. Update 15634// the names to reflect. 15635var LOW_PRIORITY_EXPIRATION=5000;var LOW_PRIORITY_BATCH_SIZE=250;function computeAsyncExpiration(currentTime){return computeExpirationBucket(currentTime,LOW_PRIORITY_EXPIRATION,LOW_PRIORITY_BATCH_SIZE);}function computeSuspenseExpiration(currentTime,timeoutMs){// TODO: Should we warn if timeoutMs is lower than the normal pri expiration time? 15636return computeExpirationBucket(currentTime,timeoutMs,LOW_PRIORITY_BATCH_SIZE);}// We intentionally set a higher expiration time for interactive updates in 15637// dev than in production. 15638// 15639// If the main thread is being blocked so long that you hit the expiration, 15640// it's a problem that could be solved with better scheduling. 15641// 15642// People will be more likely to notice this and fix it with the long 15643// expiration time in development. 15644// 15645// In production we opt for better UX at the risk of masking scheduling 15646// problems, by expiring fast. 15647var HIGH_PRIORITY_EXPIRATION=500;var HIGH_PRIORITY_BATCH_SIZE=100;function computeInteractiveExpiration(currentTime){return computeExpirationBucket(currentTime,HIGH_PRIORITY_EXPIRATION,HIGH_PRIORITY_BATCH_SIZE);}function inferPriorityFromExpirationTime(currentTime,expirationTime){if(expirationTime===Sync){return ImmediatePriority;}if(expirationTime===Never||expirationTime===Idle){return IdlePriority;}var msUntil=expirationTimeToMs(expirationTime)-expirationTimeToMs(currentTime);if(msUntil<=0){return ImmediatePriority;}if(msUntil<=HIGH_PRIORITY_EXPIRATION+HIGH_PRIORITY_BATCH_SIZE){return UserBlockingPriority$1;}if(msUntil<=LOW_PRIORITY_EXPIRATION+LOW_PRIORITY_BATCH_SIZE){return NormalPriority;}// TODO: Handle LowPriority 15648// Assume anything lower has idle priority 15649return IdlePriority;}var ReactStrictModeWarnings={recordUnsafeLifecycleWarnings:function(fiber,instance){},flushPendingUnsafeLifecycleWarnings:function(){},recordLegacyContextWarning:function(fiber,instance){},flushLegacyContextWarning:function(){},discardPendingWarnings:function(){}};{var findStrictRoot=function(fiber){var maybeStrictRoot=null;var node=fiber;while(node!==null){if(node.mode&StrictMode){maybeStrictRoot=node;}node=node.return;}return maybeStrictRoot;};var setToSortedString=function(set){var array=[];set.forEach(function(value){array.push(value);});return array.sort().join(', ');};var pendingComponentWillMountWarnings=[];var pendingUNSAFE_ComponentWillMountWarnings=[];var pendingComponentWillReceivePropsWarnings=[];var pendingUNSAFE_ComponentWillReceivePropsWarnings=[];var pendingComponentWillUpdateWarnings=[];var pendingUNSAFE_ComponentWillUpdateWarnings=[];// Tracks components we have already warned about. 15650var didWarnAboutUnsafeLifecycles=new Set();ReactStrictModeWarnings.recordUnsafeLifecycleWarnings=function(fiber,instance){// Dedup strategy: Warn once per component. 15651if(didWarnAboutUnsafeLifecycles.has(fiber.type)){return;}if(typeof instance.componentWillMount==='function'&&// Don't warn about react-lifecycles-compat polyfilled components. 15652instance.componentWillMount.__suppressDeprecationWarning!==true){pendingComponentWillMountWarnings.push(fiber);}if(fiber.mode&StrictMode&&typeof instance.UNSAFE_componentWillMount==='function'){pendingUNSAFE_ComponentWillMountWarnings.push(fiber);}if(typeof instance.componentWillReceiveProps==='function'&&instance.componentWillReceiveProps.__suppressDeprecationWarning!==true){pendingComponentWillReceivePropsWarnings.push(fiber);}if(fiber.mode&StrictMode&&typeof instance.UNSAFE_componentWillReceiveProps==='function'){pendingUNSAFE_ComponentWillReceivePropsWarnings.push(fiber);}if(typeof instance.componentWillUpdate==='function'&&instance.componentWillUpdate.__suppressDeprecationWarning!==true){pendingComponentWillUpdateWarnings.push(fiber);}if(fiber.mode&StrictMode&&typeof instance.UNSAFE_componentWillUpdate==='function'){pendingUNSAFE_ComponentWillUpdateWarnings.push(fiber);}};ReactStrictModeWarnings.flushPendingUnsafeLifecycleWarnings=function(){// We do an initial pass to gather component names 15653var componentWillMountUniqueNames=new Set();if(pendingComponentWillMountWarnings.length>0){pendingComponentWillMountWarnings.forEach(function(fiber){componentWillMountUniqueNames.add(getComponentName(fiber.type)||'Component');didWarnAboutUnsafeLifecycles.add(fiber.type);});pendingComponentWillMountWarnings=[];}var UNSAFE_componentWillMountUniqueNames=new Set();if(pendingUNSAFE_ComponentWillMountWarnings.length>0){pendingUNSAFE_ComponentWillMountWarnings.forEach(function(fiber){UNSAFE_componentWillMountUniqueNames.add(getComponentName(fiber.type)||'Component');didWarnAboutUnsafeLifecycles.add(fiber.type);});pendingUNSAFE_ComponentWillMountWarnings=[];}var componentWillReceivePropsUniqueNames=new Set();if(pendingComponentWillReceivePropsWarnings.length>0){pendingComponentWillReceivePropsWarnings.forEach(function(fiber){componentWillReceivePropsUniqueNames.add(getComponentName(fiber.type)||'Component');didWarnAboutUnsafeLifecycles.add(fiber.type);});pendingComponentWillReceivePropsWarnings=[];}var UNSAFE_componentWillReceivePropsUniqueNames=new Set();if(pendingUNSAFE_ComponentWillReceivePropsWarnings.length>0){pendingUNSAFE_ComponentWillReceivePropsWarnings.forEach(function(fiber){UNSAFE_componentWillReceivePropsUniqueNames.add(getComponentName(fiber.type)||'Component');didWarnAboutUnsafeLifecycles.add(fiber.type);});pendingUNSAFE_ComponentWillReceivePropsWarnings=[];}var componentWillUpdateUniqueNames=new Set();if(pendingComponentWillUpdateWarnings.length>0){pendingComponentWillUpdateWarnings.forEach(function(fiber){componentWillUpdateUniqueNames.add(getComponentName(fiber.type)||'Component');didWarnAboutUnsafeLifecycles.add(fiber.type);});pendingComponentWillUpdateWarnings=[];}var UNSAFE_componentWillUpdateUniqueNames=new Set();if(pendingUNSAFE_ComponentWillUpdateWarnings.length>0){pendingUNSAFE_ComponentWillUpdateWarnings.forEach(function(fiber){UNSAFE_componentWillUpdateUniqueNames.add(getComponentName(fiber.type)||'Component');didWarnAboutUnsafeLifecycles.add(fiber.type);});pendingUNSAFE_ComponentWillUpdateWarnings=[];}// Finally, we flush all the warnings 15654// UNSAFE_ ones before the deprecated ones, since they'll be 'louder' 15655if(UNSAFE_componentWillMountUniqueNames.size>0){var sortedNames=setToSortedString(UNSAFE_componentWillMountUniqueNames);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);}if(UNSAFE_componentWillReceivePropsUniqueNames.size>0){var _sortedNames=setToSortedString(UNSAFE_componentWillReceivePropsUniqueNames);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);}if(UNSAFE_componentWillUpdateUniqueNames.size>0){var _sortedNames2=setToSortedString(UNSAFE_componentWillUpdateUniqueNames);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);}if(componentWillMountUniqueNames.size>0){var _sortedNames3=setToSortedString(componentWillMountUniqueNames);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);}if(componentWillReceivePropsUniqueNames.size>0){var _sortedNames4=setToSortedString(componentWillReceivePropsUniqueNames);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);}if(componentWillUpdateUniqueNames.size>0){var _sortedNames5=setToSortedString(componentWillUpdateUniqueNames);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);}};var pendingLegacyContextWarning=new Map();// Tracks components we have already warned about. 15656var didWarnAboutLegacyContext=new Set();ReactStrictModeWarnings.recordLegacyContextWarning=function(fiber,instance){var strictRoot=findStrictRoot(fiber);if(strictRoot===null){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.');return;}// Dedup strategy: Warn once per component. 15657if(didWarnAboutLegacyContext.has(fiber.type)){return;}var warningsForRoot=pendingLegacyContextWarning.get(strictRoot);if(fiber.type.contextTypes!=null||fiber.type.childContextTypes!=null||instance!==null&&typeof instance.getChildContext==='function'){if(warningsForRoot===undefined){warningsForRoot=[];pendingLegacyContextWarning.set(strictRoot,warningsForRoot);}warningsForRoot.push(fiber);}};ReactStrictModeWarnings.flushLegacyContextWarning=function(){pendingLegacyContextWarning.forEach(function(fiberArray,strictRoot){if(fiberArray.length===0){return;}var firstFiber=fiberArray[0];var uniqueNames=new Set();fiberArray.forEach(function(fiber){uniqueNames.add(getComponentName(fiber.type)||'Component');didWarnAboutLegacyContext.add(fiber.type);});var sortedNames=setToSortedString(uniqueNames);var firstComponentStack=getStackByFiberInDevAndProd(firstFiber);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);});};ReactStrictModeWarnings.discardPendingWarnings=function(){pendingComponentWillMountWarnings=[];pendingUNSAFE_ComponentWillMountWarnings=[];pendingComponentWillReceivePropsWarnings=[];pendingUNSAFE_ComponentWillReceivePropsWarnings=[];pendingComponentWillUpdateWarnings=[];pendingUNSAFE_ComponentWillUpdateWarnings=[];pendingLegacyContextWarning=new Map();};}var resolveFamily=null;// $FlowFixMe Flow gets confused by a WeakSet feature check below. 15658var failedBoundaries=null;var setRefreshHandler=function(handler){{resolveFamily=handler;}};function resolveFunctionForHotReloading(type){{if(resolveFamily===null){// Hot reloading is disabled. 15659return type;}var family=resolveFamily(type);if(family===undefined){return type;}// Use the latest known implementation. 15660return family.current;}}function resolveClassForHotReloading(type){// No implementation differences. 15661return resolveFunctionForHotReloading(type);}function resolveForwardRefForHotReloading(type){{if(resolveFamily===null){// Hot reloading is disabled. 15662return type;}var family=resolveFamily(type);if(family===undefined){// Check if we're dealing with a real forwardRef. Don't want to crash early. 15663if(type!==null&&type!==undefined&&typeof type.render==='function'){// ForwardRef is special because its resolved .type is an object, 15664// but it's possible that we only have its inner render function in the map. 15665// If that inner render function is different, we'll build a new forwardRef type. 15666var currentRender=resolveFunctionForHotReloading(type.render);if(type.render!==currentRender){var syntheticType={$$typeof:REACT_FORWARD_REF_TYPE,render:currentRender};if(type.displayName!==undefined){syntheticType.displayName=type.displayName;}return syntheticType;}}return type;}// Use the latest known implementation. 15667return family.current;}}function isCompatibleFamilyForHotReloading(fiber,element){{if(resolveFamily===null){// Hot reloading is disabled. 15668return false;}var prevType=fiber.elementType;var nextType=element.type;// If we got here, we know types aren't === equal. 15669var needsCompareFamilies=false;var $$typeofNextType=typeof nextType==='object'&&nextType!==null?nextType.$$typeof:null;switch(fiber.tag){case ClassComponent:{if(typeof nextType==='function'){needsCompareFamilies=true;}break;}case FunctionComponent:{if(typeof nextType==='function'){needsCompareFamilies=true;}else if($$typeofNextType===REACT_LAZY_TYPE){// We don't know the inner type yet. 15670// We're going to assume that the lazy inner type is stable, 15671// and so it is sufficient to avoid reconciling it away. 15672// We're not going to unwrap or actually use the new lazy type. 15673needsCompareFamilies=true;}break;}case ForwardRef:{if($$typeofNextType===REACT_FORWARD_REF_TYPE){needsCompareFamilies=true;}else if($$typeofNextType===REACT_LAZY_TYPE){needsCompareFamilies=true;}break;}case MemoComponent:case SimpleMemoComponent:{if($$typeofNextType===REACT_MEMO_TYPE){// TODO: if it was but can no longer be simple, 15674// we shouldn't set this. 15675needsCompareFamilies=true;}else if($$typeofNextType===REACT_LAZY_TYPE){needsCompareFamilies=true;}break;}default:return false;}// Check if both types have a family and it's the same one. 15676if(needsCompareFamilies){// Note: memo() and forwardRef() we'll compare outer rather than inner type. 15677// This means both of them need to be registered to preserve state. 15678// If we unwrapped and compared the inner types for wrappers instead, 15679// then we would risk falsely saying two separate memo(Foo) 15680// calls are equivalent because they wrap the same Foo function. 15681var prevFamily=resolveFamily(prevType);if(prevFamily!==undefined&&prevFamily===resolveFamily(nextType)){return true;}}return false;}}function markFailedErrorBoundaryForHotReloading(fiber){{if(resolveFamily===null){// Hot reloading is disabled. 15682return;}if(typeof WeakSet!=='function'){return;}if(failedBoundaries===null){failedBoundaries=new WeakSet();}failedBoundaries.add(fiber);}}var scheduleRefresh=function(root,update){{if(resolveFamily===null){// Hot reloading is disabled. 15683return;}var staleFamilies=update.staleFamilies,updatedFamilies=update.updatedFamilies;flushPassiveEffects();flushSync(function(){scheduleFibersWithFamiliesRecursively(root.current,updatedFamilies,staleFamilies);});}};var scheduleRoot=function(root,element){{if(root.context!==emptyContextObject){// Super edge case: root has a legacy _renderSubtree context 15684// but we don't know the parentComponent so we can't pass it. 15685// Just ignore. We'll delete this with _renderSubtree code path later. 15686return;}flushPassiveEffects();syncUpdates(function(){updateContainer(element,root,null,null);});}};function scheduleFibersWithFamiliesRecursively(fiber,updatedFamilies,staleFamilies){{var alternate=fiber.alternate,child=fiber.child,sibling=fiber.sibling,tag=fiber.tag,type=fiber.type;var candidateType=null;switch(tag){case FunctionComponent:case SimpleMemoComponent:case ClassComponent:candidateType=type;break;case ForwardRef:candidateType=type.render;break;}if(resolveFamily===null){throw new Error('Expected resolveFamily to be set during hot reload.');}var needsRender=false;var needsRemount=false;if(candidateType!==null){var family=resolveFamily(candidateType);if(family!==undefined){if(staleFamilies.has(family)){needsRemount=true;}else if(updatedFamilies.has(family)){if(tag===ClassComponent){needsRemount=true;}else{needsRender=true;}}}}if(failedBoundaries!==null){if(failedBoundaries.has(fiber)||alternate!==null&&failedBoundaries.has(alternate)){needsRemount=true;}}if(needsRemount){fiber._debugNeedsRemount=true;}if(needsRemount||needsRender){scheduleWork(fiber,Sync);}if(child!==null&&!needsRemount){scheduleFibersWithFamiliesRecursively(child,updatedFamilies,staleFamilies);}if(sibling!==null){scheduleFibersWithFamiliesRecursively(sibling,updatedFamilies,staleFamilies);}}}var findHostInstancesForRefresh=function(root,families){{var hostInstances=new Set();var types=new Set(families.map(function(family){return family.current;}));findHostInstancesForMatchingFibersRecursively(root.current,types,hostInstances);return hostInstances;}};function findHostInstancesForMatchingFibersRecursively(fiber,types,hostInstances){{var child=fiber.child,sibling=fiber.sibling,tag=fiber.tag,type=fiber.type;var candidateType=null;switch(tag){case FunctionComponent:case SimpleMemoComponent:case ClassComponent:candidateType=type;break;case ForwardRef:candidateType=type.render;break;}var didMatch=false;if(candidateType!==null){if(types.has(candidateType)){didMatch=true;}}if(didMatch){// We have a match. This only drills down to the closest host components. 15687// There's no need to search deeper because for the purpose of giving 15688// visual feedback, "flashing" outermost parent rectangles is sufficient. 15689findHostInstancesForFiberShallowly(fiber,hostInstances);}else{// If there's no match, maybe there will be one further down in the child tree. 15690if(child!==null){findHostInstancesForMatchingFibersRecursively(child,types,hostInstances);}}if(sibling!==null){findHostInstancesForMatchingFibersRecursively(sibling,types,hostInstances);}}}function findHostInstancesForFiberShallowly(fiber,hostInstances){{var foundHostInstances=findChildHostInstancesForFiberShallowly(fiber,hostInstances);if(foundHostInstances){return;}// If we didn't find any host children, fallback to closest host parent. 15691var node=fiber;while(true){switch(node.tag){case HostComponent:hostInstances.add(node.stateNode);return;case HostPortal:hostInstances.add(node.stateNode.containerInfo);return;case HostRoot:hostInstances.add(node.stateNode.containerInfo);return;}if(node.return===null){throw new Error('Expected to reach root first.');}node=node.return;}}}function findChildHostInstancesForFiberShallowly(fiber,hostInstances){{var node=fiber;var foundHostInstances=false;while(true){if(node.tag===HostComponent){// We got a match. 15692foundHostInstances=true;hostInstances.add(node.stateNode);// There may still be more, so keep searching. 15693}else if(node.child!==null){node.child.return=node;node=node.child;continue;}if(node===fiber){return foundHostInstances;}while(node.sibling===null){if(node.return===null||node.return===fiber){return foundHostInstances;}node=node.return;}node.sibling.return=node.return;node=node.sibling;}}return false;}function resolveDefaultProps(Component,baseProps){if(Component&&Component.defaultProps){// Resolve default props. Taken from ReactElement 15694var props=_assign({},baseProps);var defaultProps=Component.defaultProps;for(var propName in defaultProps){if(props[propName]===undefined){props[propName]=defaultProps[propName];}}return props;}return baseProps;}function readLazyComponentType(lazyComponent){initializeLazyComponentType(lazyComponent);if(lazyComponent._status!==Resolved){throw lazyComponent._result;}return lazyComponent._result;}var valueCursor=createCursor(null);var rendererSigil;{// Use this to detect multiple renderers using the same context 15695rendererSigil={};}var currentlyRenderingFiber=null;var lastContextDependency=null;var lastContextWithAllBitsObserved=null;var isDisallowedContextReadInDEV=false;function resetContextDependencies(){// This is called right before React yields execution, to ensure `readContext` 15696// cannot be called outside the render phase. 15697currentlyRenderingFiber=null;lastContextDependency=null;lastContextWithAllBitsObserved=null;{isDisallowedContextReadInDEV=false;}}function enterDisallowedContextReadInDEV(){{isDisallowedContextReadInDEV=true;}}function exitDisallowedContextReadInDEV(){{isDisallowedContextReadInDEV=false;}}function pushProvider(providerFiber,nextValue){var context=providerFiber.type._context;{push(valueCursor,context._currentValue,providerFiber);context._currentValue=nextValue;{if(context._currentRenderer!==undefined&&context._currentRenderer!==null&&context._currentRenderer!==rendererSigil){error('Detected multiple renderers concurrently rendering the '+'same context provider. This is currently unsupported.');}context._currentRenderer=rendererSigil;}}}function popProvider(providerFiber){var currentValue=valueCursor.current;pop(valueCursor,providerFiber);var context=providerFiber.type._context;{context._currentValue=currentValue;}}function calculateChangedBits(context,newValue,oldValue){if(objectIs(oldValue,newValue)){// No change 15698return 0;}else{var changedBits=typeof context._calculateChangedBits==='function'?context._calculateChangedBits(oldValue,newValue):MAX_SIGNED_31_BIT_INT;{if((changedBits&MAX_SIGNED_31_BIT_INT)!==changedBits){error('calculateChangedBits: Expected the return value to be a '+'31-bit integer. Instead received: %s',changedBits);}}return changedBits|0;}}function scheduleWorkOnParentPath(parent,renderExpirationTime){// Update the child expiration time of all the ancestors, including 15699// the alternates. 15700var node=parent;while(node!==null){var alternate=node.alternate;if(node.childExpirationTime<renderExpirationTime){node.childExpirationTime=renderExpirationTime;if(alternate!==null&&alternate.childExpirationTime<renderExpirationTime){alternate.childExpirationTime=renderExpirationTime;}}else if(alternate!==null&&alternate.childExpirationTime<renderExpirationTime){alternate.childExpirationTime=renderExpirationTime;}else{// Neither alternate was updated, which means the rest of the 15701// ancestor path already has sufficient priority. 15702break;}node=node.return;}}function propagateContextChange(workInProgress,context,changedBits,renderExpirationTime){var fiber=workInProgress.child;if(fiber!==null){// Set the return pointer of the child to the work-in-progress fiber. 15703fiber.return=workInProgress;}while(fiber!==null){var nextFiber=void 0;// Visit this fiber. 15704var list=fiber.dependencies;if(list!==null){nextFiber=fiber.child;var dependency=list.firstContext;while(dependency!==null){// Check if the context matches. 15705if(dependency.context===context&&(dependency.observedBits&changedBits)!==0){// Match! Schedule an update on this fiber. 15706if(fiber.tag===ClassComponent){// Schedule a force update on the work-in-progress. 15707var update=createUpdate(renderExpirationTime,null);update.tag=ForceUpdate;// TODO: Because we don't have a work-in-progress, this will add the 15708// update to the current fiber, too, which means it will persist even if 15709// this render is thrown away. Since it's a race condition, not sure it's 15710// worth fixing. 15711enqueueUpdate(fiber,update);}if(fiber.expirationTime<renderExpirationTime){fiber.expirationTime=renderExpirationTime;}var alternate=fiber.alternate;if(alternate!==null&&alternate.expirationTime<renderExpirationTime){alternate.expirationTime=renderExpirationTime;}scheduleWorkOnParentPath(fiber.return,renderExpirationTime);// Mark the expiration time on the list, too. 15712if(list.expirationTime<renderExpirationTime){list.expirationTime=renderExpirationTime;}// Since we already found a match, we can stop traversing the 15713// dependency list. 15714break;}dependency=dependency.next;}}else if(fiber.tag===ContextProvider){// Don't scan deeper if this is a matching provider 15715nextFiber=fiber.type===workInProgress.type?null:fiber.child;}else{// Traverse down. 15716nextFiber=fiber.child;}if(nextFiber!==null){// Set the return pointer of the child to the work-in-progress fiber. 15717nextFiber.return=fiber;}else{// No child. Traverse to next sibling. 15718nextFiber=fiber;while(nextFiber!==null){if(nextFiber===workInProgress){// We're back to the root of this subtree. Exit. 15719nextFiber=null;break;}var sibling=nextFiber.sibling;if(sibling!==null){// Set the return pointer of the sibling to the work-in-progress fiber. 15720sibling.return=nextFiber.return;nextFiber=sibling;break;}// No more siblings. Traverse up. 15721nextFiber=nextFiber.return;}}fiber=nextFiber;}}function prepareToReadContext(workInProgress,renderExpirationTime){currentlyRenderingFiber=workInProgress;lastContextDependency=null;lastContextWithAllBitsObserved=null;var dependencies=workInProgress.dependencies;if(dependencies!==null){var firstContext=dependencies.firstContext;if(firstContext!==null){if(dependencies.expirationTime>=renderExpirationTime){// Context list has a pending update. Mark that this fiber performed work. 15722markWorkInProgressReceivedUpdate();}// Reset the work-in-progress list 15723dependencies.firstContext=null;}}}function readContext(context,observedBits){{// This warning would fire if you read context inside a Hook like useMemo. 15724// Unlike the class check below, it's not enforced in production for perf. 15725if(isDisallowedContextReadInDEV){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().');}}if(lastContextWithAllBitsObserved===context);else if(observedBits===false||observedBits===0);else{var resolvedObservedBits;// Avoid deopting on observable arguments or heterogeneous types. 15726if(typeof observedBits!=='number'||observedBits===MAX_SIGNED_31_BIT_INT){// Observe all updates. 15727lastContextWithAllBitsObserved=context;resolvedObservedBits=MAX_SIGNED_31_BIT_INT;}else{resolvedObservedBits=observedBits;}var contextItem={context:context,observedBits:resolvedObservedBits,next:null};if(lastContextDependency===null){if(!(currentlyRenderingFiber!==null)){{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().");}}// This is the first dependency for this component. Create a new list. 15728lastContextDependency=contextItem;currentlyRenderingFiber.dependencies={expirationTime:NoWork,firstContext:contextItem,responders:null};}else{// Append a new context item. 15729lastContextDependency=lastContextDependency.next=contextItem;}}return context._currentValue;}var UpdateState=0;var ReplaceState=1;var ForceUpdate=2;var CaptureUpdate=3;// Global state that is reset at the beginning of calling `processUpdateQueue`. 15730// It should only be read right after calling `processUpdateQueue`, via 15731// `checkHasForceUpdateAfterProcessing`. 15732var hasForceUpdate=false;var didWarnUpdateInsideUpdate;var currentlyProcessingQueue;{didWarnUpdateInsideUpdate=false;currentlyProcessingQueue=null;}function initializeUpdateQueue(fiber){var queue={baseState:fiber.memoizedState,baseQueue:null,shared:{pending:null},effects:null};fiber.updateQueue=queue;}function cloneUpdateQueue(current,workInProgress){// Clone the update queue from current. Unless it's already a clone. 15733var queue=workInProgress.updateQueue;var currentQueue=current.updateQueue;if(queue===currentQueue){var clone={baseState:currentQueue.baseState,baseQueue:currentQueue.baseQueue,shared:currentQueue.shared,effects:currentQueue.effects};workInProgress.updateQueue=clone;}}function createUpdate(expirationTime,suspenseConfig){var update={expirationTime:expirationTime,suspenseConfig:suspenseConfig,tag:UpdateState,payload:null,callback:null,next:null};update.next=update;{update.priority=getCurrentPriorityLevel();}return update;}function enqueueUpdate(fiber,update){var updateQueue=fiber.updateQueue;if(updateQueue===null){// Only occurs if the fiber has been unmounted. 15734return;}var sharedQueue=updateQueue.shared;var pending=sharedQueue.pending;if(pending===null){// This is the first update. Create a circular list. 15735update.next=update;}else{update.next=pending.next;pending.next=update;}sharedQueue.pending=update;{if(currentlyProcessingQueue===sharedQueue&&!didWarnUpdateInsideUpdate){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.');didWarnUpdateInsideUpdate=true;}}}function enqueueCapturedUpdate(workInProgress,update){var current=workInProgress.alternate;if(current!==null){// Ensure the work-in-progress queue is a clone 15736cloneUpdateQueue(current,workInProgress);}// Captured updates go only on the work-in-progress queue. 15737var queue=workInProgress.updateQueue;// Append the update to the end of the list. 15738var last=queue.baseQueue;if(last===null){queue.baseQueue=update.next=update;update.next=update;}else{update.next=last.next;last.next=update;}}function getStateFromUpdate(workInProgress,queue,update,prevState,nextProps,instance){switch(update.tag){case ReplaceState:{var payload=update.payload;if(typeof payload==='function'){// Updater function 15739{enterDisallowedContextReadInDEV();if(workInProgress.mode&StrictMode){payload.call(instance,prevState,nextProps);}}var nextState=payload.call(instance,prevState,nextProps);{exitDisallowedContextReadInDEV();}return nextState;}// State object 15740return payload;}case CaptureUpdate:{workInProgress.effectTag=workInProgress.effectTag&~ShouldCapture|DidCapture;}// Intentional fallthrough 15741case UpdateState:{var _payload=update.payload;var partialState;if(typeof _payload==='function'){// Updater function 15742{enterDisallowedContextReadInDEV();if(workInProgress.mode&StrictMode){_payload.call(instance,prevState,nextProps);}}partialState=_payload.call(instance,prevState,nextProps);{exitDisallowedContextReadInDEV();}}else{// Partial state object 15743partialState=_payload;}if(partialState===null||partialState===undefined){// Null and undefined are treated as no-ops. 15744return prevState;}// Merge the partial state and the previous state. 15745return _assign({},prevState,partialState);}case ForceUpdate:{hasForceUpdate=true;return prevState;}}return prevState;}function processUpdateQueue(workInProgress,props,instance,renderExpirationTime){// This is always non-null on a ClassComponent or HostRoot 15746var queue=workInProgress.updateQueue;hasForceUpdate=false;{currentlyProcessingQueue=queue.shared;}// The last rebase update that is NOT part of the base state. 15747var baseQueue=queue.baseQueue;// The last pending update that hasn't been processed yet. 15748var pendingQueue=queue.shared.pending;if(pendingQueue!==null){// We have new updates that haven't been processed yet. 15749// We'll add them to the base queue. 15750if(baseQueue!==null){// Merge the pending queue and the base queue. 15751var baseFirst=baseQueue.next;var pendingFirst=pendingQueue.next;baseQueue.next=pendingFirst;pendingQueue.next=baseFirst;}baseQueue=pendingQueue;queue.shared.pending=null;// TODO: Pass `current` as argument 15752var current=workInProgress.alternate;if(current!==null){var currentQueue=current.updateQueue;if(currentQueue!==null){currentQueue.baseQueue=pendingQueue;}}}// These values may change as we process the queue. 15753if(baseQueue!==null){var first=baseQueue.next;// Iterate through the list of updates to compute the result. 15754var newState=queue.baseState;var newExpirationTime=NoWork;var newBaseState=null;var newBaseQueueFirst=null;var newBaseQueueLast=null;if(first!==null){var update=first;do{var updateExpirationTime=update.expirationTime;if(updateExpirationTime<renderExpirationTime){// Priority is insufficient. Skip this update. If this is the first 15755// skipped update, the previous update/state is the new base 15756// update/state. 15757var clone={expirationTime:update.expirationTime,suspenseConfig:update.suspenseConfig,tag:update.tag,payload:update.payload,callback:update.callback,next:null};if(newBaseQueueLast===null){newBaseQueueFirst=newBaseQueueLast=clone;newBaseState=newState;}else{newBaseQueueLast=newBaseQueueLast.next=clone;}// Update the remaining priority in the queue. 15758if(updateExpirationTime>newExpirationTime){newExpirationTime=updateExpirationTime;}}else{// This update does have sufficient priority. 15759if(newBaseQueueLast!==null){var _clone={expirationTime:Sync,// This update is going to be committed so we never want uncommit it. 15760suspenseConfig:update.suspenseConfig,tag:update.tag,payload:update.payload,callback:update.callback,next:null};newBaseQueueLast=newBaseQueueLast.next=_clone;}// Mark the event time of this update as relevant to this render pass. 15761// TODO: This should ideally use the true event time of this update rather than 15762// its priority which is a derived and not reverseable value. 15763// TODO: We should skip this update if it was already committed but currently 15764// we have no way of detecting the difference between a committed and suspended 15765// update here. 15766markRenderEventTimeAndConfig(updateExpirationTime,update.suspenseConfig);// Process this update. 15767newState=getStateFromUpdate(workInProgress,queue,update,newState,props,instance);var callback=update.callback;if(callback!==null){workInProgress.effectTag|=Callback;var effects=queue.effects;if(effects===null){queue.effects=[update];}else{effects.push(update);}}}update=update.next;if(update===null||update===first){pendingQueue=queue.shared.pending;if(pendingQueue===null){break;}else{// An update was scheduled from inside a reducer. Add the new 15768// pending updates to the end of the list and keep processing. 15769update=baseQueue.next=pendingQueue.next;pendingQueue.next=first;queue.baseQueue=baseQueue=pendingQueue;queue.shared.pending=null;}}}while(true);}if(newBaseQueueLast===null){newBaseState=newState;}else{newBaseQueueLast.next=newBaseQueueFirst;}queue.baseState=newBaseState;queue.baseQueue=newBaseQueueLast;// Set the remaining expiration time to be whatever is remaining in the queue. 15770// This should be fine because the only two other things that contribute to 15771// expiration time are props and context. We're already in the middle of the 15772// begin phase by the time we start processing the queue, so we've already 15773// dealt with the props. Context in components that specify 15774// shouldComponentUpdate is tricky; but we'll have to account for 15775// that regardless. 15776markUnprocessedUpdateTime(newExpirationTime);workInProgress.expirationTime=newExpirationTime;workInProgress.memoizedState=newState;}{currentlyProcessingQueue=null;}}function callCallback(callback,context){if(!(typeof callback==='function')){{throw Error("Invalid argument passed as callback. Expected a function. Instead received: "+callback);}}callback.call(context);}function resetHasForceUpdateBeforeProcessing(){hasForceUpdate=false;}function checkHasForceUpdateAfterProcessing(){return hasForceUpdate;}function commitUpdateQueue(finishedWork,finishedQueue,instance){// Commit the effects 15777var effects=finishedQueue.effects;finishedQueue.effects=null;if(effects!==null){for(var i=0;i<effects.length;i++){var effect=effects[i];var callback=effect.callback;if(callback!==null){effect.callback=null;callCallback(callback,instance);}}}}var ReactCurrentBatchConfig=ReactSharedInternals.ReactCurrentBatchConfig;function requestCurrentSuspenseConfig(){return ReactCurrentBatchConfig.suspense;}var fakeInternalInstance={};var isArray=Array.isArray;// React.Component uses a shared frozen object by default. 15778// We'll use it to determine whether we need to initialize legacy refs. 15779var emptyRefsObject=new React.Component().refs;var didWarnAboutStateAssignmentForComponent;var didWarnAboutUninitializedState;var didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate;var didWarnAboutLegacyLifecyclesAndDerivedState;var didWarnAboutUndefinedDerivedState;var warnOnUndefinedDerivedState;var warnOnInvalidCallback;var didWarnAboutDirectlyAssigningPropsToState;var didWarnAboutContextTypeAndContextTypes;var didWarnAboutInvalidateContextType;{didWarnAboutStateAssignmentForComponent=new Set();didWarnAboutUninitializedState=new Set();didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate=new Set();didWarnAboutLegacyLifecyclesAndDerivedState=new Set();didWarnAboutDirectlyAssigningPropsToState=new Set();didWarnAboutUndefinedDerivedState=new Set();didWarnAboutContextTypeAndContextTypes=new Set();didWarnAboutInvalidateContextType=new Set();var didWarnOnInvalidCallback=new Set();warnOnInvalidCallback=function(callback,callerName){if(callback===null||typeof callback==='function'){return;}var key=callerName+"_"+callback;if(!didWarnOnInvalidCallback.has(key)){didWarnOnInvalidCallback.add(key);error('%s(...): Expected the last optional `callback` argument to be a '+'function. Instead received: %s.',callerName,callback);}};warnOnUndefinedDerivedState=function(type,partialState){if(partialState===undefined){var componentName=getComponentName(type)||'Component';if(!didWarnAboutUndefinedDerivedState.has(componentName)){didWarnAboutUndefinedDerivedState.add(componentName);error('%s.getDerivedStateFromProps(): A valid state object (or null) must be returned. '+'You have returned undefined.',componentName);}}};// This is so gross but it's at least non-critical and can be removed if 15780// it causes problems. This is meant to give a nicer error message for 15781// ReactDOM15.unstable_renderSubtreeIntoContainer(reactDOM16Component, 15782// ...)) which otherwise throws a "_processChildContext is not a function" 15783// exception. 15784Object.defineProperty(fakeInternalInstance,'_processChildContext',{enumerable:false,value:function(){{{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).");}}}});Object.freeze(fakeInternalInstance);}function applyDerivedStateFromProps(workInProgress,ctor,getDerivedStateFromProps,nextProps){var prevState=workInProgress.memoizedState;{if(workInProgress.mode&StrictMode){// Invoke the function an extra time to help detect side-effects. 15785getDerivedStateFromProps(nextProps,prevState);}}var partialState=getDerivedStateFromProps(nextProps,prevState);{warnOnUndefinedDerivedState(ctor,partialState);}// Merge the partial state and the previous state. 15786var memoizedState=partialState===null||partialState===undefined?prevState:_assign({},prevState,partialState);workInProgress.memoizedState=memoizedState;// Once the update queue is empty, persist the derived state onto the 15787// base state. 15788if(workInProgress.expirationTime===NoWork){// Queue is always non-null for classes 15789var updateQueue=workInProgress.updateQueue;updateQueue.baseState=memoizedState;}}var classComponentUpdater={isMounted:isMounted,enqueueSetState:function(inst,payload,callback){var fiber=get(inst);var currentTime=requestCurrentTimeForUpdate();var suspenseConfig=requestCurrentSuspenseConfig();var expirationTime=computeExpirationForFiber(currentTime,fiber,suspenseConfig);var update=createUpdate(expirationTime,suspenseConfig);update.payload=payload;if(callback!==undefined&&callback!==null){{warnOnInvalidCallback(callback,'setState');}update.callback=callback;}enqueueUpdate(fiber,update);scheduleWork(fiber,expirationTime);},enqueueReplaceState:function(inst,payload,callback){var fiber=get(inst);var currentTime=requestCurrentTimeForUpdate();var suspenseConfig=requestCurrentSuspenseConfig();var expirationTime=computeExpirationForFiber(currentTime,fiber,suspenseConfig);var update=createUpdate(expirationTime,suspenseConfig);update.tag=ReplaceState;update.payload=payload;if(callback!==undefined&&callback!==null){{warnOnInvalidCallback(callback,'replaceState');}update.callback=callback;}enqueueUpdate(fiber,update);scheduleWork(fiber,expirationTime);},enqueueForceUpdate:function(inst,callback){var fiber=get(inst);var currentTime=requestCurrentTimeForUpdate();var suspenseConfig=requestCurrentSuspenseConfig();var expirationTime=computeExpirationForFiber(currentTime,fiber,suspenseConfig);var update=createUpdate(expirationTime,suspenseConfig);update.tag=ForceUpdate;if(callback!==undefined&&callback!==null){{warnOnInvalidCallback(callback,'forceUpdate');}update.callback=callback;}enqueueUpdate(fiber,update);scheduleWork(fiber,expirationTime);}};function checkShouldComponentUpdate(workInProgress,ctor,oldProps,newProps,oldState,newState,nextContext){var instance=workInProgress.stateNode;if(typeof instance.shouldComponentUpdate==='function'){{if(workInProgress.mode&StrictMode){// Invoke the function an extra time to help detect side-effects. 15790instance.shouldComponentUpdate(newProps,newState,nextContext);}}startPhaseTimer(workInProgress,'shouldComponentUpdate');var shouldUpdate=instance.shouldComponentUpdate(newProps,newState,nextContext);stopPhaseTimer();{if(shouldUpdate===undefined){error('%s.shouldComponentUpdate(): Returned undefined instead of a '+'boolean value. Make sure to return true or false.',getComponentName(ctor)||'Component');}}return shouldUpdate;}if(ctor.prototype&&ctor.prototype.isPureReactComponent){return!shallowEqual(oldProps,newProps)||!shallowEqual(oldState,newState);}return true;}function checkClassInstance(workInProgress,ctor,newProps){var instance=workInProgress.stateNode;{var name=getComponentName(ctor)||'Component';var renderPresent=instance.render;if(!renderPresent){if(ctor.prototype&&typeof ctor.prototype.render==='function'){error('%s(...): No `render` method found on the returned component '+'instance: did you accidentally return an object from the constructor?',name);}else{error('%s(...): No `render` method found on the returned component '+'instance: you may have forgotten to define `render`.',name);}}if(instance.getInitialState&&!instance.getInitialState.isReactClassApproved&&!instance.state){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);}if(instance.getDefaultProps&&!instance.getDefaultProps.isReactClassApproved){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);}if(instance.propTypes){error('propTypes was defined as an instance property on %s. Use a static '+'property to define propTypes instead.',name);}if(instance.contextType){error('contextType was defined as an instance property on %s. Use a static '+'property to define contextType instead.',name);}{if(instance.contextTypes){error('contextTypes was defined as an instance property on %s. Use a static '+'property to define contextTypes instead.',name);}if(ctor.contextType&&ctor.contextTypes&&!didWarnAboutContextTypeAndContextTypes.has(ctor)){didWarnAboutContextTypeAndContextTypes.add(ctor);error('%s declares both contextTypes and contextType static properties. '+'The legacy contextTypes property will be ignored.',name);}}if(typeof instance.componentShouldUpdate==='function'){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);}if(ctor.prototype&&ctor.prototype.isPureReactComponent&&typeof instance.shouldComponentUpdate!=='undefined'){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');}if(typeof instance.componentDidUnmount==='function'){error('%s has a method called '+'componentDidUnmount(). But there is no such lifecycle method. '+'Did you mean componentWillUnmount()?',name);}if(typeof instance.componentDidReceiveProps==='function'){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);}if(typeof instance.componentWillRecieveProps==='function'){error('%s has a method called '+'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?',name);}if(typeof instance.UNSAFE_componentWillRecieveProps==='function'){error('%s has a method called '+'UNSAFE_componentWillRecieveProps(). Did you mean UNSAFE_componentWillReceiveProps()?',name);}var hasMutatedProps=instance.props!==newProps;if(instance.props!==undefined&&hasMutatedProps){error('%s(...): When calling super() in `%s`, make sure to pass '+"up the same props that your component's constructor was passed.",name,name);}if(instance.defaultProps){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);}if(typeof instance.getSnapshotBeforeUpdate==='function'&&typeof instance.componentDidUpdate!=='function'&&!didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate.has(ctor)){didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate.add(ctor);error('%s: getSnapshotBeforeUpdate() should be used with componentDidUpdate(). '+'This component defines getSnapshotBeforeUpdate() only.',getComponentName(ctor));}if(typeof instance.getDerivedStateFromProps==='function'){error('%s: getDerivedStateFromProps() is defined as an instance method '+'and will be ignored. Instead, declare it as a static method.',name);}if(typeof instance.getDerivedStateFromError==='function'){error('%s: getDerivedStateFromError() is defined as an instance method '+'and will be ignored. Instead, declare it as a static method.',name);}if(typeof ctor.getSnapshotBeforeUpdate==='function'){error('%s: getSnapshotBeforeUpdate() is defined as a static method '+'and will be ignored. Instead, declare it as an instance method.',name);}var _state=instance.state;if(_state&&(typeof _state!=='object'||isArray(_state))){error('%s.state: must be set to an object or null',name);}if(typeof instance.getChildContext==='function'&&typeof ctor.childContextTypes!=='object'){error('%s.getChildContext(): childContextTypes must be defined in order to '+'use getChildContext().',name);}}}function adoptClassInstance(workInProgress,instance){instance.updater=classComponentUpdater;workInProgress.stateNode=instance;// The instance needs access to the fiber so that it can schedule updates 15791set(instance,workInProgress);{instance._reactInternalInstance=fakeInternalInstance;}}function constructClassInstance(workInProgress,ctor,props){var isLegacyContextConsumer=false;var unmaskedContext=emptyContextObject;var context=emptyContextObject;var contextType=ctor.contextType;{if('contextType'in ctor){var isValid=// Allow null for conditional declaration 15792contextType===null||contextType!==undefined&&contextType.$$typeof===REACT_CONTEXT_TYPE&&contextType._context===undefined;// Not a <Context.Consumer> 15793if(!isValid&&!didWarnAboutInvalidateContextType.has(ctor)){didWarnAboutInvalidateContextType.add(ctor);var addendum='';if(contextType===undefined){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.';}else if(typeof contextType!=='object'){addendum=' However, it is set to a '+typeof contextType+'.';}else if(contextType.$$typeof===REACT_PROVIDER_TYPE){addendum=' Did you accidentally pass the Context.Provider instead?';}else if(contextType._context!==undefined){// <Context.Consumer> 15794addendum=' Did you accidentally pass the Context.Consumer instead?';}else{addendum=' However, it is set to an object with keys {'+Object.keys(contextType).join(', ')+'}.';}error('%s defines an invalid contextType. '+'contextType should point to the Context object returned by React.createContext().%s',getComponentName(ctor)||'Component',addendum);}}}if(typeof contextType==='object'&&contextType!==null){context=readContext(contextType);}else{unmaskedContext=getUnmaskedContext(workInProgress,ctor,true);var contextTypes=ctor.contextTypes;isLegacyContextConsumer=contextTypes!==null&&contextTypes!==undefined;context=isLegacyContextConsumer?getMaskedContext(workInProgress,unmaskedContext):emptyContextObject;}// Instantiate twice to help detect side-effects. 15795{if(workInProgress.mode&StrictMode){new ctor(props,context);// eslint-disable-line no-new 15796}}var instance=new ctor(props,context);var state=workInProgress.memoizedState=instance.state!==null&&instance.state!==undefined?instance.state:null;adoptClassInstance(workInProgress,instance);{if(typeof ctor.getDerivedStateFromProps==='function'&&state===null){var componentName=getComponentName(ctor)||'Component';if(!didWarnAboutUninitializedState.has(componentName)){didWarnAboutUninitializedState.add(componentName);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);}}// If new component APIs are defined, "unsafe" lifecycles won't be called. 15797// Warn about these lifecycles if they are present. 15798// Don't warn about react-lifecycles-compat polyfilled methods though. 15799if(typeof ctor.getDerivedStateFromProps==='function'||typeof instance.getSnapshotBeforeUpdate==='function'){var foundWillMountName=null;var foundWillReceivePropsName=null;var foundWillUpdateName=null;if(typeof instance.componentWillMount==='function'&&instance.componentWillMount.__suppressDeprecationWarning!==true){foundWillMountName='componentWillMount';}else if(typeof instance.UNSAFE_componentWillMount==='function'){foundWillMountName='UNSAFE_componentWillMount';}if(typeof instance.componentWillReceiveProps==='function'&&instance.componentWillReceiveProps.__suppressDeprecationWarning!==true){foundWillReceivePropsName='componentWillReceiveProps';}else if(typeof instance.UNSAFE_componentWillReceiveProps==='function'){foundWillReceivePropsName='UNSAFE_componentWillReceiveProps';}if(typeof instance.componentWillUpdate==='function'&&instance.componentWillUpdate.__suppressDeprecationWarning!==true){foundWillUpdateName='componentWillUpdate';}else if(typeof instance.UNSAFE_componentWillUpdate==='function'){foundWillUpdateName='UNSAFE_componentWillUpdate';}if(foundWillMountName!==null||foundWillReceivePropsName!==null||foundWillUpdateName!==null){var _componentName=getComponentName(ctor)||'Component';var newApiName=typeof ctor.getDerivedStateFromProps==='function'?'getDerivedStateFromProps()':'getSnapshotBeforeUpdate()';if(!didWarnAboutLegacyLifecyclesAndDerivedState.has(_componentName)){didWarnAboutLegacyLifecyclesAndDerivedState.add(_componentName);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:'');}}}}// Cache unmasked context so we can avoid recreating masked context unless necessary. 15800// ReactFiberContext usually updates this cache but can't for newly-created instances. 15801if(isLegacyContextConsumer){cacheContext(workInProgress,unmaskedContext,context);}return instance;}function callComponentWillMount(workInProgress,instance){startPhaseTimer(workInProgress,'componentWillMount');var oldState=instance.state;if(typeof instance.componentWillMount==='function'){instance.componentWillMount();}if(typeof instance.UNSAFE_componentWillMount==='function'){instance.UNSAFE_componentWillMount();}stopPhaseTimer();if(oldState!==instance.state){{error('%s.componentWillMount(): Assigning directly to this.state is '+"deprecated (except inside a component's "+'constructor). Use setState instead.',getComponentName(workInProgress.type)||'Component');}classComponentUpdater.enqueueReplaceState(instance,instance.state,null);}}function callComponentWillReceiveProps(workInProgress,instance,newProps,nextContext){var oldState=instance.state;startPhaseTimer(workInProgress,'componentWillReceiveProps');if(typeof instance.componentWillReceiveProps==='function'){instance.componentWillReceiveProps(newProps,nextContext);}if(typeof instance.UNSAFE_componentWillReceiveProps==='function'){instance.UNSAFE_componentWillReceiveProps(newProps,nextContext);}stopPhaseTimer();if(instance.state!==oldState){{var componentName=getComponentName(workInProgress.type)||'Component';if(!didWarnAboutStateAssignmentForComponent.has(componentName)){didWarnAboutStateAssignmentForComponent.add(componentName);error('%s.componentWillReceiveProps(): Assigning directly to '+"this.state is deprecated (except inside a component's "+'constructor). Use setState instead.',componentName);}}classComponentUpdater.enqueueReplaceState(instance,instance.state,null);}}// Invokes the mount life-cycles on a previously never rendered instance. 15802function mountClassInstance(workInProgress,ctor,newProps,renderExpirationTime){{checkClassInstance(workInProgress,ctor,newProps);}var instance=workInProgress.stateNode;instance.props=newProps;instance.state=workInProgress.memoizedState;instance.refs=emptyRefsObject;initializeUpdateQueue(workInProgress);var contextType=ctor.contextType;if(typeof contextType==='object'&&contextType!==null){instance.context=readContext(contextType);}else{var unmaskedContext=getUnmaskedContext(workInProgress,ctor,true);instance.context=getMaskedContext(workInProgress,unmaskedContext);}{if(instance.state===newProps){var componentName=getComponentName(ctor)||'Component';if(!didWarnAboutDirectlyAssigningPropsToState.has(componentName)){didWarnAboutDirectlyAssigningPropsToState.add(componentName);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);}}if(workInProgress.mode&StrictMode){ReactStrictModeWarnings.recordLegacyContextWarning(workInProgress,instance);}{ReactStrictModeWarnings.recordUnsafeLifecycleWarnings(workInProgress,instance);}}processUpdateQueue(workInProgress,newProps,instance,renderExpirationTime);instance.state=workInProgress.memoizedState;var getDerivedStateFromProps=ctor.getDerivedStateFromProps;if(typeof getDerivedStateFromProps==='function'){applyDerivedStateFromProps(workInProgress,ctor,getDerivedStateFromProps,newProps);instance.state=workInProgress.memoizedState;}// In order to support react-lifecycles-compat polyfilled components, 15803// Unsafe lifecycles should not be invoked for components using the new APIs. 15804if(typeof ctor.getDerivedStateFromProps!=='function'&&typeof instance.getSnapshotBeforeUpdate!=='function'&&(typeof instance.UNSAFE_componentWillMount==='function'||typeof instance.componentWillMount==='function')){callComponentWillMount(workInProgress,instance);// If we had additional state updates during this life-cycle, let's 15805// process them now. 15806processUpdateQueue(workInProgress,newProps,instance,renderExpirationTime);instance.state=workInProgress.memoizedState;}if(typeof instance.componentDidMount==='function'){workInProgress.effectTag|=Update;}}function resumeMountClassInstance(workInProgress,ctor,newProps,renderExpirationTime){var instance=workInProgress.stateNode;var oldProps=workInProgress.memoizedProps;instance.props=oldProps;var oldContext=instance.context;var contextType=ctor.contextType;var nextContext=emptyContextObject;if(typeof contextType==='object'&&contextType!==null){nextContext=readContext(contextType);}else{var nextLegacyUnmaskedContext=getUnmaskedContext(workInProgress,ctor,true);nextContext=getMaskedContext(workInProgress,nextLegacyUnmaskedContext);}var getDerivedStateFromProps=ctor.getDerivedStateFromProps;var hasNewLifecycles=typeof getDerivedStateFromProps==='function'||typeof instance.getSnapshotBeforeUpdate==='function';// Note: During these life-cycles, instance.props/instance.state are what 15807// ever the previously attempted to render - not the "current". However, 15808// during componentDidUpdate we pass the "current" props. 15809// In order to support react-lifecycles-compat polyfilled components, 15810// Unsafe lifecycles should not be invoked for components using the new APIs. 15811if(!hasNewLifecycles&&(typeof instance.UNSAFE_componentWillReceiveProps==='function'||typeof instance.componentWillReceiveProps==='function')){if(oldProps!==newProps||oldContext!==nextContext){callComponentWillReceiveProps(workInProgress,instance,newProps,nextContext);}}resetHasForceUpdateBeforeProcessing();var oldState=workInProgress.memoizedState;var newState=instance.state=oldState;processUpdateQueue(workInProgress,newProps,instance,renderExpirationTime);newState=workInProgress.memoizedState;if(oldProps===newProps&&oldState===newState&&!hasContextChanged()&&!checkHasForceUpdateAfterProcessing()){// If an update was already in progress, we should schedule an Update 15812// effect even though we're bailing out, so that cWU/cDU are called. 15813if(typeof instance.componentDidMount==='function'){workInProgress.effectTag|=Update;}return false;}if(typeof getDerivedStateFromProps==='function'){applyDerivedStateFromProps(workInProgress,ctor,getDerivedStateFromProps,newProps);newState=workInProgress.memoizedState;}var shouldUpdate=checkHasForceUpdateAfterProcessing()||checkShouldComponentUpdate(workInProgress,ctor,oldProps,newProps,oldState,newState,nextContext);if(shouldUpdate){// In order to support react-lifecycles-compat polyfilled components, 15814// Unsafe lifecycles should not be invoked for components using the new APIs. 15815if(!hasNewLifecycles&&(typeof instance.UNSAFE_componentWillMount==='function'||typeof instance.componentWillMount==='function')){startPhaseTimer(workInProgress,'componentWillMount');if(typeof instance.componentWillMount==='function'){instance.componentWillMount();}if(typeof instance.UNSAFE_componentWillMount==='function'){instance.UNSAFE_componentWillMount();}stopPhaseTimer();}if(typeof instance.componentDidMount==='function'){workInProgress.effectTag|=Update;}}else{// If an update was already in progress, we should schedule an Update 15816// effect even though we're bailing out, so that cWU/cDU are called. 15817if(typeof instance.componentDidMount==='function'){workInProgress.effectTag|=Update;}// If shouldComponentUpdate returned false, we should still update the 15818// memoized state to indicate that this work can be reused. 15819workInProgress.memoizedProps=newProps;workInProgress.memoizedState=newState;}// Update the existing instance's state, props, and context pointers even 15820// if shouldComponentUpdate returns false. 15821instance.props=newProps;instance.state=newState;instance.context=nextContext;return shouldUpdate;}// Invokes the update life-cycles and returns false if it shouldn't rerender. 15822function updateClassInstance(current,workInProgress,ctor,newProps,renderExpirationTime){var instance=workInProgress.stateNode;cloneUpdateQueue(current,workInProgress);var oldProps=workInProgress.memoizedProps;instance.props=workInProgress.type===workInProgress.elementType?oldProps:resolveDefaultProps(workInProgress.type,oldProps);var oldContext=instance.context;var contextType=ctor.contextType;var nextContext=emptyContextObject;if(typeof contextType==='object'&&contextType!==null){nextContext=readContext(contextType);}else{var nextUnmaskedContext=getUnmaskedContext(workInProgress,ctor,true);nextContext=getMaskedContext(workInProgress,nextUnmaskedContext);}var getDerivedStateFromProps=ctor.getDerivedStateFromProps;var hasNewLifecycles=typeof getDerivedStateFromProps==='function'||typeof instance.getSnapshotBeforeUpdate==='function';// Note: During these life-cycles, instance.props/instance.state are what 15823// ever the previously attempted to render - not the "current". However, 15824// during componentDidUpdate we pass the "current" props. 15825// In order to support react-lifecycles-compat polyfilled components, 15826// Unsafe lifecycles should not be invoked for components using the new APIs. 15827if(!hasNewLifecycles&&(typeof instance.UNSAFE_componentWillReceiveProps==='function'||typeof instance.componentWillReceiveProps==='function')){if(oldProps!==newProps||oldContext!==nextContext){callComponentWillReceiveProps(workInProgress,instance,newProps,nextContext);}}resetHasForceUpdateBeforeProcessing();var oldState=workInProgress.memoizedState;var newState=instance.state=oldState;processUpdateQueue(workInProgress,newProps,instance,renderExpirationTime);newState=workInProgress.memoizedState;if(oldProps===newProps&&oldState===newState&&!hasContextChanged()&&!checkHasForceUpdateAfterProcessing()){// If an update was already in progress, we should schedule an Update 15828// effect even though we're bailing out, so that cWU/cDU are called. 15829if(typeof instance.componentDidUpdate==='function'){if(oldProps!==current.memoizedProps||oldState!==current.memoizedState){workInProgress.effectTag|=Update;}}if(typeof instance.getSnapshotBeforeUpdate==='function'){if(oldProps!==current.memoizedProps||oldState!==current.memoizedState){workInProgress.effectTag|=Snapshot;}}return false;}if(typeof getDerivedStateFromProps==='function'){applyDerivedStateFromProps(workInProgress,ctor,getDerivedStateFromProps,newProps);newState=workInProgress.memoizedState;}var shouldUpdate=checkHasForceUpdateAfterProcessing()||checkShouldComponentUpdate(workInProgress,ctor,oldProps,newProps,oldState,newState,nextContext);if(shouldUpdate){// In order to support react-lifecycles-compat polyfilled components, 15830// Unsafe lifecycles should not be invoked for components using the new APIs. 15831if(!hasNewLifecycles&&(typeof instance.UNSAFE_componentWillUpdate==='function'||typeof instance.componentWillUpdate==='function')){startPhaseTimer(workInProgress,'componentWillUpdate');if(typeof instance.componentWillUpdate==='function'){instance.componentWillUpdate(newProps,newState,nextContext);}if(typeof instance.UNSAFE_componentWillUpdate==='function'){instance.UNSAFE_componentWillUpdate(newProps,newState,nextContext);}stopPhaseTimer();}if(typeof instance.componentDidUpdate==='function'){workInProgress.effectTag|=Update;}if(typeof instance.getSnapshotBeforeUpdate==='function'){workInProgress.effectTag|=Snapshot;}}else{// If an update was already in progress, we should schedule an Update 15832// effect even though we're bailing out, so that cWU/cDU are called. 15833if(typeof instance.componentDidUpdate==='function'){if(oldProps!==current.memoizedProps||oldState!==current.memoizedState){workInProgress.effectTag|=Update;}}if(typeof instance.getSnapshotBeforeUpdate==='function'){if(oldProps!==current.memoizedProps||oldState!==current.memoizedState){workInProgress.effectTag|=Snapshot;}}// If shouldComponentUpdate returned false, we should still update the 15834// memoized props/state to indicate that this work can be reused. 15835workInProgress.memoizedProps=newProps;workInProgress.memoizedState=newState;}// Update the existing instance's state, props, and context pointers even 15836// if shouldComponentUpdate returns false. 15837instance.props=newProps;instance.state=newState;instance.context=nextContext;return shouldUpdate;}var didWarnAboutMaps;var didWarnAboutGenerators;var didWarnAboutStringRefs;var ownerHasKeyUseWarning;var ownerHasFunctionTypeWarning;var warnForMissingKey=function(child){};{didWarnAboutMaps=false;didWarnAboutGenerators=false;didWarnAboutStringRefs={};/** 15838 * Warn if there's no key explicitly set on dynamic arrays of children or 15839 * object keys are not valid. This allows us to keep track of children between 15840 * updates. 15841 */ownerHasKeyUseWarning={};ownerHasFunctionTypeWarning={};warnForMissingKey=function(child){if(child===null||typeof child!=='object'){return;}if(!child._store||child._store.validated||child.key!=null){return;}if(!(typeof child._store==='object')){{throw Error("React Component in warnForMissingKey should have a _store. This error is likely caused by a bug in React. Please file an issue.");}}child._store.validated=true;var currentComponentErrorInfo='Each child in a list should have a unique '+'"key" prop. See https://fb.me/react-warning-keys for '+'more information.'+getCurrentFiberStackInDev();if(ownerHasKeyUseWarning[currentComponentErrorInfo]){return;}ownerHasKeyUseWarning[currentComponentErrorInfo]=true;error('Each child in a list should have a unique '+'"key" prop. See https://fb.me/react-warning-keys for '+'more information.');};}var isArray$1=Array.isArray;function coerceRef(returnFiber,current,element){var mixedRef=element.ref;if(mixedRef!==null&&typeof mixedRef!=='function'&&typeof mixedRef!=='object'){{// TODO: Clean this up once we turn on the string ref warning for 15842// everyone, because the strict mode case will no longer be relevant 15843if((returnFiber.mode&StrictMode||warnAboutStringRefs)&&// We warn in ReactElement.js if owner and self are equal for string refs 15844// because these cannot be automatically converted to an arrow function 15845// using a codemod. Therefore, we don't have to warn about string refs again. 15846!(element._owner&&element._self&&element._owner.stateNode!==element._self)){var componentName=getComponentName(returnFiber.type)||'Component';if(!didWarnAboutStringRefs[componentName]){{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));}didWarnAboutStringRefs[componentName]=true;}}}if(element._owner){var owner=element._owner;var inst;if(owner){var ownerFiber=owner;if(!(ownerFiber.tag===ClassComponent)){{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");}}inst=ownerFiber.stateNode;}if(!inst){{throw Error("Missing owner for string ref "+mixedRef+". This error is likely caused by a bug in React. Please file an issue.");}}var stringRef=''+mixedRef;// Check if previous string ref matches new string ref 15847if(current!==null&¤t.ref!==null&&typeof current.ref==='function'&¤t.ref._stringRef===stringRef){return current.ref;}var ref=function(value){var refs=inst.refs;if(refs===emptyRefsObject){// This is a lazy pooled frozen object, so we need to initialize. 15848refs=inst.refs={};}if(value===null){delete refs[stringRef];}else{refs[stringRef]=value;}};ref._stringRef=stringRef;return ref;}else{if(!(typeof mixedRef==='string')){{throw Error("Expected ref to be a function, a string, an object returned by React.createRef(), or null.");}}if(!element._owner){{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.");}}}}return mixedRef;}function throwOnInvalidObjectType(returnFiber,newChild){if(returnFiber.type!=='textarea'){var addendum='';{addendum=' If you meant to render a collection of children, use an array '+'instead.'+getCurrentFiberStackInDev();}{{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);}}}}function warnOnFunctionType(){{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();if(ownerHasFunctionTypeWarning[currentComponentErrorInfo]){return;}ownerHasFunctionTypeWarning[currentComponentErrorInfo]=true;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.');}}// This wrapper function exists because I expect to clone the code in each path 15849// to be able to optimize each path individually by branching early. This needs 15850// a compiler or we can do it manually. Helpers that don't need this branching 15851// live outside of this function. 15852function ChildReconciler(shouldTrackSideEffects){function deleteChild(returnFiber,childToDelete){if(!shouldTrackSideEffects){// Noop. 15853return;}// Deletions are added in reversed order so we add it to the front. 15854// At this point, the return fiber's effect list is empty except for 15855// deletions, so we can just append the deletion to the list. The remaining 15856// effects aren't added until the complete phase. Once we implement 15857// resuming, this may not be true. 15858var last=returnFiber.lastEffect;if(last!==null){last.nextEffect=childToDelete;returnFiber.lastEffect=childToDelete;}else{returnFiber.firstEffect=returnFiber.lastEffect=childToDelete;}childToDelete.nextEffect=null;childToDelete.effectTag=Deletion;}function deleteRemainingChildren(returnFiber,currentFirstChild){if(!shouldTrackSideEffects){// Noop. 15859return null;}// TODO: For the shouldClone case, this could be micro-optimized a bit by 15860// assuming that after the first child we've already added everything. 15861var childToDelete=currentFirstChild;while(childToDelete!==null){deleteChild(returnFiber,childToDelete);childToDelete=childToDelete.sibling;}return null;}function mapRemainingChildren(returnFiber,currentFirstChild){// Add the remaining children to a temporary map so that we can find them by 15862// keys quickly. Implicit (null) keys get added to this set with their index 15863// instead. 15864var existingChildren=new Map();var existingChild=currentFirstChild;while(existingChild!==null){if(existingChild.key!==null){existingChildren.set(existingChild.key,existingChild);}else{existingChildren.set(existingChild.index,existingChild);}existingChild=existingChild.sibling;}return existingChildren;}function useFiber(fiber,pendingProps){// We currently set sibling to null and index to 0 here because it is easy 15865// to forget to do before returning it. E.g. for the single child case. 15866var clone=createWorkInProgress(fiber,pendingProps);clone.index=0;clone.sibling=null;return clone;}function placeChild(newFiber,lastPlacedIndex,newIndex){newFiber.index=newIndex;if(!shouldTrackSideEffects){// Noop. 15867return lastPlacedIndex;}var current=newFiber.alternate;if(current!==null){var oldIndex=current.index;if(oldIndex<lastPlacedIndex){// This is a move. 15868newFiber.effectTag=Placement;return lastPlacedIndex;}else{// This item can stay in place. 15869return oldIndex;}}else{// This is an insertion. 15870newFiber.effectTag=Placement;return lastPlacedIndex;}}function placeSingleChild(newFiber){// This is simpler for the single child case. We only need to do a 15871// placement for inserting new children. 15872if(shouldTrackSideEffects&&newFiber.alternate===null){newFiber.effectTag=Placement;}return newFiber;}function updateTextNode(returnFiber,current,textContent,expirationTime){if(current===null||current.tag!==HostText){// Insert 15873var created=createFiberFromText(textContent,returnFiber.mode,expirationTime);created.return=returnFiber;return created;}else{// Update 15874var existing=useFiber(current,textContent);existing.return=returnFiber;return existing;}}function updateElement(returnFiber,current,element,expirationTime){if(current!==null){if(current.elementType===element.type||// Keep this check inline so it only runs on the false path: 15875isCompatibleFamilyForHotReloading(current,element)){// Move based on index 15876var existing=useFiber(current,element.props);existing.ref=coerceRef(returnFiber,current,element);existing.return=returnFiber;{existing._debugSource=element._source;existing._debugOwner=element._owner;}return existing;}}// Insert 15877var created=createFiberFromElement(element,returnFiber.mode,expirationTime);created.ref=coerceRef(returnFiber,current,element);created.return=returnFiber;return created;}function updatePortal(returnFiber,current,portal,expirationTime){if(current===null||current.tag!==HostPortal||current.stateNode.containerInfo!==portal.containerInfo||current.stateNode.implementation!==portal.implementation){// Insert 15878var created=createFiberFromPortal(portal,returnFiber.mode,expirationTime);created.return=returnFiber;return created;}else{// Update 15879var existing=useFiber(current,portal.children||[]);existing.return=returnFiber;return existing;}}function updateFragment(returnFiber,current,fragment,expirationTime,key){if(current===null||current.tag!==Fragment){// Insert 15880var created=createFiberFromFragment(fragment,returnFiber.mode,expirationTime,key);created.return=returnFiber;return created;}else{// Update 15881var existing=useFiber(current,fragment);existing.return=returnFiber;return existing;}}function createChild(returnFiber,newChild,expirationTime){if(typeof newChild==='string'||typeof newChild==='number'){// Text nodes don't have keys. If the previous node is implicitly keyed 15882// we can continue to replace it without aborting even if it is not a text 15883// node. 15884var created=createFiberFromText(''+newChild,returnFiber.mode,expirationTime);created.return=returnFiber;return created;}if(typeof newChild==='object'&&newChild!==null){switch(newChild.$$typeof){case REACT_ELEMENT_TYPE:{var _created=createFiberFromElement(newChild,returnFiber.mode,expirationTime);_created.ref=coerceRef(returnFiber,null,newChild);_created.return=returnFiber;return _created;}case REACT_PORTAL_TYPE:{var _created2=createFiberFromPortal(newChild,returnFiber.mode,expirationTime);_created2.return=returnFiber;return _created2;}}if(isArray$1(newChild)||getIteratorFn(newChild)){var _created3=createFiberFromFragment(newChild,returnFiber.mode,expirationTime,null);_created3.return=returnFiber;return _created3;}throwOnInvalidObjectType(returnFiber,newChild);}{if(typeof newChild==='function'){warnOnFunctionType();}}return null;}function updateSlot(returnFiber,oldFiber,newChild,expirationTime){// Update the fiber if the keys match, otherwise return null. 15885var key=oldFiber!==null?oldFiber.key:null;if(typeof newChild==='string'||typeof newChild==='number'){// Text nodes don't have keys. If the previous node is implicitly keyed 15886// we can continue to replace it without aborting even if it is not a text 15887// node. 15888if(key!==null){return null;}return updateTextNode(returnFiber,oldFiber,''+newChild,expirationTime);}if(typeof newChild==='object'&&newChild!==null){switch(newChild.$$typeof){case REACT_ELEMENT_TYPE:{if(newChild.key===key){if(newChild.type===REACT_FRAGMENT_TYPE){return updateFragment(returnFiber,oldFiber,newChild.props.children,expirationTime,key);}return updateElement(returnFiber,oldFiber,newChild,expirationTime);}else{return null;}}case REACT_PORTAL_TYPE:{if(newChild.key===key){return updatePortal(returnFiber,oldFiber,newChild,expirationTime);}else{return null;}}}if(isArray$1(newChild)||getIteratorFn(newChild)){if(key!==null){return null;}return updateFragment(returnFiber,oldFiber,newChild,expirationTime,null);}throwOnInvalidObjectType(returnFiber,newChild);}{if(typeof newChild==='function'){warnOnFunctionType();}}return null;}function updateFromMap(existingChildren,returnFiber,newIdx,newChild,expirationTime){if(typeof newChild==='string'||typeof newChild==='number'){// Text nodes don't have keys, so we neither have to check the old nor 15889// new node for the key. If both are text nodes, they match. 15890var matchedFiber=existingChildren.get(newIdx)||null;return updateTextNode(returnFiber,matchedFiber,''+newChild,expirationTime);}if(typeof newChild==='object'&&newChild!==null){switch(newChild.$$typeof){case REACT_ELEMENT_TYPE:{var _matchedFiber=existingChildren.get(newChild.key===null?newIdx:newChild.key)||null;if(newChild.type===REACT_FRAGMENT_TYPE){return updateFragment(returnFiber,_matchedFiber,newChild.props.children,expirationTime,newChild.key);}return updateElement(returnFiber,_matchedFiber,newChild,expirationTime);}case REACT_PORTAL_TYPE:{var _matchedFiber2=existingChildren.get(newChild.key===null?newIdx:newChild.key)||null;return updatePortal(returnFiber,_matchedFiber2,newChild,expirationTime);}}if(isArray$1(newChild)||getIteratorFn(newChild)){var _matchedFiber3=existingChildren.get(newIdx)||null;return updateFragment(returnFiber,_matchedFiber3,newChild,expirationTime,null);}throwOnInvalidObjectType(returnFiber,newChild);}{if(typeof newChild==='function'){warnOnFunctionType();}}return null;}/** 15891 * Warns if there is a duplicate or missing key 15892 */function warnOnInvalidKey(child,knownKeys){{if(typeof child!=='object'||child===null){return knownKeys;}switch(child.$$typeof){case REACT_ELEMENT_TYPE:case REACT_PORTAL_TYPE:warnForMissingKey(child);var key=child.key;if(typeof key!=='string'){break;}if(knownKeys===null){knownKeys=new Set();knownKeys.add(key);break;}if(!knownKeys.has(key)){knownKeys.add(key);break;}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);break;}}return knownKeys;}function reconcileChildrenArray(returnFiber,currentFirstChild,newChildren,expirationTime){// This algorithm can't optimize by searching from both ends since we 15893// don't have backpointers on fibers. I'm trying to see how far we can get 15894// with that model. If it ends up not being worth the tradeoffs, we can 15895// add it later. 15896// Even with a two ended optimization, we'd want to optimize for the case 15897// where there are few changes and brute force the comparison instead of 15898// going for the Map. It'd like to explore hitting that path first in 15899// forward-only mode and only go for the Map once we notice that we need 15900// lots of look ahead. This doesn't handle reversal as well as two ended 15901// search but that's unusual. Besides, for the two ended optimization to 15902// work on Iterables, we'd need to copy the whole set. 15903// In this first iteration, we'll just live with hitting the bad case 15904// (adding everything to a Map) in for every insert/move. 15905// If you change this code, also update reconcileChildrenIterator() which 15906// uses the same algorithm. 15907{// First, validate keys. 15908var knownKeys=null;for(var i=0;i<newChildren.length;i++){var child=newChildren[i];knownKeys=warnOnInvalidKey(child,knownKeys);}}var resultingFirstChild=null;var previousNewFiber=null;var oldFiber=currentFirstChild;var lastPlacedIndex=0;var newIdx=0;var nextOldFiber=null;for(;oldFiber!==null&&newIdx<newChildren.length;newIdx++){if(oldFiber.index>newIdx){nextOldFiber=oldFiber;oldFiber=null;}else{nextOldFiber=oldFiber.sibling;}var newFiber=updateSlot(returnFiber,oldFiber,newChildren[newIdx],expirationTime);if(newFiber===null){// TODO: This breaks on empty slots like null children. That's 15909// unfortunate because it triggers the slow path all the time. We need 15910// a better way to communicate whether this was a miss or null, 15911// boolean, undefined, etc. 15912if(oldFiber===null){oldFiber=nextOldFiber;}break;}if(shouldTrackSideEffects){if(oldFiber&&newFiber.alternate===null){// We matched the slot, but we didn't reuse the existing fiber, so we 15913// need to delete the existing child. 15914deleteChild(returnFiber,oldFiber);}}lastPlacedIndex=placeChild(newFiber,lastPlacedIndex,newIdx);if(previousNewFiber===null){// TODO: Move out of the loop. This only happens for the first run. 15915resultingFirstChild=newFiber;}else{// TODO: Defer siblings if we're not at the right index for this slot. 15916// I.e. if we had null values before, then we want to defer this 15917// for each null value. However, we also don't want to call updateSlot 15918// with the previous one. 15919previousNewFiber.sibling=newFiber;}previousNewFiber=newFiber;oldFiber=nextOldFiber;}if(newIdx===newChildren.length){// We've reached the end of the new children. We can delete the rest. 15920deleteRemainingChildren(returnFiber,oldFiber);return resultingFirstChild;}if(oldFiber===null){// If we don't have any more existing children we can choose a fast path 15921// since the rest will all be insertions. 15922for(;newIdx<newChildren.length;newIdx++){var _newFiber=createChild(returnFiber,newChildren[newIdx],expirationTime);if(_newFiber===null){continue;}lastPlacedIndex=placeChild(_newFiber,lastPlacedIndex,newIdx);if(previousNewFiber===null){// TODO: Move out of the loop. This only happens for the first run. 15923resultingFirstChild=_newFiber;}else{previousNewFiber.sibling=_newFiber;}previousNewFiber=_newFiber;}return resultingFirstChild;}// Add all children to a key map for quick lookups. 15924var existingChildren=mapRemainingChildren(returnFiber,oldFiber);// Keep scanning and use the map to restore deleted items as moves. 15925for(;newIdx<newChildren.length;newIdx++){var _newFiber2=updateFromMap(existingChildren,returnFiber,newIdx,newChildren[newIdx],expirationTime);if(_newFiber2!==null){if(shouldTrackSideEffects){if(_newFiber2.alternate!==null){// The new fiber is a work in progress, but if there exists a 15926// current, that means that we reused the fiber. We need to delete 15927// it from the child list so that we don't add it to the deletion 15928// list. 15929existingChildren.delete(_newFiber2.key===null?newIdx:_newFiber2.key);}}lastPlacedIndex=placeChild(_newFiber2,lastPlacedIndex,newIdx);if(previousNewFiber===null){resultingFirstChild=_newFiber2;}else{previousNewFiber.sibling=_newFiber2;}previousNewFiber=_newFiber2;}}if(shouldTrackSideEffects){// Any existing children that weren't consumed above were deleted. We need 15930// to add them to the deletion list. 15931existingChildren.forEach(function(child){return deleteChild(returnFiber,child);});}return resultingFirstChild;}function reconcileChildrenIterator(returnFiber,currentFirstChild,newChildrenIterable,expirationTime){// This is the same implementation as reconcileChildrenArray(), 15932// but using the iterator instead. 15933var iteratorFn=getIteratorFn(newChildrenIterable);if(!(typeof iteratorFn==='function')){{throw Error("An object is not an iterable. This error is likely caused by a bug in React. Please file an issue.");}}{// We don't support rendering Generators because it's a mutation. 15934// See https://github.com/facebook/react/issues/12995 15935if(typeof Symbol==='function'&&// $FlowFixMe Flow doesn't know about toStringTag 15936newChildrenIterable[Symbol.toStringTag]==='Generator'){if(!didWarnAboutGenerators){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.');}didWarnAboutGenerators=true;}// Warn about using Maps as children 15937if(newChildrenIterable.entries===iteratorFn){if(!didWarnAboutMaps){error('Using Maps as children is unsupported and will likely yield '+'unexpected results. Convert it to a sequence/iterable of keyed '+'ReactElements instead.');}didWarnAboutMaps=true;}// First, validate keys. 15938// We'll get a different iterator later for the main pass. 15939var _newChildren=iteratorFn.call(newChildrenIterable);if(_newChildren){var knownKeys=null;var _step=_newChildren.next();for(;!_step.done;_step=_newChildren.next()){var child=_step.value;knownKeys=warnOnInvalidKey(child,knownKeys);}}}var newChildren=iteratorFn.call(newChildrenIterable);if(!(newChildren!=null)){{throw Error("An iterable object provided no iterator.");}}var resultingFirstChild=null;var previousNewFiber=null;var oldFiber=currentFirstChild;var lastPlacedIndex=0;var newIdx=0;var nextOldFiber=null;var step=newChildren.next();for(;oldFiber!==null&&!step.done;newIdx++,step=newChildren.next()){if(oldFiber.index>newIdx){nextOldFiber=oldFiber;oldFiber=null;}else{nextOldFiber=oldFiber.sibling;}var newFiber=updateSlot(returnFiber,oldFiber,step.value,expirationTime);if(newFiber===null){// TODO: This breaks on empty slots like null children. That's 15940// unfortunate because it triggers the slow path all the time. We need 15941// a better way to communicate whether this was a miss or null, 15942// boolean, undefined, etc. 15943if(oldFiber===null){oldFiber=nextOldFiber;}break;}if(shouldTrackSideEffects){if(oldFiber&&newFiber.alternate===null){// We matched the slot, but we didn't reuse the existing fiber, so we 15944// need to delete the existing child. 15945deleteChild(returnFiber,oldFiber);}}lastPlacedIndex=placeChild(newFiber,lastPlacedIndex,newIdx);if(previousNewFiber===null){// TODO: Move out of the loop. This only happens for the first run. 15946resultingFirstChild=newFiber;}else{// TODO: Defer siblings if we're not at the right index for this slot. 15947// I.e. if we had null values before, then we want to defer this 15948// for each null value. However, we also don't want to call updateSlot 15949// with the previous one. 15950previousNewFiber.sibling=newFiber;}previousNewFiber=newFiber;oldFiber=nextOldFiber;}if(step.done){// We've reached the end of the new children. We can delete the rest. 15951deleteRemainingChildren(returnFiber,oldFiber);return resultingFirstChild;}if(oldFiber===null){// If we don't have any more existing children we can choose a fast path 15952// since the rest will all be insertions. 15953for(;!step.done;newIdx++,step=newChildren.next()){var _newFiber3=createChild(returnFiber,step.value,expirationTime);if(_newFiber3===null){continue;}lastPlacedIndex=placeChild(_newFiber3,lastPlacedIndex,newIdx);if(previousNewFiber===null){// TODO: Move out of the loop. This only happens for the first run. 15954resultingFirstChild=_newFiber3;}else{previousNewFiber.sibling=_newFiber3;}previousNewFiber=_newFiber3;}return resultingFirstChild;}// Add all children to a key map for quick lookups. 15955var existingChildren=mapRemainingChildren(returnFiber,oldFiber);// Keep scanning and use the map to restore deleted items as moves. 15956for(;!step.done;newIdx++,step=newChildren.next()){var _newFiber4=updateFromMap(existingChildren,returnFiber,newIdx,step.value,expirationTime);if(_newFiber4!==null){if(shouldTrackSideEffects){if(_newFiber4.alternate!==null){// The new fiber is a work in progress, but if there exists a 15957// current, that means that we reused the fiber. We need to delete 15958// it from the child list so that we don't add it to the deletion 15959// list. 15960existingChildren.delete(_newFiber4.key===null?newIdx:_newFiber4.key);}}lastPlacedIndex=placeChild(_newFiber4,lastPlacedIndex,newIdx);if(previousNewFiber===null){resultingFirstChild=_newFiber4;}else{previousNewFiber.sibling=_newFiber4;}previousNewFiber=_newFiber4;}}if(shouldTrackSideEffects){// Any existing children that weren't consumed above were deleted. We need 15961// to add them to the deletion list. 15962existingChildren.forEach(function(child){return deleteChild(returnFiber,child);});}return resultingFirstChild;}function reconcileSingleTextNode(returnFiber,currentFirstChild,textContent,expirationTime){// There's no need to check for keys on text nodes since we don't have a 15963// way to define them. 15964if(currentFirstChild!==null&¤tFirstChild.tag===HostText){// We already have an existing node so let's just update it and delete 15965// the rest. 15966deleteRemainingChildren(returnFiber,currentFirstChild.sibling);var existing=useFiber(currentFirstChild,textContent);existing.return=returnFiber;return existing;}// The existing first child is not a text node so we need to create one 15967// and delete the existing ones. 15968deleteRemainingChildren(returnFiber,currentFirstChild);var created=createFiberFromText(textContent,returnFiber.mode,expirationTime);created.return=returnFiber;return created;}function reconcileSingleElement(returnFiber,currentFirstChild,element,expirationTime){var key=element.key;var child=currentFirstChild;while(child!==null){// TODO: If key === null and child.key === null, then this only applies to 15969// the first item in the list. 15970if(child.key===key){switch(child.tag){case Fragment:{if(element.type===REACT_FRAGMENT_TYPE){deleteRemainingChildren(returnFiber,child.sibling);var existing=useFiber(child,element.props.children);existing.return=returnFiber;{existing._debugSource=element._source;existing._debugOwner=element._owner;}return existing;}break;}case Block:// We intentionally fallthrough here if enableBlocksAPI is not on. 15971// eslint-disable-next-lined no-fallthrough 15972default:{if(child.elementType===element.type||// Keep this check inline so it only runs on the false path: 15973isCompatibleFamilyForHotReloading(child,element)){deleteRemainingChildren(returnFiber,child.sibling);var _existing3=useFiber(child,element.props);_existing3.ref=coerceRef(returnFiber,child,element);_existing3.return=returnFiber;{_existing3._debugSource=element._source;_existing3._debugOwner=element._owner;}return _existing3;}break;}}// Didn't match. 15974deleteRemainingChildren(returnFiber,child);break;}else{deleteChild(returnFiber,child);}child=child.sibling;}if(element.type===REACT_FRAGMENT_TYPE){var created=createFiberFromFragment(element.props.children,returnFiber.mode,expirationTime,element.key);created.return=returnFiber;return created;}else{var _created4=createFiberFromElement(element,returnFiber.mode,expirationTime);_created4.ref=coerceRef(returnFiber,currentFirstChild,element);_created4.return=returnFiber;return _created4;}}function reconcileSinglePortal(returnFiber,currentFirstChild,portal,expirationTime){var key=portal.key;var child=currentFirstChild;while(child!==null){// TODO: If key === null and child.key === null, then this only applies to 15975// the first item in the list. 15976if(child.key===key){if(child.tag===HostPortal&&child.stateNode.containerInfo===portal.containerInfo&&child.stateNode.implementation===portal.implementation){deleteRemainingChildren(returnFiber,child.sibling);var existing=useFiber(child,portal.children||[]);existing.return=returnFiber;return existing;}else{deleteRemainingChildren(returnFiber,child);break;}}else{deleteChild(returnFiber,child);}child=child.sibling;}var created=createFiberFromPortal(portal,returnFiber.mode,expirationTime);created.return=returnFiber;return created;}// This API will tag the children with the side-effect of the reconciliation 15977// itself. They will be added to the side-effect list as we pass through the 15978// children and the parent. 15979function reconcileChildFibers(returnFiber,currentFirstChild,newChild,expirationTime){// This function is not recursive. 15980// If the top level item is an array, we treat it as a set of children, 15981// not as a fragment. Nested arrays on the other hand will be treated as 15982// fragment nodes. Recursion happens at the normal flow. 15983// Handle top level unkeyed fragments as if they were arrays. 15984// This leads to an ambiguity between <>{[...]}</> and <>...</>. 15985// We treat the ambiguous cases above the same. 15986var isUnkeyedTopLevelFragment=typeof newChild==='object'&&newChild!==null&&newChild.type===REACT_FRAGMENT_TYPE&&newChild.key===null;if(isUnkeyedTopLevelFragment){newChild=newChild.props.children;}// Handle object types 15987var isObject=typeof newChild==='object'&&newChild!==null;if(isObject){switch(newChild.$$typeof){case REACT_ELEMENT_TYPE:return placeSingleChild(reconcileSingleElement(returnFiber,currentFirstChild,newChild,expirationTime));case REACT_PORTAL_TYPE:return placeSingleChild(reconcileSinglePortal(returnFiber,currentFirstChild,newChild,expirationTime));}}if(typeof newChild==='string'||typeof newChild==='number'){return placeSingleChild(reconcileSingleTextNode(returnFiber,currentFirstChild,''+newChild,expirationTime));}if(isArray$1(newChild)){return reconcileChildrenArray(returnFiber,currentFirstChild,newChild,expirationTime);}if(getIteratorFn(newChild)){return reconcileChildrenIterator(returnFiber,currentFirstChild,newChild,expirationTime);}if(isObject){throwOnInvalidObjectType(returnFiber,newChild);}{if(typeof newChild==='function'){warnOnFunctionType();}}if(typeof newChild==='undefined'&&!isUnkeyedTopLevelFragment){// If the new child is undefined, and the return fiber is a composite 15988// component, throw an error. If Fiber return types are disabled, 15989// we already threw above. 15990switch(returnFiber.tag){case ClassComponent:{{var instance=returnFiber.stateNode;if(instance.render._isMockFunction){// We allow auto-mocks to proceed as if they're returning null. 15991break;}}}// Intentionally fall through to the next case, which handles both 15992// functions and classes 15993// eslint-disable-next-lined no-fallthrough 15994case FunctionComponent:{var Component=returnFiber.type;{{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.");}}}}}// Remaining cases are all treated as empty. 15995return deleteRemainingChildren(returnFiber,currentFirstChild);}return reconcileChildFibers;}var reconcileChildFibers=ChildReconciler(true);var mountChildFibers=ChildReconciler(false);function cloneChildFibers(current,workInProgress){if(!(current===null||workInProgress.child===current.child)){{throw Error("Resuming work not yet implemented.");}}if(workInProgress.child===null){return;}var currentChild=workInProgress.child;var newChild=createWorkInProgress(currentChild,currentChild.pendingProps);workInProgress.child=newChild;newChild.return=workInProgress;while(currentChild.sibling!==null){currentChild=currentChild.sibling;newChild=newChild.sibling=createWorkInProgress(currentChild,currentChild.pendingProps);newChild.return=workInProgress;}newChild.sibling=null;}// Reset a workInProgress child set to prepare it for a second pass. 15996function resetChildFibers(workInProgress,renderExpirationTime){var child=workInProgress.child;while(child!==null){resetWorkInProgress(child,renderExpirationTime);child=child.sibling;}}var NO_CONTEXT={};var contextStackCursor$1=createCursor(NO_CONTEXT);var contextFiberStackCursor=createCursor(NO_CONTEXT);var rootInstanceStackCursor=createCursor(NO_CONTEXT);function requiredContext(c){if(!(c!==NO_CONTEXT)){{throw Error("Expected host context to exist. This error is likely caused by a bug in React. Please file an issue.");}}return c;}function getRootHostContainer(){var rootInstance=requiredContext(rootInstanceStackCursor.current);return rootInstance;}function pushHostContainer(fiber,nextRootInstance){// Push current root instance onto the stack; 15997// This allows us to reset root when portals are popped. 15998push(rootInstanceStackCursor,nextRootInstance,fiber);// Track the context and the Fiber that provided it. 15999// This enables us to pop only Fibers that provide unique contexts. 16000push(contextFiberStackCursor,fiber,fiber);// Finally, we need to push the host context to the stack. 16001// However, we can't just call getRootHostContext() and push it because 16002// we'd have a different number of entries on the stack depending on 16003// whether getRootHostContext() throws somewhere in renderer code or not. 16004// So we push an empty value first. This lets us safely unwind on errors. 16005push(contextStackCursor$1,NO_CONTEXT,fiber);var nextRootContext=getRootHostContext(nextRootInstance);// Now that we know this function doesn't throw, replace it. 16006pop(contextStackCursor$1,fiber);push(contextStackCursor$1,nextRootContext,fiber);}function popHostContainer(fiber){pop(contextStackCursor$1,fiber);pop(contextFiberStackCursor,fiber);pop(rootInstanceStackCursor,fiber);}function getHostContext(){var context=requiredContext(contextStackCursor$1.current);return context;}function pushHostContext(fiber){var rootInstance=requiredContext(rootInstanceStackCursor.current);var context=requiredContext(contextStackCursor$1.current);var nextContext=getChildHostContext(context,fiber.type);// Don't push this Fiber's context unless it's unique. 16007if(context===nextContext){return;}// Track the context and the Fiber that provided it. 16008// This enables us to pop only Fibers that provide unique contexts. 16009push(contextFiberStackCursor,fiber,fiber);push(contextStackCursor$1,nextContext,fiber);}function popHostContext(fiber){// Do not pop unless this Fiber provided the current context. 16010// pushHostContext() only pushes Fibers that provide unique contexts. 16011if(contextFiberStackCursor.current!==fiber){return;}pop(contextStackCursor$1,fiber);pop(contextFiberStackCursor,fiber);}var DefaultSuspenseContext=0;// The Suspense Context is split into two parts. The lower bits is 16012// inherited deeply down the subtree. The upper bits only affect 16013// this immediate suspense boundary and gets reset each new 16014// boundary or suspense list. 16015var SubtreeSuspenseContextMask=1;// Subtree Flags: 16016// InvisibleParentSuspenseContext indicates that one of our parent Suspense 16017// boundaries is not currently showing visible main content. 16018// Either because it is already showing a fallback or is not mounted at all. 16019// We can use this to determine if it is desirable to trigger a fallback at 16020// the parent. If not, then we might need to trigger undesirable boundaries 16021// and/or suspend the commit to avoid hiding the parent content. 16022var InvisibleParentSuspenseContext=1;// Shallow Flags: 16023// ForceSuspenseFallback can be used by SuspenseList to force newly added 16024// items into their fallback state during one of the render passes. 16025var ForceSuspenseFallback=2;var suspenseStackCursor=createCursor(DefaultSuspenseContext);function hasSuspenseContext(parentContext,flag){return(parentContext&flag)!==0;}function setDefaultShallowSuspenseContext(parentContext){return parentContext&SubtreeSuspenseContextMask;}function setShallowSuspenseContext(parentContext,shallowContext){return parentContext&SubtreeSuspenseContextMask|shallowContext;}function addSubtreeSuspenseContext(parentContext,subtreeContext){return parentContext|subtreeContext;}function pushSuspenseContext(fiber,newContext){push(suspenseStackCursor,newContext,fiber);}function popSuspenseContext(fiber){pop(suspenseStackCursor,fiber);}function shouldCaptureSuspense(workInProgress,hasInvisibleParent){// If it was the primary children that just suspended, capture and render the 16026// fallback. Otherwise, don't capture and bubble to the next boundary. 16027var nextState=workInProgress.memoizedState;if(nextState!==null){if(nextState.dehydrated!==null){// A dehydrated boundary always captures. 16028return true;}return false;}var props=workInProgress.memoizedProps;// In order to capture, the Suspense component must have a fallback prop. 16029if(props.fallback===undefined){return false;}// Regular boundaries always capture. 16030if(props.unstable_avoidThisFallback!==true){return true;}// If it's a boundary we should avoid, then we prefer to bubble up to the 16031// parent boundary if it is currently invisible. 16032if(hasInvisibleParent){return false;}// If the parent is not able to handle it, we must handle it. 16033return true;}function findFirstSuspended(row){var node=row;while(node!==null){if(node.tag===SuspenseComponent){var state=node.memoizedState;if(state!==null){var dehydrated=state.dehydrated;if(dehydrated===null||isSuspenseInstancePending(dehydrated)||isSuspenseInstanceFallback(dehydrated)){return node;}}}else if(node.tag===SuspenseListComponent&&// revealOrder undefined can't be trusted because it don't 16034// keep track of whether it suspended or not. 16035node.memoizedProps.revealOrder!==undefined){var didSuspend=(node.effectTag&DidCapture)!==NoEffect;if(didSuspend){return node;}}else if(node.child!==null){node.child.return=node;node=node.child;continue;}if(node===row){return null;}while(node.sibling===null){if(node.return===null||node.return===row){return null;}node=node.return;}node.sibling.return=node.return;node=node.sibling;}return null;}function createDeprecatedResponderListener(responder,props){var eventResponderListener={responder:responder,props:props};{Object.freeze(eventResponderListener);}return eventResponderListener;}var HasEffect=/* */1;// Represents the phase in which the effect (not the clean-up) fires. 16036var Layout=/* */2;var Passive$1=/* */4;var ReactCurrentDispatcher=ReactSharedInternals.ReactCurrentDispatcher,ReactCurrentBatchConfig$1=ReactSharedInternals.ReactCurrentBatchConfig;var didWarnAboutMismatchedHooksForComponent;{didWarnAboutMismatchedHooksForComponent=new Set();}// These are set right before calling the component. 16037var renderExpirationTime=NoWork;// The work-in-progress fiber. I've named it differently to distinguish it from 16038// the work-in-progress hook. 16039var currentlyRenderingFiber$1=null;// Hooks are stored as a linked list on the fiber's memoizedState field. The 16040// current hook list is the list that belongs to the current fiber. The 16041// work-in-progress hook list is a new list that will be added to the 16042// work-in-progress fiber. 16043var currentHook=null;var workInProgressHook=null;// Whether an update was scheduled at any point during the render phase. This 16044// does not get reset if we do another render pass; only when we're completely 16045// finished evaluating this component. This is an optimization so we know 16046// whether we need to clear render phase updates after a throw. 16047var didScheduleRenderPhaseUpdate=false;var RE_RENDER_LIMIT=25;// In DEV, this is the name of the currently executing primitive hook 16048var currentHookNameInDev=null;// In DEV, this list ensures that hooks are called in the same order between renders. 16049// The list stores the order of hooks used during the initial render (mount). 16050// Subsequent renders (updates) reference this list. 16051var hookTypesDev=null;var hookTypesUpdateIndexDev=-1;// In DEV, this tracks whether currently rendering component needs to ignore 16052// the dependencies for Hooks that need them (e.g. useEffect or useMemo). 16053// When true, such Hooks will always be "remounted". Only used during hot reload. 16054var ignorePreviousDependencies=false;function mountHookTypesDev(){{var hookName=currentHookNameInDev;if(hookTypesDev===null){hookTypesDev=[hookName];}else{hookTypesDev.push(hookName);}}}function updateHookTypesDev(){{var hookName=currentHookNameInDev;if(hookTypesDev!==null){hookTypesUpdateIndexDev++;if(hookTypesDev[hookTypesUpdateIndexDev]!==hookName){warnOnHookMismatchInDev(hookName);}}}}function checkDepsAreArrayDev(deps){{if(deps!==undefined&&deps!==null&&!Array.isArray(deps)){// Verify deps, but only on mount to avoid extra checks. 16055// It's unlikely their type would change as usually you define them inline. 16056error('%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);}}}function warnOnHookMismatchInDev(currentHookName){{var componentName=getComponentName(currentlyRenderingFiber$1.type);if(!didWarnAboutMismatchedHooksForComponent.has(componentName)){didWarnAboutMismatchedHooksForComponent.add(componentName);if(hookTypesDev!==null){var table='';var secondColumnStart=30;for(var i=0;i<=hookTypesUpdateIndexDev;i++){var oldHookName=hookTypesDev[i];var newHookName=i===hookTypesUpdateIndexDev?currentHookName:oldHookName;var row=i+1+". "+oldHookName;// Extra space so second column lines up 16057// lol @ IE not supporting String#repeat 16058while(row.length<secondColumnStart){row+=' ';}row+=newHookName+'\n';table+=row;}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);}}}}function throwInvalidHookError(){{{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.");}}}function areHookInputsEqual(nextDeps,prevDeps){{if(ignorePreviousDependencies){// Only true when this component is being hot reloaded. 16059return false;}}if(prevDeps===null){{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);}return false;}{// Don't bother comparing lengths in prod because these arrays should be 16060// passed inline. 16061if(nextDeps.length!==prevDeps.length){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(', ')+"]");}}for(var i=0;i<prevDeps.length&&i<nextDeps.length;i++){if(objectIs(nextDeps[i],prevDeps[i])){continue;}return false;}return true;}function renderWithHooks(current,workInProgress,Component,props,secondArg,nextRenderExpirationTime){renderExpirationTime=nextRenderExpirationTime;currentlyRenderingFiber$1=workInProgress;{hookTypesDev=current!==null?current._debugHookTypes:null;hookTypesUpdateIndexDev=-1;// Used for hot reloading: 16062ignorePreviousDependencies=current!==null&¤t.type!==workInProgress.type;}workInProgress.memoizedState=null;workInProgress.updateQueue=null;workInProgress.expirationTime=NoWork;// The following should have already been reset 16063// currentHook = null; 16064// workInProgressHook = null; 16065// didScheduleRenderPhaseUpdate = false; 16066// TODO Warn if no hooks are used at all during mount, then some are used during update. 16067// Currently we will identify the update render as a mount because memoizedState === null. 16068// This is tricky because it's valid for certain types of components (e.g. React.lazy) 16069// Using memoizedState to differentiate between mount/update only works if at least one stateful hook is used. 16070// Non-stateful hooks (e.g. context) don't get added to memoizedState, 16071// so memoizedState would be null during updates and mounts. 16072{if(current!==null&¤t.memoizedState!==null){ReactCurrentDispatcher.current=HooksDispatcherOnUpdateInDEV;}else if(hookTypesDev!==null){// This dispatcher handles an edge case where a component is updating, 16073// but no stateful hooks have been used. 16074// We want to match the production code behavior (which will use HooksDispatcherOnMount), 16075// but with the extra DEV validation to ensure hooks ordering hasn't changed. 16076// This dispatcher does that. 16077ReactCurrentDispatcher.current=HooksDispatcherOnMountWithHookTypesInDEV;}else{ReactCurrentDispatcher.current=HooksDispatcherOnMountInDEV;}}var children=Component(props,secondArg);// Check if there was a render phase update 16078if(workInProgress.expirationTime===renderExpirationTime){// Keep rendering in a loop for as long as render phase updates continue to 16079// be scheduled. Use a counter to prevent infinite loops. 16080var numberOfReRenders=0;do{workInProgress.expirationTime=NoWork;if(!(numberOfReRenders<RE_RENDER_LIMIT)){{throw Error("Too many re-renders. React limits the number of renders to prevent an infinite loop.");}}numberOfReRenders+=1;{// Even when hot reloading, allow dependencies to stabilize 16081// after first render to prevent infinite render phase updates. 16082ignorePreviousDependencies=false;}// Start over from the beginning of the list 16083currentHook=null;workInProgressHook=null;workInProgress.updateQueue=null;{// Also validate hook order for cascading updates. 16084hookTypesUpdateIndexDev=-1;}ReactCurrentDispatcher.current=HooksDispatcherOnRerenderInDEV;children=Component(props,secondArg);}while(workInProgress.expirationTime===renderExpirationTime);}// We can assume the previous dispatcher is always this one, since we set it 16085// at the beginning of the render phase and there's no re-entrancy. 16086ReactCurrentDispatcher.current=ContextOnlyDispatcher;{workInProgress._debugHookTypes=hookTypesDev;}// This check uses currentHook so that it works the same in DEV and prod bundles. 16087// hookTypesDev could catch more cases (e.g. context) but only in DEV bundles. 16088var didRenderTooFewHooks=currentHook!==null&¤tHook.next!==null;renderExpirationTime=NoWork;currentlyRenderingFiber$1=null;currentHook=null;workInProgressHook=null;{currentHookNameInDev=null;hookTypesDev=null;hookTypesUpdateIndexDev=-1;}didScheduleRenderPhaseUpdate=false;if(!!didRenderTooFewHooks){{throw Error("Rendered fewer hooks than expected. This may be caused by an accidental early return statement.");}}return children;}function bailoutHooks(current,workInProgress,expirationTime){workInProgress.updateQueue=current.updateQueue;workInProgress.effectTag&=~(Passive|Update);if(current.expirationTime<=expirationTime){current.expirationTime=NoWork;}}function resetHooksAfterThrow(){// We can assume the previous dispatcher is always this one, since we set it 16089// at the beginning of the render phase and there's no re-entrancy. 16090ReactCurrentDispatcher.current=ContextOnlyDispatcher;if(didScheduleRenderPhaseUpdate){// There were render phase updates. These are only valid for this render 16091// phase, which we are now aborting. Remove the updates from the queues so 16092// they do not persist to the next render. Do not remove updates from hooks 16093// that weren't processed. 16094// 16095// Only reset the updates from the queue if it has a clone. If it does 16096// not have a clone, that means it wasn't processed, and the updates were 16097// scheduled before we entered the render phase. 16098var hook=currentlyRenderingFiber$1.memoizedState;while(hook!==null){var queue=hook.queue;if(queue!==null){queue.pending=null;}hook=hook.next;}}renderExpirationTime=NoWork;currentlyRenderingFiber$1=null;currentHook=null;workInProgressHook=null;{hookTypesDev=null;hookTypesUpdateIndexDev=-1;currentHookNameInDev=null;}didScheduleRenderPhaseUpdate=false;}function mountWorkInProgressHook(){var hook={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};if(workInProgressHook===null){// This is the first hook in the list 16099currentlyRenderingFiber$1.memoizedState=workInProgressHook=hook;}else{// Append to the end of the list 16100workInProgressHook=workInProgressHook.next=hook;}return workInProgressHook;}function updateWorkInProgressHook(){// This function is used both for updates and for re-renders triggered by a 16101// render phase update. It assumes there is either a current hook we can 16102// clone, or a work-in-progress hook from a previous render pass that we can 16103// use as a base. When we reach the end of the base list, we must switch to 16104// the dispatcher used for mounts. 16105var nextCurrentHook;if(currentHook===null){var current=currentlyRenderingFiber$1.alternate;if(current!==null){nextCurrentHook=current.memoizedState;}else{nextCurrentHook=null;}}else{nextCurrentHook=currentHook.next;}var nextWorkInProgressHook;if(workInProgressHook===null){nextWorkInProgressHook=currentlyRenderingFiber$1.memoizedState;}else{nextWorkInProgressHook=workInProgressHook.next;}if(nextWorkInProgressHook!==null){// There's already a work-in-progress. Reuse it. 16106workInProgressHook=nextWorkInProgressHook;nextWorkInProgressHook=workInProgressHook.next;currentHook=nextCurrentHook;}else{// Clone from the current hook. 16107if(!(nextCurrentHook!==null)){{throw Error("Rendered more hooks than during the previous render.");}}currentHook=nextCurrentHook;var newHook={memoizedState:currentHook.memoizedState,baseState:currentHook.baseState,baseQueue:currentHook.baseQueue,queue:currentHook.queue,next:null};if(workInProgressHook===null){// This is the first hook in the list. 16108currentlyRenderingFiber$1.memoizedState=workInProgressHook=newHook;}else{// Append to the end of the list. 16109workInProgressHook=workInProgressHook.next=newHook;}}return workInProgressHook;}function createFunctionComponentUpdateQueue(){return{lastEffect:null};}function basicStateReducer(state,action){// $FlowFixMe: Flow doesn't like mixed types 16110return typeof action==='function'?action(state):action;}function mountReducer(reducer,initialArg,init){var hook=mountWorkInProgressHook();var initialState;if(init!==undefined){initialState=init(initialArg);}else{initialState=initialArg;}hook.memoizedState=hook.baseState=initialState;var queue=hook.queue={pending:null,dispatch:null,lastRenderedReducer:reducer,lastRenderedState:initialState};var dispatch=queue.dispatch=dispatchAction.bind(null,currentlyRenderingFiber$1,queue);return[hook.memoizedState,dispatch];}function updateReducer(reducer,initialArg,init){var hook=updateWorkInProgressHook();var queue=hook.queue;if(!(queue!==null)){{throw Error("Should have a queue. This is likely a bug in React. Please file an issue.");}}queue.lastRenderedReducer=reducer;var current=currentHook;// The last rebase update that is NOT part of the base state. 16111var baseQueue=current.baseQueue;// The last pending update that hasn't been processed yet. 16112var pendingQueue=queue.pending;if(pendingQueue!==null){// We have new updates that haven't been processed yet. 16113// We'll add them to the base queue. 16114if(baseQueue!==null){// Merge the pending queue and the base queue. 16115var baseFirst=baseQueue.next;var pendingFirst=pendingQueue.next;baseQueue.next=pendingFirst;pendingQueue.next=baseFirst;}current.baseQueue=baseQueue=pendingQueue;queue.pending=null;}if(baseQueue!==null){// We have a queue to process. 16116var first=baseQueue.next;var newState=current.baseState;var newBaseState=null;var newBaseQueueFirst=null;var newBaseQueueLast=null;var update=first;do{var updateExpirationTime=update.expirationTime;if(updateExpirationTime<renderExpirationTime){// Priority is insufficient. Skip this update. If this is the first 16117// skipped update, the previous update/state is the new base 16118// update/state. 16119var clone={expirationTime:update.expirationTime,suspenseConfig:update.suspenseConfig,action:update.action,eagerReducer:update.eagerReducer,eagerState:update.eagerState,next:null};if(newBaseQueueLast===null){newBaseQueueFirst=newBaseQueueLast=clone;newBaseState=newState;}else{newBaseQueueLast=newBaseQueueLast.next=clone;}// Update the remaining priority in the queue. 16120if(updateExpirationTime>currentlyRenderingFiber$1.expirationTime){currentlyRenderingFiber$1.expirationTime=updateExpirationTime;markUnprocessedUpdateTime(updateExpirationTime);}}else{// This update does have sufficient priority. 16121if(newBaseQueueLast!==null){var _clone={expirationTime:Sync,// This update is going to be committed so we never want uncommit it. 16122suspenseConfig:update.suspenseConfig,action:update.action,eagerReducer:update.eagerReducer,eagerState:update.eagerState,next:null};newBaseQueueLast=newBaseQueueLast.next=_clone;}// Mark the event time of this update as relevant to this render pass. 16123// TODO: This should ideally use the true event time of this update rather than 16124// its priority which is a derived and not reverseable value. 16125// TODO: We should skip this update if it was already committed but currently 16126// we have no way of detecting the difference between a committed and suspended 16127// update here. 16128markRenderEventTimeAndConfig(updateExpirationTime,update.suspenseConfig);// Process this update. 16129if(update.eagerReducer===reducer){// If this update was processed eagerly, and its reducer matches the 16130// current reducer, we can use the eagerly computed state. 16131newState=update.eagerState;}else{var action=update.action;newState=reducer(newState,action);}}update=update.next;}while(update!==null&&update!==first);if(newBaseQueueLast===null){newBaseState=newState;}else{newBaseQueueLast.next=newBaseQueueFirst;}// Mark that the fiber performed work, but only if the new state is 16132// different from the current state. 16133if(!objectIs(newState,hook.memoizedState)){markWorkInProgressReceivedUpdate();}hook.memoizedState=newState;hook.baseState=newBaseState;hook.baseQueue=newBaseQueueLast;queue.lastRenderedState=newState;}var dispatch=queue.dispatch;return[hook.memoizedState,dispatch];}function rerenderReducer(reducer,initialArg,init){var hook=updateWorkInProgressHook();var queue=hook.queue;if(!(queue!==null)){{throw Error("Should have a queue. This is likely a bug in React. Please file an issue.");}}queue.lastRenderedReducer=reducer;// This is a re-render. Apply the new render phase updates to the previous 16134// work-in-progress hook. 16135var dispatch=queue.dispatch;var lastRenderPhaseUpdate=queue.pending;var newState=hook.memoizedState;if(lastRenderPhaseUpdate!==null){// The queue doesn't persist past this render pass. 16136queue.pending=null;var firstRenderPhaseUpdate=lastRenderPhaseUpdate.next;var update=firstRenderPhaseUpdate;do{// Process this render phase update. We don't have to check the 16137// priority because it will always be the same as the current 16138// render's. 16139var action=update.action;newState=reducer(newState,action);update=update.next;}while(update!==firstRenderPhaseUpdate);// Mark that the fiber performed work, but only if the new state is 16140// different from the current state. 16141if(!objectIs(newState,hook.memoizedState)){markWorkInProgressReceivedUpdate();}hook.memoizedState=newState;// Don't persist the state accumulated from the render phase updates to 16142// the base state unless the queue is empty. 16143// TODO: Not sure if this is the desired semantics, but it's what we 16144// do for gDSFP. I can't remember why. 16145if(hook.baseQueue===null){hook.baseState=newState;}queue.lastRenderedState=newState;}return[newState,dispatch];}function mountState(initialState){var hook=mountWorkInProgressHook();if(typeof initialState==='function'){// $FlowFixMe: Flow doesn't like mixed types 16146initialState=initialState();}hook.memoizedState=hook.baseState=initialState;var queue=hook.queue={pending:null,dispatch:null,lastRenderedReducer:basicStateReducer,lastRenderedState:initialState};var dispatch=queue.dispatch=dispatchAction.bind(null,currentlyRenderingFiber$1,queue);return[hook.memoizedState,dispatch];}function updateState(initialState){return updateReducer(basicStateReducer);}function rerenderState(initialState){return rerenderReducer(basicStateReducer);}function pushEffect(tag,create,destroy,deps){var effect={tag:tag,create:create,destroy:destroy,deps:deps,// Circular 16147next:null};var componentUpdateQueue=currentlyRenderingFiber$1.updateQueue;if(componentUpdateQueue===null){componentUpdateQueue=createFunctionComponentUpdateQueue();currentlyRenderingFiber$1.updateQueue=componentUpdateQueue;componentUpdateQueue.lastEffect=effect.next=effect;}else{var lastEffect=componentUpdateQueue.lastEffect;if(lastEffect===null){componentUpdateQueue.lastEffect=effect.next=effect;}else{var firstEffect=lastEffect.next;lastEffect.next=effect;effect.next=firstEffect;componentUpdateQueue.lastEffect=effect;}}return effect;}function mountRef(initialValue){var hook=mountWorkInProgressHook();var ref={current:initialValue};{Object.seal(ref);}hook.memoizedState=ref;return ref;}function updateRef(initialValue){var hook=updateWorkInProgressHook();return hook.memoizedState;}function mountEffectImpl(fiberEffectTag,hookEffectTag,create,deps){var hook=mountWorkInProgressHook();var nextDeps=deps===undefined?null:deps;currentlyRenderingFiber$1.effectTag|=fiberEffectTag;hook.memoizedState=pushEffect(HasEffect|hookEffectTag,create,undefined,nextDeps);}function updateEffectImpl(fiberEffectTag,hookEffectTag,create,deps){var hook=updateWorkInProgressHook();var nextDeps=deps===undefined?null:deps;var destroy=undefined;if(currentHook!==null){var prevEffect=currentHook.memoizedState;destroy=prevEffect.destroy;if(nextDeps!==null){var prevDeps=prevEffect.deps;if(areHookInputsEqual(nextDeps,prevDeps)){pushEffect(hookEffectTag,create,destroy,nextDeps);return;}}}currentlyRenderingFiber$1.effectTag|=fiberEffectTag;hook.memoizedState=pushEffect(HasEffect|hookEffectTag,create,destroy,nextDeps);}function mountEffect(create,deps){{// $FlowExpectedError - jest isn't a global, and isn't recognized outside of tests 16148if('undefined'!==typeof jest){warnIfNotCurrentlyActingEffectsInDEV(currentlyRenderingFiber$1);}}return mountEffectImpl(Update|Passive,Passive$1,create,deps);}function updateEffect(create,deps){{// $FlowExpectedError - jest isn't a global, and isn't recognized outside of tests 16149if('undefined'!==typeof jest){warnIfNotCurrentlyActingEffectsInDEV(currentlyRenderingFiber$1);}}return updateEffectImpl(Update|Passive,Passive$1,create,deps);}function mountLayoutEffect(create,deps){return mountEffectImpl(Update,Layout,create,deps);}function updateLayoutEffect(create,deps){return updateEffectImpl(Update,Layout,create,deps);}function imperativeHandleEffect(create,ref){if(typeof ref==='function'){var refCallback=ref;var _inst=create();refCallback(_inst);return function(){refCallback(null);};}else if(ref!==null&&ref!==undefined){var refObject=ref;{if(!refObject.hasOwnProperty('current')){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(', ')+'}');}}var _inst2=create();refObject.current=_inst2;return function(){refObject.current=null;};}}function mountImperativeHandle(ref,create,deps){{if(typeof create!=='function'){error('Expected useImperativeHandle() second argument to be a function '+'that creates a handle. Instead received: %s.',create!==null?typeof create:'null');}}// TODO: If deps are provided, should we skip comparing the ref itself? 16150var effectDeps=deps!==null&&deps!==undefined?deps.concat([ref]):null;return mountEffectImpl(Update,Layout,imperativeHandleEffect.bind(null,create,ref),effectDeps);}function updateImperativeHandle(ref,create,deps){{if(typeof create!=='function'){error('Expected useImperativeHandle() second argument to be a function '+'that creates a handle. Instead received: %s.',create!==null?typeof create:'null');}}// TODO: If deps are provided, should we skip comparing the ref itself? 16151var effectDeps=deps!==null&&deps!==undefined?deps.concat([ref]):null;return updateEffectImpl(Update,Layout,imperativeHandleEffect.bind(null,create,ref),effectDeps);}function mountDebugValue(value,formatterFn){// This hook is normally a no-op. 16152// The react-debug-hooks package injects its own implementation 16153// so that e.g. DevTools can display custom hook values. 16154}var updateDebugValue=mountDebugValue;function mountCallback(callback,deps){var hook=mountWorkInProgressHook();var nextDeps=deps===undefined?null:deps;hook.memoizedState=[callback,nextDeps];return callback;}function updateCallback(callback,deps){var hook=updateWorkInProgressHook();var nextDeps=deps===undefined?null:deps;var prevState=hook.memoizedState;if(prevState!==null){if(nextDeps!==null){var prevDeps=prevState[1];if(areHookInputsEqual(nextDeps,prevDeps)){return prevState[0];}}}hook.memoizedState=[callback,nextDeps];return callback;}function mountMemo(nextCreate,deps){var hook=mountWorkInProgressHook();var nextDeps=deps===undefined?null:deps;var nextValue=nextCreate();hook.memoizedState=[nextValue,nextDeps];return nextValue;}function updateMemo(nextCreate,deps){var hook=updateWorkInProgressHook();var nextDeps=deps===undefined?null:deps;var prevState=hook.memoizedState;if(prevState!==null){// Assume these are defined. If they're not, areHookInputsEqual will warn. 16155if(nextDeps!==null){var prevDeps=prevState[1];if(areHookInputsEqual(nextDeps,prevDeps)){return prevState[0];}}}var nextValue=nextCreate();hook.memoizedState=[nextValue,nextDeps];return nextValue;}function mountDeferredValue(value,config){var _mountState=mountState(value),prevValue=_mountState[0],setValue=_mountState[1];mountEffect(function(){var previousConfig=ReactCurrentBatchConfig$1.suspense;ReactCurrentBatchConfig$1.suspense=config===undefined?null:config;try{setValue(value);}finally{ReactCurrentBatchConfig$1.suspense=previousConfig;}},[value,config]);return prevValue;}function updateDeferredValue(value,config){var _updateState=updateState(),prevValue=_updateState[0],setValue=_updateState[1];updateEffect(function(){var previousConfig=ReactCurrentBatchConfig$1.suspense;ReactCurrentBatchConfig$1.suspense=config===undefined?null:config;try{setValue(value);}finally{ReactCurrentBatchConfig$1.suspense=previousConfig;}},[value,config]);return prevValue;}function rerenderDeferredValue(value,config){var _rerenderState=rerenderState(),prevValue=_rerenderState[0],setValue=_rerenderState[1];updateEffect(function(){var previousConfig=ReactCurrentBatchConfig$1.suspense;ReactCurrentBatchConfig$1.suspense=config===undefined?null:config;try{setValue(value);}finally{ReactCurrentBatchConfig$1.suspense=previousConfig;}},[value,config]);return prevValue;}function startTransition(setPending,config,callback){var priorityLevel=getCurrentPriorityLevel();runWithPriority$1(priorityLevel<UserBlockingPriority$1?UserBlockingPriority$1:priorityLevel,function(){setPending(true);});runWithPriority$1(priorityLevel>NormalPriority?NormalPriority:priorityLevel,function(){var previousConfig=ReactCurrentBatchConfig$1.suspense;ReactCurrentBatchConfig$1.suspense=config===undefined?null:config;try{setPending(false);callback();}finally{ReactCurrentBatchConfig$1.suspense=previousConfig;}});}function mountTransition(config){var _mountState2=mountState(false),isPending=_mountState2[0],setPending=_mountState2[1];var start=mountCallback(startTransition.bind(null,setPending,config),[setPending,config]);return[start,isPending];}function updateTransition(config){var _updateState2=updateState(),isPending=_updateState2[0],setPending=_updateState2[1];var start=updateCallback(startTransition.bind(null,setPending,config),[setPending,config]);return[start,isPending];}function rerenderTransition(config){var _rerenderState2=rerenderState(),isPending=_rerenderState2[0],setPending=_rerenderState2[1];var start=updateCallback(startTransition.bind(null,setPending,config),[setPending,config]);return[start,isPending];}function dispatchAction(fiber,queue,action){{if(typeof arguments[3]==='function'){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().');}}var currentTime=requestCurrentTimeForUpdate();var suspenseConfig=requestCurrentSuspenseConfig();var expirationTime=computeExpirationForFiber(currentTime,fiber,suspenseConfig);var update={expirationTime:expirationTime,suspenseConfig:suspenseConfig,action:action,eagerReducer:null,eagerState:null,next:null};{update.priority=getCurrentPriorityLevel();}// Append the update to the end of the list. 16156var pending=queue.pending;if(pending===null){// This is the first update. Create a circular list. 16157update.next=update;}else{update.next=pending.next;pending.next=update;}queue.pending=update;var alternate=fiber.alternate;if(fiber===currentlyRenderingFiber$1||alternate!==null&&alternate===currentlyRenderingFiber$1){// This is a render phase update. Stash it in a lazily-created map of 16158// queue -> linked list of updates. After this render pass, we'll restart 16159// and apply the stashed updates on top of the work-in-progress hook. 16160didScheduleRenderPhaseUpdate=true;update.expirationTime=renderExpirationTime;currentlyRenderingFiber$1.expirationTime=renderExpirationTime;}else{if(fiber.expirationTime===NoWork&&(alternate===null||alternate.expirationTime===NoWork)){// The queue is currently empty, which means we can eagerly compute the 16161// next state before entering the render phase. If the new state is the 16162// same as the current state, we may be able to bail out entirely. 16163var lastRenderedReducer=queue.lastRenderedReducer;if(lastRenderedReducer!==null){var prevDispatcher;{prevDispatcher=ReactCurrentDispatcher.current;ReactCurrentDispatcher.current=InvalidNestedHooksDispatcherOnUpdateInDEV;}try{var currentState=queue.lastRenderedState;var eagerState=lastRenderedReducer(currentState,action);// Stash the eagerly computed state, and the reducer used to compute 16164// it, on the update object. If the reducer hasn't changed by the 16165// time we enter the render phase, then the eager state can be used 16166// without calling the reducer again. 16167update.eagerReducer=lastRenderedReducer;update.eagerState=eagerState;if(objectIs(eagerState,currentState)){// Fast path. We can bail out without scheduling React to re-render. 16168// It's still possible that we'll need to rebase this update later, 16169// if the component re-renders for a different reason and by that 16170// time the reducer has changed. 16171return;}}catch(error){// Suppress the error. It will throw again in the render phase. 16172}finally{{ReactCurrentDispatcher.current=prevDispatcher;}}}}{// $FlowExpectedError - jest isn't a global, and isn't recognized outside of tests 16173if('undefined'!==typeof jest){warnIfNotScopedWithMatchingAct(fiber);warnIfNotCurrentlyActingUpdatesInDev(fiber);}}scheduleWork(fiber,expirationTime);}}var ContextOnlyDispatcher={readContext:readContext,useCallback:throwInvalidHookError,useContext:throwInvalidHookError,useEffect:throwInvalidHookError,useImperativeHandle:throwInvalidHookError,useLayoutEffect:throwInvalidHookError,useMemo:throwInvalidHookError,useReducer:throwInvalidHookError,useRef:throwInvalidHookError,useState:throwInvalidHookError,useDebugValue:throwInvalidHookError,useResponder:throwInvalidHookError,useDeferredValue:throwInvalidHookError,useTransition:throwInvalidHookError};var HooksDispatcherOnMountInDEV=null;var HooksDispatcherOnMountWithHookTypesInDEV=null;var HooksDispatcherOnUpdateInDEV=null;var HooksDispatcherOnRerenderInDEV=null;var InvalidNestedHooksDispatcherOnMountInDEV=null;var InvalidNestedHooksDispatcherOnUpdateInDEV=null;var InvalidNestedHooksDispatcherOnRerenderInDEV=null;{var warnInvalidContextAccess=function(){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().');};var warnInvalidHookAccess=function(){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');};HooksDispatcherOnMountInDEV={readContext:function(context,observedBits){return readContext(context,observedBits);},useCallback:function(callback,deps){currentHookNameInDev='useCallback';mountHookTypesDev();checkDepsAreArrayDev(deps);return mountCallback(callback,deps);},useContext:function(context,observedBits){currentHookNameInDev='useContext';mountHookTypesDev();return readContext(context,observedBits);},useEffect:function(create,deps){currentHookNameInDev='useEffect';mountHookTypesDev();checkDepsAreArrayDev(deps);return mountEffect(create,deps);},useImperativeHandle:function(ref,create,deps){currentHookNameInDev='useImperativeHandle';mountHookTypesDev();checkDepsAreArrayDev(deps);return mountImperativeHandle(ref,create,deps);},useLayoutEffect:function(create,deps){currentHookNameInDev='useLayoutEffect';mountHookTypesDev();checkDepsAreArrayDev(deps);return mountLayoutEffect(create,deps);},useMemo:function(create,deps){currentHookNameInDev='useMemo';mountHookTypesDev();checkDepsAreArrayDev(deps);var prevDispatcher=ReactCurrentDispatcher.current;ReactCurrentDispatcher.current=InvalidNestedHooksDispatcherOnMountInDEV;try{return mountMemo(create,deps);}finally{ReactCurrentDispatcher.current=prevDispatcher;}},useReducer:function(reducer,initialArg,init){currentHookNameInDev='useReducer';mountHookTypesDev();var prevDispatcher=ReactCurrentDispatcher.current;ReactCurrentDispatcher.current=InvalidNestedHooksDispatcherOnMountInDEV;try{return mountReducer(reducer,initialArg,init);}finally{ReactCurrentDispatcher.current=prevDispatcher;}},useRef:function(initialValue){currentHookNameInDev='useRef';mountHookTypesDev();return mountRef(initialValue);},useState:function(initialState){currentHookNameInDev='useState';mountHookTypesDev();var prevDispatcher=ReactCurrentDispatcher.current;ReactCurrentDispatcher.current=InvalidNestedHooksDispatcherOnMountInDEV;try{return mountState(initialState);}finally{ReactCurrentDispatcher.current=prevDispatcher;}},useDebugValue:function(value,formatterFn){currentHookNameInDev='useDebugValue';mountHookTypesDev();return mountDebugValue();},useResponder:function(responder,props){currentHookNameInDev='useResponder';mountHookTypesDev();return createDeprecatedResponderListener(responder,props);},useDeferredValue:function(value,config){currentHookNameInDev='useDeferredValue';mountHookTypesDev();return mountDeferredValue(value,config);},useTransition:function(config){currentHookNameInDev='useTransition';mountHookTypesDev();return mountTransition(config);}};HooksDispatcherOnMountWithHookTypesInDEV={readContext:function(context,observedBits){return readContext(context,observedBits);},useCallback:function(callback,deps){currentHookNameInDev='useCallback';updateHookTypesDev();return mountCallback(callback,deps);},useContext:function(context,observedBits){currentHookNameInDev='useContext';updateHookTypesDev();return readContext(context,observedBits);},useEffect:function(create,deps){currentHookNameInDev='useEffect';updateHookTypesDev();return mountEffect(create,deps);},useImperativeHandle:function(ref,create,deps){currentHookNameInDev='useImperativeHandle';updateHookTypesDev();return mountImperativeHandle(ref,create,deps);},useLayoutEffect:function(create,deps){currentHookNameInDev='useLayoutEffect';updateHookTypesDev();return mountLayoutEffect(create,deps);},useMemo:function(create,deps){currentHookNameInDev='useMemo';updateHookTypesDev();var prevDispatcher=ReactCurrentDispatcher.current;ReactCurrentDispatcher.current=InvalidNestedHooksDispatcherOnMountInDEV;try{return mountMemo(create,deps);}finally{ReactCurrentDispatcher.current=prevDispatcher;}},useReducer:function(reducer,initialArg,init){currentHookNameInDev='useReducer';updateHookTypesDev();var prevDispatcher=ReactCurrentDispatcher.current;ReactCurrentDispatcher.current=InvalidNestedHooksDispatcherOnMountInDEV;try{return mountReducer(reducer,initialArg,init);}finally{ReactCurrentDispatcher.current=prevDispatcher;}},useRef:function(initialValue){currentHookNameInDev='useRef';updateHookTypesDev();return mountRef(initialValue);},useState:function(initialState){currentHookNameInDev='useState';updateHookTypesDev();var prevDispatcher=ReactCurrentDispatcher.current;ReactCurrentDispatcher.current=InvalidNestedHooksDispatcherOnMountInDEV;try{return mountState(initialState);}finally{ReactCurrentDispatcher.current=prevDispatcher;}},useDebugValue:function(value,formatterFn){currentHookNameInDev='useDebugValue';updateHookTypesDev();return mountDebugValue();},useResponder:function(responder,props){currentHookNameInDev='useResponder';updateHookTypesDev();return createDeprecatedResponderListener(responder,props);},useDeferredValue:function(value,config){currentHookNameInDev='useDeferredValue';updateHookTypesDev();return mountDeferredValue(value,config);},useTransition:function(config){currentHookNameInDev='useTransition';updateHookTypesDev();return mountTransition(config);}};HooksDispatcherOnUpdateInDEV={readContext:function(context,observedBits){return readContext(context,observedBits);},useCallback:function(callback,deps){currentHookNameInDev='useCallback';updateHookTypesDev();return updateCallback(callback,deps);},useContext:function(context,observedBits){currentHookNameInDev='useContext';updateHookTypesDev();return readContext(context,observedBits);},useEffect:function(create,deps){currentHookNameInDev='useEffect';updateHookTypesDev();return updateEffect(create,deps);},useImperativeHandle:function(ref,create,deps){currentHookNameInDev='useImperativeHandle';updateHookTypesDev();return updateImperativeHandle(ref,create,deps);},useLayoutEffect:function(create,deps){currentHookNameInDev='useLayoutEffect';updateHookTypesDev();return updateLayoutEffect(create,deps);},useMemo:function(create,deps){currentHookNameInDev='useMemo';updateHookTypesDev();var prevDispatcher=ReactCurrentDispatcher.current;ReactCurrentDispatcher.current=InvalidNestedHooksDispatcherOnUpdateInDEV;try{return updateMemo(create,deps);}finally{ReactCurrentDispatcher.current=prevDispatcher;}},useReducer:function(reducer,initialArg,init){currentHookNameInDev='useReducer';updateHookTypesDev();var prevDispatcher=ReactCurrentDispatcher.current;ReactCurrentDispatcher.current=InvalidNestedHooksDispatcherOnUpdateInDEV;try{return updateReducer(reducer,initialArg,init);}finally{ReactCurrentDispatcher.current=prevDispatcher;}},useRef:function(initialValue){currentHookNameInDev='useRef';updateHookTypesDev();return updateRef();},useState:function(initialState){currentHookNameInDev='useState';updateHookTypesDev();var prevDispatcher=ReactCurrentDispatcher.current;ReactCurrentDispatcher.current=InvalidNestedHooksDispatcherOnUpdateInDEV;try{return updateState(initialState);}finally{ReactCurrentDispatcher.current=prevDispatcher;}},useDebugValue:function(value,formatterFn){currentHookNameInDev='useDebugValue';updateHookTypesDev();return updateDebugValue();},useResponder:function(responder,props){currentHookNameInDev='useResponder';updateHookTypesDev();return createDeprecatedResponderListener(responder,props);},useDeferredValue:function(value,config){currentHookNameInDev='useDeferredValue';updateHookTypesDev();return updateDeferredValue(value,config);},useTransition:function(config){currentHookNameInDev='useTransition';updateHookTypesDev();return updateTransition(config);}};HooksDispatcherOnRerenderInDEV={readContext:function(context,observedBits){return readContext(context,observedBits);},useCallback:function(callback,deps){currentHookNameInDev='useCallback';updateHookTypesDev();return updateCallback(callback,deps);},useContext:function(context,observedBits){currentHookNameInDev='useContext';updateHookTypesDev();return readContext(context,observedBits);},useEffect:function(create,deps){currentHookNameInDev='useEffect';updateHookTypesDev();return updateEffect(create,deps);},useImperativeHandle:function(ref,create,deps){currentHookNameInDev='useImperativeHandle';updateHookTypesDev();return updateImperativeHandle(ref,create,deps);},useLayoutEffect:function(create,deps){currentHookNameInDev='useLayoutEffect';updateHookTypesDev();return updateLayoutEffect(create,deps);},useMemo:function(create,deps){currentHookNameInDev='useMemo';updateHookTypesDev();var prevDispatcher=ReactCurrentDispatcher.current;ReactCurrentDispatcher.current=InvalidNestedHooksDispatcherOnRerenderInDEV;try{return updateMemo(create,deps);}finally{ReactCurrentDispatcher.current=prevDispatcher;}},useReducer:function(reducer,initialArg,init){currentHookNameInDev='useReducer';updateHookTypesDev();var prevDispatcher=ReactCurrentDispatcher.current;ReactCurrentDispatcher.current=InvalidNestedHooksDispatcherOnRerenderInDEV;try{return rerenderReducer(reducer,initialArg,init);}finally{ReactCurrentDispatcher.current=prevDispatcher;}},useRef:function(initialValue){currentHookNameInDev='useRef';updateHookTypesDev();return updateRef();},useState:function(initialState){currentHookNameInDev='useState';updateHookTypesDev();var prevDispatcher=ReactCurrentDispatcher.current;ReactCurrentDispatcher.current=InvalidNestedHooksDispatcherOnRerenderInDEV;try{return rerenderState(initialState);}finally{ReactCurrentDispatcher.current=prevDispatcher;}},useDebugValue:function(value,formatterFn){currentHookNameInDev='useDebugValue';updateHookTypesDev();return updateDebugValue();},useResponder:function(responder,props){currentHookNameInDev='useResponder';updateHookTypesDev();return createDeprecatedResponderListener(responder,props);},useDeferredValue:function(value,config){currentHookNameInDev='useDeferredValue';updateHookTypesDev();return rerenderDeferredValue(value,config);},useTransition:function(config){currentHookNameInDev='useTransition';updateHookTypesDev();return rerenderTransition(config);}};InvalidNestedHooksDispatcherOnMountInDEV={readContext:function(context,observedBits){warnInvalidContextAccess();return readContext(context,observedBits);},useCallback:function(callback,deps){currentHookNameInDev='useCallback';warnInvalidHookAccess();mountHookTypesDev();return mountCallback(callback,deps);},useContext:function(context,observedBits){currentHookNameInDev='useContext';warnInvalidHookAccess();mountHookTypesDev();return readContext(context,observedBits);},useEffect:function(create,deps){currentHookNameInDev='useEffect';warnInvalidHookAccess();mountHookTypesDev();return mountEffect(create,deps);},useImperativeHandle:function(ref,create,deps){currentHookNameInDev='useImperativeHandle';warnInvalidHookAccess();mountHookTypesDev();return mountImperativeHandle(ref,create,deps);},useLayoutEffect:function(create,deps){currentHookNameInDev='useLayoutEffect';warnInvalidHookAccess();mountHookTypesDev();return mountLayoutEffect(create,deps);},useMemo:function(create,deps){currentHookNameInDev='useMemo';warnInvalidHookAccess();mountHookTypesDev();var prevDispatcher=ReactCurrentDispatcher.current;ReactCurrentDispatcher.current=InvalidNestedHooksDispatcherOnMountInDEV;try{return mountMemo(create,deps);}finally{ReactCurrentDispatcher.current=prevDispatcher;}},useReducer:function(reducer,initialArg,init){currentHookNameInDev='useReducer';warnInvalidHookAccess();mountHookTypesDev();var prevDispatcher=ReactCurrentDispatcher.current;ReactCurrentDispatcher.current=InvalidNestedHooksDispatcherOnMountInDEV;try{return mountReducer(reducer,initialArg,init);}finally{ReactCurrentDispatcher.current=prevDispatcher;}},useRef:function(initialValue){currentHookNameInDev='useRef';warnInvalidHookAccess();mountHookTypesDev();return mountRef(initialValue);},useState:function(initialState){currentHookNameInDev='useState';warnInvalidHookAccess();mountHookTypesDev();var prevDispatcher=ReactCurrentDispatcher.current;ReactCurrentDispatcher.current=InvalidNestedHooksDispatcherOnMountInDEV;try{return mountState(initialState);}finally{ReactCurrentDispatcher.current=prevDispatcher;}},useDebugValue:function(value,formatterFn){currentHookNameInDev='useDebugValue';warnInvalidHookAccess();mountHookTypesDev();return mountDebugValue();},useResponder:function(responder,props){currentHookNameInDev='useResponder';warnInvalidHookAccess();mountHookTypesDev();return createDeprecatedResponderListener(responder,props);},useDeferredValue:function(value,config){currentHookNameInDev='useDeferredValue';warnInvalidHookAccess();mountHookTypesDev();return mountDeferredValue(value,config);},useTransition:function(config){currentHookNameInDev='useTransition';warnInvalidHookAccess();mountHookTypesDev();return mountTransition(config);}};InvalidNestedHooksDispatcherOnUpdateInDEV={readContext:function(context,observedBits){warnInvalidContextAccess();return readContext(context,observedBits);},useCallback:function(callback,deps){currentHookNameInDev='useCallback';warnInvalidHookAccess();updateHookTypesDev();return updateCallback(callback,deps);},useContext:function(context,observedBits){currentHookNameInDev='useContext';warnInvalidHookAccess();updateHookTypesDev();return readContext(context,observedBits);},useEffect:function(create,deps){currentHookNameInDev='useEffect';warnInvalidHookAccess();updateHookTypesDev();return updateEffect(create,deps);},useImperativeHandle:function(ref,create,deps){currentHookNameInDev='useImperativeHandle';warnInvalidHookAccess();updateHookTypesDev();return updateImperativeHandle(ref,create,deps);},useLayoutEffect:function(create,deps){currentHookNameInDev='useLayoutEffect';warnInvalidHookAccess();updateHookTypesDev();return updateLayoutEffect(create,deps);},useMemo:function(create,deps){currentHookNameInDev='useMemo';warnInvalidHookAccess();updateHookTypesDev();var prevDispatcher=ReactCurrentDispatcher.current;ReactCurrentDispatcher.current=InvalidNestedHooksDispatcherOnUpdateInDEV;try{return updateMemo(create,deps);}finally{ReactCurrentDispatcher.current=prevDispatcher;}},useReducer:function(reducer,initialArg,init){currentHookNameInDev='useReducer';warnInvalidHookAccess();updateHookTypesDev();var prevDispatcher=ReactCurrentDispatcher.current;ReactCurrentDispatcher.current=InvalidNestedHooksDispatcherOnUpdateInDEV;try{return updateReducer(reducer,initialArg,init);}finally{ReactCurrentDispatcher.current=prevDispatcher;}},useRef:function(initialValue){currentHookNameInDev='useRef';warnInvalidHookAccess();updateHookTypesDev();return updateRef();},useState:function(initialState){currentHookNameInDev='useState';warnInvalidHookAccess();updateHookTypesDev();var prevDispatcher=ReactCurrentDispatcher.current;ReactCurrentDispatcher.current=InvalidNestedHooksDispatcherOnUpdateInDEV;try{return updateState(initialState);}finally{ReactCurrentDispatcher.current=prevDispatcher;}},useDebugValue:function(value,formatterFn){currentHookNameInDev='useDebugValue';warnInvalidHookAccess();updateHookTypesDev();return updateDebugValue();},useResponder:function(responder,props){currentHookNameInDev='useResponder';warnInvalidHookAccess();updateHookTypesDev();return createDeprecatedResponderListener(responder,props);},useDeferredValue:function(value,config){currentHookNameInDev='useDeferredValue';warnInvalidHookAccess();updateHookTypesDev();return updateDeferredValue(value,config);},useTransition:function(config){currentHookNameInDev='useTransition';warnInvalidHookAccess();updateHookTypesDev();return updateTransition(config);}};InvalidNestedHooksDispatcherOnRerenderInDEV={readContext:function(context,observedBits){warnInvalidContextAccess();return readContext(context,observedBits);},useCallback:function(callback,deps){currentHookNameInDev='useCallback';warnInvalidHookAccess();updateHookTypesDev();return updateCallback(callback,deps);},useContext:function(context,observedBits){currentHookNameInDev='useContext';warnInvalidHookAccess();updateHookTypesDev();return readContext(context,observedBits);},useEffect:function(create,deps){currentHookNameInDev='useEffect';warnInvalidHookAccess();updateHookTypesDev();return updateEffect(create,deps);},useImperativeHandle:function(ref,create,deps){currentHookNameInDev='useImperativeHandle';warnInvalidHookAccess();updateHookTypesDev();return updateImperativeHandle(ref,create,deps);},useLayoutEffect:function(create,deps){currentHookNameInDev='useLayoutEffect';warnInvalidHookAccess();updateHookTypesDev();return updateLayoutEffect(create,deps);},useMemo:function(create,deps){currentHookNameInDev='useMemo';warnInvalidHookAccess();updateHookTypesDev();var prevDispatcher=ReactCurrentDispatcher.current;ReactCurrentDispatcher.current=InvalidNestedHooksDispatcherOnUpdateInDEV;try{return updateMemo(create,deps);}finally{ReactCurrentDispatcher.current=prevDispatcher;}},useReducer:function(reducer,initialArg,init){currentHookNameInDev='useReducer';warnInvalidHookAccess();updateHookTypesDev();var prevDispatcher=ReactCurrentDispatcher.current;ReactCurrentDispatcher.current=InvalidNestedHooksDispatcherOnUpdateInDEV;try{return rerenderReducer(reducer,initialArg,init);}finally{ReactCurrentDispatcher.current=prevDispatcher;}},useRef:function(initialValue){currentHookNameInDev='useRef';warnInvalidHookAccess();updateHookTypesDev();return updateRef();},useState:function(initialState){currentHookNameInDev='useState';warnInvalidHookAccess();updateHookTypesDev();var prevDispatcher=ReactCurrentDispatcher.current;ReactCurrentDispatcher.current=InvalidNestedHooksDispatcherOnUpdateInDEV;try{return rerenderState(initialState);}finally{ReactCurrentDispatcher.current=prevDispatcher;}},useDebugValue:function(value,formatterFn){currentHookNameInDev='useDebugValue';warnInvalidHookAccess();updateHookTypesDev();return updateDebugValue();},useResponder:function(responder,props){currentHookNameInDev='useResponder';warnInvalidHookAccess();updateHookTypesDev();return createDeprecatedResponderListener(responder,props);},useDeferredValue:function(value,config){currentHookNameInDev='useDeferredValue';warnInvalidHookAccess();updateHookTypesDev();return rerenderDeferredValue(value,config);},useTransition:function(config){currentHookNameInDev='useTransition';warnInvalidHookAccess();updateHookTypesDev();return rerenderTransition(config);}};}var now$1=Scheduler.unstable_now;var commitTime=0;var profilerStartTime=-1;function getCommitTime(){return commitTime;}function recordCommitTime(){commitTime=now$1();}function startProfilerTimer(fiber){profilerStartTime=now$1();if(fiber.actualStartTime<0){fiber.actualStartTime=now$1();}}function stopProfilerTimerIfRunning(fiber){profilerStartTime=-1;}function stopProfilerTimerIfRunningAndRecordDelta(fiber,overrideBaseTime){if(profilerStartTime>=0){var elapsedTime=now$1()-profilerStartTime;fiber.actualDuration+=elapsedTime;if(overrideBaseTime){fiber.selfBaseDuration=elapsedTime;}profilerStartTime=-1;}}// This may have been an insertion or a hydration. 16174var hydrationParentFiber=null;var nextHydratableInstance=null;var isHydrating=false;function enterHydrationState(fiber){var parentInstance=fiber.stateNode.containerInfo;nextHydratableInstance=getFirstHydratableChild(parentInstance);hydrationParentFiber=fiber;isHydrating=true;return true;}function deleteHydratableInstance(returnFiber,instance){{switch(returnFiber.tag){case HostRoot:didNotHydrateContainerInstance(returnFiber.stateNode.containerInfo,instance);break;case HostComponent:didNotHydrateInstance(returnFiber.type,returnFiber.memoizedProps,returnFiber.stateNode,instance);break;}}var childToDelete=createFiberFromHostInstanceForDeletion();childToDelete.stateNode=instance;childToDelete.return=returnFiber;childToDelete.effectTag=Deletion;// This might seem like it belongs on progressedFirstDeletion. However, 16175// these children are not part of the reconciliation list of children. 16176// Even if we abort and rereconcile the children, that will try to hydrate 16177// again and the nodes are still in the host tree so these will be 16178// recreated. 16179if(returnFiber.lastEffect!==null){returnFiber.lastEffect.nextEffect=childToDelete;returnFiber.lastEffect=childToDelete;}else{returnFiber.firstEffect=returnFiber.lastEffect=childToDelete;}}function insertNonHydratedInstance(returnFiber,fiber){fiber.effectTag=fiber.effectTag&~Hydrating|Placement;{switch(returnFiber.tag){case HostRoot:{var parentContainer=returnFiber.stateNode.containerInfo;switch(fiber.tag){case HostComponent:var type=fiber.type;var props=fiber.pendingProps;didNotFindHydratableContainerInstance(parentContainer,type);break;case HostText:var text=fiber.pendingProps;didNotFindHydratableContainerTextInstance(parentContainer,text);break;}break;}case HostComponent:{var parentType=returnFiber.type;var parentProps=returnFiber.memoizedProps;var parentInstance=returnFiber.stateNode;switch(fiber.tag){case HostComponent:var _type=fiber.type;var _props=fiber.pendingProps;didNotFindHydratableInstance(parentType,parentProps,parentInstance,_type);break;case HostText:var _text=fiber.pendingProps;didNotFindHydratableTextInstance(parentType,parentProps,parentInstance,_text);break;case SuspenseComponent:didNotFindHydratableSuspenseInstance(parentType,parentProps);break;}break;}default:return;}}}function tryHydrate(fiber,nextInstance){switch(fiber.tag){case HostComponent:{var type=fiber.type;var props=fiber.pendingProps;var instance=canHydrateInstance(nextInstance,type);if(instance!==null){fiber.stateNode=instance;return true;}return false;}case HostText:{var text=fiber.pendingProps;var textInstance=canHydrateTextInstance(nextInstance,text);if(textInstance!==null){fiber.stateNode=textInstance;return true;}return false;}case SuspenseComponent:{return false;}default:return false;}}function tryToClaimNextHydratableInstance(fiber){if(!isHydrating){return;}var nextInstance=nextHydratableInstance;if(!nextInstance){// Nothing to hydrate. Make it an insertion. 16180insertNonHydratedInstance(hydrationParentFiber,fiber);isHydrating=false;hydrationParentFiber=fiber;return;}var firstAttemptedInstance=nextInstance;if(!tryHydrate(fiber,nextInstance)){// If we can't hydrate this instance let's try the next one. 16181// We use this as a heuristic. It's based on intuition and not data so it 16182// might be flawed or unnecessary. 16183nextInstance=getNextHydratableSibling(firstAttemptedInstance);if(!nextInstance||!tryHydrate(fiber,nextInstance)){// Nothing to hydrate. Make it an insertion. 16184insertNonHydratedInstance(hydrationParentFiber,fiber);isHydrating=false;hydrationParentFiber=fiber;return;}// We matched the next one, we'll now assume that the first one was 16185// superfluous and we'll delete it. Since we can't eagerly delete it 16186// we'll have to schedule a deletion. To do that, this node needs a dummy 16187// fiber associated with it. 16188deleteHydratableInstance(hydrationParentFiber,firstAttemptedInstance);}hydrationParentFiber=fiber;nextHydratableInstance=getFirstHydratableChild(nextInstance);}function prepareToHydrateHostInstance(fiber,rootContainerInstance,hostContext){var instance=fiber.stateNode;var updatePayload=hydrateInstance(instance,fiber.type,fiber.memoizedProps,rootContainerInstance,hostContext,fiber);// TODO: Type this specific to this type of component. 16189fiber.updateQueue=updatePayload;// If the update payload indicates that there is a change or if there 16190// is a new ref we mark this as an update. 16191if(updatePayload!==null){return true;}return false;}function prepareToHydrateHostTextInstance(fiber){var textInstance=fiber.stateNode;var textContent=fiber.memoizedProps;var shouldUpdate=hydrateTextInstance(textInstance,textContent,fiber);{if(shouldUpdate){// We assume that prepareToHydrateHostTextInstance is called in a context where the 16192// hydration parent is the parent host component of this host text. 16193var returnFiber=hydrationParentFiber;if(returnFiber!==null){switch(returnFiber.tag){case HostRoot:{var parentContainer=returnFiber.stateNode.containerInfo;didNotMatchHydratedContainerTextInstance(parentContainer,textInstance,textContent);break;}case HostComponent:{var parentType=returnFiber.type;var parentProps=returnFiber.memoizedProps;var parentInstance=returnFiber.stateNode;didNotMatchHydratedTextInstance(parentType,parentProps,parentInstance,textInstance,textContent);break;}}}}}return shouldUpdate;}function skipPastDehydratedSuspenseInstance(fiber){var suspenseState=fiber.memoizedState;var suspenseInstance=suspenseState!==null?suspenseState.dehydrated:null;if(!suspenseInstance){{throw Error("Expected to have a hydrated suspense instance. This error is likely caused by a bug in React. Please file an issue.");}}return getNextHydratableInstanceAfterSuspenseInstance(suspenseInstance);}function popToNextHostParent(fiber){var parent=fiber.return;while(parent!==null&&parent.tag!==HostComponent&&parent.tag!==HostRoot&&parent.tag!==SuspenseComponent){parent=parent.return;}hydrationParentFiber=parent;}function popHydrationState(fiber){if(fiber!==hydrationParentFiber){// We're deeper than the current hydration context, inside an inserted 16194// tree. 16195return false;}if(!isHydrating){// If we're not currently hydrating but we're in a hydration context, then 16196// we were an insertion and now need to pop up reenter hydration of our 16197// siblings. 16198popToNextHostParent(fiber);isHydrating=true;return false;}var type=fiber.type;// If we have any remaining hydratable nodes, we need to delete them now. 16199// We only do this deeper than head and body since they tend to have random 16200// other nodes in them. We also ignore components with pure text content in 16201// side of them. 16202// TODO: Better heuristic. 16203if(fiber.tag!==HostComponent||type!=='head'&&type!=='body'&&!shouldSetTextContent(type,fiber.memoizedProps)){var nextInstance=nextHydratableInstance;while(nextInstance){deleteHydratableInstance(fiber,nextInstance);nextInstance=getNextHydratableSibling(nextInstance);}}popToNextHostParent(fiber);if(fiber.tag===SuspenseComponent){nextHydratableInstance=skipPastDehydratedSuspenseInstance(fiber);}else{nextHydratableInstance=hydrationParentFiber?getNextHydratableSibling(fiber.stateNode):null;}return true;}function resetHydrationState(){hydrationParentFiber=null;nextHydratableInstance=null;isHydrating=false;}var ReactCurrentOwner$1=ReactSharedInternals.ReactCurrentOwner;var didReceiveUpdate=false;var didWarnAboutBadClass;var didWarnAboutModulePatternComponent;var didWarnAboutContextTypeOnFunctionComponent;var didWarnAboutGetDerivedStateOnFunctionComponent;var didWarnAboutFunctionRefs;var didWarnAboutReassigningProps;var didWarnAboutRevealOrder;var didWarnAboutTailOptions;{didWarnAboutBadClass={};didWarnAboutModulePatternComponent={};didWarnAboutContextTypeOnFunctionComponent={};didWarnAboutGetDerivedStateOnFunctionComponent={};didWarnAboutFunctionRefs={};didWarnAboutReassigningProps=false;didWarnAboutRevealOrder={};didWarnAboutTailOptions={};}function reconcileChildren(current,workInProgress,nextChildren,renderExpirationTime){if(current===null){// If this is a fresh new component that hasn't been rendered yet, we 16204// won't update its child set by applying minimal side-effects. Instead, 16205// we will add them all to the child before it gets rendered. That means 16206// we can optimize this reconciliation pass by not tracking side-effects. 16207workInProgress.child=mountChildFibers(workInProgress,null,nextChildren,renderExpirationTime);}else{// If the current child is the same as the work in progress, it means that 16208// we haven't yet started any work on these children. Therefore, we use 16209// the clone algorithm to create a copy of all the current children. 16210// If we had any progressed work already, that is invalid at this point so 16211// let's throw it out. 16212workInProgress.child=reconcileChildFibers(workInProgress,current.child,nextChildren,renderExpirationTime);}}function forceUnmountCurrentAndReconcile(current,workInProgress,nextChildren,renderExpirationTime){// This function is fork of reconcileChildren. It's used in cases where we 16213// want to reconcile without matching against the existing set. This has the 16214// effect of all current children being unmounted; even if the type and key 16215// are the same, the old child is unmounted and a new child is created. 16216// 16217// To do this, we're going to go through the reconcile algorithm twice. In 16218// the first pass, we schedule a deletion for all the current children by 16219// passing null. 16220workInProgress.child=reconcileChildFibers(workInProgress,current.child,null,renderExpirationTime);// In the second pass, we mount the new children. The trick here is that we 16221// pass null in place of where we usually pass the current child set. This has 16222// the effect of remounting all children regardless of whether their 16223// identities match. 16224workInProgress.child=reconcileChildFibers(workInProgress,null,nextChildren,renderExpirationTime);}function updateForwardRef(current,workInProgress,Component,nextProps,renderExpirationTime){// TODO: current can be non-null here even if the component 16225// hasn't yet mounted. This happens after the first render suspends. 16226// We'll need to figure out if this is fine or can cause issues. 16227{if(workInProgress.type!==workInProgress.elementType){// Lazy component props can't be validated in createElement 16228// because they're only guaranteed to be resolved here. 16229var innerPropTypes=Component.propTypes;if(innerPropTypes){checkPropTypes(innerPropTypes,nextProps,// Resolved props 16230'prop',getComponentName(Component),getCurrentFiberStackInDev);}}}var render=Component.render;var ref=workInProgress.ref;// The rest is a fork of updateFunctionComponent 16231var nextChildren;prepareToReadContext(workInProgress,renderExpirationTime);{ReactCurrentOwner$1.current=workInProgress;setIsRendering(true);nextChildren=renderWithHooks(current,workInProgress,render,nextProps,ref,renderExpirationTime);if(workInProgress.mode&StrictMode){// Only double-render components with Hooks 16232if(workInProgress.memoizedState!==null){nextChildren=renderWithHooks(current,workInProgress,render,nextProps,ref,renderExpirationTime);}}setIsRendering(false);}if(current!==null&&!didReceiveUpdate){bailoutHooks(current,workInProgress,renderExpirationTime);return bailoutOnAlreadyFinishedWork(current,workInProgress,renderExpirationTime);}// React DevTools reads this flag. 16233workInProgress.effectTag|=PerformedWork;reconcileChildren(current,workInProgress,nextChildren,renderExpirationTime);return workInProgress.child;}function updateMemoComponent(current,workInProgress,Component,nextProps,updateExpirationTime,renderExpirationTime){if(current===null){var type=Component.type;if(isSimpleFunctionComponent(type)&&Component.compare===null&&// SimpleMemoComponent codepath doesn't resolve outer props either. 16234Component.defaultProps===undefined){var resolvedType=type;{resolvedType=resolveFunctionForHotReloading(type);}// If this is a plain function component without default props, 16235// and with only the default shallow comparison, we upgrade it 16236// to a SimpleMemoComponent to allow fast path updates. 16237workInProgress.tag=SimpleMemoComponent;workInProgress.type=resolvedType;{validateFunctionComponentInDev(workInProgress,type);}return updateSimpleMemoComponent(current,workInProgress,resolvedType,nextProps,updateExpirationTime,renderExpirationTime);}{var innerPropTypes=type.propTypes;if(innerPropTypes){// Inner memo component props aren't currently validated in createElement. 16238// We could move it there, but we'd still need this for lazy code path. 16239checkPropTypes(innerPropTypes,nextProps,// Resolved props 16240'prop',getComponentName(type),getCurrentFiberStackInDev);}}var child=createFiberFromTypeAndProps(Component.type,null,nextProps,null,workInProgress.mode,renderExpirationTime);child.ref=workInProgress.ref;child.return=workInProgress;workInProgress.child=child;return child;}{var _type=Component.type;var _innerPropTypes=_type.propTypes;if(_innerPropTypes){// Inner memo component props aren't currently validated in createElement. 16241// We could move it there, but we'd still need this for lazy code path. 16242checkPropTypes(_innerPropTypes,nextProps,// Resolved props 16243'prop',getComponentName(_type),getCurrentFiberStackInDev);}}var currentChild=current.child;// This is always exactly one child 16244if(updateExpirationTime<renderExpirationTime){// This will be the props with resolved defaultProps, 16245// unlike current.memoizedProps which will be the unresolved ones. 16246var prevProps=currentChild.memoizedProps;// Default to shallow comparison 16247var compare=Component.compare;compare=compare!==null?compare:shallowEqual;if(compare(prevProps,nextProps)&¤t.ref===workInProgress.ref){return bailoutOnAlreadyFinishedWork(current,workInProgress,renderExpirationTime);}}// React DevTools reads this flag. 16248workInProgress.effectTag|=PerformedWork;var newChild=createWorkInProgress(currentChild,nextProps);newChild.ref=workInProgress.ref;newChild.return=workInProgress;workInProgress.child=newChild;return newChild;}function updateSimpleMemoComponent(current,workInProgress,Component,nextProps,updateExpirationTime,renderExpirationTime){// TODO: current can be non-null here even if the component 16249// hasn't yet mounted. This happens when the inner render suspends. 16250// We'll need to figure out if this is fine or can cause issues. 16251{if(workInProgress.type!==workInProgress.elementType){// Lazy component props can't be validated in createElement 16252// because they're only guaranteed to be resolved here. 16253var outerMemoType=workInProgress.elementType;if(outerMemoType.$$typeof===REACT_LAZY_TYPE){// We warn when you define propTypes on lazy() 16254// so let's just skip over it to find memo() outer wrapper. 16255// Inner props for memo are validated later. 16256outerMemoType=refineResolvedLazyComponent(outerMemoType);}var outerPropTypes=outerMemoType&&outerMemoType.propTypes;if(outerPropTypes){checkPropTypes(outerPropTypes,nextProps,// Resolved (SimpleMemoComponent has no defaultProps) 16257'prop',getComponentName(outerMemoType),getCurrentFiberStackInDev);}// Inner propTypes will be validated in the function component path. 16258}}if(current!==null){var prevProps=current.memoizedProps;if(shallowEqual(prevProps,nextProps)&¤t.ref===workInProgress.ref&&// Prevent bailout if the implementation changed due to hot reload. 16259workInProgress.type===current.type){didReceiveUpdate=false;if(updateExpirationTime<renderExpirationTime){// The pending update priority was cleared at the beginning of 16260// beginWork. We're about to bail out, but there might be additional 16261// updates at a lower priority. Usually, the priority level of the 16262// remaining updates is accumlated during the evaluation of the 16263// component (i.e. when processing the update queue). But since since 16264// we're bailing out early *without* evaluating the component, we need 16265// to account for it here, too. Reset to the value of the current fiber. 16266// NOTE: This only applies to SimpleMemoComponent, not MemoComponent, 16267// because a MemoComponent fiber does not have hooks or an update queue; 16268// rather, it wraps around an inner component, which may or may not 16269// contains hooks. 16270// TODO: Move the reset at in beginWork out of the common path so that 16271// this is no longer necessary. 16272workInProgress.expirationTime=current.expirationTime;return bailoutOnAlreadyFinishedWork(current,workInProgress,renderExpirationTime);}}}return updateFunctionComponent(current,workInProgress,Component,nextProps,renderExpirationTime);}function updateFragment(current,workInProgress,renderExpirationTime){var nextChildren=workInProgress.pendingProps;reconcileChildren(current,workInProgress,nextChildren,renderExpirationTime);return workInProgress.child;}function updateMode(current,workInProgress,renderExpirationTime){var nextChildren=workInProgress.pendingProps.children;reconcileChildren(current,workInProgress,nextChildren,renderExpirationTime);return workInProgress.child;}function updateProfiler(current,workInProgress,renderExpirationTime){{workInProgress.effectTag|=Update;}var nextProps=workInProgress.pendingProps;var nextChildren=nextProps.children;reconcileChildren(current,workInProgress,nextChildren,renderExpirationTime);return workInProgress.child;}function markRef(current,workInProgress){var ref=workInProgress.ref;if(current===null&&ref!==null||current!==null&¤t.ref!==ref){// Schedule a Ref effect 16273workInProgress.effectTag|=Ref;}}function updateFunctionComponent(current,workInProgress,Component,nextProps,renderExpirationTime){{if(workInProgress.type!==workInProgress.elementType){// Lazy component props can't be validated in createElement 16274// because they're only guaranteed to be resolved here. 16275var innerPropTypes=Component.propTypes;if(innerPropTypes){checkPropTypes(innerPropTypes,nextProps,// Resolved props 16276'prop',getComponentName(Component),getCurrentFiberStackInDev);}}}var context;{var unmaskedContext=getUnmaskedContext(workInProgress,Component,true);context=getMaskedContext(workInProgress,unmaskedContext);}var nextChildren;prepareToReadContext(workInProgress,renderExpirationTime);{ReactCurrentOwner$1.current=workInProgress;setIsRendering(true);nextChildren=renderWithHooks(current,workInProgress,Component,nextProps,context,renderExpirationTime);if(workInProgress.mode&StrictMode){// Only double-render components with Hooks 16277if(workInProgress.memoizedState!==null){nextChildren=renderWithHooks(current,workInProgress,Component,nextProps,context,renderExpirationTime);}}setIsRendering(false);}if(current!==null&&!didReceiveUpdate){bailoutHooks(current,workInProgress,renderExpirationTime);return bailoutOnAlreadyFinishedWork(current,workInProgress,renderExpirationTime);}// React DevTools reads this flag. 16278workInProgress.effectTag|=PerformedWork;reconcileChildren(current,workInProgress,nextChildren,renderExpirationTime);return workInProgress.child;}function updateClassComponent(current,workInProgress,Component,nextProps,renderExpirationTime){{if(workInProgress.type!==workInProgress.elementType){// Lazy component props can't be validated in createElement 16279// because they're only guaranteed to be resolved here. 16280var innerPropTypes=Component.propTypes;if(innerPropTypes){checkPropTypes(innerPropTypes,nextProps,// Resolved props 16281'prop',getComponentName(Component),getCurrentFiberStackInDev);}}}// Push context providers early to prevent context stack mismatches. 16282// During mounting we don't know the child context yet as the instance doesn't exist. 16283// We will invalidate the child context in finishClassComponent() right after rendering. 16284var hasContext;if(isContextProvider(Component)){hasContext=true;pushContextProvider(workInProgress);}else{hasContext=false;}prepareToReadContext(workInProgress,renderExpirationTime);var instance=workInProgress.stateNode;var shouldUpdate;if(instance===null){if(current!==null){// A class component without an instance only mounts if it suspended 16285// inside a non-concurrent tree, in an inconsistent state. We want to 16286// treat it like a new mount, even though an empty version of it already 16287// committed. Disconnect the alternate pointers. 16288current.alternate=null;workInProgress.alternate=null;// Since this is conceptually a new fiber, schedule a Placement effect 16289workInProgress.effectTag|=Placement;}// In the initial pass we might need to construct the instance. 16290constructClassInstance(workInProgress,Component,nextProps);mountClassInstance(workInProgress,Component,nextProps,renderExpirationTime);shouldUpdate=true;}else if(current===null){// In a resume, we'll already have an instance we can reuse. 16291shouldUpdate=resumeMountClassInstance(workInProgress,Component,nextProps,renderExpirationTime);}else{shouldUpdate=updateClassInstance(current,workInProgress,Component,nextProps,renderExpirationTime);}var nextUnitOfWork=finishClassComponent(current,workInProgress,Component,shouldUpdate,hasContext,renderExpirationTime);{var inst=workInProgress.stateNode;if(inst.props!==nextProps){if(!didWarnAboutReassigningProps){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');}didWarnAboutReassigningProps=true;}}return nextUnitOfWork;}function finishClassComponent(current,workInProgress,Component,shouldUpdate,hasContext,renderExpirationTime){// Refs should update even if shouldComponentUpdate returns false 16292markRef(current,workInProgress);var didCaptureError=(workInProgress.effectTag&DidCapture)!==NoEffect;if(!shouldUpdate&&!didCaptureError){// Context providers should defer to sCU for rendering 16293if(hasContext){invalidateContextProvider(workInProgress,Component,false);}return bailoutOnAlreadyFinishedWork(current,workInProgress,renderExpirationTime);}var instance=workInProgress.stateNode;// Rerender 16294ReactCurrentOwner$1.current=workInProgress;var nextChildren;if(didCaptureError&&typeof Component.getDerivedStateFromError!=='function'){// If we captured an error, but getDerivedStateFromError is not defined, 16295// unmount all the children. componentDidCatch will schedule an update to 16296// re-render a fallback. This is temporary until we migrate everyone to 16297// the new API. 16298// TODO: Warn in a future release. 16299nextChildren=null;{stopProfilerTimerIfRunning();}}else{{setIsRendering(true);nextChildren=instance.render();if(workInProgress.mode&StrictMode){instance.render();}setIsRendering(false);}}// React DevTools reads this flag. 16300workInProgress.effectTag|=PerformedWork;if(current!==null&&didCaptureError){// If we're recovering from an error, reconcile without reusing any of 16301// the existing children. Conceptually, the normal children and the children 16302// that are shown on error are two different sets, so we shouldn't reuse 16303// normal children even if their identities match. 16304forceUnmountCurrentAndReconcile(current,workInProgress,nextChildren,renderExpirationTime);}else{reconcileChildren(current,workInProgress,nextChildren,renderExpirationTime);}// Memoize state using the values we just used to render. 16305// TODO: Restructure so we never read values from the instance. 16306workInProgress.memoizedState=instance.state;// The context might have changed so we need to recalculate it. 16307if(hasContext){invalidateContextProvider(workInProgress,Component,true);}return workInProgress.child;}function pushHostRootContext(workInProgress){var root=workInProgress.stateNode;if(root.pendingContext){pushTopLevelContextObject(workInProgress,root.pendingContext,root.pendingContext!==root.context);}else if(root.context){// Should always be set 16308pushTopLevelContextObject(workInProgress,root.context,false);}pushHostContainer(workInProgress,root.containerInfo);}function updateHostRoot(current,workInProgress,renderExpirationTime){pushHostRootContext(workInProgress);var updateQueue=workInProgress.updateQueue;if(!(current!==null&&updateQueue!==null)){{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.");}}var nextProps=workInProgress.pendingProps;var prevState=workInProgress.memoizedState;var prevChildren=prevState!==null?prevState.element:null;cloneUpdateQueue(current,workInProgress);processUpdateQueue(workInProgress,nextProps,null,renderExpirationTime);var nextState=workInProgress.memoizedState;// Caution: React DevTools currently depends on this property 16309// being called "element". 16310var nextChildren=nextState.element;if(nextChildren===prevChildren){// If the state is the same as before, that's a bailout because we had 16311// no work that expires at this time. 16312resetHydrationState();return bailoutOnAlreadyFinishedWork(current,workInProgress,renderExpirationTime);}var root=workInProgress.stateNode;if(root.hydrate&&enterHydrationState(workInProgress)){// If we don't have any current children this might be the first pass. 16313// We always try to hydrate. If this isn't a hydration pass there won't 16314// be any children to hydrate which is effectively the same thing as 16315// not hydrating. 16316var child=mountChildFibers(workInProgress,null,nextChildren,renderExpirationTime);workInProgress.child=child;var node=child;while(node){// Mark each child as hydrating. This is a fast path to know whether this 16317// tree is part of a hydrating tree. This is used to determine if a child 16318// node has fully mounted yet, and for scheduling event replaying. 16319// Conceptually this is similar to Placement in that a new subtree is 16320// inserted into the React tree here. It just happens to not need DOM 16321// mutations because it already exists. 16322node.effectTag=node.effectTag&~Placement|Hydrating;node=node.sibling;}}else{// Otherwise reset hydration state in case we aborted and resumed another 16323// root. 16324reconcileChildren(current,workInProgress,nextChildren,renderExpirationTime);resetHydrationState();}return workInProgress.child;}function updateHostComponent(current,workInProgress,renderExpirationTime){pushHostContext(workInProgress);if(current===null){tryToClaimNextHydratableInstance(workInProgress);}var type=workInProgress.type;var nextProps=workInProgress.pendingProps;var prevProps=current!==null?current.memoizedProps:null;var nextChildren=nextProps.children;var isDirectTextChild=shouldSetTextContent(type,nextProps);if(isDirectTextChild){// We special case a direct text child of a host node. This is a common 16325// case. We won't handle it as a reified child. We will instead handle 16326// this in the host environment that also has access to this prop. That 16327// avoids allocating another HostText fiber and traversing it. 16328nextChildren=null;}else if(prevProps!==null&&shouldSetTextContent(type,prevProps)){// If we're switching from a direct text child to a normal child, or to 16329// empty, we need to schedule the text content to be reset. 16330workInProgress.effectTag|=ContentReset;}markRef(current,workInProgress);// Check the host config to see if the children are offscreen/hidden. 16331if(workInProgress.mode&ConcurrentMode&&renderExpirationTime!==Never&&shouldDeprioritizeSubtree(type,nextProps)){{markSpawnedWork(Never);}// Schedule this fiber to re-render at offscreen priority. Then bailout. 16332workInProgress.expirationTime=workInProgress.childExpirationTime=Never;return null;}reconcileChildren(current,workInProgress,nextChildren,renderExpirationTime);return workInProgress.child;}function updateHostText(current,workInProgress){if(current===null){tryToClaimNextHydratableInstance(workInProgress);}// Nothing to do here. This is terminal. We'll do the completion step 16333// immediately after. 16334return null;}function mountLazyComponent(_current,workInProgress,elementType,updateExpirationTime,renderExpirationTime){if(_current!==null){// A lazy component only mounts if it suspended inside a non- 16335// concurrent tree, in an inconsistent state. We want to treat it like 16336// a new mount, even though an empty version of it already committed. 16337// Disconnect the alternate pointers. 16338_current.alternate=null;workInProgress.alternate=null;// Since this is conceptually a new fiber, schedule a Placement effect 16339workInProgress.effectTag|=Placement;}var props=workInProgress.pendingProps;// We can't start a User Timing measurement with correct label yet. 16340// Cancel and resume right after we know the tag. 16341cancelWorkTimer(workInProgress);var Component=readLazyComponentType(elementType);// Store the unwrapped component in the type. 16342workInProgress.type=Component;var resolvedTag=workInProgress.tag=resolveLazyComponentTag(Component);startWorkTimer(workInProgress);var resolvedProps=resolveDefaultProps(Component,props);var child;switch(resolvedTag){case FunctionComponent:{{validateFunctionComponentInDev(workInProgress,Component);workInProgress.type=Component=resolveFunctionForHotReloading(Component);}child=updateFunctionComponent(null,workInProgress,Component,resolvedProps,renderExpirationTime);return child;}case ClassComponent:{{workInProgress.type=Component=resolveClassForHotReloading(Component);}child=updateClassComponent(null,workInProgress,Component,resolvedProps,renderExpirationTime);return child;}case ForwardRef:{{workInProgress.type=Component=resolveForwardRefForHotReloading(Component);}child=updateForwardRef(null,workInProgress,Component,resolvedProps,renderExpirationTime);return child;}case MemoComponent:{{if(workInProgress.type!==workInProgress.elementType){var outerPropTypes=Component.propTypes;if(outerPropTypes){checkPropTypes(outerPropTypes,resolvedProps,// Resolved for outer only 16343'prop',getComponentName(Component),getCurrentFiberStackInDev);}}}child=updateMemoComponent(null,workInProgress,Component,resolveDefaultProps(Component.type,resolvedProps),// The inner type can have defaults too 16344updateExpirationTime,renderExpirationTime);return child;}}var hint='';{if(Component!==null&&typeof Component==='object'&&Component.$$typeof===REACT_LAZY_TYPE){hint=' Did you wrap a component in React.lazy() more than once?';}}// This message intentionally doesn't mention ForwardRef or MemoComponent 16345// because the fact that it's a separate type of work is an 16346// implementation detail. 16347{{throw Error("Element type is invalid. Received a promise that resolves to: "+Component+". Lazy element type must resolve to a class or function."+hint);}}}function mountIncompleteClassComponent(_current,workInProgress,Component,nextProps,renderExpirationTime){if(_current!==null){// An incomplete component only mounts if it suspended inside a non- 16348// concurrent tree, in an inconsistent state. We want to treat it like 16349// a new mount, even though an empty version of it already committed. 16350// Disconnect the alternate pointers. 16351_current.alternate=null;workInProgress.alternate=null;// Since this is conceptually a new fiber, schedule a Placement effect 16352workInProgress.effectTag|=Placement;}// Promote the fiber to a class and try rendering again. 16353workInProgress.tag=ClassComponent;// The rest of this function is a fork of `updateClassComponent` 16354// Push context providers early to prevent context stack mismatches. 16355// During mounting we don't know the child context yet as the instance doesn't exist. 16356// We will invalidate the child context in finishClassComponent() right after rendering. 16357var hasContext;if(isContextProvider(Component)){hasContext=true;pushContextProvider(workInProgress);}else{hasContext=false;}prepareToReadContext(workInProgress,renderExpirationTime);constructClassInstance(workInProgress,Component,nextProps);mountClassInstance(workInProgress,Component,nextProps,renderExpirationTime);return finishClassComponent(null,workInProgress,Component,true,hasContext,renderExpirationTime);}function mountIndeterminateComponent(_current,workInProgress,Component,renderExpirationTime){if(_current!==null){// An indeterminate component only mounts if it suspended inside a non- 16358// concurrent tree, in an inconsistent state. We want to treat it like 16359// a new mount, even though an empty version of it already committed. 16360// Disconnect the alternate pointers. 16361_current.alternate=null;workInProgress.alternate=null;// Since this is conceptually a new fiber, schedule a Placement effect 16362workInProgress.effectTag|=Placement;}var props=workInProgress.pendingProps;var context;{var unmaskedContext=getUnmaskedContext(workInProgress,Component,false);context=getMaskedContext(workInProgress,unmaskedContext);}prepareToReadContext(workInProgress,renderExpirationTime);var value;{if(Component.prototype&&typeof Component.prototype.render==='function'){var componentName=getComponentName(Component)||'Unknown';if(!didWarnAboutBadClass[componentName]){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);didWarnAboutBadClass[componentName]=true;}}if(workInProgress.mode&StrictMode){ReactStrictModeWarnings.recordLegacyContextWarning(workInProgress,null);}setIsRendering(true);ReactCurrentOwner$1.current=workInProgress;value=renderWithHooks(null,workInProgress,Component,props,context,renderExpirationTime);setIsRendering(false);}// React DevTools reads this flag. 16363workInProgress.effectTag|=PerformedWork;if(typeof value==='object'&&value!==null&&typeof value.render==='function'&&value.$$typeof===undefined){{var _componentName=getComponentName(Component)||'Unknown';if(!didWarnAboutModulePatternComponent[_componentName]){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);didWarnAboutModulePatternComponent[_componentName]=true;}}// Proceed under the assumption that this is a class instance 16364workInProgress.tag=ClassComponent;// Throw out any hooks that were used. 16365workInProgress.memoizedState=null;workInProgress.updateQueue=null;// Push context providers early to prevent context stack mismatches. 16366// During mounting we don't know the child context yet as the instance doesn't exist. 16367// We will invalidate the child context in finishClassComponent() right after rendering. 16368var hasContext=false;if(isContextProvider(Component)){hasContext=true;pushContextProvider(workInProgress);}else{hasContext=false;}workInProgress.memoizedState=value.state!==null&&value.state!==undefined?value.state:null;initializeUpdateQueue(workInProgress);var getDerivedStateFromProps=Component.getDerivedStateFromProps;if(typeof getDerivedStateFromProps==='function'){applyDerivedStateFromProps(workInProgress,Component,getDerivedStateFromProps,props);}adoptClassInstance(workInProgress,value);mountClassInstance(workInProgress,Component,props,renderExpirationTime);return finishClassComponent(null,workInProgress,Component,true,hasContext,renderExpirationTime);}else{// Proceed under the assumption that this is a function component 16369workInProgress.tag=FunctionComponent;{if(workInProgress.mode&StrictMode){// Only double-render components with Hooks 16370if(workInProgress.memoizedState!==null){value=renderWithHooks(null,workInProgress,Component,props,context,renderExpirationTime);}}}reconcileChildren(null,workInProgress,value,renderExpirationTime);{validateFunctionComponentInDev(workInProgress,Component);}return workInProgress.child;}}function validateFunctionComponentInDev(workInProgress,Component){{if(Component){if(Component.childContextTypes){error('%s(...): childContextTypes cannot be defined on a function component.',Component.displayName||Component.name||'Component');}}if(workInProgress.ref!==null){var info='';var ownerName=getCurrentFiberOwnerNameInDevOrNull();if(ownerName){info+='\n\nCheck the render method of `'+ownerName+'`.';}var warningKey=ownerName||workInProgress._debugID||'';var debugSource=workInProgress._debugSource;if(debugSource){warningKey=debugSource.fileName+':'+debugSource.lineNumber;}if(!didWarnAboutFunctionRefs[warningKey]){didWarnAboutFunctionRefs[warningKey]=true;error('Function components cannot be given refs. '+'Attempts to access this ref will fail. '+'Did you mean to use React.forwardRef()?%s',info);}}if(typeof Component.getDerivedStateFromProps==='function'){var _componentName2=getComponentName(Component)||'Unknown';if(!didWarnAboutGetDerivedStateOnFunctionComponent[_componentName2]){error('%s: Function components do not support getDerivedStateFromProps.',_componentName2);didWarnAboutGetDerivedStateOnFunctionComponent[_componentName2]=true;}}if(typeof Component.contextType==='object'&&Component.contextType!==null){var _componentName3=getComponentName(Component)||'Unknown';if(!didWarnAboutContextTypeOnFunctionComponent[_componentName3]){error('%s: Function components do not support contextType.',_componentName3);didWarnAboutContextTypeOnFunctionComponent[_componentName3]=true;}}}}var SUSPENDED_MARKER={dehydrated:null,retryTime:NoWork};function shouldRemainOnFallback(suspenseContext,current,workInProgress){// If the context is telling us that we should show a fallback, and we're not 16371// already showing content, then we should show the fallback instead. 16372return hasSuspenseContext(suspenseContext,ForceSuspenseFallback)&&(current===null||current.memoizedState!==null);}function updateSuspenseComponent(current,workInProgress,renderExpirationTime){var mode=workInProgress.mode;var nextProps=workInProgress.pendingProps;// This is used by DevTools to force a boundary to suspend. 16373{if(shouldSuspend(workInProgress)){workInProgress.effectTag|=DidCapture;}}var suspenseContext=suspenseStackCursor.current;var nextDidTimeout=false;var didSuspend=(workInProgress.effectTag&DidCapture)!==NoEffect;if(didSuspend||shouldRemainOnFallback(suspenseContext,current)){// Something in this boundary's subtree already suspended. Switch to 16374// rendering the fallback children. 16375nextDidTimeout=true;workInProgress.effectTag&=~DidCapture;}else{// Attempting the main content 16376if(current===null||current.memoizedState!==null){// This is a new mount or this boundary is already showing a fallback state. 16377// Mark this subtree context as having at least one invisible parent that could 16378// handle the fallback state. 16379// Boundaries without fallbacks or should be avoided are not considered since 16380// they cannot handle preferred fallback states. 16381if(nextProps.fallback!==undefined&&nextProps.unstable_avoidThisFallback!==true){suspenseContext=addSubtreeSuspenseContext(suspenseContext,InvisibleParentSuspenseContext);}}}suspenseContext=setDefaultShallowSuspenseContext(suspenseContext);pushSuspenseContext(workInProgress,suspenseContext);// This next part is a bit confusing. If the children timeout, we switch to 16382// showing the fallback children in place of the "primary" children. 16383// However, we don't want to delete the primary children because then their 16384// state will be lost (both the React state and the host state, e.g. 16385// uncontrolled form inputs). Instead we keep them mounted and hide them. 16386// Both the fallback children AND the primary children are rendered at the 16387// same time. Once the primary children are un-suspended, we can delete 16388// the fallback children â don't need to preserve their state. 16389// 16390// The two sets of children are siblings in the host environment, but 16391// semantically, for purposes of reconciliation, they are two separate sets. 16392// So we store them using two fragment fibers. 16393// 16394// However, we want to avoid allocating extra fibers for every placeholder. 16395// They're only necessary when the children time out, because that's the 16396// only time when both sets are mounted. 16397// 16398// So, the extra fragment fibers are only used if the children time out. 16399// Otherwise, we render the primary children directly. This requires some 16400// custom reconciliation logic to preserve the state of the primary 16401// children. It's essentially a very basic form of re-parenting. 16402if(current===null){// If we're currently hydrating, try to hydrate this boundary. 16403// But only if this has a fallback. 16404if(nextProps.fallback!==undefined){tryToClaimNextHydratableInstance(workInProgress);// This could've been a dehydrated suspense component. 16405}// This is the initial mount. This branch is pretty simple because there's 16406// no previous state that needs to be preserved. 16407if(nextDidTimeout){// Mount separate fragments for primary and fallback children. 16408var nextFallbackChildren=nextProps.fallback;var primaryChildFragment=createFiberFromFragment(null,mode,NoWork,null);primaryChildFragment.return=workInProgress;if((workInProgress.mode&BlockingMode)===NoMode){// Outside of blocking mode, we commit the effects from the 16409// partially completed, timed-out tree, too. 16410var progressedState=workInProgress.memoizedState;var progressedPrimaryChild=progressedState!==null?workInProgress.child.child:workInProgress.child;primaryChildFragment.child=progressedPrimaryChild;var progressedChild=progressedPrimaryChild;while(progressedChild!==null){progressedChild.return=primaryChildFragment;progressedChild=progressedChild.sibling;}}var fallbackChildFragment=createFiberFromFragment(nextFallbackChildren,mode,renderExpirationTime,null);fallbackChildFragment.return=workInProgress;primaryChildFragment.sibling=fallbackChildFragment;// Skip the primary children, and continue working on the 16411// fallback children. 16412workInProgress.memoizedState=SUSPENDED_MARKER;workInProgress.child=primaryChildFragment;return fallbackChildFragment;}else{// Mount the primary children without an intermediate fragment fiber. 16413var nextPrimaryChildren=nextProps.children;workInProgress.memoizedState=null;return workInProgress.child=mountChildFibers(workInProgress,null,nextPrimaryChildren,renderExpirationTime);}}else{// This is an update. This branch is more complicated because we need to 16414// ensure the state of the primary children is preserved. 16415var prevState=current.memoizedState;if(prevState!==null){// wrapped in a fragment fiber. 16416var currentPrimaryChildFragment=current.child;var currentFallbackChildFragment=currentPrimaryChildFragment.sibling;if(nextDidTimeout){// Still timed out. Reuse the current primary children by cloning 16417// its fragment. We're going to skip over these entirely. 16418var _nextFallbackChildren2=nextProps.fallback;var _primaryChildFragment2=createWorkInProgress(currentPrimaryChildFragment,currentPrimaryChildFragment.pendingProps);_primaryChildFragment2.return=workInProgress;if((workInProgress.mode&BlockingMode)===NoMode){// Outside of blocking mode, we commit the effects from the 16419// partially completed, timed-out tree, too. 16420var _progressedState=workInProgress.memoizedState;var _progressedPrimaryChild=_progressedState!==null?workInProgress.child.child:workInProgress.child;if(_progressedPrimaryChild!==currentPrimaryChildFragment.child){_primaryChildFragment2.child=_progressedPrimaryChild;var _progressedChild2=_progressedPrimaryChild;while(_progressedChild2!==null){_progressedChild2.return=_primaryChildFragment2;_progressedChild2=_progressedChild2.sibling;}}}// Because primaryChildFragment is a new fiber that we're inserting as the 16421// parent of a new tree, we need to set its treeBaseDuration. 16422if(workInProgress.mode&ProfileMode){// treeBaseDuration is the sum of all the child tree base durations. 16423var _treeBaseDuration=0;var _hiddenChild=_primaryChildFragment2.child;while(_hiddenChild!==null){_treeBaseDuration+=_hiddenChild.treeBaseDuration;_hiddenChild=_hiddenChild.sibling;}_primaryChildFragment2.treeBaseDuration=_treeBaseDuration;}// Clone the fallback child fragment, too. These we'll continue 16424// working on. 16425var _fallbackChildFragment2=createWorkInProgress(currentFallbackChildFragment,_nextFallbackChildren2);_fallbackChildFragment2.return=workInProgress;_primaryChildFragment2.sibling=_fallbackChildFragment2;_primaryChildFragment2.childExpirationTime=NoWork;// Skip the primary children, and continue working on the 16426// fallback children. 16427workInProgress.memoizedState=SUSPENDED_MARKER;workInProgress.child=_primaryChildFragment2;return _fallbackChildFragment2;}else{// No longer suspended. Switch back to showing the primary children, 16428// and remove the intermediate fragment fiber. 16429var _nextPrimaryChildren=nextProps.children;var currentPrimaryChild=currentPrimaryChildFragment.child;var primaryChild=reconcileChildFibers(workInProgress,currentPrimaryChild,_nextPrimaryChildren,renderExpirationTime);// If this render doesn't suspend, we need to delete the fallback 16430// children. Wait until the complete phase, after we've confirmed the 16431// fallback is no longer needed. 16432// TODO: Would it be better to store the fallback fragment on 16433// the stateNode? 16434// Continue rendering the children, like we normally do. 16435workInProgress.memoizedState=null;return workInProgress.child=primaryChild;}}else{// The current tree has not already timed out. That means the primary 16436// children are not wrapped in a fragment fiber. 16437var _currentPrimaryChild=current.child;if(nextDidTimeout){// Timed out. Wrap the children in a fragment fiber to keep them 16438// separate from the fallback children. 16439var _nextFallbackChildren3=nextProps.fallback;var _primaryChildFragment3=createFiberFromFragment(// It shouldn't matter what the pending props are because we aren't 16440// going to render this fragment. 16441null,mode,NoWork,null);_primaryChildFragment3.return=workInProgress;_primaryChildFragment3.child=_currentPrimaryChild;if(_currentPrimaryChild!==null){_currentPrimaryChild.return=_primaryChildFragment3;}// Even though we're creating a new fiber, there are no new children, 16442// because we're reusing an already mounted tree. So we don't need to 16443// schedule a placement. 16444// primaryChildFragment.effectTag |= Placement; 16445if((workInProgress.mode&BlockingMode)===NoMode){// Outside of blocking mode, we commit the effects from the 16446// partially completed, timed-out tree, too. 16447var _progressedState2=workInProgress.memoizedState;var _progressedPrimaryChild2=_progressedState2!==null?workInProgress.child.child:workInProgress.child;_primaryChildFragment3.child=_progressedPrimaryChild2;var _progressedChild3=_progressedPrimaryChild2;while(_progressedChild3!==null){_progressedChild3.return=_primaryChildFragment3;_progressedChild3=_progressedChild3.sibling;}}// Because primaryChildFragment is a new fiber that we're inserting as the 16448// parent of a new tree, we need to set its treeBaseDuration. 16449if(workInProgress.mode&ProfileMode){// treeBaseDuration is the sum of all the child tree base durations. 16450var _treeBaseDuration2=0;var _hiddenChild2=_primaryChildFragment3.child;while(_hiddenChild2!==null){_treeBaseDuration2+=_hiddenChild2.treeBaseDuration;_hiddenChild2=_hiddenChild2.sibling;}_primaryChildFragment3.treeBaseDuration=_treeBaseDuration2;}// Create a fragment from the fallback children, too. 16451var _fallbackChildFragment3=createFiberFromFragment(_nextFallbackChildren3,mode,renderExpirationTime,null);_fallbackChildFragment3.return=workInProgress;_primaryChildFragment3.sibling=_fallbackChildFragment3;_fallbackChildFragment3.effectTag|=Placement;_primaryChildFragment3.childExpirationTime=NoWork;// Skip the primary children, and continue working on the 16452// fallback children. 16453workInProgress.memoizedState=SUSPENDED_MARKER;workInProgress.child=_primaryChildFragment3;return _fallbackChildFragment3;}else{// Still haven't timed out. Continue rendering the children, like we 16454// normally do. 16455workInProgress.memoizedState=null;var _nextPrimaryChildren2=nextProps.children;return workInProgress.child=reconcileChildFibers(workInProgress,_currentPrimaryChild,_nextPrimaryChildren2,renderExpirationTime);}}}}function scheduleWorkOnFiber(fiber,renderExpirationTime){if(fiber.expirationTime<renderExpirationTime){fiber.expirationTime=renderExpirationTime;}var alternate=fiber.alternate;if(alternate!==null&&alternate.expirationTime<renderExpirationTime){alternate.expirationTime=renderExpirationTime;}scheduleWorkOnParentPath(fiber.return,renderExpirationTime);}function propagateSuspenseContextChange(workInProgress,firstChild,renderExpirationTime){// Mark any Suspense boundaries with fallbacks as having work to do. 16456// If they were previously forced into fallbacks, they may now be able 16457// to unblock. 16458var node=firstChild;while(node!==null){if(node.tag===SuspenseComponent){var state=node.memoizedState;if(state!==null){scheduleWorkOnFiber(node,renderExpirationTime);}}else if(node.tag===SuspenseListComponent){// If the tail is hidden there might not be an Suspense boundaries 16459// to schedule work on. In this case we have to schedule it on the 16460// list itself. 16461// We don't have to traverse to the children of the list since 16462// the list will propagate the change when it rerenders. 16463scheduleWorkOnFiber(node,renderExpirationTime);}else if(node.child!==null){node.child.return=node;node=node.child;continue;}if(node===workInProgress){return;}while(node.sibling===null){if(node.return===null||node.return===workInProgress){return;}node=node.return;}node.sibling.return=node.return;node=node.sibling;}}function findLastContentRow(firstChild){// This is going to find the last row among these children that is already 16464// showing content on the screen, as opposed to being in fallback state or 16465// new. If a row has multiple Suspense boundaries, any of them being in the 16466// fallback state, counts as the whole row being in a fallback state. 16467// Note that the "rows" will be workInProgress, but any nested children 16468// will still be current since we haven't rendered them yet. The mounted 16469// order may not be the same as the new order. We use the new order. 16470var row=firstChild;var lastContentRow=null;while(row!==null){var currentRow=row.alternate;// New rows can't be content rows. 16471if(currentRow!==null&&findFirstSuspended(currentRow)===null){lastContentRow=row;}row=row.sibling;}return lastContentRow;}function validateRevealOrder(revealOrder){{if(revealOrder!==undefined&&revealOrder!=='forwards'&&revealOrder!=='backwards'&&revealOrder!=='together'&&!didWarnAboutRevealOrder[revealOrder]){didWarnAboutRevealOrder[revealOrder]=true;if(typeof revealOrder==='string'){switch(revealOrder.toLowerCase()){case'together':case'forwards':case'backwards':{error('"%s" is not a valid value for revealOrder on <SuspenseList />. '+'Use lowercase "%s" instead.',revealOrder,revealOrder.toLowerCase());break;}case'forward':case'backward':{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());break;}default:error('"%s" is not a supported revealOrder on <SuspenseList />. '+'Did you mean "together", "forwards" or "backwards"?',revealOrder);break;}}else{error('%s is not a supported value for revealOrder on <SuspenseList />. '+'Did you mean "together", "forwards" or "backwards"?',revealOrder);}}}}function validateTailOptions(tailMode,revealOrder){{if(tailMode!==undefined&&!didWarnAboutTailOptions[tailMode]){if(tailMode!=='collapsed'&&tailMode!=='hidden'){didWarnAboutTailOptions[tailMode]=true;error('"%s" is not a supported value for tail on <SuspenseList />. '+'Did you mean "collapsed" or "hidden"?',tailMode);}else if(revealOrder!=='forwards'&&revealOrder!=='backwards'){didWarnAboutTailOptions[tailMode]=true;error('<SuspenseList tail="%s" /> is only valid if revealOrder is '+'"forwards" or "backwards". '+'Did you mean to specify revealOrder="forwards"?',tailMode);}}}}function validateSuspenseListNestedChild(childSlot,index){{var isArray=Array.isArray(childSlot);var isIterable=!isArray&&typeof getIteratorFn(childSlot)==='function';if(isArray||isIterable){var type=isArray?'array':'iterable';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);return false;}}return true;}function validateSuspenseListChildren(children,revealOrder){{if((revealOrder==='forwards'||revealOrder==='backwards')&&children!==undefined&&children!==null&&children!==false){if(Array.isArray(children)){for(var i=0;i<children.length;i++){if(!validateSuspenseListNestedChild(children[i],i)){return;}}}else{var iteratorFn=getIteratorFn(children);if(typeof iteratorFn==='function'){var childrenIterator=iteratorFn.call(children);if(childrenIterator){var step=childrenIterator.next();var _i=0;for(;!step.done;step=childrenIterator.next()){if(!validateSuspenseListNestedChild(step.value,_i)){return;}_i++;}}}else{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);}}}}}function initSuspenseListRenderState(workInProgress,isBackwards,tail,lastContentRow,tailMode,lastEffectBeforeRendering){var renderState=workInProgress.memoizedState;if(renderState===null){workInProgress.memoizedState={isBackwards:isBackwards,rendering:null,renderingStartTime:0,last:lastContentRow,tail:tail,tailExpiration:0,tailMode:tailMode,lastEffect:lastEffectBeforeRendering};}else{// We can reuse the existing object from previous renders. 16472renderState.isBackwards=isBackwards;renderState.rendering=null;renderState.renderingStartTime=0;renderState.last=lastContentRow;renderState.tail=tail;renderState.tailExpiration=0;renderState.tailMode=tailMode;renderState.lastEffect=lastEffectBeforeRendering;}}// This can end up rendering this component multiple passes. 16473// The first pass splits the children fibers into two sets. A head and tail. 16474// We first render the head. If anything is in fallback state, we do another 16475// pass through beginWork to rerender all children (including the tail) with 16476// the force suspend context. If the first render didn't have anything in 16477// in fallback state. Then we render each row in the tail one-by-one. 16478// That happens in the completeWork phase without going back to beginWork. 16479function updateSuspenseListComponent(current,workInProgress,renderExpirationTime){var nextProps=workInProgress.pendingProps;var revealOrder=nextProps.revealOrder;var tailMode=nextProps.tail;var newChildren=nextProps.children;validateRevealOrder(revealOrder);validateTailOptions(tailMode,revealOrder);validateSuspenseListChildren(newChildren,revealOrder);reconcileChildren(current,workInProgress,newChildren,renderExpirationTime);var suspenseContext=suspenseStackCursor.current;var shouldForceFallback=hasSuspenseContext(suspenseContext,ForceSuspenseFallback);if(shouldForceFallback){suspenseContext=setShallowSuspenseContext(suspenseContext,ForceSuspenseFallback);workInProgress.effectTag|=DidCapture;}else{var didSuspendBefore=current!==null&&(current.effectTag&DidCapture)!==NoEffect;if(didSuspendBefore){// If we previously forced a fallback, we need to schedule work 16480// on any nested boundaries to let them know to try to render 16481// again. This is the same as context updating. 16482propagateSuspenseContextChange(workInProgress,workInProgress.child,renderExpirationTime);}suspenseContext=setDefaultShallowSuspenseContext(suspenseContext);}pushSuspenseContext(workInProgress,suspenseContext);if((workInProgress.mode&BlockingMode)===NoMode){// Outside of blocking mode, SuspenseList doesn't work so we just 16483// use make it a noop by treating it as the default revealOrder. 16484workInProgress.memoizedState=null;}else{switch(revealOrder){case'forwards':{var lastContentRow=findLastContentRow(workInProgress.child);var tail;if(lastContentRow===null){// The whole list is part of the tail. 16485// TODO: We could fast path by just rendering the tail now. 16486tail=workInProgress.child;workInProgress.child=null;}else{// Disconnect the tail rows after the content row. 16487// We're going to render them separately later. 16488tail=lastContentRow.sibling;lastContentRow.sibling=null;}initSuspenseListRenderState(workInProgress,false,// isBackwards 16489tail,lastContentRow,tailMode,workInProgress.lastEffect);break;}case'backwards':{// We're going to find the first row that has existing content. 16490// At the same time we're going to reverse the list of everything 16491// we pass in the meantime. That's going to be our tail in reverse 16492// order. 16493var _tail=null;var row=workInProgress.child;workInProgress.child=null;while(row!==null){var currentRow=row.alternate;// New rows can't be content rows. 16494if(currentRow!==null&&findFirstSuspended(currentRow)===null){// This is the beginning of the main content. 16495workInProgress.child=row;break;}var nextRow=row.sibling;row.sibling=_tail;_tail=row;row=nextRow;}// TODO: If workInProgress.child is null, we can continue on the tail immediately. 16496initSuspenseListRenderState(workInProgress,true,// isBackwards 16497_tail,null,// last 16498tailMode,workInProgress.lastEffect);break;}case'together':{initSuspenseListRenderState(workInProgress,false,// isBackwards 16499null,// tail 16500null,// last 16501undefined,workInProgress.lastEffect);break;}default:{// The default reveal order is the same as not having 16502// a boundary. 16503workInProgress.memoizedState=null;}}}return workInProgress.child;}function updatePortalComponent(current,workInProgress,renderExpirationTime){pushHostContainer(workInProgress,workInProgress.stateNode.containerInfo);var nextChildren=workInProgress.pendingProps;if(current===null){// Portals are special because we don't append the children during mount 16504// but at commit. Therefore we need to track insertions which the normal 16505// flow doesn't do during mount. This doesn't happen at the root because 16506// the root always starts with a "current" with a null child. 16507// TODO: Consider unifying this with how the root works. 16508workInProgress.child=reconcileChildFibers(workInProgress,null,nextChildren,renderExpirationTime);}else{reconcileChildren(current,workInProgress,nextChildren,renderExpirationTime);}return workInProgress.child;}function updateContextProvider(current,workInProgress,renderExpirationTime){var providerType=workInProgress.type;var context=providerType._context;var newProps=workInProgress.pendingProps;var oldProps=workInProgress.memoizedProps;var newValue=newProps.value;{var providerPropTypes=workInProgress.type.propTypes;if(providerPropTypes){checkPropTypes(providerPropTypes,newProps,'prop','Context.Provider',getCurrentFiberStackInDev);}}pushProvider(workInProgress,newValue);if(oldProps!==null){var oldValue=oldProps.value;var changedBits=calculateChangedBits(context,newValue,oldValue);if(changedBits===0){// No change. Bailout early if children are the same. 16509if(oldProps.children===newProps.children&&!hasContextChanged()){return bailoutOnAlreadyFinishedWork(current,workInProgress,renderExpirationTime);}}else{// The context value changed. Search for matching consumers and schedule 16510// them to update. 16511propagateContextChange(workInProgress,context,changedBits,renderExpirationTime);}}var newChildren=newProps.children;reconcileChildren(current,workInProgress,newChildren,renderExpirationTime);return workInProgress.child;}var hasWarnedAboutUsingContextAsConsumer=false;function updateContextConsumer(current,workInProgress,renderExpirationTime){var context=workInProgress.type;// The logic below for Context differs depending on PROD or DEV mode. In 16512// DEV mode, we create a separate object for Context.Consumer that acts 16513// like a proxy to Context. This proxy object adds unnecessary code in PROD 16514// so we use the old behaviour (Context.Consumer references Context) to 16515// reduce size and overhead. The separate object references context via 16516// a property called "_context", which also gives us the ability to check 16517// in DEV mode if this property exists or not and warn if it does not. 16518{if(context._context===undefined){// This may be because it's a Context (rather than a Consumer). 16519// Or it may be because it's older React where they're the same thing. 16520// We only want to warn if we're sure it's a new React. 16521if(context!==context.Consumer){if(!hasWarnedAboutUsingContextAsConsumer){hasWarnedAboutUsingContextAsConsumer=true;error('Rendering <Context> directly is not supported and will be removed in '+'a future major release. Did you mean to render <Context.Consumer> instead?');}}}else{context=context._context;}}var newProps=workInProgress.pendingProps;var render=newProps.children;{if(typeof render!=='function'){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.');}}prepareToReadContext(workInProgress,renderExpirationTime);var newValue=readContext(context,newProps.unstable_observedBits);var newChildren;{ReactCurrentOwner$1.current=workInProgress;setIsRendering(true);newChildren=render(newValue);setIsRendering(false);}// React DevTools reads this flag. 16522workInProgress.effectTag|=PerformedWork;reconcileChildren(current,workInProgress,newChildren,renderExpirationTime);return workInProgress.child;}function markWorkInProgressReceivedUpdate(){didReceiveUpdate=true;}function bailoutOnAlreadyFinishedWork(current,workInProgress,renderExpirationTime){cancelWorkTimer(workInProgress);if(current!==null){// Reuse previous dependencies 16523workInProgress.dependencies=current.dependencies;}{// Don't update "base" render times for bailouts. 16524stopProfilerTimerIfRunning();}var updateExpirationTime=workInProgress.expirationTime;if(updateExpirationTime!==NoWork){markUnprocessedUpdateTime(updateExpirationTime);}// Check if the children have any pending work. 16525var childExpirationTime=workInProgress.childExpirationTime;if(childExpirationTime<renderExpirationTime){// The children don't have any work either. We can skip them. 16526// TODO: Once we add back resuming, we should check if the children are 16527// a work-in-progress set. If so, we need to transfer their effects. 16528return null;}else{// This fiber doesn't have work, but its subtree does. Clone the child 16529// fibers and continue. 16530cloneChildFibers(current,workInProgress);return workInProgress.child;}}function remountFiber(current,oldWorkInProgress,newWorkInProgress){{var returnFiber=oldWorkInProgress.return;if(returnFiber===null){throw new Error('Cannot swap the root fiber.');}// Disconnect from the old current. 16531// It will get deleted. 16532current.alternate=null;oldWorkInProgress.alternate=null;// Connect to the new tree. 16533newWorkInProgress.index=oldWorkInProgress.index;newWorkInProgress.sibling=oldWorkInProgress.sibling;newWorkInProgress.return=oldWorkInProgress.return;newWorkInProgress.ref=oldWorkInProgress.ref;// Replace the child/sibling pointers above it. 16534if(oldWorkInProgress===returnFiber.child){returnFiber.child=newWorkInProgress;}else{var prevSibling=returnFiber.child;if(prevSibling===null){throw new Error('Expected parent to have a child.');}while(prevSibling.sibling!==oldWorkInProgress){prevSibling=prevSibling.sibling;if(prevSibling===null){throw new Error('Expected to find the previous sibling.');}}prevSibling.sibling=newWorkInProgress;}// Delete the old fiber and place the new one. 16535// Since the old fiber is disconnected, we have to schedule it manually. 16536var last=returnFiber.lastEffect;if(last!==null){last.nextEffect=current;returnFiber.lastEffect=current;}else{returnFiber.firstEffect=returnFiber.lastEffect=current;}current.nextEffect=null;current.effectTag=Deletion;newWorkInProgress.effectTag|=Placement;// Restart work from the new fiber. 16537return newWorkInProgress;}}function beginWork(current,workInProgress,renderExpirationTime){var updateExpirationTime=workInProgress.expirationTime;{if(workInProgress._debugNeedsRemount&¤t!==null){// This will restart the begin phase with a new fiber. 16538return remountFiber(current,workInProgress,createFiberFromTypeAndProps(workInProgress.type,workInProgress.key,workInProgress.pendingProps,workInProgress._debugOwner||null,workInProgress.mode,workInProgress.expirationTime));}}if(current!==null){var oldProps=current.memoizedProps;var newProps=workInProgress.pendingProps;if(oldProps!==newProps||hasContextChanged()||// Force a re-render if the implementation changed due to hot reload: 16539workInProgress.type!==current.type){// If props or context changed, mark the fiber as having performed work. 16540// This may be unset if the props are determined to be equal later (memo). 16541didReceiveUpdate=true;}else if(updateExpirationTime<renderExpirationTime){didReceiveUpdate=false;// This fiber does not have any pending work. Bailout without entering 16542// the begin phase. There's still some bookkeeping we that needs to be done 16543// in this optimized path, mostly pushing stuff onto the stack. 16544switch(workInProgress.tag){case HostRoot:pushHostRootContext(workInProgress);resetHydrationState();break;case HostComponent:pushHostContext(workInProgress);if(workInProgress.mode&ConcurrentMode&&renderExpirationTime!==Never&&shouldDeprioritizeSubtree(workInProgress.type,newProps)){{markSpawnedWork(Never);}// Schedule this fiber to re-render at offscreen priority. Then bailout. 16545workInProgress.expirationTime=workInProgress.childExpirationTime=Never;return null;}break;case ClassComponent:{var Component=workInProgress.type;if(isContextProvider(Component)){pushContextProvider(workInProgress);}break;}case HostPortal:pushHostContainer(workInProgress,workInProgress.stateNode.containerInfo);break;case ContextProvider:{var newValue=workInProgress.memoizedProps.value;pushProvider(workInProgress,newValue);break;}case Profiler:{// Profiler should only call onRender when one of its descendants actually rendered. 16546var hasChildWork=workInProgress.childExpirationTime>=renderExpirationTime;if(hasChildWork){workInProgress.effectTag|=Update;}}break;case SuspenseComponent:{var state=workInProgress.memoizedState;if(state!==null){// whether to retry the primary children, or to skip over it and 16547// go straight to the fallback. Check the priority of the primary 16548// child fragment. 16549var primaryChildFragment=workInProgress.child;var primaryChildExpirationTime=primaryChildFragment.childExpirationTime;if(primaryChildExpirationTime!==NoWork&&primaryChildExpirationTime>=renderExpirationTime){// The primary children have pending work. Use the normal path 16550// to attempt to render the primary children again. 16551return updateSuspenseComponent(current,workInProgress,renderExpirationTime);}else{pushSuspenseContext(workInProgress,setDefaultShallowSuspenseContext(suspenseStackCursor.current));// The primary children do not have pending work with sufficient 16552// priority. Bailout. 16553var child=bailoutOnAlreadyFinishedWork(current,workInProgress,renderExpirationTime);if(child!==null){// The fallback children have pending work. Skip over the 16554// primary children and work on the fallback. 16555return child.sibling;}else{return null;}}}else{pushSuspenseContext(workInProgress,setDefaultShallowSuspenseContext(suspenseStackCursor.current));}break;}case SuspenseListComponent:{var didSuspendBefore=(current.effectTag&DidCapture)!==NoEffect;var _hasChildWork=workInProgress.childExpirationTime>=renderExpirationTime;if(didSuspendBefore){if(_hasChildWork){// If something was in fallback state last time, and we have all the 16556// same children then we're still in progressive loading state. 16557// Something might get unblocked by state updates or retries in the 16558// tree which will affect the tail. So we need to use the normal 16559// path to compute the correct tail. 16560return updateSuspenseListComponent(current,workInProgress,renderExpirationTime);}// If none of the children had any work, that means that none of 16561// them got retried so they'll still be blocked in the same way 16562// as before. We can fast bail out. 16563workInProgress.effectTag|=DidCapture;}// If nothing suspended before and we're rendering the same children, 16564// then the tail doesn't matter. Anything new that suspends will work 16565// in the "together" mode, so we can continue from the state we had. 16566var renderState=workInProgress.memoizedState;if(renderState!==null){// Reset to the "together" mode in case we've started a different 16567// update in the past but didn't complete it. 16568renderState.rendering=null;renderState.tail=null;}pushSuspenseContext(workInProgress,suspenseStackCursor.current);if(_hasChildWork){break;}else{// If none of the children had any work, that means that none of 16569// them got retried so they'll still be blocked in the same way 16570// as before. We can fast bail out. 16571return null;}}}return bailoutOnAlreadyFinishedWork(current,workInProgress,renderExpirationTime);}else{// An update was scheduled on this fiber, but there are no new props 16572// nor legacy context. Set this to false. If an update queue or context 16573// consumer produces a changed value, it will set this to true. Otherwise, 16574// the component will assume the children have not changed and bail out. 16575didReceiveUpdate=false;}}else{didReceiveUpdate=false;}// Before entering the begin phase, clear pending update priority. 16576// TODO: This assumes that we're about to evaluate the component and process 16577// the update queue. However, there's an exception: SimpleMemoComponent 16578// sometimes bails out later in the begin phase. This indicates that we should 16579// move this assignment out of the common path and into each branch. 16580workInProgress.expirationTime=NoWork;switch(workInProgress.tag){case IndeterminateComponent:{return mountIndeterminateComponent(current,workInProgress,workInProgress.type,renderExpirationTime);}case LazyComponent:{var elementType=workInProgress.elementType;return mountLazyComponent(current,workInProgress,elementType,updateExpirationTime,renderExpirationTime);}case FunctionComponent:{var _Component=workInProgress.type;var unresolvedProps=workInProgress.pendingProps;var resolvedProps=workInProgress.elementType===_Component?unresolvedProps:resolveDefaultProps(_Component,unresolvedProps);return updateFunctionComponent(current,workInProgress,_Component,resolvedProps,renderExpirationTime);}case ClassComponent:{var _Component2=workInProgress.type;var _unresolvedProps=workInProgress.pendingProps;var _resolvedProps=workInProgress.elementType===_Component2?_unresolvedProps:resolveDefaultProps(_Component2,_unresolvedProps);return updateClassComponent(current,workInProgress,_Component2,_resolvedProps,renderExpirationTime);}case HostRoot:return updateHostRoot(current,workInProgress,renderExpirationTime);case HostComponent:return updateHostComponent(current,workInProgress,renderExpirationTime);case HostText:return updateHostText(current,workInProgress);case SuspenseComponent:return updateSuspenseComponent(current,workInProgress,renderExpirationTime);case HostPortal:return updatePortalComponent(current,workInProgress,renderExpirationTime);case ForwardRef:{var type=workInProgress.type;var _unresolvedProps2=workInProgress.pendingProps;var _resolvedProps2=workInProgress.elementType===type?_unresolvedProps2:resolveDefaultProps(type,_unresolvedProps2);return updateForwardRef(current,workInProgress,type,_resolvedProps2,renderExpirationTime);}case Fragment:return updateFragment(current,workInProgress,renderExpirationTime);case Mode:return updateMode(current,workInProgress,renderExpirationTime);case Profiler:return updateProfiler(current,workInProgress,renderExpirationTime);case ContextProvider:return updateContextProvider(current,workInProgress,renderExpirationTime);case ContextConsumer:return updateContextConsumer(current,workInProgress,renderExpirationTime);case MemoComponent:{var _type2=workInProgress.type;var _unresolvedProps3=workInProgress.pendingProps;// Resolve outer props first, then resolve inner props. 16581var _resolvedProps3=resolveDefaultProps(_type2,_unresolvedProps3);{if(workInProgress.type!==workInProgress.elementType){var outerPropTypes=_type2.propTypes;if(outerPropTypes){checkPropTypes(outerPropTypes,_resolvedProps3,// Resolved for outer only 16582'prop',getComponentName(_type2),getCurrentFiberStackInDev);}}}_resolvedProps3=resolveDefaultProps(_type2.type,_resolvedProps3);return updateMemoComponent(current,workInProgress,_type2,_resolvedProps3,updateExpirationTime,renderExpirationTime);}case SimpleMemoComponent:{return updateSimpleMemoComponent(current,workInProgress,workInProgress.type,workInProgress.pendingProps,updateExpirationTime,renderExpirationTime);}case IncompleteClassComponent:{var _Component3=workInProgress.type;var _unresolvedProps4=workInProgress.pendingProps;var _resolvedProps4=workInProgress.elementType===_Component3?_unresolvedProps4:resolveDefaultProps(_Component3,_unresolvedProps4);return mountIncompleteClassComponent(current,workInProgress,_Component3,_resolvedProps4,renderExpirationTime);}case SuspenseListComponent:{return updateSuspenseListComponent(current,workInProgress,renderExpirationTime);}}{{throw Error("Unknown unit of work tag ("+workInProgress.tag+"). This error is likely caused by a bug in React. Please file an issue.");}}}function markUpdate(workInProgress){// Tag the fiber with an update effect. This turns a Placement into 16583// a PlacementAndUpdate. 16584workInProgress.effectTag|=Update;}function markRef$1(workInProgress){workInProgress.effectTag|=Ref;}var appendAllChildren;var updateHostContainer;var updateHostComponent$1;var updateHostText$1;{// Mutation mode 16585appendAllChildren=function(parent,workInProgress,needsVisibilityToggle,isHidden){// We only have the top Fiber that was created but we need recurse down its 16586// children to find all the terminal nodes. 16587var node=workInProgress.child;while(node!==null){if(node.tag===HostComponent||node.tag===HostText){appendInitialChild(parent,node.stateNode);}else if(node.tag===HostPortal);else if(node.child!==null){node.child.return=node;node=node.child;continue;}if(node===workInProgress){return;}while(node.sibling===null){if(node.return===null||node.return===workInProgress){return;}node=node.return;}node.sibling.return=node.return;node=node.sibling;}};updateHostContainer=function(workInProgress){// Noop 16588};updateHostComponent$1=function(current,workInProgress,type,newProps,rootContainerInstance){// If we have an alternate, that means this is an update and we need to 16589// schedule a side-effect to do the updates. 16590var oldProps=current.memoizedProps;if(oldProps===newProps){// In mutation mode, this is sufficient for a bailout because 16591// we won't touch this node even if children changed. 16592return;}// If we get updated because one of our children updated, we don't 16593// have newProps so we'll have to reuse them. 16594// TODO: Split the update API as separate for the props vs. children. 16595// Even better would be if children weren't special cased at all tho. 16596var instance=workInProgress.stateNode;var currentHostContext=getHostContext();// TODO: Experiencing an error where oldProps is null. Suggests a host 16597// component is hitting the resume path. Figure out why. Possibly 16598// related to `hidden`. 16599var updatePayload=prepareUpdate(instance,type,oldProps,newProps,rootContainerInstance,currentHostContext);// TODO: Type this specific to this type of component. 16600workInProgress.updateQueue=updatePayload;// If the update payload indicates that there is a change or if there 16601// is a new ref we mark this as an update. All the work is done in commitWork. 16602if(updatePayload){markUpdate(workInProgress);}};updateHostText$1=function(current,workInProgress,oldText,newText){// If the text differs, mark it as an update. All the work in done in commitWork. 16603if(oldText!==newText){markUpdate(workInProgress);}};}function cutOffTailIfNeeded(renderState,hasRenderedATailFallback){switch(renderState.tailMode){case'hidden':{// Any insertions at the end of the tail list after this point 16604// should be invisible. If there are already mounted boundaries 16605// anything before them are not considered for collapsing. 16606// Therefore we need to go through the whole tail to find if 16607// there are any. 16608var tailNode=renderState.tail;var lastTailNode=null;while(tailNode!==null){if(tailNode.alternate!==null){lastTailNode=tailNode;}tailNode=tailNode.sibling;}// Next we're simply going to delete all insertions after the 16609// last rendered item. 16610if(lastTailNode===null){// All remaining items in the tail are insertions. 16611renderState.tail=null;}else{// Detach the insertion after the last node that was already 16612// inserted. 16613lastTailNode.sibling=null;}break;}case'collapsed':{// Any insertions at the end of the tail list after this point 16614// should be invisible. If there are already mounted boundaries 16615// anything before them are not considered for collapsing. 16616// Therefore we need to go through the whole tail to find if 16617// there are any. 16618var _tailNode=renderState.tail;var _lastTailNode=null;while(_tailNode!==null){if(_tailNode.alternate!==null){_lastTailNode=_tailNode;}_tailNode=_tailNode.sibling;}// Next we're simply going to delete all insertions after the 16619// last rendered item. 16620if(_lastTailNode===null){// All remaining items in the tail are insertions. 16621if(!hasRenderedATailFallback&&renderState.tail!==null){// We suspended during the head. We want to show at least one 16622// row at the tail. So we'll keep on and cut off the rest. 16623renderState.tail.sibling=null;}else{renderState.tail=null;}}else{// Detach the insertion after the last node that was already 16624// inserted. 16625_lastTailNode.sibling=null;}break;}}}function completeWork(current,workInProgress,renderExpirationTime){var newProps=workInProgress.pendingProps;switch(workInProgress.tag){case IndeterminateComponent:case LazyComponent:case SimpleMemoComponent:case FunctionComponent:case ForwardRef:case Fragment:case Mode:case Profiler:case ContextConsumer:case MemoComponent:return null;case ClassComponent:{var Component=workInProgress.type;if(isContextProvider(Component)){popContext(workInProgress);}return null;}case HostRoot:{popHostContainer(workInProgress);popTopLevelContextObject(workInProgress);var fiberRoot=workInProgress.stateNode;if(fiberRoot.pendingContext){fiberRoot.context=fiberRoot.pendingContext;fiberRoot.pendingContext=null;}if(current===null||current.child===null){// If we hydrated, pop so that we can delete any remaining children 16626// that weren't hydrated. 16627var wasHydrated=popHydrationState(workInProgress);if(wasHydrated){// If we hydrated, then we'll need to schedule an update for 16628// the commit side-effects on the root. 16629markUpdate(workInProgress);}}updateHostContainer(workInProgress);return null;}case HostComponent:{popHostContext(workInProgress);var rootContainerInstance=getRootHostContainer();var type=workInProgress.type;if(current!==null&&workInProgress.stateNode!=null){updateHostComponent$1(current,workInProgress,type,newProps,rootContainerInstance);if(current.ref!==workInProgress.ref){markRef$1(workInProgress);}}else{if(!newProps){if(!(workInProgress.stateNode!==null)){{throw Error("We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue.");}}// This can happen when we abort work. 16630return null;}var currentHostContext=getHostContext();// TODO: Move createInstance to beginWork and keep it on a context 16631// "stack" as the parent. Then append children as we go in beginWork 16632// or completeWork depending on whether we want to add them top->down or 16633// bottom->up. Top->down is faster in IE11. 16634var _wasHydrated=popHydrationState(workInProgress);if(_wasHydrated){// TODO: Move this and createInstance step into the beginPhase 16635// to consolidate. 16636if(prepareToHydrateHostInstance(workInProgress,rootContainerInstance,currentHostContext)){// If changes to the hydrated node need to be applied at the 16637// commit-phase we mark this as such. 16638markUpdate(workInProgress);}}else{var instance=createInstance(type,newProps,rootContainerInstance,currentHostContext,workInProgress);appendAllChildren(instance,workInProgress,false,false);// This needs to be set before we mount Flare event listeners 16639workInProgress.stateNode=instance;// (eg DOM renderer supports auto-focus for certain elements). 16640// Make sure such renderers get scheduled for later work. 16641if(finalizeInitialChildren(instance,type,newProps,rootContainerInstance)){markUpdate(workInProgress);}}if(workInProgress.ref!==null){// If there is a ref on a host node we need to schedule a callback 16642markRef$1(workInProgress);}}return null;}case HostText:{var newText=newProps;if(current&&workInProgress.stateNode!=null){var oldText=current.memoizedProps;// If we have an alternate, that means this is an update and we need 16643// to schedule a side-effect to do the updates. 16644updateHostText$1(current,workInProgress,oldText,newText);}else{if(typeof newText!=='string'){if(!(workInProgress.stateNode!==null)){{throw Error("We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue.");}}// This can happen when we abort work. 16645}var _rootContainerInstance=getRootHostContainer();var _currentHostContext=getHostContext();var _wasHydrated2=popHydrationState(workInProgress);if(_wasHydrated2){if(prepareToHydrateHostTextInstance(workInProgress)){markUpdate(workInProgress);}}else{workInProgress.stateNode=createTextInstance(newText,_rootContainerInstance,_currentHostContext,workInProgress);}}return null;}case SuspenseComponent:{popSuspenseContext(workInProgress);var nextState=workInProgress.memoizedState;if((workInProgress.effectTag&DidCapture)!==NoEffect){// Something suspended. Re-render with the fallback children. 16646workInProgress.expirationTime=renderExpirationTime;// Do not reset the effect list. 16647return workInProgress;}var nextDidTimeout=nextState!==null;var prevDidTimeout=false;if(current===null){if(workInProgress.memoizedProps.fallback!==undefined){popHydrationState(workInProgress);}}else{var prevState=current.memoizedState;prevDidTimeout=prevState!==null;if(!nextDidTimeout&&prevState!==null){// We just switched from the fallback to the normal children. 16648// Delete the fallback. 16649// TODO: Would it be better to store the fallback fragment on 16650// the stateNode during the begin phase? 16651var currentFallbackChild=current.child.sibling;if(currentFallbackChild!==null){// Deletions go at the beginning of the return fiber's effect list 16652var first=workInProgress.firstEffect;if(first!==null){workInProgress.firstEffect=currentFallbackChild;currentFallbackChild.nextEffect=first;}else{workInProgress.firstEffect=workInProgress.lastEffect=currentFallbackChild;currentFallbackChild.nextEffect=null;}currentFallbackChild.effectTag=Deletion;}}}if(nextDidTimeout&&!prevDidTimeout){// If this subtreee is running in blocking mode we can suspend, 16653// otherwise we won't suspend. 16654// TODO: This will still suspend a synchronous tree if anything 16655// in the concurrent tree already suspended during this render. 16656// This is a known bug. 16657if((workInProgress.mode&BlockingMode)!==NoMode){// TODO: Move this back to throwException because this is too late 16658// if this is a large tree which is common for initial loads. We 16659// don't know if we should restart a render or not until we get 16660// this marker, and this is too late. 16661// If this render already had a ping or lower pri updates, 16662// and this is the first time we know we're going to suspend we 16663// should be able to immediately restart from within throwException. 16664var hasInvisibleChildContext=current===null&&workInProgress.memoizedProps.unstable_avoidThisFallback!==true;if(hasInvisibleChildContext||hasSuspenseContext(suspenseStackCursor.current,InvisibleParentSuspenseContext)){// If this was in an invisible tree or a new render, then showing 16665// this boundary is ok. 16666renderDidSuspend();}else{// Otherwise, we're going to have to hide content so we should 16667// suspend for longer if possible. 16668renderDidSuspendDelayIfPossible();}}}{// TODO: Only schedule updates if these values are non equal, i.e. it changed. 16669if(nextDidTimeout||prevDidTimeout){// If this boundary just timed out, schedule an effect to attach a 16670// retry listener to the promise. This flag is also used to hide the 16671// primary children. In mutation mode, we also need the flag to 16672// *unhide* children that were previously hidden, so check if this 16673// is currently timed out, too. 16674workInProgress.effectTag|=Update;}}return null;}case HostPortal:popHostContainer(workInProgress);updateHostContainer(workInProgress);return null;case ContextProvider:// Pop provider fiber 16675popProvider(workInProgress);return null;case IncompleteClassComponent:{// Same as class component case. I put it down here so that the tags are 16676// sequential to ensure this switch is compiled to a jump table. 16677var _Component=workInProgress.type;if(isContextProvider(_Component)){popContext(workInProgress);}return null;}case SuspenseListComponent:{popSuspenseContext(workInProgress);var renderState=workInProgress.memoizedState;if(renderState===null){// We're running in the default, "independent" mode. 16678// We don't do anything in this mode. 16679return null;}var didSuspendAlready=(workInProgress.effectTag&DidCapture)!==NoEffect;var renderedTail=renderState.rendering;if(renderedTail===null){// We just rendered the head. 16680if(!didSuspendAlready){// This is the first pass. We need to figure out if anything is still 16681// suspended in the rendered set. 16682// If new content unsuspended, but there's still some content that 16683// didn't. Then we need to do a second pass that forces everything 16684// to keep showing their fallbacks. 16685// We might be suspended if something in this render pass suspended, or 16686// something in the previous committed pass suspended. Otherwise, 16687// there's no chance so we can skip the expensive call to 16688// findFirstSuspended. 16689var cannotBeSuspended=renderHasNotSuspendedYet()&&(current===null||(current.effectTag&DidCapture)===NoEffect);if(!cannotBeSuspended){var row=workInProgress.child;while(row!==null){var suspended=findFirstSuspended(row);if(suspended!==null){didSuspendAlready=true;workInProgress.effectTag|=DidCapture;cutOffTailIfNeeded(renderState,false);// If this is a newly suspended tree, it might not get committed as 16690// part of the second pass. In that case nothing will subscribe to 16691// its thennables. Instead, we'll transfer its thennables to the 16692// SuspenseList so that it can retry if they resolve. 16693// There might be multiple of these in the list but since we're 16694// going to wait for all of them anyway, it doesn't really matter 16695// which ones gets to ping. In theory we could get clever and keep 16696// track of how many dependencies remain but it gets tricky because 16697// in the meantime, we can add/remove/change items and dependencies. 16698// We might bail out of the loop before finding any but that 16699// doesn't matter since that means that the other boundaries that 16700// we did find already has their listeners attached. 16701var newThennables=suspended.updateQueue;if(newThennables!==null){workInProgress.updateQueue=newThennables;workInProgress.effectTag|=Update;}// Rerender the whole list, but this time, we'll force fallbacks 16702// to stay in place. 16703// Reset the effect list before doing the second pass since that's now invalid. 16704if(renderState.lastEffect===null){workInProgress.firstEffect=null;}workInProgress.lastEffect=renderState.lastEffect;// Reset the child fibers to their original state. 16705resetChildFibers(workInProgress,renderExpirationTime);// Set up the Suspense Context to force suspense and immediately 16706// rerender the children. 16707pushSuspenseContext(workInProgress,setShallowSuspenseContext(suspenseStackCursor.current,ForceSuspenseFallback));return workInProgress.child;}row=row.sibling;}}}else{cutOffTailIfNeeded(renderState,false);}// Next we're going to render the tail. 16708}else{// Append the rendered row to the child list. 16709if(!didSuspendAlready){var _suspended=findFirstSuspended(renderedTail);if(_suspended!==null){workInProgress.effectTag|=DidCapture;didSuspendAlready=true;// Ensure we transfer the update queue to the parent so that it doesn't 16710// get lost if this row ends up dropped during a second pass. 16711var _newThennables=_suspended.updateQueue;if(_newThennables!==null){workInProgress.updateQueue=_newThennables;workInProgress.effectTag|=Update;}cutOffTailIfNeeded(renderState,true);// This might have been modified. 16712if(renderState.tail===null&&renderState.tailMode==='hidden'&&!renderedTail.alternate){// We need to delete the row we just rendered. 16713// Reset the effect list to what it was before we rendered this 16714// child. The nested children have already appended themselves. 16715var lastEffect=workInProgress.lastEffect=renderState.lastEffect;// Remove any effects that were appended after this point. 16716if(lastEffect!==null){lastEffect.nextEffect=null;}// We're done. 16717return null;}}else if(// The time it took to render last row is greater than time until 16718// the expiration. 16719now()*2-renderState.renderingStartTime>renderState.tailExpiration&&renderExpirationTime>Never){// We have now passed our CPU deadline and we'll just give up further 16720// attempts to render the main content and only render fallbacks. 16721// The assumption is that this is usually faster. 16722workInProgress.effectTag|=DidCapture;didSuspendAlready=true;cutOffTailIfNeeded(renderState,false);// Since nothing actually suspended, there will nothing to ping this 16723// to get it started back up to attempt the next item. If we can show 16724// them, then they really have the same priority as this render. 16725// So we'll pick it back up the very next render pass once we've had 16726// an opportunity to yield for paint. 16727var nextPriority=renderExpirationTime-1;workInProgress.expirationTime=workInProgress.childExpirationTime=nextPriority;{markSpawnedWork(nextPriority);}}}if(renderState.isBackwards){// The effect list of the backwards tail will have been added 16728// to the end. This breaks the guarantee that life-cycles fire in 16729// sibling order but that isn't a strong guarantee promised by React. 16730// Especially since these might also just pop in during future commits. 16731// Append to the beginning of the list. 16732renderedTail.sibling=workInProgress.child;workInProgress.child=renderedTail;}else{var previousSibling=renderState.last;if(previousSibling!==null){previousSibling.sibling=renderedTail;}else{workInProgress.child=renderedTail;}renderState.last=renderedTail;}}if(renderState.tail!==null){// We still have tail rows to render. 16733if(renderState.tailExpiration===0){// Heuristic for how long we're willing to spend rendering rows 16734// until we just give up and show what we have so far. 16735var TAIL_EXPIRATION_TIMEOUT_MS=500;renderState.tailExpiration=now()+TAIL_EXPIRATION_TIMEOUT_MS;// TODO: This is meant to mimic the train model or JND but this 16736// is a per component value. It should really be since the start 16737// of the total render or last commit. Consider using something like 16738// globalMostRecentFallbackTime. That doesn't account for being 16739// suspended for part of the time or when it's a new render. 16740// It should probably use a global start time value instead. 16741}// Pop a row. 16742var next=renderState.tail;renderState.rendering=next;renderState.tail=next.sibling;renderState.lastEffect=workInProgress.lastEffect;renderState.renderingStartTime=now();next.sibling=null;// Restore the context. 16743// TODO: We can probably just avoid popping it instead and only 16744// setting it the first time we go from not suspended to suspended. 16745var suspenseContext=suspenseStackCursor.current;if(didSuspendAlready){suspenseContext=setShallowSuspenseContext(suspenseContext,ForceSuspenseFallback);}else{suspenseContext=setDefaultShallowSuspenseContext(suspenseContext);}pushSuspenseContext(workInProgress,suspenseContext);// Do a pass over the next row. 16746return next;}return null;}}{{throw Error("Unknown unit of work tag ("+workInProgress.tag+"). This error is likely caused by a bug in React. Please file an issue.");}}}function unwindWork(workInProgress,renderExpirationTime){switch(workInProgress.tag){case ClassComponent:{var Component=workInProgress.type;if(isContextProvider(Component)){popContext(workInProgress);}var effectTag=workInProgress.effectTag;if(effectTag&ShouldCapture){workInProgress.effectTag=effectTag&~ShouldCapture|DidCapture;return workInProgress;}return null;}case HostRoot:{popHostContainer(workInProgress);popTopLevelContextObject(workInProgress);var _effectTag=workInProgress.effectTag;if(!((_effectTag&DidCapture)===NoEffect)){{throw Error("The root failed to unmount after an error. This is likely a bug in React. Please file an issue.");}}workInProgress.effectTag=_effectTag&~ShouldCapture|DidCapture;return workInProgress;}case HostComponent:{// TODO: popHydrationState 16747popHostContext(workInProgress);return null;}case SuspenseComponent:{popSuspenseContext(workInProgress);var _effectTag2=workInProgress.effectTag;if(_effectTag2&ShouldCapture){workInProgress.effectTag=_effectTag2&~ShouldCapture|DidCapture;// Captured a suspense effect. Re-render the boundary. 16748return workInProgress;}return null;}case SuspenseListComponent:{popSuspenseContext(workInProgress);// SuspenseList doesn't actually catch anything. It should've been 16749// caught by a nested boundary. If not, it should bubble through. 16750return null;}case HostPortal:popHostContainer(workInProgress);return null;case ContextProvider:popProvider(workInProgress);return null;default:return null;}}function unwindInterruptedWork(interruptedWork){switch(interruptedWork.tag){case ClassComponent:{var childContextTypes=interruptedWork.type.childContextTypes;if(childContextTypes!==null&&childContextTypes!==undefined){popContext(interruptedWork);}break;}case HostRoot:{popHostContainer(interruptedWork);popTopLevelContextObject(interruptedWork);break;}case HostComponent:{popHostContext(interruptedWork);break;}case HostPortal:popHostContainer(interruptedWork);break;case SuspenseComponent:popSuspenseContext(interruptedWork);break;case SuspenseListComponent:popSuspenseContext(interruptedWork);break;case ContextProvider:popProvider(interruptedWork);break;}}function createCapturedValue(value,source){// If the value is an error, call this function immediately after it is thrown 16751// so the stack is accurate. 16752return{value:value,source:source,stack:getStackByFiberInDevAndProd(source)};}function logCapturedError(capturedError){var error=capturedError.error;{var componentName=capturedError.componentName,componentStack=capturedError.componentStack,errorBoundaryName=capturedError.errorBoundaryName,errorBoundaryFound=capturedError.errorBoundaryFound,willRetry=capturedError.willRetry;// Browsers support silencing uncaught errors by calling 16753// `preventDefault()` in window `error` handler. 16754// We record this information as an expando on the error. 16755if(error!=null&&error._suppressLogging){if(errorBoundaryFound&&willRetry){// The error is recoverable and was silenced. 16756// Ignore it and don't print the stack addendum. 16757// This is handy for testing error boundaries without noise. 16758return;}// The error is fatal. Since the silencing might have 16759// been accidental, we'll surface it anyway. 16760// However, the browser would have silenced the original error 16761// so we'll print it first, and then print the stack addendum. 16762console['error'](error);// Don't transform to our wrapper 16763// For a more detailed description of this block, see: 16764// https://github.com/facebook/react/pull/13384 16765}var componentNameMessage=componentName?"The above error occurred in the <"+componentName+"> component:":'The above error occurred in one of your React components:';var errorBoundaryMessage;// errorBoundaryFound check is sufficient; errorBoundaryName check is to satisfy Flow. 16766if(errorBoundaryFound&&errorBoundaryName){if(willRetry){errorBoundaryMessage="React will try to recreate this component tree from scratch "+("using the error boundary you provided, "+errorBoundaryName+".");}else{errorBoundaryMessage="This error was initially handled by the error boundary "+errorBoundaryName+".\n"+"Recreating the tree from scratch failed so React will unmount the tree.";}}else{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.';}var combinedMessage=""+componentNameMessage+componentStack+"\n\n"+(""+errorBoundaryMessage);// In development, we provide our own message with just the component stack. 16767// We don't include the original error message and JS stack because the browser 16768// has already printed it. Even if the application swallows the error, it is still 16769// displayed by the browser thanks to the DEV-only fake event trick in ReactErrorUtils. 16770console['error'](combinedMessage);// Don't transform to our wrapper 16771}}var didWarnAboutUndefinedSnapshotBeforeUpdate=null;{didWarnAboutUndefinedSnapshotBeforeUpdate=new Set();}var PossiblyWeakSet=typeof WeakSet==='function'?WeakSet:Set;function logError(boundary,errorInfo){var source=errorInfo.source;var stack=errorInfo.stack;if(stack===null&&source!==null){stack=getStackByFiberInDevAndProd(source);}var capturedError={componentName:source!==null?getComponentName(source.type):null,componentStack:stack!==null?stack:'',error:errorInfo.value,errorBoundary:null,errorBoundaryName:null,errorBoundaryFound:false,willRetry:false};if(boundary!==null&&boundary.tag===ClassComponent){capturedError.errorBoundary=boundary.stateNode;capturedError.errorBoundaryName=getComponentName(boundary.type);capturedError.errorBoundaryFound=true;capturedError.willRetry=true;}try{logCapturedError(capturedError);}catch(e){// This method must not throw, or React internal state will get messed up. 16772// If console.error is overridden, or logCapturedError() shows a dialog that throws, 16773// we want to report this error outside of the normal stack as a last resort. 16774// https://github.com/facebook/react/issues/13188 16775setTimeout(function(){throw e;});}}var callComponentWillUnmountWithTimer=function(current,instance){startPhaseTimer(current,'componentWillUnmount');instance.props=current.memoizedProps;instance.state=current.memoizedState;instance.componentWillUnmount();stopPhaseTimer();};// Capture errors so they don't interrupt unmounting. 16776function safelyCallComponentWillUnmount(current,instance){{invokeGuardedCallback(null,callComponentWillUnmountWithTimer,null,current,instance);if(hasCaughtError()){var unmountError=clearCaughtError();captureCommitPhaseError(current,unmountError);}}}function safelyDetachRef(current){var ref=current.ref;if(ref!==null){if(typeof ref==='function'){{invokeGuardedCallback(null,ref,null,null);if(hasCaughtError()){var refError=clearCaughtError();captureCommitPhaseError(current,refError);}}}else{ref.current=null;}}}function safelyCallDestroy(current,destroy){{invokeGuardedCallback(null,destroy,null);if(hasCaughtError()){var error=clearCaughtError();captureCommitPhaseError(current,error);}}}function commitBeforeMutationLifeCycles(current,finishedWork){switch(finishedWork.tag){case FunctionComponent:case ForwardRef:case SimpleMemoComponent:case Block:{return;}case ClassComponent:{if(finishedWork.effectTag&Snapshot){if(current!==null){var prevProps=current.memoizedProps;var prevState=current.memoizedState;startPhaseTimer(finishedWork,'getSnapshotBeforeUpdate');var instance=finishedWork.stateNode;// We could update instance props and state here, 16777// but instead we rely on them being set during last render. 16778// TODO: revisit this when we implement resuming. 16779{if(finishedWork.type===finishedWork.elementType&&!didWarnAboutReassigningProps){if(instance.props!==finishedWork.memoizedProps){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');}if(instance.state!==finishedWork.memoizedState){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');}}}var snapshot=instance.getSnapshotBeforeUpdate(finishedWork.elementType===finishedWork.type?prevProps:resolveDefaultProps(finishedWork.type,prevProps),prevState);{var didWarnSet=didWarnAboutUndefinedSnapshotBeforeUpdate;if(snapshot===undefined&&!didWarnSet.has(finishedWork.type)){didWarnSet.add(finishedWork.type);error('%s.getSnapshotBeforeUpdate(): A snapshot value (or null) '+'must be returned. You have returned undefined.',getComponentName(finishedWork.type));}}instance.__reactInternalSnapshotBeforeUpdate=snapshot;stopPhaseTimer();}}return;}case HostRoot:case HostComponent:case HostText:case HostPortal:case IncompleteClassComponent:// Nothing to do for these component types 16780return;}{{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.");}}}function commitHookEffectListUnmount(tag,finishedWork){var updateQueue=finishedWork.updateQueue;var lastEffect=updateQueue!==null?updateQueue.lastEffect:null;if(lastEffect!==null){var firstEffect=lastEffect.next;var effect=firstEffect;do{if((effect.tag&tag)===tag){// Unmount 16781var destroy=effect.destroy;effect.destroy=undefined;if(destroy!==undefined){destroy();}}effect=effect.next;}while(effect!==firstEffect);}}function commitHookEffectListMount(tag,finishedWork){var updateQueue=finishedWork.updateQueue;var lastEffect=updateQueue!==null?updateQueue.lastEffect:null;if(lastEffect!==null){var firstEffect=lastEffect.next;var effect=firstEffect;do{if((effect.tag&tag)===tag){// Mount 16782var create=effect.create;effect.destroy=create();{var destroy=effect.destroy;if(destroy!==undefined&&typeof destroy!=='function'){var addendum=void 0;if(destroy===null){addendum=' You returned null. If your effect does not require clean '+'up, return undefined (or nothing).';}else if(typeof destroy.then==='function'){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';}else{addendum=' You returned: '+destroy;}error('An effect function must not return anything besides a function, '+'which is used for clean-up.%s%s',addendum,getStackByFiberInDevAndProd(finishedWork));}}}effect=effect.next;}while(effect!==firstEffect);}}function commitPassiveHookEffects(finishedWork){if((finishedWork.effectTag&Passive)!==NoEffect){switch(finishedWork.tag){case FunctionComponent:case ForwardRef:case SimpleMemoComponent:case Block:{// TODO (#17945) We should call all passive destroy functions (for all fibers) 16783// before calling any create functions. The current approach only serializes 16784// these for a single fiber. 16785commitHookEffectListUnmount(Passive$1|HasEffect,finishedWork);commitHookEffectListMount(Passive$1|HasEffect,finishedWork);break;}}}}function commitLifeCycles(finishedRoot,current,finishedWork,committedExpirationTime){switch(finishedWork.tag){case FunctionComponent:case ForwardRef:case SimpleMemoComponent:case Block:{// At this point layout effects have already been destroyed (during mutation phase). 16786// This is done to prevent sibling component effects from interfering with each other, 16787// e.g. a destroy function in one component should never override a ref set 16788// by a create function in another component during the same commit. 16789commitHookEffectListMount(Layout|HasEffect,finishedWork);return;}case ClassComponent:{var instance=finishedWork.stateNode;if(finishedWork.effectTag&Update){if(current===null){startPhaseTimer(finishedWork,'componentDidMount');// We could update instance props and state here, 16790// but instead we rely on them being set during last render. 16791// TODO: revisit this when we implement resuming. 16792{if(finishedWork.type===finishedWork.elementType&&!didWarnAboutReassigningProps){if(instance.props!==finishedWork.memoizedProps){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');}if(instance.state!==finishedWork.memoizedState){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');}}}instance.componentDidMount();stopPhaseTimer();}else{var prevProps=finishedWork.elementType===finishedWork.type?current.memoizedProps:resolveDefaultProps(finishedWork.type,current.memoizedProps);var prevState=current.memoizedState;startPhaseTimer(finishedWork,'componentDidUpdate');// We could update instance props and state here, 16793// but instead we rely on them being set during last render. 16794// TODO: revisit this when we implement resuming. 16795{if(finishedWork.type===finishedWork.elementType&&!didWarnAboutReassigningProps){if(instance.props!==finishedWork.memoizedProps){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');}if(instance.state!==finishedWork.memoizedState){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');}}}instance.componentDidUpdate(prevProps,prevState,instance.__reactInternalSnapshotBeforeUpdate);stopPhaseTimer();}}var updateQueue=finishedWork.updateQueue;if(updateQueue!==null){{if(finishedWork.type===finishedWork.elementType&&!didWarnAboutReassigningProps){if(instance.props!==finishedWork.memoizedProps){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');}if(instance.state!==finishedWork.memoizedState){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');}}}// We could update instance props and state here, 16796// but instead we rely on them being set during last render. 16797// TODO: revisit this when we implement resuming. 16798commitUpdateQueue(finishedWork,updateQueue,instance);}return;}case HostRoot:{var _updateQueue=finishedWork.updateQueue;if(_updateQueue!==null){var _instance=null;if(finishedWork.child!==null){switch(finishedWork.child.tag){case HostComponent:_instance=getPublicInstance(finishedWork.child.stateNode);break;case ClassComponent:_instance=finishedWork.child.stateNode;break;}}commitUpdateQueue(finishedWork,_updateQueue,_instance);}return;}case HostComponent:{var _instance2=finishedWork.stateNode;// Renderers may schedule work to be done after host components are mounted 16799// (eg DOM renderer may schedule auto-focus for inputs and form controls). 16800// These effects should only be committed when components are first mounted, 16801// aka when there is no current/alternate. 16802if(current===null&&finishedWork.effectTag&Update){var type=finishedWork.type;var props=finishedWork.memoizedProps;commitMount(_instance2,type,props);}return;}case HostText:{// We have no life-cycles associated with text. 16803return;}case HostPortal:{// We have no life-cycles associated with portals. 16804return;}case Profiler:{{var onRender=finishedWork.memoizedProps.onRender;if(typeof onRender==='function'){{onRender(finishedWork.memoizedProps.id,current===null?'mount':'update',finishedWork.actualDuration,finishedWork.treeBaseDuration,finishedWork.actualStartTime,getCommitTime(),finishedRoot.memoizedInteractions);}}}return;}case SuspenseComponent:{commitSuspenseHydrationCallbacks(finishedRoot,finishedWork);return;}case SuspenseListComponent:case IncompleteClassComponent:case FundamentalComponent:case ScopeComponent:return;}{{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.");}}}function hideOrUnhideAllChildren(finishedWork,isHidden){{// We only have the top Fiber that was inserted but we need to recurse down its 16805// children to find all the terminal nodes. 16806var node=finishedWork;while(true){if(node.tag===HostComponent){var instance=node.stateNode;if(isHidden){hideInstance(instance);}else{unhideInstance(node.stateNode,node.memoizedProps);}}else if(node.tag===HostText){var _instance3=node.stateNode;if(isHidden){hideTextInstance(_instance3);}else{unhideTextInstance(_instance3,node.memoizedProps);}}else if(node.tag===SuspenseComponent&&node.memoizedState!==null&&node.memoizedState.dehydrated===null){// Found a nested Suspense component that timed out. Skip over the 16807// primary child fragment, which should remain hidden. 16808var fallbackChildFragment=node.child.sibling;fallbackChildFragment.return=node;node=fallbackChildFragment;continue;}else if(node.child!==null){node.child.return=node;node=node.child;continue;}if(node===finishedWork){return;}while(node.sibling===null){if(node.return===null||node.return===finishedWork){return;}node=node.return;}node.sibling.return=node.return;node=node.sibling;}}}function commitAttachRef(finishedWork){var ref=finishedWork.ref;if(ref!==null){var instance=finishedWork.stateNode;var instanceToUse;switch(finishedWork.tag){case HostComponent:instanceToUse=getPublicInstance(instance);break;default:instanceToUse=instance;}// Moved outside to ensure DCE works with this flag 16809if(typeof ref==='function'){ref(instanceToUse);}else{{if(!ref.hasOwnProperty('current')){error('Unexpected ref object provided for %s. '+'Use either a ref-setter function or React.createRef().%s',getComponentName(finishedWork.type),getStackByFiberInDevAndProd(finishedWork));}}ref.current=instanceToUse;}}}function commitDetachRef(current){var currentRef=current.ref;if(currentRef!==null){if(typeof currentRef==='function'){currentRef(null);}else{currentRef.current=null;}}}// User-originating errors (lifecycles and refs) should not interrupt 16810// deletion, so don't let them throw. Host-originating errors should 16811// interrupt deletion, so it's okay 16812function commitUnmount(finishedRoot,current,renderPriorityLevel){onCommitUnmount(current);switch(current.tag){case FunctionComponent:case ForwardRef:case MemoComponent:case SimpleMemoComponent:case Block:{var updateQueue=current.updateQueue;if(updateQueue!==null){var lastEffect=updateQueue.lastEffect;if(lastEffect!==null){var firstEffect=lastEffect.next;{// When the owner fiber is deleted, the destroy function of a passive 16813// effect hook is called during the synchronous commit phase. This is 16814// a concession to implementation complexity. Calling it in the 16815// passive effect phase (like they usually are, when dependencies 16816// change during an update) would require either traversing the 16817// children of the deleted fiber again, or including unmount effects 16818// as part of the fiber effect list. 16819// 16820// Because this is during the sync commit phase, we need to change 16821// the priority. 16822// 16823// TODO: Reconsider this implementation trade off. 16824var priorityLevel=renderPriorityLevel>NormalPriority?NormalPriority:renderPriorityLevel;runWithPriority$1(priorityLevel,function(){var effect=firstEffect;do{var _destroy=effect.destroy;if(_destroy!==undefined){safelyCallDestroy(current,_destroy);}effect=effect.next;}while(effect!==firstEffect);});}}}return;}case ClassComponent:{safelyDetachRef(current);var instance=current.stateNode;if(typeof instance.componentWillUnmount==='function'){safelyCallComponentWillUnmount(current,instance);}return;}case HostComponent:{safelyDetachRef(current);return;}case HostPortal:{// TODO: this is recursive. 16825// We are also not using this parent because 16826// the portal will get pushed immediately. 16827{unmountHostComponents(finishedRoot,current,renderPriorityLevel);}return;}case FundamentalComponent:{return;}case DehydratedFragment:{return;}case ScopeComponent:{return;}}}function commitNestedUnmounts(finishedRoot,root,renderPriorityLevel){// While we're inside a removed host node we don't want to call 16828// removeChild on the inner nodes because they're removed by the top 16829// call anyway. We also want to call componentWillUnmount on all 16830// composites before this host node is removed from the tree. Therefore 16831// we do an inner loop while we're still inside the host node. 16832var node=root;while(true){commitUnmount(finishedRoot,node,renderPriorityLevel);// Visit children because they may contain more composite or host nodes. 16833// Skip portals because commitUnmount() currently visits them recursively. 16834if(node.child!==null&&// If we use mutation we drill down into portals using commitUnmount above. 16835// If we don't use mutation we drill down into portals here instead. 16836node.tag!==HostPortal){node.child.return=node;node=node.child;continue;}if(node===root){return;}while(node.sibling===null){if(node.return===null||node.return===root){return;}node=node.return;}node.sibling.return=node.return;node=node.sibling;}}function detachFiber(current){var alternate=current.alternate;// Cut off the return pointers to disconnect it from the tree. Ideally, we 16837// should clear the child pointer of the parent alternate to let this 16838// get GC:ed but we don't know which for sure which parent is the current 16839// one so we'll settle for GC:ing the subtree of this child. This child 16840// itself will be GC:ed when the parent updates the next time. 16841current.return=null;current.child=null;current.memoizedState=null;current.updateQueue=null;current.dependencies=null;current.alternate=null;current.firstEffect=null;current.lastEffect=null;current.pendingProps=null;current.memoizedProps=null;current.stateNode=null;if(alternate!==null){detachFiber(alternate);}}function getHostParentFiber(fiber){var parent=fiber.return;while(parent!==null){if(isHostParent(parent)){return parent;}parent=parent.return;}{{throw Error("Expected to find a host parent. This error is likely caused by a bug in React. Please file an issue.");}}}function isHostParent(fiber){return fiber.tag===HostComponent||fiber.tag===HostRoot||fiber.tag===HostPortal;}function getHostSibling(fiber){// We're going to search forward into the tree until we find a sibling host 16842// node. Unfortunately, if multiple insertions are done in a row we have to 16843// search past them. This leads to exponential search for the next sibling. 16844// TODO: Find a more efficient way to do this. 16845var node=fiber;siblings:while(true){// If we didn't find anything, let's try the next sibling. 16846while(node.sibling===null){if(node.return===null||isHostParent(node.return)){// If we pop out of the root or hit the parent the fiber we are the 16847// last sibling. 16848return null;}node=node.return;}node.sibling.return=node.return;node=node.sibling;while(node.tag!==HostComponent&&node.tag!==HostText&&node.tag!==DehydratedFragment){// If it is not host node and, we might have a host node inside it. 16849// Try to search down until we find one. 16850if(node.effectTag&Placement){// If we don't have a child, try the siblings instead. 16851continue siblings;}// If we don't have a child, try the siblings instead. 16852// We also skip portals because they are not part of this host tree. 16853if(node.child===null||node.tag===HostPortal){continue siblings;}else{node.child.return=node;node=node.child;}}// Check if this host node is stable or about to be placed. 16854if(!(node.effectTag&Placement)){// Found it! 16855return node.stateNode;}}}function commitPlacement(finishedWork){var parentFiber=getHostParentFiber(finishedWork);// Note: these two variables *must* always be updated together. 16856var parent;var isContainer;var parentStateNode=parentFiber.stateNode;switch(parentFiber.tag){case HostComponent:parent=parentStateNode;isContainer=false;break;case HostRoot:parent=parentStateNode.containerInfo;isContainer=true;break;case HostPortal:parent=parentStateNode.containerInfo;isContainer=true;break;case FundamentalComponent:// eslint-disable-next-line-no-fallthrough 16857default:{{throw Error("Invalid host parent fiber. This error is likely caused by a bug in React. Please file an issue.");}}}if(parentFiber.effectTag&ContentReset){// Reset the text content of the parent before doing any insertions 16858resetTextContent(parent);// Clear ContentReset from the effect tag 16859parentFiber.effectTag&=~ContentReset;}var before=getHostSibling(finishedWork);// We only have the top Fiber that was inserted but we need to recurse down its 16860// children to find all the terminal nodes. 16861if(isContainer){insertOrAppendPlacementNodeIntoContainer(finishedWork,before,parent);}else{insertOrAppendPlacementNode(finishedWork,before,parent);}}function insertOrAppendPlacementNodeIntoContainer(node,before,parent){var tag=node.tag;var isHost=tag===HostComponent||tag===HostText;if(isHost||enableFundamentalAPI){var stateNode=isHost?node.stateNode:node.stateNode.instance;if(before){insertInContainerBefore(parent,stateNode,before);}else{appendChildToContainer(parent,stateNode);}}else if(tag===HostPortal);else{var child=node.child;if(child!==null){insertOrAppendPlacementNodeIntoContainer(child,before,parent);var sibling=child.sibling;while(sibling!==null){insertOrAppendPlacementNodeIntoContainer(sibling,before,parent);sibling=sibling.sibling;}}}}function insertOrAppendPlacementNode(node,before,parent){var tag=node.tag;var isHost=tag===HostComponent||tag===HostText;if(isHost||enableFundamentalAPI){var stateNode=isHost?node.stateNode:node.stateNode.instance;if(before){insertBefore(parent,stateNode,before);}else{appendChild(parent,stateNode);}}else if(tag===HostPortal);else{var child=node.child;if(child!==null){insertOrAppendPlacementNode(child,before,parent);var sibling=child.sibling;while(sibling!==null){insertOrAppendPlacementNode(sibling,before,parent);sibling=sibling.sibling;}}}}function unmountHostComponents(finishedRoot,current,renderPriorityLevel){// We only have the top Fiber that was deleted but we need to recurse down its 16862// children to find all the terminal nodes. 16863var node=current;// Each iteration, currentParent is populated with node's host parent if not 16864// currentParentIsValid. 16865var currentParentIsValid=false;// Note: these two variables *must* always be updated together. 16866var currentParent;var currentParentIsContainer;while(true){if(!currentParentIsValid){var parent=node.return;findParent:while(true){if(!(parent!==null)){{throw Error("Expected to find a host parent. This error is likely caused by a bug in React. Please file an issue.");}}var parentStateNode=parent.stateNode;switch(parent.tag){case HostComponent:currentParent=parentStateNode;currentParentIsContainer=false;break findParent;case HostRoot:currentParent=parentStateNode.containerInfo;currentParentIsContainer=true;break findParent;case HostPortal:currentParent=parentStateNode.containerInfo;currentParentIsContainer=true;break findParent;}parent=parent.return;}currentParentIsValid=true;}if(node.tag===HostComponent||node.tag===HostText){commitNestedUnmounts(finishedRoot,node,renderPriorityLevel);// After all the children have unmounted, it is now safe to remove the 16867// node from the tree. 16868if(currentParentIsContainer){removeChildFromContainer(currentParent,node.stateNode);}else{removeChild(currentParent,node.stateNode);}// Don't visit children because we already visited them. 16869}else if(node.tag===HostPortal){if(node.child!==null){// When we go into a portal, it becomes the parent to remove from. 16870// We will reassign it back when we pop the portal on the way up. 16871currentParent=node.stateNode.containerInfo;currentParentIsContainer=true;// Visit children because portals might contain host components. 16872node.child.return=node;node=node.child;continue;}}else{commitUnmount(finishedRoot,node,renderPriorityLevel);// Visit children because we may find more host components below. 16873if(node.child!==null){node.child.return=node;node=node.child;continue;}}if(node===current){return;}while(node.sibling===null){if(node.return===null||node.return===current){return;}node=node.return;if(node.tag===HostPortal){// When we go out of the portal, we need to restore the parent. 16874// Since we don't keep a stack of them, we will search for it. 16875currentParentIsValid=false;}}node.sibling.return=node.return;node=node.sibling;}}function commitDeletion(finishedRoot,current,renderPriorityLevel){{// Recursively delete all host nodes from the parent. 16876// Detach refs and call componentWillUnmount() on the whole subtree. 16877unmountHostComponents(finishedRoot,current,renderPriorityLevel);}detachFiber(current);}function commitWork(current,finishedWork){switch(finishedWork.tag){case FunctionComponent:case ForwardRef:case MemoComponent:case SimpleMemoComponent:case Block:{// Layout effects are destroyed during the mutation phase so that all 16878// destroy functions for all fibers are called before any create functions. 16879// This prevents sibling component effects from interfering with each other, 16880// e.g. a destroy function in one component should never override a ref set 16881// by a create function in another component during the same commit. 16882commitHookEffectListUnmount(Layout|HasEffect,finishedWork);return;}case ClassComponent:{return;}case HostComponent:{var instance=finishedWork.stateNode;if(instance!=null){// Commit the work prepared earlier. 16883var newProps=finishedWork.memoizedProps;// For hydration we reuse the update path but we treat the oldProps 16884// as the newProps. The updatePayload will contain the real change in 16885// this case. 16886var oldProps=current!==null?current.memoizedProps:newProps;var type=finishedWork.type;// TODO: Type the updateQueue to be specific to host components. 16887var updatePayload=finishedWork.updateQueue;finishedWork.updateQueue=null;if(updatePayload!==null){commitUpdate(instance,updatePayload,type,oldProps,newProps);}}return;}case HostText:{if(!(finishedWork.stateNode!==null)){{throw Error("This should have a text node initialized. This error is likely caused by a bug in React. Please file an issue.");}}var textInstance=finishedWork.stateNode;var newText=finishedWork.memoizedProps;// For hydration we reuse the update path but we treat the oldProps 16888// as the newProps. The updatePayload will contain the real change in 16889// this case. 16890var oldText=current!==null?current.memoizedProps:newText;commitTextUpdate(textInstance,oldText,newText);return;}case HostRoot:{{var _root=finishedWork.stateNode;if(_root.hydrate){// We've just hydrated. No need to hydrate again. 16891_root.hydrate=false;commitHydratedContainer(_root.containerInfo);}}return;}case Profiler:{return;}case SuspenseComponent:{commitSuspenseComponent(finishedWork);attachSuspenseRetryListeners(finishedWork);return;}case SuspenseListComponent:{attachSuspenseRetryListeners(finishedWork);return;}case IncompleteClassComponent:{return;}}{{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.");}}}function commitSuspenseComponent(finishedWork){var newState=finishedWork.memoizedState;var newDidTimeout;var primaryChildParent=finishedWork;if(newState===null){newDidTimeout=false;}else{newDidTimeout=true;primaryChildParent=finishedWork.child;markCommitTimeOfFallback();}if(primaryChildParent!==null){hideOrUnhideAllChildren(primaryChildParent,newDidTimeout);}}function commitSuspenseHydrationCallbacks(finishedRoot,finishedWork){var newState=finishedWork.memoizedState;if(newState===null){var current=finishedWork.alternate;if(current!==null){var prevState=current.memoizedState;if(prevState!==null){var suspenseInstance=prevState.dehydrated;if(suspenseInstance!==null){commitHydratedSuspenseInstance(suspenseInstance);}}}}}function attachSuspenseRetryListeners(finishedWork){// If this boundary just timed out, then it will have a set of thenables. 16892// For each thenable, attach a listener so that when it resolves, React 16893// attempts to re-render the boundary in the primary (pre-timeout) state. 16894var thenables=finishedWork.updateQueue;if(thenables!==null){finishedWork.updateQueue=null;var retryCache=finishedWork.stateNode;if(retryCache===null){retryCache=finishedWork.stateNode=new PossiblyWeakSet();}thenables.forEach(function(thenable){// Memoize using the boundary fiber to prevent redundant listeners. 16895var retry=resolveRetryThenable.bind(null,finishedWork,thenable);if(!retryCache.has(thenable)){{if(thenable.__reactDoNotTraceInteractions!==true){retry=tracing.unstable_wrap(retry);}}retryCache.add(thenable);thenable.then(retry,retry);}});}}function commitResetTextContent(current){resetTextContent(current.stateNode);}var PossiblyWeakMap$1=typeof WeakMap==='function'?WeakMap:Map;function createRootErrorUpdate(fiber,errorInfo,expirationTime){var update=createUpdate(expirationTime,null);// Unmount the root by rendering null. 16896update.tag=CaptureUpdate;// Caution: React DevTools currently depends on this property 16897// being called "element". 16898update.payload={element:null};var error=errorInfo.value;update.callback=function(){onUncaughtError(error);logError(fiber,errorInfo);};return update;}function createClassErrorUpdate(fiber,errorInfo,expirationTime){var update=createUpdate(expirationTime,null);update.tag=CaptureUpdate;var getDerivedStateFromError=fiber.type.getDerivedStateFromError;if(typeof getDerivedStateFromError==='function'){var error$1=errorInfo.value;update.payload=function(){logError(fiber,errorInfo);return getDerivedStateFromError(error$1);};}var inst=fiber.stateNode;if(inst!==null&&typeof inst.componentDidCatch==='function'){update.callback=function callback(){{markFailedErrorBoundaryForHotReloading(fiber);}if(typeof getDerivedStateFromError!=='function'){// To preserve the preexisting retry behavior of error boundaries, 16899// we keep track of which ones already failed during this batch. 16900// This gets reset before we yield back to the browser. 16901// TODO: Warn in strict mode if getDerivedStateFromError is 16902// not defined. 16903markLegacyErrorBoundaryAsFailed(this);// Only log here if componentDidCatch is the only error boundary method defined 16904logError(fiber,errorInfo);}var error$1=errorInfo.value;var stack=errorInfo.stack;this.componentDidCatch(error$1,{componentStack:stack!==null?stack:''});{if(typeof getDerivedStateFromError!=='function'){// If componentDidCatch is the only error boundary method defined, 16905// then it needs to call setState to recover from errors. 16906// If no state update is scheduled then the boundary will swallow the error. 16907if(fiber.expirationTime!==Sync){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');}}}};}else{update.callback=function(){markFailedErrorBoundaryForHotReloading(fiber);};}return update;}function attachPingListener(root,renderExpirationTime,thenable){// Attach a listener to the promise to "ping" the root and retry. But 16908// only if one does not already exist for the current render expiration 16909// time (which acts like a "thread ID" here). 16910var pingCache=root.pingCache;var threadIDs;if(pingCache===null){pingCache=root.pingCache=new PossiblyWeakMap$1();threadIDs=new Set();pingCache.set(thenable,threadIDs);}else{threadIDs=pingCache.get(thenable);if(threadIDs===undefined){threadIDs=new Set();pingCache.set(thenable,threadIDs);}}if(!threadIDs.has(renderExpirationTime)){// Memoize using the thread ID to prevent redundant listeners. 16911threadIDs.add(renderExpirationTime);var ping=pingSuspendedRoot.bind(null,root,thenable,renderExpirationTime);thenable.then(ping,ping);}}function throwException(root,returnFiber,sourceFiber,value,renderExpirationTime){// The source fiber did not complete. 16912sourceFiber.effectTag|=Incomplete;// Its effect list is no longer valid. 16913sourceFiber.firstEffect=sourceFiber.lastEffect=null;if(value!==null&&typeof value==='object'&&typeof value.then==='function'){// This is a thenable. 16914var thenable=value;if((sourceFiber.mode&BlockingMode)===NoMode){// Reset the memoizedState to what it was before we attempted 16915// to render it. 16916var currentSource=sourceFiber.alternate;if(currentSource){sourceFiber.updateQueue=currentSource.updateQueue;sourceFiber.memoizedState=currentSource.memoizedState;sourceFiber.expirationTime=currentSource.expirationTime;}else{sourceFiber.updateQueue=null;sourceFiber.memoizedState=null;}}var hasInvisibleParentBoundary=hasSuspenseContext(suspenseStackCursor.current,InvisibleParentSuspenseContext);// Schedule the nearest Suspense to re-render the timed out view. 16917var _workInProgress=returnFiber;do{if(_workInProgress.tag===SuspenseComponent&&shouldCaptureSuspense(_workInProgress,hasInvisibleParentBoundary)){// Found the nearest boundary. 16918// Stash the promise on the boundary fiber. If the boundary times out, we'll 16919// attach another listener to flip the boundary back to its normal state. 16920var thenables=_workInProgress.updateQueue;if(thenables===null){var updateQueue=new Set();updateQueue.add(thenable);_workInProgress.updateQueue=updateQueue;}else{thenables.add(thenable);}// If the boundary is outside of blocking mode, we should *not* 16921// suspend the commit. Pretend as if the suspended component rendered 16922// null and keep rendering. In the commit phase, we'll schedule a 16923// subsequent synchronous update to re-render the Suspense. 16924// 16925// Note: It doesn't matter whether the component that suspended was 16926// inside a blocking mode tree. If the Suspense is outside of it, we 16927// should *not* suspend the commit. 16928if((_workInProgress.mode&BlockingMode)===NoMode){_workInProgress.effectTag|=DidCapture;// We're going to commit this fiber even though it didn't complete. 16929// But we shouldn't call any lifecycle methods or callbacks. Remove 16930// all lifecycle effect tags. 16931sourceFiber.effectTag&=~(LifecycleEffectMask|Incomplete);if(sourceFiber.tag===ClassComponent){var currentSourceFiber=sourceFiber.alternate;if(currentSourceFiber===null){// This is a new mount. Change the tag so it's not mistaken for a 16932// completed class component. For example, we should not call 16933// componentWillUnmount if it is deleted. 16934sourceFiber.tag=IncompleteClassComponent;}else{// When we try rendering again, we should not reuse the current fiber, 16935// since it's known to be in an inconsistent state. Use a force update to 16936// prevent a bail out. 16937var update=createUpdate(Sync,null);update.tag=ForceUpdate;enqueueUpdate(sourceFiber,update);}}// The source fiber did not complete. Mark it with Sync priority to 16938// indicate that it still has pending work. 16939sourceFiber.expirationTime=Sync;// Exit without suspending. 16940return;}// Confirmed that the boundary is in a concurrent mode tree. Continue 16941// with the normal suspend path. 16942// 16943// After this we'll use a set of heuristics to determine whether this 16944// render pass will run to completion or restart or "suspend" the commit. 16945// The actual logic for this is spread out in different places. 16946// 16947// This first principle is that if we're going to suspend when we complete 16948// a root, then we should also restart if we get an update or ping that 16949// might unsuspend it, and vice versa. The only reason to suspend is 16950// because you think you might want to restart before committing. However, 16951// it doesn't make sense to restart only while in the period we're suspended. 16952// 16953// Restarting too aggressively is also not good because it starves out any 16954// intermediate loading state. So we use heuristics to determine when. 16955// Suspense Heuristics 16956// 16957// If nothing threw a Promise or all the same fallbacks are already showing, 16958// then don't suspend/restart. 16959// 16960// If this is an initial render of a new tree of Suspense boundaries and 16961// those trigger a fallback, then don't suspend/restart. We want to ensure 16962// that we can show the initial loading state as quickly as possible. 16963// 16964// If we hit a "Delayed" case, such as when we'd switch from content back into 16965// a fallback, then we should always suspend/restart. SuspenseConfig applies to 16966// this case. If none is defined, JND is used instead. 16967// 16968// If we're already showing a fallback and it gets "retried", allowing us to show 16969// another level, but there's still an inner boundary that would show a fallback, 16970// then we suspend/restart for 500ms since the last time we showed a fallback 16971// anywhere in the tree. This effectively throttles progressive loading into a 16972// consistent train of commits. This also gives us an opportunity to restart to 16973// get to the completed state slightly earlier. 16974// 16975// If there's ambiguity due to batching it's resolved in preference of: 16976// 1) "delayed", 2) "initial render", 3) "retry". 16977// 16978// We want to ensure that a "busy" state doesn't get force committed. We want to 16979// ensure that new initial loading states can commit as soon as possible. 16980attachPingListener(root,renderExpirationTime,thenable);_workInProgress.effectTag|=ShouldCapture;_workInProgress.expirationTime=renderExpirationTime;return;}// This boundary already captured during this render. Continue to the next 16981// boundary. 16982_workInProgress=_workInProgress.return;}while(_workInProgress!==null);// No boundary was found. Fallthrough to error mode. 16983// TODO: Use invariant so the message is stripped in prod? 16984value=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));}// We didn't find a boundary that could handle this type of exception. Start 16985// over and traverse parent path again, this time treating the exception 16986// as an error. 16987renderDidError();value=createCapturedValue(value,sourceFiber);var workInProgress=returnFiber;do{switch(workInProgress.tag){case HostRoot:{var _errorInfo=value;workInProgress.effectTag|=ShouldCapture;workInProgress.expirationTime=renderExpirationTime;var _update=createRootErrorUpdate(workInProgress,_errorInfo,renderExpirationTime);enqueueCapturedUpdate(workInProgress,_update);return;}case ClassComponent:// Capture and retry 16988var errorInfo=value;var ctor=workInProgress.type;var instance=workInProgress.stateNode;if((workInProgress.effectTag&DidCapture)===NoEffect&&(typeof ctor.getDerivedStateFromError==='function'||instance!==null&&typeof instance.componentDidCatch==='function'&&!isAlreadyFailedLegacyErrorBoundary(instance))){workInProgress.effectTag|=ShouldCapture;workInProgress.expirationTime=renderExpirationTime;// Schedule the error boundary to re-render using updated state 16989var _update2=createClassErrorUpdate(workInProgress,errorInfo,renderExpirationTime);enqueueCapturedUpdate(workInProgress,_update2);return;}break;}workInProgress=workInProgress.return;}while(workInProgress!==null);}var ceil=Math.ceil;var ReactCurrentDispatcher$1=ReactSharedInternals.ReactCurrentDispatcher,ReactCurrentOwner$2=ReactSharedInternals.ReactCurrentOwner,IsSomeRendererActing=ReactSharedInternals.IsSomeRendererActing;var NoContext=/* */0;var BatchedContext=/* */1;var EventContext=/* */2;var DiscreteEventContext=/* */4;var LegacyUnbatchedContext=/* */8;var RenderContext=/* */16;var CommitContext=/* */32;var RootIncomplete=0;var RootFatalErrored=1;var RootErrored=2;var RootSuspended=3;var RootSuspendedWithDelay=4;var RootCompleted=5;// Describes where we are in the React execution stack 16990var executionContext=NoContext;// The root we're working on 16991var workInProgressRoot=null;// The fiber we're working on 16992var workInProgress=null;// The expiration time we're rendering 16993var renderExpirationTime$1=NoWork;// Whether to root completed, errored, suspended, etc. 16994var workInProgressRootExitStatus=RootIncomplete;// A fatal error, if one is thrown 16995var workInProgressRootFatalError=null;// Most recent event time among processed updates during this render. 16996// This is conceptually a time stamp but expressed in terms of an ExpirationTime 16997// because we deal mostly with expiration times in the hot path, so this avoids 16998// the conversion happening in the hot path. 16999var workInProgressRootLatestProcessedExpirationTime=Sync;var workInProgressRootLatestSuspenseTimeout=Sync;var workInProgressRootCanSuspendUsingConfig=null;// The work left over by components that were visited during this render. Only 17000// includes unprocessed updates, not work in bailed out children. 17001var workInProgressRootNextUnprocessedUpdateTime=NoWork;// If we're pinged while rendering we don't always restart immediately. 17002// This flag determines if it might be worthwhile to restart if an opportunity 17003// happens latere. 17004var workInProgressRootHasPendingPing=false;// The most recent time we committed a fallback. This lets us ensure a train 17005// model where we don't commit new loading states in too quick succession. 17006var globalMostRecentFallbackTime=0;var FALLBACK_THROTTLE_MS=500;var nextEffect=null;var hasUncaughtError=false;var firstUncaughtError=null;var legacyErrorBoundariesThatAlreadyFailed=null;var rootDoesHavePassiveEffects=false;var rootWithPendingPassiveEffects=null;var pendingPassiveEffectsRenderPriority=NoPriority;var pendingPassiveEffectsExpirationTime=NoWork;var rootsWithPendingDiscreteUpdates=null;// Use these to prevent an infinite loop of nested updates 17007var NESTED_UPDATE_LIMIT=50;var nestedUpdateCount=0;var rootWithNestedUpdates=null;var NESTED_PASSIVE_UPDATE_LIMIT=50;var nestedPassiveUpdateCount=0;var interruptedBy=null;// Marks the need to reschedule pending interactions at these expiration times 17008// during the commit phase. This enables them to be traced across components 17009// that spawn new work during render. E.g. hidden boundaries, suspended SSR 17010// hydration or SuspenseList. 17011var spawnedWorkDuringRender=null;// Expiration times are computed by adding to the current time (the start 17012// time). However, if two updates are scheduled within the same event, we 17013// should treat their start times as simultaneous, even if the actual clock 17014// time has advanced between the first and second call. 17015// In other words, because expiration times determine how updates are batched, 17016// we want all updates of like priority that occur within the same event to 17017// receive the same expiration time. Otherwise we get tearing. 17018var currentEventTime=NoWork;function requestCurrentTimeForUpdate(){if((executionContext&(RenderContext|CommitContext))!==NoContext){// We're inside React, so it's fine to read the actual time. 17019return msToExpirationTime(now());}// We're not inside React, so we may be in the middle of a browser event. 17020if(currentEventTime!==NoWork){// Use the same start time for all updates until we enter React again. 17021return currentEventTime;}// This is the first update since React yielded. Compute a new start time. 17022currentEventTime=msToExpirationTime(now());return currentEventTime;}function getCurrentTime(){return msToExpirationTime(now());}function computeExpirationForFiber(currentTime,fiber,suspenseConfig){var mode=fiber.mode;if((mode&BlockingMode)===NoMode){return Sync;}var priorityLevel=getCurrentPriorityLevel();if((mode&ConcurrentMode)===NoMode){return priorityLevel===ImmediatePriority?Sync:Batched;}if((executionContext&RenderContext)!==NoContext){// Use whatever time we're already rendering 17023// TODO: Should there be a way to opt out, like with `runWithPriority`? 17024return renderExpirationTime$1;}var expirationTime;if(suspenseConfig!==null){// Compute an expiration time based on the Suspense timeout. 17025expirationTime=computeSuspenseExpiration(currentTime,suspenseConfig.timeoutMs|0||LOW_PRIORITY_EXPIRATION);}else{// Compute an expiration time based on the Scheduler priority. 17026switch(priorityLevel){case ImmediatePriority:expirationTime=Sync;break;case UserBlockingPriority$1:// TODO: Rename this to computeUserBlockingExpiration 17027expirationTime=computeInteractiveExpiration(currentTime);break;case NormalPriority:case LowPriority:// TODO: Handle LowPriority 17028// TODO: Rename this to... something better. 17029expirationTime=computeAsyncExpiration(currentTime);break;case IdlePriority:expirationTime=Idle;break;default:{{throw Error("Expected a valid priority level");}}}}// If we're in the middle of rendering a tree, do not update at the same 17030// expiration time that is already rendering. 17031// TODO: We shouldn't have to do this if the update is on a different root. 17032// Refactor computeExpirationForFiber + scheduleUpdate so we have access to 17033// the root when we check for this condition. 17034if(workInProgressRoot!==null&&expirationTime===renderExpirationTime$1){// This is a trick to move this update into a separate batch 17035expirationTime-=1;}return expirationTime;}function scheduleUpdateOnFiber(fiber,expirationTime){checkForNestedUpdates();warnAboutRenderPhaseUpdatesInDEV(fiber);var root=markUpdateTimeFromFiberToRoot(fiber,expirationTime);if(root===null){warnAboutUpdateOnUnmountedFiberInDEV(fiber);return;}checkForInterruption(fiber,expirationTime);recordScheduleUpdate();// TODO: computeExpirationForFiber also reads the priority. Pass the 17036// priority as an argument to that function and this one. 17037var priorityLevel=getCurrentPriorityLevel();if(expirationTime===Sync){if(// Check if we're inside unbatchedUpdates 17038(executionContext&LegacyUnbatchedContext)!==NoContext&&// Check if we're not already rendering 17039(executionContext&(RenderContext|CommitContext))===NoContext){// Register pending interactions on the root to avoid losing traced interaction data. 17040schedulePendingInteractions(root,expirationTime);// This is a legacy edge case. The initial mount of a ReactDOM.render-ed 17041// root inside of batchedUpdates should be synchronous, but layout updates 17042// should be deferred until the end of the batch. 17043performSyncWorkOnRoot(root);}else{ensureRootIsScheduled(root);schedulePendingInteractions(root,expirationTime);if(executionContext===NoContext){// Flush the synchronous work now, unless we're already working or inside 17044// a batch. This is intentionally inside scheduleUpdateOnFiber instead of 17045// scheduleCallbackForFiber to preserve the ability to schedule a callback 17046// without immediately flushing it. We only do this for user-initiated 17047// updates, to preserve historical behavior of legacy mode. 17048flushSyncCallbackQueue();}}}else{ensureRootIsScheduled(root);schedulePendingInteractions(root,expirationTime);}if((executionContext&DiscreteEventContext)!==NoContext&&(// Only updates at user-blocking priority or greater are considered 17049// discrete, even inside a discrete event. 17050priorityLevel===UserBlockingPriority$1||priorityLevel===ImmediatePriority)){// This is the result of a discrete event. Track the lowest priority 17051// discrete update per root so we can flush them early, if needed. 17052if(rootsWithPendingDiscreteUpdates===null){rootsWithPendingDiscreteUpdates=new Map([[root,expirationTime]]);}else{var lastDiscreteTime=rootsWithPendingDiscreteUpdates.get(root);if(lastDiscreteTime===undefined||lastDiscreteTime>expirationTime){rootsWithPendingDiscreteUpdates.set(root,expirationTime);}}}}var scheduleWork=scheduleUpdateOnFiber;// This is split into a separate function so we can mark a fiber with pending 17053// work without treating it as a typical update that originates from an event; 17054// e.g. retrying a Suspense boundary isn't an update, but it does schedule work 17055// on a fiber. 17056function markUpdateTimeFromFiberToRoot(fiber,expirationTime){// Update the source fiber's expiration time 17057if(fiber.expirationTime<expirationTime){fiber.expirationTime=expirationTime;}var alternate=fiber.alternate;if(alternate!==null&&alternate.expirationTime<expirationTime){alternate.expirationTime=expirationTime;}// Walk the parent path to the root and update the child expiration time. 17058var node=fiber.return;var root=null;if(node===null&&fiber.tag===HostRoot){root=fiber.stateNode;}else{while(node!==null){alternate=node.alternate;if(node.childExpirationTime<expirationTime){node.childExpirationTime=expirationTime;if(alternate!==null&&alternate.childExpirationTime<expirationTime){alternate.childExpirationTime=expirationTime;}}else if(alternate!==null&&alternate.childExpirationTime<expirationTime){alternate.childExpirationTime=expirationTime;}if(node.return===null&&node.tag===HostRoot){root=node.stateNode;break;}node=node.return;}}if(root!==null){if(workInProgressRoot===root){// Received an update to a tree that's in the middle of rendering. Mark 17059// that's unprocessed work on this root. 17060markUnprocessedUpdateTime(expirationTime);if(workInProgressRootExitStatus===RootSuspendedWithDelay){// The root already suspended with a delay, which means this render 17061// definitely won't finish. Since we have a new update, let's mark it as 17062// suspended now, right before marking the incoming update. This has the 17063// effect of interrupting the current render and switching to the update. 17064// TODO: This happens to work when receiving an update during the render 17065// phase, because of the trick inside computeExpirationForFiber to 17066// subtract 1 from `renderExpirationTime` to move it into a 17067// separate bucket. But we should probably model it with an exception, 17068// using the same mechanism we use to force hydration of a subtree. 17069// TODO: This does not account for low pri updates that were already 17070// scheduled before the root started rendering. Need to track the next 17071// pending expiration time (perhaps by backtracking the return path) and 17072// then trigger a restart in the `renderDidSuspendDelayIfPossible` path. 17073markRootSuspendedAtTime(root,renderExpirationTime$1);}}// Mark that the root has a pending update. 17074markRootUpdatedAtTime(root,expirationTime);}return root;}function getNextRootExpirationTimeToWorkOn(root){// Determines the next expiration time that the root should render, taking 17075// into account levels that may be suspended, or levels that may have 17076// received a ping. 17077var lastExpiredTime=root.lastExpiredTime;if(lastExpiredTime!==NoWork){return lastExpiredTime;}// "Pending" refers to any update that hasn't committed yet, including if it 17078// suspended. The "suspended" range is therefore a subset. 17079var firstPendingTime=root.firstPendingTime;if(!isRootSuspendedAtTime(root,firstPendingTime)){// The highest priority pending time is not suspended. Let's work on that. 17080return firstPendingTime;}// If the first pending time is suspended, check if there's a lower priority 17081// pending level that we know about. Or check if we received a ping. Work 17082// on whichever is higher priority. 17083var lastPingedTime=root.lastPingedTime;var nextKnownPendingLevel=root.nextKnownPendingLevel;var nextLevel=lastPingedTime>nextKnownPendingLevel?lastPingedTime:nextKnownPendingLevel;if(nextLevel<=Idle&&firstPendingTime!==nextLevel){// Don't work on Idle/Never priority unless everything else is committed. 17084return NoWork;}return nextLevel;}// Use this function to schedule a task for a root. There's only one task per 17085// root; if a task was already scheduled, we'll check to make sure the 17086// expiration time of the existing task is the same as the expiration time of 17087// the next level that the root has work on. This function is called on every 17088// update, and right before exiting a task. 17089function ensureRootIsScheduled(root){var lastExpiredTime=root.lastExpiredTime;if(lastExpiredTime!==NoWork){// Special case: Expired work should flush synchronously. 17090root.callbackExpirationTime=Sync;root.callbackPriority=ImmediatePriority;root.callbackNode=scheduleSyncCallback(performSyncWorkOnRoot.bind(null,root));return;}var expirationTime=getNextRootExpirationTimeToWorkOn(root);var existingCallbackNode=root.callbackNode;if(expirationTime===NoWork){// There's nothing to work on. 17091if(existingCallbackNode!==null){root.callbackNode=null;root.callbackExpirationTime=NoWork;root.callbackPriority=NoPriority;}return;}// TODO: If this is an update, we already read the current time. Pass the 17092// time as an argument. 17093var currentTime=requestCurrentTimeForUpdate();var priorityLevel=inferPriorityFromExpirationTime(currentTime,expirationTime);// If there's an existing render task, confirm it has the correct priority and 17094// expiration time. Otherwise, we'll cancel it and schedule a new one. 17095if(existingCallbackNode!==null){var existingCallbackPriority=root.callbackPriority;var existingCallbackExpirationTime=root.callbackExpirationTime;if(// Callback must have the exact same expiration time. 17096existingCallbackExpirationTime===expirationTime&&// Callback must have greater or equal priority. 17097existingCallbackPriority>=priorityLevel){// Existing callback is sufficient. 17098return;}// Need to schedule a new task. 17099// TODO: Instead of scheduling a new task, we should be able to change the 17100// priority of the existing one. 17101cancelCallback(existingCallbackNode);}root.callbackExpirationTime=expirationTime;root.callbackPriority=priorityLevel;var callbackNode;if(expirationTime===Sync){// Sync React callbacks are scheduled on a special internal queue 17102callbackNode=scheduleSyncCallback(performSyncWorkOnRoot.bind(null,root));}else{callbackNode=scheduleCallback(priorityLevel,performConcurrentWorkOnRoot.bind(null,root),// Compute a task timeout based on the expiration time. This also affects 17103// ordering because tasks are processed in timeout order. 17104{timeout:expirationTimeToMs(expirationTime)-now()});}root.callbackNode=callbackNode;}// This is the entry point for every concurrent task, i.e. anything that 17105// goes through Scheduler. 17106function performConcurrentWorkOnRoot(root,didTimeout){// Since we know we're in a React event, we can clear the current 17107// event time. The next update will compute a new event time. 17108currentEventTime=NoWork;if(didTimeout){// The render task took too long to complete. Mark the current time as 17109// expired to synchronously render all expired work in a single batch. 17110var currentTime=requestCurrentTimeForUpdate();markRootExpiredAtTime(root,currentTime);// This will schedule a synchronous callback. 17111ensureRootIsScheduled(root);return null;}// Determine the next expiration time to work on, using the fields stored 17112// on the root. 17113var expirationTime=getNextRootExpirationTimeToWorkOn(root);if(expirationTime!==NoWork){var originalCallbackNode=root.callbackNode;if(!((executionContext&(RenderContext|CommitContext))===NoContext)){{throw Error("Should not already be working.");}}flushPassiveEffects();// If the root or expiration time have changed, throw out the existing stack 17114// and prepare a fresh one. Otherwise we'll continue where we left off. 17115if(root!==workInProgressRoot||expirationTime!==renderExpirationTime$1){prepareFreshStack(root,expirationTime);startWorkOnPendingInteractions(root,expirationTime);}// If we have a work-in-progress fiber, it means there's still work to do 17116// in this root. 17117if(workInProgress!==null){var prevExecutionContext=executionContext;executionContext|=RenderContext;var prevDispatcher=pushDispatcher();var prevInteractions=pushInteractions(root);startWorkLoopTimer(workInProgress);do{try{workLoopConcurrent();break;}catch(thrownValue){handleError(root,thrownValue);}}while(true);resetContextDependencies();executionContext=prevExecutionContext;popDispatcher(prevDispatcher);{popInteractions(prevInteractions);}if(workInProgressRootExitStatus===RootFatalErrored){var fatalError=workInProgressRootFatalError;stopInterruptedWorkLoopTimer();prepareFreshStack(root,expirationTime);markRootSuspendedAtTime(root,expirationTime);ensureRootIsScheduled(root);throw fatalError;}if(workInProgress!==null){// There's still work left over. Exit without committing. 17118stopInterruptedWorkLoopTimer();}else{// We now have a consistent tree. The next step is either to commit it, 17119// or, if something suspended, wait to commit it after a timeout. 17120stopFinishedWorkLoopTimer();var finishedWork=root.finishedWork=root.current.alternate;root.finishedExpirationTime=expirationTime;finishConcurrentRender(root,finishedWork,workInProgressRootExitStatus,expirationTime);}ensureRootIsScheduled(root);if(root.callbackNode===originalCallbackNode){// The task node scheduled for this root is the same one that's 17121// currently executed. Need to return a continuation. 17122return performConcurrentWorkOnRoot.bind(null,root);}}}return null;}function finishConcurrentRender(root,finishedWork,exitStatus,expirationTime){// Set this to null to indicate there's no in-progress render. 17123workInProgressRoot=null;switch(exitStatus){case RootIncomplete:case RootFatalErrored:{{{throw Error("Root did not complete. This is a bug in React.");}}}// Flow knows about invariant, so it complains if I add a break 17124// statement, but eslint doesn't know about invariant, so it complains 17125// if I do. eslint-disable-next-line no-fallthrough 17126case RootErrored:{// If this was an async render, the error may have happened due to 17127// a mutation in a concurrent event. Try rendering one more time, 17128// synchronously, to see if the error goes away. If there are 17129// lower priority updates, let's include those, too, in case they 17130// fix the inconsistency. Render at Idle to include all updates. 17131// If it was Idle or Never or some not-yet-invented time, render 17132// at that time. 17133markRootExpiredAtTime(root,expirationTime>Idle?Idle:expirationTime);// We assume that this second render pass will be synchronous 17134// and therefore not hit this path again. 17135break;}case RootSuspended:{markRootSuspendedAtTime(root,expirationTime);var lastSuspendedTime=root.lastSuspendedTime;if(expirationTime===lastSuspendedTime){root.nextKnownPendingLevel=getRemainingExpirationTime(finishedWork);}// We have an acceptable loading state. We need to figure out if we 17136// should immediately commit it or wait a bit. 17137// If we have processed new updates during this render, we may now 17138// have a new loading state ready. We want to ensure that we commit 17139// that as soon as possible. 17140var hasNotProcessedNewUpdates=workInProgressRootLatestProcessedExpirationTime===Sync;if(hasNotProcessedNewUpdates&&// do not delay if we're inside an act() scope 17141!IsThisRendererActing.current){// If we have not processed any new updates during this pass, then 17142// this is either a retry of an existing fallback state or a 17143// hidden tree. Hidden trees shouldn't be batched with other work 17144// and after that's fixed it can only be a retry. We're going to 17145// throttle committing retries so that we don't show too many 17146// loading states too quickly. 17147var msUntilTimeout=globalMostRecentFallbackTime+FALLBACK_THROTTLE_MS-now();// Don't bother with a very short suspense time. 17148if(msUntilTimeout>10){if(workInProgressRootHasPendingPing){var lastPingedTime=root.lastPingedTime;if(lastPingedTime===NoWork||lastPingedTime>=expirationTime){// This render was pinged but we didn't get to restart 17149// earlier so try restarting now instead. 17150root.lastPingedTime=expirationTime;prepareFreshStack(root,expirationTime);break;}}var nextTime=getNextRootExpirationTimeToWorkOn(root);if(nextTime!==NoWork&&nextTime!==expirationTime){// There's additional work on this root. 17151break;}if(lastSuspendedTime!==NoWork&&lastSuspendedTime!==expirationTime){// We should prefer to render the fallback of at the last 17152// suspended level. Ping the last suspended level to try 17153// rendering it again. 17154root.lastPingedTime=lastSuspendedTime;break;}// The render is suspended, it hasn't timed out, and there's no 17155// lower priority work to do. Instead of committing the fallback 17156// immediately, wait for more data to arrive. 17157root.timeoutHandle=scheduleTimeout(commitRoot.bind(null,root),msUntilTimeout);break;}}// The work expired. Commit immediately. 17158commitRoot(root);break;}case RootSuspendedWithDelay:{markRootSuspendedAtTime(root,expirationTime);var _lastSuspendedTime=root.lastSuspendedTime;if(expirationTime===_lastSuspendedTime){root.nextKnownPendingLevel=getRemainingExpirationTime(finishedWork);}if(// do not delay if we're inside an act() scope 17159!IsThisRendererActing.current){// We're suspended in a state that should be avoided. We'll try to 17160// avoid committing it for as long as the timeouts let us. 17161if(workInProgressRootHasPendingPing){var _lastPingedTime=root.lastPingedTime;if(_lastPingedTime===NoWork||_lastPingedTime>=expirationTime){// This render was pinged but we didn't get to restart earlier 17162// so try restarting now instead. 17163root.lastPingedTime=expirationTime;prepareFreshStack(root,expirationTime);break;}}var _nextTime=getNextRootExpirationTimeToWorkOn(root);if(_nextTime!==NoWork&&_nextTime!==expirationTime){// There's additional work on this root. 17164break;}if(_lastSuspendedTime!==NoWork&&_lastSuspendedTime!==expirationTime){// We should prefer to render the fallback of at the last 17165// suspended level. Ping the last suspended level to try 17166// rendering it again. 17167root.lastPingedTime=_lastSuspendedTime;break;}var _msUntilTimeout;if(workInProgressRootLatestSuspenseTimeout!==Sync){// We have processed a suspense config whose expiration time we 17168// can use as the timeout. 17169_msUntilTimeout=expirationTimeToMs(workInProgressRootLatestSuspenseTimeout)-now();}else if(workInProgressRootLatestProcessedExpirationTime===Sync){// This should never normally happen because only new updates 17170// cause delayed states, so we should have processed something. 17171// However, this could also happen in an offscreen tree. 17172_msUntilTimeout=0;}else{// If we don't have a suspense config, we're going to use a 17173// heuristic to determine how long we can suspend. 17174var eventTimeMs=inferTimeFromExpirationTime(workInProgressRootLatestProcessedExpirationTime);var currentTimeMs=now();var timeUntilExpirationMs=expirationTimeToMs(expirationTime)-currentTimeMs;var timeElapsed=currentTimeMs-eventTimeMs;if(timeElapsed<0){// We get this wrong some time since we estimate the time. 17175timeElapsed=0;}_msUntilTimeout=jnd(timeElapsed)-timeElapsed;// Clamp the timeout to the expiration time. TODO: Once the 17176// event time is exact instead of inferred from expiration time 17177// we don't need this. 17178if(timeUntilExpirationMs<_msUntilTimeout){_msUntilTimeout=timeUntilExpirationMs;}}// Don't bother with a very short suspense time. 17179if(_msUntilTimeout>10){// The render is suspended, it hasn't timed out, and there's no 17180// lower priority work to do. Instead of committing the fallback 17181// immediately, wait for more data to arrive. 17182root.timeoutHandle=scheduleTimeout(commitRoot.bind(null,root),_msUntilTimeout);break;}}// The work expired. Commit immediately. 17183commitRoot(root);break;}case RootCompleted:{// The work completed. Ready to commit. 17184if(// do not delay if we're inside an act() scope 17185!IsThisRendererActing.current&&workInProgressRootLatestProcessedExpirationTime!==Sync&&workInProgressRootCanSuspendUsingConfig!==null){// If we have exceeded the minimum loading delay, which probably 17186// means we have shown a spinner already, we might have to suspend 17187// a bit longer to ensure that the spinner is shown for 17188// enough time. 17189var _msUntilTimeout2=computeMsUntilSuspenseLoadingDelay(workInProgressRootLatestProcessedExpirationTime,expirationTime,workInProgressRootCanSuspendUsingConfig);if(_msUntilTimeout2>10){markRootSuspendedAtTime(root,expirationTime);root.timeoutHandle=scheduleTimeout(commitRoot.bind(null,root),_msUntilTimeout2);break;}}commitRoot(root);break;}default:{{{throw Error("Unknown root exit status.");}}}}}// This is the entry point for synchronous tasks that don't go 17190// through Scheduler 17191function performSyncWorkOnRoot(root){// Check if there's expired work on this root. Otherwise, render at Sync. 17192var lastExpiredTime=root.lastExpiredTime;var expirationTime=lastExpiredTime!==NoWork?lastExpiredTime:Sync;if(!((executionContext&(RenderContext|CommitContext))===NoContext)){{throw Error("Should not already be working.");}}flushPassiveEffects();// If the root or expiration time have changed, throw out the existing stack 17193// and prepare a fresh one. Otherwise we'll continue where we left off. 17194if(root!==workInProgressRoot||expirationTime!==renderExpirationTime$1){prepareFreshStack(root,expirationTime);startWorkOnPendingInteractions(root,expirationTime);}// If we have a work-in-progress fiber, it means there's still work to do 17195// in this root. 17196if(workInProgress!==null){var prevExecutionContext=executionContext;executionContext|=RenderContext;var prevDispatcher=pushDispatcher();var prevInteractions=pushInteractions(root);startWorkLoopTimer(workInProgress);do{try{workLoopSync();break;}catch(thrownValue){handleError(root,thrownValue);}}while(true);resetContextDependencies();executionContext=prevExecutionContext;popDispatcher(prevDispatcher);{popInteractions(prevInteractions);}if(workInProgressRootExitStatus===RootFatalErrored){var fatalError=workInProgressRootFatalError;stopInterruptedWorkLoopTimer();prepareFreshStack(root,expirationTime);markRootSuspendedAtTime(root,expirationTime);ensureRootIsScheduled(root);throw fatalError;}if(workInProgress!==null){// This is a sync render, so we should have finished the whole tree. 17197{{throw Error("Cannot commit an incomplete root. This error is likely caused by a bug in React. Please file an issue.");}}}else{// We now have a consistent tree. Because this is a sync render, we 17198// will commit it even if something suspended. 17199stopFinishedWorkLoopTimer();root.finishedWork=root.current.alternate;root.finishedExpirationTime=expirationTime;finishSyncRender(root);}// Before exiting, make sure there's a callback scheduled for the next 17200// pending level. 17201ensureRootIsScheduled(root);}return null;}function finishSyncRender(root){// Set this to null to indicate there's no in-progress render. 17202workInProgressRoot=null;commitRoot(root);}function flushDiscreteUpdates(){// TODO: Should be able to flush inside batchedUpdates, but not inside `act`. 17203// However, `act` uses `batchedUpdates`, so there's no way to distinguish 17204// those two cases. Need to fix this before exposing flushDiscreteUpdates 17205// as a public API. 17206if((executionContext&(BatchedContext|RenderContext|CommitContext))!==NoContext){{if((executionContext&RenderContext)!==NoContext){error('unstable_flushDiscreteUpdates: Cannot flush updates when React is '+'already rendering.');}}// We're already rendering, so we can't synchronously flush pending work. 17207// This is probably a nested event dispatch triggered by a lifecycle/effect, 17208// like `el.focus()`. Exit. 17209return;}flushPendingDiscreteUpdates();// If the discrete updates scheduled passive effects, flush them now so that 17210// they fire before the next serial event. 17211flushPassiveEffects();}function syncUpdates(fn,a,b,c){return runWithPriority$1(ImmediatePriority,fn.bind(null,a,b,c));}function flushPendingDiscreteUpdates(){if(rootsWithPendingDiscreteUpdates!==null){// For each root with pending discrete updates, schedule a callback to 17212// immediately flush them. 17213var roots=rootsWithPendingDiscreteUpdates;rootsWithPendingDiscreteUpdates=null;roots.forEach(function(expirationTime,root){markRootExpiredAtTime(root,expirationTime);ensureRootIsScheduled(root);});// Now flush the immediate queue. 17214flushSyncCallbackQueue();}}function batchedUpdates$1(fn,a){var prevExecutionContext=executionContext;executionContext|=BatchedContext;try{return fn(a);}finally{executionContext=prevExecutionContext;if(executionContext===NoContext){// Flush the immediate callbacks that were scheduled during this batch 17215flushSyncCallbackQueue();}}}function batchedEventUpdates$1(fn,a){var prevExecutionContext=executionContext;executionContext|=EventContext;try{return fn(a);}finally{executionContext=prevExecutionContext;if(executionContext===NoContext){// Flush the immediate callbacks that were scheduled during this batch 17216flushSyncCallbackQueue();}}}function discreteUpdates$1(fn,a,b,c,d){var prevExecutionContext=executionContext;executionContext|=DiscreteEventContext;try{// Should this 17217return runWithPriority$1(UserBlockingPriority$1,fn.bind(null,a,b,c,d));}finally{executionContext=prevExecutionContext;if(executionContext===NoContext){// Flush the immediate callbacks that were scheduled during this batch 17218flushSyncCallbackQueue();}}}function unbatchedUpdates(fn,a){var prevExecutionContext=executionContext;executionContext&=~BatchedContext;executionContext|=LegacyUnbatchedContext;try{return fn(a);}finally{executionContext=prevExecutionContext;if(executionContext===NoContext){// Flush the immediate callbacks that were scheduled during this batch 17219flushSyncCallbackQueue();}}}function flushSync(fn,a){if((executionContext&(RenderContext|CommitContext))!==NoContext){{{throw Error("flushSync was called from inside a lifecycle method. It cannot be called when React is already rendering.");}}}var prevExecutionContext=executionContext;executionContext|=BatchedContext;try{return runWithPriority$1(ImmediatePriority,fn.bind(null,a));}finally{executionContext=prevExecutionContext;// Flush the immediate callbacks that were scheduled during this batch. 17220// Note that this will happen even if batchedUpdates is higher up 17221// the stack. 17222flushSyncCallbackQueue();}}function prepareFreshStack(root,expirationTime){root.finishedWork=null;root.finishedExpirationTime=NoWork;var timeoutHandle=root.timeoutHandle;if(timeoutHandle!==noTimeout){// The root previous suspended and scheduled a timeout to commit a fallback 17223// state. Now that we have additional work, cancel the timeout. 17224root.timeoutHandle=noTimeout;// $FlowFixMe Complains noTimeout is not a TimeoutID, despite the check above 17225cancelTimeout(timeoutHandle);}if(workInProgress!==null){var interruptedWork=workInProgress.return;while(interruptedWork!==null){unwindInterruptedWork(interruptedWork);interruptedWork=interruptedWork.return;}}workInProgressRoot=root;workInProgress=createWorkInProgress(root.current,null);renderExpirationTime$1=expirationTime;workInProgressRootExitStatus=RootIncomplete;workInProgressRootFatalError=null;workInProgressRootLatestProcessedExpirationTime=Sync;workInProgressRootLatestSuspenseTimeout=Sync;workInProgressRootCanSuspendUsingConfig=null;workInProgressRootNextUnprocessedUpdateTime=NoWork;workInProgressRootHasPendingPing=false;{spawnedWorkDuringRender=null;}{ReactStrictModeWarnings.discardPendingWarnings();}}function handleError(root,thrownValue){do{try{// Reset module-level state that was set during the render phase. 17226resetContextDependencies();resetHooksAfterThrow();resetCurrentFiber();if(workInProgress===null||workInProgress.return===null){// Expected to be working on a non-root fiber. This is a fatal error 17227// because there's no ancestor that can handle it; the root is 17228// supposed to capture all errors that weren't caught by an error 17229// boundary. 17230workInProgressRootExitStatus=RootFatalErrored;workInProgressRootFatalError=thrownValue;// Set `workInProgress` to null. This represents advancing to the next 17231// sibling, or the parent if there are no siblings. But since the root 17232// has no siblings nor a parent, we set it to null. Usually this is 17233// handled by `completeUnitOfWork` or `unwindWork`, but since we're 17234// interntionally not calling those, we need set it here. 17235// TODO: Consider calling `unwindWork` to pop the contexts. 17236workInProgress=null;return null;}if(enableProfilerTimer&&workInProgress.mode&ProfileMode){// Record the time spent rendering before an error was thrown. This 17237// avoids inaccurate Profiler durations in the case of a 17238// suspended render. 17239stopProfilerTimerIfRunningAndRecordDelta(workInProgress,true);}throwException(root,workInProgress.return,workInProgress,thrownValue,renderExpirationTime$1);workInProgress=completeUnitOfWork(workInProgress);}catch(yetAnotherThrownValue){// Something in the return path also threw. 17240thrownValue=yetAnotherThrownValue;continue;}// Return to the normal work loop. 17241return;}while(true);}function pushDispatcher(root){var prevDispatcher=ReactCurrentDispatcher$1.current;ReactCurrentDispatcher$1.current=ContextOnlyDispatcher;if(prevDispatcher===null){// The React isomorphic package does not include a default dispatcher. 17242// Instead the first renderer will lazily attach one, in order to give 17243// nicer error messages. 17244return ContextOnlyDispatcher;}else{return prevDispatcher;}}function popDispatcher(prevDispatcher){ReactCurrentDispatcher$1.current=prevDispatcher;}function pushInteractions(root){{var prevInteractions=tracing.__interactionsRef.current;tracing.__interactionsRef.current=root.memoizedInteractions;return prevInteractions;}}function popInteractions(prevInteractions){{tracing.__interactionsRef.current=prevInteractions;}}function markCommitTimeOfFallback(){globalMostRecentFallbackTime=now();}function markRenderEventTimeAndConfig(expirationTime,suspenseConfig){if(expirationTime<workInProgressRootLatestProcessedExpirationTime&&expirationTime>Idle){workInProgressRootLatestProcessedExpirationTime=expirationTime;}if(suspenseConfig!==null){if(expirationTime<workInProgressRootLatestSuspenseTimeout&&expirationTime>Idle){workInProgressRootLatestSuspenseTimeout=expirationTime;// Most of the time we only have one config and getting wrong is not bad. 17245workInProgressRootCanSuspendUsingConfig=suspenseConfig;}}}function markUnprocessedUpdateTime(expirationTime){if(expirationTime>workInProgressRootNextUnprocessedUpdateTime){workInProgressRootNextUnprocessedUpdateTime=expirationTime;}}function renderDidSuspend(){if(workInProgressRootExitStatus===RootIncomplete){workInProgressRootExitStatus=RootSuspended;}}function renderDidSuspendDelayIfPossible(){if(workInProgressRootExitStatus===RootIncomplete||workInProgressRootExitStatus===RootSuspended){workInProgressRootExitStatus=RootSuspendedWithDelay;}// Check if there's a lower priority update somewhere else in the tree. 17246if(workInProgressRootNextUnprocessedUpdateTime!==NoWork&&workInProgressRoot!==null){// Mark the current render as suspended, and then mark that there's a 17247// pending update. 17248// TODO: This should immediately interrupt the current render, instead 17249// of waiting until the next time we yield. 17250markRootSuspendedAtTime(workInProgressRoot,renderExpirationTime$1);markRootUpdatedAtTime(workInProgressRoot,workInProgressRootNextUnprocessedUpdateTime);}}function renderDidError(){if(workInProgressRootExitStatus!==RootCompleted){workInProgressRootExitStatus=RootErrored;}}// Called during render to determine if anything has suspended. 17251// Returns false if we're not sure. 17252function renderHasNotSuspendedYet(){// If something errored or completed, we can't really be sure, 17253// so those are false. 17254return workInProgressRootExitStatus===RootIncomplete;}function inferTimeFromExpirationTime(expirationTime){// We don't know exactly when the update was scheduled, but we can infer an 17255// approximate start time from the expiration time. 17256var earliestExpirationTimeMs=expirationTimeToMs(expirationTime);return earliestExpirationTimeMs-LOW_PRIORITY_EXPIRATION;}function inferTimeFromExpirationTimeWithSuspenseConfig(expirationTime,suspenseConfig){// We don't know exactly when the update was scheduled, but we can infer an 17257// approximate start time from the expiration time by subtracting the timeout 17258// that was added to the event time. 17259var earliestExpirationTimeMs=expirationTimeToMs(expirationTime);return earliestExpirationTimeMs-(suspenseConfig.timeoutMs|0||LOW_PRIORITY_EXPIRATION);}// The work loop is an extremely hot path. Tell Closure not to inline it. 17260/** @noinline */function workLoopSync(){// Already timed out, so perform work without checking if we need to yield. 17261while(workInProgress!==null){workInProgress=performUnitOfWork(workInProgress);}}/** @noinline */function workLoopConcurrent(){// Perform work until Scheduler asks us to yield 17262while(workInProgress!==null&&!shouldYield()){workInProgress=performUnitOfWork(workInProgress);}}function performUnitOfWork(unitOfWork){// The current, flushed, state of this fiber is the alternate. Ideally 17263// nothing should rely on this, but relying on it here means that we don't 17264// need an additional field on the work in progress. 17265var current=unitOfWork.alternate;startWorkTimer(unitOfWork);setCurrentFiber(unitOfWork);var next;if((unitOfWork.mode&ProfileMode)!==NoMode){startProfilerTimer(unitOfWork);next=beginWork$1(current,unitOfWork,renderExpirationTime$1);stopProfilerTimerIfRunningAndRecordDelta(unitOfWork,true);}else{next=beginWork$1(current,unitOfWork,renderExpirationTime$1);}resetCurrentFiber();unitOfWork.memoizedProps=unitOfWork.pendingProps;if(next===null){// If this doesn't spawn new work, complete the current work. 17266next=completeUnitOfWork(unitOfWork);}ReactCurrentOwner$2.current=null;return next;}function completeUnitOfWork(unitOfWork){// Attempt to complete the current unit of work, then move to the next 17267// sibling. If there are no more siblings, return to the parent fiber. 17268workInProgress=unitOfWork;do{// The current, flushed, state of this fiber is the alternate. Ideally 17269// nothing should rely on this, but relying on it here means that we don't 17270// need an additional field on the work in progress. 17271var current=workInProgress.alternate;var returnFiber=workInProgress.return;// Check if the work completed or if something threw. 17272if((workInProgress.effectTag&Incomplete)===NoEffect){setCurrentFiber(workInProgress);var next=void 0;if((workInProgress.mode&ProfileMode)===NoMode){next=completeWork(current,workInProgress,renderExpirationTime$1);}else{startProfilerTimer(workInProgress);next=completeWork(current,workInProgress,renderExpirationTime$1);// Update render duration assuming we didn't error. 17273stopProfilerTimerIfRunningAndRecordDelta(workInProgress,false);}stopWorkTimer(workInProgress);resetCurrentFiber();resetChildExpirationTime(workInProgress);if(next!==null){// Completing this fiber spawned new work. Work on that next. 17274return next;}if(returnFiber!==null&&// Do not append effects to parents if a sibling failed to complete 17275(returnFiber.effectTag&Incomplete)===NoEffect){// Append all the effects of the subtree and this fiber onto the effect 17276// list of the parent. The completion order of the children affects the 17277// side-effect order. 17278if(returnFiber.firstEffect===null){returnFiber.firstEffect=workInProgress.firstEffect;}if(workInProgress.lastEffect!==null){if(returnFiber.lastEffect!==null){returnFiber.lastEffect.nextEffect=workInProgress.firstEffect;}returnFiber.lastEffect=workInProgress.lastEffect;}// If this fiber had side-effects, we append it AFTER the children's 17279// side-effects. We can perform certain side-effects earlier if needed, 17280// by doing multiple passes over the effect list. We don't want to 17281// schedule our own side-effect on our own list because if end up 17282// reusing children we'll schedule this effect onto itself since we're 17283// at the end. 17284var effectTag=workInProgress.effectTag;// Skip both NoWork and PerformedWork tags when creating the effect 17285// list. PerformedWork effect is read by React DevTools but shouldn't be 17286// committed. 17287if(effectTag>PerformedWork){if(returnFiber.lastEffect!==null){returnFiber.lastEffect.nextEffect=workInProgress;}else{returnFiber.firstEffect=workInProgress;}returnFiber.lastEffect=workInProgress;}}}else{// This fiber did not complete because something threw. Pop values off 17288// the stack without entering the complete phase. If this is a boundary, 17289// capture values if possible. 17290var _next=unwindWork(workInProgress);// Because this fiber did not complete, don't reset its expiration time. 17291if((workInProgress.mode&ProfileMode)!==NoMode){// Record the render duration for the fiber that errored. 17292stopProfilerTimerIfRunningAndRecordDelta(workInProgress,false);// Include the time spent working on failed children before continuing. 17293var actualDuration=workInProgress.actualDuration;var child=workInProgress.child;while(child!==null){actualDuration+=child.actualDuration;child=child.sibling;}workInProgress.actualDuration=actualDuration;}if(_next!==null){// If completing this work spawned new work, do that next. We'll come 17294// back here again. 17295// Since we're restarting, remove anything that is not a host effect 17296// from the effect tag. 17297// TODO: The name stopFailedWorkTimer is misleading because Suspense 17298// also captures and restarts. 17299stopFailedWorkTimer(workInProgress);_next.effectTag&=HostEffectMask;return _next;}stopWorkTimer(workInProgress);if(returnFiber!==null){// Mark the parent fiber as incomplete and clear its effect list. 17300returnFiber.firstEffect=returnFiber.lastEffect=null;returnFiber.effectTag|=Incomplete;}}var siblingFiber=workInProgress.sibling;if(siblingFiber!==null){// If there is more work to do in this returnFiber, do that next. 17301return siblingFiber;}// Otherwise, return to the parent 17302workInProgress=returnFiber;}while(workInProgress!==null);// We've reached the root. 17303if(workInProgressRootExitStatus===RootIncomplete){workInProgressRootExitStatus=RootCompleted;}return null;}function getRemainingExpirationTime(fiber){var updateExpirationTime=fiber.expirationTime;var childExpirationTime=fiber.childExpirationTime;return updateExpirationTime>childExpirationTime?updateExpirationTime:childExpirationTime;}function resetChildExpirationTime(completedWork){if(renderExpirationTime$1!==Never&&completedWork.childExpirationTime===Never){// The children of this component are hidden. Don't bubble their 17304// expiration times. 17305return;}var newChildExpirationTime=NoWork;// Bubble up the earliest expiration time. 17306if((completedWork.mode&ProfileMode)!==NoMode){// In profiling mode, resetChildExpirationTime is also used to reset 17307// profiler durations. 17308var actualDuration=completedWork.actualDuration;var treeBaseDuration=completedWork.selfBaseDuration;// When a fiber is cloned, its actualDuration is reset to 0. This value will 17309// only be updated if work is done on the fiber (i.e. it doesn't bailout). 17310// When work is done, it should bubble to the parent's actualDuration. If 17311// the fiber has not been cloned though, (meaning no work was done), then 17312// this value will reflect the amount of time spent working on a previous 17313// render. In that case it should not bubble. We determine whether it was 17314// cloned by comparing the child pointer. 17315var shouldBubbleActualDurations=completedWork.alternate===null||completedWork.child!==completedWork.alternate.child;var child=completedWork.child;while(child!==null){var childUpdateExpirationTime=child.expirationTime;var childChildExpirationTime=child.childExpirationTime;if(childUpdateExpirationTime>newChildExpirationTime){newChildExpirationTime=childUpdateExpirationTime;}if(childChildExpirationTime>newChildExpirationTime){newChildExpirationTime=childChildExpirationTime;}if(shouldBubbleActualDurations){actualDuration+=child.actualDuration;}treeBaseDuration+=child.treeBaseDuration;child=child.sibling;}completedWork.actualDuration=actualDuration;completedWork.treeBaseDuration=treeBaseDuration;}else{var _child=completedWork.child;while(_child!==null){var _childUpdateExpirationTime=_child.expirationTime;var _childChildExpirationTime=_child.childExpirationTime;if(_childUpdateExpirationTime>newChildExpirationTime){newChildExpirationTime=_childUpdateExpirationTime;}if(_childChildExpirationTime>newChildExpirationTime){newChildExpirationTime=_childChildExpirationTime;}_child=_child.sibling;}}completedWork.childExpirationTime=newChildExpirationTime;}function commitRoot(root){var renderPriorityLevel=getCurrentPriorityLevel();runWithPriority$1(ImmediatePriority,commitRootImpl.bind(null,root,renderPriorityLevel));return null;}function commitRootImpl(root,renderPriorityLevel){do{// `flushPassiveEffects` will call `flushSyncUpdateQueue` at the end, which 17316// means `flushPassiveEffects` will sometimes result in additional 17317// passive effects. So we need to keep flushing in a loop until there are 17318// no more pending effects. 17319// TODO: Might be better if `flushPassiveEffects` did not automatically 17320// flush synchronous work at the end, to avoid factoring hazards like this. 17321flushPassiveEffects();}while(rootWithPendingPassiveEffects!==null);flushRenderPhaseStrictModeWarningsInDEV();if(!((executionContext&(RenderContext|CommitContext))===NoContext)){{throw Error("Should not already be working.");}}var finishedWork=root.finishedWork;var expirationTime=root.finishedExpirationTime;if(finishedWork===null){return null;}root.finishedWork=null;root.finishedExpirationTime=NoWork;if(!(finishedWork!==root.current)){{throw Error("Cannot commit the same tree as before. This error is likely caused by a bug in React. Please file an issue.");}}// commitRoot never returns a continuation; it always finishes synchronously. 17322// So we can clear these now to allow a new callback to be scheduled. 17323root.callbackNode=null;root.callbackExpirationTime=NoWork;root.callbackPriority=NoPriority;root.nextKnownPendingLevel=NoWork;startCommitTimer();// Update the first and last pending times on this root. The new first 17324// pending time is whatever is left on the root fiber. 17325var remainingExpirationTimeBeforeCommit=getRemainingExpirationTime(finishedWork);markRootFinishedAtTime(root,expirationTime,remainingExpirationTimeBeforeCommit);if(root===workInProgressRoot){// We can reset these now that they are finished. 17326workInProgressRoot=null;workInProgress=null;renderExpirationTime$1=NoWork;}// This indicates that the last root we worked on is not the same one that 17327// we're committing now. This most commonly happens when a suspended root 17328// times out. 17329// Get the list of effects. 17330var firstEffect;if(finishedWork.effectTag>PerformedWork){// A fiber's effect list consists only of its children, not itself. So if 17331// the root has an effect, we need to add it to the end of the list. The 17332// resulting list is the set that would belong to the root's parent, if it 17333// had one; that is, all the effects in the tree including the root. 17334if(finishedWork.lastEffect!==null){finishedWork.lastEffect.nextEffect=finishedWork;firstEffect=finishedWork.firstEffect;}else{firstEffect=finishedWork;}}else{// There is no effect on the root. 17335firstEffect=finishedWork.firstEffect;}if(firstEffect!==null){var prevExecutionContext=executionContext;executionContext|=CommitContext;var prevInteractions=pushInteractions(root);// Reset this to null before calling lifecycles 17336ReactCurrentOwner$2.current=null;// The commit phase is broken into several sub-phases. We do a separate pass 17337// of the effect list for each phase: all mutation effects come before all 17338// layout effects, and so on. 17339// The first phase a "before mutation" phase. We use this phase to read the 17340// state of the host tree right before we mutate it. This is where 17341// getSnapshotBeforeUpdate is called. 17342startCommitSnapshotEffectsTimer();prepareForCommit(root.containerInfo);nextEffect=firstEffect;do{{invokeGuardedCallback(null,commitBeforeMutationEffects,null);if(hasCaughtError()){if(!(nextEffect!==null)){{throw Error("Should be working on an effect.");}}var error=clearCaughtError();captureCommitPhaseError(nextEffect,error);nextEffect=nextEffect.nextEffect;}}}while(nextEffect!==null);stopCommitSnapshotEffectsTimer();{// Mark the current commit time to be shared by all Profilers in this 17343// batch. This enables them to be grouped later. 17344recordCommitTime();}// The next phase is the mutation phase, where we mutate the host tree. 17345startCommitHostEffectsTimer();nextEffect=firstEffect;do{{invokeGuardedCallback(null,commitMutationEffects,null,root,renderPriorityLevel);if(hasCaughtError()){if(!(nextEffect!==null)){{throw Error("Should be working on an effect.");}}var _error=clearCaughtError();captureCommitPhaseError(nextEffect,_error);nextEffect=nextEffect.nextEffect;}}}while(nextEffect!==null);stopCommitHostEffectsTimer();resetAfterCommit(root.containerInfo);// The work-in-progress tree is now the current tree. This must come after 17346// the mutation phase, so that the previous tree is still current during 17347// componentWillUnmount, but before the layout phase, so that the finished 17348// work is current during componentDidMount/Update. 17349root.current=finishedWork;// The next phase is the layout phase, where we call effects that read 17350// the host tree after it's been mutated. The idiomatic use case for this is 17351// layout, but class component lifecycles also fire here for legacy reasons. 17352startCommitLifeCyclesTimer();nextEffect=firstEffect;do{{invokeGuardedCallback(null,commitLayoutEffects,null,root,expirationTime);if(hasCaughtError()){if(!(nextEffect!==null)){{throw Error("Should be working on an effect.");}}var _error2=clearCaughtError();captureCommitPhaseError(nextEffect,_error2);nextEffect=nextEffect.nextEffect;}}}while(nextEffect!==null);stopCommitLifeCyclesTimer();nextEffect=null;// Tell Scheduler to yield at the end of the frame, so the browser has an 17353// opportunity to paint. 17354requestPaint();{popInteractions(prevInteractions);}executionContext=prevExecutionContext;}else{// No effects. 17355root.current=finishedWork;// Measure these anyway so the flamegraph explicitly shows that there were 17356// no effects. 17357// TODO: Maybe there's a better way to report this. 17358startCommitSnapshotEffectsTimer();stopCommitSnapshotEffectsTimer();{recordCommitTime();}startCommitHostEffectsTimer();stopCommitHostEffectsTimer();startCommitLifeCyclesTimer();stopCommitLifeCyclesTimer();}stopCommitTimer();var rootDidHavePassiveEffects=rootDoesHavePassiveEffects;if(rootDoesHavePassiveEffects){// This commit has passive effects. Stash a reference to them. But don't 17359// schedule a callback until after flushing layout work. 17360rootDoesHavePassiveEffects=false;rootWithPendingPassiveEffects=root;pendingPassiveEffectsExpirationTime=expirationTime;pendingPassiveEffectsRenderPriority=renderPriorityLevel;}else{// We are done with the effect chain at this point so let's clear the 17361// nextEffect pointers to assist with GC. If we have passive effects, we'll 17362// clear this in flushPassiveEffects. 17363nextEffect=firstEffect;while(nextEffect!==null){var nextNextEffect=nextEffect.nextEffect;nextEffect.nextEffect=null;nextEffect=nextNextEffect;}}// Check if there's remaining work on this root 17364var remainingExpirationTime=root.firstPendingTime;if(remainingExpirationTime!==NoWork){{if(spawnedWorkDuringRender!==null){var expirationTimes=spawnedWorkDuringRender;spawnedWorkDuringRender=null;for(var i=0;i<expirationTimes.length;i++){scheduleInteractions(root,expirationTimes[i],root.memoizedInteractions);}}schedulePendingInteractions(root,remainingExpirationTime);}}else{// If there's no remaining work, we can clear the set of already failed 17365// error boundaries. 17366legacyErrorBoundariesThatAlreadyFailed=null;}{if(!rootDidHavePassiveEffects){// If there are no passive effects, then we can complete the pending interactions. 17367// Otherwise, we'll wait until after the passive effects are flushed. 17368// Wait to do this until after remaining work has been scheduled, 17369// so that we don't prematurely signal complete for interactions when there's e.g. hidden work. 17370finishPendingInteractions(root,expirationTime);}}if(remainingExpirationTime===Sync){// Count the number of times the root synchronously re-renders without 17371// finishing. If there are too many, it indicates an infinite update loop. 17372if(root===rootWithNestedUpdates){nestedUpdateCount++;}else{nestedUpdateCount=0;rootWithNestedUpdates=root;}}else{nestedUpdateCount=0;}onCommitRoot(finishedWork.stateNode,expirationTime);// Always call this before exiting `commitRoot`, to ensure that any 17373// additional work on this root is scheduled. 17374ensureRootIsScheduled(root);if(hasUncaughtError){hasUncaughtError=false;var _error3=firstUncaughtError;firstUncaughtError=null;throw _error3;}if((executionContext&LegacyUnbatchedContext)!==NoContext){// This is a legacy edge case. We just committed the initial mount of 17375// a ReactDOM.render-ed root inside of batchedUpdates. The commit fired 17376// synchronously, but layout updates should be deferred until the end 17377// of the batch. 17378return null;}// If layout work was scheduled, flush it now. 17379flushSyncCallbackQueue();return null;}function commitBeforeMutationEffects(){while(nextEffect!==null){var effectTag=nextEffect.effectTag;if((effectTag&Snapshot)!==NoEffect){setCurrentFiber(nextEffect);recordEffect();var current=nextEffect.alternate;commitBeforeMutationLifeCycles(current,nextEffect);resetCurrentFiber();}if((effectTag&Passive)!==NoEffect){// If there are passive effects, schedule a callback to flush at 17380// the earliest opportunity. 17381if(!rootDoesHavePassiveEffects){rootDoesHavePassiveEffects=true;scheduleCallback(NormalPriority,function(){flushPassiveEffects();return null;});}}nextEffect=nextEffect.nextEffect;}}function commitMutationEffects(root,renderPriorityLevel){// TODO: Should probably move the bulk of this function to commitWork. 17382while(nextEffect!==null){setCurrentFiber(nextEffect);var effectTag=nextEffect.effectTag;if(effectTag&ContentReset){commitResetTextContent(nextEffect);}if(effectTag&Ref){var current=nextEffect.alternate;if(current!==null){commitDetachRef(current);}}// The following switch statement is only concerned about placement, 17383// updates, and deletions. To avoid needing to add a case for every possible 17384// bitmap value, we remove the secondary effects from the effect tag and 17385// switch on that value. 17386var primaryEffectTag=effectTag&(Placement|Update|Deletion|Hydrating);switch(primaryEffectTag){case Placement:{commitPlacement(nextEffect);// Clear the "placement" from effect tag so that we know that this is 17387// inserted, before any life-cycles like componentDidMount gets called. 17388// TODO: findDOMNode doesn't rely on this any more but isMounted does 17389// and isMounted is deprecated anyway so we should be able to kill this. 17390nextEffect.effectTag&=~Placement;break;}case PlacementAndUpdate:{// Placement 17391commitPlacement(nextEffect);// Clear the "placement" from effect tag so that we know that this is 17392// inserted, before any life-cycles like componentDidMount gets called. 17393nextEffect.effectTag&=~Placement;// Update 17394var _current=nextEffect.alternate;commitWork(_current,nextEffect);break;}case Hydrating:{nextEffect.effectTag&=~Hydrating;break;}case HydratingAndUpdate:{nextEffect.effectTag&=~Hydrating;// Update 17395var _current2=nextEffect.alternate;commitWork(_current2,nextEffect);break;}case Update:{var _current3=nextEffect.alternate;commitWork(_current3,nextEffect);break;}case Deletion:{commitDeletion(root,nextEffect,renderPriorityLevel);break;}}// TODO: Only record a mutation effect if primaryEffectTag is non-zero. 17396recordEffect();resetCurrentFiber();nextEffect=nextEffect.nextEffect;}}function commitLayoutEffects(root,committedExpirationTime){// TODO: Should probably move the bulk of this function to commitWork. 17397while(nextEffect!==null){setCurrentFiber(nextEffect);var effectTag=nextEffect.effectTag;if(effectTag&(Update|Callback)){recordEffect();var current=nextEffect.alternate;commitLifeCycles(root,current,nextEffect);}if(effectTag&Ref){recordEffect();commitAttachRef(nextEffect);}resetCurrentFiber();nextEffect=nextEffect.nextEffect;}}function flushPassiveEffects(){if(pendingPassiveEffectsRenderPriority!==NoPriority){var priorityLevel=pendingPassiveEffectsRenderPriority>NormalPriority?NormalPriority:pendingPassiveEffectsRenderPriority;pendingPassiveEffectsRenderPriority=NoPriority;return runWithPriority$1(priorityLevel,flushPassiveEffectsImpl);}}function flushPassiveEffectsImpl(){if(rootWithPendingPassiveEffects===null){return false;}var root=rootWithPendingPassiveEffects;var expirationTime=pendingPassiveEffectsExpirationTime;rootWithPendingPassiveEffects=null;pendingPassiveEffectsExpirationTime=NoWork;if(!((executionContext&(RenderContext|CommitContext))===NoContext)){{throw Error("Cannot flush passive effects while already rendering.");}}var prevExecutionContext=executionContext;executionContext|=CommitContext;var prevInteractions=pushInteractions(root);{// Note: This currently assumes there are no passive effects on the root fiber 17398// because the root is not part of its own effect list. 17399// This could change in the future. 17400var _effect2=root.current.firstEffect;while(_effect2!==null){{setCurrentFiber(_effect2);invokeGuardedCallback(null,commitPassiveHookEffects,null,_effect2);if(hasCaughtError()){if(!(_effect2!==null)){{throw Error("Should be working on an effect.");}}var _error5=clearCaughtError();captureCommitPhaseError(_effect2,_error5);}resetCurrentFiber();}var nextNextEffect=_effect2.nextEffect;// Remove nextEffect pointer to assist GC 17401_effect2.nextEffect=null;_effect2=nextNextEffect;}}{popInteractions(prevInteractions);finishPendingInteractions(root,expirationTime);}executionContext=prevExecutionContext;flushSyncCallbackQueue();// If additional passive effects were scheduled, increment a counter. If this 17402// exceeds the limit, we'll fire a warning. 17403nestedPassiveUpdateCount=rootWithPendingPassiveEffects===null?0:nestedPassiveUpdateCount+1;return true;}function isAlreadyFailedLegacyErrorBoundary(instance){return legacyErrorBoundariesThatAlreadyFailed!==null&&legacyErrorBoundariesThatAlreadyFailed.has(instance);}function markLegacyErrorBoundaryAsFailed(instance){if(legacyErrorBoundariesThatAlreadyFailed===null){legacyErrorBoundariesThatAlreadyFailed=new Set([instance]);}else{legacyErrorBoundariesThatAlreadyFailed.add(instance);}}function prepareToThrowUncaughtError(error){if(!hasUncaughtError){hasUncaughtError=true;firstUncaughtError=error;}}var onUncaughtError=prepareToThrowUncaughtError;function captureCommitPhaseErrorOnRoot(rootFiber,sourceFiber,error){var errorInfo=createCapturedValue(error,sourceFiber);var update=createRootErrorUpdate(rootFiber,errorInfo,Sync);enqueueUpdate(rootFiber,update);var root=markUpdateTimeFromFiberToRoot(rootFiber,Sync);if(root!==null){ensureRootIsScheduled(root);schedulePendingInteractions(root,Sync);}}function captureCommitPhaseError(sourceFiber,error){if(sourceFiber.tag===HostRoot){// Error was thrown at the root. There is no parent, so the root 17404// itself should capture it. 17405captureCommitPhaseErrorOnRoot(sourceFiber,sourceFiber,error);return;}var fiber=sourceFiber.return;while(fiber!==null){if(fiber.tag===HostRoot){captureCommitPhaseErrorOnRoot(fiber,sourceFiber,error);return;}else if(fiber.tag===ClassComponent){var ctor=fiber.type;var instance=fiber.stateNode;if(typeof ctor.getDerivedStateFromError==='function'||typeof instance.componentDidCatch==='function'&&!isAlreadyFailedLegacyErrorBoundary(instance)){var errorInfo=createCapturedValue(error,sourceFiber);var update=createClassErrorUpdate(fiber,errorInfo,// TODO: This is always sync 17406Sync);enqueueUpdate(fiber,update);var root=markUpdateTimeFromFiberToRoot(fiber,Sync);if(root!==null){ensureRootIsScheduled(root);schedulePendingInteractions(root,Sync);}return;}}fiber=fiber.return;}}function pingSuspendedRoot(root,thenable,suspendedTime){var pingCache=root.pingCache;if(pingCache!==null){// The thenable resolved, so we no longer need to memoize, because it will 17407// never be thrown again. 17408pingCache.delete(thenable);}if(workInProgressRoot===root&&renderExpirationTime$1===suspendedTime){// Received a ping at the same priority level at which we're currently 17409// rendering. We might want to restart this render. This should mirror 17410// the logic of whether or not a root suspends once it completes. 17411// TODO: If we're rendering sync either due to Sync, Batched or expired, 17412// we should probably never restart. 17413// If we're suspended with delay, we'll always suspend so we can always 17414// restart. If we're suspended without any updates, it might be a retry. 17415// If it's early in the retry we can restart. We can't know for sure 17416// whether we'll eventually process an update during this render pass, 17417// but it's somewhat unlikely that we get to a ping before that, since 17418// getting to the root most update is usually very fast. 17419if(workInProgressRootExitStatus===RootSuspendedWithDelay||workInProgressRootExitStatus===RootSuspended&&workInProgressRootLatestProcessedExpirationTime===Sync&&now()-globalMostRecentFallbackTime<FALLBACK_THROTTLE_MS){// Restart from the root. Don't need to schedule a ping because 17420// we're already working on this tree. 17421prepareFreshStack(root,renderExpirationTime$1);}else{// Even though we can't restart right now, we might get an 17422// opportunity later. So we mark this render as having a ping. 17423workInProgressRootHasPendingPing=true;}return;}if(!isRootSuspendedAtTime(root,suspendedTime)){// The root is no longer suspended at this time. 17424return;}var lastPingedTime=root.lastPingedTime;if(lastPingedTime!==NoWork&&lastPingedTime<suspendedTime){// There's already a lower priority ping scheduled. 17425return;}// Mark the time at which this ping was scheduled. 17426root.lastPingedTime=suspendedTime;ensureRootIsScheduled(root);schedulePendingInteractions(root,suspendedTime);}function retryTimedOutBoundary(boundaryFiber,retryTime){// The boundary fiber (a Suspense component or SuspenseList component) 17427// previously was rendered in its fallback state. One of the promises that 17428// suspended it has resolved, which means at least part of the tree was 17429// likely unblocked. Try rendering again, at a new expiration time. 17430if(retryTime===NoWork){var suspenseConfig=null;// Retries don't carry over the already committed update. 17431var currentTime=requestCurrentTimeForUpdate();retryTime=computeExpirationForFiber(currentTime,boundaryFiber,suspenseConfig);}// TODO: Special case idle priority? 17432var root=markUpdateTimeFromFiberToRoot(boundaryFiber,retryTime);if(root!==null){ensureRootIsScheduled(root);schedulePendingInteractions(root,retryTime);}}function resolveRetryThenable(boundaryFiber,thenable){var retryTime=NoWork;// Default 17433var retryCache;{retryCache=boundaryFiber.stateNode;}if(retryCache!==null){// The thenable resolved, so we no longer need to memoize, because it will 17434// never be thrown again. 17435retryCache.delete(thenable);}retryTimedOutBoundary(boundaryFiber,retryTime);}// Computes the next Just Noticeable Difference (JND) boundary. 17436// The theory is that a person can't tell the difference between small differences in time. 17437// Therefore, if we wait a bit longer than necessary that won't translate to a noticeable 17438// difference in the experience. However, waiting for longer might mean that we can avoid 17439// showing an intermediate loading state. The longer we have already waited, the harder it 17440// is to tell small differences in time. Therefore, the longer we've already waited, 17441// the longer we can wait additionally. At some point we have to give up though. 17442// We pick a train model where the next boundary commits at a consistent schedule. 17443// These particular numbers are vague estimates. We expect to adjust them based on research. 17444function jnd(timeElapsed){return timeElapsed<120?120:timeElapsed<480?480:timeElapsed<1080?1080:timeElapsed<1920?1920:timeElapsed<3000?3000:timeElapsed<4320?4320:ceil(timeElapsed/1960)*1960;}function computeMsUntilSuspenseLoadingDelay(mostRecentEventTime,committedExpirationTime,suspenseConfig){var busyMinDurationMs=suspenseConfig.busyMinDurationMs|0;if(busyMinDurationMs<=0){return 0;}var busyDelayMs=suspenseConfig.busyDelayMs|0;// Compute the time until this render pass would expire. 17445var currentTimeMs=now();var eventTimeMs=inferTimeFromExpirationTimeWithSuspenseConfig(mostRecentEventTime,suspenseConfig);var timeElapsed=currentTimeMs-eventTimeMs;if(timeElapsed<=busyDelayMs){// If we haven't yet waited longer than the initial delay, we don't 17446// have to wait any additional time. 17447return 0;}var msUntilTimeout=busyDelayMs+busyMinDurationMs-timeElapsed;// This is the value that is passed to `setTimeout`. 17448return msUntilTimeout;}function checkForNestedUpdates(){if(nestedUpdateCount>NESTED_UPDATE_LIMIT){nestedUpdateCount=0;rootWithNestedUpdates=null;{{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.");}}}{if(nestedPassiveUpdateCount>NESTED_PASSIVE_UPDATE_LIMIT){nestedPassiveUpdateCount=0;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.');}}}function flushRenderPhaseStrictModeWarningsInDEV(){{ReactStrictModeWarnings.flushLegacyContextWarning();{ReactStrictModeWarnings.flushPendingUnsafeLifecycleWarnings();}}}function stopFinishedWorkLoopTimer(){var didCompleteRoot=true;stopWorkLoopTimer(interruptedBy,didCompleteRoot);interruptedBy=null;}function stopInterruptedWorkLoopTimer(){// TODO: Track which fiber caused the interruption. 17449var didCompleteRoot=false;stopWorkLoopTimer(interruptedBy,didCompleteRoot);interruptedBy=null;}function checkForInterruption(fiberThatReceivedUpdate,updateExpirationTime){if(workInProgressRoot!==null&&updateExpirationTime>renderExpirationTime$1){interruptedBy=fiberThatReceivedUpdate;}}var didWarnStateUpdateForUnmountedComponent=null;function warnAboutUpdateOnUnmountedFiberInDEV(fiber){{var tag=fiber.tag;if(tag!==HostRoot&&tag!==ClassComponent&&tag!==FunctionComponent&&tag!==ForwardRef&&tag!==MemoComponent&&tag!==SimpleMemoComponent&&tag!==Block){// Only warn for user-defined components, not internal ones like Suspense. 17450return;}// the problematic code almost always lies inside that component. 17451var componentName=getComponentName(fiber.type)||'ReactComponent';if(didWarnStateUpdateForUnmountedComponent!==null){if(didWarnStateUpdateForUnmountedComponent.has(componentName)){return;}didWarnStateUpdateForUnmountedComponent.add(componentName);}else{didWarnStateUpdateForUnmountedComponent=new Set([componentName]);}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));}}var beginWork$1;{var dummyFiber=null;beginWork$1=function(current,unitOfWork,expirationTime){// If a component throws an error, we replay it again in a synchronously 17452// dispatched event, so that the debugger will treat it as an uncaught 17453// error See ReactErrorUtils for more information. 17454// Before entering the begin phase, copy the work-in-progress onto a dummy 17455// fiber. If beginWork throws, we'll use this to reset the state. 17456var originalWorkInProgressCopy=assignFiberPropertiesInDEV(dummyFiber,unitOfWork);try{return beginWork(current,unitOfWork,expirationTime);}catch(originalError){if(originalError!==null&&typeof originalError==='object'&&typeof originalError.then==='function'){// Don't replay promises. Treat everything else like an error. 17457throw originalError;}// Keep this code in sync with handleError; any changes here must have 17458// corresponding changes there. 17459resetContextDependencies();resetHooksAfterThrow();// Don't reset current debug fiber, since we're about to work on the 17460// same fiber again. 17461// Unwind the failed stack frame 17462unwindInterruptedWork(unitOfWork);// Restore the original properties of the fiber. 17463assignFiberPropertiesInDEV(unitOfWork,originalWorkInProgressCopy);if(unitOfWork.mode&ProfileMode){// Reset the profiler timer. 17464startProfilerTimer(unitOfWork);}// Run beginWork again. 17465invokeGuardedCallback(null,beginWork,null,current,unitOfWork,expirationTime);if(hasCaughtError()){var replayError=clearCaughtError();// `invokeGuardedCallback` sometimes sets an expando `_suppressLogging`. 17466// Rethrow this error instead of the original one. 17467throw replayError;}else{// This branch is reachable if the render phase is impure. 17468throw originalError;}}};}var didWarnAboutUpdateInRender=false;var didWarnAboutUpdateInRenderForAnotherComponent;{didWarnAboutUpdateInRenderForAnotherComponent=new Set();}function warnAboutRenderPhaseUpdatesInDEV(fiber){{if(isRendering&&(executionContext&RenderContext)!==NoContext){switch(fiber.tag){case FunctionComponent:case ForwardRef:case SimpleMemoComponent:{var renderingComponentName=workInProgress&&getComponentName(workInProgress.type)||'Unknown';// Dedupe by the rendering component because it's the one that needs to be fixed. 17469var dedupeKey=renderingComponentName;if(!didWarnAboutUpdateInRenderForAnotherComponent.has(dedupeKey)){didWarnAboutUpdateInRenderForAnotherComponent.add(dedupeKey);var setStateComponentName=getComponentName(fiber.type)||'Unknown';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);}break;}case ClassComponent:{if(!didWarnAboutUpdateInRender){error('Cannot update during an existing state transition (such as '+'within `render`). Render methods should be a pure '+'function of props and state.');didWarnAboutUpdateInRender=true;}break;}}}}}// a 'shared' variable that changes when act() opens/closes in tests. 17470var IsThisRendererActing={current:false};function warnIfNotScopedWithMatchingAct(fiber){{if(IsSomeRendererActing.current===true&&IsThisRendererActing.current!==true){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));}}}function warnIfNotCurrentlyActingEffectsInDEV(fiber){{if((fiber.mode&StrictMode)!==NoMode&&IsSomeRendererActing.current===false&&IsThisRendererActing.current===false){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));}}}function warnIfNotCurrentlyActingUpdatesInDEV(fiber){{if(executionContext===NoContext&&IsSomeRendererActing.current===false&&IsThisRendererActing.current===false){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));}}}var warnIfNotCurrentlyActingUpdatesInDev=warnIfNotCurrentlyActingUpdatesInDEV;// In tests, we want to enforce a mocked scheduler. 17471var didWarnAboutUnmockedScheduler=false;// TODO Before we release concurrent mode, revisit this and decide whether a mocked 17472// scheduler is the actual recommendation. The alternative could be a testing build, 17473// a new lib, or whatever; we dunno just yet. This message is for early adopters 17474// to get their tests right. 17475function warnIfUnmockedScheduler(fiber){{if(didWarnAboutUnmockedScheduler===false&&Scheduler.unstable_flushAllWithoutAsserting===undefined){if(fiber.mode&BlockingMode||fiber.mode&ConcurrentMode){didWarnAboutUnmockedScheduler=true;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');}}}}function computeThreadID(root,expirationTime){// Interaction threads are unique per root and expiration time. 17476return expirationTime*1000+root.interactionThreadID;}function markSpawnedWork(expirationTime){if(spawnedWorkDuringRender===null){spawnedWorkDuringRender=[expirationTime];}else{spawnedWorkDuringRender.push(expirationTime);}}function scheduleInteractions(root,expirationTime,interactions){if(interactions.size>0){var pendingInteractionMap=root.pendingInteractionMap;var pendingInteractions=pendingInteractionMap.get(expirationTime);if(pendingInteractions!=null){interactions.forEach(function(interaction){if(!pendingInteractions.has(interaction)){// Update the pending async work count for previously unscheduled interaction. 17477interaction.__count++;}pendingInteractions.add(interaction);});}else{pendingInteractionMap.set(expirationTime,new Set(interactions));// Update the pending async work count for the current interactions. 17478interactions.forEach(function(interaction){interaction.__count++;});}var subscriber=tracing.__subscriberRef.current;if(subscriber!==null){var threadID=computeThreadID(root,expirationTime);subscriber.onWorkScheduled(interactions,threadID);}}}function schedulePendingInteractions(root,expirationTime){scheduleInteractions(root,expirationTime,tracing.__interactionsRef.current);}function startWorkOnPendingInteractions(root,expirationTime){// we can accurately attribute time spent working on it, And so that cascading 17479// work triggered during the render phase will be associated with it. 17480var interactions=new Set();root.pendingInteractionMap.forEach(function(scheduledInteractions,scheduledExpirationTime){if(scheduledExpirationTime>=expirationTime){scheduledInteractions.forEach(function(interaction){return interactions.add(interaction);});}});// Store the current set of interactions on the FiberRoot for a few reasons: 17481// We can re-use it in hot functions like performConcurrentWorkOnRoot() 17482// without having to recalculate it. We will also use it in commitWork() to 17483// pass to any Profiler onRender() hooks. This also provides DevTools with a 17484// way to access it when the onCommitRoot() hook is called. 17485root.memoizedInteractions=interactions;if(interactions.size>0){var subscriber=tracing.__subscriberRef.current;if(subscriber!==null){var threadID=computeThreadID(root,expirationTime);try{subscriber.onWorkStarted(interactions,threadID);}catch(error){// If the subscriber throws, rethrow it in a separate task 17486scheduleCallback(ImmediatePriority,function(){throw error;});}}}}function finishPendingInteractions(root,committedExpirationTime){var earliestRemainingTimeAfterCommit=root.firstPendingTime;var subscriber;try{subscriber=tracing.__subscriberRef.current;if(subscriber!==null&&root.memoizedInteractions.size>0){var threadID=computeThreadID(root,committedExpirationTime);subscriber.onWorkStopped(root.memoizedInteractions,threadID);}}catch(error){// If the subscriber throws, rethrow it in a separate task 17487scheduleCallback(ImmediatePriority,function(){throw error;});}finally{// Clear completed interactions from the pending Map. 17488// Unless the render was suspended or cascading work was scheduled, 17489// In which caseâ leave pending interactions until the subsequent render. 17490var pendingInteractionMap=root.pendingInteractionMap;pendingInteractionMap.forEach(function(scheduledInteractions,scheduledExpirationTime){// Only decrement the pending interaction count if we're done. 17491// If there's still work at the current priority, 17492// That indicates that we are waiting for suspense data. 17493if(scheduledExpirationTime>earliestRemainingTimeAfterCommit){pendingInteractionMap.delete(scheduledExpirationTime);scheduledInteractions.forEach(function(interaction){interaction.__count--;if(subscriber!==null&&interaction.__count===0){try{subscriber.onInteractionScheduledWorkCompleted(interaction);}catch(error){// If the subscriber throws, rethrow it in a separate task 17494scheduleCallback(ImmediatePriority,function(){throw error;});}}});}});}}var onScheduleFiberRoot=null;var onCommitFiberRoot=null;var onCommitFiberUnmount=null;var hasLoggedError=false;var isDevToolsPresent=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__!=='undefined';function injectInternals(internals){if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__==='undefined'){// No DevTools 17495return false;}var hook=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(hook.isDisabled){// This isn't a real property on the hook, but it can be set to opt out 17496// of DevTools integration and associated warnings and logs. 17497// https://github.com/facebook/react/issues/3877 17498return true;}if(!hook.supportsFiber){{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');}// DevTools exists, even though it doesn't support Fiber. 17499return true;}try{var rendererID=hook.inject(internals);// We have successfully injected, so now it is safe to set up hooks. 17500if(true){// Only used by Fast Refresh 17501if(typeof hook.onScheduleFiberRoot==='function'){onScheduleFiberRoot=function(root,children){try{hook.onScheduleFiberRoot(rendererID,root,children);}catch(err){if( true&&!hasLoggedError){hasLoggedError=true;error('React instrumentation encountered an error: %s',err);}}};}}onCommitFiberRoot=function(root,expirationTime){try{var didError=(root.current.effectTag&DidCapture)===DidCapture;if(enableProfilerTimer){var currentTime=getCurrentTime();var priorityLevel=inferPriorityFromExpirationTime(currentTime,expirationTime);hook.onCommitFiberRoot(rendererID,root,priorityLevel,didError);}else{hook.onCommitFiberRoot(rendererID,root,undefined,didError);}}catch(err){if(true){if(!hasLoggedError){hasLoggedError=true;error('React instrumentation encountered an error: %s',err);}}}};onCommitFiberUnmount=function(fiber){try{hook.onCommitFiberUnmount(rendererID,fiber);}catch(err){if(true){if(!hasLoggedError){hasLoggedError=true;error('React instrumentation encountered an error: %s',err);}}}};}catch(err){// Catch all errors because it is unsafe to throw during initialization. 17502{error('React instrumentation encountered an error: %s.',err);}}// DevTools exists 17503return true;}function onScheduleRoot(root,children){if(typeof onScheduleFiberRoot==='function'){onScheduleFiberRoot(root,children);}}function onCommitRoot(root,expirationTime){if(typeof onCommitFiberRoot==='function'){onCommitFiberRoot(root,expirationTime);}}function onCommitUnmount(fiber){if(typeof onCommitFiberUnmount==='function'){onCommitFiberUnmount(fiber);}}var hasBadMapPolyfill;{hasBadMapPolyfill=false;try{var nonExtensibleObject=Object.preventExtensions({});var testMap=new Map([[nonExtensibleObject,null]]);var testSet=new Set([nonExtensibleObject]);// This is necessary for Rollup to not consider these unused. 17504// https://github.com/rollup/rollup/issues/1771 17505// TODO: we can remove these if Rollup fixes the bug. 17506testMap.set(0,0);testSet.add(0);}catch(e){// TODO: Consider warning about bad polyfills 17507hasBadMapPolyfill=true;}}var debugCounter=1;function FiberNode(tag,pendingProps,key,mode){// Instance 17508this.tag=tag;this.key=key;this.elementType=null;this.type=null;this.stateNode=null;// Fiber 17509this.return=null;this.child=null;this.sibling=null;this.index=0;this.ref=null;this.pendingProps=pendingProps;this.memoizedProps=null;this.updateQueue=null;this.memoizedState=null;this.dependencies=null;this.mode=mode;// Effects 17510this.effectTag=NoEffect;this.nextEffect=null;this.firstEffect=null;this.lastEffect=null;this.expirationTime=NoWork;this.childExpirationTime=NoWork;this.alternate=null;{// Note: The following is done to avoid a v8 performance cliff. 17511// 17512// Initializing the fields below to smis and later updating them with 17513// double values will cause Fibers to end up having separate shapes. 17514// This behavior/bug has something to do with Object.preventExtension(). 17515// Fortunately this only impacts DEV builds. 17516// Unfortunately it makes React unusably slow for some applications. 17517// To work around this, initialize the fields below with doubles. 17518// 17519// Learn more about this here: 17520// https://github.com/facebook/react/issues/14365 17521// https://bugs.chromium.org/p/v8/issues/detail?id=8538 17522this.actualDuration=Number.NaN;this.actualStartTime=Number.NaN;this.selfBaseDuration=Number.NaN;this.treeBaseDuration=Number.NaN;// It's okay to replace the initial doubles with smis after initialization. 17523// This won't trigger the performance cliff mentioned above, 17524// and it simplifies other profiler code (including DevTools). 17525this.actualDuration=0;this.actualStartTime=-1;this.selfBaseDuration=0;this.treeBaseDuration=0;}// This is normally DEV-only except www when it adds listeners. 17526// TODO: remove the User Timing integration in favor of Root Events. 17527{this._debugID=debugCounter++;this._debugIsCurrentlyTiming=false;}{this._debugSource=null;this._debugOwner=null;this._debugNeedsRemount=false;this._debugHookTypes=null;if(!hasBadMapPolyfill&&typeof Object.preventExtensions==='function'){Object.preventExtensions(this);}}}// This is a constructor function, rather than a POJO constructor, still 17528// please ensure we do the following: 17529// 1) Nobody should add any instance methods on this. Instance methods can be 17530// more difficult to predict when they get optimized and they are almost 17531// never inlined properly in static compilers. 17532// 2) Nobody should rely on `instanceof Fiber` for type testing. We should 17533// always know when it is a fiber. 17534// 3) We might want to experiment with using numeric keys since they are easier 17535// to optimize in a non-JIT environment. 17536// 4) We can easily go from a constructor to a createFiber object literal if that 17537// is faster. 17538// 5) It should be easy to port this to a C struct and keep a C implementation 17539// compatible. 17540var createFiber=function(tag,pendingProps,key,mode){// $FlowFixMe: the shapes are exact here but Flow doesn't like constructors 17541return new FiberNode(tag,pendingProps,key,mode);};function shouldConstruct(Component){var prototype=Component.prototype;return!!(prototype&&prototype.isReactComponent);}function isSimpleFunctionComponent(type){return typeof type==='function'&&!shouldConstruct(type)&&type.defaultProps===undefined;}function resolveLazyComponentTag(Component){if(typeof Component==='function'){return shouldConstruct(Component)?ClassComponent:FunctionComponent;}else if(Component!==undefined&&Component!==null){var $$typeof=Component.$$typeof;if($$typeof===REACT_FORWARD_REF_TYPE){return ForwardRef;}if($$typeof===REACT_MEMO_TYPE){return MemoComponent;}}return IndeterminateComponent;}// This is used to create an alternate fiber to do work on. 17542function createWorkInProgress(current,pendingProps){var workInProgress=current.alternate;if(workInProgress===null){// We use a double buffering pooling technique because we know that we'll 17543// only ever need at most two versions of a tree. We pool the "other" unused 17544// node that we're free to reuse. This is lazily created to avoid allocating 17545// extra objects for things that are never updated. It also allow us to 17546// reclaim the extra memory if needed. 17547workInProgress=createFiber(current.tag,pendingProps,current.key,current.mode);workInProgress.elementType=current.elementType;workInProgress.type=current.type;workInProgress.stateNode=current.stateNode;{// DEV-only fields 17548{workInProgress._debugID=current._debugID;}workInProgress._debugSource=current._debugSource;workInProgress._debugOwner=current._debugOwner;workInProgress._debugHookTypes=current._debugHookTypes;}workInProgress.alternate=current;current.alternate=workInProgress;}else{workInProgress.pendingProps=pendingProps;// We already have an alternate. 17549// Reset the effect tag. 17550workInProgress.effectTag=NoEffect;// The effect list is no longer valid. 17551workInProgress.nextEffect=null;workInProgress.firstEffect=null;workInProgress.lastEffect=null;{// We intentionally reset, rather than copy, actualDuration & actualStartTime. 17552// This prevents time from endlessly accumulating in new commits. 17553// This has the downside of resetting values for different priority renders, 17554// But works for yielding (the common case) and should support resuming. 17555workInProgress.actualDuration=0;workInProgress.actualStartTime=-1;}}workInProgress.childExpirationTime=current.childExpirationTime;workInProgress.expirationTime=current.expirationTime;workInProgress.child=current.child;workInProgress.memoizedProps=current.memoizedProps;workInProgress.memoizedState=current.memoizedState;workInProgress.updateQueue=current.updateQueue;// Clone the dependencies object. This is mutated during the render phase, so 17556// it cannot be shared with the current fiber. 17557var currentDependencies=current.dependencies;workInProgress.dependencies=currentDependencies===null?null:{expirationTime:currentDependencies.expirationTime,firstContext:currentDependencies.firstContext,responders:currentDependencies.responders};// These will be overridden during the parent's reconciliation 17558workInProgress.sibling=current.sibling;workInProgress.index=current.index;workInProgress.ref=current.ref;{workInProgress.selfBaseDuration=current.selfBaseDuration;workInProgress.treeBaseDuration=current.treeBaseDuration;}{workInProgress._debugNeedsRemount=current._debugNeedsRemount;switch(workInProgress.tag){case IndeterminateComponent:case FunctionComponent:case SimpleMemoComponent:workInProgress.type=resolveFunctionForHotReloading(current.type);break;case ClassComponent:workInProgress.type=resolveClassForHotReloading(current.type);break;case ForwardRef:workInProgress.type=resolveForwardRefForHotReloading(current.type);break;}}return workInProgress;}// Used to reuse a Fiber for a second pass. 17559function resetWorkInProgress(workInProgress,renderExpirationTime){// This resets the Fiber to what createFiber or createWorkInProgress would 17560// have set the values to before during the first pass. Ideally this wouldn't 17561// be necessary but unfortunately many code paths reads from the workInProgress 17562// when they should be reading from current and writing to workInProgress. 17563// We assume pendingProps, index, key, ref, return are still untouched to 17564// avoid doing another reconciliation. 17565// Reset the effect tag but keep any Placement tags, since that's something 17566// that child fiber is setting, not the reconciliation. 17567workInProgress.effectTag&=Placement;// The effect list is no longer valid. 17568workInProgress.nextEffect=null;workInProgress.firstEffect=null;workInProgress.lastEffect=null;var current=workInProgress.alternate;if(current===null){// Reset to createFiber's initial values. 17569workInProgress.childExpirationTime=NoWork;workInProgress.expirationTime=renderExpirationTime;workInProgress.child=null;workInProgress.memoizedProps=null;workInProgress.memoizedState=null;workInProgress.updateQueue=null;workInProgress.dependencies=null;{// Note: We don't reset the actualTime counts. It's useful to accumulate 17570// actual time across multiple render passes. 17571workInProgress.selfBaseDuration=0;workInProgress.treeBaseDuration=0;}}else{// Reset to the cloned values that createWorkInProgress would've. 17572workInProgress.childExpirationTime=current.childExpirationTime;workInProgress.expirationTime=current.expirationTime;workInProgress.child=current.child;workInProgress.memoizedProps=current.memoizedProps;workInProgress.memoizedState=current.memoizedState;workInProgress.updateQueue=current.updateQueue;// Clone the dependencies object. This is mutated during the render phase, so 17573// it cannot be shared with the current fiber. 17574var currentDependencies=current.dependencies;workInProgress.dependencies=currentDependencies===null?null:{expirationTime:currentDependencies.expirationTime,firstContext:currentDependencies.firstContext,responders:currentDependencies.responders};{// Note: We don't reset the actualTime counts. It's useful to accumulate 17575// actual time across multiple render passes. 17576workInProgress.selfBaseDuration=current.selfBaseDuration;workInProgress.treeBaseDuration=current.treeBaseDuration;}}return workInProgress;}function createHostRootFiber(tag){var mode;if(tag===ConcurrentRoot){mode=ConcurrentMode|BlockingMode|StrictMode;}else if(tag===BlockingRoot){mode=BlockingMode|StrictMode;}else{mode=NoMode;}if(isDevToolsPresent){// Always collect profile timings when DevTools are present. 17577// This enables DevTools to start capturing timing at any pointâ 17578// Without some nodes in the tree having empty base times. 17579mode|=ProfileMode;}return createFiber(HostRoot,null,null,mode);}function createFiberFromTypeAndProps(type,// React$ElementType 17580key,pendingProps,owner,mode,expirationTime){var fiber;var fiberTag=IndeterminateComponent;// The resolved type is set if we know what the final type will be. I.e. it's not lazy. 17581var resolvedType=type;if(typeof type==='function'){if(shouldConstruct(type)){fiberTag=ClassComponent;{resolvedType=resolveClassForHotReloading(resolvedType);}}else{{resolvedType=resolveFunctionForHotReloading(resolvedType);}}}else if(typeof type==='string'){fiberTag=HostComponent;}else{getTag:switch(type){case REACT_FRAGMENT_TYPE:return createFiberFromFragment(pendingProps.children,mode,expirationTime,key);case REACT_CONCURRENT_MODE_TYPE:fiberTag=Mode;mode|=ConcurrentMode|BlockingMode|StrictMode;break;case REACT_STRICT_MODE_TYPE:fiberTag=Mode;mode|=StrictMode;break;case REACT_PROFILER_TYPE:return createFiberFromProfiler(pendingProps,mode,expirationTime,key);case REACT_SUSPENSE_TYPE:return createFiberFromSuspense(pendingProps,mode,expirationTime,key);case REACT_SUSPENSE_LIST_TYPE:return createFiberFromSuspenseList(pendingProps,mode,expirationTime,key);default:{if(typeof type==='object'&&type!==null){switch(type.$$typeof){case REACT_PROVIDER_TYPE:fiberTag=ContextProvider;break getTag;case REACT_CONTEXT_TYPE:// This is a consumer 17582fiberTag=ContextConsumer;break getTag;case REACT_FORWARD_REF_TYPE:fiberTag=ForwardRef;{resolvedType=resolveForwardRefForHotReloading(resolvedType);}break getTag;case REACT_MEMO_TYPE:fiberTag=MemoComponent;break getTag;case REACT_LAZY_TYPE:fiberTag=LazyComponent;resolvedType=null;break getTag;case REACT_BLOCK_TYPE:fiberTag=Block;break getTag;}}var info='';{if(type===undefined||typeof type==='object'&&type!==null&&Object.keys(type).length===0){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.';}var ownerName=owner?getComponentName(owner.type):null;if(ownerName){info+='\n\nCheck the render method of `'+ownerName+'`.';}}{{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);}}}}}fiber=createFiber(fiberTag,pendingProps,key,mode);fiber.elementType=type;fiber.type=resolvedType;fiber.expirationTime=expirationTime;return fiber;}function createFiberFromElement(element,mode,expirationTime){var owner=null;{owner=element._owner;}var type=element.type;var key=element.key;var pendingProps=element.props;var fiber=createFiberFromTypeAndProps(type,key,pendingProps,owner,mode,expirationTime);{fiber._debugSource=element._source;fiber._debugOwner=element._owner;}return fiber;}function createFiberFromFragment(elements,mode,expirationTime,key){var fiber=createFiber(Fragment,elements,key,mode);fiber.expirationTime=expirationTime;return fiber;}function createFiberFromProfiler(pendingProps,mode,expirationTime,key){{if(typeof pendingProps.id!=='string'||typeof pendingProps.onRender!=='function'){error('Profiler must specify an "id" string and "onRender" function as props');}}var fiber=createFiber(Profiler,pendingProps,key,mode|ProfileMode);// TODO: The Profiler fiber shouldn't have a type. It has a tag. 17583fiber.elementType=REACT_PROFILER_TYPE;fiber.type=REACT_PROFILER_TYPE;fiber.expirationTime=expirationTime;return fiber;}function createFiberFromSuspense(pendingProps,mode,expirationTime,key){var fiber=createFiber(SuspenseComponent,pendingProps,key,mode);// TODO: The SuspenseComponent fiber shouldn't have a type. It has a tag. 17584// This needs to be fixed in getComponentName so that it relies on the tag 17585// instead. 17586fiber.type=REACT_SUSPENSE_TYPE;fiber.elementType=REACT_SUSPENSE_TYPE;fiber.expirationTime=expirationTime;return fiber;}function createFiberFromSuspenseList(pendingProps,mode,expirationTime,key){var fiber=createFiber(SuspenseListComponent,pendingProps,key,mode);{// TODO: The SuspenseListComponent fiber shouldn't have a type. It has a tag. 17587// This needs to be fixed in getComponentName so that it relies on the tag 17588// instead. 17589fiber.type=REACT_SUSPENSE_LIST_TYPE;}fiber.elementType=REACT_SUSPENSE_LIST_TYPE;fiber.expirationTime=expirationTime;return fiber;}function createFiberFromText(content,mode,expirationTime){var fiber=createFiber(HostText,content,null,mode);fiber.expirationTime=expirationTime;return fiber;}function createFiberFromHostInstanceForDeletion(){var fiber=createFiber(HostComponent,null,null,NoMode);// TODO: These should not need a type. 17590fiber.elementType='DELETED';fiber.type='DELETED';return fiber;}function createFiberFromPortal(portal,mode,expirationTime){var pendingProps=portal.children!==null?portal.children:[];var fiber=createFiber(HostPortal,pendingProps,portal.key,mode);fiber.expirationTime=expirationTime;fiber.stateNode={containerInfo:portal.containerInfo,pendingChildren:null,// Used by persistent updates 17591implementation:portal.implementation};return fiber;}// Used for stashing WIP properties to replay failed work in DEV. 17592function assignFiberPropertiesInDEV(target,source){if(target===null){// This Fiber's initial properties will always be overwritten. 17593// We only use a Fiber to ensure the same hidden class so DEV isn't slow. 17594target=createFiber(IndeterminateComponent,null,null,NoMode);}// This is intentionally written as a list of all properties. 17595// We tried to use Object.assign() instead but this is called in 17596// the hottest path, and Object.assign() was too slow: 17597// https://github.com/facebook/react/issues/12502 17598// This code is DEV-only so size is not a concern. 17599target.tag=source.tag;target.key=source.key;target.elementType=source.elementType;target.type=source.type;target.stateNode=source.stateNode;target.return=source.return;target.child=source.child;target.sibling=source.sibling;target.index=source.index;target.ref=source.ref;target.pendingProps=source.pendingProps;target.memoizedProps=source.memoizedProps;target.updateQueue=source.updateQueue;target.memoizedState=source.memoizedState;target.dependencies=source.dependencies;target.mode=source.mode;target.effectTag=source.effectTag;target.nextEffect=source.nextEffect;target.firstEffect=source.firstEffect;target.lastEffect=source.lastEffect;target.expirationTime=source.expirationTime;target.childExpirationTime=source.childExpirationTime;target.alternate=source.alternate;{target.actualDuration=source.actualDuration;target.actualStartTime=source.actualStartTime;target.selfBaseDuration=source.selfBaseDuration;target.treeBaseDuration=source.treeBaseDuration;}{target._debugID=source._debugID;}target._debugSource=source._debugSource;target._debugOwner=source._debugOwner;target._debugIsCurrentlyTiming=source._debugIsCurrentlyTiming;target._debugNeedsRemount=source._debugNeedsRemount;target._debugHookTypes=source._debugHookTypes;return target;}function FiberRootNode(containerInfo,tag,hydrate){this.tag=tag;this.current=null;this.containerInfo=containerInfo;this.pendingChildren=null;this.pingCache=null;this.finishedExpirationTime=NoWork;this.finishedWork=null;this.timeoutHandle=noTimeout;this.context=null;this.pendingContext=null;this.hydrate=hydrate;this.callbackNode=null;this.callbackPriority=NoPriority;this.firstPendingTime=NoWork;this.firstSuspendedTime=NoWork;this.lastSuspendedTime=NoWork;this.nextKnownPendingLevel=NoWork;this.lastPingedTime=NoWork;this.lastExpiredTime=NoWork;{this.interactionThreadID=tracing.unstable_getThreadID();this.memoizedInteractions=new Set();this.pendingInteractionMap=new Map();}}function createFiberRoot(containerInfo,tag,hydrate,hydrationCallbacks){var root=new FiberRootNode(containerInfo,tag,hydrate);// stateNode is any. 17600var uninitializedFiber=createHostRootFiber(tag);root.current=uninitializedFiber;uninitializedFiber.stateNode=root;initializeUpdateQueue(uninitializedFiber);return root;}function isRootSuspendedAtTime(root,expirationTime){var firstSuspendedTime=root.firstSuspendedTime;var lastSuspendedTime=root.lastSuspendedTime;return firstSuspendedTime!==NoWork&&firstSuspendedTime>=expirationTime&&lastSuspendedTime<=expirationTime;}function markRootSuspendedAtTime(root,expirationTime){var firstSuspendedTime=root.firstSuspendedTime;var lastSuspendedTime=root.lastSuspendedTime;if(firstSuspendedTime<expirationTime){root.firstSuspendedTime=expirationTime;}if(lastSuspendedTime>expirationTime||firstSuspendedTime===NoWork){root.lastSuspendedTime=expirationTime;}if(expirationTime<=root.lastPingedTime){root.lastPingedTime=NoWork;}if(expirationTime<=root.lastExpiredTime){root.lastExpiredTime=NoWork;}}function markRootUpdatedAtTime(root,expirationTime){// Update the range of pending times 17601var firstPendingTime=root.firstPendingTime;if(expirationTime>firstPendingTime){root.firstPendingTime=expirationTime;}// Update the range of suspended times. Treat everything lower priority or 17602// equal to this update as unsuspended. 17603var firstSuspendedTime=root.firstSuspendedTime;if(firstSuspendedTime!==NoWork){if(expirationTime>=firstSuspendedTime){// The entire suspended range is now unsuspended. 17604root.firstSuspendedTime=root.lastSuspendedTime=root.nextKnownPendingLevel=NoWork;}else if(expirationTime>=root.lastSuspendedTime){root.lastSuspendedTime=expirationTime+1;}// This is a pending level. Check if it's higher priority than the next 17605// known pending level. 17606if(expirationTime>root.nextKnownPendingLevel){root.nextKnownPendingLevel=expirationTime;}}}function markRootFinishedAtTime(root,finishedExpirationTime,remainingExpirationTime){// Update the range of pending times 17607root.firstPendingTime=remainingExpirationTime;// Update the range of suspended times. Treat everything higher priority or 17608// equal to this update as unsuspended. 17609if(finishedExpirationTime<=root.lastSuspendedTime){// The entire suspended range is now unsuspended. 17610root.firstSuspendedTime=root.lastSuspendedTime=root.nextKnownPendingLevel=NoWork;}else if(finishedExpirationTime<=root.firstSuspendedTime){// Part of the suspended range is now unsuspended. Narrow the range to 17611// include everything between the unsuspended time (non-inclusive) and the 17612// last suspended time. 17613root.firstSuspendedTime=finishedExpirationTime-1;}if(finishedExpirationTime<=root.lastPingedTime){// Clear the pinged time 17614root.lastPingedTime=NoWork;}if(finishedExpirationTime<=root.lastExpiredTime){// Clear the expired time 17615root.lastExpiredTime=NoWork;}}function markRootExpiredAtTime(root,expirationTime){var lastExpiredTime=root.lastExpiredTime;if(lastExpiredTime===NoWork||lastExpiredTime>expirationTime){root.lastExpiredTime=expirationTime;}}var didWarnAboutNestedUpdates;var didWarnAboutFindNodeInStrictMode;{didWarnAboutNestedUpdates=false;didWarnAboutFindNodeInStrictMode={};}function getContextForSubtree(parentComponent){if(!parentComponent){return emptyContextObject;}var fiber=get(parentComponent);var parentContext=findCurrentUnmaskedContext(fiber);if(fiber.tag===ClassComponent){var Component=fiber.type;if(isContextProvider(Component)){return processChildContext(fiber,Component,parentContext);}}return parentContext;}function findHostInstanceWithWarning(component,methodName){{var fiber=get(component);if(fiber===undefined){if(typeof component.render==='function'){{{throw Error("Unable to find node on an unmounted component.");}}}else{{{throw Error("Argument appears to not be a ReactComponent. Keys: "+Object.keys(component));}}}}var hostFiber=findCurrentHostFiber(fiber);if(hostFiber===null){return null;}if(hostFiber.mode&StrictMode){var componentName=getComponentName(fiber.type)||'Component';if(!didWarnAboutFindNodeInStrictMode[componentName]){didWarnAboutFindNodeInStrictMode[componentName]=true;if(fiber.mode&StrictMode){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));}else{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));}}}return hostFiber.stateNode;}}function createContainer(containerInfo,tag,hydrate,hydrationCallbacks){return createFiberRoot(containerInfo,tag,hydrate);}function updateContainer(element,container,parentComponent,callback){{onScheduleRoot(container,element);}var current$1=container.current;var currentTime=requestCurrentTimeForUpdate();{// $FlowExpectedError - jest isn't a global, and isn't recognized outside of tests 17616if('undefined'!==typeof jest){warnIfUnmockedScheduler(current$1);warnIfNotScopedWithMatchingAct(current$1);}}var suspenseConfig=requestCurrentSuspenseConfig();var expirationTime=computeExpirationForFiber(currentTime,current$1,suspenseConfig);var context=getContextForSubtree(parentComponent);if(container.context===null){container.context=context;}else{container.pendingContext=context;}{if(isRendering&¤t!==null&&!didWarnAboutNestedUpdates){didWarnAboutNestedUpdates=true;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');}}var update=createUpdate(expirationTime,suspenseConfig);// Caution: React DevTools currently depends on this property 17617// being called "element". 17618update.payload={element:element};callback=callback===undefined?null:callback;if(callback!==null){{if(typeof callback!=='function'){error('render(...): Expected the last optional `callback` argument to be a '+'function. Instead received: %s.',callback);}}update.callback=callback;}enqueueUpdate(current$1,update);scheduleWork(current$1,expirationTime);return expirationTime;}function getPublicRootInstance(container){var containerFiber=container.current;if(!containerFiber.child){return null;}switch(containerFiber.child.tag){case HostComponent:return getPublicInstance(containerFiber.child.stateNode);default:return containerFiber.child.stateNode;}}function markRetryTimeImpl(fiber,retryTime){var suspenseState=fiber.memoizedState;if(suspenseState!==null&&suspenseState.dehydrated!==null){if(suspenseState.retryTime<retryTime){suspenseState.retryTime=retryTime;}}}// Increases the priority of thennables when they resolve within this boundary. 17619function markRetryTimeIfNotHydrated(fiber,retryTime){markRetryTimeImpl(fiber,retryTime);var alternate=fiber.alternate;if(alternate){markRetryTimeImpl(alternate,retryTime);}}function attemptUserBlockingHydration$1(fiber){if(fiber.tag!==SuspenseComponent){// We ignore HostRoots here because we can't increase 17620// their priority and they should not suspend on I/O, 17621// since you have to wrap anything that might suspend in 17622// Suspense. 17623return;}var expTime=computeInteractiveExpiration(requestCurrentTimeForUpdate());scheduleWork(fiber,expTime);markRetryTimeIfNotHydrated(fiber,expTime);}function attemptContinuousHydration$1(fiber){if(fiber.tag!==SuspenseComponent){// We ignore HostRoots here because we can't increase 17624// their priority and they should not suspend on I/O, 17625// since you have to wrap anything that might suspend in 17626// Suspense. 17627return;}scheduleWork(fiber,ContinuousHydration);markRetryTimeIfNotHydrated(fiber,ContinuousHydration);}function attemptHydrationAtCurrentPriority$1(fiber){if(fiber.tag!==SuspenseComponent){// We ignore HostRoots here because we can't increase 17628// their priority other than synchronously flush it. 17629return;}var currentTime=requestCurrentTimeForUpdate();var expTime=computeExpirationForFiber(currentTime,fiber,null);scheduleWork(fiber,expTime);markRetryTimeIfNotHydrated(fiber,expTime);}function findHostInstanceWithNoPortals(fiber){var hostFiber=findCurrentHostFiberWithNoPortals(fiber);if(hostFiber===null){return null;}if(hostFiber.tag===FundamentalComponent){return hostFiber.stateNode.instance;}return hostFiber.stateNode;}var shouldSuspendImpl=function(fiber){return false;};function shouldSuspend(fiber){return shouldSuspendImpl(fiber);}var overrideHookState=null;var overrideProps=null;var scheduleUpdate=null;var setSuspenseHandler=null;{var copyWithSetImpl=function(obj,path,idx,value){if(idx>=path.length){return value;}var key=path[idx];var updated=Array.isArray(obj)?obj.slice():_assign({},obj);// $FlowFixMe number or string is fine here 17630updated[key]=copyWithSetImpl(obj[key],path,idx+1,value);return updated;};var copyWithSet=function(obj,path,value){return copyWithSetImpl(obj,path,0,value);};// Support DevTools editable values for useState and useReducer. 17631overrideHookState=function(fiber,id,path,value){// For now, the "id" of stateful hooks is just the stateful hook index. 17632// This may change in the future with e.g. nested hooks. 17633var currentHook=fiber.memoizedState;while(currentHook!==null&&id>0){currentHook=currentHook.next;id--;}if(currentHook!==null){var newState=copyWithSet(currentHook.memoizedState,path,value);currentHook.memoizedState=newState;currentHook.baseState=newState;// We aren't actually adding an update to the queue, 17634// because there is no update we can add for useReducer hooks that won't trigger an error. 17635// (There's no appropriate action type for DevTools overrides.) 17636// As a result though, React will see the scheduled update as a noop and bailout. 17637// Shallow cloning props works as a workaround for now to bypass the bailout check. 17638fiber.memoizedProps=_assign({},fiber.memoizedProps);scheduleWork(fiber,Sync);}};// Support DevTools props for function components, forwardRef, memo, host components, etc. 17639overrideProps=function(fiber,path,value){fiber.pendingProps=copyWithSet(fiber.memoizedProps,path,value);if(fiber.alternate){fiber.alternate.pendingProps=fiber.pendingProps;}scheduleWork(fiber,Sync);};scheduleUpdate=function(fiber){scheduleWork(fiber,Sync);};setSuspenseHandler=function(newShouldSuspendImpl){shouldSuspendImpl=newShouldSuspendImpl;};}function injectIntoDevTools(devToolsConfig){var findFiberByHostInstance=devToolsConfig.findFiberByHostInstance;var ReactCurrentDispatcher=ReactSharedInternals.ReactCurrentDispatcher;return injectInternals(_assign({},devToolsConfig,{overrideHookState:overrideHookState,overrideProps:overrideProps,setSuspenseHandler:setSuspenseHandler,scheduleUpdate:scheduleUpdate,currentDispatcherRef:ReactCurrentDispatcher,findHostInstanceByFiber:function(fiber){var hostFiber=findCurrentHostFiber(fiber);if(hostFiber===null){return null;}return hostFiber.stateNode;},findFiberByHostInstance:function(instance){if(!findFiberByHostInstance){// Might not be implemented by the renderer. 17640return null;}return findFiberByHostInstance(instance);},// React Refresh 17641findHostInstancesForRefresh:findHostInstancesForRefresh,scheduleRefresh:scheduleRefresh,scheduleRoot:scheduleRoot,setRefreshHandler:setRefreshHandler,// Enables DevTools to append owner stacks to error messages in DEV mode. 17642getCurrentFiber:function(){return current;}}));}var IsSomeRendererActing$1=ReactSharedInternals.IsSomeRendererActing;function ReactDOMRoot(container,options){this._internalRoot=createRootImpl(container,ConcurrentRoot,options);}function ReactDOMBlockingRoot(container,tag,options){this._internalRoot=createRootImpl(container,tag,options);}ReactDOMRoot.prototype.render=ReactDOMBlockingRoot.prototype.render=function(children){var root=this._internalRoot;{if(typeof arguments[1]==='function'){error('render(...): does not support the second callback argument. '+'To execute a side effect after rendering, declare it in a component body with useEffect().');}var container=root.containerInfo;if(container.nodeType!==COMMENT_NODE){var hostInstance=findHostInstanceWithNoPortals(root.current);if(hostInstance){if(hostInstance.parentNode!==container){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.");}}}}updateContainer(children,root,null,null);};ReactDOMRoot.prototype.unmount=ReactDOMBlockingRoot.prototype.unmount=function(){{if(typeof arguments[0]==='function'){error('unmount(...): does not support a callback argument. '+'To execute a side effect after rendering, declare it in a component body with useEffect().');}}var root=this._internalRoot;var container=root.containerInfo;updateContainer(null,root,null,function(){unmarkContainerAsRoot(container);});};function createRootImpl(container,tag,options){// Tag is either LegacyRoot or Concurrent Root 17643var hydrate=options!=null&&options.hydrate===true;var hydrationCallbacks=options!=null&&options.hydrationOptions||null;var root=createContainer(container,tag,hydrate);markContainerAsRoot(root.current,container);if(hydrate&&tag!==LegacyRoot){var doc=container.nodeType===DOCUMENT_NODE?container:container.ownerDocument;eagerlyTrapReplayableEvents(container,doc);}return root;}function createLegacyRoot(container,options){return new ReactDOMBlockingRoot(container,LegacyRoot,options);}function isValidContainer(node){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 '));}var ReactCurrentOwner$3=ReactSharedInternals.ReactCurrentOwner;var topLevelUpdateWarnings;var warnedAboutHydrateAPI=false;{topLevelUpdateWarnings=function(container){if(container._reactRootContainer&&container.nodeType!==COMMENT_NODE){var hostInstance=findHostInstanceWithNoPortals(container._reactRootContainer._internalRoot.current);if(hostInstance){if(hostInstance.parentNode!==container){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.');}}}var isRootRenderedBySomeReact=!!container._reactRootContainer;var rootEl=getReactRootElementInContainer(container);var hasNonRootReactChild=!!(rootEl&&getInstanceFromNode$1(rootEl));if(hasNonRootReactChild&&!isRootRenderedBySomeReact){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.');}if(container.nodeType===ELEMENT_NODE&&container.tagName&&container.tagName.toUpperCase()==='BODY'){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.');}};}function getReactRootElementInContainer(container){if(!container){return null;}if(container.nodeType===DOCUMENT_NODE){return container.documentElement;}else{return container.firstChild;}}function shouldHydrateDueToLegacyHeuristic(container){var rootElement=getReactRootElementInContainer(container);return!!(rootElement&&rootElement.nodeType===ELEMENT_NODE&&rootElement.hasAttribute(ROOT_ATTRIBUTE_NAME));}function legacyCreateRootFromDOMContainer(container,forceHydrate){var shouldHydrate=forceHydrate||shouldHydrateDueToLegacyHeuristic(container);// First clear any existing content. 17644if(!shouldHydrate){var warned=false;var rootSibling;while(rootSibling=container.lastChild){{if(!warned&&rootSibling.nodeType===ELEMENT_NODE&&rootSibling.hasAttribute(ROOT_ATTRIBUTE_NAME)){warned=true;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.');}}container.removeChild(rootSibling);}}{if(shouldHydrate&&!forceHydrate&&!warnedAboutHydrateAPI){warnedAboutHydrateAPI=true;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.');}}return createLegacyRoot(container,shouldHydrate?{hydrate:true}:undefined);}function warnOnInvalidCallback$1(callback,callerName){{if(callback!==null&&typeof callback!=='function'){error('%s(...): Expected the last optional `callback` argument to be a '+'function. Instead received: %s.',callerName,callback);}}}function legacyRenderSubtreeIntoContainer(parentComponent,children,container,forceHydrate,callback){{topLevelUpdateWarnings(container);warnOnInvalidCallback$1(callback===undefined?null:callback,'render');}// TODO: Without `any` type, Flow says "Property cannot be accessed on any 17645// member of intersection type." Whyyyyyy. 17646var root=container._reactRootContainer;var fiberRoot;if(!root){// Initial mount 17647root=container._reactRootContainer=legacyCreateRootFromDOMContainer(container,forceHydrate);fiberRoot=root._internalRoot;if(typeof callback==='function'){var originalCallback=callback;callback=function(){var instance=getPublicRootInstance(fiberRoot);originalCallback.call(instance);};}// Initial mount should not be batched. 17648unbatchedUpdates(function(){updateContainer(children,fiberRoot,parentComponent,callback);});}else{fiberRoot=root._internalRoot;if(typeof callback==='function'){var _originalCallback=callback;callback=function(){var instance=getPublicRootInstance(fiberRoot);_originalCallback.call(instance);};}// Update 17649updateContainer(children,fiberRoot,parentComponent,callback);}return getPublicRootInstance(fiberRoot);}function findDOMNode(componentOrElement){{var owner=ReactCurrentOwner$3.current;if(owner!==null&&owner.stateNode!==null){var warnedAboutRefsInRender=owner.stateNode._warnedAboutRefsInRender;if(!warnedAboutRefsInRender){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');}owner.stateNode._warnedAboutRefsInRender=true;}}if(componentOrElement==null){return null;}if(componentOrElement.nodeType===ELEMENT_NODE){return componentOrElement;}{return findHostInstanceWithWarning(componentOrElement,'findDOMNode');}}function hydrate(element,container,callback){if(!isValidContainer(container)){{throw Error("Target container is not a DOM element.");}}{var isModernRoot=isContainerMarkedAsRoot(container)&&container._reactRootContainer===undefined;if(isModernRoot){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)?');}}// TODO: throw or warn if we couldn't hydrate? 17650return legacyRenderSubtreeIntoContainer(null,element,container,true,callback);}function render(element,container,callback){if(!isValidContainer(container)){{throw Error("Target container is not a DOM element.");}}{var isModernRoot=isContainerMarkedAsRoot(container)&&container._reactRootContainer===undefined;if(isModernRoot){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)?');}}return legacyRenderSubtreeIntoContainer(null,element,container,false,callback);}function unstable_renderSubtreeIntoContainer(parentComponent,element,containerNode,callback){if(!isValidContainer(containerNode)){{throw Error("Target container is not a DOM element.");}}if(!(parentComponent!=null&&has(parentComponent))){{throw Error("parentComponent must be a valid React Component");}}return legacyRenderSubtreeIntoContainer(parentComponent,element,containerNode,false,callback);}function unmountComponentAtNode(container){if(!isValidContainer(container)){{throw Error("unmountComponentAtNode(...): Target container is not a DOM element.");}}{var isModernRoot=isContainerMarkedAsRoot(container)&&container._reactRootContainer===undefined;if(isModernRoot){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()?');}}if(container._reactRootContainer){{var rootEl=getReactRootElementInContainer(container);var renderedByDifferentReact=rootEl&&!getInstanceFromNode$1(rootEl);if(renderedByDifferentReact){error("unmountComponentAtNode(): The node you're attempting to unmount "+'was rendered by another copy of React.');}}// Unmount should not be batched. 17651unbatchedUpdates(function(){legacyRenderSubtreeIntoContainer(null,null,container,false,function(){// $FlowFixMe This should probably use `delete container._reactRootContainer` 17652container._reactRootContainer=null;unmarkContainerAsRoot(container);});});// If you call unmountComponentAtNode twice in quick succession, you'll 17653// get `true` twice. That's probably fine? 17654return true;}else{{var _rootEl=getReactRootElementInContainer(container);var hasNonRootReactChild=!!(_rootEl&&getInstanceFromNode$1(_rootEl));// Check if the container itself is a React root node. 17655var isContainerReactRoot=container.nodeType===ELEMENT_NODE&&isValidContainer(container.parentNode)&&!!container.parentNode._reactRootContainer;if(hasNonRootReactChild){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.');}}return false;}}function createPortal(children,containerInfo,// TODO: figure out the API for cross-renderer implementation. 17656implementation){var key=arguments.length>3&&arguments[3]!==undefined?arguments[3]:null;return{// This tag allow us to uniquely identify this as a React Portal 17657$$typeof:REACT_PORTAL_TYPE,key:key==null?null:''+key,children:children,containerInfo:containerInfo,implementation:implementation};}var ReactVersion='16.13.1';setAttemptUserBlockingHydration(attemptUserBlockingHydration$1);setAttemptContinuousHydration(attemptContinuousHydration$1);setAttemptHydrationAtCurrentPriority(attemptHydrationAtCurrentPriority$1);var didWarnAboutUnstableCreatePortal=false;{if(typeof Map!=='function'||// $FlowIssue Flow incorrectly thinks Map has no prototype 17658Map.prototype==null||typeof Map.prototype.forEach!=='function'||typeof Set!=='function'||// $FlowIssue Flow incorrectly thinks Set has no prototype 17659Set.prototype==null||typeof Set.prototype.clear!=='function'||typeof Set.prototype.forEach!=='function'){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');}}setRestoreImplementation(restoreControlledState$3);setBatchingImplementation(batchedUpdates$1,discreteUpdates$1,flushDiscreteUpdates,batchedEventUpdates$1);function createPortal$1(children,container){var key=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;if(!isValidContainer(container)){{throw Error("Target container is not a DOM element.");}}// TODO: pass ReactDOM portal implementation as third argument 17660// $FlowFixMe The Flow type is opaque but there's no way to actually create it. 17661return createPortal(children,container,null,key);}function renderSubtreeIntoContainer(parentComponent,element,containerNode,callback){return unstable_renderSubtreeIntoContainer(parentComponent,element,containerNode,callback);}function unstable_createPortal(children,container){var key=arguments.length>2&&arguments[2]!==undefined?arguments[2]:null;{if(!didWarnAboutUnstableCreatePortal){didWarnAboutUnstableCreatePortal=true;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.');}}return createPortal$1(children,container,key);}var Internals={// Keep in sync with ReactDOMUnstableNativeDependencies.js 17662// ReactTestUtils.js, and ReactTestUtilsAct.js. This is an array for better minification. 17663Events:[getInstanceFromNode$1,getNodeFromInstance$1,getFiberCurrentPropsFromNode$1,injectEventPluginsByName,eventNameDispatchConfigs,accumulateTwoPhaseDispatches,accumulateDirectDispatches,enqueueStateRestore,restoreStateIfNeeded,dispatchEvent,runEventsInBatch,flushPassiveEffects,IsThisRendererActing]};var foundDevTools=injectIntoDevTools({findFiberByHostInstance:getClosestInstanceFromNode,bundleType:1,version:ReactVersion,rendererPackageName:'react-dom'});{if(!foundDevTools&&canUseDOM&&window.top===window.self){// If we're in Chrome or Firefox, provide a download link if not installed. 17664if(navigator.userAgent.indexOf('Chrome')>-1&&navigator.userAgent.indexOf('Edge')===-1||navigator.userAgent.indexOf('Firefox')>-1){var protocol=window.location.protocol;// Don't warn in exotic cases like chrome-extension://. 17665if(/^(https?|file):$/.test(protocol)){// eslint-disable-next-line react-internal/no-production-logging 17666console.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');}}}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=Internals;exports.createPortal=createPortal$1;exports.findDOMNode=findDOMNode;exports.flushSync=flushSync;exports.hydrate=hydrate;exports.render=render;exports.unmountComponentAtNode=unmountComponentAtNode;exports.unstable_batchedUpdates=batchedUpdates$1;exports.unstable_createPortal=unstable_createPortal;exports.unstable_renderSubtreeIntoContainer=renderSubtreeIntoContainer;exports.version=ReactVersion;})();} 17667 17668/***/ }), 17669
vendor: 1,436 bytes, lines 17670-17712
17670/***/ "./node_modules/react-dom/index.js": 17671/*!*****************************************!*\ 17672 !*** ./node_modules/react-dom/index.js ***! 17673 \*****************************************/ 17674/*! no static exports found */ 17675/***/ (function(module, exports, __webpack_require__) { 17676 17677"use strict"; 17678 17679 17680function checkDCE() { 17681 /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */ 17682 if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' || typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function') { 17683 return; 17684 } 17685 17686 if (true) { 17687 // This branch is unreachable because this function is only called 17688 // in production, but the condition is true only in development. 17689 // Therefore if the branch is still here, dead code elimination wasn't 17690 // properly applied. 17691 // Don't change the message. React DevTools relies on it. Also make sure 17692 // this message doesn't occur elsewhere in this function, or it will cause 17693 // a false positive. 17694 throw new Error('^_^'); 17695 } 17696 17697 try { 17698 // Verify that the code above has been dead code eliminated (DCE'd). 17699 __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE); 17700 } catch (err) { 17701 // DevTools shouldn't crash React, no matter what. 17702 // We should still report in case we break this code. 17703 console.error(err); 17704 } 17705} 17706 17707if (false) {} else { 17708 module.exports = __webpack_require__(/*! ./cjs/react-dom.development.js */ "./node_modules/react-dom/cjs/react-dom.development.js"); 17709} 17710 17711/***/ }), 17712
vendor: 7,897 bytes, lines 17713-17912
17713/***/ "./node_modules/react-is/cjs/react-is.development.js": 17714/*!***********************************************************!*\ 17715 !*** ./node_modules/react-is/cjs/react-is.development.js ***! 17716 \***********************************************************/ 17717/*! no static exports found */ 17718/***/ (function(module, exports, __webpack_require__) { 17719 17720"use strict"; 17721/** @license React v16.13.1 17722 * react-is.development.js 17723 * 17724 * Copyright (c) Facebook, Inc. and its affiliates. 17725 * 17726 * This source code is licensed under the MIT license found in the 17727 * LICENSE file in the root directory of this source tree. 17728 */ 17729 17730 17731if (true) { 17732 (function () { 17733 'use strict'; // The Symbol used to tag the ReactElement-like types. If there is no native Symbol 17734 // nor polyfill, then a plain number is used for performance. 17735 17736 var hasSymbol = typeof Symbol === 'function' && Symbol.for; 17737 var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7; 17738 var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca; 17739 var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb; 17740 var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc; 17741 var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2; 17742 var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd; 17743 var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary 17744 // (unstable) APIs that have been removed. Can we remove the symbols? 17745 17746 var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf; 17747 var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf; 17748 var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0; 17749 var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1; 17750 var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8; 17751 var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3; 17752 var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4; 17753 var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9; 17754 var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5; 17755 var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6; 17756 var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7; 17757 17758 function isValidElementType(type) { 17759 return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill. 17760 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); 17761 } 17762 17763 function typeOf(object) { 17764 if (typeof object === 'object' && object !== null) { 17765 var $$typeof = object.$$typeof; 17766 17767 switch ($$typeof) { 17768 case REACT_ELEMENT_TYPE: 17769 var type = object.type; 17770 17771 switch (type) { 17772 case REACT_ASYNC_MODE_TYPE: 17773 case REACT_CONCURRENT_MODE_TYPE: 17774 case REACT_FRAGMENT_TYPE: 17775 case REACT_PROFILER_TYPE: 17776 case REACT_STRICT_MODE_TYPE: 17777 case REACT_SUSPENSE_TYPE: 17778 return type; 17779 17780 default: 17781 var $$typeofType = type && type.$$typeof; 17782 17783 switch ($$typeofType) { 17784 case REACT_CONTEXT_TYPE: 17785 case REACT_FORWARD_REF_TYPE: 17786 case REACT_LAZY_TYPE: 17787 case REACT_MEMO_TYPE: 17788 case REACT_PROVIDER_TYPE: 17789 return $$typeofType; 17790 17791 default: 17792 return $$typeof; 17793 } 17794 17795 } 17796 17797 case REACT_PORTAL_TYPE: 17798 return $$typeof; 17799 } 17800 } 17801 17802 return undefined; 17803 } // AsyncMode is deprecated along with isAsyncMode 17804 17805 17806 var AsyncMode = REACT_ASYNC_MODE_TYPE; 17807 var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE; 17808 var ContextConsumer = REACT_CONTEXT_TYPE; 17809 var ContextProvider = REACT_PROVIDER_TYPE; 17810 var Element = REACT_ELEMENT_TYPE; 17811 var ForwardRef = REACT_FORWARD_REF_TYPE; 17812 var Fragment = REACT_FRAGMENT_TYPE; 17813 var Lazy = REACT_LAZY_TYPE; 17814 var Memo = REACT_MEMO_TYPE; 17815 var Portal = REACT_PORTAL_TYPE; 17816 var Profiler = REACT_PROFILER_TYPE; 17817 var StrictMode = REACT_STRICT_MODE_TYPE; 17818 var Suspense = REACT_SUSPENSE_TYPE; 17819 var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated 17820 17821 function isAsyncMode(object) { 17822 { 17823 if (!hasWarnedAboutDeprecatedIsAsyncMode) { 17824 hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint 17825 17826 console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.'); 17827 } 17828 } 17829 return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE; 17830 } 17831 17832 function isConcurrentMode(object) { 17833 return typeOf(object) === REACT_CONCURRENT_MODE_TYPE; 17834 } 17835 17836 function isContextConsumer(object) { 17837 return typeOf(object) === REACT_CONTEXT_TYPE; 17838 } 17839 17840 function isContextProvider(object) { 17841 return typeOf(object) === REACT_PROVIDER_TYPE; 17842 } 17843 17844 function isElement(object) { 17845 return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; 17846 } 17847 17848 function isForwardRef(object) { 17849 return typeOf(object) === REACT_FORWARD_REF_TYPE; 17850 } 17851 17852 function isFragment(object) { 17853 return typeOf(object) === REACT_FRAGMENT_TYPE; 17854 } 17855 17856 function isLazy(object) { 17857 return typeOf(object) === REACT_LAZY_TYPE; 17858 } 17859 17860 function isMemo(object) { 17861 return typeOf(object) === REACT_MEMO_TYPE; 17862 } 17863 17864 function isPortal(object) { 17865 return typeOf(object) === REACT_PORTAL_TYPE; 17866 } 17867 17868 function isProfiler(object) { 17869 return typeOf(object) === REACT_PROFILER_TYPE; 17870 } 17871 17872 function isStrictMode(object) { 17873 return typeOf(object) === REACT_STRICT_MODE_TYPE; 17874 } 17875 17876 function isSuspense(object) { 17877 return typeOf(object) === REACT_SUSPENSE_TYPE; 17878 } 17879 17880 exports.AsyncMode = AsyncMode; 17881 exports.ConcurrentMode = ConcurrentMode; 17882 exports.ContextConsumer = ContextConsumer; 17883 exports.ContextProvider = ContextProvider; 17884 exports.Element = Element; 17885 exports.ForwardRef = ForwardRef; 17886 exports.Fragment = Fragment; 17887 exports.Lazy = Lazy; 17888 exports.Memo = Memo; 17889 exports.Portal = Portal; 17890 exports.Profiler = Profiler; 17891 exports.StrictMode = StrictMode; 17892 exports.Suspense = Suspense; 17893 exports.isAsyncMode = isAsyncMode; 17894 exports.isConcurrentMode = isConcurrentMode; 17895 exports.isContextConsumer = isContextConsumer; 17896 exports.isContextProvider = isContextProvider; 17897 exports.isElement = isElement; 17898 exports.isForwardRef = isForwardRef; 17899 exports.isFragment = isFragment; 17900 exports.isLazy = isLazy; 17901 exports.isMemo = isMemo; 17902 exports.isPortal = isPortal; 17903 exports.isProfiler = isProfiler; 17904 exports.isStrictMode = isStrictMode; 17905 exports.isSuspense = isSuspense; 17906 exports.isValidElementType = isValidElementType; 17907 exports.typeOf = typeOf; 17908 })(); 17909} 17910 17911/***/ }), 17912
vendor: 450 bytes, lines 17913-17928
17913/***/ "./node_modules/react-is/index.js": 17914/*!****************************************!*\ 17915 !*** ./node_modules/react-is/index.js ***! 17916 \****************************************/ 17917/*! no static exports found */ 17918/***/ (function(module, exports, __webpack_require__) { 17919 17920"use strict"; 17921 17922 17923if (false) {} else { 17924 module.exports = __webpack_require__(/*! ./cjs/react-is.development.js */ "./node_modules/react-is/cjs/react-is.development.js"); 17925} 17926 17927/***/ }), 17928
vendor: 70,219 bytes, lines 17929-19988
17929/***/ "./node_modules/react-spring/web.js": 17930/*!******************************************!*\ 17931 !*** ./node_modules/react-spring/web.js ***! 17932 \******************************************/ 17933/*! exports provided: apply, config, update, animated, a, interpolate, Globals, useSpring, useTrail, useTransition, useChain, useSprings */ 17934/***/ (function(module, __webpack_exports__, __webpack_require__) { 17935 17936"use strict"; 17937__webpack_require__.r(__webpack_exports__); 17938/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "apply", function() { return apply; }); 17939/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "config", function() { return config; }); 17940/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "update", function() { return update; }); 17941/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "animated", function() { return extendedAnimated; }); 17942/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return extendedAnimated; }); 17943/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "interpolate", function() { return interpolate$1; }); 17944/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Globals", function() { return Globals; }); 17945/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "useSpring", function() { return useSpring; }); 17946/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "useTrail", function() { return useTrail; }); 17947/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "useTransition", function() { return useTransition; }); 17948/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "useChain", function() { return useChain; }); 17949/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "useSprings", function() { return useSprings; }); 17950/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ "./node_modules/@babel/runtime/helpers/esm/extends.js"); 17951/* harmony import */ var _babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/esm/objectWithoutPropertiesLoose */ "./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js"); 17952/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "./node_modules/react/index.js"); 17953/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__); 17954 17955 17956 17957const is = { 17958 arr: Array.isArray, 17959 obj: a => Object.prototype.toString.call(a) === '[object Object]', 17960 fun: a => typeof a === 'function', 17961 str: a => typeof a === 'string', 17962 num: a => typeof a === 'number', 17963 und: a => a === void 0, 17964 nul: a => a === null, 17965 set: a => a instanceof Set, 17966 map: a => a instanceof Map, 17967 17968 equ(a, b) { 17969 if (typeof a !== typeof b) return false; 17970 if (is.str(a) || is.num(a)) return a === b; 17971 if (is.obj(a) && is.obj(b) && Object.keys(a).length + Object.keys(b).length === 0) return true; 17972 let i; 17973 17974 for (i in a) if (!(i in b)) return false; 17975 17976 for (i in b) if (a[i] !== b[i]) return false; 17977 17978 return is.und(i) ? a === b : true; 17979 } 17980 17981}; 17982 17983function merge(target, lowercase) { 17984 if (lowercase === void 0) { 17985 lowercase = true; 17986 } 17987 17988 return object => (is.arr(object) ? object : Object.keys(object)).reduce((acc, element) => { 17989 const key = lowercase ? element[0].toLowerCase() + element.substring(1) : element; 17990 acc[key] = target(key); 17991 return acc; 17992 }, target); 17993} 17994 17995function useForceUpdate() { 17996 const _useState = Object(react__WEBPACK_IMPORTED_MODULE_2__["useState"])(false), 17997 f = _useState[1]; 17998 17999 const forceUpdate = Object(react__WEBPACK_IMPORTED_MODULE_2__["useCallback"])(() => f(v => !v), []); 18000 return forceUpdate; 18001} 18002 18003function withDefault(value, defaultValue) { 18004 return is.und(value) || is.nul(value) ? defaultValue : value; 18005} 18006 18007function toArray(a) { 18008 return !is.und(a) ? is.arr(a) ? a : [a] : []; 18009} 18010 18011function callProp(obj) { 18012 for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { 18013 args[_key - 1] = arguments[_key]; 18014 } 18015 18016 return is.fun(obj) ? obj(...args) : obj; 18017} 18018 18019function getForwardProps(props) { 18020 const to = props.to, 18021 from = props.from, 18022 config = props.config, 18023 onStart = props.onStart, 18024 onRest = props.onRest, 18025 onFrame = props.onFrame, 18026 children = props.children, 18027 reset = props.reset, 18028 reverse = props.reverse, 18029 force = props.force, 18030 immediate = props.immediate, 18031 delay = props.delay, 18032 attach = props.attach, 18033 destroyed = props.destroyed, 18034 interpolateTo = props.interpolateTo, 18035 ref = props.ref, 18036 lazy = props.lazy, 18037 forward = Object(_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__["default"])(props, ["to", "from", "config", "onStart", "onRest", "onFrame", "children", "reset", "reverse", "force", "immediate", "delay", "attach", "destroyed", "interpolateTo", "ref", "lazy"]); 18038 18039 return forward; 18040} 18041 18042function interpolateTo(props) { 18043 const forward = getForwardProps(props); 18044 if (is.und(forward)) return Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({ 18045 to: forward 18046 }, props); 18047 const rest = Object.keys(props).reduce((a, k) => !is.und(forward[k]) ? a : Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, a, { 18048 [k]: props[k] 18049 }), {}); 18050 return Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({ 18051 to: forward 18052 }, rest); 18053} 18054 18055function handleRef(ref, forward) { 18056 if (forward) { 18057 // If it's a function, assume it's a ref callback 18058 if (is.fun(forward)) forward(ref);else if (is.obj(forward)) { 18059 forward.current = ref; 18060 } 18061 } 18062 18063 return ref; 18064} 18065 18066class Animated { 18067 constructor() { 18068 this.payload = void 0; 18069 this.children = []; 18070 } 18071 18072 getAnimatedValue() { 18073 return this.getValue(); 18074 } 18075 18076 getPayload() { 18077 return this.payload || this; 18078 } 18079 18080 attach() {} 18081 18082 detach() {} 18083 18084 getChildren() { 18085 return this.children; 18086 } 18087 18088 addChild(child) { 18089 if (this.children.length === 0) this.attach(); 18090 this.children.push(child); 18091 } 18092 18093 removeChild(child) { 18094 const index = this.children.indexOf(child); 18095 this.children.splice(index, 1); 18096 if (this.children.length === 0) this.detach(); 18097 } 18098 18099} 18100 18101class AnimatedArray extends Animated { 18102 constructor() { 18103 super(...arguments); 18104 this.payload = []; 18105 18106 this.attach = () => this.payload.forEach(p => p instanceof Animated && p.addChild(this)); 18107 18108 this.detach = () => this.payload.forEach(p => p instanceof Animated && p.removeChild(this)); 18109 } 18110 18111} 18112 18113class AnimatedObject extends Animated { 18114 constructor() { 18115 super(...arguments); 18116 this.payload = {}; 18117 18118 this.attach = () => Object.values(this.payload).forEach(s => s instanceof Animated && s.addChild(this)); 18119 18120 this.detach = () => Object.values(this.payload).forEach(s => s instanceof Animated && s.removeChild(this)); 18121 } 18122 18123 getValue(animated) { 18124 if (animated === void 0) { 18125 animated = false; 18126 } 18127 18128 const payload = {}; 18129 18130 for (const key in this.payload) { 18131 const value = this.payload[key]; 18132 if (animated && !(value instanceof Animated)) continue; 18133 payload[key] = value instanceof Animated ? value[animated ? 'getAnimatedValue' : 'getValue']() : value; 18134 } 18135 18136 return payload; 18137 } 18138 18139 getAnimatedValue() { 18140 return this.getValue(true); 18141 } 18142 18143} 18144 18145let applyAnimatedValues; 18146 18147function injectApplyAnimatedValues(fn, transform) { 18148 applyAnimatedValues = { 18149 fn, 18150 transform 18151 }; 18152} 18153 18154let colorNames; 18155 18156function injectColorNames(names) { 18157 colorNames = names; 18158} 18159 18160let requestFrame = cb => typeof window !== 'undefined' ? window.requestAnimationFrame(cb) : -1; 18161 18162let cancelFrame = id => { 18163 typeof window !== 'undefined' && window.cancelAnimationFrame(id); 18164}; 18165 18166function injectFrame(raf, caf) { 18167 requestFrame = raf; 18168 cancelFrame = caf; 18169} 18170 18171let interpolation; 18172 18173function injectStringInterpolator(fn) { 18174 interpolation = fn; 18175} 18176 18177let now = () => Date.now(); 18178 18179function injectNow(nowFn) { 18180 now = nowFn; 18181} 18182 18183let defaultElement; 18184 18185function injectDefaultElement(el) { 18186 defaultElement = el; 18187} 18188 18189let animatedApi = node => node.current; 18190 18191function injectAnimatedApi(fn) { 18192 animatedApi = fn; 18193} 18194 18195let createAnimatedStyle; 18196 18197function injectCreateAnimatedStyle(factory) { 18198 createAnimatedStyle = factory; 18199} 18200 18201let manualFrameloop; 18202 18203function injectManualFrameloop(callback) { 18204 manualFrameloop = callback; 18205} 18206 18207var Globals = /*#__PURE__*/Object.freeze({ 18208 get applyAnimatedValues() { 18209 return applyAnimatedValues; 18210 }, 18211 18212 injectApplyAnimatedValues: injectApplyAnimatedValues, 18213 18214 get colorNames() { 18215 return colorNames; 18216 }, 18217 18218 injectColorNames: injectColorNames, 18219 18220 get requestFrame() { 18221 return requestFrame; 18222 }, 18223 18224 get cancelFrame() { 18225 return cancelFrame; 18226 }, 18227 18228 injectFrame: injectFrame, 18229 18230 get interpolation() { 18231 return interpolation; 18232 }, 18233 18234 injectStringInterpolator: injectStringInterpolator, 18235 18236 get now() { 18237 return now; 18238 }, 18239 18240 injectNow: injectNow, 18241 18242 get defaultElement() { 18243 return defaultElement; 18244 }, 18245 18246 injectDefaultElement: injectDefaultElement, 18247 18248 get animatedApi() { 18249 return animatedApi; 18250 }, 18251 18252 injectAnimatedApi: injectAnimatedApi, 18253 18254 get createAnimatedStyle() { 18255 return createAnimatedStyle; 18256 }, 18257 18258 injectCreateAnimatedStyle: injectCreateAnimatedStyle, 18259 18260 get manualFrameloop() { 18261 return manualFrameloop; 18262 }, 18263 18264 injectManualFrameloop: injectManualFrameloop 18265}); 18266/** 18267 * Wraps the `style` property with `AnimatedStyle`. 18268 */ 18269 18270class AnimatedProps extends AnimatedObject { 18271 constructor(props, callback) { 18272 super(); 18273 this.update = void 0; 18274 this.payload = !props.style ? props : Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, props, { 18275 style: createAnimatedStyle(props.style) 18276 }); 18277 this.update = callback; 18278 this.attach(); 18279 } 18280 18281} 18282 18283const isFunctionComponent = val => is.fun(val) && !(val.prototype instanceof react__WEBPACK_IMPORTED_MODULE_2___default.a.Component); 18284 18285const createAnimatedComponent = Component => { 18286 const AnimatedComponent = /*#__PURE__*/Object(react__WEBPACK_IMPORTED_MODULE_2__["forwardRef"])((props, ref) => { 18287 const forceUpdate = useForceUpdate(); 18288 const mounted = Object(react__WEBPACK_IMPORTED_MODULE_2__["useRef"])(true); 18289 const propsAnimated = Object(react__WEBPACK_IMPORTED_MODULE_2__["useRef"])(null); 18290 const node = Object(react__WEBPACK_IMPORTED_MODULE_2__["useRef"])(null); 18291 const attachProps = Object(react__WEBPACK_IMPORTED_MODULE_2__["useCallback"])(props => { 18292 const oldPropsAnimated = propsAnimated.current; 18293 18294 const callback = () => { 18295 let didUpdate = false; 18296 18297 if (node.current) { 18298 didUpdate = applyAnimatedValues.fn(node.current, propsAnimated.current.getAnimatedValue()); 18299 } 18300 18301 if (!node.current || didUpdate === false) { 18302 // If no referenced node has been found, or the update target didn't have a 18303 // native-responder, then forceUpdate the animation ... 18304 forceUpdate(); 18305 } 18306 }; 18307 18308 propsAnimated.current = new AnimatedProps(props, callback); 18309 oldPropsAnimated && oldPropsAnimated.detach(); 18310 }, []); 18311 Object(react__WEBPACK_IMPORTED_MODULE_2__["useEffect"])(() => () => { 18312 mounted.current = false; 18313 propsAnimated.current && propsAnimated.current.detach(); 18314 }, []); 18315 Object(react__WEBPACK_IMPORTED_MODULE_2__["useImperativeHandle"])(ref, () => animatedApi(node, mounted, forceUpdate)); 18316 attachProps(props); 18317 18318 const _getValue = propsAnimated.current.getValue(), 18319 scrollTop = _getValue.scrollTop, 18320 scrollLeft = _getValue.scrollLeft, 18321 animatedProps = Object(_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__["default"])(_getValue, ["scrollTop", "scrollLeft"]); // Functions cannot have refs, see: 18322 // See: https://github.com/react-spring/react-spring/issues/569 18323 18324 18325 const refFn = isFunctionComponent(Component) ? undefined : childRef => node.current = handleRef(childRef, ref); 18326 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(Component, Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, animatedProps, { 18327 ref: refFn 18328 })); 18329 }); 18330 return AnimatedComponent; 18331}; 18332 18333let active = false; 18334const controllers = new Set(); 18335 18336const update = () => { 18337 if (!active) return false; 18338 let time = now(); 18339 18340 for (let controller of controllers) { 18341 let isActive = false; 18342 18343 for (let configIdx = 0; configIdx < controller.configs.length; configIdx++) { 18344 let config = controller.configs[configIdx]; 18345 let endOfAnimation, lastTime; 18346 18347 for (let valIdx = 0; valIdx < config.animatedValues.length; valIdx++) { 18348 let animation = config.animatedValues[valIdx]; // If an animation is done, skip, until all of them conclude 18349 18350 if (animation.done) continue; 18351 let from = config.fromValues[valIdx]; 18352 let to = config.toValues[valIdx]; 18353 let position = animation.lastPosition; 18354 let isAnimated = to instanceof Animated; 18355 let velocity = Array.isArray(config.initialVelocity) ? config.initialVelocity[valIdx] : config.initialVelocity; 18356 if (isAnimated) to = to.getValue(); // Conclude animation if it's either immediate, or from-values match end-state 18357 18358 if (config.immediate) { 18359 animation.setValue(to); 18360 animation.done = true; 18361 continue; 18362 } // Break animation when string values are involved 18363 18364 18365 if (typeof from === 'string' || typeof to === 'string') { 18366 animation.setValue(to); 18367 animation.done = true; 18368 continue; 18369 } 18370 18371 if (config.duration !== void 0) { 18372 /** Duration easing */ 18373 position = from + config.easing((time - animation.startTime) / config.duration) * (to - from); 18374 endOfAnimation = time >= animation.startTime + config.duration; 18375 } else if (config.decay) { 18376 /** Decay easing */ 18377 position = from + velocity / (1 - 0.998) * (1 - Math.exp(-(1 - 0.998) * (time - animation.startTime))); 18378 endOfAnimation = Math.abs(animation.lastPosition - position) < 0.1; 18379 if (endOfAnimation) to = position; 18380 } else { 18381 /** Spring easing */ 18382 lastTime = animation.lastTime !== void 0 ? animation.lastTime : time; 18383 velocity = animation.lastVelocity !== void 0 ? animation.lastVelocity : config.initialVelocity; // If we lost a lot of frames just jump to the end. 18384 18385 if (time > lastTime + 64) lastTime = time; // http://gafferongames.com/game-physics/fix-your-timestep/ 18386 18387 let numSteps = Math.floor(time - lastTime); 18388 18389 for (let i = 0; i < numSteps; ++i) { 18390 let force = -config.tension * (position - to); 18391 let damping = -config.friction * velocity; 18392 let acceleration = (force + damping) / config.mass; 18393 velocity = velocity + acceleration * 1 / 1000; 18394 position = position + velocity * 1 / 1000; 18395 } // Conditions for stopping the spring animation 18396 18397 18398 let isOvershooting = config.clamp && config.tension !== 0 ? from < to ? position > to : position < to : false; 18399 let isVelocity = Math.abs(velocity) <= config.precision; 18400 let isDisplacement = config.tension !== 0 ? Math.abs(to - position) <= config.precision : true; 18401 endOfAnimation = isOvershooting || isVelocity && isDisplacement; 18402 animation.lastVelocity = velocity; 18403 animation.lastTime = time; 18404 } // Trails aren't done until their parents conclude 18405 18406 18407 if (isAnimated && !config.toValues[valIdx].done) endOfAnimation = false; 18408 18409 if (endOfAnimation) { 18410 // Ensure that we end up with a round value 18411 if (animation.value !== to) position = to; 18412 animation.done = true; 18413 } else isActive = true; 18414 18415 animation.setValue(position); 18416 animation.lastPosition = position; 18417 } // Keep track of updated values only when necessary 18418 18419 18420 if (controller.props.onFrame) controller.values[config.name] = config.interpolation.getValue(); 18421 } // Update callbacks in the end of the frame 18422 18423 18424 if (controller.props.onFrame) controller.props.onFrame(controller.values); // Either call onEnd or next frame 18425 18426 if (!isActive) { 18427 controllers.delete(controller); 18428 controller.stop(true); 18429 } 18430 } // Loop over as long as there are controllers ... 18431 18432 18433 if (controllers.size) { 18434 if (manualFrameloop) manualFrameloop();else requestFrame(update); 18435 } else { 18436 active = false; 18437 } 18438 18439 return active; 18440}; 18441 18442const start = controller => { 18443 if (!controllers.has(controller)) controllers.add(controller); 18444 18445 if (!active) { 18446 active = true; 18447 if (manualFrameloop) requestFrame(manualFrameloop);else requestFrame(update); 18448 } 18449}; 18450 18451const stop = controller => { 18452 if (controllers.has(controller)) controllers.delete(controller); 18453}; 18454 18455function createInterpolator(range, output, extrapolate) { 18456 if (typeof range === 'function') { 18457 return range; 18458 } 18459 18460 if (Array.isArray(range)) { 18461 return createInterpolator({ 18462 range, 18463 output: output, 18464 extrapolate 18465 }); 18466 } 18467 18468 if (interpolation && typeof range.output[0] === 'string') { 18469 return interpolation(range); 18470 } 18471 18472 const config = range; 18473 const outputRange = config.output; 18474 const inputRange = config.range || [0, 1]; 18475 const extrapolateLeft = config.extrapolateLeft || config.extrapolate || 'extend'; 18476 const extrapolateRight = config.extrapolateRight || config.extrapolate || 'extend'; 18477 18478 const easing = config.easing || (t => t); 18479 18480 return input => { 18481 const range = findRange(input, inputRange); 18482 return interpolate(input, inputRange[range], inputRange[range + 1], outputRange[range], outputRange[range + 1], easing, extrapolateLeft, extrapolateRight, config.map); 18483 }; 18484} 18485 18486function interpolate(input, inputMin, inputMax, outputMin, outputMax, easing, extrapolateLeft, extrapolateRight, map) { 18487 let result = map ? map(input) : input; // Extrapolate 18488 18489 if (result < inputMin) { 18490 if (extrapolateLeft === 'identity') return result;else if (extrapolateLeft === 'clamp') result = inputMin; 18491 } 18492 18493 if (result > inputMax) { 18494 if (extrapolateRight === 'identity') return result;else if (extrapolateRight === 'clamp') result = inputMax; 18495 } 18496 18497 if (outputMin === outputMax) return outputMin; 18498 if (inputMin === inputMax) return input <= inputMin ? outputMin : outputMax; // Input Range 18499 18500 if (inputMin === -Infinity) result = -result;else if (inputMax === Infinity) result = result - inputMin;else result = (result - inputMin) / (inputMax - inputMin); // Easing 18501 18502 result = easing(result); // Output Range 18503 18504 if (outputMin === -Infinity) result = -result;else if (outputMax === Infinity) result = result + outputMin;else result = result * (outputMax - outputMin) + outputMin; 18505 return result; 18506} 18507 18508function findRange(input, inputRange) { 18509 for (var i = 1; i < inputRange.length - 1; ++i) if (inputRange[i] >= input) break; 18510 18511 return i - 1; 18512} 18513 18514class AnimatedInterpolation extends AnimatedArray { 18515 constructor(parents, range, output, extrapolate) { 18516 super(); 18517 this.calc = void 0; 18518 this.payload = parents instanceof AnimatedArray && !(parents instanceof AnimatedInterpolation) ? parents.getPayload() : Array.isArray(parents) ? parents : [parents]; 18519 this.calc = createInterpolator(range, output, extrapolate); 18520 } 18521 18522 getValue() { 18523 return this.calc(...this.payload.map(value => value.getValue())); 18524 } 18525 18526 updateConfig(range, output, extrapolate) { 18527 this.calc = createInterpolator(range, output, extrapolate); 18528 } 18529 18530 interpolate(range, output, extrapolate) { 18531 return new AnimatedInterpolation(this, range, output, extrapolate); 18532 } 18533 18534} 18535 18536const interpolate$1 = (parents, range, output) => parents && new AnimatedInterpolation(parents, range, output); 18537 18538const config = { 18539 default: { 18540 tension: 170, 18541 friction: 26 18542 }, 18543 gentle: { 18544 tension: 120, 18545 friction: 14 18546 }, 18547 wobbly: { 18548 tension: 180, 18549 friction: 12 18550 }, 18551 stiff: { 18552 tension: 210, 18553 friction: 20 18554 }, 18555 slow: { 18556 tension: 280, 18557 friction: 60 18558 }, 18559 molasses: { 18560 tension: 280, 18561 friction: 120 18562 } 18563}; 18564/** API 18565 * useChain(references, timeSteps, timeFrame) 18566 */ 18567 18568function useChain(refs, timeSteps, timeFrame) { 18569 if (timeFrame === void 0) { 18570 timeFrame = 1000; 18571 } 18572 18573 const previous = Object(react__WEBPACK_IMPORTED_MODULE_2__["useRef"])(); 18574 Object(react__WEBPACK_IMPORTED_MODULE_2__["useEffect"])(() => { 18575 if (is.equ(refs, previous.current)) refs.forEach(_ref => { 18576 let current = _ref.current; 18577 return current && current.start(); 18578 });else if (timeSteps) { 18579 refs.forEach((_ref2, index) => { 18580 let current = _ref2.current; 18581 18582 if (current) { 18583 const ctrls = current.controllers; 18584 18585 if (ctrls.length) { 18586 const t = timeFrame * timeSteps[index]; 18587 ctrls.forEach(ctrl => { 18588 ctrl.queue = ctrl.queue.map(e => Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, e, { 18589 delay: e.delay + t 18590 })); 18591 ctrl.start(); 18592 }); 18593 } 18594 } 18595 }); 18596 } else refs.reduce((q, _ref3, rI) => { 18597 let current = _ref3.current; 18598 return q = q.then(() => current.start()); 18599 }, Promise.resolve()); 18600 previous.current = refs; 18601 }); 18602} 18603/** 18604 * Animated works by building a directed acyclic graph of dependencies 18605 * transparently when you render your Animated components. 18606 * 18607 * new Animated.Value(0) 18608 * .interpolate() .interpolate() new Animated.Value(1) 18609 * opacity translateY scale 18610 * style transform 18611 * View#234 style 18612 * View#123 18613 * 18614 * A) Top Down phase 18615 * When an AnimatedValue is updated, we recursively go down through this 18616 * graph in order to find leaf nodes: the views that we flag as needing 18617 * an update. 18618 * 18619 * B) Bottom Up phase 18620 * When a view is flagged as needing an update, we recursively go back up 18621 * in order to build the new value that it needs. The reason why we need 18622 * this two-phases process is to deal with composite props such as 18623 * transform which can receive values from multiple parents. 18624 */ 18625 18626 18627function addAnimatedStyles(node, styles) { 18628 if ('update' in node) { 18629 styles.add(node); 18630 } else { 18631 node.getChildren().forEach(child => addAnimatedStyles(child, styles)); 18632 } 18633} 18634 18635class AnimatedValue extends Animated { 18636 constructor(_value) { 18637 var _this; 18638 18639 super(); 18640 _this = this; 18641 this.animatedStyles = new Set(); 18642 this.value = void 0; 18643 this.startPosition = void 0; 18644 this.lastPosition = void 0; 18645 this.lastVelocity = void 0; 18646 this.startTime = void 0; 18647 this.lastTime = void 0; 18648 this.done = false; 18649 18650 this.setValue = function (value, flush) { 18651 if (flush === void 0) { 18652 flush = true; 18653 } 18654 18655 _this.value = value; 18656 if (flush) _this.flush(); 18657 }; 18658 18659 this.value = _value; 18660 this.startPosition = _value; 18661 this.lastPosition = _value; 18662 } 18663 18664 flush() { 18665 if (this.animatedStyles.size === 0) { 18666 addAnimatedStyles(this, this.animatedStyles); 18667 } 18668 18669 this.animatedStyles.forEach(animatedStyle => animatedStyle.update()); 18670 } 18671 18672 clearStyles() { 18673 this.animatedStyles.clear(); 18674 } 18675 18676 getValue() { 18677 return this.value; 18678 } 18679 18680 interpolate(range, output, extrapolate) { 18681 return new AnimatedInterpolation(this, range, output, extrapolate); 18682 } 18683 18684} 18685 18686class AnimatedValueArray extends AnimatedArray { 18687 constructor(values) { 18688 super(); 18689 this.payload = values.map(n => new AnimatedValue(n)); 18690 } 18691 18692 setValue(value, flush) { 18693 if (flush === void 0) { 18694 flush = true; 18695 } 18696 18697 if (Array.isArray(value)) { 18698 if (value.length === this.payload.length) { 18699 value.forEach((v, i) => this.payload[i].setValue(v, flush)); 18700 } 18701 } else { 18702 this.payload.forEach(p => p.setValue(value, flush)); 18703 } 18704 } 18705 18706 getValue() { 18707 return this.payload.map(v => v.getValue()); 18708 } 18709 18710 interpolate(range, output) { 18711 return new AnimatedInterpolation(this, range, output); 18712 } 18713 18714} 18715 18716let G = 0; 18717 18718class Controller { 18719 constructor() { 18720 this.id = void 0; 18721 this.idle = true; 18722 this.hasChanged = false; 18723 this.guid = 0; 18724 this.local = 0; 18725 this.props = {}; 18726 this.merged = {}; 18727 this.animations = {}; 18728 this.interpolations = {}; 18729 this.values = {}; 18730 this.configs = []; 18731 this.listeners = []; 18732 this.queue = []; 18733 this.localQueue = void 0; 18734 18735 this.getValues = () => this.interpolations; 18736 18737 this.id = G++; 18738 } 18739 /** update(props) 18740 * This function filters input props and creates an array of tasks which are executed in .start() 18741 * Each task is allowed to carry a delay, which means it can execute asnychroneously */ 18742 18743 18744 update(args) { 18745 //this._id = n + this.id 18746 if (!args) return this; // Extract delay and the to-prop from props 18747 18748 const _ref = interpolateTo(args), 18749 _ref$delay = _ref.delay, 18750 delay = _ref$delay === void 0 ? 0 : _ref$delay, 18751 to = _ref.to, 18752 props = Object(_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__["default"])(_ref, ["delay", "to"]); 18753 18754 if (is.arr(to) || is.fun(to)) { 18755 // If config is either a function or an array queue it up as is 18756 this.queue.push(Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, props, { 18757 delay, 18758 to 18759 })); 18760 } else if (to) { 18761 // Otherwise go through each key since it could be delayed individually 18762 let ops = {}; 18763 Object.entries(to).forEach(_ref2 => { 18764 let k = _ref2[0], 18765 v = _ref2[1]; // Fetch delay and create an entry, consisting of the to-props, the delay, and basic props 18766 18767 const entry = Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({ 18768 to: { 18769 [k]: v 18770 }, 18771 delay: callProp(delay, k) 18772 }, props); 18773 18774 const previous = ops[entry.delay] && ops[entry.delay].to; 18775 ops[entry.delay] = Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, ops[entry.delay], entry, { 18776 to: Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, previous, entry.to) 18777 }); 18778 }); 18779 this.queue = Object.values(ops); 18780 } // Sort queue, so that async calls go last 18781 18782 18783 this.queue = this.queue.sort((a, b) => a.delay - b.delay); // Diff the reduced props immediately (they'll contain the from-prop and some config) 18784 18785 this.diff(props); 18786 return this; 18787 } 18788 /** start(onEnd) 18789 * This function either executes a queue, if present, or starts the frameloop, which animates */ 18790 18791 18792 start(onEnd) { 18793 // If a queue is present we must excecute it 18794 if (this.queue.length) { 18795 this.idle = false; // Updates can interrupt trailing queues, in that case we just merge values 18796 18797 if (this.localQueue) { 18798 this.localQueue.forEach(_ref3 => { 18799 let _ref3$from = _ref3.from, 18800 from = _ref3$from === void 0 ? {} : _ref3$from, 18801 _ref3$to = _ref3.to, 18802 to = _ref3$to === void 0 ? {} : _ref3$to; 18803 if (is.obj(from)) this.merged = Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, from, this.merged); 18804 if (is.obj(to)) this.merged = Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, this.merged, to); 18805 }); 18806 } // The guid helps us tracking frames, a new queue over an old one means an override 18807 // We discard async calls in that caseà 18808 18809 18810 const local = this.local = ++this.guid; 18811 const queue = this.localQueue = this.queue; 18812 this.queue = []; // Go through each entry and execute it 18813 18814 queue.forEach((_ref4, index) => { 18815 let delay = _ref4.delay, 18816 props = Object(_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__["default"])(_ref4, ["delay"]); 18817 18818 const cb = finished => { 18819 if (index === queue.length - 1 && local === this.guid && finished) { 18820 this.idle = true; 18821 if (this.props.onRest) this.props.onRest(this.merged); 18822 } 18823 18824 if (onEnd) onEnd(); 18825 }; // Entries can be delayed, ansyc or immediate 18826 18827 18828 let async = is.arr(props.to) || is.fun(props.to); 18829 18830 if (delay) { 18831 setTimeout(() => { 18832 if (local === this.guid) { 18833 if (async) this.runAsync(props, cb);else this.diff(props).start(cb); 18834 } 18835 }, delay); 18836 } else if (async) this.runAsync(props, cb);else this.diff(props).start(cb); 18837 }); 18838 } // Otherwise we kick of the frameloop 18839 else { 18840 if (is.fun(onEnd)) this.listeners.push(onEnd); 18841 if (this.props.onStart) this.props.onStart(); 18842 start(this); 18843 } 18844 18845 return this; 18846 } 18847 18848 stop(finished) { 18849 this.listeners.forEach(onEnd => onEnd(finished)); 18850 this.listeners = []; 18851 return this; 18852 } 18853 /** Pause sets onEnd listeners free, but also removes the controller from the frameloop */ 18854 18855 18856 pause(finished) { 18857 this.stop(true); 18858 if (finished) stop(this); 18859 return this; 18860 } 18861 18862 runAsync(_ref5, onEnd) { 18863 var _this = this; 18864 18865 let delay = _ref5.delay, 18866 props = Object(_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__["default"])(_ref5, ["delay"]); 18867 18868 const local = this.local; // If "to" is either a function or an array it will be processed async, therefor "to" should be empty right now 18869 // If the view relies on certain values "from" has to be present 18870 18871 let queue = Promise.resolve(undefined); 18872 18873 if (is.arr(props.to)) { 18874 for (let i = 0; i < props.to.length; i++) { 18875 const index = i; 18876 18877 const fresh = Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, props, interpolateTo(props.to[index])); 18878 18879 if (is.arr(fresh.config)) fresh.config = fresh.config[index]; 18880 queue = queue.then(() => { 18881 //this.stop() 18882 if (local === this.guid) return new Promise(r => this.diff(fresh).start(r)); 18883 }); 18884 } 18885 } else if (is.fun(props.to)) { 18886 let index = 0; 18887 let last; 18888 queue = queue.then(() => props.to( // next(props) 18889 p => { 18890 const fresh = Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, props, interpolateTo(p)); 18891 18892 if (is.arr(fresh.config)) fresh.config = fresh.config[index]; 18893 index++; //this.stop() 18894 18895 if (local === this.guid) return last = new Promise(r => this.diff(fresh).start(r)); 18896 return; 18897 }, // cancel() 18898 function (finished) { 18899 if (finished === void 0) { 18900 finished = true; 18901 } 18902 18903 return _this.stop(finished); 18904 }).then(() => last)); 18905 } 18906 18907 queue.then(onEnd); 18908 } 18909 18910 diff(props) { 18911 this.props = Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, this.props, props); 18912 let _this$props = this.props, 18913 _this$props$from = _this$props.from, 18914 from = _this$props$from === void 0 ? {} : _this$props$from, 18915 _this$props$to = _this$props.to, 18916 to = _this$props$to === void 0 ? {} : _this$props$to, 18917 _this$props$config = _this$props.config, 18918 config = _this$props$config === void 0 ? {} : _this$props$config, 18919 reverse = _this$props.reverse, 18920 attach = _this$props.attach, 18921 reset = _this$props.reset, 18922 immediate = _this$props.immediate; // Reverse values when requested 18923 18924 if (reverse) { 18925 var _ref6 = [to, from]; 18926 from = _ref6[0]; 18927 to = _ref6[1]; 18928 } // This will collect all props that were ever set, reset merged props when necessary 18929 18930 18931 this.merged = Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, from, this.merged, to); 18932 this.hasChanged = false; // Attachment handling, trailed springs can "attach" themselves to a previous spring 18933 18934 let target = attach && attach(this); // Reduces input { name: value } pairs into animated values 18935 18936 this.animations = Object.entries(this.merged).reduce((acc, _ref7) => { 18937 let name = _ref7[0], 18938 value = _ref7[1]; // Issue cached entries, except on reset 18939 18940 let entry = acc[name] || {}; // Figure out what the value is supposed to be 18941 18942 const isNumber = is.num(value); 18943 const isString = is.str(value) && !value.startsWith('#') && !/\d/.test(value) && !colorNames[value]; 18944 const isArray = is.arr(value); 18945 const isInterpolation = !isNumber && !isArray && !isString; 18946 let fromValue = !is.und(from[name]) ? from[name] : value; 18947 let toValue = isNumber || isArray ? value : isString ? value : 1; 18948 let toConfig = callProp(config, name); 18949 if (target) toValue = target.animations[name].parent; 18950 let parent = entry.parent, 18951 interpolation$$1 = entry.interpolation, 18952 toValues = toArray(target ? toValue.getPayload() : toValue), 18953 animatedValues; 18954 let newValue = value; 18955 if (isInterpolation) newValue = interpolation({ 18956 range: [0, 1], 18957 output: [value, value] 18958 })(1); 18959 let currentValue = interpolation$$1 && interpolation$$1.getValue(); // Change detection flags 18960 18961 const isFirst = is.und(parent); 18962 const isActive = !isFirst && entry.animatedValues.some(v => !v.done); 18963 const currentValueDiffersFromGoal = !is.equ(newValue, currentValue); 18964 const hasNewGoal = !is.equ(newValue, entry.previous); 18965 const hasNewConfig = !is.equ(toConfig, entry.config); // Change animation props when props indicate a new goal (new value differs from previous one) 18966 // and current values differ from it. Config changes trigger a new update as well (though probably shouldn't?) 18967 18968 if (reset || hasNewGoal && currentValueDiffersFromGoal || hasNewConfig) { 18969 // Convert regular values into animated values, ALWAYS re-use if possible 18970 if (isNumber || isString) parent = interpolation$$1 = entry.parent || new AnimatedValue(fromValue);else if (isArray) parent = interpolation$$1 = entry.parent || new AnimatedValueArray(fromValue);else if (isInterpolation) { 18971 let prev = entry.interpolation && entry.interpolation.calc(entry.parent.value); 18972 prev = prev !== void 0 && !reset ? prev : fromValue; 18973 18974 if (entry.parent) { 18975 parent = entry.parent; 18976 parent.setValue(0, false); 18977 } else parent = new AnimatedValue(0); 18978 18979 const range = { 18980 output: [prev, value] 18981 }; 18982 18983 if (entry.interpolation) { 18984 interpolation$$1 = entry.interpolation; 18985 entry.interpolation.updateConfig(range); 18986 } else interpolation$$1 = parent.interpolate(range); 18987 } 18988 toValues = toArray(target ? toValue.getPayload() : toValue); 18989 animatedValues = toArray(parent.getPayload()); 18990 if (reset && !isInterpolation) parent.setValue(fromValue, false); 18991 this.hasChanged = true; // Reset animated values 18992 18993 animatedValues.forEach(value => { 18994 value.startPosition = value.value; 18995 value.lastPosition = value.value; 18996 value.lastVelocity = isActive ? value.lastVelocity : undefined; 18997 value.lastTime = isActive ? value.lastTime : undefined; 18998 value.startTime = now(); 18999 value.done = false; 19000 value.animatedStyles.clear(); 19001 }); // Set immediate values 19002 19003 if (callProp(immediate, name)) { 19004 parent.setValue(isInterpolation ? toValue : value, false); 19005 } 19006 19007 return Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, acc, { 19008 [name]: Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, entry, { 19009 name, 19010 parent, 19011 interpolation: interpolation$$1, 19012 animatedValues, 19013 toValues, 19014 previous: newValue, 19015 config: toConfig, 19016 fromValues: toArray(parent.getValue()), 19017 immediate: callProp(immediate, name), 19018 initialVelocity: withDefault(toConfig.velocity, 0), 19019 clamp: withDefault(toConfig.clamp, false), 19020 precision: withDefault(toConfig.precision, 0.01), 19021 tension: withDefault(toConfig.tension, 170), 19022 friction: withDefault(toConfig.friction, 26), 19023 mass: withDefault(toConfig.mass, 1), 19024 duration: toConfig.duration, 19025 easing: withDefault(toConfig.easing, t => t), 19026 decay: toConfig.decay 19027 }) 19028 }); 19029 } else { 19030 if (!currentValueDiffersFromGoal) { 19031 // So ... the current target value (newValue) appears to be different from the previous value, 19032 // which normally constitutes an update, but the actual value (currentValue) matches the target! 19033 // In order to resolve this without causing an animation update we silently flag the animation as done, 19034 // which it technically is. Interpolations also needs a config update with their target set to 1. 19035 if (isInterpolation) { 19036 parent.setValue(1, false); 19037 interpolation$$1.updateConfig({ 19038 output: [newValue, newValue] 19039 }); 19040 } 19041 19042 parent.done = true; 19043 this.hasChanged = true; 19044 return Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, acc, { 19045 [name]: Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, acc[name], { 19046 previous: newValue 19047 }) 19048 }); 19049 } 19050 19051 return acc; 19052 } 19053 }, this.animations); 19054 19055 if (this.hasChanged) { 19056 // Make animations available to frameloop 19057 this.configs = Object.values(this.animations); 19058 this.values = {}; 19059 this.interpolations = {}; 19060 19061 for (let key in this.animations) { 19062 this.interpolations[key] = this.animations[key].interpolation; 19063 this.values[key] = this.animations[key].interpolation.getValue(); 19064 } 19065 } 19066 19067 return this; 19068 } 19069 19070 destroy() { 19071 this.stop(); 19072 this.props = {}; 19073 this.merged = {}; 19074 this.animations = {}; 19075 this.interpolations = {}; 19076 this.values = {}; 19077 this.configs = []; 19078 this.local = 0; 19079 } 19080 19081} 19082/** API 19083 * const props = useSprings(number, [{ ... }, { ... }, ...]) 19084 * const [props, set] = useSprings(number, (i, controller) => ({ ... })) 19085 */ 19086 19087 19088const useSprings = (length, props) => { 19089 const mounted = Object(react__WEBPACK_IMPORTED_MODULE_2__["useRef"])(false); 19090 const ctrl = Object(react__WEBPACK_IMPORTED_MODULE_2__["useRef"])(); 19091 const isFn = is.fun(props); // The controller maintains the animation values, starts and stops animations 19092 19093 const _useMemo = Object(react__WEBPACK_IMPORTED_MODULE_2__["useMemo"])(() => { 19094 // Remove old controllers 19095 if (ctrl.current) { 19096 ctrl.current.map(c => c.destroy()); 19097 ctrl.current = undefined; 19098 } 19099 19100 let ref; 19101 return [new Array(length).fill().map((_, i) => { 19102 const ctrl = new Controller(); 19103 const newProps = isFn ? callProp(props, i, ctrl) : props[i]; 19104 if (i === 0) ref = newProps.ref; 19105 ctrl.update(newProps); 19106 if (!ref) ctrl.start(); 19107 return ctrl; 19108 }), ref]; 19109 }, [length]), 19110 controllers = _useMemo[0], 19111 ref = _useMemo[1]; 19112 19113 ctrl.current = controllers; // The hooks reference api gets defined here ... 19114 19115 const api = Object(react__WEBPACK_IMPORTED_MODULE_2__["useImperativeHandle"])(ref, () => ({ 19116 start: () => Promise.all(ctrl.current.map(c => new Promise(r => c.start(r)))), 19117 stop: finished => ctrl.current.forEach(c => c.stop(finished)), 19118 19119 get controllers() { 19120 return ctrl.current; 19121 } 19122 19123 })); // This function updates the controllers 19124 19125 const updateCtrl = Object(react__WEBPACK_IMPORTED_MODULE_2__["useMemo"])(() => updateProps => ctrl.current.map((c, i) => { 19126 c.update(isFn ? callProp(updateProps, i, c) : updateProps[i]); 19127 if (!ref) c.start(); 19128 }), [length]); // Update controller if props aren't functional 19129 19130 Object(react__WEBPACK_IMPORTED_MODULE_2__["useEffect"])(() => { 19131 if (mounted.current) { 19132 if (!isFn) updateCtrl(props); 19133 } else if (!ref) ctrl.current.forEach(c => c.start()); 19134 }); // Update mounted flag and destroy controller on unmount 19135 19136 Object(react__WEBPACK_IMPORTED_MODULE_2__["useEffect"])(() => (mounted.current = true, () => ctrl.current.forEach(c => c.destroy())), []); // Return animated props, or, anim-props + the update-setter above 19137 19138 const propValues = ctrl.current.map(c => c.getValues()); 19139 return isFn ? [propValues, updateCtrl, finished => ctrl.current.forEach(c => c.pause(finished))] : propValues; 19140}; 19141/** API 19142 * const props = useSpring({ ... }) 19143 * const [props, set] = useSpring(() => ({ ... })) 19144 */ 19145 19146 19147const useSpring = props => { 19148 const isFn = is.fun(props); 19149 19150 const _useSprings = useSprings(1, isFn ? props : [props]), 19151 result = _useSprings[0], 19152 set = _useSprings[1], 19153 pause = _useSprings[2]; 19154 19155 return isFn ? [result[0], set, pause] : result; 19156}; 19157/** API 19158 * const trails = useTrail(number, { ... }) 19159 * const [trails, set] = useTrail(number, () => ({ ... })) 19160 */ 19161 19162 19163const useTrail = (length, props) => { 19164 const mounted = Object(react__WEBPACK_IMPORTED_MODULE_2__["useRef"])(false); 19165 const isFn = is.fun(props); 19166 const updateProps = callProp(props); 19167 const instances = Object(react__WEBPACK_IMPORTED_MODULE_2__["useRef"])(); 19168 19169 const _useSprings = useSprings(length, (i, ctrl) => { 19170 if (i === 0) instances.current = []; 19171 instances.current.push(ctrl); 19172 return Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, updateProps, { 19173 config: callProp(updateProps.config, i), 19174 attach: i > 0 && (() => instances.current[i - 1]) 19175 }); 19176 }), 19177 result = _useSprings[0], 19178 set = _useSprings[1], 19179 pause = _useSprings[2]; // Set up function to update controller 19180 19181 19182 const updateCtrl = Object(react__WEBPACK_IMPORTED_MODULE_2__["useMemo"])(() => props => set((i, ctrl) => { 19183 const last = props.reverse ? i === 0 : length - 1 === i; 19184 const attachIdx = props.reverse ? i + 1 : i - 1; 19185 const attachController = instances.current[attachIdx]; 19186 return Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, props, { 19187 config: callProp(props.config || updateProps.config, i), 19188 attach: attachController && (() => attachController) 19189 }); 19190 }), [length, updateProps.reverse]); // Update controller if props aren't functional 19191 19192 Object(react__WEBPACK_IMPORTED_MODULE_2__["useEffect"])(() => void (mounted.current && !isFn && updateCtrl(props))); // Update mounted flag and destroy controller on unmount 19193 19194 Object(react__WEBPACK_IMPORTED_MODULE_2__["useEffect"])(() => void (mounted.current = true), []); 19195 return isFn ? [result, updateCtrl, pause] : result; 19196}; 19197/** API 19198 * const transitions = useTransition(items, itemKeys, { ... }) 19199 * const [transitions, update] = useTransition(items, itemKeys, () => ({ ... })) 19200 */ 19201 19202 19203let guid = 0; 19204const ENTER = 'enter'; 19205const LEAVE = 'leave'; 19206const UPDATE = 'update'; 19207 19208const mapKeys = (items, keys) => (typeof keys === 'function' ? items.map(keys) : toArray(keys)).map(String); 19209 19210const get = props => { 19211 let items = props.items, 19212 _props$keys = props.keys, 19213 keys = _props$keys === void 0 ? item => item : _props$keys, 19214 rest = Object(_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__["default"])(props, ["items", "keys"]); 19215 19216 items = toArray(items !== void 0 ? items : null); 19217 return Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({ 19218 items, 19219 keys: mapKeys(items, keys) 19220 }, rest); 19221}; 19222 19223function useTransition(input, keyTransform, config) { 19224 const props = Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({ 19225 items: input, 19226 keys: keyTransform || (i => i) 19227 }, config); 19228 19229 const _get = get(props), 19230 _get$lazy = _get.lazy, 19231 lazy = _get$lazy === void 0 ? false : _get$lazy, 19232 _get$unique = _get.unique, 19233 _get$reset = _get.reset, 19234 reset = _get$reset === void 0 ? false : _get$reset, 19235 enter = _get.enter, 19236 leave = _get.leave, 19237 update = _get.update, 19238 onDestroyed = _get.onDestroyed, 19239 keys = _get.keys, 19240 items = _get.items, 19241 onFrame = _get.onFrame, 19242 _onRest = _get.onRest, 19243 onStart = _get.onStart, 19244 ref = _get.ref, 19245 extra = Object(_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__["default"])(_get, ["lazy", "unique", "reset", "enter", "leave", "update", "onDestroyed", "keys", "items", "onFrame", "onRest", "onStart", "ref"]); 19246 19247 const forceUpdate = useForceUpdate(); 19248 const mounted = Object(react__WEBPACK_IMPORTED_MODULE_2__["useRef"])(false); 19249 const state = Object(react__WEBPACK_IMPORTED_MODULE_2__["useRef"])({ 19250 mounted: false, 19251 first: true, 19252 deleted: [], 19253 current: {}, 19254 transitions: [], 19255 prevProps: {}, 19256 paused: !!props.ref, 19257 instances: !mounted.current && new Map(), 19258 forceUpdate 19259 }); 19260 Object(react__WEBPACK_IMPORTED_MODULE_2__["useImperativeHandle"])(props.ref, () => ({ 19261 start: () => Promise.all(Array.from(state.current.instances).map(_ref => { 19262 let c = _ref[1]; 19263 return new Promise(r => c.start(r)); 19264 })), 19265 stop: finished => Array.from(state.current.instances).forEach(_ref2 => { 19266 let c = _ref2[1]; 19267 return c.stop(finished); 19268 }), 19269 19270 get controllers() { 19271 return Array.from(state.current.instances).map(_ref3 => { 19272 let c = _ref3[1]; 19273 return c; 19274 }); 19275 } 19276 19277 })); // Update state 19278 19279 state.current = diffItems(state.current, props); 19280 19281 if (state.current.changed) { 19282 // Update state 19283 state.current.transitions.forEach(transition => { 19284 const slot = transition.slot, 19285 from = transition.from, 19286 to = transition.to, 19287 config = transition.config, 19288 trail = transition.trail, 19289 key = transition.key, 19290 item = transition.item; 19291 if (!state.current.instances.has(key)) state.current.instances.set(key, new Controller()); // update the map object 19292 19293 const ctrl = state.current.instances.get(key); 19294 19295 const newProps = Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, extra, { 19296 to, 19297 from, 19298 config, 19299 ref, 19300 onRest: values => { 19301 if (state.current.mounted) { 19302 if (transition.destroyed) { 19303 // If no ref is given delete destroyed items immediately 19304 if (!ref && !lazy) cleanUp(state, key); 19305 if (onDestroyed) onDestroyed(item); 19306 } // A transition comes to rest once all its springs conclude 19307 19308 19309 const curInstances = Array.from(state.current.instances); 19310 const active = curInstances.some(_ref4 => { 19311 let c = _ref4[1]; 19312 return !c.idle; 19313 }); 19314 if (!active && (ref || lazy) && state.current.deleted.length > 0) cleanUp(state); 19315 if (_onRest) _onRest(item, slot, values); 19316 } 19317 }, 19318 onStart: onStart && (() => onStart(item, slot)), 19319 onFrame: onFrame && (values => onFrame(item, slot, values)), 19320 delay: trail, 19321 reset: reset && slot === ENTER // Update controller 19322 19323 }); 19324 19325 ctrl.update(newProps); 19326 if (!state.current.paused) ctrl.start(); 19327 }); 19328 } 19329 19330 Object(react__WEBPACK_IMPORTED_MODULE_2__["useEffect"])(() => { 19331 state.current.mounted = mounted.current = true; 19332 return () => { 19333 state.current.mounted = mounted.current = false; 19334 Array.from(state.current.instances).map(_ref5 => { 19335 let c = _ref5[1]; 19336 return c.destroy(); 19337 }); 19338 state.current.instances.clear(); 19339 }; 19340 }, []); 19341 return state.current.transitions.map(_ref6 => { 19342 let item = _ref6.item, 19343 slot = _ref6.slot, 19344 key = _ref6.key; 19345 return { 19346 item, 19347 key, 19348 state: slot, 19349 props: state.current.instances.get(key).getValues() 19350 }; 19351 }); 19352} 19353 19354function cleanUp(state, filterKey) { 19355 const deleted = state.current.deleted; 19356 19357 for (let _ref7 of deleted) { 19358 let key = _ref7.key; 19359 19360 const filter = t => t.key !== key; 19361 19362 if (is.und(filterKey) || filterKey === key) { 19363 state.current.instances.delete(key); 19364 state.current.transitions = state.current.transitions.filter(filter); 19365 state.current.deleted = state.current.deleted.filter(filter); 19366 } 19367 } 19368 19369 state.current.forceUpdate(); 19370} 19371 19372function diffItems(_ref8, props) { 19373 let first = _ref8.first, 19374 prevProps = _ref8.prevProps, 19375 state = Object(_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__["default"])(_ref8, ["first", "prevProps"]); 19376 19377 let _get2 = get(props), 19378 items = _get2.items, 19379 keys = _get2.keys, 19380 initial = _get2.initial, 19381 from = _get2.from, 19382 enter = _get2.enter, 19383 leave = _get2.leave, 19384 update = _get2.update, 19385 _get2$trail = _get2.trail, 19386 trail = _get2$trail === void 0 ? 0 : _get2$trail, 19387 unique = _get2.unique, 19388 config = _get2.config, 19389 _get2$order = _get2.order, 19390 order = _get2$order === void 0 ? [ENTER, LEAVE, UPDATE] : _get2$order; 19391 19392 let _get3 = get(prevProps), 19393 _keys = _get3.keys, 19394 _items = _get3.items; 19395 19396 let current = Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, state.current); 19397 19398 let deleted = [...state.deleted]; // Compare next keys with current keys 19399 19400 let currentKeys = Object.keys(current); 19401 let currentSet = new Set(currentKeys); 19402 let nextSet = new Set(keys); 19403 let added = keys.filter(item => !currentSet.has(item)); 19404 let removed = state.transitions.filter(item => !item.destroyed && !nextSet.has(item.originalKey)).map(i => i.originalKey); 19405 let updated = keys.filter(item => currentSet.has(item)); 19406 let delay = -trail; 19407 19408 while (order.length) { 19409 const changeType = order.shift(); 19410 19411 switch (changeType) { 19412 case ENTER: 19413 { 19414 added.forEach((key, index) => { 19415 // In unique mode, remove fading out transitions if their key comes in again 19416 if (unique && deleted.find(d => d.originalKey === key)) deleted = deleted.filter(t => t.originalKey !== key); 19417 const keyIndex = keys.indexOf(key); 19418 const item = items[keyIndex]; 19419 const slot = first && initial !== void 0 ? 'initial' : ENTER; 19420 current[key] = { 19421 slot, 19422 originalKey: key, 19423 key: unique ? String(key) : guid++, 19424 item, 19425 trail: delay = delay + trail, 19426 config: callProp(config, item, slot), 19427 from: callProp(first ? initial !== void 0 ? initial || {} : from : from, item), 19428 to: callProp(enter, item) 19429 }; 19430 }); 19431 break; 19432 } 19433 19434 case LEAVE: 19435 { 19436 removed.forEach(key => { 19437 const keyIndex = _keys.indexOf(key); 19438 19439 const item = _items[keyIndex]; 19440 const slot = LEAVE; 19441 deleted.unshift(Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, current[key], { 19442 slot, 19443 destroyed: true, 19444 left: _keys[Math.max(0, keyIndex - 1)], 19445 right: _keys[Math.min(_keys.length, keyIndex + 1)], 19446 trail: delay = delay + trail, 19447 config: callProp(config, item, slot), 19448 to: callProp(leave, item) 19449 })); 19450 delete current[key]; 19451 }); 19452 break; 19453 } 19454 19455 case UPDATE: 19456 { 19457 updated.forEach(key => { 19458 const keyIndex = keys.indexOf(key); 19459 const item = items[keyIndex]; 19460 const slot = UPDATE; 19461 current[key] = Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, current[key], { 19462 item, 19463 slot, 19464 trail: delay = delay + trail, 19465 config: callProp(config, item, slot), 19466 to: callProp(update, item) 19467 }); 19468 }); 19469 break; 19470 } 19471 } 19472 } 19473 19474 let out = keys.map(key => current[key]); // This tries to restore order for deleted items by finding their last known siblings 19475 // only using the left sibling to keep order placement consistent for all deleted items 19476 19477 deleted.forEach(_ref9 => { 19478 let left = _ref9.left, 19479 right = _ref9.right, 19480 item = Object(_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__["default"])(_ref9, ["left", "right"]); 19481 19482 let pos; // Was it the element on the left, if yes, move there ... 19483 19484 if ((pos = out.findIndex(t => t.originalKey === left)) !== -1) pos += 1; // And if nothing else helps, move it to the start ¯\_(ã)_/¯ 19485 19486 pos = Math.max(0, pos); 19487 out = [...out.slice(0, pos), item, ...out.slice(pos)]; 19488 }); 19489 return Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, state, { 19490 changed: added.length || removed.length || updated.length, 19491 first: first && added.length === 0, 19492 transitions: out, 19493 current, 19494 deleted, 19495 prevProps: props 19496 }); 19497} 19498 19499class AnimatedStyle extends AnimatedObject { 19500 constructor(style) { 19501 if (style === void 0) { 19502 style = {}; 19503 } 19504 19505 super(); 19506 19507 if (style.transform && !(style.transform instanceof Animated)) { 19508 style = applyAnimatedValues.transform(style); 19509 } 19510 19511 this.payload = style; 19512 } 19513 19514} // http://www.w3.org/TR/css3-color/#svg-color 19515 19516 19517const colors = { 19518 transparent: 0x00000000, 19519 aliceblue: 0xf0f8ffff, 19520 antiquewhite: 0xfaebd7ff, 19521 aqua: 0x00ffffff, 19522 aquamarine: 0x7fffd4ff, 19523 azure: 0xf0ffffff, 19524 beige: 0xf5f5dcff, 19525 bisque: 0xffe4c4ff, 19526 black: 0x000000ff, 19527 blanchedalmond: 0xffebcdff, 19528 blue: 0x0000ffff, 19529 blueviolet: 0x8a2be2ff, 19530 brown: 0xa52a2aff, 19531 burlywood: 0xdeb887ff, 19532 burntsienna: 0xea7e5dff, 19533 cadetblue: 0x5f9ea0ff, 19534 chartreuse: 0x7fff00ff, 19535 chocolate: 0xd2691eff, 19536 coral: 0xff7f50ff, 19537 cornflowerblue: 0x6495edff, 19538 cornsilk: 0xfff8dcff, 19539 crimson: 0xdc143cff, 19540 cyan: 0x00ffffff, 19541 darkblue: 0x00008bff, 19542 darkcyan: 0x008b8bff, 19543 darkgoldenrod: 0xb8860bff, 19544 darkgray: 0xa9a9a9ff, 19545 darkgreen: 0x006400ff, 19546 darkgrey: 0xa9a9a9ff, 19547 darkkhaki: 0xbdb76bff, 19548 darkmagenta: 0x8b008bff, 19549 darkolivegreen: 0x556b2fff, 19550 darkorange: 0xff8c00ff, 19551 darkorchid: 0x9932ccff, 19552 darkred: 0x8b0000ff, 19553 darksalmon: 0xe9967aff, 19554 darkseagreen: 0x8fbc8fff, 19555 darkslateblue: 0x483d8bff, 19556 darkslategray: 0x2f4f4fff, 19557 darkslategrey: 0x2f4f4fff, 19558 darkturquoise: 0x00ced1ff, 19559 darkviolet: 0x9400d3ff, 19560 deeppink: 0xff1493ff, 19561 deepskyblue: 0x00bfffff, 19562 dimgray: 0x696969ff, 19563 dimgrey: 0x696969ff, 19564 dodgerblue: 0x1e90ffff, 19565 firebrick: 0xb22222ff, 19566 floralwhite: 0xfffaf0ff, 19567 forestgreen: 0x228b22ff, 19568 fuchsia: 0xff00ffff, 19569 gainsboro: 0xdcdcdcff, 19570 ghostwhite: 0xf8f8ffff, 19571 gold: 0xffd700ff, 19572 goldenrod: 0xdaa520ff, 19573 gray: 0x808080ff, 19574 green: 0x008000ff, 19575 greenyellow: 0xadff2fff, 19576 grey: 0x808080ff, 19577 honeydew: 0xf0fff0ff, 19578 hotpink: 0xff69b4ff, 19579 indianred: 0xcd5c5cff, 19580 indigo: 0x4b0082ff, 19581 ivory: 0xfffff0ff, 19582 khaki: 0xf0e68cff, 19583 lavender: 0xe6e6faff, 19584 lavenderblush: 0xfff0f5ff, 19585 lawngreen: 0x7cfc00ff, 19586 lemonchiffon: 0xfffacdff, 19587 lightblue: 0xadd8e6ff, 19588 lightcoral: 0xf08080ff, 19589 lightcyan: 0xe0ffffff, 19590 lightgoldenrodyellow: 0xfafad2ff, 19591 lightgray: 0xd3d3d3ff, 19592 lightgreen: 0x90ee90ff, 19593 lightgrey: 0xd3d3d3ff, 19594 lightpink: 0xffb6c1ff, 19595 lightsalmon: 0xffa07aff, 19596 lightseagreen: 0x20b2aaff, 19597 lightskyblue: 0x87cefaff, 19598 lightslategray: 0x778899ff, 19599 lightslategrey: 0x778899ff, 19600 lightsteelblue: 0xb0c4deff, 19601 lightyellow: 0xffffe0ff, 19602 lime: 0x00ff00ff, 19603 limegreen: 0x32cd32ff, 19604 linen: 0xfaf0e6ff, 19605 magenta: 0xff00ffff, 19606 maroon: 0x800000ff, 19607 mediumaquamarine: 0x66cdaaff, 19608 mediumblue: 0x0000cdff, 19609 mediumorchid: 0xba55d3ff, 19610 mediumpurple: 0x9370dbff, 19611 mediumseagreen: 0x3cb371ff, 19612 mediumslateblue: 0x7b68eeff, 19613 mediumspringgreen: 0x00fa9aff, 19614 mediumturquoise: 0x48d1ccff, 19615 mediumvioletred: 0xc71585ff, 19616 midnightblue: 0x191970ff, 19617 mintcream: 0xf5fffaff, 19618 mistyrose: 0xffe4e1ff, 19619 moccasin: 0xffe4b5ff, 19620 navajowhite: 0xffdeadff, 19621 navy: 0x000080ff, 19622 oldlace: 0xfdf5e6ff, 19623 olive: 0x808000ff, 19624 olivedrab: 0x6b8e23ff, 19625 orange: 0xffa500ff, 19626 orangered: 0xff4500ff, 19627 orchid: 0xda70d6ff, 19628 palegoldenrod: 0xeee8aaff, 19629 palegreen: 0x98fb98ff, 19630 paleturquoise: 0xafeeeeff, 19631 palevioletred: 0xdb7093ff, 19632 papayawhip: 0xffefd5ff, 19633 peachpuff: 0xffdab9ff, 19634 peru: 0xcd853fff, 19635 pink: 0xffc0cbff, 19636 plum: 0xdda0ddff, 19637 powderblue: 0xb0e0e6ff, 19638 purple: 0x800080ff, 19639 rebeccapurple: 0x663399ff, 19640 red: 0xff0000ff, 19641 rosybrown: 0xbc8f8fff, 19642 royalblue: 0x4169e1ff, 19643 saddlebrown: 0x8b4513ff, 19644 salmon: 0xfa8072ff, 19645 sandybrown: 0xf4a460ff, 19646 seagreen: 0x2e8b57ff, 19647 seashell: 0xfff5eeff, 19648 sienna: 0xa0522dff, 19649 silver: 0xc0c0c0ff, 19650 skyblue: 0x87ceebff, 19651 slateblue: 0x6a5acdff, 19652 slategray: 0x708090ff, 19653 slategrey: 0x708090ff, 19654 snow: 0xfffafaff, 19655 springgreen: 0x00ff7fff, 19656 steelblue: 0x4682b4ff, 19657 tan: 0xd2b48cff, 19658 teal: 0x008080ff, 19659 thistle: 0xd8bfd8ff, 19660 tomato: 0xff6347ff, 19661 turquoise: 0x40e0d0ff, 19662 violet: 0xee82eeff, 19663 wheat: 0xf5deb3ff, 19664 white: 0xffffffff, 19665 whitesmoke: 0xf5f5f5ff, 19666 yellow: 0xffff00ff, 19667 yellowgreen: 0x9acd32ff 19668}; // const INTEGER = '[-+]?\\d+'; 19669 19670const NUMBER = '[-+]?\\d*\\.?\\d+'; 19671const PERCENTAGE = NUMBER + '%'; 19672 19673function call() { 19674 for (var _len = arguments.length, parts = new Array(_len), _key = 0; _key < _len; _key++) { 19675 parts[_key] = arguments[_key]; 19676 } 19677 19678 return '\\(\\s*(' + parts.join(')\\s*,\\s*(') + ')\\s*\\)'; 19679} 19680 19681const rgb = new RegExp('rgb' + call(NUMBER, NUMBER, NUMBER)); 19682const rgba = new RegExp('rgba' + call(NUMBER, NUMBER, NUMBER, NUMBER)); 19683const hsl = new RegExp('hsl' + call(NUMBER, PERCENTAGE, PERCENTAGE)); 19684const hsla = new RegExp('hsla' + call(NUMBER, PERCENTAGE, PERCENTAGE, NUMBER)); 19685const hex3 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/; 19686const hex4 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/; 19687const hex6 = /^#([0-9a-fA-F]{6})$/; 19688const hex8 = /^#([0-9a-fA-F]{8})$/; 19689/* 19690https://github.com/react-community/normalize-css-color 19691 19692BSD 3-Clause License 19693 19694Copyright (c) 2016, React Community 19695All rights reserved. 19696 19697Redistribution and use in source and binary forms, with or without 19698modification, are permitted provided that the following conditions are met: 19699 19700* Redistributions of source code must retain the above copyright notice, this 19701 list of conditions and the following disclaimer. 19702 19703* Redistributions in binary form must reproduce the above copyright notice, 19704 this list of conditions and the following disclaimer in the documentation 19705 and/or other materials provided with the distribution. 19706 19707* Neither the name of the copyright holder nor the names of its 19708 contributors may be used to endorse or promote products derived from 19709 this software without specific prior written permission. 19710 19711THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 19712AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 19713IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 19714DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 19715FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19716DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 19717SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 19718CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 19719OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 19720OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 19721*/ 19722 19723function normalizeColor(color) { 19724 let match; 19725 19726 if (typeof color === 'number') { 19727 return color >>> 0 === color && color >= 0 && color <= 0xffffffff ? color : null; 19728 } // Ordered based on occurrences on Facebook codebase 19729 19730 19731 if (match = hex6.exec(color)) return parseInt(match[1] + 'ff', 16) >>> 0; 19732 if (colors.hasOwnProperty(color)) return colors[color]; 19733 19734 if (match = rgb.exec(color)) { 19735 return (parse255(match[1]) << 24 | // r 19736 parse255(match[2]) << 16 | // g 19737 parse255(match[3]) << 8 | // b 19738 0x000000ff) >>> // a 19739 0; 19740 } 19741 19742 if (match = rgba.exec(color)) { 19743 return (parse255(match[1]) << 24 | // r 19744 parse255(match[2]) << 16 | // g 19745 parse255(match[3]) << 8 | // b 19746 parse1(match[4])) >>> // a 19747 0; 19748 } 19749 19750 if (match = hex3.exec(color)) { 19751 return parseInt(match[1] + match[1] + // r 19752 match[2] + match[2] + // g 19753 match[3] + match[3] + // b 19754 'ff', // a 19755 16) >>> 0; 19756 } // https://drafts.csswg.org/css-color-4/#hex-notation 19757 19758 19759 if (match = hex8.exec(color)) return parseInt(match[1], 16) >>> 0; 19760 19761 if (match = hex4.exec(color)) { 19762 return parseInt(match[1] + match[1] + // r 19763 match[2] + match[2] + // g 19764 match[3] + match[3] + // b 19765 match[4] + match[4], // a 19766 16) >>> 0; 19767 } 19768 19769 if (match = hsl.exec(color)) { 19770 return (hslToRgb(parse360(match[1]), // h 19771 parsePercentage(match[2]), // s 19772 parsePercentage(match[3]) // l 19773 ) | 0x000000ff) >>> // a 19774 0; 19775 } 19776 19777 if (match = hsla.exec(color)) { 19778 return (hslToRgb(parse360(match[1]), // h 19779 parsePercentage(match[2]), // s 19780 parsePercentage(match[3]) // l 19781 ) | parse1(match[4])) >>> // a 19782 0; 19783 } 19784 19785 return null; 19786} 19787 19788function hue2rgb(p, q, t) { 19789 if (t < 0) t += 1; 19790 if (t > 1) t -= 1; 19791 if (t < 1 / 6) return p + (q - p) * 6 * t; 19792 if (t < 1 / 2) return q; 19793 if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6; 19794 return p; 19795} 19796 19797function hslToRgb(h, s, l) { 19798 const q = l < 0.5 ? l * (1 + s) : l + s - l * s; 19799 const p = 2 * l - q; 19800 const r = hue2rgb(p, q, h + 1 / 3); 19801 const g = hue2rgb(p, q, h); 19802 const b = hue2rgb(p, q, h - 1 / 3); 19803 return Math.round(r * 255) << 24 | Math.round(g * 255) << 16 | Math.round(b * 255) << 8; 19804} 19805 19806function parse255(str) { 19807 const int = parseInt(str, 10); 19808 if (int < 0) return 0; 19809 if (int > 255) return 255; 19810 return int; 19811} 19812 19813function parse360(str) { 19814 const int = parseFloat(str); 19815 return (int % 360 + 360) % 360 / 360; 19816} 19817 19818function parse1(str) { 19819 const num = parseFloat(str); 19820 if (num < 0) return 0; 19821 if (num > 1) return 255; 19822 return Math.round(num * 255); 19823} 19824 19825function parsePercentage(str) { 19826 // parseFloat conveniently ignores the final % 19827 const int = parseFloat(str); 19828 if (int < 0) return 0; 19829 if (int > 100) return 1; 19830 return int / 100; 19831} 19832 19833function colorToRgba(input) { 19834 let int32Color = normalizeColor(input); 19835 if (int32Color === null) return input; 19836 int32Color = int32Color || 0; 19837 let r = (int32Color & 0xff000000) >>> 24; 19838 let g = (int32Color & 0x00ff0000) >>> 16; 19839 let b = (int32Color & 0x0000ff00) >>> 8; 19840 let a = (int32Color & 0x000000ff) / 255; 19841 return `rgba(${r}, ${g}, ${b}, ${a})`; 19842} // Problem: https://github.com/animatedjs/animated/pull/102 19843// Solution: https://stackoverflow.com/questions/638565/parsing-scientific-notation-sensibly/658662 19844 19845 19846const stringShapeRegex = /[+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?/g; // Covers rgb, rgba, hsl, hsla 19847// Taken from https://gist.github.com/olmokramer/82ccce673f86db7cda5e 19848 19849const colorRegex = /(#(?:[0-9a-f]{2}){2,4}|(#[0-9a-f]{3})|(rgb|hsl)a?\((-?\d+%?[,\s]+){2,3}\s*[\d\.]+%?\))/gi; // Covers color names (transparent, blue, etc.) 19850 19851const colorNamesRegex = new RegExp(`(${Object.keys(colors).join('|')})`, 'g'); 19852/** 19853 * Supports string shapes by extracting numbers so new values can be computed, 19854 * and recombines those values into new strings of the same shape. Supports 19855 * things like: 19856 * 19857 * rgba(123, 42, 99, 0.36) // colors 19858 * -45deg // values with units 19859 * 0 2px 2px 0px rgba(0, 0, 0, 0.12) // box shadows 19860 */ 19861 19862const createStringInterpolator = config => { 19863 // Replace colors with rgba 19864 const outputRange = config.output.map(rangeValue => rangeValue.replace(colorRegex, colorToRgba)).map(rangeValue => rangeValue.replace(colorNamesRegex, colorToRgba)); 19865 const outputRanges = outputRange[0].match(stringShapeRegex).map(() => []); 19866 outputRange.forEach(value => { 19867 value.match(stringShapeRegex).forEach((number, i) => outputRanges[i].push(+number)); 19868 }); 19869 const interpolations = outputRange[0].match(stringShapeRegex).map((_value, i) => createInterpolator(Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__["default"])({}, config, { 19870 output: outputRanges[i] 19871 }))); 19872 return input => { 19873 let i = 0; 19874 return outputRange[0] // 'rgba(0, 100, 200, 0)' 19875 // -> 19876 // 'rgba(${interpolations[0](input)}, ${interpolations[1](input)}, ...' 19877 .replace(stringShapeRegex, () => interpolations[i++](input)) // rgba requires that the r,g,b are integers.... so we want to round them, but we *dont* want to 19878 // round the opacity (4th column). 19879 .replace(/rgba\(([0-9\.-]+), ([0-9\.-]+), ([0-9\.-]+), ([0-9\.-]+)\)/gi, (_, p1, p2, p3, p4) => `rgba(${Math.round(p1)}, ${Math.round(p2)}, ${Math.round(p3)}, ${p4})`); 19880 }; 19881}; 19882 19883let isUnitlessNumber = { 19884 animationIterationCount: true, 19885 borderImageOutset: true, 19886 borderImageSlice: true, 19887 borderImageWidth: true, 19888 boxFlex: true, 19889 boxFlexGroup: true, 19890 boxOrdinalGroup: true, 19891 columnCount: true, 19892 columns: true, 19893 flex: true, 19894 flexGrow: true, 19895 flexPositive: true, 19896 flexShrink: true, 19897 flexNegative: true, 19898 flexOrder: true, 19899 gridRow: true, 19900 gridRowEnd: true, 19901 gridRowSpan: true, 19902 gridRowStart: true, 19903 gridColumn: true, 19904 gridColumnEnd: true, 19905 gridColumnSpan: true, 19906 gridColumnStart: true, 19907 fontWeight: true, 19908 lineClamp: true, 19909 lineHeight: true, 19910 opacity: true, 19911 order: true, 19912 orphans: true, 19913 tabSize: true, 19914 widows: true, 19915 zIndex: true, 19916 zoom: true, 19917 // SVG-related properties 19918 fillOpacity: true, 19919 floodOpacity: true, 19920 stopOpacity: true, 19921 strokeDasharray: true, 19922 strokeDashoffset: true, 19923 strokeMiterlimit: true, 19924 strokeOpacity: true, 19925 strokeWidth: true 19926}; 19927 19928const prefixKey = (prefix, key) => prefix + key.charAt(0).toUpperCase() + key.substring(1); 19929 19930const prefixes = ['Webkit', 'Ms', 'Moz', 'O']; 19931isUnitlessNumber = Object.keys(isUnitlessNumber).reduce((acc, prop) => { 19932 prefixes.forEach(prefix => acc[prefixKey(prefix, prop)] = acc[prop]); 19933 return acc; 19934}, isUnitlessNumber); 19935 19936function dangerousStyleValue(name, value, isCustomProperty) { 19937 if (value == null || typeof value === 'boolean' || value === '') return ''; 19938 if (!isCustomProperty && typeof value === 'number' && value !== 0 && !(isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name])) return value + 'px'; // Presumes implicit 'px' suffix for unitless numbers 19939 19940 return ('' + value).trim(); 19941} 19942 19943const attributeCache = {}; 19944injectCreateAnimatedStyle(style => new AnimatedStyle(style)); 19945injectDefaultElement('div'); 19946injectStringInterpolator(createStringInterpolator); 19947injectColorNames(colors); 19948injectApplyAnimatedValues((instance, props) => { 19949 if (instance.nodeType && instance.setAttribute !== undefined) { 19950 const style = props.style, 19951 children = props.children, 19952 scrollTop = props.scrollTop, 19953 scrollLeft = props.scrollLeft, 19954 attributes = Object(_babel_runtime_helpers_esm_objectWithoutPropertiesLoose__WEBPACK_IMPORTED_MODULE_1__["default"])(props, ["style", "children", "scrollTop", "scrollLeft"]); 19955 19956 const filter = instance.nodeName === 'filter' || instance.parentNode && instance.parentNode.nodeName === 'filter'; 19957 if (scrollTop !== void 0) instance.scrollTop = scrollTop; 19958 if (scrollLeft !== void 0) instance.scrollLeft = scrollLeft; // Set textContent, if children is an animatable value 19959 19960 if (children !== void 0) instance.textContent = children; // Set styles ... 19961 19962 for (let styleName in style) { 19963 if (!style.hasOwnProperty(styleName)) continue; 19964 var isCustomProperty = styleName.indexOf('--') === 0; 19965 var styleValue = dangerousStyleValue(styleName, style[styleName], isCustomProperty); 19966 if (styleName === 'float') styleName = 'cssFloat'; 19967 if (isCustomProperty) instance.style.setProperty(styleName, styleValue);else instance.style[styleName] = styleValue; 19968 } // Set attributes ... 19969 19970 19971 for (let name in attributes) { 19972 // Attributes are written in dash case 19973 const dashCase = filter ? name : attributeCache[name] || (attributeCache[name] = name.replace(/([A-Z])/g, n => '-' + n.toLowerCase())); 19974 if (typeof instance.getAttribute(dashCase) !== 'undefined') instance.setAttribute(dashCase, attributes[name]); 19975 } 19976 19977 return; 19978 } else return false; 19979}, style => style); 19980const domElements = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', // SVG 19981'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan']; // Extend animated with all the available THREE elements 19982 19983const apply = merge(createAnimatedComponent, false); 19984const extendedAnimated = apply(domElements); 19985 19986 19987/***/ }), 19988
vendor: 67,289 bytes, lines 19989-21875
19989/***/ "./node_modules/react/cjs/react.development.js": 19990/*!*****************************************************!*\ 19991 !*** ./node_modules/react/cjs/react.development.js ***! 19992 \*****************************************************/ 19993/*! no static exports found */ 19994/***/ (function(module, exports, __webpack_require__) { 19995 19996"use strict"; 19997/** @license React v16.13.1 19998 * react.development.js 19999 * 20000 * Copyright (c) Facebook, Inc. and its affiliates. 20001 * 20002 * This source code is licensed under the MIT license found in the 20003 * LICENSE file in the root directory of this source tree. 20004 */ 20005 20006 20007if (true) { 20008 (function () { 20009 'use strict'; 20010 20011 var _assign = __webpack_require__(/*! object-assign */ "./node_modules/object-assign/index.js"); 20012 20013 var checkPropTypes = __webpack_require__(/*! prop-types/checkPropTypes */ "./node_modules/prop-types/checkPropTypes.js"); 20014 20015 var ReactVersion = '16.13.1'; // The Symbol used to tag the ReactElement-like types. If there is no native Symbol 20016 // nor polyfill, then a plain number is used for performance. 20017 20018 var hasSymbol = typeof Symbol === 'function' && Symbol.for; 20019 var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7; 20020 var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca; 20021 var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb; 20022 var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc; 20023 var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2; 20024 var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd; 20025 var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary 20026 20027 var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf; 20028 var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0; 20029 var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1; 20030 var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8; 20031 var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3; 20032 var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4; 20033 var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9; 20034 var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5; 20035 var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6; 20036 var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7; 20037 var MAYBE_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator; 20038 var FAUX_ITERATOR_SYMBOL = '@@iterator'; 20039 20040 function getIteratorFn(maybeIterable) { 20041 if (maybeIterable === null || typeof maybeIterable !== 'object') { 20042 return null; 20043 } 20044 20045 var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]; 20046 20047 if (typeof maybeIterator === 'function') { 20048 return maybeIterator; 20049 } 20050 20051 return null; 20052 } 20053 /** 20054 * Keeps track of the current dispatcher. 20055 */ 20056 20057 20058 var ReactCurrentDispatcher = { 20059 /** 20060 * @internal 20061 * @type {ReactComponent} 20062 */ 20063 current: null 20064 }; 20065 /** 20066 * Keeps track of the current batch's configuration such as how long an update 20067 * should suspend for if it needs to. 20068 */ 20069 20070 var ReactCurrentBatchConfig = { 20071 suspense: null 20072 }; 20073 /** 20074 * Keeps track of the current owner. 20075 * 20076 * The current owner is the component who should own any components that are 20077 * currently being constructed. 20078 */ 20079 20080 var ReactCurrentOwner = { 20081 /** 20082 * @internal 20083 * @type {ReactComponent} 20084 */ 20085 current: null 20086 }; 20087 var BEFORE_SLASH_RE = /^(.*)[\\\/]/; 20088 20089 function describeComponentFrame(name, source, ownerName) { 20090 var sourceInfo = ''; 20091 20092 if (source) { 20093 var path = source.fileName; 20094 var fileName = path.replace(BEFORE_SLASH_RE, ''); 20095 { 20096 // In DEV, include code for a common special case: 20097 // prefer "folder/index.js" instead of just "index.js". 20098 if (/^index\./.test(fileName)) { 20099 var match = path.match(BEFORE_SLASH_RE); 20100 20101 if (match) { 20102 var pathBeforeSlash = match[1]; 20103 20104 if (pathBeforeSlash) { 20105 var folderName = pathBeforeSlash.replace(BEFORE_SLASH_RE, ''); 20106 fileName = folderName + '/' + fileName; 20107 } 20108 } 20109 } 20110 } 20111 sourceInfo = ' (at ' + fileName + ':' + source.lineNumber + ')'; 20112 } else if (ownerName) { 20113 sourceInfo = ' (created by ' + ownerName + ')'; 20114 } 20115 20116 return '\n in ' + (name || 'Unknown') + sourceInfo; 20117 } 20118 20119 var Resolved = 1; 20120 20121 function refineResolvedLazyComponent(lazyComponent) { 20122 return lazyComponent._status === Resolved ? lazyComponent._result : null; 20123 } 20124 20125 function getWrappedName(outerType, innerType, wrapperName) { 20126 var functionName = innerType.displayName || innerType.name || ''; 20127 return outerType.displayName || (functionName !== '' ? wrapperName + "(" + functionName + ")" : wrapperName); 20128 } 20129 20130 function getComponentName(type) { 20131 if (type == null) { 20132 // Host root, text node or just invalid type. 20133 return null; 20134 } 20135 20136 { 20137 if (typeof type.tag === 'number') { 20138 error('Received an unexpected object in getComponentName(). ' + 'This is likely a bug in React. Please file an issue.'); 20139 } 20140 } 20141 20142 if (typeof type === 'function') { 20143 return type.displayName || type.name || null; 20144 } 20145 20146 if (typeof type === 'string') { 20147 return type; 20148 } 20149 20150 switch (type) { 20151 case REACT_FRAGMENT_TYPE: 20152 return 'Fragment'; 20153 20154 case REACT_PORTAL_TYPE: 20155 return 'Portal'; 20156 20157 case REACT_PROFILER_TYPE: 20158 return "Profiler"; 20159 20160 case REACT_STRICT_MODE_TYPE: 20161 return 'StrictMode'; 20162 20163 case REACT_SUSPENSE_TYPE: 20164 return 'Suspense'; 20165 20166 case REACT_SUSPENSE_LIST_TYPE: 20167 return 'SuspenseList'; 20168 } 20169 20170 if (typeof type === 'object') { 20171 switch (type.$$typeof) { 20172 case REACT_CONTEXT_TYPE: 20173 return 'Context.Consumer'; 20174 20175 case REACT_PROVIDER_TYPE: 20176 return 'Context.Provider'; 20177 20178 case REACT_FORWARD_REF_TYPE: 20179 return getWrappedName(type, type.render, 'ForwardRef'); 20180 20181 case REACT_MEMO_TYPE: 20182 return getComponentName(type.type); 20183 20184 case REACT_BLOCK_TYPE: 20185 return getComponentName(type.render); 20186 20187 case REACT_LAZY_TYPE: 20188 { 20189 var thenable = type; 20190 var resolvedThenable = refineResolvedLazyComponent(thenable); 20191 20192 if (resolvedThenable) { 20193 return getComponentName(resolvedThenable); 20194 } 20195 20196 break; 20197 } 20198 } 20199 } 20200 20201 return null; 20202 } 20203 20204 var ReactDebugCurrentFrame = {}; 20205 var currentlyValidatingElement = null; 20206 20207 function setCurrentlyValidatingElement(element) { 20208 { 20209 currentlyValidatingElement = element; 20210 } 20211 } 20212 20213 { 20214 // Stack implementation injected by the current renderer. 20215 ReactDebugCurrentFrame.getCurrentStack = null; 20216 20217 ReactDebugCurrentFrame.getStackAddendum = function () { 20218 var stack = ''; // Add an extra top frame while an element is being validated 20219 20220 if (currentlyValidatingElement) { 20221 var name = getComponentName(currentlyValidatingElement.type); 20222 var owner = currentlyValidatingElement._owner; 20223 stack += describeComponentFrame(name, currentlyValidatingElement._source, owner && getComponentName(owner.type)); 20224 } // Delegate to the injected renderer-specific implementation 20225 20226 20227 var impl = ReactDebugCurrentFrame.getCurrentStack; 20228 20229 if (impl) { 20230 stack += impl() || ''; 20231 } 20232 20233 return stack; 20234 }; 20235 } 20236 /** 20237 * Used by act() to track whether you're inside an act() scope. 20238 */ 20239 20240 var IsSomeRendererActing = { 20241 current: false 20242 }; 20243 var ReactSharedInternals = { 20244 ReactCurrentDispatcher: ReactCurrentDispatcher, 20245 ReactCurrentBatchConfig: ReactCurrentBatchConfig, 20246 ReactCurrentOwner: ReactCurrentOwner, 20247 IsSomeRendererActing: IsSomeRendererActing, 20248 // Used by renderers to avoid bundling object-assign twice in UMD bundles: 20249 assign: _assign 20250 }; 20251 { 20252 _assign(ReactSharedInternals, { 20253 // These should not be included in production. 20254 ReactDebugCurrentFrame: ReactDebugCurrentFrame, 20255 // Shim for React DOM 16.0.0 which still destructured (but not used) this. 20256 // TODO: remove in React 17.0. 20257 ReactComponentTreeHook: {} 20258 }); 20259 } // by calls to these methods by a Babel plugin. 20260 // 20261 // In PROD (or in packages without access to React internals), 20262 // they are left as they are instead. 20263 20264 function warn(format) { 20265 { 20266 for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { 20267 args[_key - 1] = arguments[_key]; 20268 } 20269 20270 printWarning('warn', format, args); 20271 } 20272 } 20273 20274 function error(format) { 20275 { 20276 for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { 20277 args[_key2 - 1] = arguments[_key2]; 20278 } 20279 20280 printWarning('error', format, args); 20281 } 20282 } 20283 20284 function printWarning(level, format, args) { 20285 // When changing this logic, you might want to also 20286 // update consoleWithStackDev.www.js as well. 20287 { 20288 var hasExistingStack = args.length > 0 && typeof args[args.length - 1] === 'string' && args[args.length - 1].indexOf('\n in') === 0; 20289 20290 if (!hasExistingStack) { 20291 var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame; 20292 var stack = ReactDebugCurrentFrame.getStackAddendum(); 20293 20294 if (stack !== '') { 20295 format += '%s'; 20296 args = args.concat([stack]); 20297 } 20298 } 20299 20300 var argsWithFormat = args.map(function (item) { 20301 return '' + item; 20302 }); // Careful: RN currently depends on this prefix 20303 20304 argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it 20305 // breaks IE9: https://github.com/facebook/react/issues/13610 20306 // eslint-disable-next-line react-internal/no-production-logging 20307 20308 Function.prototype.apply.call(console[level], console, argsWithFormat); 20309 20310 try { 20311 // --- Welcome to debugging React --- 20312 // This error was thrown as a convenience so that you can use this stack 20313 // to find the callsite that caused this warning to fire. 20314 var argIndex = 0; 20315 var message = 'Warning: ' + format.replace(/%s/g, function () { 20316 return args[argIndex++]; 20317 }); 20318 throw new Error(message); 20319 } catch (x) {} 20320 } 20321 } 20322 20323 var didWarnStateUpdateForUnmountedComponent = {}; 20324 20325 function warnNoop(publicInstance, callerName) { 20326 { 20327 var _constructor = publicInstance.constructor; 20328 var componentName = _constructor && (_constructor.displayName || _constructor.name) || 'ReactClass'; 20329 var warningKey = componentName + "." + callerName; 20330 20331 if (didWarnStateUpdateForUnmountedComponent[warningKey]) { 20332 return; 20333 } 20334 20335 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); 20336 didWarnStateUpdateForUnmountedComponent[warningKey] = true; 20337 } 20338 } 20339 /** 20340 * This is the abstract API for an update queue. 20341 */ 20342 20343 20344 var ReactNoopUpdateQueue = { 20345 /** 20346 * Checks whether or not this composite component is mounted. 20347 * @param {ReactClass} publicInstance The instance we want to test. 20348 * @return {boolean} True if mounted, false otherwise. 20349 * @protected 20350 * @final 20351 */ 20352 isMounted: function (publicInstance) { 20353 return false; 20354 }, 20355 20356 /** 20357 * Forces an update. This should only be invoked when it is known with 20358 * certainty that we are **not** in a DOM transaction. 20359 * 20360 * You may want to call this when you know that some deeper aspect of the 20361 * component's state has changed but `setState` was not called. 20362 * 20363 * This will not invoke `shouldComponentUpdate`, but it will invoke 20364 * `componentWillUpdate` and `componentDidUpdate`. 20365 * 20366 * @param {ReactClass} publicInstance The instance that should rerender. 20367 * @param {?function} callback Called after component is updated. 20368 * @param {?string} callerName name of the calling function in the public API. 20369 * @internal 20370 */ 20371 enqueueForceUpdate: function (publicInstance, callback, callerName) { 20372 warnNoop(publicInstance, 'forceUpdate'); 20373 }, 20374 20375 /** 20376 * Replaces all of the state. Always use this or `setState` to mutate state. 20377 * You should treat `this.state` as immutable. 20378 * 20379 * There is no guarantee that `this.state` will be immediately updated, so 20380 * accessing `this.state` after calling this method may return the old value. 20381 * 20382 * @param {ReactClass} publicInstance The instance that should rerender. 20383 * @param {object} completeState Next state. 20384 * @param {?function} callback Called after component is updated. 20385 * @param {?string} callerName name of the calling function in the public API. 20386 * @internal 20387 */ 20388 enqueueReplaceState: function (publicInstance, completeState, callback, callerName) { 20389 warnNoop(publicInstance, 'replaceState'); 20390 }, 20391 20392 /** 20393 * Sets a subset of the state. This only exists because _pendingState is 20394 * internal. This provides a merging strategy that is not available to deep 20395 * properties which is confusing. TODO: Expose pendingState or don't use it 20396 * during the merge. 20397 * 20398 * @param {ReactClass} publicInstance The instance that should rerender. 20399 * @param {object} partialState Next partial state to be merged with state. 20400 * @param {?function} callback Called after component is updated. 20401 * @param {?string} Name of the calling function in the public API. 20402 * @internal 20403 */ 20404 enqueueSetState: function (publicInstance, partialState, callback, callerName) { 20405 warnNoop(publicInstance, 'setState'); 20406 } 20407 }; 20408 var emptyObject = {}; 20409 { 20410 Object.freeze(emptyObject); 20411 } 20412 /** 20413 * Base class helpers for the updating state of a component. 20414 */ 20415 20416 function Component(props, context, updater) { 20417 this.props = props; 20418 this.context = context; // If a component has string refs, we will assign a different object later. 20419 20420 this.refs = emptyObject; // We initialize the default updater but the real one gets injected by the 20421 // renderer. 20422 20423 this.updater = updater || ReactNoopUpdateQueue; 20424 } 20425 20426 Component.prototype.isReactComponent = {}; 20427 /** 20428 * Sets a subset of the state. Always use this to mutate 20429 * state. You should treat `this.state` as immutable. 20430 * 20431 * There is no guarantee that `this.state` will be immediately updated, so 20432 * accessing `this.state` after calling this method may return the old value. 20433 * 20434 * There is no guarantee that calls to `setState` will run synchronously, 20435 * as they may eventually be batched together. You can provide an optional 20436 * callback that will be executed when the call to setState is actually 20437 * completed. 20438 * 20439 * When a function is provided to setState, it will be called at some point in 20440 * the future (not synchronously). It will be called with the up to date 20441 * component arguments (state, props, context). These values can be different 20442 * from this.* because your function may be called after receiveProps but before 20443 * shouldComponentUpdate, and this new state, props, and context will not yet be 20444 * assigned to this. 20445 * 20446 * @param {object|function} partialState Next partial state or function to 20447 * produce next partial state to be merged with current state. 20448 * @param {?function} callback Called after state is updated. 20449 * @final 20450 * @protected 20451 */ 20452 20453 Component.prototype.setState = function (partialState, callback) { 20454 if (!(typeof partialState === 'object' || typeof partialState === 'function' || partialState == null)) { 20455 { 20456 throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables."); 20457 } 20458 } 20459 20460 this.updater.enqueueSetState(this, partialState, callback, 'setState'); 20461 }; 20462 /** 20463 * Forces an update. This should only be invoked when it is known with 20464 * certainty that we are **not** in a DOM transaction. 20465 * 20466 * You may want to call this when you know that some deeper aspect of the 20467 * component's state has changed but `setState` was not called. 20468 * 20469 * This will not invoke `shouldComponentUpdate`, but it will invoke 20470 * `componentWillUpdate` and `componentDidUpdate`. 20471 * 20472 * @param {?function} callback Called after update is complete. 20473 * @final 20474 * @protected 20475 */ 20476 20477 20478 Component.prototype.forceUpdate = function (callback) { 20479 this.updater.enqueueForceUpdate(this, callback, 'forceUpdate'); 20480 }; 20481 /** 20482 * Deprecated APIs. These APIs used to exist on classic React classes but since 20483 * we would like to deprecate them, we're not going to move them over to this 20484 * modern base class. Instead, we define a getter that warns if it's accessed. 20485 */ 20486 20487 20488 { 20489 var deprecatedAPIs = { 20490 isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'], 20491 replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).'] 20492 }; 20493 20494 var defineDeprecationWarning = function (methodName, info) { 20495 Object.defineProperty(Component.prototype, methodName, { 20496 get: function () { 20497 warn('%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]); 20498 return undefined; 20499 } 20500 }); 20501 }; 20502 20503 for (var fnName in deprecatedAPIs) { 20504 if (deprecatedAPIs.hasOwnProperty(fnName)) { 20505 defineDeprecationWarning(fnName, deprecatedAPIs[fnName]); 20506 } 20507 } 20508 } 20509 20510 function ComponentDummy() {} 20511 20512 ComponentDummy.prototype = Component.prototype; 20513 /** 20514 * Convenience component with default shallow equality check for sCU. 20515 */ 20516 20517 function PureComponent(props, context, updater) { 20518 this.props = props; 20519 this.context = context; // If a component has string refs, we will assign a different object later. 20520 20521 this.refs = emptyObject; 20522 this.updater = updater || ReactNoopUpdateQueue; 20523 } 20524 20525 var pureComponentPrototype = PureComponent.prototype = new ComponentDummy(); 20526 pureComponentPrototype.constructor = PureComponent; // Avoid an extra prototype jump for these methods. 20527 20528 _assign(pureComponentPrototype, Component.prototype); 20529 20530 pureComponentPrototype.isPureReactComponent = true; // an immutable object with a single mutable value 20531 20532 function createRef() { 20533 var refObject = { 20534 current: null 20535 }; 20536 { 20537 Object.seal(refObject); 20538 } 20539 return refObject; 20540 } 20541 20542 var hasOwnProperty = Object.prototype.hasOwnProperty; 20543 var RESERVED_PROPS = { 20544 key: true, 20545 ref: true, 20546 __self: true, 20547 __source: true 20548 }; 20549 var specialPropKeyWarningShown, specialPropRefWarningShown, didWarnAboutStringRefs; 20550 { 20551 didWarnAboutStringRefs = {}; 20552 } 20553 20554 function hasValidRef(config) { 20555 { 20556 if (hasOwnProperty.call(config, 'ref')) { 20557 var getter = Object.getOwnPropertyDescriptor(config, 'ref').get; 20558 20559 if (getter && getter.isReactWarning) { 20560 return false; 20561 } 20562 } 20563 } 20564 return config.ref !== undefined; 20565 } 20566 20567 function hasValidKey(config) { 20568 { 20569 if (hasOwnProperty.call(config, 'key')) { 20570 var getter = Object.getOwnPropertyDescriptor(config, 'key').get; 20571 20572 if (getter && getter.isReactWarning) { 20573 return false; 20574 } 20575 } 20576 } 20577 return config.key !== undefined; 20578 } 20579 20580 function defineKeyPropWarningGetter(props, displayName) { 20581 var warnAboutAccessingKey = function () { 20582 { 20583 if (!specialPropKeyWarningShown) { 20584 specialPropKeyWarningShown = true; 20585 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); 20586 } 20587 } 20588 }; 20589 20590 warnAboutAccessingKey.isReactWarning = true; 20591 Object.defineProperty(props, 'key', { 20592 get: warnAboutAccessingKey, 20593 configurable: true 20594 }); 20595 } 20596 20597 function defineRefPropWarningGetter(props, displayName) { 20598 var warnAboutAccessingRef = function () { 20599 { 20600 if (!specialPropRefWarningShown) { 20601 specialPropRefWarningShown = true; 20602 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); 20603 } 20604 } 20605 }; 20606 20607 warnAboutAccessingRef.isReactWarning = true; 20608 Object.defineProperty(props, 'ref', { 20609 get: warnAboutAccessingRef, 20610 configurable: true 20611 }); 20612 } 20613 20614 function warnIfStringRefCannotBeAutoConverted(config) { 20615 { 20616 if (typeof config.ref === 'string' && ReactCurrentOwner.current && config.__self && ReactCurrentOwner.current.stateNode !== config.__self) { 20617 var componentName = getComponentName(ReactCurrentOwner.current.type); 20618 20619 if (!didWarnAboutStringRefs[componentName]) { 20620 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); 20621 didWarnAboutStringRefs[componentName] = true; 20622 } 20623 } 20624 } 20625 } 20626 /** 20627 * Factory method to create a new React element. This no longer adheres to 20628 * the class pattern, so do not use new to call it. Also, instanceof check 20629 * will not work. Instead test $$typeof field against Symbol.for('react.element') to check 20630 * if something is a React Element. 20631 * 20632 * @param {*} type 20633 * @param {*} props 20634 * @param {*} key 20635 * @param {string|object} ref 20636 * @param {*} owner 20637 * @param {*} self A *temporary* helper to detect places where `this` is 20638 * different from the `owner` when React.createElement is called, so that we 20639 * can warn. We want to get rid of owner and replace string `ref`s with arrow 20640 * functions, and as long as `this` and owner are the same, there will be no 20641 * change in behavior. 20642 * @param {*} source An annotation object (added by a transpiler or otherwise) 20643 * indicating filename, line number, and/or other information. 20644 * @internal 20645 */ 20646 20647 20648 var ReactElement = function (type, key, ref, self, source, owner, props) { 20649 var element = { 20650 // This tag allows us to uniquely identify this as a React Element 20651 $$typeof: REACT_ELEMENT_TYPE, 20652 // Built-in properties that belong on the element 20653 type: type, 20654 key: key, 20655 ref: ref, 20656 props: props, 20657 // Record the component responsible for creating this element. 20658 _owner: owner 20659 }; 20660 { 20661 // The validation flag is currently mutative. We put it on 20662 // an external backing store so that we can freeze the whole object. 20663 // This can be replaced with a WeakMap once they are implemented in 20664 // commonly used development environments. 20665 element._store = {}; // To make comparing ReactElements easier for testing purposes, we make 20666 // the validation flag non-enumerable (where possible, which should 20667 // include every environment we run tests in), so the test framework 20668 // ignores it. 20669 20670 Object.defineProperty(element._store, 'validated', { 20671 configurable: false, 20672 enumerable: false, 20673 writable: true, 20674 value: false 20675 }); // self and source are DEV only properties. 20676 20677 Object.defineProperty(element, '_self', { 20678 configurable: false, 20679 enumerable: false, 20680 writable: false, 20681 value: self 20682 }); // Two elements created in two different places should be considered 20683 // equal for testing purposes and therefore we hide it from enumeration. 20684 20685 Object.defineProperty(element, '_source', { 20686 configurable: false, 20687 enumerable: false, 20688 writable: false, 20689 value: source 20690 }); 20691 20692 if (Object.freeze) { 20693 Object.freeze(element.props); 20694 Object.freeze(element); 20695 } 20696 } 20697 return element; 20698 }; 20699 /** 20700 * Create and return a new ReactElement of the given type. 20701 * See https://reactjs.org/docs/react-api.html#createelement 20702 */ 20703 20704 20705 function createElement(type, config, children) { 20706 var propName; // Reserved names are extracted 20707 20708 var props = {}; 20709 var key = null; 20710 var ref = null; 20711 var self = null; 20712 var source = null; 20713 20714 if (config != null) { 20715 if (hasValidRef(config)) { 20716 ref = config.ref; 20717 { 20718 warnIfStringRefCannotBeAutoConverted(config); 20719 } 20720 } 20721 20722 if (hasValidKey(config)) { 20723 key = '' + config.key; 20724 } 20725 20726 self = config.__self === undefined ? null : config.__self; 20727 source = config.__source === undefined ? null : config.__source; // Remaining properties are added to a new props object 20728 20729 for (propName in config) { 20730 if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) { 20731 props[propName] = config[propName]; 20732 } 20733 } 20734 } // Children can be more than one argument, and those are transferred onto 20735 // the newly allocated props object. 20736 20737 20738 var childrenLength = arguments.length - 2; 20739 20740 if (childrenLength === 1) { 20741 props.children = children; 20742 } else if (childrenLength > 1) { 20743 var childArray = Array(childrenLength); 20744 20745 for (var i = 0; i < childrenLength; i++) { 20746 childArray[i] = arguments[i + 2]; 20747 } 20748 20749 { 20750 if (Object.freeze) { 20751 Object.freeze(childArray); 20752 } 20753 } 20754 props.children = childArray; 20755 } // Resolve default props 20756 20757 20758 if (type && type.defaultProps) { 20759 var defaultProps = type.defaultProps; 20760 20761 for (propName in defaultProps) { 20762 if (props[propName] === undefined) { 20763 props[propName] = defaultProps[propName]; 20764 } 20765 } 20766 } 20767 20768 { 20769 if (key || ref) { 20770 var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type; 20771 20772 if (key) { 20773 defineKeyPropWarningGetter(props, displayName); 20774 } 20775 20776 if (ref) { 20777 defineRefPropWarningGetter(props, displayName); 20778 } 20779 } 20780 } 20781 return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props); 20782 } 20783 20784 function cloneAndReplaceKey(oldElement, newKey) { 20785 var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props); 20786 return newElement; 20787 } 20788 /** 20789 * Clone and return a new ReactElement using element as the starting point. 20790 * See https://reactjs.org/docs/react-api.html#cloneelement 20791 */ 20792 20793 20794 function cloneElement(element, config, children) { 20795 if (!!(element === null || element === undefined)) { 20796 { 20797 throw Error("React.cloneElement(...): The argument must be a React element, but you passed " + element + "."); 20798 } 20799 } 20800 20801 var propName; // Original props are copied 20802 20803 var props = _assign({}, element.props); // Reserved names are extracted 20804 20805 20806 var key = element.key; 20807 var ref = element.ref; // Self is preserved since the owner is preserved. 20808 20809 var self = element._self; // Source is preserved since cloneElement is unlikely to be targeted by a 20810 // transpiler, and the original source is probably a better indicator of the 20811 // true owner. 20812 20813 var source = element._source; // Owner will be preserved, unless ref is overridden 20814 20815 var owner = element._owner; 20816 20817 if (config != null) { 20818 if (hasValidRef(config)) { 20819 // Silently steal the ref from the parent. 20820 ref = config.ref; 20821 owner = ReactCurrentOwner.current; 20822 } 20823 20824 if (hasValidKey(config)) { 20825 key = '' + config.key; 20826 } // Remaining properties override existing props 20827 20828 20829 var defaultProps; 20830 20831 if (element.type && element.type.defaultProps) { 20832 defaultProps = element.type.defaultProps; 20833 } 20834 20835 for (propName in config) { 20836 if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) { 20837 if (config[propName] === undefined && defaultProps !== undefined) { 20838 // Resolve default props 20839 props[propName] = defaultProps[propName]; 20840 } else { 20841 props[propName] = config[propName]; 20842 } 20843 } 20844 } 20845 } // Children can be more than one argument, and those are transferred onto 20846 // the newly allocated props object. 20847 20848 20849 var childrenLength = arguments.length - 2; 20850 20851 if (childrenLength === 1) { 20852 props.children = children; 20853 } else if (childrenLength > 1) { 20854 var childArray = Array(childrenLength); 20855 20856 for (var i = 0; i < childrenLength; i++) { 20857 childArray[i] = arguments[i + 2]; 20858 } 20859 20860 props.children = childArray; 20861 } 20862 20863 return ReactElement(element.type, key, ref, self, source, owner, props); 20864 } 20865 /** 20866 * Verifies the object is a ReactElement. 20867 * See https://reactjs.org/docs/react-api.html#isvalidelement 20868 * @param {?object} object 20869 * @return {boolean} True if `object` is a ReactElement. 20870 * @final 20871 */ 20872 20873 20874 function isValidElement(object) { 20875 return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; 20876 } 20877 20878 var SEPARATOR = '.'; 20879 var SUBSEPARATOR = ':'; 20880 /** 20881 * Escape and wrap key so it is safe to use as a reactid 20882 * 20883 * @param {string} key to be escaped. 20884 * @return {string} the escaped key. 20885 */ 20886 20887 function escape(key) { 20888 var escapeRegex = /[=:]/g; 20889 var escaperLookup = { 20890 '=': '=0', 20891 ':': '=2' 20892 }; 20893 var escapedString = ('' + key).replace(escapeRegex, function (match) { 20894 return escaperLookup[match]; 20895 }); 20896 return '$' + escapedString; 20897 } 20898 /** 20899 * TODO: Test that a single child and an array with one item have the same key 20900 * pattern. 20901 */ 20902 20903 20904 var didWarnAboutMaps = false; 20905 var userProvidedKeyEscapeRegex = /\/+/g; 20906 20907 function escapeUserProvidedKey(text) { 20908 return ('' + text).replace(userProvidedKeyEscapeRegex, '$&/'); 20909 } 20910 20911 var POOL_SIZE = 10; 20912 var traverseContextPool = []; 20913 20914 function getPooledTraverseContext(mapResult, keyPrefix, mapFunction, mapContext) { 20915 if (traverseContextPool.length) { 20916 var traverseContext = traverseContextPool.pop(); 20917 traverseContext.result = mapResult; 20918 traverseContext.keyPrefix = keyPrefix; 20919 traverseContext.func = mapFunction; 20920 traverseContext.context = mapContext; 20921 traverseContext.count = 0; 20922 return traverseContext; 20923 } else { 20924 return { 20925 result: mapResult, 20926 keyPrefix: keyPrefix, 20927 func: mapFunction, 20928 context: mapContext, 20929 count: 0 20930 }; 20931 } 20932 } 20933 20934 function releaseTraverseContext(traverseContext) { 20935 traverseContext.result = null; 20936 traverseContext.keyPrefix = null; 20937 traverseContext.func = null; 20938 traverseContext.context = null; 20939 traverseContext.count = 0; 20940 20941 if (traverseContextPool.length < POOL_SIZE) { 20942 traverseContextPool.push(traverseContext); 20943 } 20944 } 20945 /** 20946 * @param {?*} children Children tree container. 20947 * @param {!string} nameSoFar Name of the key path so far. 20948 * @param {!function} callback Callback to invoke with each child found. 20949 * @param {?*} traverseContext Used to pass information throughout the traversal 20950 * process. 20951 * @return {!number} The number of children in this subtree. 20952 */ 20953 20954 20955 function traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext) { 20956 var type = typeof children; 20957 20958 if (type === 'undefined' || type === 'boolean') { 20959 // All of the above are perceived as null. 20960 children = null; 20961 } 20962 20963 var invokeCallback = false; 20964 20965 if (children === null) { 20966 invokeCallback = true; 20967 } else { 20968 switch (type) { 20969 case 'string': 20970 case 'number': 20971 invokeCallback = true; 20972 break; 20973 20974 case 'object': 20975 switch (children.$$typeof) { 20976 case REACT_ELEMENT_TYPE: 20977 case REACT_PORTAL_TYPE: 20978 invokeCallback = true; 20979 } 20980 20981 } 20982 } 20983 20984 if (invokeCallback) { 20985 callback(traverseContext, children, // If it's the only child, treat the name as if it was wrapped in an array 20986 // so that it's consistent if the number of children grows. 20987 nameSoFar === '' ? SEPARATOR + getComponentKey(children, 0) : nameSoFar); 20988 return 1; 20989 } 20990 20991 var child; 20992 var nextName; 20993 var subtreeCount = 0; // Count of children found in the current subtree. 20994 20995 var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR; 20996 20997 if (Array.isArray(children)) { 20998 for (var i = 0; i < children.length; i++) { 20999 child = children[i]; 21000 nextName = nextNamePrefix + getComponentKey(child, i); 21001 subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext); 21002 } 21003 } else { 21004 var iteratorFn = getIteratorFn(children); 21005 21006 if (typeof iteratorFn === 'function') { 21007 { 21008 // Warn about using Maps as children 21009 if (iteratorFn === children.entries) { 21010 if (!didWarnAboutMaps) { 21011 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.'); 21012 } 21013 21014 didWarnAboutMaps = true; 21015 } 21016 } 21017 var iterator = iteratorFn.call(children); 21018 var step; 21019 var ii = 0; 21020 21021 while (!(step = iterator.next()).done) { 21022 child = step.value; 21023 nextName = nextNamePrefix + getComponentKey(child, ii++); 21024 subtreeCount += traverseAllChildrenImpl(child, nextName, callback, traverseContext); 21025 } 21026 } else if (type === 'object') { 21027 var addendum = ''; 21028 { 21029 addendum = ' If you meant to render a collection of children, use an array ' + 'instead.' + ReactDebugCurrentFrame.getStackAddendum(); 21030 } 21031 var childrenString = '' + children; 21032 { 21033 { 21034 throw Error("Objects are not valid as a React child (found: " + (childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString) + ")." + addendum); 21035 } 21036 } 21037 } 21038 } 21039 21040 return subtreeCount; 21041 } 21042 /** 21043 * Traverses children that are typically specified as `props.children`, but 21044 * might also be specified through attributes: 21045 * 21046 * - `traverseAllChildren(this.props.children, ...)` 21047 * - `traverseAllChildren(this.props.leftPanelChildren, ...)` 21048 * 21049 * The `traverseContext` is an optional argument that is passed through the 21050 * entire traversal. It can be used to store accumulations or anything else that 21051 * the callback might find relevant. 21052 * 21053 * @param {?*} children Children tree object. 21054 * @param {!function} callback To invoke upon traversing each child. 21055 * @param {?*} traverseContext Context for traversal. 21056 * @return {!number} The number of children in this subtree. 21057 */ 21058 21059 21060 function traverseAllChildren(children, callback, traverseContext) { 21061 if (children == null) { 21062 return 0; 21063 } 21064 21065 return traverseAllChildrenImpl(children, '', callback, traverseContext); 21066 } 21067 /** 21068 * Generate a key string that identifies a component within a set. 21069 * 21070 * @param {*} component A component that could contain a manual key. 21071 * @param {number} index Index that is used if a manual key is not provided. 21072 * @return {string} 21073 */ 21074 21075 21076 function getComponentKey(component, index) { 21077 // Do some typechecking here since we call this blindly. We want to ensure 21078 // that we don't block potential future ES APIs. 21079 if (typeof component === 'object' && component !== null && component.key != null) { 21080 // Explicit key 21081 return escape(component.key); 21082 } // Implicit key determined by the index in the set 21083 21084 21085 return index.toString(36); 21086 } 21087 21088 function forEachSingleChild(bookKeeping, child, name) { 21089 var func = bookKeeping.func, 21090 context = bookKeeping.context; 21091 func.call(context, child, bookKeeping.count++); 21092 } 21093 /** 21094 * Iterates through children that are typically specified as `props.children`. 21095 * 21096 * See https://reactjs.org/docs/react-api.html#reactchildrenforeach 21097 * 21098 * The provided forEachFunc(child, index) will be called for each 21099 * leaf child. 21100 * 21101 * @param {?*} children Children tree container. 21102 * @param {function(*, int)} forEachFunc 21103 * @param {*} forEachContext Context for forEachContext. 21104 */ 21105 21106 21107 function forEachChildren(children, forEachFunc, forEachContext) { 21108 if (children == null) { 21109 return children; 21110 } 21111 21112 var traverseContext = getPooledTraverseContext(null, null, forEachFunc, forEachContext); 21113 traverseAllChildren(children, forEachSingleChild, traverseContext); 21114 releaseTraverseContext(traverseContext); 21115 } 21116 21117 function mapSingleChildIntoContext(bookKeeping, child, childKey) { 21118 var result = bookKeeping.result, 21119 keyPrefix = bookKeeping.keyPrefix, 21120 func = bookKeeping.func, 21121 context = bookKeeping.context; 21122 var mappedChild = func.call(context, child, bookKeeping.count++); 21123 21124 if (Array.isArray(mappedChild)) { 21125 mapIntoWithKeyPrefixInternal(mappedChild, result, childKey, function (c) { 21126 return c; 21127 }); 21128 } else if (mappedChild != null) { 21129 if (isValidElement(mappedChild)) { 21130 mappedChild = cloneAndReplaceKey(mappedChild, // Keep both the (mapped) and old keys if they differ, just as 21131 // traverseAllChildren used to do for objects as children 21132 keyPrefix + (mappedChild.key && (!child || child.key !== mappedChild.key) ? escapeUserProvidedKey(mappedChild.key) + '/' : '') + childKey); 21133 } 21134 21135 result.push(mappedChild); 21136 } 21137 } 21138 21139 function mapIntoWithKeyPrefixInternal(children, array, prefix, func, context) { 21140 var escapedPrefix = ''; 21141 21142 if (prefix != null) { 21143 escapedPrefix = escapeUserProvidedKey(prefix) + '/'; 21144 } 21145 21146 var traverseContext = getPooledTraverseContext(array, escapedPrefix, func, context); 21147 traverseAllChildren(children, mapSingleChildIntoContext, traverseContext); 21148 releaseTraverseContext(traverseContext); 21149 } 21150 /** 21151 * Maps children that are typically specified as `props.children`. 21152 * 21153 * See https://reactjs.org/docs/react-api.html#reactchildrenmap 21154 * 21155 * The provided mapFunction(child, key, index) will be called for each 21156 * leaf child. 21157 * 21158 * @param {?*} children Children tree container. 21159 * @param {function(*, int)} func The map function. 21160 * @param {*} context Context for mapFunction. 21161 * @return {object} Object containing the ordered map of results. 21162 */ 21163 21164 21165 function mapChildren(children, func, context) { 21166 if (children == null) { 21167 return children; 21168 } 21169 21170 var result = []; 21171 mapIntoWithKeyPrefixInternal(children, result, null, func, context); 21172 return result; 21173 } 21174 /** 21175 * Count the number of children that are typically specified as 21176 * `props.children`. 21177 * 21178 * See https://reactjs.org/docs/react-api.html#reactchildrencount 21179 * 21180 * @param {?*} children Children tree container. 21181 * @return {number} The number of children. 21182 */ 21183 21184 21185 function countChildren(children) { 21186 return traverseAllChildren(children, function () { 21187 return null; 21188 }, null); 21189 } 21190 /** 21191 * Flatten a children object (typically specified as `props.children`) and 21192 * return an array with appropriately re-keyed children. 21193 * 21194 * See https://reactjs.org/docs/react-api.html#reactchildrentoarray 21195 */ 21196 21197 21198 function toArray(children) { 21199 var result = []; 21200 mapIntoWithKeyPrefixInternal(children, result, null, function (child) { 21201 return child; 21202 }); 21203 return result; 21204 } 21205 /** 21206 * Returns the first child in a collection of children and verifies that there 21207 * is only one child in the collection. 21208 * 21209 * See https://reactjs.org/docs/react-api.html#reactchildrenonly 21210 * 21211 * The current implementation of this function assumes that a single child gets 21212 * passed without a wrapper, but the purpose of this helper function is to 21213 * abstract away the particular structure of children. 21214 * 21215 * @param {?object} children Child collection structure. 21216 * @return {ReactElement} The first and only `ReactElement` contained in the 21217 * structure. 21218 */ 21219 21220 21221 function onlyChild(children) { 21222 if (!isValidElement(children)) { 21223 { 21224 throw Error("React.Children.only expected to receive a single React element child."); 21225 } 21226 } 21227 21228 return children; 21229 } 21230 21231 function createContext(defaultValue, calculateChangedBits) { 21232 if (calculateChangedBits === undefined) { 21233 calculateChangedBits = null; 21234 } else { 21235 { 21236 if (calculateChangedBits !== null && typeof calculateChangedBits !== 'function') { 21237 error('createContext: Expected the optional second argument to be a ' + 'function. Instead received: %s', calculateChangedBits); 21238 } 21239 } 21240 } 21241 21242 var context = { 21243 $$typeof: REACT_CONTEXT_TYPE, 21244 _calculateChangedBits: calculateChangedBits, 21245 // As a workaround to support multiple concurrent renderers, we categorize 21246 // some renderers as primary and others as secondary. We only expect 21247 // there to be two concurrent renderers at most: React Native (primary) and 21248 // Fabric (secondary); React DOM (primary) and React ART (secondary). 21249 // Secondary renderers store their context values on separate fields. 21250 _currentValue: defaultValue, 21251 _currentValue2: defaultValue, 21252 // Used to track how many concurrent renderers this context currently 21253 // supports within in a single renderer. Such as parallel server rendering. 21254 _threadCount: 0, 21255 // These are circular 21256 Provider: null, 21257 Consumer: null 21258 }; 21259 context.Provider = { 21260 $$typeof: REACT_PROVIDER_TYPE, 21261 _context: context 21262 }; 21263 var hasWarnedAboutUsingNestedContextConsumers = false; 21264 var hasWarnedAboutUsingConsumerProvider = false; 21265 { 21266 // A separate object, but proxies back to the original context object for 21267 // backwards compatibility. It has a different $$typeof, so we can properly 21268 // warn for the incorrect usage of Context as a Consumer. 21269 var Consumer = { 21270 $$typeof: REACT_CONTEXT_TYPE, 21271 _context: context, 21272 _calculateChangedBits: context._calculateChangedBits 21273 }; // $FlowFixMe: Flow complains about not setting a value, which is intentional here 21274 21275 Object.defineProperties(Consumer, { 21276 Provider: { 21277 get: function () { 21278 if (!hasWarnedAboutUsingConsumerProvider) { 21279 hasWarnedAboutUsingConsumerProvider = true; 21280 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?'); 21281 } 21282 21283 return context.Provider; 21284 }, 21285 set: function (_Provider) { 21286 context.Provider = _Provider; 21287 } 21288 }, 21289 _currentValue: { 21290 get: function () { 21291 return context._currentValue; 21292 }, 21293 set: function (_currentValue) { 21294 context._currentValue = _currentValue; 21295 } 21296 }, 21297 _currentValue2: { 21298 get: function () { 21299 return context._currentValue2; 21300 }, 21301 set: function (_currentValue2) { 21302 context._currentValue2 = _currentValue2; 21303 } 21304 }, 21305 _threadCount: { 21306 get: function () { 21307 return context._threadCount; 21308 }, 21309 set: function (_threadCount) { 21310 context._threadCount = _threadCount; 21311 } 21312 }, 21313 Consumer: { 21314 get: function () { 21315 if (!hasWarnedAboutUsingNestedContextConsumers) { 21316 hasWarnedAboutUsingNestedContextConsumers = true; 21317 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?'); 21318 } 21319 21320 return context.Consumer; 21321 } 21322 } 21323 }); // $FlowFixMe: Flow complains about missing properties because it doesn't understand defineProperty 21324 21325 context.Consumer = Consumer; 21326 } 21327 { 21328 context._currentRenderer = null; 21329 context._currentRenderer2 = null; 21330 } 21331 return context; 21332 } 21333 21334 function lazy(ctor) { 21335 var lazyType = { 21336 $$typeof: REACT_LAZY_TYPE, 21337 _ctor: ctor, 21338 // React uses these fields to store the result. 21339 _status: -1, 21340 _result: null 21341 }; 21342 { 21343 // In production, this would just set it on the object. 21344 var defaultProps; 21345 var propTypes; 21346 Object.defineProperties(lazyType, { 21347 defaultProps: { 21348 configurable: true, 21349 get: function () { 21350 return defaultProps; 21351 }, 21352 set: function (newDefaultProps) { 21353 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.'); 21354 defaultProps = newDefaultProps; // Match production behavior more closely: 21355 21356 Object.defineProperty(lazyType, 'defaultProps', { 21357 enumerable: true 21358 }); 21359 } 21360 }, 21361 propTypes: { 21362 configurable: true, 21363 get: function () { 21364 return propTypes; 21365 }, 21366 set: function (newPropTypes) { 21367 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.'); 21368 propTypes = newPropTypes; // Match production behavior more closely: 21369 21370 Object.defineProperty(lazyType, 'propTypes', { 21371 enumerable: true 21372 }); 21373 } 21374 } 21375 }); 21376 } 21377 return lazyType; 21378 } 21379 21380 function forwardRef(render) { 21381 { 21382 if (render != null && render.$$typeof === REACT_MEMO_TYPE) { 21383 error('forwardRef requires a render function but received a `memo` ' + 'component. Instead of forwardRef(memo(...)), use ' + 'memo(forwardRef(...)).'); 21384 } else if (typeof render !== 'function') { 21385 error('forwardRef requires a render function but was given %s.', render === null ? 'null' : typeof render); 21386 } else { 21387 if (render.length !== 0 && render.length !== 2) { 21388 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.'); 21389 } 21390 } 21391 21392 if (render != null) { 21393 if (render.defaultProps != null || render.propTypes != null) { 21394 error('forwardRef render functions do not support propTypes or defaultProps. ' + 'Did you accidentally pass a React component?'); 21395 } 21396 } 21397 } 21398 return { 21399 $$typeof: REACT_FORWARD_REF_TYPE, 21400 render: render 21401 }; 21402 } 21403 21404 function isValidElementType(type) { 21405 return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill. 21406 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); 21407 } 21408 21409 function memo(type, compare) { 21410 { 21411 if (!isValidElementType(type)) { 21412 error('memo: The first argument must be a component. Instead ' + 'received: %s', type === null ? 'null' : typeof type); 21413 } 21414 } 21415 return { 21416 $$typeof: REACT_MEMO_TYPE, 21417 type: type, 21418 compare: compare === undefined ? null : compare 21419 }; 21420 } 21421 21422 function resolveDispatcher() { 21423 var dispatcher = ReactCurrentDispatcher.current; 21424 21425 if (!(dispatcher !== null)) { 21426 { 21427 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."); 21428 } 21429 } 21430 21431 return dispatcher; 21432 } 21433 21434 function useContext(Context, unstable_observedBits) { 21435 var dispatcher = resolveDispatcher(); 21436 { 21437 if (unstable_observedBits !== undefined) { 21438 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' : ''); 21439 } // TODO: add a more generic warning for invalid values. 21440 21441 21442 if (Context._context !== undefined) { 21443 var realContext = Context._context; // Don't deduplicate because this legitimately causes bugs 21444 // and nobody should be using this in existing code. 21445 21446 if (realContext.Consumer === Context) { 21447 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?'); 21448 } else if (realContext.Provider === Context) { 21449 error('Calling useContext(Context.Provider) is not supported. ' + 'Did you mean to call useContext(Context) instead?'); 21450 } 21451 } 21452 } 21453 return dispatcher.useContext(Context, unstable_observedBits); 21454 } 21455 21456 function useState(initialState) { 21457 var dispatcher = resolveDispatcher(); 21458 return dispatcher.useState(initialState); 21459 } 21460 21461 function useReducer(reducer, initialArg, init) { 21462 var dispatcher = resolveDispatcher(); 21463 return dispatcher.useReducer(reducer, initialArg, init); 21464 } 21465 21466 function useRef(initialValue) { 21467 var dispatcher = resolveDispatcher(); 21468 return dispatcher.useRef(initialValue); 21469 } 21470 21471 function useEffect(create, deps) { 21472 var dispatcher = resolveDispatcher(); 21473 return dispatcher.useEffect(create, deps); 21474 } 21475 21476 function useLayoutEffect(create, deps) { 21477 var dispatcher = resolveDispatcher(); 21478 return dispatcher.useLayoutEffect(create, deps); 21479 } 21480 21481 function useCallback(callback, deps) { 21482 var dispatcher = resolveDispatcher(); 21483 return dispatcher.useCallback(callback, deps); 21484 } 21485 21486 function useMemo(create, deps) { 21487 var dispatcher = resolveDispatcher(); 21488 return dispatcher.useMemo(create, deps); 21489 } 21490 21491 function useImperativeHandle(ref, create, deps) { 21492 var dispatcher = resolveDispatcher(); 21493 return dispatcher.useImperativeHandle(ref, create, deps); 21494 } 21495 21496 function useDebugValue(value, formatterFn) { 21497 { 21498 var dispatcher = resolveDispatcher(); 21499 return dispatcher.useDebugValue(value, formatterFn); 21500 } 21501 } 21502 21503 var propTypesMisspellWarningShown; 21504 { 21505 propTypesMisspellWarningShown = false; 21506 } 21507 21508 function getDeclarationErrorAddendum() { 21509 if (ReactCurrentOwner.current) { 21510 var name = getComponentName(ReactCurrentOwner.current.type); 21511 21512 if (name) { 21513 return '\n\nCheck the render method of `' + name + '`.'; 21514 } 21515 } 21516 21517 return ''; 21518 } 21519 21520 function getSourceInfoErrorAddendum(source) { 21521 if (source !== undefined) { 21522 var fileName = source.fileName.replace(/^.*[\\\/]/, ''); 21523 var lineNumber = source.lineNumber; 21524 return '\n\nCheck your code at ' + fileName + ':' + lineNumber + '.'; 21525 } 21526 21527 return ''; 21528 } 21529 21530 function getSourceInfoErrorAddendumForProps(elementProps) { 21531 if (elementProps !== null && elementProps !== undefined) { 21532 return getSourceInfoErrorAddendum(elementProps.__source); 21533 } 21534 21535 return ''; 21536 } 21537 /** 21538 * Warn if there's no key explicitly set on dynamic arrays of children or 21539 * object keys are not valid. This allows us to keep track of children between 21540 * updates. 21541 */ 21542 21543 21544 var ownerHasKeyUseWarning = {}; 21545 21546 function getCurrentComponentErrorInfo(parentType) { 21547 var info = getDeclarationErrorAddendum(); 21548 21549 if (!info) { 21550 var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name; 21551 21552 if (parentName) { 21553 info = "\n\nCheck the top-level render call using <" + parentName + ">."; 21554 } 21555 } 21556 21557 return info; 21558 } 21559 /** 21560 * Warn if the element doesn't have an explicit key assigned to it. 21561 * This element is in an array. The array could grow and shrink or be 21562 * reordered. All children that haven't already been validated are required to 21563 * have a "key" property assigned to it. Error statuses are cached so a warning 21564 * will only be shown once. 21565 * 21566 * @internal 21567 * @param {ReactElement} element Element that requires a key. 21568 * @param {*} parentType element's parent's type. 21569 */ 21570 21571 21572 function validateExplicitKey(element, parentType) { 21573 if (!element._store || element._store.validated || element.key != null) { 21574 return; 21575 } 21576 21577 element._store.validated = true; 21578 var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType); 21579 21580 if (ownerHasKeyUseWarning[currentComponentErrorInfo]) { 21581 return; 21582 } 21583 21584 ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a 21585 // property, it may be the creator of the child that's responsible for 21586 // assigning it a key. 21587 21588 var childOwner = ''; 21589 21590 if (element && element._owner && element._owner !== ReactCurrentOwner.current) { 21591 // Give the component that originally created this child. 21592 childOwner = " It was passed a child from " + getComponentName(element._owner.type) + "."; 21593 } 21594 21595 setCurrentlyValidatingElement(element); 21596 { 21597 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); 21598 } 21599 setCurrentlyValidatingElement(null); 21600 } 21601 /** 21602 * Ensure that every element either is passed in a static location, in an 21603 * array with an explicit keys property defined, or in an object literal 21604 * with valid key property. 21605 * 21606 * @internal 21607 * @param {ReactNode} node Statically passed child of any type. 21608 * @param {*} parentType node's parent's type. 21609 */ 21610 21611 21612 function validateChildKeys(node, parentType) { 21613 if (typeof node !== 'object') { 21614 return; 21615 } 21616 21617 if (Array.isArray(node)) { 21618 for (var i = 0; i < node.length; i++) { 21619 var child = node[i]; 21620 21621 if (isValidElement(child)) { 21622 validateExplicitKey(child, parentType); 21623 } 21624 } 21625 } else if (isValidElement(node)) { 21626 // This element was passed in a valid location. 21627 if (node._store) { 21628 node._store.validated = true; 21629 } 21630 } else if (node) { 21631 var iteratorFn = getIteratorFn(node); 21632 21633 if (typeof iteratorFn === 'function') { 21634 // Entry iterators used to provide implicit keys, 21635 // but now we print a separate warning for them later. 21636 if (iteratorFn !== node.entries) { 21637 var iterator = iteratorFn.call(node); 21638 var step; 21639 21640 while (!(step = iterator.next()).done) { 21641 if (isValidElement(step.value)) { 21642 validateExplicitKey(step.value, parentType); 21643 } 21644 } 21645 } 21646 } 21647 } 21648 } 21649 /** 21650 * Given an element, validate that its props follow the propTypes definition, 21651 * provided by the type. 21652 * 21653 * @param {ReactElement} element 21654 */ 21655 21656 21657 function validatePropTypes(element) { 21658 { 21659 var type = element.type; 21660 21661 if (type === null || type === undefined || typeof type === 'string') { 21662 return; 21663 } 21664 21665 var name = getComponentName(type); 21666 var propTypes; 21667 21668 if (typeof type === 'function') { 21669 propTypes = type.propTypes; 21670 } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here. 21671 // Inner props are checked in the reconciler. 21672 type.$$typeof === REACT_MEMO_TYPE)) { 21673 propTypes = type.propTypes; 21674 } else { 21675 return; 21676 } 21677 21678 if (propTypes) { 21679 setCurrentlyValidatingElement(element); 21680 checkPropTypes(propTypes, element.props, 'prop', name, ReactDebugCurrentFrame.getStackAddendum); 21681 setCurrentlyValidatingElement(null); 21682 } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) { 21683 propTypesMisspellWarningShown = true; 21684 error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', name || 'Unknown'); 21685 } 21686 21687 if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) { 21688 error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.'); 21689 } 21690 } 21691 } 21692 /** 21693 * Given a fragment, validate that it can only be provided with fragment props 21694 * @param {ReactElement} fragment 21695 */ 21696 21697 21698 function validateFragmentProps(fragment) { 21699 { 21700 setCurrentlyValidatingElement(fragment); 21701 var keys = Object.keys(fragment.props); 21702 21703 for (var i = 0; i < keys.length; i++) { 21704 var key = keys[i]; 21705 21706 if (key !== 'children' && key !== 'key') { 21707 error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key); 21708 break; 21709 } 21710 } 21711 21712 if (fragment.ref !== null) { 21713 error('Invalid attribute `ref` supplied to `React.Fragment`.'); 21714 } 21715 21716 setCurrentlyValidatingElement(null); 21717 } 21718 } 21719 21720 function createElementWithValidation(type, props, children) { 21721 var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to 21722 // succeed and there will likely be errors in render. 21723 21724 if (!validType) { 21725 var info = ''; 21726 21727 if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) { 21728 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."; 21729 } 21730 21731 var sourceInfo = getSourceInfoErrorAddendumForProps(props); 21732 21733 if (sourceInfo) { 21734 info += sourceInfo; 21735 } else { 21736 info += getDeclarationErrorAddendum(); 21737 } 21738 21739 var typeString; 21740 21741 if (type === null) { 21742 typeString = 'null'; 21743 } else if (Array.isArray(type)) { 21744 typeString = 'array'; 21745 } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) { 21746 typeString = "<" + (getComponentName(type.type) || 'Unknown') + " />"; 21747 info = ' Did you accidentally export a JSX literal instead of a component?'; 21748 } else { 21749 typeString = typeof type; 21750 } 21751 21752 { 21753 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); 21754 } 21755 } 21756 21757 var element = createElement.apply(this, arguments); // The result can be nullish if a mock or a custom function is used. 21758 // TODO: Drop this when these are no longer allowed as the type argument. 21759 21760 if (element == null) { 21761 return element; 21762 } // Skip key warning if the type isn't valid since our key validation logic 21763 // doesn't expect a non-string/function type and can throw confusing errors. 21764 // We don't want exception behavior to differ between dev and prod. 21765 // (Rendering will throw with a helpful message and as soon as the type is 21766 // fixed, the key warnings will appear.) 21767 21768 21769 if (validType) { 21770 for (var i = 2; i < arguments.length; i++) { 21771 validateChildKeys(arguments[i], type); 21772 } 21773 } 21774 21775 if (type === REACT_FRAGMENT_TYPE) { 21776 validateFragmentProps(element); 21777 } else { 21778 validatePropTypes(element); 21779 } 21780 21781 return element; 21782 } 21783 21784 var didWarnAboutDeprecatedCreateFactory = false; 21785 21786 function createFactoryWithValidation(type) { 21787 var validatedFactory = createElementWithValidation.bind(null, type); 21788 validatedFactory.type = type; 21789 { 21790 if (!didWarnAboutDeprecatedCreateFactory) { 21791 didWarnAboutDeprecatedCreateFactory = true; 21792 warn('React.createFactory() is deprecated and will be removed in ' + 'a future major release. Consider using JSX ' + 'or use React.createElement() directly instead.'); 21793 } // Legacy hook: remove it 21794 21795 21796 Object.defineProperty(validatedFactory, 'type', { 21797 enumerable: false, 21798 get: function () { 21799 warn('Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.'); 21800 Object.defineProperty(this, 'type', { 21801 value: type 21802 }); 21803 return type; 21804 } 21805 }); 21806 } 21807 return validatedFactory; 21808 } 21809 21810 function cloneElementWithValidation(element, props, children) { 21811 var newElement = cloneElement.apply(this, arguments); 21812 21813 for (var i = 2; i < arguments.length; i++) { 21814 validateChildKeys(arguments[i], newElement.type); 21815 } 21816 21817 validatePropTypes(newElement); 21818 return newElement; 21819 } 21820 21821 { 21822 try { 21823 var frozenObject = Object.freeze({}); 21824 var testMap = new Map([[frozenObject, null]]); 21825 var testSet = new Set([frozenObject]); // This is necessary for Rollup to not consider these unused. 21826 // https://github.com/rollup/rollup/issues/1771 21827 // TODO: we can remove these if Rollup fixes the bug. 21828 21829 testMap.set(0, 0); 21830 testSet.add(0); 21831 } catch (e) {} 21832 } 21833 var createElement$1 = createElementWithValidation; 21834 var cloneElement$1 = cloneElementWithValidation; 21835 var createFactory = createFactoryWithValidation; 21836 var Children = { 21837 map: mapChildren, 21838 forEach: forEachChildren, 21839 count: countChildren, 21840 toArray: toArray, 21841 only: onlyChild 21842 }; 21843 exports.Children = Children; 21844 exports.Component = Component; 21845 exports.Fragment = REACT_FRAGMENT_TYPE; 21846 exports.Profiler = REACT_PROFILER_TYPE; 21847 exports.PureComponent = PureComponent; 21848 exports.StrictMode = REACT_STRICT_MODE_TYPE; 21849 exports.Suspense = REACT_SUSPENSE_TYPE; 21850 exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = ReactSharedInternals; 21851 exports.cloneElement = cloneElement$1; 21852 exports.createContext = createContext; 21853 exports.createElement = createElement$1; 21854 exports.createFactory = createFactory; 21855 exports.createRef = createRef; 21856 exports.forwardRef = forwardRef; 21857 exports.isValidElement = isValidElement; 21858 exports.lazy = lazy; 21859 exports.memo = memo; 21860 exports.useCallback = useCallback; 21861 exports.useContext = useContext; 21862 exports.useDebugValue = useDebugValue; 21863 exports.useEffect = useEffect; 21864 exports.useImperativeHandle = useImperativeHandle; 21865 exports.useLayoutEffect = useLayoutEffect; 21866 exports.useMemo = useMemo; 21867 exports.useReducer = useReducer; 21868 exports.useRef = useRef; 21869 exports.useState = useState; 21870 exports.version = ReactVersion; 21871 })(); 21872} 21873 21874/***/ }), 21875
vendor: 429 bytes, lines 21876-21891
21876/***/ "./node_modules/react/index.js": 21877/*!*************************************!*\ 21878 !*** ./node_modules/react/index.js ***! 21879 \*************************************/ 21880/*! no static exports found */ 21881/***/ (function(module, exports, __webpack_require__) { 21882 21883"use strict"; 21884 21885 21886if (false) {} else { 21887 module.exports = __webpack_require__(/*! ./cjs/react.development.js */ "./node_modules/react/cjs/react.development.js"); 21888} 21889 21890/***/ }), 21891
vendor: 2,230 bytes, lines 21892-21968
21892/***/ "./node_modules/resolve-pathname/esm/resolve-pathname.js": 21893/*!***************************************************************!*\ 21894 !*** ./node_modules/resolve-pathname/esm/resolve-pathname.js ***! 21895 \***************************************************************/ 21896/*! exports provided: default */ 21897/***/ (function(module, __webpack_exports__, __webpack_require__) { 21898 21899"use strict"; 21900__webpack_require__.r(__webpack_exports__); 21901function isAbsolute(pathname) { 21902 return pathname.charAt(0) === '/'; 21903} // About 1.5x faster than the two-arg version of Array#splice() 21904 21905 21906function spliceOne(list, index) { 21907 for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) { 21908 list[i] = list[k]; 21909 } 21910 21911 list.pop(); 21912} // This implementation is based heavily on node's url.parse 21913 21914 21915function resolvePathname(to, from) { 21916 if (from === undefined) from = ''; 21917 var toParts = to && to.split('/') || []; 21918 var fromParts = from && from.split('/') || []; 21919 var isToAbs = to && isAbsolute(to); 21920 var isFromAbs = from && isAbsolute(from); 21921 var mustEndAbs = isToAbs || isFromAbs; 21922 21923 if (to && isAbsolute(to)) { 21924 // to is absolute 21925 fromParts = toParts; 21926 } else if (toParts.length) { 21927 // to is relative, drop the filename 21928 fromParts.pop(); 21929 fromParts = fromParts.concat(toParts); 21930 } 21931 21932 if (!fromParts.length) return '/'; 21933 var hasTrailingSlash; 21934 21935 if (fromParts.length) { 21936 var last = fromParts[fromParts.length - 1]; 21937 hasTrailingSlash = last === '.' || last === '..' || last === ''; 21938 } else { 21939 hasTrailingSlash = false; 21940 } 21941 21942 var up = 0; 21943 21944 for (var i = fromParts.length; i >= 0; i--) { 21945 var part = fromParts[i]; 21946 21947 if (part === '.') { 21948 spliceOne(fromParts, i); 21949 } else if (part === '..') { 21950 spliceOne(fromParts, i); 21951 up++; 21952 } else if (up) { 21953 spliceOne(fromParts, i); 21954 up--; 21955 } 21956 } 21957 21958 if (!mustEndAbs) for (; up--; up) fromParts.unshift('..'); 21959 if (mustEndAbs && fromParts[0] !== '' && (!fromParts[0] || !isAbsolute(fromParts[0]))) fromParts.unshift(''); 21960 var result = fromParts.join('/'); 21961 if (hasTrailingSlash && result.substr(-1) !== '/') result += '/'; 21962 return result; 21963} 21964 21965/* harmony default export */ __webpack_exports__["default"] = (resolvePathname); 21966 21967/***/ }), 21968
vendor: 10,509 bytes, lines 21969-22326
21969/***/ "./node_modules/scheduler/cjs/scheduler-tracing.development.js": 21970/*!*********************************************************************!*\ 21971 !*** ./node_modules/scheduler/cjs/scheduler-tracing.development.js ***! 21972 \*********************************************************************/ 21973/*! no static exports found */ 21974/***/ (function(module, exports, __webpack_require__) { 21975 21976"use strict"; 21977/** @license React v0.19.1 21978 * scheduler-tracing.development.js 21979 * 21980 * Copyright (c) Facebook, Inc. and its affiliates. 21981 * 21982 * This source code is licensed under the MIT license found in the 21983 * LICENSE file in the root directory of this source tree. 21984 */ 21985 21986 21987if (true) { 21988 (function () { 21989 'use strict'; 21990 21991 var DEFAULT_THREAD_ID = 0; // Counters used to generate unique IDs. 21992 21993 var interactionIDCounter = 0; 21994 var threadIDCounter = 0; // Set of currently traced interactions. 21995 // Interactions "stack"â 21996 // Meaning that newly traced interactions are appended to the previously active set. 21997 // When an interaction goes out of scope, the previous set (if any) is restored. 21998 21999 exports.__interactionsRef = null; // Listener(s) to notify when interactions begin and end. 22000 22001 exports.__subscriberRef = null; 22002 { 22003 exports.__interactionsRef = { 22004 current: new Set() 22005 }; 22006 exports.__subscriberRef = { 22007 current: null 22008 }; 22009 } 22010 22011 function unstable_clear(callback) { 22012 var prevInteractions = exports.__interactionsRef.current; 22013 exports.__interactionsRef.current = new Set(); 22014 22015 try { 22016 return callback(); 22017 } finally { 22018 exports.__interactionsRef.current = prevInteractions; 22019 } 22020 } 22021 22022 function unstable_getCurrent() { 22023 { 22024 return exports.__interactionsRef.current; 22025 } 22026 } 22027 22028 function unstable_getThreadID() { 22029 return ++threadIDCounter; 22030 } 22031 22032 function unstable_trace(name, timestamp, callback) { 22033 var threadID = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : DEFAULT_THREAD_ID; 22034 var interaction = { 22035 __count: 1, 22036 id: interactionIDCounter++, 22037 name: name, 22038 timestamp: timestamp 22039 }; 22040 var prevInteractions = exports.__interactionsRef.current; // Traced interactions should stack/accumulate. 22041 // To do that, clone the current interactions. 22042 // The previous set will be restored upon completion. 22043 22044 var interactions = new Set(prevInteractions); 22045 interactions.add(interaction); 22046 exports.__interactionsRef.current = interactions; 22047 var subscriber = exports.__subscriberRef.current; 22048 var returnValue; 22049 22050 try { 22051 if (subscriber !== null) { 22052 subscriber.onInteractionTraced(interaction); 22053 } 22054 } finally { 22055 try { 22056 if (subscriber !== null) { 22057 subscriber.onWorkStarted(interactions, threadID); 22058 } 22059 } finally { 22060 try { 22061 returnValue = callback(); 22062 } finally { 22063 exports.__interactionsRef.current = prevInteractions; 22064 22065 try { 22066 if (subscriber !== null) { 22067 subscriber.onWorkStopped(interactions, threadID); 22068 } 22069 } finally { 22070 interaction.__count--; // If no async work was scheduled for this interaction, 22071 // Notify subscribers that it's completed. 22072 22073 if (subscriber !== null && interaction.__count === 0) { 22074 subscriber.onInteractionScheduledWorkCompleted(interaction); 22075 } 22076 } 22077 } 22078 } 22079 } 22080 22081 return returnValue; 22082 } 22083 22084 function unstable_wrap(callback) { 22085 var threadID = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_THREAD_ID; 22086 var wrappedInteractions = exports.__interactionsRef.current; 22087 var subscriber = exports.__subscriberRef.current; 22088 22089 if (subscriber !== null) { 22090 subscriber.onWorkScheduled(wrappedInteractions, threadID); 22091 } // Update the pending async work count for the current interactions. 22092 // Update after calling subscribers in case of error. 22093 22094 22095 wrappedInteractions.forEach(function (interaction) { 22096 interaction.__count++; 22097 }); 22098 var hasRun = false; 22099 22100 function wrapped() { 22101 var prevInteractions = exports.__interactionsRef.current; 22102 exports.__interactionsRef.current = wrappedInteractions; 22103 subscriber = exports.__subscriberRef.current; 22104 22105 try { 22106 var returnValue; 22107 22108 try { 22109 if (subscriber !== null) { 22110 subscriber.onWorkStarted(wrappedInteractions, threadID); 22111 } 22112 } finally { 22113 try { 22114 returnValue = callback.apply(undefined, arguments); 22115 } finally { 22116 exports.__interactionsRef.current = prevInteractions; 22117 22118 if (subscriber !== null) { 22119 subscriber.onWorkStopped(wrappedInteractions, threadID); 22120 } 22121 } 22122 } 22123 22124 return returnValue; 22125 } finally { 22126 if (!hasRun) { 22127 // We only expect a wrapped function to be executed once, 22128 // But in the event that it's executed more than onceâ 22129 // Only decrement the outstanding interaction counts once. 22130 hasRun = true; // Update pending async counts for all wrapped interactions. 22131 // If this was the last scheduled async work for any of them, 22132 // Mark them as completed. 22133 22134 wrappedInteractions.forEach(function (interaction) { 22135 interaction.__count--; 22136 22137 if (subscriber !== null && interaction.__count === 0) { 22138 subscriber.onInteractionScheduledWorkCompleted(interaction); 22139 } 22140 }); 22141 } 22142 } 22143 } 22144 22145 wrapped.cancel = function cancel() { 22146 subscriber = exports.__subscriberRef.current; 22147 22148 try { 22149 if (subscriber !== null) { 22150 subscriber.onWorkCanceled(wrappedInteractions, threadID); 22151 } 22152 } finally { 22153 // Update pending async counts for all wrapped interactions. 22154 // If this was the last scheduled async work for any of them, 22155 // Mark them as completed. 22156 wrappedInteractions.forEach(function (interaction) { 22157 interaction.__count--; 22158 22159 if (subscriber && interaction.__count === 0) { 22160 subscriber.onInteractionScheduledWorkCompleted(interaction); 22161 } 22162 }); 22163 } 22164 }; 22165 22166 return wrapped; 22167 } 22168 22169 var subscribers = null; 22170 { 22171 subscribers = new Set(); 22172 } 22173 22174 function unstable_subscribe(subscriber) { 22175 { 22176 subscribers.add(subscriber); 22177 22178 if (subscribers.size === 1) { 22179 exports.__subscriberRef.current = { 22180 onInteractionScheduledWorkCompleted: onInteractionScheduledWorkCompleted, 22181 onInteractionTraced: onInteractionTraced, 22182 onWorkCanceled: onWorkCanceled, 22183 onWorkScheduled: onWorkScheduled, 22184 onWorkStarted: onWorkStarted, 22185 onWorkStopped: onWorkStopped 22186 }; 22187 } 22188 } 22189 } 22190 22191 function unstable_unsubscribe(subscriber) { 22192 { 22193 subscribers.delete(subscriber); 22194 22195 if (subscribers.size === 0) { 22196 exports.__subscriberRef.current = null; 22197 } 22198 } 22199 } 22200 22201 function onInteractionTraced(interaction) { 22202 var didCatchError = false; 22203 var caughtError = null; 22204 subscribers.forEach(function (subscriber) { 22205 try { 22206 subscriber.onInteractionTraced(interaction); 22207 } catch (error) { 22208 if (!didCatchError) { 22209 didCatchError = true; 22210 caughtError = error; 22211 } 22212 } 22213 }); 22214 22215 if (didCatchError) { 22216 throw caughtError; 22217 } 22218 } 22219 22220 function onInteractionScheduledWorkCompleted(interaction) { 22221 var didCatchError = false; 22222 var caughtError = null; 22223 subscribers.forEach(function (subscriber) { 22224 try { 22225 subscriber.onInteractionScheduledWorkCompleted(interaction); 22226 } catch (error) { 22227 if (!didCatchError) { 22228 didCatchError = true; 22229 caughtError = error; 22230 } 22231 } 22232 }); 22233 22234 if (didCatchError) { 22235 throw caughtError; 22236 } 22237 } 22238 22239 function onWorkScheduled(interactions, threadID) { 22240 var didCatchError = false; 22241 var caughtError = null; 22242 subscribers.forEach(function (subscriber) { 22243 try { 22244 subscriber.onWorkScheduled(interactions, threadID); 22245 } catch (error) { 22246 if (!didCatchError) { 22247 didCatchError = true; 22248 caughtError = error; 22249 } 22250 } 22251 }); 22252 22253 if (didCatchError) { 22254 throw caughtError; 22255 } 22256 } 22257 22258 function onWorkStarted(interactions, threadID) { 22259 var didCatchError = false; 22260 var caughtError = null; 22261 subscribers.forEach(function (subscriber) { 22262 try { 22263 subscriber.onWorkStarted(interactions, threadID); 22264 } catch (error) { 22265 if (!didCatchError) { 22266 didCatchError = true; 22267 caughtError = error; 22268 } 22269 } 22270 }); 22271 22272 if (didCatchError) { 22273 throw caughtError; 22274 } 22275 } 22276 22277 function onWorkStopped(interactions, threadID) { 22278 var didCatchError = false; 22279 var caughtError = null; 22280 subscribers.forEach(function (subscriber) { 22281 try { 22282 subscriber.onWorkStopped(interactions, threadID); 22283 } catch (error) { 22284 if (!didCatchError) { 22285 didCatchError = true; 22286 caughtError = error; 22287 } 22288 } 22289 }); 22290 22291 if (didCatchError) { 22292 throw caughtError; 22293 } 22294 } 22295 22296 function onWorkCanceled(interactions, threadID) { 22297 var didCatchError = false; 22298 var caughtError = null; 22299 subscribers.forEach(function (subscriber) { 22300 try { 22301 subscriber.onWorkCanceled(interactions, threadID); 22302 } catch (error) { 22303 if (!didCatchError) { 22304 didCatchError = true; 22305 caughtError = error; 22306 } 22307 } 22308 }); 22309 22310 if (didCatchError) { 22311 throw caughtError; 22312 } 22313 } 22314 22315 exports.unstable_clear = unstable_clear; 22316 exports.unstable_getCurrent = unstable_getCurrent; 22317 exports.unstable_getThreadID = unstable_getThreadID; 22318 exports.unstable_subscribe = unstable_subscribe; 22319 exports.unstable_trace = unstable_trace; 22320 exports.unstable_unsubscribe = unstable_unsubscribe; 22321 exports.unstable_wrap = unstable_wrap; 22322 })(); 22323} 22324 22325/***/ }), 22326
vendor: 26,864 bytes, lines 22327-23191
22327/***/ "./node_modules/scheduler/cjs/scheduler.development.js": 22328/*!*************************************************************!*\ 22329 !*** ./node_modules/scheduler/cjs/scheduler.development.js ***! 22330 \*************************************************************/ 22331/*! no static exports found */ 22332/***/ (function(module, exports, __webpack_require__) { 22333 22334"use strict"; 22335/** @license React v0.19.1 22336 * scheduler.development.js 22337 * 22338 * Copyright (c) Facebook, Inc. and its affiliates. 22339 * 22340 * This source code is licensed under the MIT license found in the 22341 * LICENSE file in the root directory of this source tree. 22342 */ 22343 22344 22345if (true) { 22346 (function () { 22347 'use strict'; 22348 22349 var enableSchedulerDebugging = false; 22350 var enableProfiling = true; 22351 var requestHostCallback; 22352 var requestHostTimeout; 22353 var cancelHostTimeout; 22354 var shouldYieldToHost; 22355 var requestPaint; 22356 22357 if ( // If Scheduler runs in a non-DOM environment, it falls back to a naive 22358 // implementation using setTimeout. 22359 typeof window === 'undefined' || // Check if MessageChannel is supported, too. 22360 typeof MessageChannel !== 'function') { 22361 // If this accidentally gets imported in a non-browser environment, e.g. JavaScriptCore, 22362 // fallback to a naive implementation. 22363 var _callback = null; 22364 var _timeoutID = null; 22365 22366 var _flushCallback = function () { 22367 if (_callback !== null) { 22368 try { 22369 var currentTime = exports.unstable_now(); 22370 var hasRemainingTime = true; 22371 22372 _callback(hasRemainingTime, currentTime); 22373 22374 _callback = null; 22375 } catch (e) { 22376 setTimeout(_flushCallback, 0); 22377 throw e; 22378 } 22379 } 22380 }; 22381 22382 var initialTime = Date.now(); 22383 22384 exports.unstable_now = function () { 22385 return Date.now() - initialTime; 22386 }; 22387 22388 requestHostCallback = function (cb) { 22389 if (_callback !== null) { 22390 // Protect against re-entrancy. 22391 setTimeout(requestHostCallback, 0, cb); 22392 } else { 22393 _callback = cb; 22394 setTimeout(_flushCallback, 0); 22395 } 22396 }; 22397 22398 requestHostTimeout = function (cb, ms) { 22399 _timeoutID = setTimeout(cb, ms); 22400 }; 22401 22402 cancelHostTimeout = function () { 22403 clearTimeout(_timeoutID); 22404 }; 22405 22406 shouldYieldToHost = function () { 22407 return false; 22408 }; 22409 22410 requestPaint = exports.unstable_forceFrameRate = function () {}; 22411 } else { 22412 // Capture local references to native APIs, in case a polyfill overrides them. 22413 var performance = window.performance; 22414 var _Date = window.Date; 22415 var _setTimeout = window.setTimeout; 22416 var _clearTimeout = window.clearTimeout; 22417 22418 if (typeof console !== 'undefined') { 22419 // TODO: Scheduler no longer requires these methods to be polyfilled. But 22420 // maybe we want to continue warning if they don't exist, to preserve the 22421 // option to rely on it in the future? 22422 var requestAnimationFrame = window.requestAnimationFrame; 22423 var cancelAnimationFrame = window.cancelAnimationFrame; // TODO: Remove fb.me link 22424 22425 if (typeof requestAnimationFrame !== 'function') { 22426 // Using console['error'] to evade Babel and ESLint 22427 console['error']("This browser doesn't support requestAnimationFrame. " + 'Make sure that you load a ' + 'polyfill in older browsers. https://fb.me/react-polyfills'); 22428 } 22429 22430 if (typeof cancelAnimationFrame !== 'function') { 22431 // Using console['error'] to evade Babel and ESLint 22432 console['error']("This browser doesn't support cancelAnimationFrame. " + 'Make sure that you load a ' + 'polyfill in older browsers. https://fb.me/react-polyfills'); 22433 } 22434 } 22435 22436 if (typeof performance === 'object' && typeof performance.now === 'function') { 22437 exports.unstable_now = function () { 22438 return performance.now(); 22439 }; 22440 } else { 22441 var _initialTime = _Date.now(); 22442 22443 exports.unstable_now = function () { 22444 return _Date.now() - _initialTime; 22445 }; 22446 } 22447 22448 var isMessageLoopRunning = false; 22449 var scheduledHostCallback = null; 22450 var taskTimeoutID = -1; // Scheduler periodically yields in case there is other work on the main 22451 // thread, like user events. By default, it yields multiple times per frame. 22452 // It does not attempt to align with frame boundaries, since most tasks don't 22453 // need to be frame aligned; for those that do, use requestAnimationFrame. 22454 22455 var yieldInterval = 5; 22456 var deadline = 0; // TODO: Make this configurable 22457 22458 { 22459 // `isInputPending` is not available. Since we have no way of knowing if 22460 // there's pending input, always yield at the end of the frame. 22461 shouldYieldToHost = function () { 22462 return exports.unstable_now() >= deadline; 22463 }; // Since we yield every frame regardless, `requestPaint` has no effect. 22464 22465 22466 requestPaint = function () {}; 22467 } 22468 22469 exports.unstable_forceFrameRate = function (fps) { 22470 if (fps < 0 || fps > 125) { 22471 // Using console['error'] to evade Babel and ESLint 22472 console['error']('forceFrameRate takes a positive int between 0 and 125, ' + 'forcing framerates higher than 125 fps is not unsupported'); 22473 return; 22474 } 22475 22476 if (fps > 0) { 22477 yieldInterval = Math.floor(1000 / fps); 22478 } else { 22479 // reset the framerate 22480 yieldInterval = 5; 22481 } 22482 }; 22483 22484 var performWorkUntilDeadline = function () { 22485 if (scheduledHostCallback !== null) { 22486 var currentTime = exports.unstable_now(); // Yield after `yieldInterval` ms, regardless of where we are in the vsync 22487 // cycle. This means there's always time remaining at the beginning of 22488 // the message event. 22489 22490 deadline = currentTime + yieldInterval; 22491 var hasTimeRemaining = true; 22492 22493 try { 22494 var hasMoreWork = scheduledHostCallback(hasTimeRemaining, currentTime); 22495 22496 if (!hasMoreWork) { 22497 isMessageLoopRunning = false; 22498 scheduledHostCallback = null; 22499 } else { 22500 // If there's more work, schedule the next message event at the end 22501 // of the preceding one. 22502 port.postMessage(null); 22503 } 22504 } catch (error) { 22505 // If a scheduler task throws, exit the current browser task so the 22506 // error can be observed. 22507 port.postMessage(null); 22508 throw error; 22509 } 22510 } else { 22511 isMessageLoopRunning = false; 22512 } // Yielding to the browser will give it a chance to paint, so we can 22513 22514 }; 22515 22516 var channel = new MessageChannel(); 22517 var port = channel.port2; 22518 channel.port1.onmessage = performWorkUntilDeadline; 22519 22520 requestHostCallback = function (callback) { 22521 scheduledHostCallback = callback; 22522 22523 if (!isMessageLoopRunning) { 22524 isMessageLoopRunning = true; 22525 port.postMessage(null); 22526 } 22527 }; 22528 22529 requestHostTimeout = function (callback, ms) { 22530 taskTimeoutID = _setTimeout(function () { 22531 callback(exports.unstable_now()); 22532 }, ms); 22533 }; 22534 22535 cancelHostTimeout = function () { 22536 _clearTimeout(taskTimeoutID); 22537 22538 taskTimeoutID = -1; 22539 }; 22540 } 22541 22542 function push(heap, node) { 22543 var index = heap.length; 22544 heap.push(node); 22545 siftUp(heap, node, index); 22546 } 22547 22548 function peek(heap) { 22549 var first = heap[0]; 22550 return first === undefined ? null : first; 22551 } 22552 22553 function pop(heap) { 22554 var first = heap[0]; 22555 22556 if (first !== undefined) { 22557 var last = heap.pop(); 22558 22559 if (last !== first) { 22560 heap[0] = last; 22561 siftDown(heap, last, 0); 22562 } 22563 22564 return first; 22565 } else { 22566 return null; 22567 } 22568 } 22569 22570 function siftUp(heap, node, i) { 22571 var index = i; 22572 22573 while (true) { 22574 var parentIndex = index - 1 >>> 1; 22575 var parent = heap[parentIndex]; 22576 22577 if (parent !== undefined && compare(parent, node) > 0) { 22578 // The parent is larger. Swap positions. 22579 heap[parentIndex] = node; 22580 heap[index] = parent; 22581 index = parentIndex; 22582 } else { 22583 // The parent is smaller. Exit. 22584 return; 22585 } 22586 } 22587 } 22588 22589 function siftDown(heap, node, i) { 22590 var index = i; 22591 var length = heap.length; 22592 22593 while (index < length) { 22594 var leftIndex = (index + 1) * 2 - 1; 22595 var left = heap[leftIndex]; 22596 var rightIndex = leftIndex + 1; 22597 var right = heap[rightIndex]; // If the left or right node is smaller, swap with the smaller of those. 22598 22599 if (left !== undefined && compare(left, node) < 0) { 22600 if (right !== undefined && compare(right, left) < 0) { 22601 heap[index] = right; 22602 heap[rightIndex] = node; 22603 index = rightIndex; 22604 } else { 22605 heap[index] = left; 22606 heap[leftIndex] = node; 22607 index = leftIndex; 22608 } 22609 } else if (right !== undefined && compare(right, node) < 0) { 22610 heap[index] = right; 22611 heap[rightIndex] = node; 22612 index = rightIndex; 22613 } else { 22614 // Neither child is smaller. Exit. 22615 return; 22616 } 22617 } 22618 } 22619 22620 function compare(a, b) { 22621 // Compare sort index first, then task id. 22622 var diff = a.sortIndex - b.sortIndex; 22623 return diff !== 0 ? diff : a.id - b.id; 22624 } // TODO: Use symbols? 22625 22626 22627 var NoPriority = 0; 22628 var ImmediatePriority = 1; 22629 var UserBlockingPriority = 2; 22630 var NormalPriority = 3; 22631 var LowPriority = 4; 22632 var IdlePriority = 5; 22633 var runIdCounter = 0; 22634 var mainThreadIdCounter = 0; 22635 var profilingStateSize = 4; 22636 var sharedProfilingBuffer = // $FlowFixMe Flow doesn't know about SharedArrayBuffer 22637 typeof SharedArrayBuffer === 'function' ? new SharedArrayBuffer(profilingStateSize * Int32Array.BYTES_PER_ELEMENT) : // $FlowFixMe Flow doesn't know about ArrayBuffer 22638 typeof ArrayBuffer === 'function' ? new ArrayBuffer(profilingStateSize * Int32Array.BYTES_PER_ELEMENT) : null // Don't crash the init path on IE9 22639 ; 22640 var profilingState = sharedProfilingBuffer !== null ? new Int32Array(sharedProfilingBuffer) : []; // We can't read this but it helps save bytes for null checks 22641 22642 var PRIORITY = 0; 22643 var CURRENT_TASK_ID = 1; 22644 var CURRENT_RUN_ID = 2; 22645 var QUEUE_SIZE = 3; 22646 { 22647 profilingState[PRIORITY] = NoPriority; // This is maintained with a counter, because the size of the priority queue 22648 // array might include canceled tasks. 22649 22650 profilingState[QUEUE_SIZE] = 0; 22651 profilingState[CURRENT_TASK_ID] = 0; 22652 } // Bytes per element is 4 22653 22654 var INITIAL_EVENT_LOG_SIZE = 131072; 22655 var MAX_EVENT_LOG_SIZE = 524288; // Equivalent to 2 megabytes 22656 22657 var eventLogSize = 0; 22658 var eventLogBuffer = null; 22659 var eventLog = null; 22660 var eventLogIndex = 0; 22661 var TaskStartEvent = 1; 22662 var TaskCompleteEvent = 2; 22663 var TaskErrorEvent = 3; 22664 var TaskCancelEvent = 4; 22665 var TaskRunEvent = 5; 22666 var TaskYieldEvent = 6; 22667 var SchedulerSuspendEvent = 7; 22668 var SchedulerResumeEvent = 8; 22669 22670 function logEvent(entries) { 22671 if (eventLog !== null) { 22672 var offset = eventLogIndex; 22673 eventLogIndex += entries.length; 22674 22675 if (eventLogIndex + 1 > eventLogSize) { 22676 eventLogSize *= 2; 22677 22678 if (eventLogSize > MAX_EVENT_LOG_SIZE) { 22679 // Using console['error'] to evade Babel and ESLint 22680 console['error']("Scheduler Profiling: Event log exceeded maximum size. Don't " + 'forget to call `stopLoggingProfilingEvents()`.'); 22681 stopLoggingProfilingEvents(); 22682 return; 22683 } 22684 22685 var newEventLog = new Int32Array(eventLogSize * 4); 22686 newEventLog.set(eventLog); 22687 eventLogBuffer = newEventLog.buffer; 22688 eventLog = newEventLog; 22689 } 22690 22691 eventLog.set(entries, offset); 22692 } 22693 } 22694 22695 function startLoggingProfilingEvents() { 22696 eventLogSize = INITIAL_EVENT_LOG_SIZE; 22697 eventLogBuffer = new ArrayBuffer(eventLogSize * 4); 22698 eventLog = new Int32Array(eventLogBuffer); 22699 eventLogIndex = 0; 22700 } 22701 22702 function stopLoggingProfilingEvents() { 22703 var buffer = eventLogBuffer; 22704 eventLogSize = 0; 22705 eventLogBuffer = null; 22706 eventLog = null; 22707 eventLogIndex = 0; 22708 return buffer; 22709 } 22710 22711 function markTaskStart(task, ms) { 22712 { 22713 profilingState[QUEUE_SIZE]++; 22714 22715 if (eventLog !== null) { 22716 // performance.now returns a float, representing milliseconds. When the 22717 // event is logged, it's coerced to an int. Convert to microseconds to 22718 // maintain extra degrees of precision. 22719 logEvent([TaskStartEvent, ms * 1000, task.id, task.priorityLevel]); 22720 } 22721 } 22722 } 22723 22724 function markTaskCompleted(task, ms) { 22725 { 22726 profilingState[PRIORITY] = NoPriority; 22727 profilingState[CURRENT_TASK_ID] = 0; 22728 profilingState[QUEUE_SIZE]--; 22729 22730 if (eventLog !== null) { 22731 logEvent([TaskCompleteEvent, ms * 1000, task.id]); 22732 } 22733 } 22734 } 22735 22736 function markTaskCanceled(task, ms) { 22737 { 22738 profilingState[QUEUE_SIZE]--; 22739 22740 if (eventLog !== null) { 22741 logEvent([TaskCancelEvent, ms * 1000, task.id]); 22742 } 22743 } 22744 } 22745 22746 function markTaskErrored(task, ms) { 22747 { 22748 profilingState[PRIORITY] = NoPriority; 22749 profilingState[CURRENT_TASK_ID] = 0; 22750 profilingState[QUEUE_SIZE]--; 22751 22752 if (eventLog !== null) { 22753 logEvent([TaskErrorEvent, ms * 1000, task.id]); 22754 } 22755 } 22756 } 22757 22758 function markTaskRun(task, ms) { 22759 { 22760 runIdCounter++; 22761 profilingState[PRIORITY] = task.priorityLevel; 22762 profilingState[CURRENT_TASK_ID] = task.id; 22763 profilingState[CURRENT_RUN_ID] = runIdCounter; 22764 22765 if (eventLog !== null) { 22766 logEvent([TaskRunEvent, ms * 1000, task.id, runIdCounter]); 22767 } 22768 } 22769 } 22770 22771 function markTaskYield(task, ms) { 22772 { 22773 profilingState[PRIORITY] = NoPriority; 22774 profilingState[CURRENT_TASK_ID] = 0; 22775 profilingState[CURRENT_RUN_ID] = 0; 22776 22777 if (eventLog !== null) { 22778 logEvent([TaskYieldEvent, ms * 1000, task.id, runIdCounter]); 22779 } 22780 } 22781 } 22782 22783 function markSchedulerSuspended(ms) { 22784 { 22785 mainThreadIdCounter++; 22786 22787 if (eventLog !== null) { 22788 logEvent([SchedulerSuspendEvent, ms * 1000, mainThreadIdCounter]); 22789 } 22790 } 22791 } 22792 22793 function markSchedulerUnsuspended(ms) { 22794 { 22795 if (eventLog !== null) { 22796 logEvent([SchedulerResumeEvent, ms * 1000, mainThreadIdCounter]); 22797 } 22798 } 22799 } 22800 /* eslint-disable no-var */ 22801 // Math.pow(2, 30) - 1 22802 // 0b111111111111111111111111111111 22803 22804 22805 var maxSigned31BitInt = 1073741823; // Times out immediately 22806 22807 var IMMEDIATE_PRIORITY_TIMEOUT = -1; // Eventually times out 22808 22809 var USER_BLOCKING_PRIORITY = 250; 22810 var NORMAL_PRIORITY_TIMEOUT = 5000; 22811 var LOW_PRIORITY_TIMEOUT = 10000; // Never times out 22812 22813 var IDLE_PRIORITY = maxSigned31BitInt; // Tasks are stored on a min heap 22814 22815 var taskQueue = []; 22816 var timerQueue = []; // Incrementing id counter. Used to maintain insertion order. 22817 22818 var taskIdCounter = 1; // Pausing the scheduler is useful for debugging. 22819 22820 var currentTask = null; 22821 var currentPriorityLevel = NormalPriority; // This is set while performing work, to prevent re-entrancy. 22822 22823 var isPerformingWork = false; 22824 var isHostCallbackScheduled = false; 22825 var isHostTimeoutScheduled = false; 22826 22827 function advanceTimers(currentTime) { 22828 // Check for tasks that are no longer delayed and add them to the queue. 22829 var timer = peek(timerQueue); 22830 22831 while (timer !== null) { 22832 if (timer.callback === null) { 22833 // Timer was cancelled. 22834 pop(timerQueue); 22835 } else if (timer.startTime <= currentTime) { 22836 // Timer fired. Transfer to the task queue. 22837 pop(timerQueue); 22838 timer.sortIndex = timer.expirationTime; 22839 push(taskQueue, timer); 22840 { 22841 markTaskStart(timer, currentTime); 22842 timer.isQueued = true; 22843 } 22844 } else { 22845 // Remaining timers are pending. 22846 return; 22847 } 22848 22849 timer = peek(timerQueue); 22850 } 22851 } 22852 22853 function handleTimeout(currentTime) { 22854 isHostTimeoutScheduled = false; 22855 advanceTimers(currentTime); 22856 22857 if (!isHostCallbackScheduled) { 22858 if (peek(taskQueue) !== null) { 22859 isHostCallbackScheduled = true; 22860 requestHostCallback(flushWork); 22861 } else { 22862 var firstTimer = peek(timerQueue); 22863 22864 if (firstTimer !== null) { 22865 requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime); 22866 } 22867 } 22868 } 22869 } 22870 22871 function flushWork(hasTimeRemaining, initialTime) { 22872 { 22873 markSchedulerUnsuspended(initialTime); 22874 } // We'll need a host callback the next time work is scheduled. 22875 22876 isHostCallbackScheduled = false; 22877 22878 if (isHostTimeoutScheduled) { 22879 // We scheduled a timeout but it's no longer needed. Cancel it. 22880 isHostTimeoutScheduled = false; 22881 cancelHostTimeout(); 22882 } 22883 22884 isPerformingWork = true; 22885 var previousPriorityLevel = currentPriorityLevel; 22886 22887 try { 22888 if (enableProfiling) { 22889 try { 22890 return workLoop(hasTimeRemaining, initialTime); 22891 } catch (error) { 22892 if (currentTask !== null) { 22893 var currentTime = exports.unstable_now(); 22894 markTaskErrored(currentTask, currentTime); 22895 currentTask.isQueued = false; 22896 } 22897 22898 throw error; 22899 } 22900 } else { 22901 // No catch in prod codepath. 22902 return workLoop(hasTimeRemaining, initialTime); 22903 } 22904 } finally { 22905 currentTask = null; 22906 currentPriorityLevel = previousPriorityLevel; 22907 isPerformingWork = false; 22908 { 22909 var _currentTime = exports.unstable_now(); 22910 22911 markSchedulerSuspended(_currentTime); 22912 } 22913 } 22914 } 22915 22916 function workLoop(hasTimeRemaining, initialTime) { 22917 var currentTime = initialTime; 22918 advanceTimers(currentTime); 22919 currentTask = peek(taskQueue); 22920 22921 while (currentTask !== null && !enableSchedulerDebugging) { 22922 if (currentTask.expirationTime > currentTime && (!hasTimeRemaining || shouldYieldToHost())) { 22923 // This currentTask hasn't expired, and we've reached the deadline. 22924 break; 22925 } 22926 22927 var callback = currentTask.callback; 22928 22929 if (callback !== null) { 22930 currentTask.callback = null; 22931 currentPriorityLevel = currentTask.priorityLevel; 22932 var didUserCallbackTimeout = currentTask.expirationTime <= currentTime; 22933 markTaskRun(currentTask, currentTime); 22934 var continuationCallback = callback(didUserCallbackTimeout); 22935 currentTime = exports.unstable_now(); 22936 22937 if (typeof continuationCallback === 'function') { 22938 currentTask.callback = continuationCallback; 22939 markTaskYield(currentTask, currentTime); 22940 } else { 22941 { 22942 markTaskCompleted(currentTask, currentTime); 22943 currentTask.isQueued = false; 22944 } 22945 22946 if (currentTask === peek(taskQueue)) { 22947 pop(taskQueue); 22948 } 22949 } 22950 22951 advanceTimers(currentTime); 22952 } else { 22953 pop(taskQueue); 22954 } 22955 22956 currentTask = peek(taskQueue); 22957 } // Return whether there's additional work 22958 22959 22960 if (currentTask !== null) { 22961 return true; 22962 } else { 22963 var firstTimer = peek(timerQueue); 22964 22965 if (firstTimer !== null) { 22966 requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime); 22967 } 22968 22969 return false; 22970 } 22971 } 22972 22973 function unstable_runWithPriority(priorityLevel, eventHandler) { 22974 switch (priorityLevel) { 22975 case ImmediatePriority: 22976 case UserBlockingPriority: 22977 case NormalPriority: 22978 case LowPriority: 22979 case IdlePriority: 22980 break; 22981 22982 default: 22983 priorityLevel = NormalPriority; 22984 } 22985 22986 var previousPriorityLevel = currentPriorityLevel; 22987 currentPriorityLevel = priorityLevel; 22988 22989 try { 22990 return eventHandler(); 22991 } finally { 22992 currentPriorityLevel = previousPriorityLevel; 22993 } 22994 } 22995 22996 function unstable_next(eventHandler) { 22997 var priorityLevel; 22998 22999 switch (currentPriorityLevel) { 23000 case ImmediatePriority: 23001 case UserBlockingPriority: 23002 case NormalPriority: 23003 // Shift down to normal priority 23004 priorityLevel = NormalPriority; 23005 break; 23006 23007 default: 23008 // Anything lower than normal priority should remain at the current level. 23009 priorityLevel = currentPriorityLevel; 23010 break; 23011 } 23012 23013 var previousPriorityLevel = currentPriorityLevel; 23014 currentPriorityLevel = priorityLevel; 23015 23016 try { 23017 return eventHandler(); 23018 } finally { 23019 currentPriorityLevel = previousPriorityLevel; 23020 } 23021 } 23022 23023 function unstable_wrapCallback(callback) { 23024 var parentPriorityLevel = currentPriorityLevel; 23025 return function () { 23026 // This is a fork of runWithPriority, inlined for performance. 23027 var previousPriorityLevel = currentPriorityLevel; 23028 currentPriorityLevel = parentPriorityLevel; 23029 23030 try { 23031 return callback.apply(this, arguments); 23032 } finally { 23033 currentPriorityLevel = previousPriorityLevel; 23034 } 23035 }; 23036 } 23037 23038 function timeoutForPriorityLevel(priorityLevel) { 23039 switch (priorityLevel) { 23040 case ImmediatePriority: 23041 return IMMEDIATE_PRIORITY_TIMEOUT; 23042 23043 case UserBlockingPriority: 23044 return USER_BLOCKING_PRIORITY; 23045 23046 case IdlePriority: 23047 return IDLE_PRIORITY; 23048 23049 case LowPriority: 23050 return LOW_PRIORITY_TIMEOUT; 23051 23052 case NormalPriority: 23053 default: 23054 return NORMAL_PRIORITY_TIMEOUT; 23055 } 23056 } 23057 23058 function unstable_scheduleCallback(priorityLevel, callback, options) { 23059 var currentTime = exports.unstable_now(); 23060 var startTime; 23061 var timeout; 23062 23063 if (typeof options === 'object' && options !== null) { 23064 var delay = options.delay; 23065 23066 if (typeof delay === 'number' && delay > 0) { 23067 startTime = currentTime + delay; 23068 } else { 23069 startTime = currentTime; 23070 } 23071 23072 timeout = typeof options.timeout === 'number' ? options.timeout : timeoutForPriorityLevel(priorityLevel); 23073 } else { 23074 timeout = timeoutForPriorityLevel(priorityLevel); 23075 startTime = currentTime; 23076 } 23077 23078 var expirationTime = startTime + timeout; 23079 var newTask = { 23080 id: taskIdCounter++, 23081 callback: callback, 23082 priorityLevel: priorityLevel, 23083 startTime: startTime, 23084 expirationTime: expirationTime, 23085 sortIndex: -1 23086 }; 23087 { 23088 newTask.isQueued = false; 23089 } 23090 23091 if (startTime > currentTime) { 23092 // This is a delayed task. 23093 newTask.sortIndex = startTime; 23094 push(timerQueue, newTask); 23095 23096 if (peek(taskQueue) === null && newTask === peek(timerQueue)) { 23097 // All tasks are delayed, and this is the task with the earliest delay. 23098 if (isHostTimeoutScheduled) { 23099 // Cancel an existing timeout. 23100 cancelHostTimeout(); 23101 } else { 23102 isHostTimeoutScheduled = true; 23103 } // Schedule a timeout. 23104 23105 23106 requestHostTimeout(handleTimeout, startTime - currentTime); 23107 } 23108 } else { 23109 newTask.sortIndex = expirationTime; 23110 push(taskQueue, newTask); 23111 { 23112 markTaskStart(newTask, currentTime); 23113 newTask.isQueued = true; 23114 } // Schedule a host callback, if needed. If we're already performing work, 23115 // wait until the next time we yield. 23116 23117 if (!isHostCallbackScheduled && !isPerformingWork) { 23118 isHostCallbackScheduled = true; 23119 requestHostCallback(flushWork); 23120 } 23121 } 23122 23123 return newTask; 23124 } 23125 23126 function unstable_pauseExecution() {} 23127 23128 function unstable_continueExecution() { 23129 if (!isHostCallbackScheduled && !isPerformingWork) { 23130 isHostCallbackScheduled = true; 23131 requestHostCallback(flushWork); 23132 } 23133 } 23134 23135 function unstable_getFirstCallbackNode() { 23136 return peek(taskQueue); 23137 } 23138 23139 function unstable_cancelCallback(task) { 23140 { 23141 if (task.isQueued) { 23142 var currentTime = exports.unstable_now(); 23143 markTaskCanceled(task, currentTime); 23144 task.isQueued = false; 23145 } 23146 } // Null out the callback to indicate the task has been canceled. (Can't 23147 // remove from the queue because you can't remove arbitrary nodes from an 23148 // array based heap, only the first one.) 23149 23150 task.callback = null; 23151 } 23152 23153 function unstable_getCurrentPriorityLevel() { 23154 return currentPriorityLevel; 23155 } 23156 23157 function unstable_shouldYield() { 23158 var currentTime = exports.unstable_now(); 23159 advanceTimers(currentTime); 23160 var firstTask = peek(taskQueue); 23161 return firstTask !== currentTask && currentTask !== null && firstTask !== null && firstTask.callback !== null && firstTask.startTime <= currentTime && firstTask.expirationTime < currentTask.expirationTime || shouldYieldToHost(); 23162 } 23163 23164 var unstable_requestPaint = requestPaint; 23165 var unstable_Profiling = { 23166 startLoggingProfilingEvents: startLoggingProfilingEvents, 23167 stopLoggingProfilingEvents: stopLoggingProfilingEvents, 23168 sharedProfilingBuffer: sharedProfilingBuffer 23169 }; 23170 exports.unstable_IdlePriority = IdlePriority; 23171 exports.unstable_ImmediatePriority = ImmediatePriority; 23172 exports.unstable_LowPriority = LowPriority; 23173 exports.unstable_NormalPriority = NormalPriority; 23174 exports.unstable_Profiling = unstable_Profiling; 23175 exports.unstable_UserBlockingPriority = UserBlockingPriority; 23176 exports.unstable_cancelCallback = unstable_cancelCallback; 23177 exports.unstable_continueExecution = unstable_continueExecution; 23178 exports.unstable_getCurrentPriorityLevel = unstable_getCurrentPriorityLevel; 23179 exports.unstable_getFirstCallbackNode = unstable_getFirstCallbackNode; 23180 exports.unstable_next = unstable_next; 23181 exports.unstable_pauseExecution = unstable_pauseExecution; 23182 exports.unstable_requestPaint = unstable_requestPaint; 23183 exports.unstable_runWithPriority = unstable_runWithPriority; 23184 exports.unstable_scheduleCallback = unstable_scheduleCallback; 23185 exports.unstable_shouldYield = unstable_shouldYield; 23186 exports.unstable_wrapCallback = unstable_wrapCallback; 23187 })(); 23188} 23189 23190/***/ }), 23191
vendor: 457 bytes, lines 23192-23207
23192/***/ "./node_modules/scheduler/index.js": 23193/*!*****************************************!*\ 23194 !*** ./node_modules/scheduler/index.js ***! 23195 \*****************************************/ 23196/*! no static exports found */ 23197/***/ (function(module, exports, __webpack_require__) { 23198 23199"use strict"; 23200 23201 23202if (false) {} else { 23203 module.exports = __webpack_require__(/*! ./cjs/scheduler.development.js */ "./node_modules/scheduler/cjs/scheduler.development.js"); 23204} 23205 23206/***/ }), 23207
vendor: 481 bytes, lines 23208-23223
23208/***/ "./node_modules/scheduler/tracing.js": 23209/*!*******************************************!*\ 23210 !*** ./node_modules/scheduler/tracing.js ***! 23211 \*******************************************/ 23212/*! no static exports found */ 23213/***/ (function(module, exports, __webpack_require__) { 23214 23215"use strict"; 23216 23217 23218if (false) {} else { 23219 module.exports = __webpack_require__(/*! ./cjs/scheduler-tracing.development.js */ "./node_modules/scheduler/cjs/scheduler-tracing.development.js"); 23220} 23221 23222/***/ }), 23223
vendor: 6,944 bytes, lines 23224-23415
23224/***/ "./node_modules/spectacle/es/components/appear.js": 23225/*!********************************************************!*\ 23226 !*** ./node_modules/spectacle/es/components/appear.js ***! 23227 \********************************************************/ 23228/*! exports provided: default */ 23229/***/ (function(module, __webpack_exports__, __webpack_require__) { 23230 23231"use strict"; 23232__webpack_require__.r(__webpack_exports__); 23233/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js"); 23234/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 23235/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js"); 23236/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__); 23237/* harmony import */ var react_spring__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-spring */ "./node_modules/react-spring/web.js"); 23238/* harmony import */ var _hooks_use_transition_pipe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../hooks/use-transition-pipe */ "./node_modules/spectacle/es/hooks/use-transition-pipe.js"); 23239/* harmony import */ var _hooks_use_slide__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../hooks/use-slide */ "./node_modules/spectacle/es/hooks/use-slide.js"); 23240function ownKeys(object, enumerableOnly) { 23241 var keys = Object.keys(object); 23242 23243 if (Object.getOwnPropertySymbols) { 23244 var symbols = Object.getOwnPropertySymbols(object); 23245 if (enumerableOnly) symbols = symbols.filter(function (sym) { 23246 return Object.getOwnPropertyDescriptor(object, sym).enumerable; 23247 }); 23248 keys.push.apply(keys, symbols); 23249 } 23250 23251 return keys; 23252} 23253 23254function _objectSpread(target) { 23255 for (var i = 1; i < arguments.length; i++) { 23256 var source = arguments[i] != null ? arguments[i] : {}; 23257 23258 if (i % 2) { 23259 ownKeys(Object(source), true).forEach(function (key) { 23260 _defineProperty(target, key, source[key]); 23261 }); 23262 } else if (Object.getOwnPropertyDescriptors) { 23263 Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); 23264 } else { 23265 ownKeys(Object(source)).forEach(function (key) { 23266 Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); 23267 }); 23268 } 23269 } 23270 23271 return target; 23272} 23273 23274function _defineProperty(obj, key, value) { 23275 if (key in obj) { 23276 Object.defineProperty(obj, key, { 23277 value: value, 23278 enumerable: true, 23279 configurable: true, 23280 writable: true 23281 }); 23282 } else { 23283 obj[key] = value; 23284 } 23285 23286 return obj; 23287} 23288 23289function _slicedToArray(arr, i) { 23290 return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); 23291} 23292 23293function _nonIterableRest() { 23294 throw new TypeError("Invalid attempt to destructure non-iterable instance"); 23295} 23296 23297function _iterableToArrayLimit(arr, i) { 23298 if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { 23299 return; 23300 } 23301 23302 var _arr = []; 23303 var _n = true; 23304 var _d = false; 23305 var _e = undefined; 23306 23307 try { 23308 for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { 23309 _arr.push(_s.value); 23310 23311 if (i && _arr.length === i) break; 23312 } 23313 } catch (err) { 23314 _d = true; 23315 _e = err; 23316 } finally { 23317 try { 23318 if (!_n && _i["return"] != null) _i["return"](); 23319 } finally { 23320 if (_d) throw _e; 23321 } 23322 } 23323 23324 return _arr; 23325} 23326 23327function _arrayWithHoles(arr) { 23328 if (Array.isArray(arr)) return arr; 23329} 23330 23331 23332 23333 23334 23335 23336/** 23337 * SlideElementWrapper provides a component for animating slideElements 23338 * Anything wrapped inside will be affected by the transition. 23339 * 23340 * It is currently using useSpring but ideally we will be able to switch 23341 * to whatever react-spring hook a user desires! 23342 * 23343 * Note: Immediate is a React-Spring property that we pass to the animations 23344 * essentially it skips animations. 23345 */ 23346 23347var Appear = function Appear(_ref) { 23348 var elementNum = _ref.elementNum, 23349 transitionEffect = _ref.transitionEffect, 23350 children = _ref.children; 23351 23352 var _React$useContext = react__WEBPACK_IMPORTED_MODULE_0___default.a.useContext(_hooks_use_slide__WEBPACK_IMPORTED_MODULE_4__["SlideContext"]), 23353 _React$useContext$sta = _React$useContext.state, 23354 currentSlideElement = _React$useContext$sta.currentSlideElement, 23355 reverseDirection = _React$useContext$sta.reverseDirection, 23356 immediate = _React$useContext$sta.immediate; 23357 23358 var _React$useContext2 = react__WEBPACK_IMPORTED_MODULE_0___default.a.useContext(_hooks_use_transition_pipe__WEBPACK_IMPORTED_MODULE_3__["TransitionPipeContext"]), 23359 signal = _React$useContext2.signal; 23360 23361 var activeElement = elementNum === currentSlideElement; 23362 var upcomingElement = elementNum > currentSlideElement && !reverseDirection || elementNum < currentSlideElement && reverseDirection; 23363 var previousElement = elementNum < currentSlideElement && !reverseDirection || elementNum > currentSlideElement && reverseDirection; 23364 23365 var _useSpring = Object(react_spring__WEBPACK_IMPORTED_MODULE_2__["useSpring"])(function () { 23366 if ((activeElement || upcomingElement) && !previousElement) { 23367 return reverseDirection ? transitionEffect.to : transitionEffect.from; 23368 } else if (previousElement) { 23369 return reverseDirection ? transitionEffect.from : transitionEffect.to; 23370 } else { 23371 return transitionEffect.to; 23372 } 23373 }), 23374 _useSpring2 = _slicedToArray(_useSpring, 2), 23375 styleProps = _useSpring2[0], 23376 set = _useSpring2[1]; 23377 23378 react__WEBPACK_IMPORTED_MODULE_0___default.a.useEffect(function () { 23379 if (activeElement && !reverseDirection) { 23380 set(_objectSpread({}, transitionEffect.to, { 23381 immediate: immediate 23382 })); 23383 } else if (reverseDirection && previousElement) { 23384 set(_objectSpread({}, transitionEffect.from, { 23385 immediate: immediate 23386 })); 23387 } 23388 }, [activeElement, elementNum, immediate, previousElement, reverseDirection, set, signal, transitionEffect, upcomingElement]); 23389 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_spring__WEBPACK_IMPORTED_MODULE_2__["animated"].div, { 23390 style: styleProps 23391 }, children); 23392}; 23393 23394Appear.propTypes = { 23395 children: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.node.isRequired, 23396 elementNum: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.number.isRequired, 23397 transitionEffect: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.shape({ 23398 from: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.object.isRequired, 23399 to: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.object.isRequired 23400 }) 23401}; 23402Appear.defaultProps = { 23403 transitionEffect: { 23404 from: { 23405 opacity: 0 23406 }, 23407 to: { 23408 opacity: 1 23409 } 23410 } 23411}; 23412/* harmony default export */ __webpack_exports__["default"] = (Appear); 23413 23414/***/ }), 23415
vendor: 10,446 bytes, lines 23416-23662
23416/***/ "./node_modules/spectacle/es/components/code-pane.js": 23417/*!***********************************************************!*\ 23418 !*** ./node_modules/spectacle/es/components/code-pane.js ***! 23419 \***********************************************************/ 23420/*! exports provided: default */ 23421/***/ (function(module, __webpack_exports__, __webpack_require__) { 23422 23423"use strict"; 23424__webpack_require__.r(__webpack_exports__); 23425/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return CodePane; }); 23426/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js"); 23427/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 23428/* harmony import */ var prism_react_renderer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prism-react-renderer */ "./node_modules/spectacle/node_modules/prism-react-renderer/es/index.js"); 23429/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js"); 23430/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_2__); 23431/* harmony import */ var prism_react_renderer_themes_vsDark__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! prism-react-renderer/themes/vsDark */ "./node_modules/spectacle/node_modules/prism-react-renderer/themes/vsDark.js"); 23432/* harmony import */ var prism_react_renderer_themes_vsDark__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(prism_react_renderer_themes_vsDark__WEBPACK_IMPORTED_MODULE_3__); 23433/* harmony import */ var prism_react_renderer_themes_nightOwlLight__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! prism-react-renderer/themes/nightOwlLight */ "./node_modules/spectacle/node_modules/prism-react-renderer/themes/nightOwlLight.js"); 23434/* harmony import */ var prism_react_renderer_themes_nightOwlLight__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(prism_react_renderer_themes_nightOwlLight__WEBPACK_IMPORTED_MODULE_4__); 23435/* harmony import */ var styled_components__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js"); 23436/* harmony import */ var _hooks_use_deck__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../hooks/use-deck */ "./node_modules/spectacle/es/hooks/use-deck.js"); 23437function _extends() { 23438 _extends = Object.assign || function (target) { 23439 for (var i = 1; i < arguments.length; i++) { 23440 var source = arguments[i]; 23441 23442 for (var key in source) { 23443 if (Object.prototype.hasOwnProperty.call(source, key)) { 23444 target[key] = source[key]; 23445 } 23446 } 23447 } 23448 23449 return target; 23450 }; 23451 23452 return _extends.apply(this, arguments); 23453} 23454 23455function ownKeys(object, enumerableOnly) { 23456 var keys = Object.keys(object); 23457 23458 if (Object.getOwnPropertySymbols) { 23459 var symbols = Object.getOwnPropertySymbols(object); 23460 if (enumerableOnly) symbols = symbols.filter(function (sym) { 23461 return Object.getOwnPropertyDescriptor(object, sym).enumerable; 23462 }); 23463 keys.push.apply(keys, symbols); 23464 } 23465 23466 return keys; 23467} 23468 23469function _objectSpread(target) { 23470 for (var i = 1; i < arguments.length; i++) { 23471 var source = arguments[i] != null ? arguments[i] : {}; 23472 23473 if (i % 2) { 23474 ownKeys(Object(source), true).forEach(function (key) { 23475 _defineProperty(target, key, source[key]); 23476 }); 23477 } else if (Object.getOwnPropertyDescriptors) { 23478 Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); 23479 } else { 23480 ownKeys(Object(source)).forEach(function (key) { 23481 Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); 23482 }); 23483 } 23484 } 23485 23486 return target; 23487} 23488 23489function _defineProperty(obj, key, value) { 23490 if (key in obj) { 23491 Object.defineProperty(obj, key, { 23492 value: value, 23493 enumerable: true, 23494 configurable: true, 23495 writable: true 23496 }); 23497 } else { 23498 obj[key] = value; 23499 } 23500 23501 return obj; 23502} 23503 23504 23505 23506 23507 23508 23509 23510 23511var spaceSearch = /\S|$/; 23512var lineNumberStyles = { 23513 padding: '0 1em', 23514 borderRight: '1px solid hsla(0, 0%, 100%, 0.25)', 23515 flex: '0 1 30px', 23516 alignSelf: 'stretch' 23517}; 23518function CodePane(props) { 23519 var canvas = react__WEBPACK_IMPORTED_MODULE_0__["useRef"](document.createElement('canvas')); 23520 var context = react__WEBPACK_IMPORTED_MODULE_0__["useRef"](canvas.current.getContext('2d')); 23521 var scrollContainerRef = react__WEBPACK_IMPORTED_MODULE_0__["useRef"](null); 23522 var lineRef = react__WEBPACK_IMPORTED_MODULE_0__["useRef"](null); 23523 var themeContext = react__WEBPACK_IMPORTED_MODULE_0__["useContext"](styled_components__WEBPACK_IMPORTED_MODULE_5__["ThemeContext"]); 23524 23525 var _React$useContext = react__WEBPACK_IMPORTED_MODULE_0__["useContext"](_hooks_use_deck__WEBPACK_IMPORTED_MODULE_6__["DeckContext"]), 23526 printMode = _React$useContext.state.printMode; 23527 23528 var font = react__WEBPACK_IMPORTED_MODULE_0__["useMemo"](function () { 23529 if (themeContext && themeContext.fonts && themeContext.fonts.monospace) { 23530 return themeContext.fonts.monospace; 23531 } 23532 23533 var _navigator = navigator, 23534 platform = _navigator.platform; 23535 23536 if (platform.toLowerCase().search('win') !== -1) { 23537 return 'Consolas'; 23538 } else if (platform.toLowerCase().search('mac') !== -1) { 23539 return 'Menlo'; 23540 } else { 23541 return 'monospace'; 23542 } 23543 }, [themeContext]); 23544 var fontSize = react__WEBPACK_IMPORTED_MODULE_0__["useMemo"](function () { 23545 if (props && props.fontSize) { 23546 return props.fontSize; 23547 } 23548 23549 if (themeContext && themeContext.fontSizes && themeContext.fontSizes.monospace) { 23550 return themeContext.fontSizes.monospace; 23551 } // Default to 15px 23552 23553 23554 return 15; 23555 }, [themeContext, props.fontSize]); 23556 var preStyles = react__WEBPACK_IMPORTED_MODULE_0__["useMemo"](function () { 23557 return { 23558 fontFamily: font, 23559 fontSize: fontSize, 23560 maxHeight: themeContext.size.maxCodePaneHeight || 200, 23561 overflow: 'scroll', 23562 margin: 0, 23563 padding: '0.5em 1em 0.5em 0' 23564 }; 23565 }, [font, fontSize, themeContext]); 23566 var isLineDimmed = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](function (lineNumber) { 23567 return lineNumber < props.highlightStart || lineNumber > props.highlightEnd; 23568 }, [props.highlightStart, props.highlightEnd]); 23569 var measureIndentation = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](function (indentation) { 23570 if (indentation === 0) { 23571 return 0; 23572 } 23573 23574 var indentString = ' '.repeat(props.indentSize) || ' '; 23575 var string = indentString.repeat(indentation); 23576 context.current.font = "".concat(props.fontSize, "px ").concat(font); 23577 var measurement = context.current.measureText(string); 23578 return measurement.width; 23579 }, [props.fontSize, font]); // Auto-scroll to highlighted range 23580 23581 react__WEBPACK_IMPORTED_MODULE_0__["useLayoutEffect"](function () { 23582 var lineHeight = lineRef.current.clientHeight; 23583 var top = Math.max(0, (props.highlightStart - 1) * lineHeight); 23584 scrollContainerRef.current.scroll({ 23585 top: top, 23586 behavior: 'smooth' 23587 }); 23588 }, [lineRef.current, props.highlightStart]); 23589 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](react__WEBPACK_IMPORTED_MODULE_0__["Fragment"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](prism_react_renderer__WEBPACK_IMPORTED_MODULE_1__["default"], _extends({}, prism_react_renderer__WEBPACK_IMPORTED_MODULE_1__["defaultProps"], { 23590 code: props.children, 23591 language: props.language, 23592 theme: printMode ? prism_react_renderer_themes_nightOwlLight__WEBPACK_IMPORTED_MODULE_4___default.a : props.theme 23593 }), function (_ref) { 23594 var className = _ref.className, 23595 style = _ref.style, 23596 tokens = _ref.tokens, 23597 getLineProps = _ref.getLineProps, 23598 getTokenProps = _ref.getTokenProps; 23599 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("pre", { 23600 ref: scrollContainerRef, 23601 className: "".concat(className, " ").concat(props.autoFillHeight && 'spectacle-auto-height-fill'), 23602 style: _objectSpread({}, style, {}, preStyles) 23603 }, tokens.map(function (line, i) { 23604 var lineProps = getLineProps({ 23605 line: line, 23606 key: i 23607 }); 23608 var lineIndentation = line[0].content.search(spaceSearch); 23609 lineProps.style = _objectSpread({}, lineProps.style || {}, { 23610 whiteSpace: 'pre-wrap', 23611 display: 'flex', 23612 alignItems: 'center', 23613 justifyContent: 'flex-start', 23614 opacity: isLineDimmed(i + 1) ? 0.5 : 1 23615 }); 23616 23617 if (line[0].content && !line[0].empty) { 23618 line[0].content = line[0].content.trimLeft(); 23619 } 23620 23621 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", _extends({ 23622 key: i 23623 }, lineProps, { 23624 ref: i === 0 ? lineRef : undefined 23625 }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", { 23626 style: lineNumberStyles 23627 }, i + 1), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("div", { 23628 style: { 23629 marginLeft: measureIndentation(lineIndentation), 23630 flex: 1, 23631 paddingLeft: '0.25em' 23632 } 23633 }, line.map(function (token, key) { 23634 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("span", _extends({ 23635 key: key 23636 }, getTokenProps({ 23637 token: token, 23638 key: key 23639 }))); 23640 }))); 23641 })); 23642 })); 23643} 23644CodePane.propTypes = { 23645 autoFillHeight: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool, 23646 children: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string.isRequired, 23647 fontSize: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number, 23648 highlightEnd: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number, 23649 highlightStart: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number, 23650 indentSize: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number, 23651 language: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string.isRequired, 23652 theme: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.object 23653}; 23654CodePane.defaultProps = { 23655 language: 'javascript', 23656 theme: prism_react_renderer_themes_vsDark__WEBPACK_IMPORTED_MODULE_3___default.a, 23657 highlightStart: -Infinity, 23658 highlightEnd: Infinity 23659}; 23660 23661/***/ }), 23662
vendor: 2,699 bytes, lines 23663-23712
23663/***/ "./node_modules/spectacle/es/components/deck/audience-deck.js": 23664/*!********************************************************************!*\ 23665 !*** ./node_modules/spectacle/es/components/deck/audience-deck.js ***! 23666 \********************************************************************/ 23667/*! exports provided: default */ 23668/***/ (function(module, __webpack_exports__, __webpack_require__) { 23669 23670"use strict"; 23671__webpack_require__.r(__webpack_exports__); 23672/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js"); 23673/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 23674/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js"); 23675/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__); 23676/* harmony import */ var _hooks_use_deck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../hooks/use-deck */ "./node_modules/spectacle/es/hooks/use-deck.js"); 23677/* harmony import */ var _hooks_use_presentation__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../hooks/use-presentation */ "./node_modules/spectacle/es/hooks/use-presentation.js"); 23678 23679 23680 23681 23682 23683var AudienceDeck = function AudienceDeck(props) { 23684 var addMessageHandler = props.addMessageHandler; 23685 23686 var _React$useContext = react__WEBPACK_IMPORTED_MODULE_0___default.a.useContext(_hooks_use_deck__WEBPACK_IMPORTED_MODULE_2__["DeckContext"]), 23687 dispatch = _React$useContext.dispatch; 23688 23689 var onMessageReceived = react__WEBPACK_IMPORTED_MODULE_0___default.a.useCallback(function (message) { 23690 // The PresentationDeck will send messages to 23691 // keep the AudienceDeck in sync. 23692 if (message.type === _hooks_use_presentation__WEBPACK_IMPORTED_MODULE_3__["MSG_SLIDE_STATE_CHANGE"]) { 23693 dispatch({ 23694 type: 'GO_TO_SLIDE', 23695 payload: message.payload 23696 }); 23697 } 23698 }, [dispatch]); 23699 react__WEBPACK_IMPORTED_MODULE_0___default.a.useEffect(function () { 23700 addMessageHandler(onMessageReceived); 23701 }, [addMessageHandler, onMessageReceived]); 23702 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, props.children); 23703}; 23704 23705AudienceDeck.propTypes = { 23706 addMessageHandler: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func.isRequired, 23707 children: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.node.isRequired 23708}; 23709/* harmony default export */ __webpack_exports__["default"] = (AudienceDeck); 23710 23711/***/ }), 23712
vendor: 22,012 bytes, lines 23713-24210
23713/***/ "./node_modules/spectacle/es/components/deck/index.js": 23714/*!************************************************************!*\ 23715 !*** ./node_modules/spectacle/es/components/deck/index.js ***! 23716 \************************************************************/ 23717/*! exports provided: default */ 23718/***/ (function(module, __webpack_exports__, __webpack_require__) { 23719 23720"use strict"; 23721__webpack_require__.r(__webpack_exports__); 23722/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js"); 23723/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 23724/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js"); 23725/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__); 23726/* harmony import */ var styled_components__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js"); 23727/* harmony import */ var normalize_newline__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! normalize-newline */ "./node_modules/normalize-newline/index.js"); 23728/* harmony import */ var normalize_newline__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(normalize_newline__WEBPACK_IMPORTED_MODULE_3__); 23729/* harmony import */ var _utils_indent_normalizer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils/indent-normalizer */ "./node_modules/spectacle/es/utils/indent-normalizer.js"); 23730/* harmony import */ var _hooks_use_deck__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../hooks/use-deck */ "./node_modules/spectacle/es/hooks/use-deck.js"); 23731/* harmony import */ var _utils_is_component_type__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../utils/is-component-type */ "./node_modules/spectacle/es/utils/is-component-type.js"); 23732/* harmony import */ var _hooks_use_url_routing__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../hooks/use-url-routing */ "./node_modules/spectacle/es/hooks/use-url-routing.js"); 23733/* harmony import */ var _presenter_deck__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./presenter-deck */ "./node_modules/spectacle/es/components/deck/presenter-deck.js"); 23734/* harmony import */ var _audience_deck__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./audience-deck */ "./node_modules/spectacle/es/components/deck/audience-deck.js"); 23735/* harmony import */ var _theme__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../theme */ "./node_modules/spectacle/es/theme/index.js"); 23736/* harmony import */ var _print_deck__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./print-deck */ "./node_modules/spectacle/es/components/deck/print-deck.js"); 23737/* harmony import */ var react_spring__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! react-spring */ "./node_modules/react-spring/web.js"); 23738/* harmony import */ var _hooks_use_transition_pipe__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../../hooks/use-transition-pipe */ "./node_modules/spectacle/es/hooks/use-transition-pipe.js"); 23739/* harmony import */ var _hooks_use_presentation__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../../hooks/use-presentation */ "./node_modules/spectacle/es/hooks/use-presentation.js"); 23740/* harmony import */ var _hooks_use_keyboard_controls__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../hooks/use-keyboard-controls */ "./node_modules/spectacle/es/hooks/use-keyboard-controls.js"); 23741/* harmony import */ var _hooks_use_touch_controls__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../hooks/use-touch-controls */ "./node_modules/spectacle/es/hooks/use-touch-controls.js"); 23742/* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../utils/constants */ "./node_modules/spectacle/es/utils/constants.js"); 23743/* harmony import */ var _utils_search_children_appear__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../../utils/search-children-appear */ "./node_modules/spectacle/es/utils/search-children-appear.js"); 23744/* harmony import */ var _utils_search_children_stepper__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../../utils/search-children-stepper */ "./node_modules/spectacle/es/utils/search-children-stepper.js"); 23745/* harmony import */ var _overview_deck__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./overview-deck */ "./node_modules/spectacle/es/components/deck/overview-deck.js"); 23746/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../../index */ "./node_modules/spectacle/es/index.js"); 23747/* harmony import */ var _utils_notes__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../../utils/notes */ "./node_modules/spectacle/es/utils/notes.js"); 23748function _typeof(obj) { 23749 "@babel/helpers - typeof"; 23750 23751 if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { 23752 _typeof = function _typeof(obj) { 23753 return typeof obj; 23754 }; 23755 } else { 23756 _typeof = function _typeof(obj) { 23757 return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; 23758 }; 23759 } 23760 23761 return _typeof(obj); 23762} 23763 23764function ownKeys(object, enumerableOnly) { 23765 var keys = Object.keys(object); 23766 23767 if (Object.getOwnPropertySymbols) { 23768 var symbols = Object.getOwnPropertySymbols(object); 23769 if (enumerableOnly) symbols = symbols.filter(function (sym) { 23770 return Object.getOwnPropertyDescriptor(object, sym).enumerable; 23771 }); 23772 keys.push.apply(keys, symbols); 23773 } 23774 23775 return keys; 23776} 23777 23778function _objectSpread(target) { 23779 for (var i = 1; i < arguments.length; i++) { 23780 var source = arguments[i] != null ? arguments[i] : {}; 23781 23782 if (i % 2) { 23783 ownKeys(Object(source), true).forEach(function (key) { 23784 _defineProperty(target, key, source[key]); 23785 }); 23786 } else if (Object.getOwnPropertyDescriptors) { 23787 Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); 23788 } else { 23789 ownKeys(Object(source)).forEach(function (key) { 23790 Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); 23791 }); 23792 } 23793 } 23794 23795 return target; 23796} 23797 23798function _defineProperty(obj, key, value) { 23799 if (key in obj) { 23800 Object.defineProperty(obj, key, { 23801 value: value, 23802 enumerable: true, 23803 configurable: true, 23804 writable: true 23805 }); 23806 } else { 23807 obj[key] = value; 23808 } 23809 23810 return obj; 23811} 23812 23813function _templateObject() { 23814 var data = _taggedTemplateLiteral(["\n height: 100vh;\n width: 100vw;\n position: fixed;\n"]); 23815 23816 _templateObject = function _templateObject() { 23817 return data; 23818 }; 23819 23820 return data; 23821} 23822 23823function _taggedTemplateLiteral(strings, raw) { 23824 if (!raw) { 23825 raw = strings.slice(0); 23826 } 23827 23828 return Object.freeze(Object.defineProperties(strings, { 23829 raw: { 23830 value: Object.freeze(raw) 23831 } 23832 })); 23833} 23834 23835 23836 23837 23838 23839 23840 23841 23842 23843 23844 23845 23846 23847 23848 23849 23850 23851 23852 23853 23854 23855 23856 23857 23858var AnimatedDeckDiv = Object(styled_components__WEBPACK_IMPORTED_MODULE_2__["default"])(react_spring__WEBPACK_IMPORTED_MODULE_12__["animated"].div)(_templateObject()); 23859AnimatedDeckDiv.displayName = 'AnimatedDeckDiv'; 23860var defaultTransition = { 23861 slide: { 23862 from: { 23863 position: 'fixed', 23864 transform: 'translate(100%, 0%)' 23865 }, 23866 enter: { 23867 position: 'fixed', 23868 transform: 'translate(0, 0%)' 23869 }, 23870 leave: { 23871 position: 'fixed', 23872 transform: 'translate(-100%, 0%)' 23873 }, 23874 config: { 23875 precision: 0 23876 } 23877 }, 23878 fade: { 23879 enter: { 23880 opacity: 1 23881 }, 23882 from: { 23883 opacity: 0 23884 }, 23885 leave: { 23886 opacity: 0 23887 }, 23888 config: { 23889 precision: 0 23890 } 23891 }, 23892 none: { 23893 enter: {}, 23894 from: {}, 23895 leave: {}, 23896 config: { 23897 precision: 0 23898 } 23899 } 23900}; 23901var builtInTransitions = Object.keys(defaultTransition); 23902/** 23903 * Provides top level state/context provider with useDeck hook 23904 * Should wrap all the presentation components (slides, etc) 23905 * 23906 * Props = { 23907 * loop: bool (pass in true if you want slides to loop) 23908 * transitionEffect: based off of react sprint useTransition 23909 * } 23910 * 23911 * Note: Immediate is a React-Spring property that we pass to the animations 23912 * essentially it skips animations. 23913 */ 23914 23915var initialState = { 23916 currentSlide: _utils_constants__WEBPACK_IMPORTED_MODULE_17__["DEFAULT_SLIDE_INDEX"], 23917 immediate: false, 23918 immediateElement: false, 23919 currentSlideElement: _utils_constants__WEBPACK_IMPORTED_MODULE_17__["DEFAULT_SLIDE_ELEMENT_INDEX"], 23920 reverseDirection: false, 23921 presenterMode: false, 23922 overviewMode: false, 23923 notes: {}, 23924 resolvedInitialUrl: false 23925}; 23926 23927var mapMarkdownIntoSlides = function mapMarkdownIntoSlides(child, index) { 23928 if (Object(_utils_is_component_type__WEBPACK_IMPORTED_MODULE_6__["default"])(child, _index__WEBPACK_IMPORTED_MODULE_21__["Markdown"].name) && Boolean(child.props.containsSlides)) { 23929 return child.props.children.split(/\n\s*---\n/).map(function (markdown, mdIndex) { 23930 var content = normalize_newline__WEBPACK_IMPORTED_MODULE_3___default()(Object(_utils_indent_normalizer__WEBPACK_IMPORTED_MODULE_4__["default"])(markdown)); 23931 var contentWithoutNotes = Object(_utils_notes__WEBPACK_IMPORTED_MODULE_22__["removeNotes"])(content); 23932 var notes = Object(_utils_notes__WEBPACK_IMPORTED_MODULE_22__["isolateNotes"])(content); 23933 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_index__WEBPACK_IMPORTED_MODULE_21__["Slide"], { 23934 key: "md-slide-".concat(index, "-").concat(mdIndex) 23935 }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_index__WEBPACK_IMPORTED_MODULE_21__["Markdown"], null, contentWithoutNotes), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_index__WEBPACK_IMPORTED_MODULE_21__["Notes"], null, notes)); 23936 }); 23937 } 23938 23939 return child; 23940}; 23941 23942var Deck = function Deck(props) { 23943 var children = props.children, 23944 loop = props.loop, 23945 keyboardControls = props.keyboardControls, 23946 animationsWhenGoingBack = props.animationsWhenGoingBack, 23947 backgroundColor = props.backgroundColor, 23948 textColor = props.textColor, 23949 template = props.template, 23950 transitionEffect = props.transitionEffect; 23951 23952 if (react__WEBPACK_IMPORTED_MODULE_0___default.a.Children.count(children) === 0) { 23953 throw new Error('Spectacle must have at least one slide to run.'); 23954 } 23955 23956 var filteredChildren = react__WEBPACK_IMPORTED_MODULE_0___default.a.Children.map(children, mapMarkdownIntoSlides).reduce(function (acc, slide) { 23957 return acc.concat(slide); 23958 }, []).filter(function (child) { 23959 return Object(_utils_is_component_type__WEBPACK_IMPORTED_MODULE_6__["default"])(child, _index__WEBPACK_IMPORTED_MODULE_21__["Slide"].name); 23960 }); 23961 var numberOfSlides = filteredChildren.length; 23962 23963 if (numberOfSlides === 0) { 23964 throw new Error('Spectacle must have at least one slide to run.'); 23965 } 23966 23967 var slideElementMap = react__WEBPACK_IMPORTED_MODULE_0___default.a.useMemo(function () { 23968 return filteredChildren.reduce(function (map, slide, index) { 23969 var appearElements = Object(_utils_search_children_appear__WEBPACK_IMPORTED_MODULE_18__["default"])(slide.props.children); 23970 var stepperElements = Object(_utils_search_children_stepper__WEBPACK_IMPORTED_MODULE_19__["default"])(slide.props.children); 23971 map[index] = appearElements + stepperElements; 23972 return map; 23973 }, {}); 23974 }, [filteredChildren]); // Initialise useDeck hook and get state and dispatch off of it 23975 23976 var _useDeck = Object(_hooks_use_deck__WEBPACK_IMPORTED_MODULE_5__["default"])(_objectSpread({}, initialState, { 23977 numberOfSlides: numberOfSlides 23978 })), 23979 state = _useDeck.state, 23980 dispatch = _useDeck.dispatch; 23981 23982 var themeContext = react__WEBPACK_IMPORTED_MODULE_0___default.a.useContext(styled_components__WEBPACK_IMPORTED_MODULE_2__["ThemeContext"]); 23983 react__WEBPACK_IMPORTED_MODULE_0___default.a.useLayoutEffect(function () { 23984 document.body.style.margin = '0'; 23985 document.body.style.background = '#000'; 23986 document.body.style.color = themeContext.colors[textColor] || textColor || themeContext.colors.primary; 23987 }, [backgroundColor, textColor, themeContext.colors]); 23988 23989 var _usePresentation = Object(_hooks_use_presentation__WEBPACK_IMPORTED_MODULE_14__["default"])(), 23990 startConnection = _usePresentation.startConnection, 23991 terminateConnection = _usePresentation.terminateConnection, 23992 sendMessage = _usePresentation.sendMessage, 23993 errors = _usePresentation.errors, 23994 addMessageHandler = _usePresentation.addMessageHandler, 23995 isReceiver = _usePresentation.isReceiver, 23996 isController = _usePresentation.isController; 23997 23998 var onUrlChange = react__WEBPACK_IMPORTED_MODULE_0___default.a.useCallback(function (update) { 23999 if (isController) { 24000 sendMessage({ 24001 type: _hooks_use_presentation__WEBPACK_IMPORTED_MODULE_14__["MSG_SLIDE_STATE_CHANGE"], 24002 payload: update 24003 }); 24004 } 24005 }, [sendMessage, isController]); 24006 24007 var _useUrlRouting = Object(_hooks_use_url_routing__WEBPACK_IMPORTED_MODULE_7__["default"])({ 24008 dispatch: dispatch, 24009 currentSlide: state.currentSlide, 24010 currentSlideElement: state.currentSlideElement, 24011 currentPresenterMode: state.presenterMode, 24012 slideElementMap: slideElementMap, 24013 loop: loop, 24014 animationsWhenGoingBack: animationsWhenGoingBack, 24015 onUrlChange: onUrlChange 24016 }), 24017 navigateToNext = _useUrlRouting.navigateToNext, 24018 navigateToPrevious = _useUrlRouting.navigateToPrevious, 24019 navigateTo = _useUrlRouting.navigateTo, 24020 toggleMode = _useUrlRouting.toggleMode, 24021 goToSlide = _useUrlRouting.goToSlide; 24022 24023 Object(_hooks_use_keyboard_controls__WEBPACK_IMPORTED_MODULE_15__["default"])({ 24024 keyboardControls: keyboardControls, 24025 navigateToNext: navigateToNext, 24026 navigateToPrevious: navigateToPrevious, 24027 toggleMode: toggleMode 24028 }); 24029 Object(_hooks_use_touch_controls__WEBPACK_IMPORTED_MODULE_16__["default"])({ 24030 navigateToNext: navigateToNext, 24031 navigateToPrevious: navigateToPrevious 24032 }); 24033 24034 var _React$useContext = react__WEBPACK_IMPORTED_MODULE_0___default.a.useContext(_hooks_use_transition_pipe__WEBPACK_IMPORTED_MODULE_13__["TransitionPipeContext"]), 24035 runTransition = _React$useContext.runTransition; 24036 24037 var slideTransitionEffect = filteredChildren[state.currentSlide].props.transitionEffect || {}; 24038 var transitionRef = react__WEBPACK_IMPORTED_MODULE_0___default.a.useRef(null); 24039 var broadcastChannelRef = react__WEBPACK_IMPORTED_MODULE_0___default.a.useRef(null); 24040 react__WEBPACK_IMPORTED_MODULE_0___default.a.useEffect(function () { 24041 if (typeof MessageChannel !== 'undefined') { 24042 broadcastChannelRef.current = new BroadcastChannel('spectacle_presenter_mode_channel'); 24043 } 24044 24045 return function () { 24046 if (!broadcastChannelRef.current) { 24047 return; 24048 } 24049 24050 broadcastChannelRef.current.close(); 24051 }; 24052 }, []); 24053 react__WEBPACK_IMPORTED_MODULE_0___default.a.useEffect(function () { 24054 if (broadcastChannelRef.current && typeof broadcastChannelRef.current.postMessage === 'function') { 24055 broadcastChannelRef.current.onmessage = function (message) { 24056 if (state.presenterMode) { 24057 return; 24058 } 24059 24060 var _JSON$parse = JSON.parse(message.data), 24061 slide = _JSON$parse.slide, 24062 element = _JSON$parse.element; 24063 24064 navigateTo({ 24065 slideIndex: slide, 24066 elementIndex: element 24067 }); 24068 }; 24069 24070 if (state.presenterMode) { 24071 var slideData = { 24072 slide: state.currentSlide, 24073 element: state.currentSlideElement 24074 }; 24075 broadcastChannelRef.current.postMessage(JSON.stringify(slideData)); 24076 } 24077 } 24078 }, [state.currentSlide, state.currentSlideElement, state.presenterMode, navigateTo]); 24079 react__WEBPACK_IMPORTED_MODULE_0___default.a.useEffect(function () { 24080 if (!transitionRef.current) { 24081 return; 24082 } 24083 24084 runTransition(transitionRef.current); 24085 }, [transitionRef, state.currentSlide, runTransition]); 24086 var currentTransition = {}; 24087 24088 if (typeof slideTransitionEffect === 'string' && builtInTransitions.includes(slideTransitionEffect)) { 24089 currentTransition = defaultTransition[slideTransitionEffect]; 24090 } else if (_typeof(slideTransitionEffect) === 'object' && Object.keys(slideTransitionEffect).length !== 0) { 24091 currentTransition = slideTransitionEffect; 24092 } else if (typeof transitionEffect === 'string' && builtInTransitions.includes(transitionEffect)) { 24093 currentTransition = defaultTransition[transitionEffect]; 24094 } else if (_typeof(transitionEffect) === 'object' && Object.keys(transitionEffect).length !== 0) { 24095 currentTransition = transitionEffect; 24096 } else { 24097 currentTransition = defaultTransition['slide']; 24098 } 24099 24100 var transitions = Object(react_spring__WEBPACK_IMPORTED_MODULE_12__["useTransition"])(state.currentSlide, function (p) { 24101 return p; 24102 }, { 24103 ref: transitionRef, 24104 enter: currentTransition.enter, 24105 leave: currentTransition.leave, 24106 from: currentTransition.from, 24107 unique: true, 24108 immediate: state.immediate 24109 }); 24110 var content = null; 24111 24112 if (state.resolvedInitialUrl) { 24113 if (state.overviewMode) { 24114 var staticSlides = filteredChildren.map(function (slide, index) { 24115 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.cloneElement(slide, { 24116 slideNum: index, 24117 template: template 24118 }); 24119 }); 24120 content = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_overview_deck__WEBPACK_IMPORTED_MODULE_20__["default"], { 24121 goToSlide: goToSlide 24122 }, staticSlides); 24123 } else if (state.exportMode) { 24124 var _staticSlides = filteredChildren.map(function (slide, index) { 24125 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.cloneElement(slide, { 24126 slideNum: index, 24127 template: template 24128 }); 24129 }); 24130 24131 content = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_print_deck__WEBPACK_IMPORTED_MODULE_11__["PrintDeck"], null, _staticSlides); 24132 } else if (state.presenterMode) { 24133 var _staticSlides2 = filteredChildren.map(function (slide, index) { 24134 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.cloneElement(slide, { 24135 slideNum: index, 24136 template: template 24137 }); 24138 }); 24139 24140 content = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_presenter_deck__WEBPACK_IMPORTED_MODULE_8__["default"], { 24141 isController: isController, 24142 isReceiver: isReceiver, 24143 startConnection: startConnection, 24144 terminateConnection: terminateConnection 24145 }, _staticSlides2); 24146 } else { 24147 var animatedSlides = transitions.map(function (_ref) { 24148 var item = _ref.item, 24149 animatedStyleProps = _ref.props, 24150 key = _ref.key; 24151 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(AnimatedDeckDiv, { 24152 style: animatedStyleProps, 24153 key: key 24154 }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.cloneElement(filteredChildren[item], { 24155 slideNum: item, 24156 numberOfSlides: numberOfSlides, 24157 template: template 24158 })); 24159 }); 24160 content = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_audience_deck__WEBPACK_IMPORTED_MODULE_9__["default"], { 24161 addMessageHandler: addMessageHandler 24162 }, animatedSlides); 24163 } 24164 } 24165 24166 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_hooks_use_deck__WEBPACK_IMPORTED_MODULE_5__["DeckContext"].Provider, { 24167 value: { 24168 state: state, 24169 dispatch: dispatch, 24170 numberOfSlides: numberOfSlides, 24171 keyboardControls: keyboardControls, 24172 animationsWhenGoingBack: animationsWhenGoingBack, 24173 slideElementMap: slideElementMap, 24174 goToSlide: goToSlide 24175 } 24176 }, content)); 24177}; 24178 24179Deck.propTypes = { 24180 animationsWhenGoingBack: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool.isRequired, 24181 backgroundColor: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string, 24182 children: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.node.isRequired, 24183 keyboardControls: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.oneOf(['arrows', 'space']), 24184 loop: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool.isRequired, 24185 template: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func, 24186 textColor: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string, 24187 theme: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.object, 24188 transitionEffect: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.shape({ 24189 from: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.object, 24190 enter: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.object, 24191 leave: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.object 24192 }), prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.oneOf(['fade', 'slide', 'none'])]) 24193}; 24194 24195var ConnectedDeck = function ConnectedDeck(props) { 24196 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styled_components__WEBPACK_IMPORTED_MODULE_2__["ThemeProvider"], { 24197 theme: Object(_theme__WEBPACK_IMPORTED_MODULE_10__["mergeTheme"])(props.theme) 24198 }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_hooks_use_transition_pipe__WEBPACK_IMPORTED_MODULE_13__["TransitionPipeProvider"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Deck, props))); 24199}; 24200 24201ConnectedDeck.propTypes = Deck.propTypes; 24202ConnectedDeck.defaultProps = { 24203 loop: false, 24204 keyboardControls: 'arrows', 24205 animationsWhenGoingBack: false 24206}; 24207/* harmony default export */ __webpack_exports__["default"] = (ConnectedDeck); 24208 24209/***/ }), 24210
vendor: 2,948 bytes, lines 24211-24279
24211/***/ "./node_modules/spectacle/es/components/deck/overview-deck.js": 24212/*!********************************************************************!*\ 24213 !*** ./node_modules/spectacle/es/components/deck/overview-deck.js ***! 24214 \********************************************************************/ 24215/*! exports provided: default */ 24216/***/ (function(module, __webpack_exports__, __webpack_require__) { 24217 24218"use strict"; 24219__webpack_require__.r(__webpack_exports__); 24220/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return OverviewDeck; }); 24221/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js"); 24222/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 24223/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js"); 24224/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__); 24225/* harmony import */ var styled_components__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js"); 24226function _templateObject2() { 24227 var data = _taggedTemplateLiteral(["\n height: 200px;\n\n .spectacle-progress-indicator,\n .spectacle-fullscreen-button {\n display: none;\n }\n"]); 24228 24229 _templateObject2 = function _templateObject2() { 24230 return data; 24231 }; 24232 24233 return data; 24234} 24235 24236function _templateObject() { 24237 var data = _taggedTemplateLiteral(["\n display: grid;\n grid-template-columns: repeat(3, 30vw);\n grid-column-gap: 3vw;\n grid-row-gap: 15px;\n padding: 15px;\n width: 100vw;\n"]); 24238 24239 _templateObject = function _templateObject() { 24240 return data; 24241 }; 24242 24243 return data; 24244} 24245 24246function _taggedTemplateLiteral(strings, raw) { 24247 if (!raw) { 24248 raw = strings.slice(0); 24249 } 24250 24251 return Object.freeze(Object.defineProperties(strings, { 24252 raw: { 24253 value: Object.freeze(raw) 24254 } 24255 })); 24256} 24257 24258 24259 24260 24261var SlideGrid = Object(styled_components__WEBPACK_IMPORTED_MODULE_2__["default"])('div')(_templateObject()); 24262var SlideGridItem = Object(styled_components__WEBPACK_IMPORTED_MODULE_2__["default"])('div')(_templateObject2()); 24263function OverviewDeck(props) { 24264 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](SlideGrid, null, props.children.map(function (child, idx) { 24265 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](SlideGridItem, { 24266 onClick: function onClick() { 24267 return props.goToSlide(idx); 24268 }, 24269 key: "slide-".concat(idx) 24270 }, child); 24271 })); 24272} 24273OverviewDeck.propTypes = { 24274 children: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.node, 24275 goToSlide: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func.isRequired 24276}; 24277 24278/***/ }), 24279
vendor: 13,350 bytes, lines 24280-24521
24280/***/ "./node_modules/spectacle/es/components/deck/presenter-deck.js": 24281/*!*********************************************************************!*\ 24282 !*** ./node_modules/spectacle/es/components/deck/presenter-deck.js ***! 24283 \*********************************************************************/ 24284/*! exports provided: default */ 24285/***/ (function(module, __webpack_exports__, __webpack_require__) { 24286 24287"use strict"; 24288__webpack_require__.r(__webpack_exports__); 24289/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js"); 24290/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 24291/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js"); 24292/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__); 24293/* harmony import */ var _hooks_use_deck__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../hooks/use-deck */ "./node_modules/spectacle/es/hooks/use-deck.js"); 24294/* harmony import */ var _hooks_use_slide__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../hooks/use-slide */ "./node_modules/spectacle/es/hooks/use-slide.js"); 24295/* harmony import */ var styled_components__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js"); 24296/* harmony import */ var _typography__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../typography */ "./node_modules/spectacle/es/components/typography.js"); 24297/* harmony import */ var _layout__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../layout */ "./node_modules/spectacle/es/components/layout.js"); 24298/* harmony import */ var query_string__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! query-string */ "./node_modules/query-string/index.js"); 24299/* harmony import */ var query_string__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(query_string__WEBPACK_IMPORTED_MODULE_7__); 24300/* harmony import */ var _timer__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./timer */ "./node_modules/spectacle/es/components/deck/timer.js"); 24301/* harmony import */ var _logo__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../logo */ "./node_modules/spectacle/es/components/logo.js"); 24302/* harmony import */ var _internal_button__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../internal-button */ "./node_modules/spectacle/es/components/internal-button.js"); 24303/* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../../utils/constants */ "./node_modules/spectacle/es/utils/constants.js"); 24304/* harmony import */ var broadcastchannel_polyfill__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! broadcastchannel-polyfill */ "./node_modules/broadcastchannel-polyfill/index.js"); 24305/* harmony import */ var broadcastchannel_polyfill__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(broadcastchannel_polyfill__WEBPACK_IMPORTED_MODULE_12__); 24306function _templateObject8() { 24307 var data = _taggedTemplateLiteral(["\n border-top: 1px solid black;\n overflow-y: scroll;\n background: #404040;\n flex: 1;\n"]); 24308 24309 _templateObject8 = function _templateObject8() { 24310 return data; 24311 }; 24312 24313 return data; 24314} 24315 24316function _templateObject7() { 24317 var data = _taggedTemplateLiteral(["\n background: hsla(0, 0%, 100%, 0.1);\n border-radius: 4px;\n font-size: 0.7em;\n padding: 1px 4px;\n"]); 24318 24319 _templateObject7 = function _templateObject7() { 24320 return data; 24321 }; 24322 24323 return data; 24324} 24325 24326function _templateObject6() { 24327 var data = _taggedTemplateLiteral(["\n flex: 0.8;\n "]); 24328 24329 _templateObject6 = function _templateObject6() { 24330 return data; 24331 }; 24332 24333 return data; 24334} 24335 24336function _templateObject5() { 24337 var data = _taggedTemplateLiteral(["\n flex: 1;\n width: 100%;\n position: relative;\n\n .spectacle-fullscreen-button {\n display: none;\n }\n\n ", "\n"]); 24338 24339 _templateObject5 = function _templateObject5() { 24340 return data; 24341 }; 24342 24343 return data; 24344} 24345 24346function _templateObject4() { 24347 var data = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n height: calc(50% - 1em);\n width: 100%;\n overflow: hidden;\n"]); 24348 24349 _templateObject4 = function _templateObject4() { 24350 return data; 24351 }; 24352 24353 return data; 24354} 24355 24356function _templateObject3() { 24357 var data = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 50%;\n > :first-child {\n margin-bottom: 0.5em;\n }\n"]); 24358 24359 _templateObject3 = function _templateObject3() { 24360 return data; 24361 }; 24362 24363 return data; 24364} 24365 24366function _templateObject2() { 24367 var data = _taggedTemplateLiteral(["\n padding: 0;\n display: flex;\n flex-direction: column;\n background: #383838;\n width: 50%;\n border-right: 1px solid black;\n"]); 24368 24369 _templateObject2 = function _templateObject2() { 24370 return data; 24371 }; 24372 24373 return data; 24374} 24375 24376function _templateObject() { 24377 var data = _taggedTemplateLiteral(["\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n flex-direction: row;\n background-color: #282828;\n overflow: hidden;\n"]); 24378 24379 _templateObject = function _templateObject() { 24380 return data; 24381 }; 24382 24383 return data; 24384} 24385 24386function _taggedTemplateLiteral(strings, raw) { 24387 if (!raw) { 24388 raw = strings.slice(0); 24389 } 24390 24391 return Object.freeze(Object.defineProperties(strings, { 24392 raw: { 24393 value: Object.freeze(raw) 24394 } 24395 })); 24396} 24397 24398 24399 24400 24401 24402 24403 24404 24405 24406 24407 24408 24409 24410 24411var PresenterDeckContainer = Object(styled_components__WEBPACK_IMPORTED_MODULE_4__["default"])('div')(_templateObject()); 24412var NotesColumn = Object(styled_components__WEBPACK_IMPORTED_MODULE_4__["default"])('div')(_templateObject2()); 24413var PreviewColumn = Object(styled_components__WEBPACK_IMPORTED_MODULE_4__["default"])('div')(_templateObject3()); 24414var SlideContainer = Object(styled_components__WEBPACK_IMPORTED_MODULE_4__["default"])('div')(_templateObject4()); 24415var SlideWrapper = Object(styled_components__WEBPACK_IMPORTED_MODULE_4__["default"])('div')(_templateObject5(), function (_ref) { 24416 var small = _ref.small; 24417 return small && Object(styled_components__WEBPACK_IMPORTED_MODULE_4__["css"])(_templateObject6()); 24418}); 24419var SlideCountLabel = Object(styled_components__WEBPACK_IMPORTED_MODULE_4__["default"])('span')(_templateObject7()); 24420var NotesContainer = Object(styled_components__WEBPACK_IMPORTED_MODULE_4__["default"])('div')(_templateObject8()); 24421 24422var PresenterDeck = function PresenterDeck(props) { 24423 var _React$useContext = react__WEBPACK_IMPORTED_MODULE_0___default.a.useContext(_hooks_use_deck__WEBPACK_IMPORTED_MODULE_2__["DeckContext"]), 24424 slideElementMap = _React$useContext.slideElementMap, 24425 _React$useContext$sta = _React$useContext.state, 24426 currentNotes = _React$useContext$sta.currentNotes, 24427 currentSlide = _React$useContext$sta.currentSlide, 24428 currentSlideElement = _React$useContext$sta.currentSlideElement, 24429 immediate = _React$useContext$sta.immediate, 24430 numberOfSlides = _React$useContext$sta.numberOfSlides; 24431 24432 var isController = props.isController, 24433 isReceiver = props.isReceiver, 24434 startConnection = props.startConnection, 24435 terminateConnection = props.terminateConnection, 24436 children = props.children; 24437 var countSlideElements = react__WEBPACK_IMPORTED_MODULE_0___default.a.useCallback(function (slideNumber) { 24438 return slideElementMap[slideNumber]; 24439 }, [slideElementMap]); 24440 var onStartConnection = react__WEBPACK_IMPORTED_MODULE_0___default.a.useCallback(function () { 24441 var urlParams = query_string__WEBPACK_IMPORTED_MODULE_7__["stringify"]({ 24442 slide: currentSlide, 24443 slideElement: currentSlideElement, 24444 immediate: immediate || undefined 24445 }); 24446 startConnection(urlParams); 24447 }, [currentSlide, currentSlideElement, immediate, startConnection]); 24448 var activeSlide = children.length > currentSlide ? children[currentSlide] : null; // Show next animation in the preview slide if there are animations left on the current slide 24449 24450 var showNextElement = currentSlideElement + 1 < countSlideElements(currentSlide); // If there are no animations left on the current slide, then show the next slide in the preview 24451 24452 var nextSlide = showNextElement ? activeSlide : children.length > currentSlide + 1 ? children[currentSlide + 1] : null; 24453 var castButton = react__WEBPACK_IMPORTED_MODULE_0___default.a.useMemo(function () { 24454 if (isReceiver || typeof window.navigator.presentation === 'undefined') { 24455 return null; 24456 } 24457 24458 if (isController) { 24459 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_internal_button__WEBPACK_IMPORTED_MODULE_10__["default"], { 24460 "data-testid": "Close Connection", 24461 onClick: terminateConnection 24462 }, "Stop Casting"); 24463 } 24464 24465 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_internal_button__WEBPACK_IMPORTED_MODULE_10__["default"], { 24466 "data-testid": "Start Connection", 24467 onClick: onStartConnection 24468 }, "Cast to Secondary Display"); 24469 }, []); 24470 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(PresenterDeckContainer, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(NotesColumn, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_layout__WEBPACK_IMPORTED_MODULE_6__["FlexBox"], { 24471 justifyContent: "space-between", 24472 paddingTop: 10, 24473 paddingX: 15 24474 }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_logo__WEBPACK_IMPORTED_MODULE_9__["default"], null), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_layout__WEBPACK_IMPORTED_MODULE_6__["FlexBox"], { 24475 width: 0.75, 24476 flexDirection: "column", 24477 alignItems: "flex-end" 24478 }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_typography__WEBPACK_IMPORTED_MODULE_5__["Text"], { 24479 "data-testid": "use-browser-tab-text", 24480 fontSize: 15, 24481 fontFamily: _utils_constants__WEBPACK_IMPORTED_MODULE_11__["SYSTEM_FONT"], 24482 textAlign: "right", 24483 padding: "0px", 24484 margin: "0px 0px 10px" 24485 }, "Open a second browser tab at ", window.location.host, " to use as the audience deck", !!castButton && ' or use Chromeâs display cast to present on a secondary display', "."), castButton)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_layout__WEBPACK_IMPORTED_MODULE_6__["Box"], { 24486 paddingRight: 15 24487 }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_timer__WEBPACK_IMPORTED_MODULE_8__["Timer"], null)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(NotesContainer, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_typography__WEBPACK_IMPORTED_MODULE_5__["Text"], { 24488 fontFamily: _utils_constants__WEBPACK_IMPORTED_MODULE_11__["SYSTEM_FONT"], 24489 lineHeight: "1.2", 24490 fontSize: "1.5vw" 24491 }, currentNotes))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(PreviewColumn, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(SlideContainer, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_typography__WEBPACK_IMPORTED_MODULE_5__["Text"], { 24492 fontSize: 20, 24493 fontWeight: "bold", 24494 fontFamily: _utils_constants__WEBPACK_IMPORTED_MODULE_11__["SYSTEM_FONT"], 24495 textAlign: "center" 24496 }, "Current\xA0", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(SlideCountLabel, null, "Slide ", activeSlide.props.slideNum + 1, " of ", numberOfSlides)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(SlideWrapper, null, activeSlide)), !!nextSlide && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(SlideContainer, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_typography__WEBPACK_IMPORTED_MODULE_5__["Text"], { 24497 fontSize: 20, 24498 fontFamily: _utils_constants__WEBPACK_IMPORTED_MODULE_11__["SYSTEM_FONT"], 24499 fontWeight: "bold", 24500 textAlign: "center" 24501 }, "Next\xA0", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(SlideCountLabel, null, "Slide ", nextSlide.props.slideNum + 1, " of ", numberOfSlides)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_hooks_use_slide__WEBPACK_IMPORTED_MODULE_3__["SlideNextElementContext"].Provider, { 24502 value: { 24503 showNextElement: showNextElement 24504 } 24505 }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(SlideWrapper, { 24506 small: true, 24507 "data-testid": "Next Slide" 24508 }, nextSlide))))); 24509}; 24510 24511PresenterDeck.propTypes = { 24512 children: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.node.isRequired, 24513 isController: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool.isRequired, 24514 isReceiver: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool.isRequired, 24515 startConnection: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func.isRequired, 24516 terminateConnection: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func.isRequired 24517}; 24518/* harmony default export */ __webpack_exports__["default"] = (PresenterDeck); 24519 24520/***/ }), 24521
vendor: 2,156 bytes, lines 24522-24572
24522/***/ "./node_modules/spectacle/es/components/deck/print-deck.js": 24523/*!*****************************************************************!*\ 24524 !*** ./node_modules/spectacle/es/components/deck/print-deck.js ***! 24525 \*****************************************************************/ 24526/*! exports provided: PrintDeck */ 24527/***/ (function(module, __webpack_exports__, __webpack_require__) { 24528 24529"use strict"; 24530__webpack_require__.r(__webpack_exports__); 24531/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "PrintDeck", function() { return PrintDeck; }); 24532/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js"); 24533/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 24534/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js"); 24535/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__); 24536/* harmony import */ var styled_components__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js"); 24537function _templateObject() { 24538 var data = _taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n"]); 24539 24540 _templateObject = function _templateObject() { 24541 return data; 24542 }; 24543 24544 return data; 24545} 24546 24547function _taggedTemplateLiteral(strings, raw) { 24548 if (!raw) { 24549 raw = strings.slice(0); 24550 } 24551 24552 return Object.freeze(Object.defineProperties(strings, { 24553 raw: { 24554 value: Object.freeze(raw) 24555 } 24556 })); 24557} 24558 24559 24560 24561 24562var SlidesContainer = styled_components__WEBPACK_IMPORTED_MODULE_2__["default"].div(_templateObject()); 24563var PrintDeck = function PrintDeck(_ref) { 24564 var children = _ref.children; 24565 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](SlidesContainer, null, children); 24566}; 24567PrintDeck.propTypes = { 24568 children: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.node.isRequired 24569}; 24570 24571/***/ }), 24572
vendor: 4,522 bytes, lines 24573-24678
24573/***/ "./node_modules/spectacle/es/components/deck/timer.js": 24574/*!************************************************************!*\ 24575 !*** ./node_modules/spectacle/es/components/deck/timer.js ***! 24576 \************************************************************/ 24577/*! exports provided: Timer */ 24578/***/ (function(module, __webpack_exports__, __webpack_require__) { 24579 24580"use strict"; 24581__webpack_require__.r(__webpack_exports__); 24582/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Timer", function() { return Timer; }); 24583/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js"); 24584/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 24585/* harmony import */ var _utils_use_timer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/use-timer */ "./node_modules/spectacle/es/utils/use-timer.js"); 24586/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../ */ "./node_modules/spectacle/es/index.js"); 24587/* harmony import */ var _internal_button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../internal-button */ "./node_modules/spectacle/es/components/internal-button.js"); 24588/* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils/constants */ "./node_modules/spectacle/es/utils/constants.js"); 24589function _slicedToArray(arr, i) { 24590 return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); 24591} 24592 24593function _nonIterableRest() { 24594 throw new TypeError("Invalid attempt to destructure non-iterable instance"); 24595} 24596 24597function _iterableToArrayLimit(arr, i) { 24598 if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { 24599 return; 24600 } 24601 24602 var _arr = []; 24603 var _n = true; 24604 var _d = false; 24605 var _e = undefined; 24606 24607 try { 24608 for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { 24609 _arr.push(_s.value); 24610 24611 if (i && _arr.length === i) break; 24612 } 24613 } catch (err) { 24614 _d = true; 24615 _e = err; 24616 } finally { 24617 try { 24618 if (!_n && _i["return"] != null) _i["return"](); 24619 } finally { 24620 if (_d) throw _e; 24621 } 24622 } 24623 24624 return _arr; 24625} 24626 24627function _arrayWithHoles(arr) { 24628 if (Array.isArray(arr)) return arr; 24629} 24630 24631 24632 24633 24634 24635 24636var Timer = function Timer() { 24637 var _React$useState = react__WEBPACK_IMPORTED_MODULE_0___default.a.useState(0), 24638 _React$useState2 = _slicedToArray(_React$useState, 2), 24639 timer = _React$useState2[0], 24640 setTimer = _React$useState2[1]; 24641 24642 var _React$useState3 = react__WEBPACK_IMPORTED_MODULE_0___default.a.useState(false), 24643 _React$useState4 = _slicedToArray(_React$useState3, 2), 24644 timerStarted = _React$useState4[0], 24645 setTimerStarted = _React$useState4[1]; 24646 24647 var addToTimer = react__WEBPACK_IMPORTED_MODULE_0___default.a.useCallback(function (v) { 24648 return setTimer(function (s) { 24649 return s + v; 24650 }); 24651 }, []); 24652 Object(_utils_use_timer__WEBPACK_IMPORTED_MODULE_1__["useTimer"])(addToTimer, 1000, timerStarted); 24653 var minutes = Math.floor(timer.toFixed(0) / 60); 24654 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(___WEBPACK_IMPORTED_MODULE_2__["FlexBox"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(___WEBPACK_IMPORTED_MODULE_2__["FlexBox"], { 24655 justifyContent: "flex-start", 24656 flex: 1 24657 }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(___WEBPACK_IMPORTED_MODULE_2__["Text"], { 24658 fontFamily: _utils_constants__WEBPACK_IMPORTED_MODULE_4__["SYSTEM_FONT"], 24659 fontWeight: "bold", 24660 fontSize: "2.2vw", 24661 textAlign: "left" 24662 }, "".concat(String(minutes).padStart(2, '0'), ":").concat(String(timer.toFixed(0) - minutes * 60).padStart(2, '0')))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_internal_button__WEBPACK_IMPORTED_MODULE_3__["default"], { 24663 onClick: function onClick() { 24664 return setTimerStarted(function (s) { 24665 return !s; 24666 }); 24667 } 24668 }, timerStarted ? 'Stop Timer' : 'Start Timer'), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(___WEBPACK_IMPORTED_MODULE_2__["Box"], { 24669 width: 8 24670 }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_internal_button__WEBPACK_IMPORTED_MODULE_3__["default"], { 24671 onClick: function onClick() { 24672 return setTimer(0); 24673 } 24674 }, "Reset")); 24675}; 24676 24677/***/ }), 24678
vendor: 3,234 bytes, lines 24679-24751
24679/***/ "./node_modules/spectacle/es/components/fullscreen.js": 24680/*!************************************************************!*\ 24681 !*** ./node_modules/spectacle/es/components/fullscreen.js ***! 24682 \************************************************************/ 24683/*! exports provided: default */ 24684/***/ (function(module, __webpack_exports__, __webpack_require__) { 24685 24686"use strict"; 24687__webpack_require__.r(__webpack_exports__); 24688/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js"); 24689/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 24690/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js"); 24691/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__); 24692/* harmony import */ var styled_components__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js"); 24693/* harmony import */ var _hooks_use_full_screen__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../hooks/use-full-screen */ "./node_modules/spectacle/es/hooks/use-full-screen.js"); 24694function _templateObject() { 24695 var data = _taggedTemplateLiteral(["\n @media print {\n display: none;\n }\n "]); 24696 24697 _templateObject = function _templateObject() { 24698 return data; 24699 }; 24700 24701 return data; 24702} 24703 24704function _taggedTemplateLiteral(strings, raw) { 24705 if (!raw) { 24706 raw = strings.slice(0); 24707 } 24708 24709 return Object.freeze(Object.defineProperties(strings, { 24710 raw: { 24711 value: Object.freeze(raw) 24712 } 24713 })); 24714} 24715 24716 24717 24718 24719 24720 24721var FullScreen = function FullScreen(props) { 24722 var Container = Object(styled_components__WEBPACK_IMPORTED_MODULE_2__["default"])('div')(_templateObject()); 24723 var toggleFullScreen = Object(_hooks_use_full_screen__WEBPACK_IMPORTED_MODULE_3__["useToggleFullScreen"])(); 24724 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](Container, { 24725 className: "spectacle-fullscreen-button", 24726 onClick: toggleFullScreen, 24727 style: { 24728 pointerEvents: 'all' 24729 } 24730 }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("svg", { 24731 width: props.size, 24732 height: props.size, 24733 viewBox: "0 0 512 512" 24734 }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("path", { 24735 fill: props.color, 24736 d: !!document.fullscreenElement || document.webkitIsFullScreen ? 'M64 371.2h76.795V448H192V320H64v51.2zm76.795-230.4H64V192h128V64h-51.205v76.8zM320 448h51.2v-76.8H448V320H320v128zm51.2-307.2V64H320v128h128v-51.2h-76.8z' : 'M396.795 396.8H320V448h128V320h-51.205zM396.8 115.205V192H448V64H320v51.205zM115.205 115.2H192V64H64v128h51.205zM115.2 396.795V320H64v128h128v-51.205z' 24737 }))); 24738}; 24739 24740FullScreen.propTypes = { 24741 color: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string, 24742 size: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.number 24743}; 24744FullScreen.defaultProps = { 24745 color: '#fff', 24746 size: 24 24747}; 24748/* harmony default export */ __webpack_exports__["default"] = (FullScreen); 24749 24750/***/ }), 24751
vendor: 1,454 bytes, lines 24752-24776
24752/***/ "./node_modules/spectacle/es/components/image.js": 24753/*!*******************************************************!*\ 24754 !*** ./node_modules/spectacle/es/components/image.js ***! 24755 \*******************************************************/ 24756/*! exports provided: Image, FullSizeImage */ 24757/***/ (function(module, __webpack_exports__, __webpack_require__) { 24758 24759"use strict"; 24760__webpack_require__.r(__webpack_exports__); 24761/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Image", function() { return Image; }); 24762/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FullSizeImage", function() { return FullSizeImage; }); 24763/* harmony import */ var styled_components__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js"); 24764/* harmony import */ var styled_system__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! styled-system */ "./node_modules/styled-system/dist/index.esm.js"); 24765 24766 24767var Image = Object(styled_components__WEBPACK_IMPORTED_MODULE_0__["default"])('img')(Object(styled_system__WEBPACK_IMPORTED_MODULE_1__["compose"])(styled_system__WEBPACK_IMPORTED_MODULE_1__["layout"], styled_system__WEBPACK_IMPORTED_MODULE_1__["position"])); 24768var FullSizeImage = Object(styled_components__WEBPACK_IMPORTED_MODULE_0__["default"])(Image); 24769FullSizeImage.defaultProps = { 24770 maxWidth: '100%', 24771 maxHeight: '100%' 24772}; 24773 24774 24775/***/ }), 24776
vendor: 1,975 bytes, lines 24777-24821
24777/***/ "./node_modules/spectacle/es/components/internal-button.js": 24778/*!*****************************************************************!*\ 24779 !*** ./node_modules/spectacle/es/components/internal-button.js ***! 24780 \*****************************************************************/ 24781/*! exports provided: default */ 24782/***/ (function(module, __webpack_exports__, __webpack_require__) { 24783 24784"use strict"; 24785__webpack_require__.r(__webpack_exports__); 24786/* harmony import */ var styled_components__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js"); 24787/* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/constants */ "./node_modules/spectacle/es/utils/constants.js"); 24788function _templateObject() { 24789 var data = _taggedTemplateLiteral(["\n background: #333;\n border: 1px solid hsla(0, 0%, 0%, 0.4);\n border-radius: 2px;\n color: #fff;\n box-shadow: inset 1px 1px 0 hsla(0, 0%, 100%, 0.1),\n 1px 1px 0 hsla(0, 0%, 0%, 0.1);\n padding: 3px 20px;\n font-size: 14px;\n font-weight: bold;\n font-family: ", ";\n\n &:active {\n box-shadow: inset 1px 1px 0 hsla(0, 0%, 0%, 0.25),\n 1px 1px 0 hsla(0, 0%, 0%, 0.1);\n }\n"]); 24790 24791 _templateObject = function _templateObject() { 24792 return data; 24793 }; 24794 24795 return data; 24796} 24797 24798function _taggedTemplateLiteral(strings, raw) { 24799 if (!raw) { 24800 raw = strings.slice(0); 24801 } 24802 24803 return Object.freeze(Object.defineProperties(strings, { 24804 raw: { 24805 value: Object.freeze(raw) 24806 } 24807 })); 24808} 24809 24810 24811 24812/** 24813 * This button is for internal controls like the presenter display. 24814 * It uses Formidable Spectacle-branded colors. 24815 */ 24816 24817var InternalButton = Object(styled_components__WEBPACK_IMPORTED_MODULE_0__["default"])('button')(_templateObject(), _utils_constants__WEBPACK_IMPORTED_MODULE_1__["SYSTEM_FONT"]); 24818/* harmony default export */ __webpack_exports__["default"] = (InternalButton); 24819 24820/***/ }), 24821
vendor: 2,469 bytes, lines 24822-24852
24822/***/ "./node_modules/spectacle/es/components/layout.js": 24823/*!********************************************************!*\ 24824 !*** ./node_modules/spectacle/es/components/layout.js ***! 24825 \********************************************************/ 24826/*! exports provided: Box, FlexBox, Grid */ 24827/***/ (function(module, __webpack_exports__, __webpack_require__) { 24828 24829"use strict"; 24830__webpack_require__.r(__webpack_exports__); 24831/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Box", function() { return Box; }); 24832/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FlexBox", function() { return FlexBox; }); 24833/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Grid", function() { return Grid; }); 24834/* harmony import */ var styled_components__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js"); 24835/* harmony import */ var styled_system__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! styled-system */ "./node_modules/styled-system/dist/index.esm.js"); 24836 24837 24838var Box = Object(styled_components__WEBPACK_IMPORTED_MODULE_0__["default"])('div')(Object(styled_system__WEBPACK_IMPORTED_MODULE_1__["compose"])(styled_system__WEBPACK_IMPORTED_MODULE_1__["space"], styled_system__WEBPACK_IMPORTED_MODULE_1__["layout"], styled_system__WEBPACK_IMPORTED_MODULE_1__["position"], styled_system__WEBPACK_IMPORTED_MODULE_1__["color"], styled_system__WEBPACK_IMPORTED_MODULE_1__["border"])); 24839var FlexBox = Object(styled_components__WEBPACK_IMPORTED_MODULE_0__["default"])('div')(Object(styled_system__WEBPACK_IMPORTED_MODULE_1__["compose"])(styled_system__WEBPACK_IMPORTED_MODULE_1__["layout"], styled_system__WEBPACK_IMPORTED_MODULE_1__["space"], styled_system__WEBPACK_IMPORTED_MODULE_1__["flexbox"], styled_system__WEBPACK_IMPORTED_MODULE_1__["position"], styled_system__WEBPACK_IMPORTED_MODULE_1__["border"], styled_system__WEBPACK_IMPORTED_MODULE_1__["color"])); 24840FlexBox.defaultProps = { 24841 alignItems: 'center', 24842 justifyContent: 'center', 24843 display: 'flex' 24844}; 24845var Grid = Object(styled_components__WEBPACK_IMPORTED_MODULE_0__["default"])('div')(Object(styled_system__WEBPACK_IMPORTED_MODULE_1__["compose"])(styled_system__WEBPACK_IMPORTED_MODULE_1__["layout"], styled_system__WEBPACK_IMPORTED_MODULE_1__["grid"], styled_system__WEBPACK_IMPORTED_MODULE_1__["position"])); 24846Grid.defaultProps = { 24847 display: 'grid' 24848}; 24849 24850 24851/***/ }), 24852
vendor: 13,691 bytes, lines 24853-25000
24853/***/ "./node_modules/spectacle/es/components/logo.js": 24854/*!******************************************************!*\ 24855 !*** ./node_modules/spectacle/es/components/logo.js ***! 24856 \******************************************************/ 24857/*! exports provided: default */ 24858/***/ (function(module, __webpack_exports__, __webpack_require__) { 24859 24860"use strict"; 24861__webpack_require__.r(__webpack_exports__); 24862/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return SpectacleLogo; }); 24863/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js"); 24864/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 24865/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js"); 24866/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__); 24867 24868 24869function SpectacleLogo(props) { 24870 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("svg", { 24871 xmlns: "http://www.w3.org/2000/svg", 24872 width: Math.floor(props.size * 1.012), 24873 height: props.size, 24874 viewBox: "0 0 601 595" 24875 }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("title", null, "Spectacle"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("g", { 24876 id: "Finals", 24877 stroke: "none", 24878 strokeWidth: "1", 24879 fill: "none", 24880 fillRule: "evenodd" 24881 }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("g", { 24882 id: "The-Good-Badges-for-OSS-usage", 24883 transform: "translate(-1006.000000, -337.000000)" 24884 }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("g", { 24885 id: "Badge-Copy-4", 24886 transform: "translate(1006.666667, 327.000000)" 24887 }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("path", { 24888 d: "M342.276968,19.4007702 L538.247998,106.565184 C575.801346,123.268242 600,160.515702 600,201.616141 L600,413.57732 C600,454.677759 575.801346,491.925219 538.247998,508.628277 L342.276968,595.79269 C315.36338,607.763373 284.63662,607.763373 257.723032,595.79269 L61.7520017,508.628277 C24.1986538,491.925219 2.32856136e-14,454.677759 0,413.57732 L0,201.616141 C2.33883573e-14,160.515702 24.1986538,123.268242 61.7520017,106.565184 L257.723032,19.4007702 C284.63662,7.43008735 315.36338,7.43008735 342.276968,19.4007702 Z", 24889 id: "Polygon-Copy-4", 24890 fill: "#202020" 24891 }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("path", { 24892 d: "M332.268654,53.3025417 C311.655676,44.165094 288.140981,44.165094 267.528004,53.3025417 L76.380235,138.035705 C51.5383581,149.047766 35.5217047,173.667505 35.5217047,200.840733 L35.5217047,414.543463 C35.5217047,441.716691 51.5383581,466.336431 76.380235,477.348491 L267.528004,562.081654 C288.140981,571.219102 311.655676,571.219102 332.268654,562.081654 L523.416422,477.348491 C548.258299,466.336431 564.274953,441.716691 564.274953,414.543463 L564.274953,200.840733 C564.274953,173.667505 548.258299,149.047766 523.416422,138.035705 L332.268654,53.3025417 Z", 24893 id: "Polygon-Copy-5", 24894 stroke: "#FC6986", 24895 strokeWidth: "24.2467521", 24896 opacity: "0.499209449" 24897 }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("path", { 24898 d: "M337.398856,30.3681883 C313.590683,19.7787381 286.409317,19.7787381 262.601144,30.3681883 L66.6301133,117.532602 C33.409844,132.308384 12.0033426,165.25806 12.0033426,201.616141 L12.0033426,413.57732 C12.0033426,449.9354 33.409844,482.885076 66.6301133,497.660859 L262.601144,584.825272 C286.409317,595.414722 313.590683,595.414722 337.398856,584.825272 L533.369887,497.660859 C566.590156,482.885076 587.996657,449.9354 587.996657,413.57732 L587.996657,201.616141 C587.996657,165.25806 566.590156,132.308384 533.369887,117.532602 L337.398856,30.3681883 Z", 24899 id: "Polygon-Copy", 24900 stroke: "#FC6986", 24901 strokeWidth: "24.0066852" 24902 }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("g", { 24903 id: "peacock", 24904 transform: "translate(130.000000, 145.000000)" 24905 }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("g", { 24906 id: "Group-41" 24907 }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("path", { 24908 d: "M157.997195,216.513892 L50.113914,111.685631 C36.9081129,98.854247 38.4478205,77.1487901 53.3314404,66.3299245 C68.2150602,55.5097309 89.2138965,60.8288626 97.213107,77.4462524 L162.56147,213.195992 C163.953154,216.086954 160.294861,218.746188 157.997195,216.513892", 24909 id: "Fill-1", 24910 fill: "#F14E74" 24911 }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("path", { 24912 d: "M162.555456,213.170628 L97.0901287,77.4779906 C89.0763801,60.8685685 97.9452281,41.0169395 115.622789,35.9946062 C133.300351,30.9722728 151.201269,43.2180282 153.030415,61.5843374 L167.976813,211.630862 C168.295327,214.82659 163.949784,216.06159 162.555456,213.170628", 24913 id: "Fill-3", 24914 fill: "#FC6986" 24915 }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("path", { 24916 d: "M154.775373,221.155235 L17.5689228,160.054606 C0.774215205,152.575552 -5.21742807,131.664877 5.04905146,116.358181 C15.315531,101.050821 36.8535953,98.7813422 50.057414,111.614719 L157.924174,216.460907 C160.22118,218.693866 157.698174,222.456633 154.775373,221.155235", 24917 id: "Fill-5", 24918 fill: "#E13E65" 24919 }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("path", { 24920 d: "M4.00509006,118.137444 C4.74058129,116.629549 10.493669,105.879737 26.2614643,103.237103 C33.4148269,102.038622 43.6667684,104.383794 52.2309789,113.829552 L151.544102,210.171503 L152.259108,214.318713 L54.3264351,137.325095 C54.3264351,137.325095 38.7588678,125.12449 20.9537684,136.558199 L20.911476,136.512385 C18.9726339,137.716842 16.6947918,138.424643 14.2477801,138.424643 C7.23252865,138.424643 1.54618363,132.710444 1.54618363,125.662312 C1.54618363,122.844388 2.46604327,120.248896 4.00509006,118.137444", 24921 id: "Fill-8", 24922 fill: "#FC6986" 24923 }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("path", { 24924 d: "M51.445662,67.7016376 C52.6490129,66.5363554 61.7075158,58.4046108 77.4264105,61.3274441 C84.5573053,62.6527452 93.3970772,68.3735839 98.2402175,80.1890812 L158.827381,205.336412 L158.091229,209.480302 L92.2287497,102.992095 C92.2287497,102.992095 81.7395743,86.1861349 61.1207088,90.8280086 L61.0962585,90.7702425 C58.8646737,91.2383473 56.483083,91.1221511 54.1827731,90.2835462 C47.589124,87.8779522 44.184586,80.5569253 46.5780713,73.9317478 C47.5355977,71.2831376 49.2814807,69.1584065 51.445662,67.7016376", 24925 id: "Fill-10", 24926 fill: "#FF92AC" 24927 }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("path", { 24928 d: "M113.547092,36.7877285 C115.075565,36.1098065 126.366975,31.6080323 140.123899,39.7895753 C146.364671,43.4998871 152.704565,51.9284301 153.203484,64.6967366 L167.214162,203.152188 L165.103507,206.78747 L139.747893,84.0271425 C139.747893,84.0271425 135.656764,64.620379 114.70815,61.8469409 L114.704185,61.7845269 C112.448811,61.4518737 110.252911,60.5196478 108.380811,58.9353952 C103.014302,54.3971022 102.325729,46.3463629 106.842425,40.9535296 C108.648443,38.7975914 111.016156,37.4072204 113.547092,36.7877285", 24929 id: "Fill-12", 24930 fill: "#FF92AC" 24931 }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("path", { 24932 d: "M151.276404,53.9526349 L150.254778,187.165976 C150.254778,187.165976 154.309562,217.05032 159.359539,223.198097 L135.69496,212.686654 C126.754743,205.082108 129.101971,188.118122 129.101971,188.118122 L151.276404,53.9526349 Z", 24933 id: "Fill-14", 24934 fill: "#FF92AC" 24935 }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("path", { 24936 d: "M168.915836,224.707254 L168.915836,224.707254 C151.277263,224.707254 136.977807,210.340087 136.977807,192.617173 L155.552099,12.7699664 C156.26314,5.89048522 162.032088,0.663646505 168.915836,0.663646505 C175.798924,0.663646505 181.568532,5.89048522 182.279573,12.7699664 L200.853865,192.617173 C200.853865,210.340087 186.554409,224.707254 168.915836,224.707254", 24937 id: "Fill-16", 24938 fill: "#E13E65" 24939 }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("polyline", { 24940 id: "Fill-19", 24941 fill: "#FF92AC", 24942 points: "159.624989 31.3611651 168.931299 47.8450952 178.284527 31.5716462" 24943 }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("path", { 24944 d: "M182.263846,14.0756137 C182.263846,21.4829578 179.448097,38.1116352 168.915968,38.1116352 C158.824606,38.1116352 155.56743,21.4829578 155.56743,14.0756137 C155.56743,6.6689336 161.543875,0.663912097 168.915968,0.663912097 C176.288062,0.663912097 182.263846,6.6689336 182.263846,14.0756137", 24945 id: "Fill-21", 24946 fill: "#FC6986" 24947 }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("path", { 24948 d: "M222.788685,35.994075 L222.788685,35.994075 C207.35196,31.608497 191.746065,40.3922685 186.819662,54.920118 L203.394317,156.089857 L241.320685,77.4787874 C249.334434,60.8687013 240.465586,41.0164083 222.788685,35.994075", 24949 id: "Fill-24", 24950 fill: "#FC6986" 24951 }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("path", { 24952 d: "M169.522798,201.453134 C168.427161,201.31569 151.604699,198.872249 152.015728,179.057803 L155.604635,89.921346 C156.096944,77.7174212 154.639178,65.5121685 151.287506,53.7703728 L136.968225,192.634835 C136.896196,193.331349 136.928576,194.013255 137.042237,194.669265 C137.411635,199.682303 139.575816,212.770647 151.963523,219.965518 C156.151792,222.397671 161.622711,224.640591 168.359757,224.697693 L168.361079,224.671798 C168.468132,224.675117 168.57188,224.687733 168.678933,224.687733 C175.076319,224.687733 180.262424,219.477494 180.262424,213.048854 C180.262424,206.907053 175.525015,201.888703 169.522798,201.453134", 24953 id: "Fill-26", 24954 fill: "#FC6986" 24955 }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("path", { 24956 d: "M140.85298,89.3432199 C140.85298,89.3432199 143.110998,103.144677 140.570811,118.648575 L143.110998,110.708056 L145.557349,91.8012683 L140.85298,89.3432199 Z", 24957 id: "Fill-28", 24958 fill: "#FF92AC" 24959 }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("path", { 24960 d: "M231.568785,40.9537952 C229.762768,38.797857 227.395054,37.407486 224.864119,36.7879941 C223.335645,36.110072 212.044236,31.6082978 198.287312,39.7891769 C193.774581,42.472978 189.22154,47.6360747 186.851183,55.1111446 L194.717569,103.130069 L198.663318,84.0274081 C198.663318,84.0274081 202.754446,64.6206446 223.70306,61.8478704 L223.707025,61.7847925 C225.962399,61.4521392 228.1583,60.5199134 230.030399,58.9363247 C235.397569,54.3973677 236.086142,46.3459645 231.568785,40.9537952", 24961 id: "Fill-30", 24962 fill: "#FF92AC" 24963 }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("path", { 24964 d: "M285.080233,66.3295925 L285.080233,66.3295925 C270.196613,55.5093989 249.197116,60.8291946 241.198566,77.4459204 L203.380572,156.005864 L208.708092,188.523547 C208.708092,188.523547 208.731882,188.680246 208.766244,188.964428 L288.297759,111.685963 C301.50356,98.8539151 299.963192,77.149122 285.080233,66.3295925", 24965 id: "Fill-32", 24966 fill: "#F14E74" 24967 }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("path", { 24968 d: "M291.833007,73.9316151 C290.876142,71.2836688 289.129598,69.1589376 286.966077,67.7015048 C285.762065,66.5362226 276.703563,58.404478 260.984668,61.3279753 C253.853773,62.6532763 245.014001,68.3734511 240.171522,80.1889484 L203.402247,156.138128 L205.477878,168.804846 L246.182329,102.992626 C246.182329,102.992626 256.671504,86.1860022 277.29037,90.8278758 L277.31482,90.7701097 C279.547065,91.2382145 281.927995,91.1226823 284.228305,90.2834134 C290.822615,87.8778194 294.227153,80.5574565 291.833007,73.9316151", 24969 id: "Fill-34", 24970 fill: "#FF92AC" 24971 }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("path", { 24972 d: "M333.361961,116.358181 L333.361961,116.357517 C323.095481,101.050821 301.557417,98.7813422 288.354259,111.614719 L208.767236,188.972861 C209.091698,191.673926 210.37699,205.93884 202.348704,212.821641 L320.842089,160.054606 C337.637458,152.575552 343.62844,131.665541 333.361961,116.358181", 24973 id: "Fill-36", 24974 fill: "#E13E65" 24975 }), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("path", { 24976 d: "M334.40612,118.137444 C333.670629,116.629549 327.917542,105.879737 312.149746,103.237767 C304.996384,102.037958 294.744442,104.383794 286.180232,113.830216 L208.765319,188.958054 C208.892857,190.015108 209.172384,192.904078 208.964887,196.434452 L284.085436,137.325095 C284.085436,137.325095 299.652343,125.123826 317.457442,136.558199 L317.499735,136.512385 C319.439237,137.717506 321.716419,138.424643 324.164091,138.424643 C331.178682,138.424643 336.865688,132.710444 336.865688,125.662312 C336.865688,122.844388 335.945167,120.248896 334.40612,118.137444", 24977 id: "Fill-39", 24978 fill: "#FC6986" 24979 }))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("text", { 24980 id: "SPECTACLE", 24981 fontFamily: "Helvetica-Bold, Helvetica", 24982 fontSize: "52.0144847", 24983 fontWeight: "bold", 24984 "line-spacing": "40.0111421", 24985 letterSpacing: "3.85292292", 24986 fill: "#FC6986" 24987 }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"]("tspan", { 24988 x: "125.5", 24989 y: "467" 24990 }, "SPECTACLE")))))); 24991} 24992SpectacleLogo.propTypes = { 24993 size: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.number 24994}; 24995SpectacleLogo.defaultProps = { 24996 size: 100 24997}; 24998 24999/***/ }), 25000
vendor: 4,350 bytes, lines 25001-25107
25001/***/ "./node_modules/spectacle/es/components/markdown.js": 25002/*!**********************************************************!*\ 25003 !*** ./node_modules/spectacle/es/components/markdown.js ***! 25004 \**********************************************************/ 25005/*! exports provided: default */ 25006/***/ (function(module, __webpack_exports__, __webpack_require__) { 25007 25008"use strict"; 25009__webpack_require__.r(__webpack_exports__); 25010/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js"); 25011/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 25012/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js"); 25013/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__); 25014/* harmony import */ var marksy__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! marksy */ "./node_modules/marksy/lib/index.js"); 25015/* harmony import */ var marksy__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(marksy__WEBPACK_IMPORTED_MODULE_2__); 25016/* harmony import */ var _utils_mdx_component_mapper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/mdx-component-mapper */ "./node_modules/spectacle/es/utils/mdx-component-mapper.js"); 25017/* harmony import */ var _utils_indent_normalizer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/indent-normalizer */ "./node_modules/spectacle/es/utils/indent-normalizer.js"); 25018/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../index */ "./node_modules/spectacle/es/index.js"); 25019function ownKeys(object, enumerableOnly) { 25020 var keys = Object.keys(object); 25021 25022 if (Object.getOwnPropertySymbols) { 25023 var symbols = Object.getOwnPropertySymbols(object); 25024 if (enumerableOnly) symbols = symbols.filter(function (sym) { 25025 return Object.getOwnPropertyDescriptor(object, sym).enumerable; 25026 }); 25027 keys.push.apply(keys, symbols); 25028 } 25029 25030 return keys; 25031} 25032 25033function _objectSpread(target) { 25034 for (var i = 1; i < arguments.length; i++) { 25035 var source = arguments[i] != null ? arguments[i] : {}; 25036 25037 if (i % 2) { 25038 ownKeys(Object(source), true).forEach(function (key) { 25039 _defineProperty(target, key, source[key]); 25040 }); 25041 } else if (Object.getOwnPropertyDescriptors) { 25042 Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); 25043 } else { 25044 ownKeys(Object(source)).forEach(function (key) { 25045 Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); 25046 }); 25047 } 25048 } 25049 25050 return target; 25051} 25052 25053function _defineProperty(obj, key, value) { 25054 if (key in obj) { 25055 Object.defineProperty(obj, key, { 25056 value: value, 25057 enumerable: true, 25058 configurable: true, 25059 writable: true 25060 }); 25061 } else { 25062 obj[key] = value; 25063 } 25064 25065 return obj; 25066} 25067 25068 25069 25070 25071 25072 25073 25074 25075var _CodePane = function _CodePane(_ref) { 25076 var language = _ref.language, 25077 code = _ref.code; 25078 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](_index__WEBPACK_IMPORTED_MODULE_5__["CodePane"], { 25079 autoFillHeight: true, 25080 language: language 25081 }, code); 25082}; 25083 25084_CodePane.propTypes = { 25085 code: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string.isRequired, 25086 language: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string.isRequired 25087}; 25088var compile = marksy__WEBPACK_IMPORTED_MODULE_2___default()({ 25089 createElement: react__WEBPACK_IMPORTED_MODULE_0__["createElement"], 25090 elements: _objectSpread({}, _utils_mdx_component_mapper__WEBPACK_IMPORTED_MODULE_3__["default"], { 25091 codeblock: _CodePane, 25092 code: _CodePane 25093 }) 25094}); 25095 25096var Markdown = function Markdown(props) { 25097 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](react__WEBPACK_IMPORTED_MODULE_0__["Fragment"], null, compile(Object(_utils_indent_normalizer__WEBPACK_IMPORTED_MODULE_4__["default"])(props.children)).tree); 25098}; 25099 25100Markdown.propTypes = { 25101 children: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string.isRequired, 25102 containsSlides: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.bool 25103}; 25104/* harmony default export */ __webpack_exports__["default"] = (Markdown); 25105 25106/***/ }), 25107
vendor: 1,734 bytes, lines 25108-25144
25108/***/ "./node_modules/spectacle/es/components/notes.js": 25109/*!*******************************************************!*\ 25110 !*** ./node_modules/spectacle/es/components/notes.js ***! 25111 \*******************************************************/ 25112/*! exports provided: default */ 25113/***/ (function(module, __webpack_exports__, __webpack_require__) { 25114 25115"use strict"; 25116__webpack_require__.r(__webpack_exports__); 25117/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js"); 25118/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 25119/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js"); 25120/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__); 25121/* harmony import */ var _hooks_use_slide__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../hooks/use-slide */ "./node_modules/spectacle/es/hooks/use-slide.js"); 25122 25123 25124 25125 25126var Notes = function Notes(_ref) { 25127 var children = _ref.children; 25128 25129 var _React$useContext = react__WEBPACK_IMPORTED_MODULE_0___default.a.useContext(_hooks_use_slide__WEBPACK_IMPORTED_MODULE_2__["SlideContext"]), 25130 setNotes = _React$useContext.actions.setNotes; 25131 25132 react__WEBPACK_IMPORTED_MODULE_0___default.a.useEffect(function () { 25133 setNotes(children); 25134 }, [setNotes, children]); 25135 return null; 25136}; 25137 25138Notes.propTypes = { 25139 children: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.node.isRequired 25140}; 25141/* harmony default export */ __webpack_exports__["default"] = (Notes); 25142 25143/***/ }), 25144
vendor: 4,012 bytes, lines 25145-25249
25145/***/ "./node_modules/spectacle/es/components/progress.js": 25146/*!**********************************************************!*\ 25147 !*** ./node_modules/spectacle/es/components/progress.js ***! 25148 \**********************************************************/ 25149/*! exports provided: Circle, default */ 25150/***/ (function(module, __webpack_exports__, __webpack_require__) { 25151 25152"use strict"; 25153__webpack_require__.r(__webpack_exports__); 25154/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Circle", function() { return Circle; }); 25155/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js"); 25156/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 25157/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js"); 25158/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__); 25159/* harmony import */ var styled_components__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js"); 25160/* harmony import */ var _hooks_use_deck__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../hooks/use-deck */ "./node_modules/spectacle/es/hooks/use-deck.js"); 25161function _templateObject2() { 25162 var data = _taggedTemplateLiteral(["\n @media print {\n display: none;\n }\n"]); 25163 25164 _templateObject2 = function _templateObject2() { 25165 return data; 25166 }; 25167 25168 return data; 25169} 25170 25171function _templateObject() { 25172 var data = _taggedTemplateLiteral(["\n width: ", "px;\n height: ", "px;\n display: inline-block;\n border: 1px solid ", ";\n background: ", ";\n margin: ", "px;\n border-radius: 50%;\n pointer-events: all;\n cursor: pointer;\n"]); 25173 25174 _templateObject = function _templateObject() { 25175 return data; 25176 }; 25177 25178 return data; 25179} 25180 25181function _taggedTemplateLiteral(strings, raw) { 25182 if (!raw) { 25183 raw = strings.slice(0); 25184 } 25185 25186 return Object.freeze(Object.defineProperties(strings, { 25187 raw: { 25188 value: Object.freeze(raw) 25189 } 25190 })); 25191} 25192 25193 25194 25195 25196 25197var Circle = Object(styled_components__WEBPACK_IMPORTED_MODULE_2__["default"])('div')(_templateObject(), function (_ref) { 25198 var size = _ref.size; 25199 return size; 25200}, function (_ref2) { 25201 var size = _ref2.size; 25202 return size; 25203}, function (_ref3) { 25204 var color = _ref3.color; 25205 return color; 25206}, function (_ref4) { 25207 var color = _ref4.color, 25208 active = _ref4.active; 25209 return active ? color : 'transparent'; 25210}, function (_ref5) { 25211 var size = _ref5.size; 25212 return size / 3; 25213}); 25214var Container = Object(styled_components__WEBPACK_IMPORTED_MODULE_2__["default"])('div')(_templateObject2()); 25215 25216var Progress = function Progress(props) { 25217 var _React$useContext = react__WEBPACK_IMPORTED_MODULE_0__["useContext"](_hooks_use_deck__WEBPACK_IMPORTED_MODULE_3__["DeckContext"]), 25218 numberOfSlides = _React$useContext.numberOfSlides, 25219 state = _React$useContext.state, 25220 goToSlide = _React$useContext.goToSlide; 25221 25222 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](Container, { 25223 className: "spectacle-progress-indicator" 25224 }, Array(numberOfSlides).fill(0).map(function (_, idx) { 25225 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](Circle, { 25226 key: "progress-circle-".concat(idx), 25227 color: props.color, 25228 active: state.currentSlide === idx, 25229 size: props.size, 25230 onClick: function onClick() { 25231 return goToSlide(idx); 25232 }, 25233 "data-testid": "Progress Circle" 25234 }); 25235 })); 25236}; 25237 25238Progress.propTypes = { 25239 color: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string, 25240 size: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.number 25241}; 25242Progress.defaultProps = { 25243 color: '#fff', 25244 size: 10 25245}; 25246/* harmony default export */ __webpack_exports__["default"] = (Progress); 25247 25248/***/ }), 25249
vendor: 14,752 bytes, lines 25250-25613
25250/***/ "./node_modules/spectacle/es/components/slide.js": 25251/*!*******************************************************!*\ 25252 !*** ./node_modules/spectacle/es/components/slide.js ***! 25253 \*******************************************************/ 25254/*! exports provided: default */ 25255/***/ (function(module, __webpack_exports__, __webpack_require__) { 25256 25257"use strict"; 25258__webpack_require__.r(__webpack_exports__); 25259/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js"); 25260/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 25261/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js"); 25262/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__); 25263/* harmony import */ var _hooks_use_slide__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../hooks/use-slide */ "./node_modules/spectacle/es/hooks/use-slide.js"); 25264/* harmony import */ var styled_components__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js"); 25265/* harmony import */ var styled_system__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! styled-system */ "./node_modules/styled-system/dist/index.esm.js"); 25266/* harmony import */ var _hooks_use_autofill_height__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../hooks/use-autofill-height */ "./node_modules/spectacle/es/hooks/use-autofill-height.js"); 25267/* harmony import */ var _hooks_use_deck__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../hooks/use-deck */ "./node_modules/spectacle/es/hooks/use-deck.js"); 25268function ownKeys(object, enumerableOnly) { 25269 var keys = Object.keys(object); 25270 25271 if (Object.getOwnPropertySymbols) { 25272 var symbols = Object.getOwnPropertySymbols(object); 25273 if (enumerableOnly) symbols = symbols.filter(function (sym) { 25274 return Object.getOwnPropertyDescriptor(object, sym).enumerable; 25275 }); 25276 keys.push.apply(keys, symbols); 25277 } 25278 25279 return keys; 25280} 25281 25282function _objectSpread(target) { 25283 for (var i = 1; i < arguments.length; i++) { 25284 var source = arguments[i] != null ? arguments[i] : {}; 25285 25286 if (i % 2) { 25287 ownKeys(Object(source), true).forEach(function (key) { 25288 _defineProperty(target, key, source[key]); 25289 }); 25290 } else if (Object.getOwnPropertyDescriptors) { 25291 Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); 25292 } else { 25293 ownKeys(Object(source)).forEach(function (key) { 25294 Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); 25295 }); 25296 } 25297 } 25298 25299 return target; 25300} 25301 25302function _defineProperty(obj, key, value) { 25303 if (key in obj) { 25304 Object.defineProperty(obj, key, { 25305 value: value, 25306 enumerable: true, 25307 configurable: true, 25308 writable: true 25309 }); 25310 } else { 25311 obj[key] = value; 25312 } 25313 25314 return obj; 25315} 25316 25317function _slicedToArray(arr, i) { 25318 return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); 25319} 25320 25321function _nonIterableRest() { 25322 throw new TypeError("Invalid attempt to destructure non-iterable instance"); 25323} 25324 25325function _iterableToArrayLimit(arr, i) { 25326 if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { 25327 return; 25328 } 25329 25330 var _arr = []; 25331 var _n = true; 25332 var _d = false; 25333 var _e = undefined; 25334 25335 try { 25336 for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { 25337 _arr.push(_s.value); 25338 25339 if (i && _arr.length === i) break; 25340 } 25341 } catch (err) { 25342 _d = true; 25343 _e = err; 25344 } finally { 25345 try { 25346 if (!_n && _i["return"] != null) _i["return"](); 25347 } finally { 25348 if (_d) throw _e; 25349 } 25350 } 25351 25352 return _arr; 25353} 25354 25355function _arrayWithHoles(arr) { 25356 if (Array.isArray(arr)) return arr; 25357} 25358 25359function _templateObject5() { 25360 var data = _taggedTemplateLiteral(["\n flex: 1;\n"]); 25361 25362 _templateObject5 = function _templateObject5() { 25363 return data; 25364 }; 25365 25366 return data; 25367} 25368 25369function _templateObject4() { 25370 var data = _taggedTemplateLiteral(["\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n pointer-events: none;\n "]); 25371 25372 _templateObject4 = function _templateObject4() { 25373 return data; 25374 }; 25375 25376 return data; 25377} 25378 25379function _templateObject3() { 25380 var data = _taggedTemplateLiteral(["\n flex: 0 1 auto;\n > div {\n position: relative;\n }\n "]); 25381 25382 _templateObject3 = function _templateObject3() { 25383 return data; 25384 }; 25385 25386 return data; 25387} 25388 25389function _templateObject2() { 25390 var data = _taggedTemplateLiteral(["\n flex: 1;\n display: flex;\n flex-direction: column;\n > div {\n flex: 1;\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n }\n "]); 25391 25392 _templateObject2 = function _templateObject2() { 25393 return data; 25394 }; 25395 25396 return data; 25397} 25398 25399function _templateObject() { 25400 var data = _taggedTemplateLiteral(["\n ", ";\n width: ", "px;\n height: ", "px;\n overflow: hidden;\n display: flex;\n @media print {\n page-break-before: always;\n height: 100vh;\n width: 100vw;\n }\n &:before {\n ", ";\n content: ' ';\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: -1;\n opacity: ", ";\n }\n"]); 25401 25402 _templateObject = function _templateObject() { 25403 return data; 25404 }; 25405 25406 return data; 25407} 25408 25409function _taggedTemplateLiteral(strings, raw) { 25410 if (!raw) { 25411 raw = strings.slice(0); 25412 } 25413 25414 return Object.freeze(Object.defineProperties(strings, { 25415 raw: { 25416 value: Object.freeze(raw) 25417 } 25418 })); 25419} 25420 25421 25422 25423 25424 25425 25426 25427 25428var SlideContainer = Object(styled_components__WEBPACK_IMPORTED_MODULE_3__["default"])('div')(_templateObject(), styled_system__WEBPACK_IMPORTED_MODULE_4__["color"], function (_ref) { 25429 var theme = _ref.theme; 25430 return theme.size.width || 1366; 25431}, function (_ref2) { 25432 var theme = _ref2.theme; 25433 return theme.size.height || 768; 25434}, styled_system__WEBPACK_IMPORTED_MODULE_4__["background"], function (_ref3) { 25435 var backgroundOpacity = _ref3.backgroundOpacity; 25436 return backgroundOpacity; 25437}); 25438var SlideWrapper = Object(styled_components__WEBPACK_IMPORTED_MODULE_3__["default"])('div')(styled_system__WEBPACK_IMPORTED_MODULE_4__["color"], styled_system__WEBPACK_IMPORTED_MODULE_4__["space"], Object(styled_components__WEBPACK_IMPORTED_MODULE_3__["css"])(_templateObject2())); 25439var TemplateWrapper = Object(styled_components__WEBPACK_IMPORTED_MODULE_3__["default"])('div')(function (_ref4) { 25440 var autoLayout = _ref4.autoLayout; 25441 return autoLayout ? Object(styled_components__WEBPACK_IMPORTED_MODULE_3__["css"])(_templateObject3()) : Object(styled_components__WEBPACK_IMPORTED_MODULE_3__["css"])(_templateObject4()); 25442}); 25443var InnerSlideRef = Object(styled_components__WEBPACK_IMPORTED_MODULE_3__["default"])('div')(_templateObject5()); 25444/** 25445 * Slide component wraps anything going in a slide and maintains 25446 * the slides' internal state through useSlide. 25447 */ 25448 25449var Slide = function Slide(props) { 25450 var children = props.children, 25451 slideNum = props.slideNum, 25452 backgroundColor = props.backgroundColor, 25453 backgroundImage = props.backgroundImage, 25454 backgroundOpacity = props.backgroundOpacity, 25455 backgroundPosition = props.backgroundPosition, 25456 backgroundRepeat = props.backgroundRepeat, 25457 backgroundSize = props.backgroundSize, 25458 textColor = props.textColor, 25459 template = props.template, 25460 scaleRatio = props.scaleRatio; 25461 var theme = react__WEBPACK_IMPORTED_MODULE_0___default.a.useContext(styled_components__WEBPACK_IMPORTED_MODULE_3__["ThemeContext"]); 25462 25463 var _React$useContext = react__WEBPACK_IMPORTED_MODULE_0___default.a.useContext(_hooks_use_deck__WEBPACK_IMPORTED_MODULE_6__["DeckContext"]), 25464 state = _React$useContext.state; 25465 25466 var _ref5 = react__WEBPACK_IMPORTED_MODULE_0___default.a.useContext(_hooks_use_slide__WEBPACK_IMPORTED_MODULE_2__["SlideNextElementContext"]) || {}, 25467 showNextElement = _ref5.showNextElement; 25468 25469 var _React$useState = react__WEBPACK_IMPORTED_MODULE_0___default.a.useState(scaleRatio || 1), 25470 _React$useState2 = _slicedToArray(_React$useState, 2), 25471 ratio = _React$useState2[0], 25472 setRatio = _React$useState2[1]; 25473 25474 var _React$useState3 = react__WEBPACK_IMPORTED_MODULE_0___default.a.useState({ 25475 x: 0, 25476 y: 0 25477 }), 25478 _React$useState4 = _slicedToArray(_React$useState3, 2), 25479 origin = _React$useState4[0], 25480 setOrigin = _React$useState4[1]; 25481 25482 var slideRef = react__WEBPACK_IMPORTED_MODULE_0___default.a.useRef(null); 25483 var slideWrapperRef = react__WEBPACK_IMPORTED_MODULE_0___default.a.useRef(null); 25484 var contentRef = react__WEBPACK_IMPORTED_MODULE_0___default.a.useRef(null); 25485 var templateRef = react__WEBPACK_IMPORTED_MODULE_0___default.a.useRef(null); 25486 var slideWidth = theme.size.width || 1366; 25487 var slideHeight = theme.size.height || 768; 25488 var transformForWindowSize = react__WEBPACK_IMPORTED_MODULE_0___default.a.useCallback(function () { 25489 var clientWidth = slideRef.current.parentElement.clientWidth; 25490 var clientHeight = slideRef.current.parentElement.clientHeight; 25491 var useVerticalRatio = clientWidth / clientHeight > slideWidth / slideHeight; 25492 var newRatio = useVerticalRatio ? clientHeight / slideHeight : clientWidth / slideWidth; 25493 var clientRects = slideRef.current.getClientRects(); 25494 25495 if (!clientRects || clientRects.length === 0) { 25496 return; 25497 } 25498 25499 setRatio(newRatio); 25500 setOrigin({ 25501 x: useVerticalRatio ? "".concat((clientWidth - clientRects[0].width) / 2 / (1 - newRatio), "px") : 'left', 25502 y: useVerticalRatio ? 'top' : "".concat((clientHeight - clientRects[0].height) / 2 / (1 - newRatio), "px") 25503 }); 25504 }, [slideHeight, slideWidth]); 25505 react__WEBPACK_IMPORTED_MODULE_0___default.a.useEffect(function () { 25506 var clientWidth = slideRef.current.parentElement.clientWidth; 25507 var clientHeight = slideRef.current.parentElement.clientHeight; 25508 var useVerticalRatio = clientWidth / clientHeight > slideWidth / slideHeight; 25509 var clientRects = slideRef.current.getClientRects(); 25510 25511 if (!clientRects || clientRects.length === 0) { 25512 return; 25513 } 25514 25515 setOrigin({ 25516 x: useVerticalRatio ? "".concat((clientWidth - clientRects[0].width) / 2 / (1 - ratio), "px") : 'left', 25517 y: useVerticalRatio ? 'top' : "".concat((clientHeight - clientRects[0].height) / 2 / (1 - ratio), "px") 25518 }); 25519 }, [ratio, slideHeight, slideWidth, theme]); 25520 react__WEBPACK_IMPORTED_MODULE_0___default.a.useLayoutEffect(function () { 25521 if (!isNaN(scaleRatio)) { 25522 return; 25523 } 25524 25525 transformForWindowSize(); 25526 window.addEventListener('resize', transformForWindowSize); // eslint-disable-next-line consistent-return 25527 25528 return function () { 25529 return window.removeEventListener('resize', transformForWindowSize); 25530 }; 25531 }, [transformForWindowSize, scaleRatio]); 25532 var transforms = react__WEBPACK_IMPORTED_MODULE_0___default.a.useMemo(function () { 25533 return state.exportMode ? {} : { 25534 transform: "scale(".concat(ratio, ")"), 25535 transformOrigin: "".concat(origin.x, " ").concat(origin.y), 25536 position: 'absolute', 25537 top: 0, 25538 left: 0 25539 }; 25540 }, [state.exportMode, origin, ratio]); 25541 var value = Object(_hooks_use_slide__WEBPACK_IMPORTED_MODULE_2__["default"])(slideNum); 25542 var numberOfSlides = value.state.numberOfSlides; 25543 Object(_hooks_use_autofill_height__WEBPACK_IMPORTED_MODULE_5__["default"])({ 25544 slideWrapperRef: slideWrapperRef, 25545 templateRef: templateRef, 25546 contentRef: contentRef, 25547 slideHeight: slideHeight 25548 }); 25549 25550 if (showNextElement) { 25551 // Next slide preview in the presenter mode might need to show the next animation 25552 value = _objectSpread({}, value, { 25553 state: _objectSpread({}, value.state, { 25554 currentSlideElement: value.state.currentSlideElement + 1 25555 }) 25556 }); 25557 } 25558 25559 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(SlideContainer, { 25560 ref: slideRef, 25561 backgroundColor: state.printMode ? '#ffffff' : backgroundColor, 25562 backgroundImage: state.printMode ? undefined : backgroundImage, 25563 backgroundOpacity: backgroundOpacity, 25564 backgroundPosition: backgroundPosition, 25565 backgroundRepeat: backgroundRepeat, 25566 backgroundSize: backgroundSize, 25567 style: transforms 25568 }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(TemplateWrapper, { 25569 ref: templateRef 25570 }, typeof template === 'function' && template({ 25571 slideNumber: slideNum, 25572 numberOfSlides: numberOfSlides 25573 })), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(SlideWrapper, { 25574 ref: slideWrapperRef, 25575 padding: 2, 25576 color: textColor 25577 }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_hooks_use_slide__WEBPACK_IMPORTED_MODULE_2__["SlideContext"].Provider, { 25578 value: value 25579 }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(InnerSlideRef, { 25580 ref: contentRef 25581 }, children)))); 25582}; 25583 25584Slide.propTypes = { 25585 backgroundColor: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string, 25586 backgroundImage: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string, 25587 backgroundOpacity: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.number, 25588 backgroundPosition: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string, 25589 backgroundRepeat: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string, 25590 backgroundSize: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string, 25591 children: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.node.isRequired, 25592 scaleRatio: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.number, 25593 slideNum: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.number, 25594 template: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.func, 25595 textColor: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.string, 25596 transitionEffect: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.shape({ 25597 from: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.object, 25598 enter: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.object, 25599 leave: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.object 25600 }), prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.oneOf(['fade', 'slide', 'none'])]) 25601}; 25602Slide.defaultProps = { 25603 textColor: 'primary', 25604 backgroundColor: 'tertiary', 25605 backgroundOpacity: 1, 25606 backgroundPosition: 'center', 25607 backgroundRepeat: 'no-repeat', 25608 backgroundSize: 'cover' 25609}; 25610/* harmony default export */ __webpack_exports__["default"] = (Slide); 25611 25612/***/ }), 25613
vendor: 1,835 bytes, lines 25614-25651
25614/***/ "./node_modules/spectacle/es/components/stepper.js": 25615/*!*********************************************************!*\ 25616 !*** ./node_modules/spectacle/es/components/stepper.js ***! 25617 \*********************************************************/ 25618/*! exports provided: default */ 25619/***/ (function(module, __webpack_exports__, __webpack_require__) { 25620 25621"use strict"; 25622__webpack_require__.r(__webpack_exports__); 25623/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js"); 25624/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 25625/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js"); 25626/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__); 25627/* harmony import */ var _hooks_use_slide__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../hooks/use-slide */ "./node_modules/spectacle/es/hooks/use-slide.js"); 25628 25629 25630 25631 25632var Stepper = function Stepper(_ref) { 25633 var render = _ref.children, 25634 values = _ref.values, 25635 defaultValue = _ref.defaultValue; 25636 25637 var _React$useContext = react__WEBPACK_IMPORTED_MODULE_0__["useContext"](_hooks_use_slide__WEBPACK_IMPORTED_MODULE_2__["SlideContext"]), 25638 step = _React$useContext.state.currentSlideElement; 25639 25640 var value = step === -1 ? defaultValue : values[step]; 25641 return render(value, step); 25642}; 25643 25644Stepper.propTypes = { 25645 values: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.array.isRequired, 25646 defaultValue: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.array 25647}; 25648/* harmony default export */ __webpack_exports__["default"] = (Stepper); 25649 25650/***/ }), 25651
vendor: 4,266 bytes, lines 25652-25716
25652/***/ "./node_modules/spectacle/es/components/table.js": 25653/*!*******************************************************!*\ 25654 !*** ./node_modules/spectacle/es/components/table.js ***! 25655 \*******************************************************/ 25656/*! exports provided: Table, TableCell, TableRow, TableHeader, TableBody */ 25657/***/ (function(module, __webpack_exports__, __webpack_require__) { 25658 25659"use strict"; 25660__webpack_require__.r(__webpack_exports__); 25661/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Table", function() { return Table; }); 25662/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TableCell", function() { return TableCell; }); 25663/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TableRow", function() { return TableRow; }); 25664/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TableHeader", function() { return TableHeader; }); 25665/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TableBody", function() { return TableBody; }); 25666/* harmony import */ var styled_components__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js"); 25667/* harmony import */ var styled_system__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! styled-system */ "./node_modules/styled-system/dist/index.esm.js"); 25668 25669 25670var Table = Object(styled_components__WEBPACK_IMPORTED_MODULE_0__["default"])('table')(Object(styled_system__WEBPACK_IMPORTED_MODULE_1__["compose"])(styled_system__WEBPACK_IMPORTED_MODULE_1__["color"], styled_system__WEBPACK_IMPORTED_MODULE_1__["typography"], styled_system__WEBPACK_IMPORTED_MODULE_1__["space"], styled_system__WEBPACK_IMPORTED_MODULE_1__["border"], styled_system__WEBPACK_IMPORTED_MODULE_1__["layout"])); 25671Table.defaultProps = { 25672 color: 'primary', 25673 fontFamily: 'text', 25674 fontSize: 'text', 25675 textAlign: 'left', 25676 margin: 'listMargin', 25677 width: 1 25678}; 25679var TableHeader = Object(styled_components__WEBPACK_IMPORTED_MODULE_0__["default"])('thead')(Object(styled_system__WEBPACK_IMPORTED_MODULE_1__["compose"])(styled_system__WEBPACK_IMPORTED_MODULE_1__["color"], styled_system__WEBPACK_IMPORTED_MODULE_1__["typography"], styled_system__WEBPACK_IMPORTED_MODULE_1__["space"], styled_system__WEBPACK_IMPORTED_MODULE_1__["border"], styled_system__WEBPACK_IMPORTED_MODULE_1__["layout"])); 25680TableHeader.defaultProps = { 25681 color: 'primary', 25682 fontFamily: 'text', 25683 fontSize: 'text', 25684 fontWeight: 'bold', 25685 textAlign: 'left', 25686 margin: 'listMargin' 25687}; 25688var TableBody = Object(styled_components__WEBPACK_IMPORTED_MODULE_0__["default"])('tbody')(Object(styled_system__WEBPACK_IMPORTED_MODULE_1__["compose"])(styled_system__WEBPACK_IMPORTED_MODULE_1__["color"], styled_system__WEBPACK_IMPORTED_MODULE_1__["typography"], styled_system__WEBPACK_IMPORTED_MODULE_1__["space"], styled_system__WEBPACK_IMPORTED_MODULE_1__["border"], styled_system__WEBPACK_IMPORTED_MODULE_1__["layout"])); 25689TableBody.defaultProps = { 25690 color: 'primary', 25691 fontFamily: 'text', 25692 fontSize: 'text', 25693 textAlign: 'left', 25694 margin: 'listMargin', 25695 width: 1 25696}; 25697var TableRow = Object(styled_components__WEBPACK_IMPORTED_MODULE_0__["default"])('tr')(Object(styled_system__WEBPACK_IMPORTED_MODULE_1__["compose"])(styled_system__WEBPACK_IMPORTED_MODULE_1__["color"], styled_system__WEBPACK_IMPORTED_MODULE_1__["typography"], styled_system__WEBPACK_IMPORTED_MODULE_1__["space"], styled_system__WEBPACK_IMPORTED_MODULE_1__["border"], styled_system__WEBPACK_IMPORTED_MODULE_1__["layout"])); 25698TableRow.defaultProps = { 25699 color: 'primary', 25700 fontFamily: 'text', 25701 fontSize: 'text', 25702 textAlign: 'left', 25703 margin: 'listMargin' 25704}; 25705var TableCell = Object(styled_components__WEBPACK_IMPORTED_MODULE_0__["default"])('td')(Object(styled_system__WEBPACK_IMPORTED_MODULE_1__["compose"])(styled_system__WEBPACK_IMPORTED_MODULE_1__["color"], styled_system__WEBPACK_IMPORTED_MODULE_1__["typography"], styled_system__WEBPACK_IMPORTED_MODULE_1__["space"], styled_system__WEBPACK_IMPORTED_MODULE_1__["border"], styled_system__WEBPACK_IMPORTED_MODULE_1__["layout"])); 25706TableCell.defaultProps = { 25707 color: 'primary', 25708 fontFamily: 'text', 25709 fontSize: 'text', 25710 textAlign: 'left', 25711 margin: 'listMargin' 25712}; 25713 25714 25715/***/ }), 25716
vendor: 6,780 bytes, lines 25717-25877
25717/***/ "./node_modules/spectacle/es/components/typography.js": 25718/*!************************************************************!*\ 25719 !*** ./node_modules/spectacle/es/components/typography.js ***! 25720 \************************************************************/ 25721/*! exports provided: Text, Heading, Quote, OrderedList, UnorderedList, ListItem, Link, CodeSpan */ 25722/***/ (function(module, __webpack_exports__, __webpack_require__) { 25723 25724"use strict"; 25725__webpack_require__.r(__webpack_exports__); 25726/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Text", function() { return Text; }); 25727/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Heading", function() { return Heading; }); 25728/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Quote", function() { return Quote; }); 25729/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "OrderedList", function() { return OrderedList; }); 25730/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "UnorderedList", function() { return UnorderedList; }); 25731/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ListItem", function() { return ListItem; }); 25732/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Link", function() { return Link; }); 25733/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CodeSpan", function() { return CodeSpan; }); 25734/* harmony import */ var styled_components__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! styled-components */ "./node_modules/styled-components/dist/styled-components.browser.esm.js"); 25735/* harmony import */ var styled_system__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! styled-system */ "./node_modules/styled-system/dist/index.esm.js"); 25736function _templateObject() { 25737 var data = _taggedTemplateLiteral(["\n border-left: 1px solid\n ", ";\n\n div {\n margin: 0;\n }\n"]); 25738 25739 _templateObject = function _templateObject() { 25740 return data; 25741 }; 25742 25743 return data; 25744} 25745 25746function _taggedTemplateLiteral(strings, raw) { 25747 if (!raw) { 25748 raw = strings.slice(0); 25749 } 25750 25751 return Object.freeze(Object.defineProperties(strings, { 25752 raw: { 25753 value: Object.freeze(raw) 25754 } 25755 })); 25756} 25757 25758function ownKeys(object, enumerableOnly) { 25759 var keys = Object.keys(object); 25760 25761 if (Object.getOwnPropertySymbols) { 25762 var symbols = Object.getOwnPropertySymbols(object); 25763 if (enumerableOnly) symbols = symbols.filter(function (sym) { 25764 return Object.getOwnPropertyDescriptor(object, sym).enumerable; 25765 }); 25766 keys.push.apply(keys, symbols); 25767 } 25768 25769 return keys; 25770} 25771 25772function _objectSpread(target) { 25773 for (var i = 1; i < arguments.length; i++) { 25774 var source = arguments[i] != null ? arguments[i] : {}; 25775 25776 if (i % 2) { 25777 ownKeys(Object(source), true).forEach(function (key) { 25778 _defineProperty(target, key, source[key]); 25779 }); 25780 } else if (Object.getOwnPropertyDescriptors) { 25781 Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); 25782 } else { 25783 ownKeys(Object(source)).forEach(function (key) { 25784 Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); 25785 }); 25786 } 25787 } 25788 25789 return target; 25790} 25791 25792function _defineProperty(obj, key, value) { 25793 if (key in obj) { 25794 Object.defineProperty(obj, key, { 25795 value: value, 25796 enumerable: true, 25797 configurable: true, 25798 writable: true 25799 }); 25800 } else { 25801 obj[key] = value; 25802 } 25803 25804 return obj; 25805} 25806 25807 25808 25809var decoration = Object(styled_system__WEBPACK_IMPORTED_MODULE_1__["system"])({ 25810 textDecoration: true 25811}); 25812var Text = Object(styled_components__WEBPACK_IMPORTED_MODULE_0__["default"])('div')(Object(styled_system__WEBPACK_IMPORTED_MODULE_1__["compose"])(styled_system__WEBPACK_IMPORTED_MODULE_1__["color"], styled_system__WEBPACK_IMPORTED_MODULE_1__["typography"], styled_system__WEBPACK_IMPORTED_MODULE_1__["space"])); 25813Text.defaultProps = { 25814 color: 'primary', 25815 fontFamily: 'text', 25816 fontSize: 'text', 25817 textAlign: 'left', 25818 padding: 0, 25819 margin: 0 25820}; 25821var CodeSpan = Object(styled_components__WEBPACK_IMPORTED_MODULE_0__["default"])('code')(Object(styled_system__WEBPACK_IMPORTED_MODULE_1__["compose"])(styled_system__WEBPACK_IMPORTED_MODULE_1__["color"], styled_system__WEBPACK_IMPORTED_MODULE_1__["typography"], styled_system__WEBPACK_IMPORTED_MODULE_1__["space"])); 25822CodeSpan.defaultProps = { 25823 fontFamily: 'monospace', 25824 fontSize: 'text' 25825}; 25826var Link = Object(styled_components__WEBPACK_IMPORTED_MODULE_0__["default"])('a')(Object(styled_system__WEBPACK_IMPORTED_MODULE_1__["compose"])(styled_system__WEBPACK_IMPORTED_MODULE_1__["color"], styled_system__WEBPACK_IMPORTED_MODULE_1__["typography"], styled_system__WEBPACK_IMPORTED_MODULE_1__["space"], decoration)); 25827Link.defaultProps = _objectSpread({}, Text.defaultProps, { 25828 textDecoration: 'underline', 25829 color: 'quaternary' 25830}); 25831var Heading = Object(styled_components__WEBPACK_IMPORTED_MODULE_0__["default"])(Text)({}); 25832Heading.defaultProps = { 25833 color: 'secondary', 25834 fontFamily: 'header', 25835 fontSize: 'h1', 25836 fontWeight: 'bold', 25837 textAlign: 'center', 25838 margin: 1 25839}; 25840var Quote = Object(styled_components__WEBPACK_IMPORTED_MODULE_0__["default"])(Text)(_templateObject(), function (_ref) { 25841 var theme = _ref.theme, 25842 borderColor = _ref.borderColor; 25843 return borderColor || theme.colors.secondary; 25844}); 25845Quote.defaultProps = { 25846 color: 'primary', 25847 fontFamily: 'text', 25848 fontSize: 'text', 25849 textAlign: 'left', 25850 fontStyle: 'italic', 25851 padding: '16px 0 16px 8px', 25852 margin: 0 25853}; 25854var OrderedList = Object(styled_components__WEBPACK_IMPORTED_MODULE_0__["default"])('ol')(Object(styled_system__WEBPACK_IMPORTED_MODULE_1__["compose"])(styled_system__WEBPACK_IMPORTED_MODULE_1__["color"], styled_system__WEBPACK_IMPORTED_MODULE_1__["typography"], styled_system__WEBPACK_IMPORTED_MODULE_1__["space"])); 25855OrderedList.defaultProps = { 25856 color: 'primary', 25857 fontFamily: 'text', 25858 fontSize: 'text', 25859 textAlign: 'left', 25860 margin: 0 25861}; 25862var UnorderedList = Object(styled_components__WEBPACK_IMPORTED_MODULE_0__["default"])('ul')(Object(styled_system__WEBPACK_IMPORTED_MODULE_1__["compose"])(styled_system__WEBPACK_IMPORTED_MODULE_1__["color"], styled_system__WEBPACK_IMPORTED_MODULE_1__["typography"], styled_system__WEBPACK_IMPORTED_MODULE_1__["space"])); 25863UnorderedList.defaultProps = { 25864 color: 'primary', 25865 fontFamily: 'text', 25866 fontSize: 'text', 25867 textAlign: 'left', 25868 margin: 0 25869}; 25870var ListItem = Object(styled_components__WEBPACK_IMPORTED_MODULE_0__["default"])('li')(Object(styled_system__WEBPACK_IMPORTED_MODULE_1__["compose"])(styled_system__WEBPACK_IMPORTED_MODULE_1__["color"], styled_system__WEBPACK_IMPORTED_MODULE_1__["typography"], styled_system__WEBPACK_IMPORTED_MODULE_1__["space"])); 25871ListItem.defaultProps = { 25872 margin: 0 25873}; 25874 25875 25876/***/ }), 25877
vendor: 3,400 bytes, lines 25878-25959
25878/***/ "./node_modules/spectacle/es/hooks/use-autofill-height.js": 25879/*!****************************************************************!*\ 25880 !*** ./node_modules/spectacle/es/hooks/use-autofill-height.js ***! 25881 \****************************************************************/ 25882/*! exports provided: default */ 25883/***/ (function(module, __webpack_exports__, __webpack_require__) { 25884 25885"use strict"; 25886__webpack_require__.r(__webpack_exports__); 25887/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return useAutofillHeight; }); 25888/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js"); 25889/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 25890 25891 25892var getNodeFullHeight = function getNodeFullHeight(node) { 25893 var style = getComputedStyle(node); 25894 var nextSiblingMarginTop = 0; 25895 25896 if (node.nextSibling) { 25897 nextSiblingMarginTop = parseFloat(getComputedStyle(node.nextSibling).marginTop); 25898 } 25899 25900 var height = node.offsetHeight + parseFloat(style.marginTop) - nextSiblingMarginTop + parseFloat(style.marginBottom); 25901 return height; 25902}; 25903 25904var isCurrentNodeAutoFill = function isCurrentNodeAutoFill(current) { 25905 return current.classList.contains('spectacle-auto-height-fill') || current.tagName.toLowerCase().includes('pre') && current.childNodes && current.childNodes[0].classList.contains('spectacle-auto-height-fill'); 25906}; 25907 25908function useAutofillHeight(_ref) { 25909 var slideWrapperRef = _ref.slideWrapperRef, 25910 contentRef = _ref.contentRef, 25911 templateRef = _ref.templateRef, 25912 slideHeight = _ref.slideHeight; 25913 react__WEBPACK_IMPORTED_MODULE_0__["useLayoutEffect"](function () { 25914 if (!contentRef.current.hasChildNodes()) { 25915 return; 25916 } 25917 25918 var childNodes = [].slice.call(contentRef.current.childNodes); 25919 var metrics = childNodes.reduce(function (memo, current) { 25920 var currentNodeIsAutoFill = isCurrentNodeAutoFill(current); 25921 var nodeHeight = currentNodeIsAutoFill ? 0 : getNodeFullHeight(current); 25922 return { 25923 totalHeight: nodeHeight + memo.totalHeight, 25924 numberAutoFills: currentNodeIsAutoFill ? memo.numberAutoFills + 1 : memo.numberAutoFills 25925 }; 25926 }, { 25927 totalHeight: 0, 25928 autoFillsHeight: 0, 25929 numberAutoFills: 0 25930 }); 25931 25932 if (templateRef.current.hasChildNodes()) { 25933 var templateChildNodes = [].slice.call(templateRef.current.childNodes); 25934 metrics.templateHeight = templateChildNodes.reduce(function (memo, current) { 25935 return memo + getNodeFullHeight(current); 25936 }, 0); 25937 } else { 25938 metrics.templateHeight = 0; 25939 } 25940 25941 var slideWrapperStyle = getComputedStyle(slideWrapperRef.current); 25942 var totalSlideSpace = slideHeight - (parseFloat(slideWrapperStyle.paddingTop) + parseFloat(slideWrapperStyle.paddingBottom)); 25943 var emptySpace = totalSlideSpace - (metrics.totalHeight + metrics.templateHeight); 25944 childNodes.forEach(function (node) { 25945 if (!isCurrentNodeAutoFill(node)) { 25946 return; 25947 } 25948 25949 if (node.childNodes[0] && node.childNodes[0].tagName.toLowerCase() === 'pre') { 25950 node = node.childNodes[0]; 25951 } 25952 25953 node.style.maxHeight = "".concat(emptySpace / metrics.numberAutoFills, "px"); 25954 }); 25955 }, [slideWrapperRef, contentRef, templateRef, slideHeight]); 25956} 25957 25958/***/ }), 25959
vendor: 5,227 bytes, lines 25960-26133
25960/***/ "./node_modules/spectacle/es/hooks/use-deck.js": 25961/*!*****************************************************!*\ 25962 !*** ./node_modules/spectacle/es/hooks/use-deck.js ***! 25963 \*****************************************************/ 25964/*! exports provided: DeckContext, default */ 25965/***/ (function(module, __webpack_exports__, __webpack_require__) { 25966 25967"use strict"; 25968__webpack_require__.r(__webpack_exports__); 25969/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DeckContext", function() { return DeckContext; }); 25970/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js"); 25971/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 25972function _slicedToArray(arr, i) { 25973 return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); 25974} 25975 25976function _nonIterableRest() { 25977 throw new TypeError("Invalid attempt to destructure non-iterable instance"); 25978} 25979 25980function _iterableToArrayLimit(arr, i) { 25981 if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { 25982 return; 25983 } 25984 25985 var _arr = []; 25986 var _n = true; 25987 var _d = false; 25988 var _e = undefined; 25989 25990 try { 25991 for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { 25992 _arr.push(_s.value); 25993 25994 if (i && _arr.length === i) break; 25995 } 25996 } catch (err) { 25997 _d = true; 25998 _e = err; 25999 } finally { 26000 try { 26001 if (!_n && _i["return"] != null) _i["return"](); 26002 } finally { 26003 if (_d) throw _e; 26004 } 26005 } 26006 26007 return _arr; 26008} 26009 26010function _arrayWithHoles(arr) { 26011 if (Array.isArray(arr)) return arr; 26012} 26013 26014function ownKeys(object, enumerableOnly) { 26015 var keys = Object.keys(object); 26016 26017 if (Object.getOwnPropertySymbols) { 26018 var symbols = Object.getOwnPropertySymbols(object); 26019 if (enumerableOnly) symbols = symbols.filter(function (sym) { 26020 return Object.getOwnPropertyDescriptor(object, sym).enumerable; 26021 }); 26022 keys.push.apply(keys, symbols); 26023 } 26024 26025 return keys; 26026} 26027 26028function _objectSpread(target) { 26029 for (var i = 1; i < arguments.length; i++) { 26030 var source = arguments[i] != null ? arguments[i] : {}; 26031 26032 if (i % 2) { 26033 ownKeys(Object(source), true).forEach(function (key) { 26034 _defineProperty(target, key, source[key]); 26035 }); 26036 } else if (Object.getOwnPropertyDescriptors) { 26037 Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); 26038 } else { 26039 ownKeys(Object(source)).forEach(function (key) { 26040 Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); 26041 }); 26042 } 26043 } 26044 26045 return target; 26046} 26047 26048function _defineProperty(obj, key, value) { 26049 if (key in obj) { 26050 Object.defineProperty(obj, key, { 26051 value: value, 26052 enumerable: true, 26053 configurable: true, 26054 writable: true 26055 }); 26056 } else { 26057 obj[key] = value; 26058 } 26059 26060 return obj; 26061} 26062 26063 26064/** 26065 * Performs logic operations for all of the deck domain level. 26066 * Note: Immediate is a React-Spring property that we pass to the animations 26067 * essentially it skips animations. 26068 */ 26069 26070var DeckContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createContext(); 26071 26072function useDeck(initialState) { 26073 function reducer(state, action) { 26074 switch (action.type) { 26075 case 'GO_TO_SLIDE': 26076 { 26077 var newState = _objectSpread({}, state, { 26078 currentSlideElement: action.payload.slideElementNumber, 26079 currentSlide: action.payload.slideNumber, 26080 immediate: action.payload.immediate, 26081 immediateElement: false, 26082 reverseDirection: action.payload.reverseDirection, 26083 presenterMode: action.payload.presenterMode, 26084 overviewMode: action.payload.overviewMode, 26085 exportMode: action.payload.exportMode, 26086 printMode: action.payload.printMode, 26087 resolvedInitialUrl: true 26088 }); 26089 26090 return newState; 26091 } 26092 26093 case 'SET_NOTES': 26094 { 26095 return _objectSpread({}, state, { 26096 notes: _objectSpread({}, state.notes, _defineProperty({}, action.payload.slideNumber, action.payload.notes)) 26097 }); 26098 } 26099 26100 case 'TOGGLE_MODE': 26101 { 26102 return _objectSpread({}, state, _defineProperty({}, action.payload.mode, !state[action.payload.mode])); 26103 } 26104 26105 default: 26106 return _objectSpread({}, state); 26107 } 26108 } 26109 26110 var _React$useReducer = react__WEBPACK_IMPORTED_MODULE_0___default.a.useReducer(reducer, initialState), 26111 _React$useReducer2 = _slicedToArray(_React$useReducer, 2), 26112 state = _React$useReducer2[0], 26113 dispatch = _React$useReducer2[1]; // derived state 26114 26115 26116 var currentNotes = react__WEBPACK_IMPORTED_MODULE_0___default.a.useMemo(function () { 26117 return state.notes[state.currentSlide]; 26118 }, [state.currentSlide, state.notes]); 26119 var allState = react__WEBPACK_IMPORTED_MODULE_0___default.a.useMemo(function () { 26120 return _objectSpread({}, state, { 26121 currentNotes: currentNotes 26122 }); 26123 }, [currentNotes, state]); 26124 return { 26125 state: allState, 26126 dispatch: dispatch 26127 }; 26128} 26129 26130/* harmony default export */ __webpack_exports__["default"] = (useDeck); 26131 26132/***/ }), 26133
vendor: 1,616 bytes, lines 26134-26169
26134/***/ "./node_modules/spectacle/es/hooks/use-full-screen.js": 26135/*!************************************************************!*\ 26136 !*** ./node_modules/spectacle/es/hooks/use-full-screen.js ***! 26137 \************************************************************/ 26138/*! exports provided: useToggleFullScreen */ 26139/***/ (function(module, __webpack_exports__, __webpack_require__) { 26140 26141"use strict"; 26142__webpack_require__.r(__webpack_exports__); 26143/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "useToggleFullScreen", function() { return useToggleFullScreen; }); 26144/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js"); 26145/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 26146 26147var useToggleFullScreen = function useToggleFullScreen() { 26148 return react__WEBPACK_IMPORTED_MODULE_0___default.a.useCallback(function () { 26149 // https://developer.mozilla.org/en-US/docs/Web/API/Element/requestFullScreen 26150 if ('requestFullscreen' in document.documentElement) { 26151 // Chrome/FF 26152 if (!document.fullscreenElement) { 26153 document.documentElement.requestFullscreen(); 26154 } else { 26155 document.exitFullscreen(); 26156 } 26157 } else if ('webkitRequestFullScreen' in document.documentElement) { 26158 // Safari still doesn't support standard. 26159 if (!document.webkitIsFullScreen) { 26160 document.documentElement.webkitRequestFullScreen(); 26161 } else { 26162 document.webkitCancelFullScreen(); 26163 } 26164 } 26165 }, []); 26166}; 26167 26168/***/ }), 26169
vendor: 4,019 bytes, lines 26170-26279
26170/***/ "./node_modules/spectacle/es/hooks/use-keyboard-controls.js": 26171/*!******************************************************************!*\ 26172 !*** ./node_modules/spectacle/es/hooks/use-keyboard-controls.js ***! 26173 \******************************************************************/ 26174/*! exports provided: default */ 26175/***/ (function(module, __webpack_exports__, __webpack_require__) { 26176 26177"use strict"; 26178__webpack_require__.r(__webpack_exports__); 26179/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js"); 26180/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 26181/* harmony import */ var _utils_debounce__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/debounce */ "./node_modules/spectacle/es/utils/debounce.js"); 26182/* harmony import */ var _use_full_screen__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./use-full-screen */ "./node_modules/spectacle/es/hooks/use-full-screen.js"); 26183/* harmony import */ var _utils_detect_platform__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/detect-platform */ "./node_modules/spectacle/es/utils/detect-platform.js"); 26184 26185 26186 26187 26188 26189var useKeyboardControls = function useKeyboardControls(_ref) { 26190 var _ref$keyboardControls = _ref.keyboardControls, 26191 keyboardControls = _ref$keyboardControls === void 0 ? 'arrows' : _ref$keyboardControls, 26192 navigateToNext = _ref.navigateToNext, 26193 navigateToPrevious = _ref.navigateToPrevious, 26194 toggleMode = _ref.toggleMode; 26195 var keyPressCount = react__WEBPACK_IMPORTED_MODULE_0___default.a.useRef(0); 26196 var toggleFullScreen = Object(_use_full_screen__WEBPACK_IMPORTED_MODULE_2__["useToggleFullScreen"])(); 26197 react__WEBPACK_IMPORTED_MODULE_0___default.a.useEffect(function () { 26198 // Keep track of the number of next slide presses for debounce 26199 // Create ref for debounceing function 26200 var debouncedDispatch = Object(_utils_debounce__WEBPACK_IMPORTED_MODULE_1__["default"])(function () { 26201 var immediate = keyPressCount.current !== 1; 26202 navigateToNext({ 26203 immediate: immediate 26204 }); 26205 keyPressCount.current = 0; 26206 }, 200); 26207 26208 function handleKeyDown(e) { 26209 if (keyboardControls === 'arrows') { 26210 if (e.key === 'ArrowLeft') { 26211 navigateToPrevious(); 26212 } 26213 26214 if (e.key === 'ArrowRight') { 26215 keyPressCount.current++; 26216 debouncedDispatch(); 26217 } 26218 } 26219 26220 if (keyboardControls === 'space') { 26221 if (e.code === 'Space') { 26222 keyPressCount.current++; 26223 debouncedDispatch(); 26224 e.preventDefault(); 26225 } 26226 } 26227 26228 if (e.altKey && Object(_utils_detect_platform__WEBPACK_IMPORTED_MODULE_3__["isMacOS"])()) { 26229 var key = e.key.toLowerCase(); 26230 26231 switch (key) { 26232 case 'ø': 26233 toggleMode('overviewMode'); 26234 break; 26235 26236 case 'Ï': 26237 toggleMode('presenterMode'); 26238 break; 26239 26240 case 'Æ': 26241 toggleFullScreen(); 26242 break; 26243 26244 default: 26245 null; 26246 } 26247 } else if (e.altKey && (Object(_utils_detect_platform__WEBPACK_IMPORTED_MODULE_3__["isWindows"])() || Object(_utils_detect_platform__WEBPACK_IMPORTED_MODULE_3__["isLinux"])())) { 26248 var _key = e.key.toUpperCase(); 26249 26250 switch (_key) { 26251 case 'O': 26252 toggleMode('overviewMode'); 26253 break; 26254 26255 case 'P': 26256 toggleMode('presenterMode'); 26257 break; 26258 26259 case 'F': 26260 toggleFullScreen(); 26261 break; 26262 26263 default: 26264 null; 26265 } 26266 } 26267 } 26268 26269 window.addEventListener('keydown', handleKeyDown); 26270 return function () { 26271 window.removeEventListener('keydown', handleKeyDown); 26272 }; 26273 }, [keyboardControls, navigateToNext, navigateToPrevious, toggleFullScreen, toggleMode]); 26274}; 26275 26276/* harmony default export */ __webpack_exports__["default"] = (useKeyboardControls); 26277 26278/***/ }), 26279
vendor: 6,002 bytes, lines 26280-26462
26280/***/ "./node_modules/spectacle/es/hooks/use-presentation.js": 26281/*!*************************************************************!*\ 26282 !*** ./node_modules/spectacle/es/hooks/use-presentation.js ***! 26283 \*************************************************************/ 26284/*! exports provided: default, MSG_SLIDE_STATE_CHANGE */ 26285/***/ (function(module, __webpack_exports__, __webpack_require__) { 26286 26287"use strict"; 26288__webpack_require__.r(__webpack_exports__); 26289/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MSG_SLIDE_STATE_CHANGE", function() { return MSG_SLIDE_STATE_CHANGE; }); 26290/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js"); 26291/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 26292function _toConsumableArray(arr) { 26293 return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); 26294} 26295 26296function _nonIterableSpread() { 26297 throw new TypeError("Invalid attempt to spread non-iterable instance"); 26298} 26299 26300function _iterableToArray(iter) { 26301 if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); 26302} 26303 26304function _arrayWithoutHoles(arr) { 26305 if (Array.isArray(arr)) { 26306 for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { 26307 arr2[i] = arr[i]; 26308 } 26309 26310 return arr2; 26311 } 26312} 26313 26314function _slicedToArray(arr, i) { 26315 return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); 26316} 26317 26318function _nonIterableRest() { 26319 throw new TypeError("Invalid attempt to destructure non-iterable instance"); 26320} 26321 26322function _iterableToArrayLimit(arr, i) { 26323 if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { 26324 return; 26325 } 26326 26327 var _arr = []; 26328 var _n = true; 26329 var _d = false; 26330 var _e = undefined; 26331 26332 try { 26333 for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { 26334 _arr.push(_s.value); 26335 26336 if (i && _arr.length === i) break; 26337 } 26338 } catch (err) { 26339 _d = true; 26340 _e = err; 26341 } finally { 26342 try { 26343 if (!_n && _i["return"] != null) _i["return"](); 26344 } finally { 26345 if (_d) throw _e; 26346 } 26347 } 26348 26349 return _arr; 26350} 26351 26352function _arrayWithHoles(arr) { 26353 if (Array.isArray(arr)) return arr; 26354} 26355 26356 26357 26358function getReceiver() { 26359 return window.navigator && window.navigator.presentation && window.navigator.presentation.receiver; 26360} 26361 26362function usePresentation() { 26363 var _useState = Object(react__WEBPACK_IMPORTED_MODULE_0__["useState"])(null), 26364 _useState2 = _slicedToArray(_useState, 2), 26365 connection = _useState2[0], 26366 setConnection = _useState2[1]; 26367 26368 var _useState3 = Object(react__WEBPACK_IMPORTED_MODULE_0__["useState"])([]), 26369 _useState4 = _slicedToArray(_useState3, 2), 26370 errors = _useState4[0], 26371 setErrors = _useState4[1]; 26372 26373 var requestRef = Object(react__WEBPACK_IMPORTED_MODULE_0__["useRef"])(null); // Open to suggestions for better error handling 26374 26375 var addError = function addError(e) { 26376 return setErrors(function (es) { 26377 return [].concat(_toConsumableArray(es), [e]); 26378 }); 26379 }; // Create a presentation request and store it as a ref 26380 26381 26382 Object(react__WEBPACK_IMPORTED_MODULE_0__["useEffect"])(function () { 26383 if (!window.PresentationRequest) { 26384 addError(new Error('Browser does not support Presentation API')); 26385 } 26386 26387 return terminateConnection; 26388 }, [connection, terminateConnection]); // Add a message handler 26389 26390 var addMessageHandler = Object(react__WEBPACK_IMPORTED_MODULE_0__["useCallback"])(function (handler) { 26391 var receiver = getReceiver(); 26392 26393 if (receiver) { 26394 var handleConnectionList = function handleConnectionList(list) { 26395 list.connections.forEach(function (listConnection) { 26396 var oldHandler = listConnection.onmessage || function () {}; 26397 26398 listConnection.onmessage = function (event) { 26399 var parsedData = JSON.parse(event.data); 26400 handler(parsedData); 26401 oldHandler(event); 26402 }; 26403 }); 26404 }; 26405 26406 receiver.connectionList.then(handleConnectionList).catch(addError); 26407 } 26408 }, []); 26409 var terminateConnection = Object(react__WEBPACK_IMPORTED_MODULE_0__["useCallback"])(function () { 26410 if (connection) { 26411 connection.terminate(); 26412 setConnection(null); 26413 } 26414 }, [connection]); // Opens the display selection dialog box 26415 26416 var startConnection = Object(react__WEBPACK_IMPORTED_MODULE_0__["useCallback"])(function (urlParams) { 26417 requestRef.current = new PresentationRequest(["/?".concat(urlParams)]); 26418 var request = requestRef && requestRef.current; 26419 26420 if (request) { 26421 request.start().then(function (requestConnection) { 26422 requestConnection.onclose = function () { 26423 return setConnection(null); 26424 }; // Detect user closing presentation window 26425 26426 26427 setConnection(requestConnection); 26428 }).catch(function (e) { 26429 return addError(new Error('User (probably) exited display selection dialog box', e)); 26430 }); 26431 } 26432 }, []); // Send a message from the controller to the presenter 26433 26434 var sendMessage = Object(react__WEBPACK_IMPORTED_MODULE_0__["useCallback"])(function (msg) { 26435 // This may throw if message isn't stringify-able 26436 try { 26437 if (connection) { 26438 connection.send(JSON.stringify(msg)); 26439 } else { 26440 addError(new Error('Cannot send message before starting a conection')); 26441 } 26442 } catch (e) { 26443 console.log('error', e); 26444 addError(e); 26445 } 26446 }, [connection]); 26447 return { 26448 startConnection: startConnection, 26449 terminateConnection: terminateConnection, 26450 sendMessage: sendMessage, 26451 errors: errors, 26452 addMessageHandler: addMessageHandler, 26453 isReceiver: Boolean(getReceiver()), 26454 isController: Boolean(connection) 26455 }; 26456} 26457 26458/* harmony default export */ __webpack_exports__["default"] = (usePresentation); 26459var MSG_SLIDE_STATE_CHANGE = 'MSG_SLIDE_STATE_CHANGE'; 26460 26461/***/ }), 26462
vendor: 3,596 bytes, lines 26463-26540
26463/***/ "./node_modules/spectacle/es/hooks/use-slide.js": 26464/*!******************************************************!*\ 26465 !*** ./node_modules/spectacle/es/hooks/use-slide.js ***! 26466 \******************************************************/ 26467/*! exports provided: SlideContext, SlideNextElementContext, default */ 26468/***/ (function(module, __webpack_exports__, __webpack_require__) { 26469 26470"use strict"; 26471__webpack_require__.r(__webpack_exports__); 26472/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SlideContext", function() { return SlideContext; }); 26473/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SlideNextElementContext", function() { return SlideNextElementContext; }); 26474/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js"); 26475/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 26476/* harmony import */ var _use_deck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./use-deck */ "./node_modules/spectacle/es/hooks/use-deck.js"); 26477/* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/constants */ "./node_modules/spectacle/es/utils/constants.js"); 26478 26479 26480 26481/** 26482 * Performs logic operations for all of the slide domain level. 26483 * slideElements are dynamic elements within the slide that may 26484 * appear/ move around etc. 26485 * If remaining elements in slide, these are brought in one by one. 26486 * If not, we tell the deck to take us to the next slide. 26487 * 26488 * Note: Immediate is a React-Spring property that we pass to the animations 26489 * essentially it skips animations. 26490 */ 26491// Initialise SlideContext. 26492 26493var SlideContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createContext(); 26494var SlideNextElementContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createContext(); 26495 26496function useSlide(slideNum) { 26497 // Gets state, dispatch and number of slides off DeckContext. 26498 var _React$useContext = react__WEBPACK_IMPORTED_MODULE_0___default.a.useContext(_use_deck__WEBPACK_IMPORTED_MODULE_1__["DeckContext"]), 26499 deckContextState = _React$useContext.state, 26500 deckContextDispatch = _React$useContext.dispatch, 26501 slideElementMap = _React$useContext.slideElementMap, 26502 numberOfSlides = _React$useContext.numberOfSlides; 26503 26504 if (slideNum === 'undefined') { 26505 throw new Error('Must provide slide number to useSlide. Provided undefined instead.'); 26506 } 26507 26508 var reverseDirection = deckContextState.reverseDirection, 26509 immediate = deckContextState.immediate; 26510 var slideElementsLength = slideElementMap[slideNum]; 26511 var isActiveSlide = deckContextState.currentSlide === slideNum; 26512 var setNotes = react__WEBPACK_IMPORTED_MODULE_0___default.a.useCallback(function (notes) { 26513 deckContextDispatch({ 26514 type: 'SET_NOTES', 26515 payload: { 26516 notes: notes, 26517 slideNumber: slideNum 26518 } 26519 }); 26520 }, [deckContextDispatch, slideNum]); 26521 var currentSlideElement = isActiveSlide ? deckContextState.currentSlideElement : _utils_constants__WEBPACK_IMPORTED_MODULE_2__["DEFAULT_SLIDE_ELEMENT_INDEX"]; 26522 return { 26523 state: { 26524 reverseDirection: reverseDirection, 26525 slideElementsLength: slideElementsLength, 26526 currentSlideElement: currentSlideElement, 26527 immediate: immediate, 26528 isActiveSlide: isActiveSlide, 26529 numberOfSlides: numberOfSlides 26530 }, 26531 actions: { 26532 setNotes: setNotes 26533 } 26534 }; 26535} 26536 26537/* harmony default export */ __webpack_exports__["default"] = (useSlide); 26538 26539/***/ }), 26540
vendor: 2,785 bytes, lines 26541-26618
26541/***/ "./node_modules/spectacle/es/hooks/use-touch-controls.js": 26542/*!***************************************************************!*\ 26543 !*** ./node_modules/spectacle/es/hooks/use-touch-controls.js ***! 26544 \***************************************************************/ 26545/*! exports provided: default */ 26546/***/ (function(module, __webpack_exports__, __webpack_require__) { 26547 26548"use strict"; 26549__webpack_require__.r(__webpack_exports__); 26550/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js"); 26551/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 26552 26553/** 26554 * Hook that navigates to next or previous slide when the user swipes 26555 * left or right in a touch device, where there is no keyboard. 26556 */ 26557 26558var useTouchControls = function useTouchControls(_ref) { 26559 var navigateToNext = _ref.navigateToNext, 26560 navigateToPrevious = _ref.navigateToPrevious; 26561 var touchId = react__WEBPACK_IMPORTED_MODULE_0___default.a.useRef(null); // To keep track of which touch started the swipe. 26562 26563 var startTouchX = react__WEBPACK_IMPORTED_MODULE_0___default.a.useRef(0); // Where the swipe started. 26564 26565 var threshold = 100; // Pixels the user must drag to trigger a slide swipe. 26566 26567 react__WEBPACK_IMPORTED_MODULE_0___default.a.useEffect(function () { 26568 /** 26569 * Keep track of which touch even we're following. 26570 */ 26571 function handleTouchStart(e) { 26572 if (touchId.current === null) { 26573 var touch = e.changedTouches[0]; 26574 touchId.current = touch.identifier; 26575 startTouchX.current = touch.clientX; 26576 } 26577 } 26578 /** 26579 * Only care about the touch we're tracking. 26580 * See how much the user swiped, if it's more than 26581 * the threshold, navigate to the previous or next slide. 26582 */ 26583 26584 26585 function handleTouchEnd(e) { 26586 var touchList = e.changedTouches; 26587 26588 for (var i = 0; i < touchList.length; i++) { 26589 var touch = touchList[i]; 26590 26591 if (touch.identifier === touchId.current) { 26592 touchId.current = null; 26593 var distance = touch.clientX - startTouchX.current; 26594 26595 if (distance > threshold) { 26596 navigateToPrevious(); 26597 } else if (distance < -threshold) { 26598 navigateToNext(); 26599 } 26600 26601 break; 26602 } 26603 } 26604 } 26605 26606 window.addEventListener('touchstart', handleTouchStart); 26607 window.addEventListener('touchend', handleTouchEnd); 26608 return function () { 26609 window.removeEventListener('touchstart', handleTouchStart); 26610 window.removeEventListener('touchend', handleTouchEnd); 26611 }; 26612 }, [navigateToNext, navigateToPrevious]); 26613}; 26614 26615/* harmony default export */ __webpack_exports__["default"] = (useTouchControls); 26616 26617/***/ }), 26618
vendor: 3,381 bytes, lines 26619-26707
26619/***/ "./node_modules/spectacle/es/hooks/use-transition-pipe.js": 26620/*!****************************************************************!*\ 26621 !*** ./node_modules/spectacle/es/hooks/use-transition-pipe.js ***! 26622 \****************************************************************/ 26623/*! exports provided: TransitionPipeContext, TransitionPipeProvider */ 26624/***/ (function(module, __webpack_exports__, __webpack_require__) { 26625 26626"use strict"; 26627__webpack_require__.r(__webpack_exports__); 26628/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TransitionPipeContext", function() { return TransitionPipeContext; }); 26629/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TransitionPipeProvider", function() { return TransitionPipeProvider; }); 26630/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js"); 26631/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 26632/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js"); 26633/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__); 26634/* harmony import */ var wonka__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! wonka */ "./node_modules/wonka/dist/wonka.es.js"); 26635function _slicedToArray(arr, i) { 26636 return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); 26637} 26638 26639function _nonIterableRest() { 26640 throw new TypeError("Invalid attempt to destructure non-iterable instance"); 26641} 26642 26643function _iterableToArrayLimit(arr, i) { 26644 if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { 26645 return; 26646 } 26647 26648 var _arr = []; 26649 var _n = true; 26650 var _d = false; 26651 var _e = undefined; 26652 26653 try { 26654 for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { 26655 _arr.push(_s.value); 26656 26657 if (i && _arr.length === i) break; 26658 } 26659 } catch (err) { 26660 _d = true; 26661 _e = err; 26662 } finally { 26663 try { 26664 if (!_n && _i["return"] != null) _i["return"](); 26665 } finally { 26666 if (_d) throw _e; 26667 } 26668 } 26669 26670 return _arr; 26671} 26672 26673function _arrayWithHoles(arr) { 26674 if (Array.isArray(arr)) return arr; 26675} 26676 26677 26678 26679 26680var TransitionPipeContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createContext"]({}); 26681 26682function TransitionPipeProvider(props) { 26683 var runTransition = react__WEBPACK_IMPORTED_MODULE_0__["useMemo"](function () { 26684 var _makeSubject = Object(wonka__WEBPACK_IMPORTED_MODULE_2__["makeSubject"])(), 26685 _makeSubject2 = _slicedToArray(_makeSubject, 2), 26686 transitionSource = _makeSubject2[0], 26687 nextTransition = _makeSubject2[1]; 26688 26689 Object(wonka__WEBPACK_IMPORTED_MODULE_2__["pipe"])(transitionSource, Object(wonka__WEBPACK_IMPORTED_MODULE_2__["subscribe"])(function (transition) { 26690 return transition.start(); 26691 })); 26692 return nextTransition; 26693 }, []); 26694 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](TransitionPipeContext.Provider, { 26695 value: { 26696 runTransition: runTransition 26697 } 26698 }, props.children); 26699} 26700 26701TransitionPipeProvider.propTypes = { 26702 children: prop_types__WEBPACK_IMPORTED_MODULE_1___default.a.node 26703}; 26704 26705 26706/***/ }), 26707
vendor: 14,788 bytes, lines 26708-27036
26708/***/ "./node_modules/spectacle/es/hooks/use-url-routing.js": 26709/*!************************************************************!*\ 26710 !*** ./node_modules/spectacle/es/hooks/use-url-routing.js ***! 26711 \************************************************************/ 26712/*! exports provided: default */ 26713/***/ (function(module, __webpack_exports__, __webpack_require__) { 26714 26715"use strict"; 26716__webpack_require__.r(__webpack_exports__); 26717/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return useUrlRouting; }); 26718/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js"); 26719/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 26720/* harmony import */ var history__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! history */ "./node_modules/history/esm/history.js"); 26721/* harmony import */ var query_string__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! query-string */ "./node_modules/query-string/index.js"); 26722/* harmony import */ var query_string__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(query_string__WEBPACK_IMPORTED_MODULE_2__); 26723/* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/constants */ "./node_modules/spectacle/es/utils/constants.js"); 26724function ownKeys(object, enumerableOnly) { 26725 var keys = Object.keys(object); 26726 26727 if (Object.getOwnPropertySymbols) { 26728 var symbols = Object.getOwnPropertySymbols(object); 26729 if (enumerableOnly) symbols = symbols.filter(function (sym) { 26730 return Object.getOwnPropertyDescriptor(object, sym).enumerable; 26731 }); 26732 keys.push.apply(keys, symbols); 26733 } 26734 26735 return keys; 26736} 26737 26738function _objectSpread(target) { 26739 for (var i = 1; i < arguments.length; i++) { 26740 var source = arguments[i] != null ? arguments[i] : {}; 26741 26742 if (i % 2) { 26743 ownKeys(Object(source), true).forEach(function (key) { 26744 _defineProperty(target, key, source[key]); 26745 }); 26746 } else if (Object.getOwnPropertyDescriptors) { 26747 Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); 26748 } else { 26749 ownKeys(Object(source)).forEach(function (key) { 26750 Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); 26751 }); 26752 } 26753 } 26754 26755 return target; 26756} 26757 26758function _defineProperty(obj, key, value) { 26759 if (key in obj) { 26760 Object.defineProperty(obj, key, { 26761 value: value, 26762 enumerable: true, 26763 configurable: true, 26764 writable: true 26765 }); 26766 } else { 26767 obj[key] = value; 26768 } 26769 26770 return obj; 26771} 26772 26773 26774 26775 26776 26777function useUrlRouting(options) { 26778 var dispatch = options.dispatch, 26779 slideElementMap = options.slideElementMap, 26780 currentSlide = options.currentSlide, 26781 currentSlideElement = options.currentSlideElement, 26782 currentPresenterMode = options.currentPresenterMode, 26783 currentOverviewMode = options.currentOverviewMode, 26784 currentExportMode = options.currentExportMode, 26785 currentPrintMode = options.currentPrintMode, 26786 loop = options.loop, 26787 animationsWhenGoingBack = options.animationsWhenGoingBack, 26788 onUrlChange = options.onUrlChange, 26789 customHistory = options.customHistory; 26790 var history = react__WEBPACK_IMPORTED_MODULE_0__["useRef"](customHistory || Object(history__WEBPACK_IMPORTED_MODULE_1__["createBrowserHistory"])()); 26791 var numberOfSlides = react__WEBPACK_IMPORTED_MODULE_0__["useMemo"](function () { 26792 return Object.getOwnPropertyNames(slideElementMap).length; 26793 }, [slideElementMap]); 26794 var countSlideElements = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](function (slideNumber) { 26795 return slideElementMap[slideNumber]; 26796 }, [slideElementMap]); 26797 var isSlideOutOfBounds = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](function (proposedSlideNumber) { 26798 return isNaN(proposedSlideNumber) || numberOfSlides - 1 < proposedSlideNumber; 26799 }, [numberOfSlides]); 26800 var isSlideElementOutOfBounds = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](function (proposedSlideElementNumber, slideElementsLength) { 26801 var val = isNaN(proposedSlideElementNumber) || proposedSlideElementNumber >= slideElementsLength || proposedSlideElementNumber < _utils_constants__WEBPACK_IMPORTED_MODULE_3__["DEFAULT_SLIDE_ELEMENT_INDEX"]; 26802 return val; 26803 }, []); 26804 var stateFromUrl = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](function (url) { 26805 var query = query_string__WEBPACK_IMPORTED_MODULE_2__["parse"](url); 26806 var immediate = Boolean(query.immediate); 26807 var presenterMode = Boolean(query.presenterMode); 26808 var exportMode = Boolean(query.exportMode); 26809 var printMode = Boolean(query.printMode); 26810 var overviewMode = Boolean(query.overviewMode); 26811 var proposedSlideNumber = parseInt(query.slide, 10); 26812 var proposedSlideElementNumber = parseInt(query.slideElement, 10); 26813 var slideNumber = isSlideOutOfBounds(proposedSlideNumber) ? _utils_constants__WEBPACK_IMPORTED_MODULE_3__["DEFAULT_SLIDE_INDEX"] : proposedSlideNumber; 26814 var slideElementsLength = countSlideElements(slideNumber); 26815 var slideElementNumber = isSlideElementOutOfBounds(proposedSlideElementNumber, slideElementsLength) ? _utils_constants__WEBPACK_IMPORTED_MODULE_3__["DEFAULT_SLIDE_ELEMENT_INDEX"] : proposedSlideElementNumber; 26816 26817 if (overviewMode && presenterMode) { 26818 throw new Error('Presenter Mode and Overview Mode cannot be used at the same time.'); 26819 } 26820 26821 return { 26822 immediate: immediate, 26823 presenterMode: presenterMode, 26824 overviewMode: overviewMode, 26825 proposedSlideNumber: proposedSlideNumber, 26826 proposedSlideElementNumber: proposedSlideElementNumber, 26827 slideNumber: slideNumber, 26828 slideElementNumber: slideElementNumber, 26829 exportMode: exportMode, 26830 printMode: printMode 26831 }; 26832 }, [countSlideElements, isSlideElementOutOfBounds, isSlideOutOfBounds]); 26833 var goToSlide = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](function (slideNumber) { 26834 var immediate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true; 26835 var qs = query_string__WEBPACK_IMPORTED_MODULE_2__["stringify"]({ 26836 presenterMode: currentPresenterMode || undefined, 26837 overviewMode: currentOverviewMode || undefined, 26838 exportMode: currentExportMode || undefined, 26839 immediate: immediate, 26840 slide: slideNumber, 26841 slideElement: _utils_constants__WEBPACK_IMPORTED_MODULE_3__["DEFAULT_SLIDE_ELEMENT_INDEX"], 26842 printMode: currentPrintMode || undefined 26843 }); 26844 history.current.push("?".concat(qs)); 26845 }, [currentPresenterMode, currentOverviewMode, currentExportMode, currentPrintMode]); 26846 var onHistoryChange = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](function () { 26847 var _stateFromUrl = stateFromUrl(window.location.search), 26848 slideNumber = _stateFromUrl.slideNumber, 26849 slideElementNumber = _stateFromUrl.slideElementNumber, 26850 proposedSlideNumber = _stateFromUrl.proposedSlideNumber, 26851 proposedSlideElementNumber = _stateFromUrl.proposedSlideElementNumber, 26852 presenterMode = _stateFromUrl.presenterMode, 26853 overviewMode = _stateFromUrl.overviewMode, 26854 immediate = _stateFromUrl.immediate, 26855 exportMode = _stateFromUrl.exportMode, 26856 printMode = _stateFromUrl.printMode; 26857 /** 26858 * If the proposed URL slide index is out-of-bounds or is not a valid 26859 * integer, navigate to the first slide. Do nothing if the proposed slide 26860 * number is the same as the current slide. 26861 */ 26862 26863 26864 if (proposedSlideNumber !== slideNumber || proposedSlideElementNumber !== slideElementNumber) { 26865 var qs = query_string__WEBPACK_IMPORTED_MODULE_2__["stringify"]({ 26866 slide: slideNumber, 26867 slideElement: slideElementNumber, 26868 immediate: immediate || undefined, 26869 presenterMode: presenterMode || undefined, 26870 overviewMode: overviewMode || undefined, 26871 exportMode: exportMode || undefined, 26872 printMode: printMode || undefined 26873 }); 26874 history.current.replace("?".concat(qs)); 26875 return; 26876 } 26877 26878 var reverseDirection = slideNumber < currentSlide || slideNumber == currentSlide && slideElementNumber < currentSlideElement; 26879 var update = { 26880 slideNumber: slideNumber, 26881 slideElementNumber: slideElementNumber, 26882 reverseDirection: reverseDirection, 26883 immediate: immediate 26884 }; 26885 dispatch({ 26886 type: 'GO_TO_SLIDE', 26887 payload: _objectSpread({}, update, { 26888 presenterMode: presenterMode, 26889 overviewMode: overviewMode, 26890 exportMode: exportMode, 26891 printMode: printMode 26892 }) 26893 }); 26894 onUrlChange(update); 26895 }, [stateFromUrl, currentSlide, currentSlideElement, dispatch, onUrlChange]); 26896 var nextSafeSlide = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](function () { 26897 if (currentSlide + 1 > numberOfSlides - 1 && loop) { 26898 return _utils_constants__WEBPACK_IMPORTED_MODULE_3__["DEFAULT_SLIDE_INDEX"]; 26899 } 26900 26901 return Math.min(currentSlide + 1, numberOfSlides - 1); 26902 }, [currentSlide, loop, numberOfSlides]); 26903 /** 26904 * This method will navigate to whatever index is specified. It is for 26905 * internal use only, such as presenter mode, as it does not check bounds. 26906 */ 26907 26908 var navigateTo = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](function (_ref) { 26909 var slideIndex = _ref.slideIndex, 26910 elementIndex = _ref.elementIndex, 26911 _ref$immediate = _ref.immediate, 26912 immediate = _ref$immediate === void 0 ? false : _ref$immediate; 26913 var qs = query_string__WEBPACK_IMPORTED_MODULE_2__["stringify"]({ 26914 slide: slideIndex, 26915 slideElement: elementIndex, 26916 immediate: immediate || undefined, 26917 presenterMode: currentPresenterMode || undefined, 26918 overviewMode: currentOverviewMode || undefined, 26919 exportMode: currentExportMode || undefined, 26920 printMode: currentPrintMode || undefined 26921 }); 26922 history.current.push("?".concat(qs)); 26923 }); 26924 var navigateToNext = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](function () { 26925 var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, 26926 immediate = _ref2.immediate; 26927 26928 var slideElementsLength = countSlideElements(currentSlide); 26929 var atLastElement = currentSlideElement + 1 === slideElementsLength || slideElementsLength === 0; 26930 var atLastSlide = currentSlide + 1 === numberOfSlides || numberOfSlides === 0; 26931 var nextSafeSlideIndex = currentSlide; 26932 var nextSafeSlideElementIndex = _utils_constants__WEBPACK_IMPORTED_MODULE_3__["DEFAULT_SLIDE_ELEMENT_INDEX"]; 26933 26934 if (atLastElement && atLastSlide) { 26935 if (!loop) { 26936 return; 26937 } 26938 26939 nextSafeSlideIndex = _utils_constants__WEBPACK_IMPORTED_MODULE_3__["DEFAULT_SLIDE_INDEX"]; 26940 nextSafeSlideElementIndex = _utils_constants__WEBPACK_IMPORTED_MODULE_3__["DEFAULT_SLIDE_ELEMENT_INDEX"]; 26941 } else if (atLastElement) { 26942 // advance to the next safe slide 26943 nextSafeSlideIndex = nextSafeSlide(); 26944 nextSafeSlideElementIndex = _utils_constants__WEBPACK_IMPORTED_MODULE_3__["DEFAULT_SLIDE_ELEMENT_INDEX"]; 26945 } else { 26946 // advance to the next slide element 26947 nextSafeSlideElementIndex = currentSlideElement + 1; 26948 } 26949 26950 var qs = query_string__WEBPACK_IMPORTED_MODULE_2__["stringify"]({ 26951 slide: nextSafeSlideIndex, 26952 slideElement: nextSafeSlideElementIndex, 26953 immediate: immediate || undefined, 26954 presenterMode: currentPresenterMode || undefined, 26955 overviewMode: currentOverviewMode || undefined, 26956 exportMode: currentExportMode || undefined, 26957 printMode: currentPrintMode || undefined 26958 }); 26959 history.current.push("?".concat(qs)); 26960 }, [countSlideElements, currentSlide, currentSlideElement, numberOfSlides, currentPresenterMode, currentOverviewMode, currentExportMode, currentPrintMode, loop, nextSafeSlide]); 26961 var previousSafeSlide = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](function () { 26962 if (currentSlide - 1 < 0 && loop) { 26963 return numberOfSlides - 1; 26964 } 26965 26966 return Math.max(0, currentSlide - 1); 26967 }, [currentSlide, loop, numberOfSlides]); 26968 var navigateToPrevious = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](function () { 26969 var immediate = !animationsWhenGoingBack; 26970 var slideElementsLength = countSlideElements(currentSlide); 26971 var atNoElement = currentSlideElement === _utils_constants__WEBPACK_IMPORTED_MODULE_3__["DEFAULT_SLIDE_ELEMENT_INDEX"] || slideElementsLength === 0; 26972 var atFirstSlide = currentSlide === 0 || numberOfSlides === 0; 26973 var previousSafeSlideIndex = currentSlide; 26974 var previousSafeSlideElementIndex = _utils_constants__WEBPACK_IMPORTED_MODULE_3__["DEFAULT_SLIDE_ELEMENT_INDEX"]; 26975 26976 if (atNoElement && atFirstSlide) { 26977 if (!loop) { 26978 return; 26979 } 26980 26981 previousSafeSlideIndex = numberOfSlides - 1; 26982 } else if (currentSlideElement < 0) { 26983 // back up to the previous safe slide 26984 previousSafeSlideIndex = previousSafeSlide(); 26985 previousSafeSlideElementIndex = countSlideElements(previousSafeSlideIndex) - 1; 26986 } else { 26987 // back up to the previous slide element 26988 previousSafeSlideElementIndex = currentSlideElement - 1; 26989 } 26990 26991 var qs = query_string__WEBPACK_IMPORTED_MODULE_2__["stringify"]({ 26992 slide: previousSafeSlideIndex, 26993 slideElement: previousSafeSlideElementIndex, 26994 immediate: immediate || undefined, 26995 presenterMode: currentPresenterMode || undefined, 26996 overviewMode: currentOverviewMode || undefined, 26997 exportMode: currentExportMode || undefined 26998 }); 26999 history.current.push("?".concat(qs)); 27000 }, [animationsWhenGoingBack, countSlideElements, currentSlide, currentSlideElement, numberOfSlides, currentPresenterMode, currentOverviewMode, currentExportMode, loop, previousSafeSlide]); 27001 react__WEBPACK_IMPORTED_MODULE_0__["useEffect"](function () { 27002 var removeHistoryListener = history.current.listen(onHistoryChange); 27003 return function () { 27004 removeHistoryListener(); 27005 }; 27006 }, [onHistoryChange]); 27007 /** 27008 * In order for Deck to render the correct type of sub-deck, 27009 * we need for certain state from the url to be written to the 27010 * DeckContext. For example, we need to know whether or not this 27011 * browser is in presenter mode. 27012 */ 27013 27014 react__WEBPACK_IMPORTED_MODULE_0__["useEffect"](function () { 27015 onHistoryChange(); 27016 }, // eslint-disable-next-line react-hooks/exhaustive-deps 27017 []); 27018 var toggleMode = react__WEBPACK_IMPORTED_MODULE_0__["useCallback"](function (s) { 27019 return dispatch({ 27020 type: 'TOGGLE_MODE', 27021 payload: { 27022 mode: s 27023 } 27024 }); 27025 }, [dispatch]); 27026 return { 27027 navigateToNext: navigateToNext, 27028 navigateToPrevious: navigateToPrevious, 27029 navigateTo: navigateTo, 27030 toggleMode: toggleMode, 27031 goToSlide: goToSlide 27032 }; 27033} 27034 27035/***/ }), 27036
vendor: 9,246 bytes, lines 27037-27147
27037/***/ "./node_modules/spectacle/es/index.js": 27038/*!********************************************!*\ 27039 !*** ./node_modules/spectacle/es/index.js ***! 27040 \********************************************/ 27041/*! exports provided: Deck, Slide, Appear, CodePane, Box, FlexBox, Grid, Image, FullSizeImage, OrderedList, Quote, Heading, ListItem, UnorderedList, Text, Link, CodeSpan, Notes, Progress, FullScreen, Markdown, SpectacleLogo, Stepper, Table, TableCell, TableRow, TableHeader, TableBody, mdxComponentMap, removeNotes, isolateNotes, indentNormalizer */ 27042/***/ (function(module, __webpack_exports__, __webpack_require__) { 27043 27044"use strict"; 27045__webpack_require__.r(__webpack_exports__); 27046/* harmony import */ var _components_deck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./components/deck */ "./node_modules/spectacle/es/components/deck/index.js"); 27047/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Deck", function() { return _components_deck__WEBPACK_IMPORTED_MODULE_0__["default"]; }); 27048 27049/* harmony import */ var _components_slide__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components/slide */ "./node_modules/spectacle/es/components/slide.js"); 27050/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Slide", function() { return _components_slide__WEBPACK_IMPORTED_MODULE_1__["default"]; }); 27051 27052/* harmony import */ var _components_appear__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/appear */ "./node_modules/spectacle/es/components/appear.js"); 27053/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Appear", function() { return _components_appear__WEBPACK_IMPORTED_MODULE_2__["default"]; }); 27054 27055/* harmony import */ var _components_code_pane__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./components/code-pane */ "./node_modules/spectacle/es/components/code-pane.js"); 27056/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CodePane", function() { return _components_code_pane__WEBPACK_IMPORTED_MODULE_3__["default"]; }); 27057 27058/* harmony import */ var _components_stepper__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./components/stepper */ "./node_modules/spectacle/es/components/stepper.js"); 27059/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Stepper", function() { return _components_stepper__WEBPACK_IMPORTED_MODULE_4__["default"]; }); 27060 27061/* harmony import */ var _components_typography__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./components/typography */ "./node_modules/spectacle/es/components/typography.js"); 27062/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "OrderedList", function() { return _components_typography__WEBPACK_IMPORTED_MODULE_5__["OrderedList"]; }); 27063 27064/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Quote", function() { return _components_typography__WEBPACK_IMPORTED_MODULE_5__["Quote"]; }); 27065 27066/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Heading", function() { return _components_typography__WEBPACK_IMPORTED_MODULE_5__["Heading"]; }); 27067 27068/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ListItem", function() { return _components_typography__WEBPACK_IMPORTED_MODULE_5__["ListItem"]; }); 27069 27070/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "UnorderedList", function() { return _components_typography__WEBPACK_IMPORTED_MODULE_5__["UnorderedList"]; }); 27071 27072/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Text", function() { return _components_typography__WEBPACK_IMPORTED_MODULE_5__["Text"]; }); 27073 27074/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Link", function() { return _components_typography__WEBPACK_IMPORTED_MODULE_5__["Link"]; }); 27075 27076/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "CodeSpan", function() { return _components_typography__WEBPACK_IMPORTED_MODULE_5__["CodeSpan"]; }); 27077 27078/* harmony import */ var _components_table__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./components/table */ "./node_modules/spectacle/es/components/table.js"); 27079/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Table", function() { return _components_table__WEBPACK_IMPORTED_MODULE_6__["Table"]; }); 27080 27081/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TableCell", function() { return _components_table__WEBPACK_IMPORTED_MODULE_6__["TableCell"]; }); 27082 27083/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TableRow", function() { return _components_table__WEBPACK_IMPORTED_MODULE_6__["TableRow"]; }); 27084 27085/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TableHeader", function() { return _components_table__WEBPACK_IMPORTED_MODULE_6__["TableHeader"]; }); 27086 27087/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TableBody", function() { return _components_table__WEBPACK_IMPORTED_MODULE_6__["TableBody"]; }); 27088 27089/* harmony import */ var _components_layout__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./components/layout */ "./node_modules/spectacle/es/components/layout.js"); 27090/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Box", function() { return _components_layout__WEBPACK_IMPORTED_MODULE_7__["Box"]; }); 27091 27092/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "FlexBox", function() { return _components_layout__WEBPACK_IMPORTED_MODULE_7__["FlexBox"]; }); 27093 27094/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Grid", function() { return _components_layout__WEBPACK_IMPORTED_MODULE_7__["Grid"]; }); 27095 27096/* harmony import */ var _components_image__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./components/image */ "./node_modules/spectacle/es/components/image.js"); 27097/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Image", function() { return _components_image__WEBPACK_IMPORTED_MODULE_8__["Image"]; }); 27098 27099/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "FullSizeImage", function() { return _components_image__WEBPACK_IMPORTED_MODULE_8__["FullSizeImage"]; }); 27100 27101/* harmony import */ var _components_notes__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./components/notes */ "./node_modules/spectacle/es/components/notes.js"); 27102/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Notes", function() { return _components_notes__WEBPACK_IMPORTED_MODULE_9__["default"]; }); 27103 27104/* harmony import */ var _components_progress__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./components/progress */ "./node_modules/spectacle/es/components/progress.js"); 27105/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Progress", function() { return _components_progress__WEBPACK_IMPORTED_MODULE_10__["default"]; }); 27106 27107/* harmony import */ var _components_fullscreen__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./components/fullscreen */ "./node_modules/spectacle/es/components/fullscreen.js"); 27108/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "FullScreen", function() { return _components_fullscreen__WEBPACK_IMPORTED_MODULE_11__["default"]; }); 27109 27110/* harmony import */ var _components_markdown__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./components/markdown */ "./node_modules/spectacle/es/components/markdown.js"); 27111/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Markdown", function() { return _components_markdown__WEBPACK_IMPORTED_MODULE_12__["default"]; }); 27112 27113/* harmony import */ var _components_logo__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./components/logo */ "./node_modules/spectacle/es/components/logo.js"); 27114/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SpectacleLogo", function() { return _components_logo__WEBPACK_IMPORTED_MODULE_13__["default"]; }); 27115 27116/* harmony import */ var _utils_mdx_component_mapper__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./utils/mdx-component-mapper */ "./node_modules/spectacle/es/utils/mdx-component-mapper.js"); 27117/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mdxComponentMap", function() { return _utils_mdx_component_mapper__WEBPACK_IMPORTED_MODULE_14__["default"]; }); 27118 27119/* harmony import */ var _utils_notes__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./utils/notes */ "./node_modules/spectacle/es/utils/notes.js"); 27120/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "removeNotes", function() { return _utils_notes__WEBPACK_IMPORTED_MODULE_15__["removeNotes"]; }); 27121 27122/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isolateNotes", function() { return _utils_notes__WEBPACK_IMPORTED_MODULE_15__["isolateNotes"]; }); 27123 27124/* harmony import */ var _utils_indent_normalizer__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./utils/indent-normalizer */ "./node_modules/spectacle/es/utils/indent-normalizer.js"); 27125/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "indentNormalizer", function() { return _utils_indent_normalizer__WEBPACK_IMPORTED_MODULE_16__["default"]; }); 27126 27127 27128 27129 27130 27131 27132 27133 27134 27135 27136 27137 27138 27139 27140 27141 27142 27143 27144 27145 27146/***/ }), 27147
vendor: 1,026 bytes, lines 27148-27186
27148/***/ "./node_modules/spectacle/es/theme/default-theme.js": 27149/*!**********************************************************!*\ 27150 !*** ./node_modules/spectacle/es/theme/default-theme.js ***! 27151 \**********************************************************/ 27152/*! exports provided: default */ 27153/***/ (function(module, __webpack_exports__, __webpack_require__) { 27154 27155"use strict"; 27156__webpack_require__.r(__webpack_exports__); 27157/* harmony default export */ __webpack_exports__["default"] = ({ 27158 size: { 27159 width: 1366, 27160 height: 768, 27161 maxCodePaneHeight: 200 27162 }, 27163 colors: { 27164 primary: '#ebe5da', 27165 secondary: '#fc6986', 27166 tertiary: '#1e2852', 27167 quaternary: '#ffc951', 27168 quinary: '#8bddfd' 27169 }, 27170 fonts: { 27171 header: '"Helvetica Neue", Helvetica, Arial, sans-serif', 27172 text: '"Helvetica Neue", Helvetica, Arial, sans-serif', 27173 monospace: '"Consolas", "Menlo", monospace' 27174 }, 27175 fontSizes: { 27176 h1: '72px', 27177 h2: '64px', 27178 h3: '56px', 27179 text: '44px', 27180 monospace: '20px' 27181 }, 27182 space: [16, 24, 32] 27183}); 27184 27185/***/ }), 27186
vendor: 2,743 bytes, lines 27187-27267
27187/***/ "./node_modules/spectacle/es/theme/index.js": 27188/*!**************************************************!*\ 27189 !*** ./node_modules/spectacle/es/theme/index.js ***! 27190 \**************************************************/ 27191/*! exports provided: mergeTheme */ 27192/***/ (function(module, __webpack_exports__, __webpack_require__) { 27193 27194"use strict"; 27195__webpack_require__.r(__webpack_exports__); 27196/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mergeTheme", function() { return mergeTheme; }); 27197/* harmony import */ var _default_theme__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./default-theme */ "./node_modules/spectacle/es/theme/default-theme.js"); 27198/* harmony import */ var _print_theme__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./print-theme */ "./node_modules/spectacle/es/theme/print-theme.js"); 27199function ownKeys(object, enumerableOnly) { 27200 var keys = Object.keys(object); 27201 27202 if (Object.getOwnPropertySymbols) { 27203 var symbols = Object.getOwnPropertySymbols(object); 27204 if (enumerableOnly) symbols = symbols.filter(function (sym) { 27205 return Object.getOwnPropertyDescriptor(object, sym).enumerable; 27206 }); 27207 keys.push.apply(keys, symbols); 27208 } 27209 27210 return keys; 27211} 27212 27213function _objectSpread(target) { 27214 for (var i = 1; i < arguments.length; i++) { 27215 var source = arguments[i] != null ? arguments[i] : {}; 27216 27217 if (i % 2) { 27218 ownKeys(Object(source), true).forEach(function (key) { 27219 _defineProperty(target, key, source[key]); 27220 }); 27221 } else if (Object.getOwnPropertyDescriptors) { 27222 Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); 27223 } else { 27224 ownKeys(Object(source)).forEach(function (key) { 27225 Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); 27226 }); 27227 } 27228 } 27229 27230 return target; 27231} 27232 27233function _defineProperty(obj, key, value) { 27234 if (key in obj) { 27235 Object.defineProperty(obj, key, { 27236 value: value, 27237 enumerable: true, 27238 configurable: true, 27239 writable: true 27240 }); 27241 } else { 27242 obj[key] = value; 27243 } 27244 27245 return obj; 27246} 27247 27248 27249 27250 27251var mergeKeys = function mergeKeys(base, override) { 27252 return Object.keys(override || {}).reduce(function (merged, key) { 27253 merged[key] = _objectSpread({}, merged[key], {}, override[key]); 27254 return merged; 27255 }, _objectSpread({}, base)); 27256}; 27257 27258var mergeTheme = function mergeTheme(theme) { 27259 var isPrintMode = window.location.search.includes('printMode'); 27260 var merged = mergeKeys(_default_theme__WEBPACK_IMPORTED_MODULE_0__["default"], theme); // if is print mode then do the above for printTheme else return the 27261 // above merged themes 27262 27263 return isPrintMode ? mergeKeys(merged, _print_theme__WEBPACK_IMPORTED_MODULE_1__["default"]) : merged; 27264}; 27265 27266/***/ }), 27267
vendor: 631 bytes, lines 27268-27288
27268/***/ "./node_modules/spectacle/es/theme/print-theme.js": 27269/*!********************************************************!*\ 27270 !*** ./node_modules/spectacle/es/theme/print-theme.js ***! 27271 \********************************************************/ 27272/*! exports provided: default */ 27273/***/ (function(module, __webpack_exports__, __webpack_require__) { 27274 27275"use strict"; 27276__webpack_require__.r(__webpack_exports__); 27277/* harmony default export */ __webpack_exports__["default"] = ({ 27278 colors: { 27279 primary: '#00000096', 27280 secondary: '#00000069', 27281 tertiary: '#00000085', 27282 quaternary: '#000000', 27283 quinary: '#000000' 27284 } 27285}); 27286 27287/***/ }), 27288
vendor: 1,072 bytes, lines 27289-27306
27289/***/ "./node_modules/spectacle/es/utils/constants.js": 27290/*!******************************************************!*\ 27291 !*** ./node_modules/spectacle/es/utils/constants.js ***! 27292 \******************************************************/ 27293/*! exports provided: DEFAULT_SLIDE_ELEMENT_INDEX, DEFAULT_SLIDE_INDEX, SYSTEM_FONT */ 27294/***/ (function(module, __webpack_exports__, __webpack_require__) { 27295 27296"use strict"; 27297__webpack_require__.r(__webpack_exports__); 27298/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DEFAULT_SLIDE_ELEMENT_INDEX", function() { return DEFAULT_SLIDE_ELEMENT_INDEX; }); 27299/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DEFAULT_SLIDE_INDEX", function() { return DEFAULT_SLIDE_INDEX; }); 27300/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SYSTEM_FONT", function() { return SYSTEM_FONT; }); 27301var DEFAULT_SLIDE_ELEMENT_INDEX = -1; 27302var DEFAULT_SLIDE_INDEX = 0; 27303var SYSTEM_FONT = '-apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Helvetica Neue", Helvetica, sans-serif'; 27304 27305/***/ }), 27306
vendor: 975 bytes, lines 27307-27338
27307/***/ "./node_modules/spectacle/es/utils/debounce.js": 27308/*!*****************************************************!*\ 27309 !*** ./node_modules/spectacle/es/utils/debounce.js ***! 27310 \*****************************************************/ 27311/*! exports provided: default */ 27312/***/ (function(module, __webpack_exports__, __webpack_require__) { 27313 27314"use strict"; 27315__webpack_require__.r(__webpack_exports__); 27316// Credit David Walsh (https://davidwalsh.name/javascript-debounce-function) 27317function debounce(func, wait, immediate) { 27318 var timeout; 27319 return function executedFunction() { 27320 var context = this; 27321 var args = arguments; 27322 27323 var later = function later() { 27324 timeout = null; 27325 if (!immediate) func.apply(context, args); 27326 }; 27327 27328 var callNow = immediate && !timeout; 27329 clearTimeout(timeout); 27330 timeout = setTimeout(later, wait); 27331 if (callNow) func.apply(context, args); 27332 }; 27333} 27334 27335/* harmony default export */ __webpack_exports__["default"] = (debounce); 27336 27337/***/ }), 27338
vendor: 1,113 bytes, lines 27339-27362
27339/***/ "./node_modules/spectacle/es/utils/detect-platform.js": 27340/*!************************************************************!*\ 27341 !*** ./node_modules/spectacle/es/utils/detect-platform.js ***! 27342 \************************************************************/ 27343/*! exports provided: isWindows, isMacOS, isLinux */ 27344/***/ (function(module, __webpack_exports__, __webpack_require__) { 27345 27346"use strict"; 27347__webpack_require__.r(__webpack_exports__); 27348/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isWindows", function() { return isWindows; }); 27349/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isMacOS", function() { return isMacOS; }); 27350/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isLinux", function() { return isLinux; }); 27351var isWindows = function isWindows() { 27352 return navigator.platform.toLowerCase().includes('win32'); 27353}; 27354var isMacOS = function isMacOS() { 27355 return navigator.platform.toLowerCase().includes('macintel'); 27356}; 27357var isLinux = function isLinux() { 27358 return navigator.platform.toLowerCase().includes('linux'); 27359}; 27360 27361/***/ }), 27362
vendor: 2,053 bytes, lines 27363-27432
27363/***/ "./node_modules/spectacle/es/utils/indent-normalizer.js": 27364/*!**************************************************************!*\ 27365 !*** ./node_modules/spectacle/es/utils/indent-normalizer.js ***! 27366 \**************************************************************/ 27367/*! exports provided: default */ 27368/***/ (function(module, __webpack_exports__, __webpack_require__) { 27369 27370"use strict"; 27371__webpack_require__.r(__webpack_exports__); 27372function _slicedToArray(arr, i) { 27373 return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); 27374} 27375 27376function _nonIterableRest() { 27377 throw new TypeError("Invalid attempt to destructure non-iterable instance"); 27378} 27379 27380function _iterableToArrayLimit(arr, i) { 27381 if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { 27382 return; 27383 } 27384 27385 var _arr = []; 27386 var _n = true; 27387 var _d = false; 27388 var _e = undefined; 27389 27390 try { 27391 for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { 27392 _arr.push(_s.value); 27393 27394 if (i && _arr.length === i) break; 27395 } 27396 } catch (err) { 27397 _d = true; 27398 _e = err; 27399 } finally { 27400 try { 27401 if (!_n && _i["return"] != null) _i["return"](); 27402 } finally { 27403 if (_d) throw _e; 27404 } 27405 } 27406 27407 return _arr; 27408} 27409 27410function _arrayWithHoles(arr) { 27411 if (Array.isArray(arr)) return arr; 27412} // Indent to smallest non-empty whitespace level and trim start / end of string. 27413 27414 27415var indentNormalizer = function indentNormalizer(val) { 27416 var prefix = null; 27417 return (val || '').split('\n').filter(function (line) { 27418 var _slice = (line.match(/^([ ]*)([^ ]+)/) || []).slice(1), 27419 _slice2 = _slicedToArray(_slice, 2), 27420 cur = _slice2[0], 27421 remainder = _slice2[1]; 27422 27423 return remainder ? (prefix = null === prefix || cur.length < prefix.length ? cur : prefix, !0) : null !== prefix; 27424 }).map(function (line) { 27425 return prefix ? line.replace(prefix, '') : line; 27426 }).join('\n').trimRight(); 27427}; 27428 27429/* harmony default export */ __webpack_exports__["default"] = (indentNormalizer); 27430 27431/***/ }), 27432
vendor: 1,133 bytes, lines 27433-27458
27433/***/ "./node_modules/spectacle/es/utils/is-component-type.js": 27434/*!**************************************************************!*\ 27435 !*** ./node_modules/spectacle/es/utils/is-component-type.js ***! 27436 \**************************************************************/ 27437/*! exports provided: default */ 27438/***/ (function(module, __webpack_exports__, __webpack_require__) { 27439 27440"use strict"; 27441__webpack_require__.r(__webpack_exports__); 27442/** isComponentType(Component, String) 27443 * Takes Component and name (String) of component type you want to test for 27444 * Returns a boolean 27445 * Turned into a util to avoid having to repeatedly check: 27446 * mdx or regular component types. 27447 * May be unnecessary in future, if we treat MDX differently 27448 * 27449 * **Note**: Make sure to pass `Component.name` instead of a string name as 27450 * the `name` parameter or else minification may break functionality. 27451 * See: https://github.com/FormidableLabs/spectacle/issues/763 27452 */ 27453/* harmony default export */ __webpack_exports__["default"] = (function (component, name) { 27454 return (component.props || {}).mdxType === name || (component.type || {}).name === name; 27455}); 27456 27457/***/ }), 27458
vendor: 3,188 bytes, lines 27459-27539
27459/***/ "./node_modules/spectacle/es/utils/mdx-component-mapper.js": 27460/*!*****************************************************************!*\ 27461 !*** ./node_modules/spectacle/es/utils/mdx-component-mapper.js ***! 27462 \*****************************************************************/ 27463/*! exports provided: default */ 27464/***/ (function(module, __webpack_exports__, __webpack_require__) { 27465 27466"use strict"; 27467__webpack_require__.r(__webpack_exports__); 27468/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js"); 27469/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 27470/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ */ "./node_modules/spectacle/es/index.js"); 27471function _extends() { 27472 _extends = Object.assign || function (target) { 27473 for (var i = 1; i < arguments.length; i++) { 27474 var source = arguments[i]; 27475 27476 for (var key in source) { 27477 if (Object.prototype.hasOwnProperty.call(source, key)) { 27478 target[key] = source[key]; 27479 } 27480 } 27481 } 27482 27483 return target; 27484 }; 27485 27486 return _extends.apply(this, arguments); 27487} 27488/* eslint-disable react/display-name */ 27489 27490 27491 27492 27493var mdxComponentMap = { 27494 p: ___WEBPACK_IMPORTED_MODULE_1__["Text"], 27495 h1: function h1(props) { 27496 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](___WEBPACK_IMPORTED_MODULE_1__["Heading"], _extends({}, props, { 27497 fontSize: "h1" 27498 })); 27499 }, 27500 h2: function h2(props) { 27501 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](___WEBPACK_IMPORTED_MODULE_1__["Heading"], _extends({}, props, { 27502 fontSize: "h2" 27503 })); 27504 }, 27505 h3: function h3(props) { 27506 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](___WEBPACK_IMPORTED_MODULE_1__["Heading"], _extends({}, props, { 27507 fontSize: "h3" 27508 })); 27509 }, 27510 h4: function h4(props) { 27511 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](___WEBPACK_IMPORTED_MODULE_1__["Heading"], _extends({}, props, { 27512 fontSize: "h4" 27513 })); 27514 }, 27515 blockquote: ___WEBPACK_IMPORTED_MODULE_1__["Quote"], 27516 ul: ___WEBPACK_IMPORTED_MODULE_1__["UnorderedList"], 27517 ol: ___WEBPACK_IMPORTED_MODULE_1__["OrderedList"], 27518 li: ___WEBPACK_IMPORTED_MODULE_1__["ListItem"], 27519 img: ___WEBPACK_IMPORTED_MODULE_1__["Image"], 27520 a: ___WEBPACK_IMPORTED_MODULE_1__["Link"], 27521 codeblock: function codeblock(props) { 27522 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](___WEBPACK_IMPORTED_MODULE_1__["CodePane"], _extends({ 27523 autoFillHeight: true 27524 }, props)); 27525 }, 27526 code: function code(props) { 27527 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__["createElement"](___WEBPACK_IMPORTED_MODULE_1__["CodePane"], _extends({ 27528 autoFillHeight: true 27529 }, props)); 27530 }, 27531 inlineCode: ___WEBPACK_IMPORTED_MODULE_1__["CodeSpan"], 27532 table: ___WEBPACK_IMPORTED_MODULE_1__["Table"], 27533 tr: ___WEBPACK_IMPORTED_MODULE_1__["TableRow"], 27534 td: ___WEBPACK_IMPORTED_MODULE_1__["TableCell"] 27535}; 27536/* harmony default export */ __webpack_exports__["default"] = (mdxComponentMap); 27537 27538/***/ }), 27539
vendor: 1,544 bytes, lines 27540-27585
27540/***/ "./node_modules/spectacle/es/utils/notes.js": 27541/*!**************************************************!*\ 27542 !*** ./node_modules/spectacle/es/utils/notes.js ***! 27543 \**************************************************/ 27544/*! exports provided: isolateNotes, removeNotes */ 27545/***/ (function(module, __webpack_exports__, __webpack_require__) { 27546 27547"use strict"; 27548__webpack_require__.r(__webpack_exports__); 27549/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isolateNotes", function() { return isolateNotes; }); 27550/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeNotes", function() { return removeNotes; }); 27551var NOTES_MARKER = 'Notes: '; 27552var NOTES_REG = new RegExp("^".concat(NOTES_MARKER), 'm'); 27553/* 27554 * We want to pull the notes out of each slide. This RegEx looks for "Notes: " 27555 * that starts on a new line. Anything after the notes marker will be considered notes. 27556 */ 27557 27558var isolateNotes = function isolateNotes(content) { 27559 var indexOfNotes = content.search(NOTES_REG); 27560 27561 if (indexOfNotes >= 0) { 27562 // found the notes marker! 27563 return content.substring(indexOfNotes + NOTES_MARKER.length); 27564 } 27565 27566 return ''; 27567}; 27568/* 27569 * When generating the slide components, we only want the slide content to be 27570 * compiled by mdx.sync. Remove all the notes content. 27571 */ 27572 27573var removeNotes = function removeNotes(content) { 27574 var indexOfNotes = content.search(NOTES_REG); 27575 27576 if (indexOfNotes >= 0) { 27577 // found the notes marker! 27578 return content.substring(0, indexOfNotes); 27579 } 27580 27581 return content; 27582}; 27583 27584/***/ }), 27585
vendor: 1,878 bytes, lines 27586-27623
27586/***/ "./node_modules/spectacle/es/utils/search-children-appear.js": 27587/*!*******************************************************************!*\ 27588 !*** ./node_modules/spectacle/es/utils/search-children-appear.js ***! 27589 \*******************************************************************/ 27590/*! exports provided: default */ 27591/***/ (function(module, __webpack_exports__, __webpack_require__) { 27592 27593"use strict"; 27594__webpack_require__.r(__webpack_exports__); 27595/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return searchChildrenForAppear; }); 27596/* harmony import */ var _utils_is_component_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/is-component-type */ "./node_modules/spectacle/es/utils/is-component-type.js"); 27597/* harmony import */ var _components_appear__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/appear */ "./node_modules/spectacle/es/components/appear.js"); 27598 27599 27600function searchChildrenForAppear(children) { 27601 var _ref, _children$props; 27602 27603 var isSingleChild = (_ref = children === null || children === void 0 ? void 0 : (_children$props = children.props) === null || _children$props === void 0 ? void 0 : _children$props.children) !== null && _ref !== void 0 ? _ref : false; 27604 27605 if (!Array.isArray(children) && !isSingleChild) { 27606 return 0; 27607 } 27608 27609 return (isSingleChild ? [children] : children).reduce(function (memo, current) { 27610 if (Object(_utils_is_component_type__WEBPACK_IMPORTED_MODULE_0__["default"])(current, _components_appear__WEBPACK_IMPORTED_MODULE_1__["default"].name)) { 27611 memo += 1; 27612 } else { 27613 var _current$props; 27614 27615 memo += searchChildrenForAppear(current === null || current === void 0 ? void 0 : (_current$props = current.props) === null || _current$props === void 0 ? void 0 : _current$props.children); 27616 } 27617 27618 return memo; 27619 }, 0); 27620} 27621 27622/***/ }), 27623
vendor: 1,800 bytes, lines 27624-27658
27624/***/ "./node_modules/spectacle/es/utils/search-children-stepper.js": 27625/*!********************************************************************!*\ 27626 !*** ./node_modules/spectacle/es/utils/search-children-stepper.js ***! 27627 \********************************************************************/ 27628/*! exports provided: default */ 27629/***/ (function(module, __webpack_exports__, __webpack_require__) { 27630 27631"use strict"; 27632__webpack_require__.r(__webpack_exports__); 27633/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return searchChildrenForStepper; }); 27634/* harmony import */ var _is_component_type__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./is-component-type */ "./node_modules/spectacle/es/utils/is-component-type.js"); 27635/* harmony import */ var _components_stepper__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/stepper */ "./node_modules/spectacle/es/components/stepper.js"); 27636 27637 27638function searchChildrenForStepper(children) { 27639 if (!Array.isArray(children)) { 27640 return 0; 27641 } 27642 27643 return children.reduce(function (memo, current) { 27644 var _current$props, _current$props$childr; 27645 27646 if (Object(_is_component_type__WEBPACK_IMPORTED_MODULE_0__["default"])(current, _components_stepper__WEBPACK_IMPORTED_MODULE_1__["default"].name)) { 27647 var values = current.props.values; 27648 memo += Array.isArray(values) ? values.length : 0; 27649 } else if ((current === null || current === void 0 ? void 0 : (_current$props = current.props) === null || _current$props === void 0 ? void 0 : (_current$props$childr = _current$props.children) === null || _current$props$childr === void 0 ? void 0 : _current$props$childr.length) > 0) { 27650 memo += searchChildrenForStepper(current.props.children); 27651 } 27652 27653 return memo; 27654 }, 0); 27655} 27656 27657/***/ }), 27658
vendor: 2,851 bytes, lines 27659-27744
27659/***/ "./node_modules/spectacle/es/utils/use-timer.js": 27660/*!******************************************************!*\ 27661 !*** ./node_modules/spectacle/es/utils/use-timer.js ***! 27662 \******************************************************/ 27663/*! exports provided: useTimer */ 27664/***/ (function(module, __webpack_exports__, __webpack_require__) { 27665 27666"use strict"; 27667__webpack_require__.r(__webpack_exports__); 27668/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "useTimer", function() { return useTimer; }); 27669/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js"); 27670/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 27671function _slicedToArray(arr, i) { 27672 return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); 27673} 27674 27675function _nonIterableRest() { 27676 throw new TypeError("Invalid attempt to destructure non-iterable instance"); 27677} 27678 27679function _iterableToArrayLimit(arr, i) { 27680 if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { 27681 return; 27682 } 27683 27684 var _arr = []; 27685 var _n = true; 27686 var _d = false; 27687 var _e = undefined; 27688 27689 try { 27690 for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { 27691 _arr.push(_s.value); 27692 27693 if (i && _arr.length === i) break; 27694 } 27695 } catch (err) { 27696 _d = true; 27697 _e = err; 27698 } finally { 27699 try { 27700 if (!_n && _i["return"] != null) _i["return"](); 27701 } finally { 27702 if (_d) throw _e; 27703 } 27704 } 27705 27706 return _arr; 27707} 27708 27709function _arrayWithHoles(arr) { 27710 if (Array.isArray(arr)) return arr; 27711} 27712 27713 27714var useTimer = function useTimer(handler, period, isActive) { 27715 var _React$useState = react__WEBPACK_IMPORTED_MODULE_0___default.a.useState(1), 27716 _React$useState2 = _slicedToArray(_React$useState, 2), 27717 timeDelay = _React$useState2[0], 27718 setTimeDelay = _React$useState2[1]; 27719 27720 var initialTime = react__WEBPACK_IMPORTED_MODULE_0___default.a.useRef(); 27721 var callBack = react__WEBPACK_IMPORTED_MODULE_0___default.a.useRef(); 27722 react__WEBPACK_IMPORTED_MODULE_0___default.a.useEffect(function () { 27723 callBack.current = handler; 27724 }, [handler]); // eslint-disable-next-line consistent-return 27725 27726 react__WEBPACK_IMPORTED_MODULE_0___default.a.useEffect(function () { 27727 if (isActive) { 27728 initialTime.current = new Date().getTime(); 27729 var timer = setInterval(function () { 27730 var currentTime = new Date().getTime(); 27731 var delay = currentTime - initialTime.current; 27732 initialTime.current = currentTime; 27733 setTimeDelay(delay / 1000); 27734 callBack.current(timeDelay); 27735 }, period); 27736 return function () { 27737 clearInterval(timer); 27738 }; 27739 } 27740 }, [period, isActive, timeDelay]); 27741}; 27742 27743/***/ }), 27744
vendor: 6,396 bytes, lines 27745-27935
27745/***/ "./node_modules/spectacle/node_modules/prism-react-renderer/es/components/Highlight.js": 27746/*!*********************************************************************************************!*\ 27747 !*** ./node_modules/spectacle/node_modules/prism-react-renderer/es/components/Highlight.js ***! 27748 \*********************************************************************************************/ 27749/*! exports provided: default */ 27750/***/ (function(module, __webpack_exports__, __webpack_require__) { 27751 27752"use strict"; 27753__webpack_require__.r(__webpack_exports__); 27754/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js"); 27755/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 27756/* harmony import */ var _utils_normalizeTokens__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/normalizeTokens */ "./node_modules/spectacle/node_modules/prism-react-renderer/es/utils/normalizeTokens.js"); 27757/* harmony import */ var _utils_themeToDict__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/themeToDict */ "./node_modules/spectacle/node_modules/prism-react-renderer/es/utils/themeToDict.js"); 27758function _extends() { 27759 _extends = Object.assign || function (target) { 27760 for (var i = 1; i < arguments.length; i++) { 27761 var source = arguments[i]; 27762 27763 for (var key in source) { 27764 if (Object.prototype.hasOwnProperty.call(source, key)) { 27765 target[key] = source[key]; 27766 } 27767 } 27768 } 27769 27770 return target; 27771 }; 27772 27773 return _extends.apply(this, arguments); 27774} 27775 27776function _objectWithoutPropertiesLoose(source, excluded) { 27777 if (source == null) return {}; 27778 var target = {}; 27779 var sourceKeys = Object.keys(source); 27780 var key, i; 27781 27782 for (i = 0; i < sourceKeys.length; i++) { 27783 key = sourceKeys[i]; 27784 if (excluded.indexOf(key) >= 0) continue; 27785 target[key] = source[key]; 27786 } 27787 27788 return target; 27789} 27790 27791function _inheritsLoose(subClass, superClass) { 27792 subClass.prototype = Object.create(superClass.prototype); 27793 subClass.prototype.constructor = subClass; 27794 subClass.__proto__ = superClass; 27795} 27796 27797 27798 27799 27800 27801var Highlight = /*#__PURE__*/function (_Component) { 27802 _inheritsLoose(Highlight, _Component); 27803 27804 function Highlight() { 27805 var _this; 27806 27807 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { 27808 args[_key] = arguments[_key]; 27809 } 27810 27811 _this = _Component.call.apply(_Component, [this].concat(args)) || this; 27812 _this.prevTheme = void 0; 27813 _this.prevLanguage = void 0; 27814 _this.themeDict = void 0; 27815 27816 _this.getThemeDict = function (props) { 27817 if (_this.themeDict !== undefined && props.theme === _this.prevTheme && props.language === _this.prevLanguage) { 27818 return _this.themeDict; 27819 } 27820 27821 _this.prevTheme = props.theme; 27822 _this.prevLanguage = props.language; 27823 var themeDict = props.theme ? Object(_utils_themeToDict__WEBPACK_IMPORTED_MODULE_2__["default"])(props.theme, props.language) : undefined; 27824 return _this.themeDict = themeDict; 27825 }; 27826 27827 _this.getLineProps = function (_ref) { 27828 var key = _ref.key, 27829 className = _ref.className, 27830 style = _ref.style, 27831 line = _ref.line, 27832 rest = _objectWithoutPropertiesLoose(_ref, ["key", "className", "style", "line"]); 27833 27834 var output = _extends({}, rest, { 27835 className: "token-line", 27836 style: undefined, 27837 key: undefined 27838 }); 27839 27840 var themeDict = _this.getThemeDict(_this.props); 27841 27842 if (themeDict !== undefined) { 27843 output.style = themeDict.plain; 27844 } 27845 27846 if (style !== undefined) { 27847 output.style = output.style !== undefined ? _extends({}, output.style, style) : style; 27848 } 27849 27850 if (key !== undefined) output.key = key; 27851 if (className) output.className += " " + className; 27852 return output; 27853 }; 27854 27855 _this.getStyleForToken = function (_ref2) { 27856 var types = _ref2.types, 27857 empty = _ref2.empty; 27858 var typesSize = types.length; 27859 27860 var themeDict = _this.getThemeDict(_this.props); 27861 27862 if (themeDict === undefined) { 27863 return undefined; 27864 } else if (typesSize === 1 && types[0] === "plain") { 27865 return empty ? { 27866 display: "inline-block" 27867 } : undefined; 27868 } else if (typesSize === 1 && !empty) { 27869 return themeDict[types[0]]; 27870 } 27871 27872 var baseStyle = empty ? { 27873 display: "inline-block" 27874 } : {}; // $FlowFixMe 27875 27876 var typeStyles = types.map(function (type) { 27877 return themeDict[type]; 27878 }); 27879 return Object.assign.apply(Object, [baseStyle].concat(typeStyles)); 27880 }; 27881 27882 _this.getTokenProps = function (_ref3) { 27883 var key = _ref3.key, 27884 className = _ref3.className, 27885 style = _ref3.style, 27886 token = _ref3.token, 27887 rest = _objectWithoutPropertiesLoose(_ref3, ["key", "className", "style", "token"]); 27888 27889 var output = _extends({}, rest, { 27890 className: "token " + token.types.join(" "), 27891 children: token.content, 27892 style: _this.getStyleForToken(token), 27893 key: undefined 27894 }); 27895 27896 if (style !== undefined) { 27897 output.style = output.style !== undefined ? _extends({}, output.style, style) : style; 27898 } 27899 27900 if (key !== undefined) output.key = key; 27901 if (className) output.className += " " + className; 27902 return output; 27903 }; 27904 27905 return _this; 27906 } 27907 27908 var _proto = Highlight.prototype; 27909 27910 _proto.render = function render() { 27911 var _this$props = this.props, 27912 Prism = _this$props.Prism, 27913 language = _this$props.language, 27914 code = _this$props.code, 27915 children = _this$props.children; 27916 var themeDict = this.getThemeDict(this.props); 27917 var grammar = Prism.languages[language]; 27918 var mixedTokens = grammar !== undefined ? Prism.tokenize(code, grammar, language) : [code]; 27919 var tokens = Object(_utils_normalizeTokens__WEBPACK_IMPORTED_MODULE_1__["default"])(mixedTokens); 27920 return children({ 27921 tokens: tokens, 27922 className: "prism-code language-" + language, 27923 style: themeDict !== undefined ? themeDict.root : {}, 27924 getLineProps: this.getLineProps, 27925 getTokenProps: this.getTokenProps 27926 }); 27927 }; 27928 27929 return Highlight; 27930}(react__WEBPACK_IMPORTED_MODULE_0__["Component"]); 27931 27932/* harmony default export */ __webpack_exports__["default"] = (Highlight); 27933 27934/***/ }), 27935
vendor: 1,363 bytes, lines 27936-27958
27936/***/ "./node_modules/spectacle/node_modules/prism-react-renderer/es/defaultProps.js": 27937/*!*************************************************************************************!*\ 27938 !*** ./node_modules/spectacle/node_modules/prism-react-renderer/es/defaultProps.js ***! 27939 \*************************************************************************************/ 27940/*! exports provided: default */ 27941/***/ (function(module, __webpack_exports__, __webpack_require__) { 27942 27943"use strict"; 27944__webpack_require__.r(__webpack_exports__); 27945/* harmony import */ var _vendor_prism__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vendor/prism */ "./node_modules/spectacle/node_modules/prism-react-renderer/es/vendor/prism/index.js"); 27946/* harmony import */ var _themes_duotoneDark__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../themes/duotoneDark */ "./node_modules/spectacle/node_modules/prism-react-renderer/themes/duotoneDark.js"); 27947/* harmony import */ var _themes_duotoneDark__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_themes_duotoneDark__WEBPACK_IMPORTED_MODULE_1__); 27948 27949 27950var defaultProps = { 27951 // $FlowFixMe 27952 Prism: _vendor_prism__WEBPACK_IMPORTED_MODULE_0__["default"], 27953 theme: _themes_duotoneDark__WEBPACK_IMPORTED_MODULE_1___default.a 27954}; 27955/* harmony default export */ __webpack_exports__["default"] = (defaultProps); 27956 27957/***/ }), 27958
vendor: 1,598 bytes, lines 27959-27982
27959/***/ "./node_modules/spectacle/node_modules/prism-react-renderer/es/index.js": 27960/*!******************************************************************************!*\ 27961 !*** ./node_modules/spectacle/node_modules/prism-react-renderer/es/index.js ***! 27962 \******************************************************************************/ 27963/*! exports provided: Prism, defaultProps, default */ 27964/***/ (function(module, __webpack_exports__, __webpack_require__) { 27965 27966"use strict"; 27967__webpack_require__.r(__webpack_exports__); 27968/* harmony import */ var _vendor_prism__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vendor/prism */ "./node_modules/spectacle/node_modules/prism-react-renderer/es/vendor/prism/index.js"); 27969/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Prism", function() { return _vendor_prism__WEBPACK_IMPORTED_MODULE_0__["default"]; }); 27970 27971/* harmony import */ var _defaultProps__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./defaultProps */ "./node_modules/spectacle/node_modules/prism-react-renderer/es/defaultProps.js"); 27972/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "defaultProps", function() { return _defaultProps__WEBPACK_IMPORTED_MODULE_1__["default"]; }); 27973 27974/* harmony import */ var _components_Highlight__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./components/Highlight */ "./node_modules/spectacle/node_modules/prism-react-renderer/es/components/Highlight.js"); 27975 27976 27977 27978 27979/* harmony default export */ __webpack_exports__["default"] = (_components_Highlight__WEBPACK_IMPORTED_MODULE_2__["default"]); 27980 27981/***/ }), 27982
vendor: 3,584 bytes, lines 27983-28095
27983/***/ "./node_modules/spectacle/node_modules/prism-react-renderer/es/utils/normalizeTokens.js": 27984/*!**********************************************************************************************!*\ 27985 !*** ./node_modules/spectacle/node_modules/prism-react-renderer/es/utils/normalizeTokens.js ***! 27986 \**********************************************************************************************/ 27987/*! exports provided: default */ 27988/***/ (function(module, __webpack_exports__, __webpack_require__) { 27989 27990"use strict"; 27991__webpack_require__.r(__webpack_exports__); 27992var newlineRe = /\r\n|\r|\n/; // Empty lines need to contain a single empty token, denoted with { empty: true } 27993 27994var normalizeEmptyLines = function normalizeEmptyLines(line) { 27995 if (line.length === 0) { 27996 line.push({ 27997 types: ["plain"], 27998 content: "", 27999 empty: true 28000 }); 28001 } else if (line.length === 1 && line[0].content === "") { 28002 line[0].empty = true; 28003 } 28004}; 28005 28006var appendTypes = function appendTypes(types, add) { 28007 var typesSize = types.length; 28008 28009 if (typesSize > 0 && types[typesSize - 1] === add) { 28010 return types; 28011 } 28012 28013 return types.concat(add); 28014}; // Takes an array of Prism's tokens and groups them by line, turning plain 28015// strings into tokens as well. Tokens can become recursive in some cases, 28016// which means that their types are concatenated. Plain-string tokens however 28017// are always of type "plain". 28018// This is not recursive to avoid exceeding the call-stack limit, since it's unclear 28019// how nested Prism's tokens can become 28020 28021 28022var normalizeTokens = function normalizeTokens(tokens) { 28023 var typeArrStack = [[]]; 28024 var tokenArrStack = [tokens]; 28025 var tokenArrIndexStack = [0]; 28026 var tokenArrSizeStack = [tokens.length]; 28027 var i = 0; 28028 var stackIndex = 0; 28029 var currentLine = []; 28030 var acc = [currentLine]; 28031 28032 while (stackIndex > -1) { 28033 while ((i = tokenArrIndexStack[stackIndex]++) < tokenArrSizeStack[stackIndex]) { 28034 var content = void 0; 28035 var types = typeArrStack[stackIndex]; 28036 var tokenArr = tokenArrStack[stackIndex]; 28037 var token = tokenArr[i]; // Determine content and append type to types if necessary 28038 28039 if (typeof token === "string") { 28040 types = stackIndex > 0 ? types : ["plain"]; 28041 content = token; 28042 } else { 28043 types = appendTypes(types, token.type); 28044 28045 if (token.alias) { 28046 types = appendTypes(types, token.alias); 28047 } 28048 28049 content = token.content; 28050 } // If token.content is an array, increase the stack depth and repeat this while-loop 28051 28052 28053 if (typeof content !== "string") { 28054 stackIndex++; 28055 typeArrStack.push(types); 28056 tokenArrStack.push(content); 28057 tokenArrIndexStack.push(0); 28058 tokenArrSizeStack.push(content.length); 28059 continue; 28060 } // Split by newlines 28061 28062 28063 var splitByNewlines = content.split(newlineRe); 28064 var newlineCount = splitByNewlines.length; 28065 currentLine.push({ 28066 types: types, 28067 content: splitByNewlines[0] 28068 }); // Create a new line for each string on a new line 28069 28070 for (var _i = 1; _i < newlineCount; _i++) { 28071 normalizeEmptyLines(currentLine); 28072 acc.push(currentLine = []); 28073 currentLine.push({ 28074 types: types, 28075 content: splitByNewlines[_i] 28076 }); 28077 } 28078 } // Decreate the stack depth 28079 28080 28081 stackIndex--; 28082 typeArrStack.pop(); 28083 tokenArrStack.pop(); 28084 tokenArrIndexStack.pop(); 28085 tokenArrSizeStack.pop(); 28086 } 28087 28088 normalizeEmptyLines(currentLine); 28089 return acc; 28090}; 28091 28092/* harmony default export */ __webpack_exports__["default"] = (normalizeTokens); 28093 28094/***/ }), 28095
vendor: 1,742 bytes, lines 28096-28156
28096/***/ "./node_modules/spectacle/node_modules/prism-react-renderer/es/utils/themeToDict.js": 28097/*!******************************************************************************************!*\ 28098 !*** ./node_modules/spectacle/node_modules/prism-react-renderer/es/utils/themeToDict.js ***! 28099 \******************************************************************************************/ 28100/*! exports provided: default */ 28101/***/ (function(module, __webpack_exports__, __webpack_require__) { 28102 28103"use strict"; 28104__webpack_require__.r(__webpack_exports__); 28105function _extends() { 28106 _extends = Object.assign || function (target) { 28107 for (var i = 1; i < arguments.length; i++) { 28108 var source = arguments[i]; 28109 28110 for (var key in source) { 28111 if (Object.prototype.hasOwnProperty.call(source, key)) { 28112 target[key] = source[key]; 28113 } 28114 } 28115 } 28116 28117 return target; 28118 }; 28119 28120 return _extends.apply(this, arguments); 28121} 28122 28123var themeToDict = function themeToDict(theme, language) { 28124 var plain = theme.plain; // $FlowFixMe 28125 28126 var base = Object.create(null); 28127 var themeDict = theme.styles.reduce(function (acc, themeEntry) { 28128 var types = themeEntry.types, 28129 languages = themeEntry.languages, 28130 style = themeEntry.style; 28131 28132 if (languages && !languages.includes(language)) { 28133 return acc; 28134 } 28135 28136 themeEntry.types.forEach(function (type) { 28137 // $FlowFixMe 28138 var accStyle = _extends({}, acc[type], style); 28139 28140 acc[type] = accStyle; 28141 }); 28142 return acc; 28143 }, base); // $FlowFixMe 28144 28145 themeDict.root = plain; // $FlowFixMe 28146 28147 themeDict.plain = _extends({}, plain, { 28148 backgroundColor: null 28149 }); 28150 return themeDict; 28151}; 28152 28153/* harmony default export */ __webpack_exports__["default"] = (themeToDict); 28154 28155/***/ }), 28156
vendor: 84,254 bytes, lines 28157-30378
28157/***/ "./node_modules/spectacle/node_modules/prism-react-renderer/es/vendor/prism/index.js": 28158/*!*******************************************************************************************!*\ 28159 !*** ./node_modules/spectacle/node_modules/prism-react-renderer/es/vendor/prism/index.js ***! 28160 \*******************************************************************************************/ 28161/*! exports provided: default */ 28162/***/ (function(module, __webpack_exports__, __webpack_require__) { 28163 28164"use strict"; 28165__webpack_require__.r(__webpack_exports__); 28166/* harmony import */ var _prism_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./prism-core */ "./node_modules/spectacle/node_modules/prism-react-renderer/es/vendor/prism/prism-core.js"); 28167/* harmony import */ var _prism_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_prism_core__WEBPACK_IMPORTED_MODULE_0__); 28168 28169/* This content is auto-generated to include some prismjs language components: */ 28170 28171/* "prismjs/components/prism-markup" */ 28172 28173_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.markup = { 28174 'comment': /<!--[\s\S]*?-->/, 28175 'prolog': /<\?[\s\S]+?\?>/, 28176 'doctype': /<!DOCTYPE[\s\S]+?>/i, 28177 'cdata': /<!\[CDATA\[[\s\S]*?]]>/i, 28178 'tag': { 28179 pattern: /<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/i, 28180 greedy: true, 28181 inside: { 28182 'tag': { 28183 pattern: /^<\/?[^\s>\/]+/i, 28184 inside: { 28185 'punctuation': /^<\/?/, 28186 'namespace': /^[^\s>\/:]+:/ 28187 } 28188 }, 28189 'attr-value': { 28190 pattern: /=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/i, 28191 inside: { 28192 'punctuation': [/^=/, { 28193 pattern: /^(\s*)["']|["']$/, 28194 lookbehind: true 28195 }] 28196 } 28197 }, 28198 'punctuation': /\/?>/, 28199 'attr-name': { 28200 pattern: /[^\s>\/]+/, 28201 inside: { 28202 'namespace': /^[^\s>\/:]+:/ 28203 } 28204 } 28205 } 28206 }, 28207 'entity': /&#?[\da-z]{1,8};/i 28208}; 28209_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.markup['tag'].inside['attr-value'].inside['entity'] = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.markup['entity']; // Plugin to make entity title show the real entity, idea by Roman Komarov 28210 28211_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.hooks.add('wrap', function (env) { 28212 if (env.type === 'entity') { 28213 env.attributes['title'] = env.content.replace(/&/, '&'); 28214 } 28215}); 28216Object.defineProperty(_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.markup.tag, 'addInlined', { 28217 /** 28218 * Adds an inlined language to markup. 28219 * 28220 * An example of an inlined language is CSS with `<style>` tags. 28221 * 28222 * @param {string} tagName The name of the tag that contains the inlined language. This name will be treated as 28223 * case insensitive. 28224 * @param {string} lang The language key. 28225 * @example 28226 * addInlined('style', 'css'); 28227 */ 28228 value: function addInlined(tagName, lang) { 28229 var includedCdataInside = {}; 28230 includedCdataInside['language-' + lang] = { 28231 pattern: /(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i, 28232 lookbehind: true, 28233 inside: _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages[lang] 28234 }; 28235 includedCdataInside['cdata'] = /^<!\[CDATA\[|\]\]>$/i; 28236 var inside = { 28237 'included-cdata': { 28238 pattern: /<!\[CDATA\[[\s\S]*?\]\]>/i, 28239 inside: includedCdataInside 28240 } 28241 }; 28242 inside['language-' + lang] = { 28243 pattern: /[\s\S]+/, 28244 inside: _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages[lang] 28245 }; 28246 var def = {}; 28247 def[tagName] = { 28248 pattern: RegExp(/(<__[\s\S]*?>)(?:<!\[CDATA\[[\s\S]*?\]\]>\s*|[\s\S])*?(?=<\/__>)/.source.replace(/__/g, tagName), 'i'), 28249 lookbehind: true, 28250 greedy: true, 28251 inside: inside 28252 }; 28253 _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.insertBefore('markup', 'cdata', def); 28254 } 28255}); 28256_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.xml = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.extend('markup', {}); 28257_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.html = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.markup; 28258_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.mathml = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.markup; 28259_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.svg = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.markup; 28260/* "prismjs/components/prism-bash" */ 28261 28262(function (Prism) { 28263 var insideString = { 28264 variable: [// Arithmetic Environment 28265 { 28266 pattern: /\$?\(\([\s\S]+?\)\)/, 28267 inside: { 28268 // If there is a $ sign at the beginning highlight $(( and )) as variable 28269 variable: [{ 28270 pattern: /(^\$\(\([\s\S]+)\)\)/, 28271 lookbehind: true 28272 }, /^\$\(\(/], 28273 number: /\b0x[\dA-Fa-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee]-?\d+)?/, 28274 // Operators according to https://www.gnu.org/software/bash/manual/bashref.html#Shell-Arithmetic 28275 operator: /--?|-=|\+\+?|\+=|!=?|~|\*\*?|\*=|\/=?|%=?|<<=?|>>=?|<=?|>=?|==?|&&?|&=|\^=?|\|\|?|\|=|\?|:/, 28276 // If there is no $ sign at the beginning highlight (( and )) as punctuation 28277 punctuation: /\(\(?|\)\)?|,|;/ 28278 } 28279 }, // Command Substitution 28280 { 28281 pattern: /\$\([^)]+\)|`[^`]+`/, 28282 greedy: true, 28283 inside: { 28284 variable: /^\$\(|^`|\)$|`$/ 28285 } 28286 }, /\$(?:[\w#?*!@]+|\{[^}]+\})/i] 28287 }; 28288 Prism.languages.bash = { 28289 'shebang': { 28290 pattern: /^#!\s*\/bin\/bash|^#!\s*\/bin\/sh/, 28291 alias: 'important' 28292 }, 28293 'comment': { 28294 pattern: /(^|[^"{\\])#.*/, 28295 lookbehind: true 28296 }, 28297 'string': [//Support for Here-Documents https://en.wikipedia.org/wiki/Here_document 28298 { 28299 pattern: /((?:^|[^<])<<\s*)["']?(\w+?)["']?\s*\r?\n(?:[\s\S])*?\r?\n\2/, 28300 lookbehind: true, 28301 greedy: true, 28302 inside: insideString 28303 }, { 28304 pattern: /(["'])(?:\\[\s\S]|\$\([^)]+\)|`[^`]+`|(?!\1)[^\\])*\1/, 28305 greedy: true, 28306 inside: insideString 28307 }], 28308 'variable': insideString.variable, 28309 // Originally based on http://ss64.com/bash/ 28310 'function': { 28311 pattern: /(^|[\s;|&])(?:add|alias|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|builtin|bzip2|cal|cat|cd|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|comm|command|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|du|egrep|eject|enable|env|ethtool|eval|exec|expand|expect|export|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|getopts|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|hash|head|help|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logout|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|popd|pr|printcap|printenv|printf|ps|pushd|pv|pwd|quota|quotacheck|quotactl|ram|rar|rcp|read|readarray|readonly|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|shift|shopt|shutdown|sleep|slocate|sort|source|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tail|tar|tee|test|time|timeout|times|top|touch|tr|traceroute|trap|tsort|tty|type|ulimit|umask|umount|unalias|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zip|zypper)(?=$|[\s;|&])/, 28312 lookbehind: true 28313 }, 28314 'keyword': { 28315 pattern: /(^|[\s;|&])(?:let|:|\.|if|then|else|elif|fi|for|break|continue|while|in|case|function|select|do|done|until|echo|exit|return|set|declare)(?=$|[\s;|&])/, 28316 lookbehind: true 28317 }, 28318 'boolean': { 28319 pattern: /(^|[\s;|&])(?:true|false)(?=$|[\s;|&])/, 28320 lookbehind: true 28321 }, 28322 'operator': /&&?|\|\|?|==?|!=?|<<<?|>>|<=?|>=?|=~/, 28323 'punctuation': /\$?\(\(?|\)\)?|\.\.|[{}[\];]/ 28324 }; 28325 var inside = insideString.variable[1].inside; 28326 inside.string = Prism.languages.bash.string; 28327 inside['function'] = Prism.languages.bash['function']; 28328 inside.keyword = Prism.languages.bash.keyword; 28329 inside['boolean'] = Prism.languages.bash['boolean']; 28330 inside.operator = Prism.languages.bash.operator; 28331 inside.punctuation = Prism.languages.bash.punctuation; 28332 Prism.languages.shell = Prism.languages.bash; 28333})(_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a); 28334/* "prismjs/components/prism-clike" */ 28335 28336 28337_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.clike = { 28338 'comment': [{ 28339 pattern: /(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/, 28340 lookbehind: true 28341 }, { 28342 pattern: /(^|[^\\:])\/\/.*/, 28343 lookbehind: true, 28344 greedy: true 28345 }], 28346 'string': { 28347 pattern: /(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/, 28348 greedy: true 28349 }, 28350 'class-name': { 28351 pattern: /((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[\w.\\]+/i, 28352 lookbehind: true, 28353 inside: { 28354 punctuation: /[.\\]/ 28355 } 28356 }, 28357 'keyword': /\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/, 28358 'boolean': /\b(?:true|false)\b/, 28359 'function': /\w+(?=\()/, 28360 'number': /\b0x[\da-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?/i, 28361 'operator': /--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/, 28362 'punctuation': /[{}[\];(),.:]/ 28363}; 28364/* "prismjs/components/prism-c" */ 28365 28366_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.c = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.extend('clike', { 28367 'class-name': { 28368 pattern: /(\b(?:enum|struct)\s+)\w+/, 28369 lookbehind: true 28370 }, 28371 'keyword': /\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\b/, 28372 'operator': />>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/, 28373 'number': /(?:\b0x(?:[\da-f]+\.?[\da-f]*|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+\.?\d*|\B\.\d+)(?:e[+-]?\d+)?)[ful]*/i 28374}); 28375_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.insertBefore('c', 'string', { 28376 'macro': { 28377 // allow for multiline macro definitions 28378 // spaces after the # character compile fine with gcc 28379 pattern: /(^\s*)#\s*[a-z]+(?:[^\r\n\\]|\\(?:\r\n|[\s\S]))*/im, 28380 lookbehind: true, 28381 alias: 'property', 28382 inside: { 28383 // highlight the path of the include statement as a string 28384 'string': { 28385 pattern: /(#\s*include\s*)(?:<.+?>|("|')(?:\\?.)+?\2)/, 28386 lookbehind: true 28387 }, 28388 // highlight macro directives as keywords 28389 'directive': { 28390 pattern: /(#\s*)\b(?:define|defined|elif|else|endif|error|ifdef|ifndef|if|import|include|line|pragma|undef|using)\b/, 28391 lookbehind: true, 28392 alias: 'keyword' 28393 } 28394 } 28395 }, 28396 // highlight predefined macros as constants 28397 'constant': /\b(?:__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|__func__|EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|stdin|stdout|stderr)\b/ 28398}); 28399delete _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.c['boolean']; 28400/* "prismjs/components/prism-cpp" */ 28401 28402_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.cpp = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.extend('c', { 28403 'class-name': { 28404 pattern: /(\b(?:class|enum|struct)\s+)\w+/, 28405 lookbehind: true 28406 }, 28407 'keyword': /\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|class|compl|const|constexpr|const_cast|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|float|for|friend|goto|if|inline|int|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|long|mutable|namespace|new|noexcept|nullptr|operator|private|protected|public|register|reinterpret_cast|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/, 28408 'boolean': /\b(?:true|false)\b/, 28409 'operator': />>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/ 28410}); 28411_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.insertBefore('cpp', 'string', { 28412 'raw-string': { 28413 pattern: /R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/, 28414 alias: 'string', 28415 greedy: true 28416 } 28417}); 28418/* "prismjs/components/prism-css" */ 28419 28420(function (Prism) { 28421 var string = /("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/; 28422 Prism.languages.css = { 28423 'comment': /\/\*[\s\S]*?\*\//, 28424 'atrule': { 28425 pattern: /@[\w-]+?[\s\S]*?(?:;|(?=\s*\{))/i, 28426 inside: { 28427 'rule': /@[\w-]+/ // See rest below 28428 28429 } 28430 }, 28431 'url': RegExp('url\\((?:' + string.source + '|.*?)\\)', 'i'), 28432 'selector': RegExp('[^{}\\s](?:[^{};"\']|' + string.source + ')*?(?=\\s*\\{)'), 28433 'string': { 28434 pattern: string, 28435 greedy: true 28436 }, 28437 'property': /[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*(?=\s*:)/i, 28438 'important': /!important\b/i, 28439 'function': /[-a-z0-9]+(?=\()/i, 28440 'punctuation': /[(){};:,]/ 28441 }; 28442 Prism.languages.css['atrule'].inside.rest = Prism.languages.css; 28443 var markup = Prism.languages.markup; 28444 28445 if (markup) { 28446 markup.tag.addInlined('style', 'css'); 28447 Prism.languages.insertBefore('inside', 'attr-value', { 28448 'style-attr': { 28449 pattern: /\s*style=("|')(?:\\[\s\S]|(?!\1)[^\\])*\1/i, 28450 inside: { 28451 'attr-name': { 28452 pattern: /^\s*style/i, 28453 inside: markup.tag.inside 28454 }, 28455 'punctuation': /^\s*=\s*['"]|['"]\s*$/, 28456 'attr-value': { 28457 pattern: /.+/i, 28458 inside: Prism.languages.css 28459 } 28460 }, 28461 alias: 'language-css' 28462 } 28463 }, markup.tag); 28464 } 28465})(_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a); 28466/* "prismjs/components/prism-css-extras" */ 28467 28468 28469_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.css.selector = { 28470 pattern: _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.css.selector, 28471 inside: { 28472 'pseudo-element': /:(?:after|before|first-letter|first-line|selection)|::[-\w]+/, 28473 'pseudo-class': /:[-\w]+/, 28474 'class': /\.[-:.\w]+/, 28475 'id': /#[-:.\w]+/, 28476 'attribute': { 28477 pattern: /\[(?:[^[\]"']|("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1)*\]/, 28478 greedy: true, 28479 inside: { 28480 'punctuation': /^\[|\]$/, 28481 'case-sensitivity': { 28482 pattern: /(\s)[si]$/i, 28483 lookbehind: true, 28484 alias: 'keyword' 28485 }, 28486 'namespace': { 28487 pattern: /^(\s*)[-*\w\xA0-\uFFFF]*\|(?!=)/, 28488 lookbehind: true, 28489 inside: { 28490 'punctuation': /\|$/ 28491 } 28492 }, 28493 'attribute': { 28494 pattern: /^(\s*)[-\w\xA0-\uFFFF]+/, 28495 lookbehind: true 28496 }, 28497 'value': [/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/, { 28498 pattern: /(=\s*)[-\w\xA0-\uFFFF]+(?=\s*$)/, 28499 lookbehind: true 28500 }], 28501 'operator': /[|~*^$]?=/ 28502 } 28503 }, 28504 'n-th': { 28505 pattern: /(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/, 28506 lookbehind: true, 28507 inside: { 28508 'number': /[\dn]+/, 28509 'operator': /[+-]/ 28510 } 28511 }, 28512 'punctuation': /[()]/ 28513 } 28514}; 28515_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.insertBefore('css', 'property', { 28516 'variable': { 28517 pattern: /(^|[^-\w\xA0-\uFFFF])--[-_a-z\xA0-\uFFFF][-\w\xA0-\uFFFF]*/i, 28518 lookbehind: true 28519 } 28520}); 28521_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.insertBefore('css', 'function', { 28522 'operator': { 28523 pattern: /(\s)[+\-*\/](?=\s)/, 28524 lookbehind: true 28525 }, 28526 'hexcode': /#[\da-f]{3,8}/i, 28527 'entity': /\\[\da-f]{1,8}/i, 28528 'unit': { 28529 pattern: /(\d)(?:%|[a-z]+)/, 28530 lookbehind: true 28531 }, 28532 'number': /-?[\d.]+/ 28533}); 28534/* "prismjs/components/prism-javascript" */ 28535 28536_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.javascript = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.extend('clike', { 28537 'class-name': [_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.clike['class-name'], { 28538 pattern: /(^|[^$\w\xA0-\uFFFF])[_$A-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\.(?:prototype|constructor))/, 28539 lookbehind: true 28540 }], 28541 'keyword': [{ 28542 pattern: /((?:^|})\s*)(?:catch|finally)\b/, 28543 lookbehind: true 28544 }, { 28545 pattern: /(^|[^.])\b(?:as|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/, 28546 lookbehind: true 28547 }], 28548 'number': /\b(?:(?:0[xX][\dA-Fa-f]+|0[bB][01]+|0[oO][0-7]+)n?|\d+n|NaN|Infinity)\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee][+-]?\d+)?/, 28549 // Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444) 28550 'function': /[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/, 28551 'operator': /-[-=]?|\+[+=]?|!=?=?|<<?=?|>>?>?=?|=(?:==?|>)?|&[&=]?|\|[|=]?|\*\*?=?|\/=?|~|\^=?|%=?|\?|\.{3}/ 28552}); 28553_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.javascript['class-name'][0].pattern = /(\b(?:class|interface|extends|implements|instanceof|new)\s+)[\w.\\]+/; 28554_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.insertBefore('javascript', 'keyword', { 28555 'regex': { 28556 pattern: /((?:^|[^$\w\xA0-\uFFFF."'\])\s])\s*)\/(\[(?:[^\]\\\r\n]|\\.)*]|\\.|[^/\\\[\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})\]]))/, 28557 lookbehind: true, 28558 greedy: true 28559 }, 28560 // This must be declared before keyword because we use "function" inside the look-forward 28561 'function-variable': { 28562 pattern: /[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/, 28563 alias: 'function' 28564 }, 28565 'parameter': [{ 28566 pattern: /(function(?:\s+[_$A-Za-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)?\s*\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\))/, 28567 lookbehind: true, 28568 inside: _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.javascript 28569 }, { 28570 pattern: /[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=>)/i, 28571 inside: _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.javascript 28572 }, { 28573 pattern: /(\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\)\s*=>)/, 28574 lookbehind: true, 28575 inside: _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.javascript 28576 }, { 28577 pattern: /((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:[_$A-Za-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*\s*)\(\s*)(?!\s)(?:[^()]|\([^()]*\))+?(?=\s*\)\s*\{)/, 28578 lookbehind: true, 28579 inside: _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.javascript 28580 }], 28581 'constant': /\b[A-Z](?:[A-Z_]|\dx?)*\b/ 28582}); 28583_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.insertBefore('javascript', 'string', { 28584 'template-string': { 28585 pattern: /`(?:\\[\s\S]|\${[^}]+}|[^\\`])*`/, 28586 greedy: true, 28587 inside: { 28588 'interpolation': { 28589 pattern: /\${[^}]+}/, 28590 inside: { 28591 'interpolation-punctuation': { 28592 pattern: /^\${|}$/, 28593 alias: 'punctuation' 28594 }, 28595 rest: _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.javascript 28596 } 28597 }, 28598 'string': /[\s\S]+/ 28599 } 28600 } 28601}); 28602 28603if (_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.markup) { 28604 _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.markup.tag.addInlined('script', 'javascript'); 28605} 28606 28607_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.js = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.javascript; 28608/* "prismjs/components/prism-jsx" */ 28609 28610(function (Prism) { 28611 var javascript = Prism.util.clone(Prism.languages.javascript); 28612 Prism.languages.jsx = Prism.languages.extend('markup', javascript); 28613 Prism.languages.jsx.tag.pattern = /<\/?(?:[\w.:-]+\s*(?:\s+(?:[\w.:-]+(?:=(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s{'">=]+|\{(?:\{(?:\{[^}]*\}|[^{}])*\}|[^{}])+\}))?|\{\.{3}[a-z_$][\w$]*(?:\.[a-z_$][\w$]*)*\}))*\s*\/?)?>/i; 28614 Prism.languages.jsx.tag.inside['tag'].pattern = /^<\/?[^\s>\/]*/i; 28615 Prism.languages.jsx.tag.inside['attr-value'].pattern = /=(?!\{)(?:("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|[^\s'">]+)/i; 28616 Prism.languages.jsx.tag.inside['tag'].inside['class-name'] = /^[A-Z]\w*(?:\.[A-Z]\w*)*$/; 28617 Prism.languages.insertBefore('inside', 'attr-name', { 28618 'spread': { 28619 pattern: /\{\.{3}[a-z_$][\w$]*(?:\.[a-z_$][\w$]*)*\}/, 28620 inside: { 28621 'punctuation': /\.{3}|[{}.]/, 28622 'attr-value': /\w+/ 28623 } 28624 } 28625 }, Prism.languages.jsx.tag); 28626 Prism.languages.insertBefore('inside', 'attr-value', { 28627 'script': { 28628 // Allow for two levels of nesting 28629 pattern: /=(\{(?:\{(?:\{[^}]*\}|[^}])*\}|[^}])+\})/i, 28630 inside: { 28631 'script-punctuation': { 28632 pattern: /^=(?={)/, 28633 alias: 'punctuation' 28634 }, 28635 rest: Prism.languages.jsx 28636 }, 28637 'alias': 'language-javascript' 28638 } 28639 }, Prism.languages.jsx.tag); // The following will handle plain text inside tags 28640 28641 var stringifyToken = function stringifyToken(token) { 28642 if (!token) { 28643 return ''; 28644 } 28645 28646 if (typeof token === 'string') { 28647 return token; 28648 } 28649 28650 if (typeof token.content === 'string') { 28651 return token.content; 28652 } 28653 28654 return token.content.map(stringifyToken).join(''); 28655 }; 28656 28657 var walkTokens = function walkTokens(tokens) { 28658 var openedTags = []; 28659 28660 for (var i = 0; i < tokens.length; i++) { 28661 var token = tokens[i]; 28662 var notTagNorBrace = false; 28663 28664 if (typeof token !== 'string') { 28665 if (token.type === 'tag' && token.content[0] && token.content[0].type === 'tag') { 28666 // We found a tag, now find its kind 28667 if (token.content[0].content[0].content === '</') { 28668 // Closing tag 28669 if (openedTags.length > 0 && openedTags[openedTags.length - 1].tagName === stringifyToken(token.content[0].content[1])) { 28670 // Pop matching opening tag 28671 openedTags.pop(); 28672 } 28673 } else { 28674 if (token.content[token.content.length - 1].content === '/>') {} else { 28675 // Opening tag 28676 openedTags.push({ 28677 tagName: stringifyToken(token.content[0].content[1]), 28678 openedBraces: 0 28679 }); 28680 } 28681 } 28682 } else if (openedTags.length > 0 && token.type === 'punctuation' && token.content === '{') { 28683 // Here we might have entered a JSX context inside a tag 28684 openedTags[openedTags.length - 1].openedBraces++; 28685 } else if (openedTags.length > 0 && openedTags[openedTags.length - 1].openedBraces > 0 && token.type === 'punctuation' && token.content === '}') { 28686 // Here we might have left a JSX context inside a tag 28687 openedTags[openedTags.length - 1].openedBraces--; 28688 } else { 28689 notTagNorBrace = true; 28690 } 28691 } 28692 28693 if (notTagNorBrace || typeof token === 'string') { 28694 if (openedTags.length > 0 && openedTags[openedTags.length - 1].openedBraces === 0) { 28695 // Here we are inside a tag, and not inside a JSX context. 28696 // That's plain text: drop any tokens matched. 28697 var plainText = stringifyToken(token); // And merge text with adjacent text 28698 28699 if (i < tokens.length - 1 && (typeof tokens[i + 1] === 'string' || tokens[i + 1].type === 'plain-text')) { 28700 plainText += stringifyToken(tokens[i + 1]); 28701 tokens.splice(i + 1, 1); 28702 } 28703 28704 if (i > 0 && (typeof tokens[i - 1] === 'string' || tokens[i - 1].type === 'plain-text')) { 28705 plainText = stringifyToken(tokens[i - 1]) + plainText; 28706 tokens.splice(i - 1, 1); 28707 i--; 28708 } 28709 28710 tokens[i] = new Prism.Token('plain-text', plainText, null, plainText); 28711 } 28712 } 28713 28714 if (token.content && typeof token.content !== 'string') { 28715 walkTokens(token.content); 28716 } 28717 } 28718 }; 28719 28720 Prism.hooks.add('after-tokenize', function (env) { 28721 if (env.language !== 'jsx' && env.language !== 'tsx') { 28722 return; 28723 } 28724 28725 walkTokens(env.tokens); 28726 }); 28727})(_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a); 28728/* "prismjs/components/prism-javadoclike" */ 28729 28730 28731(function (Prism) { 28732 var javaDocLike = Prism.languages.javadoclike = { 28733 'parameter': { 28734 pattern: /(^\s*(?:\/{3}|\*|\/\*\*)\s*@(?:param|arg|arguments)\s+)\w+/m, 28735 lookbehind: true 28736 }, 28737 'keyword': { 28738 // keywords are the first word in a line preceded be an `@` or surrounded by curly braces. 28739 // @word, {@word} 28740 pattern: /(^\s*(?:\/{3}|\*|\/\*\*)\s*|\{)@[a-z][a-zA-Z-]+\b/m, 28741 lookbehind: true 28742 }, 28743 'punctuation': /[{}]/ 28744 }; 28745 /** 28746 * Adds doc comment support to the given language and calls a given callback on each doc comment pattern. 28747 * 28748 * @param {string} lang the language add doc comment support to. 28749 * @param {(pattern: {inside: {rest: undefined}}) => void} callback the function called with each doc comment pattern as argument. 28750 */ 28751 28752 function docCommentSupport(lang, callback) { 28753 var tokenName = 'doc-comment'; 28754 var grammar = Prism.languages[lang]; 28755 28756 if (!grammar) { 28757 return; 28758 } 28759 28760 var token = grammar[tokenName]; 28761 28762 if (!token) { 28763 // add doc comment: /** */ 28764 var definition = {}; 28765 definition[tokenName] = { 28766 pattern: /(^|[^\\])\/\*\*[^/][\s\S]*?(?:\*\/|$)/, 28767 alias: 'comment' 28768 }; 28769 grammar = Prism.languages.insertBefore(lang, 'comment', definition); 28770 token = grammar[tokenName]; 28771 } 28772 28773 if (token instanceof RegExp) { 28774 // convert regex to object 28775 token = grammar[tokenName] = { 28776 pattern: token 28777 }; 28778 } 28779 28780 if (Array.isArray(token)) { 28781 for (var i = 0, l = token.length; i < l; i++) { 28782 if (token[i] instanceof RegExp) { 28783 token[i] = { 28784 pattern: token[i] 28785 }; 28786 } 28787 28788 callback(token[i]); 28789 } 28790 } else { 28791 callback(token); 28792 } 28793 } 28794 /** 28795 * Adds doc-comment support to the given languages for the given documentation language. 28796 * 28797 * @param {string[]|string} languages 28798 * @param {Object} docLanguage 28799 */ 28800 28801 28802 function addSupport(languages, docLanguage) { 28803 if (typeof languages === 'string') { 28804 languages = [languages]; 28805 } 28806 28807 languages.forEach(function (lang) { 28808 docCommentSupport(lang, function (pattern) { 28809 if (!pattern.inside) { 28810 pattern.inside = {}; 28811 } 28812 28813 pattern.inside.rest = docLanguage; 28814 }); 28815 }); 28816 } 28817 28818 Object.defineProperty(javaDocLike, 'addSupport', { 28819 value: addSupport 28820 }); 28821 javaDocLike.addSupport(['java', 'javascript', 'php'], javaDocLike); 28822})(_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a); 28823/* "prismjs/components/prism-java" */ 28824 28825 28826(function (Prism) { 28827 var keywords = /\b(?:abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while|var|null|exports|module|open|opens|provides|requires|to|transitive|uses|with)\b/; // based on the java naming conventions 28828 28829 var className = /\b[A-Z](?:\w*[a-z]\w*)?\b/; 28830 Prism.languages.java = Prism.languages.extend('clike', { 28831 'class-name': [className, // variables and parameters 28832 // this to support class names (or generic parameters) which do not contain a lower case letter (also works for methods) 28833 /\b[A-Z]\w*(?=\s+\w+\s*[;,=())])/], 28834 'keyword': keywords, 28835 'function': [Prism.languages.clike.function, { 28836 pattern: /(\:\:)[a-z_]\w*/, 28837 lookbehind: true 28838 }], 28839 'number': /\b0b[01][01_]*L?\b|\b0x[\da-f_]*\.?[\da-f_p+-]+\b|(?:\b\d[\d_]*\.?[\d_]*|\B\.\d[\d_]*)(?:e[+-]?\d[\d_]*)?[dfl]?/i, 28840 'operator': { 28841 pattern: /(^|[^.])(?:<<=?|>>>?=?|->|([-+&|])\2|[?:~]|[-+*/%&|^!=<>]=?)/m, 28842 lookbehind: true 28843 } 28844 }); 28845 Prism.languages.insertBefore('java', 'class-name', { 28846 'annotation': { 28847 alias: 'punctuation', 28848 pattern: /(^|[^.])@\w+/, 28849 lookbehind: true 28850 }, 28851 'namespace': { 28852 pattern: /(\b(?:exports|import(?:\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\s+)[a-z]\w*(\.[a-z]\w*)+/, 28853 lookbehind: true, 28854 inside: { 28855 'punctuation': /\./ 28856 } 28857 }, 28858 'generics': { 28859 pattern: /<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<(?:[\w\s,.&?]|<[\w\s,.&?]*>)*>)*>)*>/, 28860 inside: { 28861 'class-name': className, 28862 'keyword': keywords, 28863 'punctuation': /[<>(),.:]/, 28864 'operator': /[?&|]/ 28865 } 28866 } 28867 }); 28868})(_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a); 28869/* "prismjs/components/prism-markup-templating" */ 28870 28871 28872(function (Prism) { 28873 /** 28874 * Returns the placeholder for the given language id and index. 28875 * 28876 * @param {string} language 28877 * @param {string|number} index 28878 * @returns {string} 28879 */ 28880 function getPlaceholder(language, index) { 28881 return '___' + language.toUpperCase() + index + '___'; 28882 } 28883 28884 Object.defineProperties(Prism.languages['markup-templating'] = {}, { 28885 buildPlaceholders: { 28886 /** 28887 * Tokenize all inline templating expressions matching `placeholderPattern`. 28888 * 28889 * If `replaceFilter` is provided, only matches of `placeholderPattern` for which `replaceFilter` returns 28890 * `true` will be replaced. 28891 * 28892 * @param {object} env The environment of the `before-tokenize` hook. 28893 * @param {string} language The language id. 28894 * @param {RegExp} placeholderPattern The matches of this pattern will be replaced by placeholders. 28895 * @param {(match: string) => boolean} [replaceFilter] 28896 */ 28897 value: function value(env, language, placeholderPattern, replaceFilter) { 28898 if (env.language !== language) { 28899 return; 28900 } 28901 28902 var tokenStack = env.tokenStack = []; 28903 env.code = env.code.replace(placeholderPattern, function (match) { 28904 if (typeof replaceFilter === 'function' && !replaceFilter(match)) { 28905 return match; 28906 } 28907 28908 var i = tokenStack.length; 28909 var placeholder; // Check for existing strings 28910 28911 while (env.code.indexOf(placeholder = getPlaceholder(language, i)) !== -1) { 28912 ++i; 28913 } // Create a sparse array 28914 28915 28916 tokenStack[i] = match; 28917 return placeholder; 28918 }); // Switch the grammar to markup 28919 28920 env.grammar = Prism.languages.markup; 28921 } 28922 }, 28923 tokenizePlaceholders: { 28924 /** 28925 * Replace placeholders with proper tokens after tokenizing. 28926 * 28927 * @param {object} env The environment of the `after-tokenize` hook. 28928 * @param {string} language The language id. 28929 */ 28930 value: function value(env, language) { 28931 if (env.language !== language || !env.tokenStack) { 28932 return; 28933 } // Switch the grammar back 28934 28935 28936 env.grammar = Prism.languages[language]; 28937 var j = 0; 28938 var keys = Object.keys(env.tokenStack); 28939 28940 function walkTokens(tokens) { 28941 for (var i = 0; i < tokens.length; i++) { 28942 // all placeholders are replaced already 28943 if (j >= keys.length) { 28944 break; 28945 } 28946 28947 var token = tokens[i]; 28948 28949 if (typeof token === 'string' || token.content && typeof token.content === 'string') { 28950 var k = keys[j]; 28951 var t = env.tokenStack[k]; 28952 var s = typeof token === 'string' ? token : token.content; 28953 var placeholder = getPlaceholder(language, k); 28954 var index = s.indexOf(placeholder); 28955 28956 if (index > -1) { 28957 ++j; 28958 var before = s.substring(0, index); 28959 var middle = new Prism.Token(language, Prism.tokenize(t, env.grammar), 'language-' + language, t); 28960 var after = s.substring(index + placeholder.length); 28961 var replacement = []; 28962 28963 if (before) { 28964 replacement.push.apply(replacement, walkTokens([before])); 28965 } 28966 28967 replacement.push(middle); 28968 28969 if (after) { 28970 replacement.push.apply(replacement, walkTokens([after])); 28971 } 28972 28973 if (typeof token === 'string') { 28974 tokens.splice.apply(tokens, [i, 1].concat(replacement)); 28975 } else { 28976 token.content = replacement; 28977 } 28978 } 28979 } else if (token.content 28980 /* && typeof token.content !== 'string' */ 28981 ) { 28982 walkTokens(token.content); 28983 } 28984 } 28985 28986 return tokens; 28987 } 28988 28989 walkTokens(env.tokens); 28990 } 28991 } 28992 }); 28993})(_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a); 28994/* "prismjs/components/prism-php" */ 28995 28996/** 28997 * Original by Aaron Harun: http://aahacreative.com/2012/07/31/php-syntax-highlighting-prism/ 28998 * Modified by Miles Johnson: http://milesj.me 28999 * 29000 * Supports the following: 29001 * - Extends clike syntax 29002 * - Support for PHP 5.3+ (namespaces, traits, generators, etc) 29003 * - Smarter constant and function matching 29004 * 29005 * Adds the following new token classes: 29006 * constant, delimiter, variable, function, package 29007 */ 29008 29009 29010(function (Prism) { 29011 Prism.languages.php = Prism.languages.extend('clike', { 29012 'keyword': /\b(?:__halt_compiler|abstract|and|array|as|break|callable|case|catch|class|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|eval|exit|extends|final|finally|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|namespace|new|or|parent|print|private|protected|public|require|require_once|return|static|switch|throw|trait|try|unset|use|var|while|xor|yield)\b/i, 29013 'boolean': { 29014 pattern: /\b(?:false|true)\b/i, 29015 alias: 'constant' 29016 }, 29017 'constant': [/\b[A-Z_][A-Z0-9_]*\b/, /\b(?:null)\b/i], 29018 'comment': { 29019 pattern: /(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/, 29020 lookbehind: true 29021 } 29022 }); 29023 Prism.languages.insertBefore('php', 'string', { 29024 'shell-comment': { 29025 pattern: /(^|[^\\])#.*/, 29026 lookbehind: true, 29027 alias: 'comment' 29028 } 29029 }); 29030 Prism.languages.insertBefore('php', 'comment', { 29031 'delimiter': { 29032 pattern: /\?>$|^<\?(?:php(?=\s)|=)?/i, 29033 alias: 'important' 29034 } 29035 }); 29036 Prism.languages.insertBefore('php', 'keyword', { 29037 'variable': /\$+(?:\w+\b|(?={))/i, 29038 'package': { 29039 pattern: /(\\|namespace\s+|use\s+)[\w\\]+/, 29040 lookbehind: true, 29041 inside: { 29042 punctuation: /\\/ 29043 } 29044 } 29045 }); // Must be defined after the function pattern 29046 29047 Prism.languages.insertBefore('php', 'operator', { 29048 'property': { 29049 pattern: /(->)[\w]+/, 29050 lookbehind: true 29051 } 29052 }); 29053 var string_interpolation = { 29054 pattern: /{\$(?:{(?:{[^{}]+}|[^{}]+)}|[^{}])+}|(^|[^\\{])\$+(?:\w+(?:\[.+?]|->\w+)*)/, 29055 lookbehind: true, 29056 inside: { 29057 rest: Prism.languages.php 29058 } 29059 }; 29060 Prism.languages.insertBefore('php', 'string', { 29061 'nowdoc-string': { 29062 pattern: /<<<'([^']+)'(?:\r\n?|\n)(?:.*(?:\r\n?|\n))*?\1;/, 29063 greedy: true, 29064 alias: 'string', 29065 inside: { 29066 'delimiter': { 29067 pattern: /^<<<'[^']+'|[a-z_]\w*;$/i, 29068 alias: 'symbol', 29069 inside: { 29070 'punctuation': /^<<<'?|[';]$/ 29071 } 29072 } 29073 } 29074 }, 29075 'heredoc-string': { 29076 pattern: /<<<(?:"([^"]+)"(?:\r\n?|\n)(?:.*(?:\r\n?|\n))*?\1;|([a-z_]\w*)(?:\r\n?|\n)(?:.*(?:\r\n?|\n))*?\2;)/i, 29077 greedy: true, 29078 alias: 'string', 29079 inside: { 29080 'delimiter': { 29081 pattern: /^<<<(?:"[^"]+"|[a-z_]\w*)|[a-z_]\w*;$/i, 29082 alias: 'symbol', 29083 inside: { 29084 'punctuation': /^<<<"?|[";]$/ 29085 } 29086 }, 29087 'interpolation': string_interpolation // See below 29088 29089 } 29090 }, 29091 'single-quoted-string': { 29092 pattern: /'(?:\\[\s\S]|[^\\'])*'/, 29093 greedy: true, 29094 alias: 'string' 29095 }, 29096 'double-quoted-string': { 29097 pattern: /"(?:\\[\s\S]|[^\\"])*"/, 29098 greedy: true, 29099 alias: 'string', 29100 inside: { 29101 'interpolation': string_interpolation // See below 29102 29103 } 29104 } 29105 }); // The different types of PHP strings "replace" the C-like standard string 29106 29107 delete Prism.languages.php['string']; 29108 Prism.hooks.add('before-tokenize', function (env) { 29109 if (!/<\?/.test(env.code)) { 29110 return; 29111 } 29112 29113 var phpPattern = /<\?(?:[^"'/#]|\/(?![*/])|("|')(?:\\[\s\S]|(?!\1)[^\\])*\1|(?:\/\/|#)(?:[^?\n\r]|\?(?!>))*|\/\*[\s\S]*?(?:\*\/|$))*?(?:\?>|$)/ig; 29114 Prism.languages['markup-templating'].buildPlaceholders(env, 'php', phpPattern); 29115 }); 29116 Prism.hooks.add('after-tokenize', function (env) { 29117 Prism.languages['markup-templating'].tokenizePlaceholders(env, 'php'); 29118 }); 29119})(_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a); 29120/* "prismjs/components/prism-jsdoc" */ 29121 29122 29123(function (Prism) { 29124 var javascript = Prism.languages.javascript; 29125 var type = /{(?:[^{}]|{(?:[^{}]|{[^{}]*})*})+}/.source; 29126 var parameterPrefix = '(@(?:param|arg|argument|property)\\s+(?:' + type + '\\s+)?)'; 29127 Prism.languages.jsdoc = Prism.languages.extend('javadoclike', { 29128 'parameter': { 29129 // @param {string} foo - foo bar 29130 pattern: RegExp(parameterPrefix + /[$\w\xA0-\uFFFF.]+(?=\s|$)/.source), 29131 lookbehind: true, 29132 inside: { 29133 'punctuation': /\./ 29134 } 29135 } 29136 }); 29137 Prism.languages.insertBefore('jsdoc', 'keyword', { 29138 'optional-parameter': { 29139 // @param {string} [baz.foo="bar"] foo bar 29140 pattern: RegExp(parameterPrefix + /\[[$\w\xA0-\uFFFF.]+(?:=[^[\]]+)?\](?=\s|$)/.source), 29141 lookbehind: true, 29142 inside: { 29143 'parameter': { 29144 pattern: /(^\[)[$\w\xA0-\uFFFF\.]+/, 29145 lookbehind: true, 29146 inside: { 29147 'punctuation': /\./ 29148 } 29149 }, 29150 'code': { 29151 pattern: /(=)[\s\S]*(?=\]$)/, 29152 lookbehind: true, 29153 inside: javascript, 29154 alias: 'language-javascript' 29155 }, 29156 'punctuation': /[=[\]]/ 29157 } 29158 }, 29159 'class-name': [{ 29160 pattern: RegExp('(@[a-z]+\\s+)' + type), 29161 lookbehind: true, 29162 inside: { 29163 'punctuation': /[.,:?=<>|{}()[\]]/ 29164 } 29165 }, { 29166 pattern: /(@(?:augments|extends|class|interface|memberof!?|this)\s+)[A-Z]\w*(?:\.[A-Z]\w*)*/, 29167 lookbehind: true, 29168 inside: { 29169 'punctuation': /\./ 29170 } 29171 }], 29172 'example': { 29173 pattern: /(@example\s+)[^@]+?(?=\s*(?:\*\s*)?(?:@\w|\*\/))/, 29174 lookbehind: true, 29175 inside: { 29176 'code': { 29177 pattern: /^(\s*(?:\*\s*)?).+$/m, 29178 lookbehind: true, 29179 inside: javascript, 29180 alias: 'language-javascript' 29181 } 29182 } 29183 } 29184 }); 29185 Prism.languages.javadoclike.addSupport('javascript', Prism.languages.jsdoc); 29186})(_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a); 29187/* "prismjs/components/prism-actionscript" */ 29188 29189 29190_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.actionscript = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.extend('javascript', { 29191 'keyword': /\b(?:as|break|case|catch|class|const|default|delete|do|else|extends|finally|for|function|if|implements|import|in|instanceof|interface|internal|is|native|new|null|package|private|protected|public|return|super|switch|this|throw|try|typeof|use|var|void|while|with|dynamic|each|final|get|include|namespace|native|override|set|static)\b/, 29192 'operator': /\+\+|--|(?:[+\-*\/%^]|&&?|\|\|?|<<?|>>?>?|[!=]=?)=?|[~?@]/ 29193}); 29194_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.actionscript['class-name'].alias = 'function'; 29195 29196if (_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.markup) { 29197 _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.insertBefore('actionscript', 'string', { 29198 'xml': { 29199 pattern: /(^|[^.])<\/?\w+(?:\s+[^\s>\/=]+=("|')(?:\\[\s\S]|(?!\2)[^\\])*\2)*\s*\/?>/, 29200 lookbehind: true, 29201 inside: { 29202 rest: _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.markup 29203 } 29204 } 29205 }); 29206} 29207/* "prismjs/components/prism-coffeescript" */ 29208 29209 29210(function (Prism) { 29211 // Ignore comments starting with { to privilege string interpolation highlighting 29212 var comment = /#(?!\{).+/, 29213 interpolation = { 29214 pattern: /#\{[^}]+\}/, 29215 alias: 'variable' 29216 }; 29217 Prism.languages.coffeescript = Prism.languages.extend('javascript', { 29218 'comment': comment, 29219 'string': [// Strings are multiline 29220 { 29221 pattern: /'(?:\\[\s\S]|[^\\'])*'/, 29222 greedy: true 29223 }, { 29224 // Strings are multiline 29225 pattern: /"(?:\\[\s\S]|[^\\"])*"/, 29226 greedy: true, 29227 inside: { 29228 'interpolation': interpolation 29229 } 29230 }], 29231 'keyword': /\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/, 29232 'class-member': { 29233 pattern: /@(?!\d)\w+/, 29234 alias: 'variable' 29235 } 29236 }); 29237 Prism.languages.insertBefore('coffeescript', 'comment', { 29238 'multiline-comment': { 29239 pattern: /###[\s\S]+?###/, 29240 alias: 'comment' 29241 }, 29242 // Block regexp can contain comments and interpolation 29243 'block-regex': { 29244 pattern: /\/{3}[\s\S]*?\/{3}/, 29245 alias: 'regex', 29246 inside: { 29247 'comment': comment, 29248 'interpolation': interpolation 29249 } 29250 } 29251 }); 29252 Prism.languages.insertBefore('coffeescript', 'string', { 29253 'inline-javascript': { 29254 pattern: /`(?:\\[\s\S]|[^\\`])*`/, 29255 inside: { 29256 'delimiter': { 29257 pattern: /^`|`$/, 29258 alias: 'punctuation' 29259 }, 29260 rest: Prism.languages.javascript 29261 } 29262 }, 29263 // Block strings 29264 'multiline-string': [{ 29265 pattern: /'''[\s\S]*?'''/, 29266 greedy: true, 29267 alias: 'string' 29268 }, { 29269 pattern: /"""[\s\S]*?"""/, 29270 greedy: true, 29271 alias: 'string', 29272 inside: { 29273 interpolation: interpolation 29274 } 29275 }] 29276 }); 29277 Prism.languages.insertBefore('coffeescript', 'keyword', { 29278 // Object property 29279 'property': /(?!\d)\w+(?=\s*:(?!:))/ 29280 }); 29281 delete Prism.languages.coffeescript['template-string']; 29282 Prism.languages.coffee = Prism.languages.coffeescript; 29283})(_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a); 29284/* "prismjs/components/prism-js-extras" */ 29285 29286 29287(function (Prism) { 29288 Prism.languages.insertBefore('javascript', 'function-variable', { 29289 'method-variable': { 29290 pattern: RegExp('(\\.\\s*)' + Prism.languages.javascript['function-variable'].pattern.source), 29291 lookbehind: true, 29292 alias: ['function-variable', 'method', 'function', 'property-access'] 29293 } 29294 }); 29295 Prism.languages.insertBefore('javascript', 'function', { 29296 'method': { 29297 pattern: RegExp('(\\.\\s*)' + Prism.languages.javascript['function'].source), 29298 lookbehind: true, 29299 alias: ['function', 'property-access'] 29300 } 29301 }); 29302 Prism.languages.insertBefore('javascript', 'constant', { 29303 'known-class-name': [{ 29304 // standard built-ins 29305 // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects 29306 pattern: /\b(?:(?:(?:Uint|Int)(?:8|16|32)|Uint8Clamped|Float(?:32|64))?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|(?:Weak)?(?:Set|Map)|WebAssembly)\b/, 29307 alias: 'class-name' 29308 }, { 29309 // errors 29310 pattern: /\b(?:[A-Z]\w*)Error\b/, 29311 alias: 'class-name' 29312 }] 29313 }); 29314 Prism.languages.javascript['keyword'].unshift({ 29315 pattern: /\b(?:as|default|export|from|import)\b/, 29316 alias: 'module' 29317 }, { 29318 pattern: /\bnull\b/, 29319 alias: ['null', 'nil'] 29320 }, { 29321 pattern: /\bundefined\b/, 29322 alias: 'nil' 29323 }); 29324 Prism.languages.insertBefore('javascript', 'operator', { 29325 'spread': { 29326 pattern: /\.{3}/, 29327 alias: 'operator' 29328 }, 29329 'arrow': { 29330 pattern: /=>/, 29331 alias: 'operator' 29332 } 29333 }); 29334 Prism.languages.insertBefore('javascript', 'punctuation', { 29335 'property-access': { 29336 pattern: /(\.\s*)[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*/, 29337 lookbehind: true 29338 }, 29339 'maybe-class-name': { 29340 pattern: /(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/, 29341 lookbehind: true 29342 }, 29343 'dom': { 29344 // this contains only a few commonly used DOM variables 29345 pattern: /\b(?:document|location|navigator|performance|(?:local|session)Storage|window)\b/, 29346 alias: 'variable' 29347 }, 29348 'console': { 29349 pattern: /\bconsole(?=\s*\.)/, 29350 alias: 'class-name' 29351 } 29352 }); // add 'maybe-class-name' to tokens which might be a class name 29353 29354 var maybeClassNameTokens = ['function', 'function-variable', 'method', 'method-variable', 'property-access']; 29355 29356 for (var i = 0; i < maybeClassNameTokens.length; i++) { 29357 var token = maybeClassNameTokens[i]; 29358 var value = Prism.languages.javascript[token]; // convert regex to object 29359 29360 if (Prism.util.type(value) === 'RegExp') { 29361 value = Prism.languages.javascript[token] = { 29362 pattern: value 29363 }; 29364 } // keep in mind that we don't support arrays 29365 29366 29367 var inside = value.inside || {}; 29368 value.inside = inside; 29369 inside['maybe-class-name'] = /^[A-Z][\s\S]*/; 29370 } 29371})(_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a); 29372/* "prismjs/components/prism-flow" */ 29373 29374 29375(function (Prism) { 29376 Prism.languages.flow = Prism.languages.extend('javascript', {}); 29377 Prism.languages.insertBefore('flow', 'keyword', { 29378 'type': [{ 29379 pattern: /\b(?:[Nn]umber|[Ss]tring|[Bb]oolean|Function|any|mixed|null|void)\b/, 29380 alias: 'tag' 29381 }] 29382 }); 29383 Prism.languages.flow['function-variable'].pattern = /[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*=\s*(?:function\b|(?:\([^()]*\)(?:\s*:\s*\w+)?|[_$a-z\xA0-\uFFFF][$\w\xA0-\uFFFF]*)\s*=>))/i; 29384 delete Prism.languages.flow['parameter']; 29385 Prism.languages.insertBefore('flow', 'operator', { 29386 'flow-punctuation': { 29387 pattern: /\{\||\|\}/, 29388 alias: 'punctuation' 29389 } 29390 }); 29391 29392 if (!Array.isArray(Prism.languages.flow.keyword)) { 29393 Prism.languages.flow.keyword = [Prism.languages.flow.keyword]; 29394 } 29395 29396 Prism.languages.flow.keyword.unshift({ 29397 pattern: /(^|[^$]\b)(?:type|opaque|declare|Class)\b(?!\$)/, 29398 lookbehind: true 29399 }, { 29400 pattern: /(^|[^$]\B)\$(?:await|Diff|Exact|Keys|ObjMap|PropertyType|Shape|Record|Supertype|Subtype|Enum)\b(?!\$)/, 29401 lookbehind: true 29402 }); 29403})(_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a); 29404/* "prismjs/components/prism-n4js" */ 29405 29406 29407_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.n4js = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.extend('javascript', { 29408 // Keywords from N4JS language spec: https://numberfour.github.io/n4js/spec/N4JSSpec.html 29409 'keyword': /\b(?:any|Array|boolean|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|module|new|null|number|package|private|protected|public|return|set|static|string|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/ 29410}); 29411_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.insertBefore('n4js', 'constant', { 29412 // Annotations in N4JS spec: https://numberfour.github.io/n4js/spec/N4JSSpec.html#_annotations 29413 'annotation': { 29414 pattern: /@+\w+/, 29415 alias: 'operator' 29416 } 29417}); 29418_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.n4jsd = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.n4js; 29419/* "prismjs/components/prism-typescript" */ 29420 29421_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.typescript = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.extend('javascript', { 29422 // From JavaScript Prism keyword list and TypeScript language spec: https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md#221-reserved-words 29423 'keyword': /\b(?:abstract|as|async|await|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|is|keyof|let|module|namespace|new|null|of|package|private|protected|public|readonly|return|require|set|static|super|switch|this|throw|try|type|typeof|var|void|while|with|yield)\b/, 29424 'builtin': /\b(?:string|Function|any|number|boolean|Array|symbol|console|Promise|unknown|never)\b/ 29425}); 29426_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.ts = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.typescript; 29427/* "prismjs/components/prism-diff" */ 29428 29429_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.diff = { 29430 'coord': [// Match all kinds of coord lines (prefixed by "+++", "---" or "***"). 29431 /^(?:\*{3}|-{3}|\+{3}).*$/m, // Match "@@ ... @@" coord lines in unified diff. 29432 /^@@.*@@$/m, // Match coord lines in normal diff (starts with a number). 29433 /^\d+.*$/m], 29434 // Match inserted and deleted lines. Support both +/- and >/< styles. 29435 'deleted': /^[-<].*$/m, 29436 'inserted': /^[+>].*$/m, 29437 // Match "different" lines (prefixed with "!") in context diff. 29438 'diff': { 29439 'pattern': /^!(?!!).+$/m, 29440 'alias': 'important' 29441 } 29442}; 29443/* "prismjs/components/prism-git" */ 29444 29445_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.git = { 29446 /* 29447 * A simple one line comment like in a git status command 29448 * For instance: 29449 * $ git status 29450 * # On branch infinite-scroll 29451 * # Your branch and 'origin/sharedBranches/frontendTeam/infinite-scroll' have diverged, 29452 * # and have 1 and 2 different commits each, respectively. 29453 * nothing to commit (working directory clean) 29454 */ 29455 'comment': /^#.*/m, 29456 29457 /* 29458 * Regexp to match the changed lines in a git diff output. Check the example below. 29459 */ 29460 'deleted': /^[-â].*/m, 29461 'inserted': /^\+.*/m, 29462 29463 /* 29464 * a string (double and simple quote) 29465 */ 29466 'string': /("|')(?:\\.|(?!\1)[^\\\r\n])*\1/m, 29467 29468 /* 29469 * a git command. It starts with a random prompt finishing by a $, then "git" then some other parameters 29470 * For instance: 29471 * $ git add file.txt 29472 */ 29473 'command': { 29474 pattern: /^.*\$ git .*$/m, 29475 inside: { 29476 /* 29477 * A git command can contain a parameter starting by a single or a double dash followed by a string 29478 * For instance: 29479 * $ git diff --cached 29480 * $ git log -p 29481 */ 29482 'parameter': /\s--?\w+/m 29483 } 29484 }, 29485 29486 /* 29487 * Coordinates displayed in a git diff command 29488 * For instance: 29489 * $ git diff 29490 * diff --git file.txt file.txt 29491 * index 6214953..1d54a52 100644 29492 * --- file.txt 29493 * +++ file.txt 29494 * @@ -1 +1,2 @@ 29495 * -Here's my tetx file 29496 * +Here's my text file 29497 * +And this is the second line 29498 */ 29499 'coord': /^@@.*@@$/m, 29500 29501 /* 29502 * Match a "commit [SHA1]" line in a git log output. 29503 * For instance: 29504 * $ git log 29505 * commit a11a14ef7e26f2ca62d4b35eac455ce636d0dc09 29506 * Author: lgiraudel 29507 * Date: Mon Feb 17 11:18:34 2014 +0100 29508 * 29509 * Add of a new line 29510 */ 29511 'commit_sha1': /^commit \w{40}$/m 29512}; 29513/* "prismjs/components/prism-go" */ 29514 29515_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.go = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.extend('clike', { 29516 'keyword': /\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/, 29517 'builtin': /\b(?:bool|byte|complex(?:64|128)|error|float(?:32|64)|rune|string|u?int(?:8|16|32|64)?|uintptr|append|cap|close|complex|copy|delete|imag|len|make|new|panic|print(?:ln)?|real|recover)\b/, 29518 'boolean': /\b(?:_|iota|nil|true|false)\b/, 29519 'operator': /[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./, 29520 'number': /(?:\b0x[a-f\d]+|(?:\b\d+\.?\d*|\B\.\d+)(?:e[-+]?\d+)?)i?/i, 29521 'string': { 29522 pattern: /(["'`])(\\[\s\S]|(?!\1)[^\\])*\1/, 29523 greedy: true 29524 } 29525}); 29526delete _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.go['class-name']; 29527/* "prismjs/components/prism-graphql" */ 29528 29529_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.graphql = { 29530 'comment': /#.*/, 29531 'string': { 29532 pattern: /"(?:\\.|[^\\"\r\n])*"/, 29533 greedy: true 29534 }, 29535 'number': /(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i, 29536 'boolean': /\b(?:true|false)\b/, 29537 'variable': /\$[a-z_]\w*/i, 29538 'directive': { 29539 pattern: /@[a-z_]\w*/i, 29540 alias: 'function' 29541 }, 29542 'attr-name': { 29543 pattern: /[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i, 29544 greedy: true 29545 }, 29546 'class-name': { 29547 pattern: /(\b(?:enum|implements|interface|on|scalar|type|union)\s+)[a-zA-Z_]\w*/, 29548 lookbehind: true 29549 }, 29550 'fragment': { 29551 pattern: /(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/, 29552 lookbehind: true, 29553 alias: 'function' 29554 }, 29555 'keyword': /\b(?:enum|fragment|implements|input|interface|mutation|on|query|scalar|schema|type|union)\b/, 29556 'operator': /[!=|]|\.{3}/, 29557 'punctuation': /[!(){}\[\]:=,]/, 29558 'constant': /\b(?!ID\b)[A-Z][A-Z_\d]*\b/ 29559}; 29560/* "prismjs/components/prism-handlebars" */ 29561 29562(function (Prism) { 29563 Prism.languages.handlebars = { 29564 'comment': /\{\{![\s\S]*?\}\}/, 29565 'delimiter': { 29566 pattern: /^\{\{\{?|\}\}\}?$/i, 29567 alias: 'punctuation' 29568 }, 29569 'string': /(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/, 29570 'number': /\b0x[\dA-Fa-f]+\b|(?:\b\d+\.?\d*|\B\.\d+)(?:[Ee][+-]?\d+)?/, 29571 'boolean': /\b(?:true|false)\b/, 29572 'block': { 29573 pattern: /^(\s*~?\s*)[#\/]\S+?(?=\s*~?\s*$|\s)/i, 29574 lookbehind: true, 29575 alias: 'keyword' 29576 }, 29577 'brackets': { 29578 pattern: /\[[^\]]+\]/, 29579 inside: { 29580 punctuation: /\[|\]/, 29581 variable: /[\s\S]+/ 29582 } 29583 }, 29584 'punctuation': /[!"#%&'()*+,.\/;<=>@\[\\\]^`{|}~]/, 29585 'variable': /[^!"#%&'()*+,.\/;<=>@\[\\\]^`{|}~\s]+/ 29586 }; 29587 Prism.hooks.add('before-tokenize', function (env) { 29588 var handlebarsPattern = /\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g; 29589 Prism.languages['markup-templating'].buildPlaceholders(env, 'handlebars', handlebarsPattern); 29590 }); 29591 Prism.hooks.add('after-tokenize', function (env) { 29592 Prism.languages['markup-templating'].tokenizePlaceholders(env, 'handlebars'); 29593 }); 29594})(_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a); 29595/* "prismjs/components/prism-json" */ 29596 29597 29598_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.json = { 29599 'comment': /\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/, 29600 'property': { 29601 pattern: /"(?:\\.|[^\\"\r\n])*"(?=\s*:)/, 29602 greedy: true 29603 }, 29604 'string': { 29605 pattern: /"(?:\\.|[^\\"\r\n])*"(?!\s*:)/, 29606 greedy: true 29607 }, 29608 'number': /-?\d+\.?\d*(e[+-]?\d+)?/i, 29609 'punctuation': /[{}[\],]/, 29610 'operator': /:/, 29611 'boolean': /\b(?:true|false)\b/, 29612 'null': { 29613 pattern: /\bnull\b/, 29614 alias: 'keyword' 29615 } 29616}; 29617/* "prismjs/components/prism-less" */ 29618 29619/* FIXME : 29620 :extend() is not handled specifically : its highlighting is buggy. 29621 Mixin usage must be inside a ruleset to be highlighted. 29622 At-rules (e.g. import) containing interpolations are buggy. 29623 Detached rulesets are highlighted as at-rules. 29624 A comment before a mixin usage prevents the latter to be properly highlighted. 29625 */ 29626 29627_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.less = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.extend('css', { 29628 'comment': [/\/\*[\s\S]*?\*\//, { 29629 pattern: /(^|[^\\])\/\/.*/, 29630 lookbehind: true 29631 }], 29632 'atrule': { 29633 pattern: /@[\w-]+?(?:\([^{}]+\)|[^(){};])*?(?=\s*\{)/i, 29634 inside: { 29635 'punctuation': /[:()]/ 29636 } 29637 }, 29638 // selectors and mixins are considered the same 29639 'selector': { 29640 pattern: /(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\([^{}]*\)|[^{};@])*?(?=\s*\{)/, 29641 inside: { 29642 // mixin parameters 29643 'variable': /@+[\w-]+/ 29644 } 29645 }, 29646 'property': /(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/i, 29647 'operator': /[+\-*\/]/ 29648}); 29649_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.insertBefore('less', 'property', { 29650 'variable': [// Variable declaration (the colon must be consumed!) 29651 { 29652 pattern: /@[\w-]+\s*:/, 29653 inside: { 29654 "punctuation": /:/ 29655 } 29656 }, // Variable usage 29657 /@@?[\w-]+/], 29658 'mixin-usage': { 29659 pattern: /([{;]\s*)[.#](?!\d)[\w-]+.*?(?=[(;])/, 29660 lookbehind: true, 29661 alias: 'function' 29662 } 29663}); 29664/* "prismjs/components/prism-makefile" */ 29665 29666_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.makefile = { 29667 'comment': { 29668 pattern: /(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/, 29669 lookbehind: true 29670 }, 29671 'string': { 29672 pattern: /(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/, 29673 greedy: true 29674 }, 29675 // Built-in target names 29676 'builtin': /\.[A-Z][^:#=\s]+(?=\s*:(?!=))/, 29677 // Targets 29678 'symbol': { 29679 pattern: /^[^:=\r\n]+(?=\s*:(?!=))/m, 29680 inside: { 29681 'variable': /\$+(?:[^(){}:#=\s]+|(?=[({]))/ 29682 } 29683 }, 29684 'variable': /\$+(?:[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/, 29685 'keyword': [// Directives 29686 /-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/, // Functions 29687 { 29688 pattern: /(\()(?:addsuffix|abspath|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:s|list)?)(?=[ \t])/, 29689 lookbehind: true 29690 }], 29691 'operator': /(?:::|[?:+!])?=|[|@]/, 29692 'punctuation': /[:;(){}]/ 29693}; 29694/* "prismjs/components/prism-markdown" */ 29695 29696_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.markdown = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.extend('markup', {}); 29697_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.insertBefore('markdown', 'prolog', { 29698 'blockquote': { 29699 // > ... 29700 pattern: /^>(?:[\t ]*>)*/m, 29701 alias: 'punctuation' 29702 }, 29703 'code': [{ 29704 // Prefixed by 4 spaces or 1 tab 29705 pattern: /^(?: {4}|\t).+/m, 29706 alias: 'keyword' 29707 }, { 29708 // `code` 29709 // ``code`` 29710 pattern: /``.+?``|`[^`\n]+`/, 29711 alias: 'keyword' 29712 }, { 29713 // ```optional language 29714 // code block 29715 // ``` 29716 pattern: /^```[\s\S]*?^```$/m, 29717 greedy: true, 29718 inside: { 29719 'code-block': { 29720 pattern: /^(```.*(?:\r?\n|\r))[\s\S]+?(?=(?:\r?\n|\r)^```$)/m, 29721 lookbehind: true 29722 }, 29723 'code-language': { 29724 pattern: /^(```).+/, 29725 lookbehind: true 29726 }, 29727 'punctuation': /```/ 29728 } 29729 }], 29730 'title': [{ 29731 // title 1 29732 // ======= 29733 // title 2 29734 // ------- 29735 pattern: /\S.*(?:\r?\n|\r)(?:==+|--+)/, 29736 alias: 'important', 29737 inside: { 29738 punctuation: /==+$|--+$/ 29739 } 29740 }, { 29741 // # title 1 29742 // ###### title 6 29743 pattern: /(^\s*)#+.+/m, 29744 lookbehind: true, 29745 alias: 'important', 29746 inside: { 29747 punctuation: /^#+|#+$/ 29748 } 29749 }], 29750 'hr': { 29751 // *** 29752 // --- 29753 // * * * 29754 // ----------- 29755 pattern: /(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m, 29756 lookbehind: true, 29757 alias: 'punctuation' 29758 }, 29759 'list': { 29760 // * item 29761 // + item 29762 // - item 29763 // 1. item 29764 pattern: /(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m, 29765 lookbehind: true, 29766 alias: 'punctuation' 29767 }, 29768 'url-reference': { 29769 // [id]: http://example.com "Optional title" 29770 // [id]: http://example.com 'Optional title' 29771 // [id]: http://example.com (Optional title) 29772 // [id]: <http://example.com> "Optional title" 29773 pattern: /!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/, 29774 inside: { 29775 'variable': { 29776 pattern: /^(!?\[)[^\]]+/, 29777 lookbehind: true 29778 }, 29779 'string': /(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/, 29780 'punctuation': /^[\[\]!:]|[<>]/ 29781 }, 29782 alias: 'url' 29783 }, 29784 'bold': { 29785 // **strong** 29786 // __strong__ 29787 // Allow only one line break 29788 pattern: /(^|[^\\])(\*\*|__)(?:(?:\r?\n|\r)(?!\r?\n|\r)|.)+?\2/, 29789 lookbehind: true, 29790 greedy: true, 29791 inside: { 29792 'punctuation': /^\*\*|^__|\*\*$|__$/ 29793 } 29794 }, 29795 'italic': { 29796 // *em* 29797 // _em_ 29798 // Allow only one line break 29799 pattern: /(^|[^\\])([*_])(?:(?:\r?\n|\r)(?!\r?\n|\r)|.)+?\2/, 29800 lookbehind: true, 29801 greedy: true, 29802 inside: { 29803 'punctuation': /^[*_]|[*_]$/ 29804 } 29805 }, 29806 'strike': { 29807 // ~~strike through~~ 29808 // ~strike~ 29809 // Allow only one line break 29810 pattern: /(^|[^\\])(~~?)(?:(?:\r?\n|\r)(?!\r?\n|\r)|.)+?\2/, 29811 lookbehind: true, 29812 greedy: true, 29813 inside: { 29814 'punctuation': /^~~?|~~?$/ 29815 } 29816 }, 29817 'url': { 29818 // [example](http://example.com "Optional title") 29819 // [example] [id] 29820 pattern: /!?\[[^\]]+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)| ?\[[^\]\n]*\])/, 29821 inside: { 29822 'variable': { 29823 pattern: /(!?\[)[^\]]+(?=\]$)/, 29824 lookbehind: true 29825 }, 29826 'string': { 29827 pattern: /"(?:\\.|[^"\\])*"(?=\)$)/ 29828 } 29829 } 29830 } 29831}); 29832['bold', 'italic', 'strike'].forEach(function (token) { 29833 ['url', 'bold', 'italic', 'strike'].forEach(function (inside) { 29834 if (token !== inside) { 29835 _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.markdown[token].inside[inside] = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.markdown[inside]; 29836 } 29837 }); 29838}); 29839_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.hooks.add('after-tokenize', function (env) { 29840 if (env.language !== 'markdown' && env.language !== 'md') { 29841 return; 29842 } 29843 29844 function walkTokens(tokens) { 29845 if (!tokens || typeof tokens === 'string') { 29846 return; 29847 } 29848 29849 for (var i = 0, l = tokens.length; i < l; i++) { 29850 var token = tokens[i]; 29851 29852 if (token.type !== 'code') { 29853 walkTokens(token.content); 29854 continue; 29855 } 29856 29857 var codeLang = token.content[1]; 29858 var codeBlock = token.content[3]; 29859 29860 if (codeLang && codeBlock && codeLang.type === 'code-language' && codeBlock.type === 'code-block' && typeof codeLang.content === 'string') { 29861 // this might be a language that Prism does not support 29862 var alias = 'language-' + codeLang.content.trim().split(/\s+/)[0].toLowerCase(); // add alias 29863 29864 if (!codeBlock.alias) { 29865 codeBlock.alias = [alias]; 29866 } else if (typeof codeBlock.alias === 'string') { 29867 codeBlock.alias = [codeBlock.alias, alias]; 29868 } else { 29869 codeBlock.alias.push(alias); 29870 } 29871 } 29872 } 29873 } 29874 29875 walkTokens(env.tokens); 29876}); 29877_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.hooks.add('wrap', function (env) { 29878 if (env.type !== 'code-block') { 29879 return; 29880 } 29881 29882 var codeLang = ''; 29883 29884 for (var i = 0, l = env.classes.length; i < l; i++) { 29885 var cls = env.classes[i]; 29886 var match = /language-(.+)/.exec(cls); 29887 29888 if (match) { 29889 codeLang = match[1]; 29890 break; 29891 } 29892 } 29893 29894 var grammar = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages[codeLang]; 29895 29896 if (!grammar) { 29897 return; 29898 } // reverse Prism.util.encode 29899 29900 29901 var code = env.content.replace(/</g, '<').replace(/&/g, '&'); 29902 env.content = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.highlight(code, grammar, codeLang); 29903}); 29904_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.md = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.markdown; 29905/* "prismjs/components/prism-objectivec" */ 29906 29907_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.objectivec = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.extend('c', { 29908 'keyword': /\b(?:asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while|in|self|super)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/, 29909 'string': /("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1|@"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/, 29910 'operator': /-[->]?|\+\+?|!=?|<<?=?|>>?=?|==?|&&?|\|\|?|[~^%?*\/@]/ 29911}); 29912delete _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.objectivec['class-name']; 29913/* "prismjs/components/prism-ocaml" */ 29914 29915_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.ocaml = { 29916 'comment': /\(\*[\s\S]*?\*\)/, 29917 'string': [{ 29918 pattern: /"(?:\\.|[^\\\r\n"])*"/, 29919 greedy: true 29920 }, { 29921 pattern: /(['`])(?:\\(?:\d+|x[\da-f]+|.)|(?!\1)[^\\\r\n])\1/i, 29922 greedy: true 29923 }], 29924 'number': /\b(?:0x[\da-f][\da-f_]+|(?:0[bo])?\d[\d_]*\.?[\d_]*(?:e[+-]?[\d_]+)?)/i, 29925 'type': { 29926 pattern: /\B['`]\w*/, 29927 alias: 'variable' 29928 }, 29929 'directive': { 29930 pattern: /\B#\w+/, 29931 alias: 'function' 29932 }, 29933 'keyword': /\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|object|of|open|prefix|private|rec|then|sig|struct|to|try|type|val|value|virtual|where|while|with)\b/, 29934 'boolean': /\b(?:false|true)\b/, 29935 // Custom operators are allowed 29936 'operator': /:=|[=<>@^|&+\-*\/$%!?~][!$%&*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lxor|lsl|lsr|mod|nor|or)\b/, 29937 'punctuation': /[(){}\[\]|_.,:;]/ 29938}; 29939/* "prismjs/components/prism-python" */ 29940 29941_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.python = { 29942 'comment': { 29943 pattern: /(^|[^\\])#.*/, 29944 lookbehind: true 29945 }, 29946 'string-interpolation': { 29947 pattern: /(?:f|rf|fr)(?:("""|''')[\s\S]+?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i, 29948 greedy: true, 29949 inside: { 29950 'interpolation': { 29951 // "{" <expression> <optional "!s", "!r", or "!a"> <optional ":" format specifier> "}" 29952 pattern: /((?:^|[^{])(?:{{)*){(?!{)(?:[^{}]|{(?!{)(?:[^{}]|{(?!{)(?:[^{}])+})+})+}/, 29953 lookbehind: true, 29954 inside: { 29955 'format-spec': { 29956 pattern: /(:)[^:(){}]+(?=}$)/, 29957 lookbehind: true 29958 }, 29959 'conversion-option': { 29960 pattern: //, 29961 alias: 'punctuation' 29962 }, 29963 rest: null 29964 } 29965 }, 29966 'string': /[\s\S]+/ 29967 } 29968 }, 29969 'triple-quoted-string': { 29970 pattern: /(?:[rub]|rb|br)?("""|''')[\s\S]+?\1/i, 29971 greedy: true, 29972 alias: 'string' 29973 }, 29974 'string': { 29975 pattern: /(?:[rub]|rb|br)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i, 29976 greedy: true 29977 }, 29978 'function': { 29979 pattern: /((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g, 29980 lookbehind: true 29981 }, 29982 'class-name': { 29983 pattern: /(\bclass\s+)\w+/i, 29984 lookbehind: true 29985 }, 29986 'decorator': { 29987 pattern: /(^\s*)@\w+(?:\.\w+)*/i, 29988 lookbehind: true, 29989 alias: ['annotation', 'punctuation'], 29990 inside: { 29991 'punctuation': /\./ 29992 } 29993 }, 29994 'keyword': /\b(?:and|as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/, 29995 'builtin': /\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/, 29996 'boolean': /\b(?:True|False|None)\b/, 29997 'number': /(?:\b(?=\d)|\B(?=\.))(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*\.?\d*|\.\d+)(?:e[+-]?\d+)?j?\b/i, 29998 'operator': /[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/, 29999 'punctuation': /[{}[\];(),.:]/ 30000}; 30001_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.python['string-interpolation'].inside['interpolation'].inside.rest = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.python; 30002_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.py = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.python; 30003/* "prismjs/components/prism-reason" */ 30004 30005_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.reason = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.extend('clike', { 30006 'comment': { 30007 pattern: /(^|[^\\])\/\*[\s\S]*?\*\//, 30008 lookbehind: true 30009 }, 30010 'string': { 30011 pattern: /"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/, 30012 greedy: true 30013 }, 30014 // 'class-name' must be matched *after* 'constructor' defined below 30015 'class-name': /\b[A-Z]\w*/, 30016 'keyword': /\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/, 30017 'operator': /\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:mod|land|lor|lxor|lsl|lsr|asr)\b/ 30018}); 30019_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.insertBefore('reason', 'class-name', { 30020 'character': { 30021 pattern: /'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/, 30022 alias: 'string' 30023 }, 30024 'constructor': { 30025 // Negative look-ahead prevents from matching things like String.capitalize 30026 pattern: /\b[A-Z]\w*\b(?!\s*\.)/, 30027 alias: 'variable' 30028 }, 30029 'label': { 30030 pattern: /\b[a-z]\w*(?=::)/, 30031 alias: 'symbol' 30032 } 30033}); // We can't match functions property, so let's not even try. 30034 30035delete _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.reason.function; 30036/* "prismjs/components/prism-sass" */ 30037 30038(function (Prism) { 30039 Prism.languages.sass = Prism.languages.extend('css', { 30040 // Sass comments don't need to be closed, only indented 30041 'comment': { 30042 pattern: /^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t]+.+)*/m, 30043 lookbehind: true 30044 } 30045 }); 30046 Prism.languages.insertBefore('sass', 'atrule', { 30047 // We want to consume the whole line 30048 'atrule-line': { 30049 // Includes support for = and + shortcuts 30050 pattern: /^(?:[ \t]*)[@+=].+/m, 30051 inside: { 30052 'atrule': /(?:@[\w-]+|[+=])/m 30053 } 30054 } 30055 }); 30056 delete Prism.languages.sass.atrule; 30057 var variable = /\$[-\w]+|#\{\$[-\w]+\}/; 30058 var operator = [/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|or|not)\b/, { 30059 pattern: /(\s+)-(?=\s)/, 30060 lookbehind: true 30061 }]; 30062 Prism.languages.insertBefore('sass', 'property', { 30063 // We want to consume the whole line 30064 'variable-line': { 30065 pattern: /^[ \t]*\$.+/m, 30066 inside: { 30067 'punctuation': /:/, 30068 'variable': variable, 30069 'operator': operator 30070 } 30071 }, 30072 // We want to consume the whole line 30073 'property-line': { 30074 pattern: /^[ \t]*(?:[^:\s]+ *:.*|:[^:\s]+.*)/m, 30075 inside: { 30076 'property': [/[^:\s]+(?=\s*:)/, { 30077 pattern: /(:)[^:\s]+/, 30078 lookbehind: true 30079 }], 30080 'punctuation': /:/, 30081 'variable': variable, 30082 'operator': operator, 30083 'important': Prism.languages.sass.important 30084 } 30085 } 30086 }); 30087 delete Prism.languages.sass.property; 30088 delete Prism.languages.sass.important; // Now that whole lines for other patterns are consumed, 30089 // what's left should be selectors 30090 30091 Prism.languages.insertBefore('sass', 'punctuation', { 30092 'selector': { 30093 pattern: /([ \t]*)\S(?:,?[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,?[^,\r\n]+)*)*/, 30094 lookbehind: true 30095 } 30096 }); 30097})(_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a); 30098/* "prismjs/components/prism-scss" */ 30099 30100 30101_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.scss = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.extend('css', { 30102 'comment': { 30103 pattern: /(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/, 30104 lookbehind: true 30105 }, 30106 'atrule': { 30107 pattern: /@[\w-]+(?:\([^()]+\)|[^(])*?(?=\s+[{;])/, 30108 inside: { 30109 'rule': /@[\w-]+/ // See rest below 30110 30111 } 30112 }, 30113 // url, compassified 30114 'url': /(?:[-a-z]+-)*url(?=\()/i, 30115 // CSS selector regex is not appropriate for Sass 30116 // since there can be lot more things (var, @ directive, nesting..) 30117 // a selector must start at the end of a property or after a brace (end of other rules or nesting) 30118 // it can contain some characters that aren't used for defining rules or end of selector, & (parent selector), or interpolated variable 30119 // the end of a selector is found when there is no rules in it ( {} or {\s}) or if there is a property (because an interpolated var 30120 // can "pass" as a selector- e.g: proper#{$erty}) 30121 // this one was hard to do, so please be careful if you edit this one :) 30122 'selector': { 30123 // Initial look-ahead is used to prevent matching of blank selectors 30124 pattern: /(?=\S)[^@;{}()]?(?:[^@;{}()]|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}]+[:{][^}]+))/m, 30125 inside: { 30126 'parent': { 30127 pattern: /&/, 30128 alias: 'important' 30129 }, 30130 'placeholder': /%[-\w]+/, 30131 'variable': /\$[-\w]+|#\{\$[-\w]+\}/ 30132 } 30133 }, 30134 'property': { 30135 pattern: /(?:[\w-]|\$[-\w]+|#\{\$[-\w]+\})+(?=\s*:)/, 30136 inside: { 30137 'variable': /\$[-\w]+|#\{\$[-\w]+\}/ 30138 } 30139 } 30140}); 30141_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.insertBefore('scss', 'atrule', { 30142 'keyword': [/@(?:if|else(?: if)?|for|each|while|import|extend|debug|warn|mixin|include|function|return|content)/i, { 30143 pattern: /( +)(?:from|through)(?= )/, 30144 lookbehind: true 30145 }] 30146}); 30147_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.insertBefore('scss', 'important', { 30148 // var and interpolated vars 30149 'variable': /\$[-\w]+|#\{\$[-\w]+\}/ 30150}); 30151_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.insertBefore('scss', 'function', { 30152 'placeholder': { 30153 pattern: /%[-\w]+/, 30154 alias: 'selector' 30155 }, 30156 'statement': { 30157 pattern: /\B!(?:default|optional)\b/i, 30158 alias: 'keyword' 30159 }, 30160 'boolean': /\b(?:true|false)\b/, 30161 'null': { 30162 pattern: /\bnull\b/, 30163 alias: 'keyword' 30164 }, 30165 'operator': { 30166 pattern: /(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|or|not)(?=\s)/, 30167 lookbehind: true 30168 } 30169}); 30170_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.scss['atrule'].inside.rest = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.scss; 30171/* "prismjs/components/prism-sql" */ 30172 30173_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.sql = { 30174 'comment': { 30175 pattern: /(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/, 30176 lookbehind: true 30177 }, 30178 'variable': [{ 30179 pattern: /@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/, 30180 greedy: true 30181 }, /@[\w.$]+/], 30182 'string': { 30183 pattern: /(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/, 30184 greedy: true, 30185 lookbehind: true 30186 }, 30187 'function': /\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i, 30188 // Should we highlight user defined functions too? 30189 'keyword': /\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:_INSERT|COL)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURNS?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i, 30190 'boolean': /\b(?:TRUE|FALSE|NULL)\b/i, 30191 'number': /\b0x[\da-f]+\b|\b\d+\.?\d*|\B\.\d+\b/i, 30192 'operator': /[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|IN|LIKE|NOT|OR|IS|DIV|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i, 30193 'punctuation': /[;[\]()`,.]/ 30194}; 30195/* "prismjs/components/prism-stylus" */ 30196 30197(function (Prism) { 30198 var inside = { 30199 'url': /url\((["']?).*?\1\)/i, 30200 'string': { 30201 pattern: /("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/, 30202 greedy: true 30203 }, 30204 'interpolation': null, 30205 // See below 30206 'func': null, 30207 // See below 30208 'important': /\B!(?:important|optional)\b/i, 30209 'keyword': { 30210 pattern: /(^|\s+)(?:(?:if|else|for|return|unless)(?=\s+|$)|@[\w-]+)/, 30211 lookbehind: true 30212 }, 30213 'hexcode': /#[\da-f]{3,6}/i, 30214 'number': /\b\d+(?:\.\d+)?%?/, 30215 'boolean': /\b(?:true|false)\b/, 30216 'operator': [// We want non-word chars around "-" because it is 30217 // accepted in property names. 30218 /~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.+|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/], 30219 'punctuation': /[{}()\[\];:,]/ 30220 }; 30221 inside['interpolation'] = { 30222 pattern: /\{[^\r\n}:]+\}/, 30223 alias: 'variable', 30224 inside: { 30225 'delimiter': { 30226 pattern: /^{|}$/, 30227 alias: 'punctuation' 30228 }, 30229 rest: inside 30230 } 30231 }; 30232 inside['func'] = { 30233 pattern: /[\w-]+\([^)]*\).*/, 30234 inside: { 30235 'function': /^[^(]+/, 30236 rest: inside 30237 } 30238 }; 30239 Prism.languages.stylus = { 30240 'comment': { 30241 pattern: /(^|[^\\])(\/\*[\s\S]*?\*\/|\/\/.*)/, 30242 lookbehind: true 30243 }, 30244 'atrule-declaration': { 30245 pattern: /(^\s*)@.+/m, 30246 lookbehind: true, 30247 inside: { 30248 'atrule': /^@[\w-]+/, 30249 rest: inside 30250 } 30251 }, 30252 'variable-declaration': { 30253 pattern: /(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:(?:\{[^}]*\}|.+)|$)/m, 30254 lookbehind: true, 30255 inside: { 30256 'variable': /^\S+/, 30257 rest: inside 30258 } 30259 }, 30260 'statement': { 30261 pattern: /(^[ \t]*)(?:if|else|for|return|unless)[ \t]+.+/m, 30262 lookbehind: true, 30263 inside: { 30264 keyword: /^\S+/, 30265 rest: inside 30266 } 30267 }, 30268 // A property/value pair cannot end with a comma or a brace 30269 // It cannot have indented content unless it ended with a semicolon 30270 'property-declaration': { 30271 pattern: /((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)[^{\r\n]*(?:;|[^{\r\n,](?=$)(?!(\r?\n|\r)(?:\{|\2[ \t]+)))/m, 30272 lookbehind: true, 30273 inside: { 30274 'property': { 30275 pattern: /^[^\s:]+/, 30276 inside: { 30277 'interpolation': inside.interpolation 30278 } 30279 }, 30280 rest: inside 30281 } 30282 }, 30283 // A selector can contain parentheses only as part of a pseudo-element 30284 // It can span multiple lines. 30285 // It must end with a comma or an accolade or have indented content. 30286 'selector': { 30287 pattern: /(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\))?|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\))?|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t]+)))/m, 30288 lookbehind: true, 30289 inside: { 30290 'interpolation': inside.interpolation, 30291 'punctuation': /[{},]/ 30292 } 30293 }, 30294 'func': inside.func, 30295 'string': inside.string, 30296 'interpolation': inside.interpolation, 30297 'punctuation': /[{}()\[\];:.]/ 30298 }; 30299})(_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a); 30300/* "prismjs/components/prism-wasm" */ 30301 30302 30303_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.wasm = { 30304 'comment': [/\(;[\s\S]*?;\)/, { 30305 pattern: /;;.*/, 30306 greedy: true 30307 }], 30308 'string': { 30309 pattern: /"(?:\\[\s\S]|[^"\\])*"/, 30310 greedy: true 30311 }, 30312 'keyword': [{ 30313 pattern: /\b(?:align|offset)=/, 30314 inside: { 30315 'operator': /=/ 30316 } 30317 }, { 30318 pattern: /\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/, 30319 inside: { 30320 'punctuation': /\./ 30321 } 30322 }, /\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/], 30323 'variable': /\$[\w!#$%&'*+\-./:<=>?@\\^_`|~]+/i, 30324 'number': /[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/, 30325 'punctuation': /[()]/ 30326}; 30327/* "prismjs/components/prism-yaml" */ 30328 30329_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.yaml = { 30330 'scalar': { 30331 pattern: /([\-:]\s*(?:![^\s]+)?[ \t]*[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)[^\r\n]+(?:\2[^\r\n]+)*)/, 30332 lookbehind: true, 30333 alias: 'string' 30334 }, 30335 'comment': /#.*/, 30336 'key': { 30337 pattern: /(\s*(?:^|[:\-,[{\r\n?])[ \t]*(?:![^\s]+)?[ \t]*)[^\r\n{[\]},#\s]+?(?=\s*:\s)/, 30338 lookbehind: true, 30339 alias: 'atrule' 30340 }, 30341 'directive': { 30342 pattern: /(^[ \t]*)%.+/m, 30343 lookbehind: true, 30344 alias: 'important' 30345 }, 30346 'datetime': { 30347 pattern: /([:\-,[{]\s*(?:![^\s]+)?[ \t]*)(?:\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?)?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?)(?=[ \t]*(?:$|,|]|}))/m, 30348 lookbehind: true, 30349 alias: 'number' 30350 }, 30351 'boolean': { 30352 pattern: /([:\-,[{]\s*(?:![^\s]+)?[ \t]*)(?:true|false)[ \t]*(?=$|,|]|})/im, 30353 lookbehind: true, 30354 alias: 'important' 30355 }, 30356 'null': { 30357 pattern: /([:\-,[{]\s*(?:![^\s]+)?[ \t]*)(?:null|~)[ \t]*(?=$|,|]|})/im, 30358 lookbehind: true, 30359 alias: 'important' 30360 }, 30361 'string': { 30362 pattern: /([:\-,[{]\s*(?:![^\s]+)?[ \t]*)("|')(?:(?!\2)[^\\\r\n]|\\.)*\2(?=[ \t]*(?:$|,|]|}|\s*#))/m, 30363 lookbehind: true, 30364 greedy: true 30365 }, 30366 'number': { 30367 pattern: /([:\-,[{]\s*(?:![^\s]+)?[ \t]*)[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+\.?\d*|\.?\d+)(?:e[+-]?\d+)?|\.inf|\.nan)[ \t]*(?=$|,|]|})/im, 30368 lookbehind: true 30369 }, 30370 'tag': /![^\s]+/, 30371 'important': /[&*][\w]+/, 30372 'punctuation': /---|[:[\]{}\-,|>?]|\.\.\./ 30373}; 30374_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.yml = _prism_core__WEBPACK_IMPORTED_MODULE_0___default.a.languages.yaml; 30375/* harmony default export */ __webpack_exports__["default"] = (_prism_core__WEBPACK_IMPORTED_MODULE_0___default.a); 30376 30377/***/ }), 30378
vendor: 11,223 bytes, lines 30379-30748
30379/***/ "./node_modules/spectacle/node_modules/prism-react-renderer/es/vendor/prism/prism-core.js": 30380/*!************************************************************************************************!*\ 30381 !*** ./node_modules/spectacle/node_modules/prism-react-renderer/es/vendor/prism/prism-core.js ***! 30382 \************************************************************************************************/ 30383/*! no static exports found */ 30384/***/ (function(module, exports) { 30385 30386/** 30387 * Prism: Lightweight, robust, elegant syntax highlighting 30388 * MIT license http://www.opensource.org/licenses/mit-license.php/ 30389 * @author Lea Verou http://lea.verou.me 30390 */ 30391 30392/** 30393 * prism-react-renderer: 30394 * This file has been modified to remove: 30395 * - globals and window dependency 30396 * - worker support 30397 * - highlightAll and other element dependent methods 30398 * - _.hooks helpers 30399 * - UMD/node-specific hacks 30400 * It has also been run through prettier 30401 */ 30402var Prism = function () { 30403 // Private helper vars 30404 var lang = /\blang(?:uage)?-([\w-]+)\b/i; 30405 var uniqueId = 0; 30406 var _ = { 30407 util: { 30408 encode: function encode(tokens) { 30409 if (tokens instanceof Token) { 30410 return new Token(tokens.type, _.util.encode(tokens.content), tokens.alias); 30411 } else if (_.util.type(tokens) === "Array") { 30412 return tokens.map(_.util.encode); 30413 } else { 30414 return tokens.replace(/&/g, "&").replace(/</g, "<").replace(/\u00a0/g, " "); 30415 } 30416 }, 30417 type: function type(o) { 30418 return Object.prototype.toString.call(o).match(/\[object (\w+)\]/)[1]; 30419 }, 30420 objId: function objId(obj) { 30421 if (!obj["__id"]) { 30422 Object.defineProperty(obj, "__id", { 30423 value: ++uniqueId 30424 }); 30425 } 30426 30427 return obj["__id"]; 30428 }, 30429 // Deep clone a language definition (e.g. to extend it) 30430 clone: function clone(o, visited) { 30431 var type = _.util.type(o); 30432 30433 visited = visited || {}; 30434 30435 switch (type) { 30436 case "Object": 30437 if (visited[_.util.objId(o)]) { 30438 return visited[_.util.objId(o)]; 30439 } 30440 30441 var clone = {}; 30442 visited[_.util.objId(o)] = clone; 30443 30444 for (var key in o) { 30445 if (o.hasOwnProperty(key)) { 30446 clone[key] = _.util.clone(o[key], visited); 30447 } 30448 } 30449 30450 return clone; 30451 30452 case "Array": 30453 if (visited[_.util.objId(o)]) { 30454 return visited[_.util.objId(o)]; 30455 } 30456 30457 var clone = []; 30458 visited[_.util.objId(o)] = clone; 30459 o.forEach(function (v, i) { 30460 clone[i] = _.util.clone(v, visited); 30461 }); 30462 return clone; 30463 } 30464 30465 return o; 30466 } 30467 }, 30468 languages: { 30469 extend: function extend(id, redef) { 30470 var lang = _.util.clone(_.languages[id]); 30471 30472 for (var key in redef) { 30473 lang[key] = redef[key]; 30474 } 30475 30476 return lang; 30477 }, 30478 30479 /** 30480 * Insert a token before another token in a language literal 30481 * As this needs to recreate the object (we cannot actually insert before keys in object literals), 30482 * we cannot just provide an object, we need anobject and a key. 30483 * @param inside The key (or language id) of the parent 30484 * @param before The key to insert before. If not provided, the function appends instead. 30485 * @param insert Object with the key/value pairs to insert 30486 * @param root The object that contains `inside`. If equal to Prism.languages, it can be omitted. 30487 */ 30488 insertBefore: function insertBefore(inside, before, insert, root) { 30489 root = root || _.languages; 30490 var grammar = root[inside]; 30491 30492 if (arguments.length == 2) { 30493 insert = arguments[1]; 30494 30495 for (var newToken in insert) { 30496 if (insert.hasOwnProperty(newToken)) { 30497 grammar[newToken] = insert[newToken]; 30498 } 30499 } 30500 30501 return grammar; 30502 } 30503 30504 var ret = {}; 30505 30506 for (var token in grammar) { 30507 if (grammar.hasOwnProperty(token)) { 30508 if (token == before) { 30509 for (var newToken in insert) { 30510 if (insert.hasOwnProperty(newToken)) { 30511 ret[newToken] = insert[newToken]; 30512 } 30513 } 30514 } 30515 30516 ret[token] = grammar[token]; 30517 } 30518 } // Update references in other language definitions 30519 30520 30521 _.languages.DFS(_.languages, function (key, value) { 30522 if (value === root[inside] && key != inside) { 30523 this[key] = ret; 30524 } 30525 }); 30526 30527 return root[inside] = ret; 30528 }, 30529 // Traverse a language definition with Depth First Search 30530 DFS: function DFS(o, callback, type, visited) { 30531 visited = visited || {}; 30532 30533 for (var i in o) { 30534 if (o.hasOwnProperty(i)) { 30535 callback.call(o, i, o[i], type || i); 30536 30537 if (_.util.type(o[i]) === "Object" && !visited[_.util.objId(o[i])]) { 30538 visited[_.util.objId(o[i])] = true; 30539 30540 _.languages.DFS(o[i], callback, null, visited); 30541 } else if (_.util.type(o[i]) === "Array" && !visited[_.util.objId(o[i])]) { 30542 visited[_.util.objId(o[i])] = true; 30543 30544 _.languages.DFS(o[i], callback, i, visited); 30545 } 30546 } 30547 } 30548 } 30549 }, 30550 plugins: {}, 30551 highlight: function highlight(text, grammar, language) { 30552 var env = { 30553 code: text, 30554 grammar: grammar, 30555 language: language 30556 }; 30557 env.tokens = _.tokenize(env.code, env.grammar); 30558 return Token.stringify(_.util.encode(env.tokens), env.language); 30559 }, 30560 matchGrammar: function matchGrammar(text, strarr, grammar, index, startPos, oneshot, target) { 30561 var Token = _.Token; 30562 30563 for (var token in grammar) { 30564 if (!grammar.hasOwnProperty(token) || !grammar[token]) { 30565 continue; 30566 } 30567 30568 if (token == target) { 30569 return; 30570 } 30571 30572 var patterns = grammar[token]; 30573 patterns = _.util.type(patterns) === "Array" ? patterns : [patterns]; 30574 30575 for (var j = 0; j < patterns.length; ++j) { 30576 var pattern = patterns[j], 30577 inside = pattern.inside, 30578 lookbehind = !!pattern.lookbehind, 30579 greedy = !!pattern.greedy, 30580 lookbehindLength = 0, 30581 alias = pattern.alias; 30582 30583 if (greedy && !pattern.pattern.global) { 30584 // Without the global flag, lastIndex won't work 30585 var flags = pattern.pattern.toString().match(/[imuy]*$/)[0]; 30586 pattern.pattern = RegExp(pattern.pattern.source, flags + "g"); 30587 } 30588 30589 pattern = pattern.pattern || pattern; // Donât cache length as it changes during the loop 30590 30591 for (var i = index, pos = startPos; i < strarr.length; pos += strarr[i].length, ++i) { 30592 var str = strarr[i]; 30593 30594 if (strarr.length > text.length) { 30595 // Something went terribly wrong, ABORT, ABORT! 30596 return; 30597 } 30598 30599 if (str instanceof Token) { 30600 continue; 30601 } 30602 30603 if (greedy && i != strarr.length - 1) { 30604 pattern.lastIndex = pos; 30605 var match = pattern.exec(text); 30606 30607 if (!match) { 30608 break; 30609 } 30610 30611 var from = match.index + (lookbehind ? match[1].length : 0), 30612 to = match.index + match[0].length, 30613 k = i, 30614 p = pos; 30615 30616 for (var len = strarr.length; k < len && (p < to || !strarr[k].type && !strarr[k - 1].greedy); ++k) { 30617 p += strarr[k].length; // Move the index i to the element in strarr that is closest to from 30618 30619 if (from >= p) { 30620 ++i; 30621 pos = p; 30622 } 30623 } // If strarr[i] is a Token, then the match starts inside another Token, which is invalid 30624 30625 30626 if (strarr[i] instanceof Token) { 30627 continue; 30628 } // Number of tokens to delete and replace with the new match 30629 30630 30631 delNum = k - i; 30632 str = text.slice(pos, p); 30633 match.index -= pos; 30634 } else { 30635 pattern.lastIndex = 0; 30636 var match = pattern.exec(str), 30637 delNum = 1; 30638 } 30639 30640 if (!match) { 30641 if (oneshot) { 30642 break; 30643 } 30644 30645 continue; 30646 } 30647 30648 if (lookbehind) { 30649 lookbehindLength = match[1] ? match[1].length : 0; 30650 } 30651 30652 var from = match.index + lookbehindLength, 30653 match = match[0].slice(lookbehindLength), 30654 to = from + match.length, 30655 before = str.slice(0, from), 30656 after = str.slice(to); 30657 var args = [i, delNum]; 30658 30659 if (before) { 30660 ++i; 30661 pos += before.length; 30662 args.push(before); 30663 } 30664 30665 var wrapped = new Token(token, inside ? _.tokenize(match, inside) : match, alias, match, greedy); 30666 args.push(wrapped); 30667 30668 if (after) { 30669 args.push(after); 30670 } 30671 30672 Array.prototype.splice.apply(strarr, args); 30673 if (delNum != 1) _.matchGrammar(text, strarr, grammar, i, pos, true, token); 30674 if (oneshot) break; 30675 } 30676 } 30677 } 30678 }, 30679 hooks: { 30680 add: function add() {} 30681 }, 30682 tokenize: function tokenize(text, grammar, language) { 30683 var strarr = [text]; 30684 var rest = grammar.rest; 30685 30686 if (rest) { 30687 for (var token in rest) { 30688 grammar[token] = rest[token]; 30689 } 30690 30691 delete grammar.rest; 30692 } 30693 30694 _.matchGrammar(text, strarr, grammar, 0, 0, false); 30695 30696 return strarr; 30697 } 30698 }; 30699 30700 var Token = _.Token = function (type, content, alias, matchedStr, greedy) { 30701 this.type = type; 30702 this.content = content; 30703 this.alias = alias; // Copy of the full string this token was created from 30704 30705 this.length = (matchedStr || "").length | 0; 30706 this.greedy = !!greedy; 30707 }; 30708 30709 Token.stringify = function (o, language, parent) { 30710 if (typeof o == "string") { 30711 return o; 30712 } 30713 30714 if (_.util.type(o) === "Array") { 30715 return o.map(function (element) { 30716 return Token.stringify(element, language, o); 30717 }).join(""); 30718 } 30719 30720 var env = { 30721 type: o.type, 30722 content: Token.stringify(o.content, language, parent), 30723 tag: "span", 30724 classes: ["token", o.type], 30725 attributes: {}, 30726 language: language, 30727 parent: parent 30728 }; 30729 30730 if (o.alias) { 30731 var aliases = _.util.type(o.alias) === "Array" ? o.alias : [o.alias]; 30732 Array.prototype.push.apply(env.classes, aliases); 30733 } 30734 30735 var attributes = Object.keys(env.attributes).map(function (name) { 30736 return name + '="' + (env.attributes[name] || "").replace(/"/g, """) + '"'; 30737 }).join(" "); 30738 return "<" + env.tag + ' class="' + env.classes.join(" ") + '"' + (attributes ? " " + attributes : "") + ">" + env.content + "</" + env.tag + ">"; 30739 }; 30740 30741 return _; 30742}(); 30743 30744module.exports = Prism; 30745Prism.default = Prism; 30746 30747/***/ }), 30748
vendor: 2,158 bytes, lines 30749-30835
30749/***/ "./node_modules/spectacle/node_modules/prism-react-renderer/themes/duotoneDark.js": 30750/*!****************************************************************************************!*\ 30751 !*** ./node_modules/spectacle/node_modules/prism-react-renderer/themes/duotoneDark.js ***! 30752 \****************************************************************************************/ 30753/*! no static exports found */ 30754/***/ (function(module, exports) { 30755 30756// @flow 30757// Duotone Dark 30758// Author: Simurai, adapted from DuoTone themes for Atom (http://simurai.com/projects/2016/01/01/duotone-themes) 30759// Conversion: Bram de Haan (http://atelierbram.github.io/Base2Tone-prism/output/prism/prism-base2tone-evening-dark.css) 30760// Generated with Base16 Builder (https://github.com/base16-builder/base16-builder) 30761 30762/*:: import type { PrismTheme } from '../src/types' */ 30763var theme 30764/*: PrismTheme */ 30765= { 30766 plain: { 30767 backgroundColor: "#2a2734", 30768 color: "#9a86fd" 30769 }, 30770 styles: [{ 30771 types: ["comment", "prolog", "doctype", "cdata", "punctuation"], 30772 style: { 30773 color: "#6c6783" 30774 } 30775 }, { 30776 types: ["namespace"], 30777 style: { 30778 opacity: 0.7 30779 } 30780 }, { 30781 types: ["tag", "operator", "number"], 30782 style: { 30783 color: "#e09142" 30784 } 30785 }, { 30786 types: ["property", "function"], 30787 style: { 30788 color: "#9a86fd" 30789 } 30790 }, { 30791 types: ["tag-id", "selector", "atrule-id"], 30792 style: { 30793 color: "#eeebff" 30794 } 30795 }, { 30796 types: ["attr-name"], 30797 style: { 30798 color: "#c4b9fe" 30799 } 30800 }, { 30801 types: ["boolean", "string", "entity", "url", "attr-value", "keyword", "control", "directive", "unit", "statement", "regex", "at-rule", "placeholder", "variable"], 30802 style: { 30803 color: "#ffcc99" 30804 } 30805 }, { 30806 types: ["deleted"], 30807 style: { 30808 textDecorationLine: "line-through" 30809 } 30810 }, { 30811 types: ["inserted"], 30812 style: { 30813 textDecorationLine: "underline" 30814 } 30815 }, { 30816 types: ["italic"], 30817 style: { 30818 fontStyle: "italic" 30819 } 30820 }, { 30821 types: ["important", "bold"], 30822 style: { 30823 fontWeight: "bold" 30824 } 30825 }, { 30826 types: ["important"], 30827 style: { 30828 color: "#c4b9fe" 30829 } 30830 }] 30831}; 30832module.exports = theme; 30833 30834/***/ }), 30835
vendor: 2,218 bytes, lines 30836-30932
30836/***/ "./node_modules/spectacle/node_modules/prism-react-renderer/themes/nightOwlLight.js": 30837/*!******************************************************************************************!*\ 30838 !*** ./node_modules/spectacle/node_modules/prism-react-renderer/themes/nightOwlLight.js ***! 30839 \******************************************************************************************/ 30840/*! no static exports found */ 30841/***/ (function(module, exports) { 30842 30843// @flow 30844// Original: https://github.com/sdras/night-owl-vscode-theme 30845// Converted automatically using ./tools/themeFromVsCode 30846 30847/*:: import type { PrismTheme } from '../src/types' */ 30848var theme 30849/*: PrismTheme */ 30850= { 30851 plain: { 30852 color: "#403f53", 30853 backgroundColor: "#FBFBFB" 30854 }, 30855 styles: [{ 30856 types: ["changed"], 30857 style: { 30858 color: "rgb(162, 191, 252)", 30859 fontStyle: "italic" 30860 } 30861 }, { 30862 types: ["deleted"], 30863 style: { 30864 color: "rgba(239, 83, 80, 0.56)", 30865 fontStyle: "italic" 30866 } 30867 }, { 30868 types: ["inserted", "attr-name"], 30869 style: { 30870 color: "rgb(72, 118, 214)", 30871 fontStyle: "italic" 30872 } 30873 }, { 30874 types: ["comment"], 30875 style: { 30876 color: "rgb(152, 159, 177)", 30877 fontStyle: "italic" 30878 } 30879 }, { 30880 types: ["string", "builtin", "char", "constant", "url"], 30881 style: { 30882 color: "rgb(72, 118, 214)" 30883 } 30884 }, { 30885 types: ["variable"], 30886 style: { 30887 color: "rgb(201, 103, 101)" 30888 } 30889 }, { 30890 types: ["number"], 30891 style: { 30892 color: "rgb(170, 9, 130)" 30893 } 30894 }, { 30895 // This was manually added after the auto-generation 30896 // so that punctuations are not italicised 30897 types: ["punctuation"], 30898 style: { 30899 color: "rgb(153, 76, 195)" 30900 } 30901 }, { 30902 types: ["function", "selector", "doctype"], 30903 style: { 30904 color: "rgb(153, 76, 195)", 30905 fontStyle: "italic" 30906 } 30907 }, { 30908 types: ["class-name"], 30909 style: { 30910 color: "rgb(17, 17, 17)" 30911 } 30912 }, { 30913 types: ["tag"], 30914 style: { 30915 color: "rgb(153, 76, 195)" 30916 } 30917 }, { 30918 types: ["operator", "property", "keyword", "namespace"], 30919 style: { 30920 color: "rgb(12, 150, 155)" 30921 } 30922 }, { 30923 types: ["boolean"], 30924 style: { 30925 color: "rgb(188, 84, 84)" 30926 } 30927 }] 30928}; 30929module.exports = theme; 30930 30931/***/ }), 30932
vendor: 2,159 bytes, lines 30933-31036
30933/***/ "./node_modules/spectacle/node_modules/prism-react-renderer/themes/vsDark.js": 30934/*!***********************************************************************************!*\ 30935 !*** ./node_modules/spectacle/node_modules/prism-react-renderer/themes/vsDark.js ***! 30936 \***********************************************************************************/ 30937/*! no static exports found */ 30938/***/ (function(module, exports) { 30939 30940// @flow 30941// Converted automatically using ./tools/themeFromVsCode 30942 30943/*:: import type { PrismTheme } from '../src/types' */ 30944var theme 30945/*: PrismTheme */ 30946= { 30947 plain: { 30948 color: "#9CDCFE", 30949 backgroundColor: "#1E1E1E" 30950 }, 30951 styles: [{ 30952 types: ["prolog"], 30953 style: { 30954 color: "rgb(0, 0, 128)" 30955 } 30956 }, { 30957 types: ["comment"], 30958 style: { 30959 color: "rgb(106, 153, 85)" 30960 } 30961 }, { 30962 types: ["builtin", "changed", "keyword"], 30963 style: { 30964 color: "rgb(86, 156, 214)" 30965 } 30966 }, { 30967 types: ["number", "inserted"], 30968 style: { 30969 color: "rgb(181, 206, 168)" 30970 } 30971 }, { 30972 types: ["constant"], 30973 style: { 30974 color: "rgb(100, 102, 149)" 30975 } 30976 }, { 30977 types: ["attr-name", "variable"], 30978 style: { 30979 color: "rgb(156, 220, 254)" 30980 } 30981 }, { 30982 types: ["deleted", "string", "attr-value"], 30983 style: { 30984 color: "rgb(206, 145, 120)" 30985 } 30986 }, { 30987 types: ["selector"], 30988 style: { 30989 color: "rgb(215, 186, 125)" 30990 } 30991 }, { 30992 // Fix tag color 30993 types: ["tag"], 30994 style: { 30995 color: "rgb(78, 201, 176)" 30996 } 30997 }, { 30998 // Fix tag color for HTML 30999 types: ["tag"], 31000 languages: ["markup"], 31001 style: { 31002 color: "rgb(86, 156, 214)" 31003 } 31004 }, { 31005 types: ["punctuation", "operator"], 31006 style: { 31007 color: "rgb(212, 212, 212)" 31008 } 31009 }, { 31010 // Fix punctuation color for HTML 31011 types: ["punctuation"], 31012 languages: ["markup"], 31013 style: { 31014 color: "#808080" 31015 } 31016 }, { 31017 types: ["function"], 31018 style: { 31019 color: "rgb(220, 220, 170)" 31020 } 31021 }, { 31022 types: ["class-name"], 31023 style: { 31024 color: "rgb(78, 201, 176)" 31025 } 31026 }, { 31027 types: ["char"], 31028 style: { 31029 color: "rgb(209, 105, 105)" 31030 } 31031 }] 31032}; 31033module.exports = theme; 31034 31035/***/ }), 31036
vendor: 770 bytes, lines 31037-31066
31037/***/ "./node_modules/split-on-first/index.js": 31038/*!**********************************************!*\ 31039 !*** ./node_modules/split-on-first/index.js ***! 31040 \**********************************************/ 31041/*! no static exports found */ 31042/***/ (function(module, exports, __webpack_require__) { 31043 31044"use strict"; 31045 31046 31047module.exports = (string, separator) => { 31048 if (!(typeof string === 'string' && typeof separator === 'string')) { 31049 throw new TypeError('Expected the arguments to be of type `string`'); 31050 } 31051 31052 if (separator === '') { 31053 return [string]; 31054 } 31055 31056 const separatorIndex = string.indexOf(separator); 31057 31058 if (separatorIndex === -1) { 31059 return [string]; 31060 } 31061 31062 return [string.slice(0, separatorIndex), string.slice(separatorIndex + separator.length)]; 31063}; 31064 31065/***/ }), 31066
vendor: 455 bytes, lines 31067-31080
31067/***/ "./node_modules/strict-uri-encode/index.js": 31068/*!*************************************************!*\ 31069 !*** ./node_modules/strict-uri-encode/index.js ***! 31070 \*************************************************/ 31071/*! no static exports found */ 31072/***/ (function(module, exports, __webpack_require__) { 31073 31074"use strict"; 31075 31076 31077module.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`); 31078 31079/***/ }), 31080
vendor: 83,356 bytes, lines 31081-33480
31081/***/ "./node_modules/styled-components/dist/styled-components.browser.esm.js": 31082/*!******************************************************************************!*\ 31083 !*** ./node_modules/styled-components/dist/styled-components.browser.esm.js ***! 31084 \******************************************************************************/ 31085/*! exports provided: default, createGlobalStyle, css, isStyledComponent, keyframes, ServerStyleSheet, StyleSheetConsumer, StyleSheetContext, StyleSheetManager, ThemeConsumer, ThemeContext, ThemeProvider, withTheme, __DO_NOT_USE_OR_YOU_WILL_BE_HAUNTED_BY_SPOOKY_GHOSTS */ 31086/***/ (function(module, __webpack_exports__, __webpack_require__) { 31087 31088"use strict"; 31089__webpack_require__.r(__webpack_exports__); 31090/* WEBPACK VAR INJECTION */(function(process) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createGlobalStyle", function() { return createGlobalStyle; }); 31091/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "css", function() { return css; }); 31092/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isStyledComponent", function() { return isStyledComponent; }); 31093/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "keyframes", function() { return keyframes; }); 31094/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ServerStyleSheet", function() { return ServerStyleSheet; }); 31095/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StyleSheetConsumer", function() { return StyleSheetConsumer; }); 31096/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StyleSheetContext", function() { return StyleSheetContext; }); 31097/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "StyleSheetManager", function() { return StyleSheetManager; }); 31098/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ThemeConsumer", function() { return ThemeConsumer; }); 31099/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ThemeContext", function() { return ThemeContext; }); 31100/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ThemeProvider", function() { return ThemeProvider; }); 31101/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "withTheme", function() { return withTheme; }); 31102/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__DO_NOT_USE_OR_YOU_WILL_BE_HAUNTED_BY_SPOOKY_GHOSTS", function() { return __DO_NOT_USE_OR_YOU_WILL_BE_HAUNTED_BY_SPOOKY_GHOSTS; }); 31103/* harmony import */ var stylis_stylis_min__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! stylis/stylis.min */ "./node_modules/stylis/stylis.min.js"); 31104/* harmony import */ var stylis_stylis_min__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(stylis_stylis_min__WEBPACK_IMPORTED_MODULE_0__); 31105/* harmony import */ var stylis_rule_sheet__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! stylis-rule-sheet */ "./node_modules/stylis-rule-sheet/index.js"); 31106/* harmony import */ var stylis_rule_sheet__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(stylis_rule_sheet__WEBPACK_IMPORTED_MODULE_1__); 31107/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "./node_modules/react/index.js"); 31108/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__); 31109/* harmony import */ var _emotion_unitless__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @emotion/unitless */ "./node_modules/@emotion/unitless/dist/unitless.browser.esm.js"); 31110/* harmony import */ var react_is__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-is */ "./node_modules/react-is/index.js"); 31111/* harmony import */ var react_is__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_is__WEBPACK_IMPORTED_MODULE_4__); 31112/* harmony import */ var memoize_one__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! memoize-one */ "./node_modules/memoize-one/dist/memoize-one.esm.js"); 31113/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js"); 31114/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_6__); 31115/* harmony import */ var _emotion_is_prop_valid__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @emotion/is-prop-valid */ "./node_modules/@emotion/is-prop-valid/dist/is-prop-valid.browser.esm.js"); 31116/* harmony import */ var merge_anything__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! merge-anything */ "./node_modules/merge-anything/dist/index.esm.js"); 31117 31118 31119 31120 31121 31122 31123 31124 31125 // 31126 31127var interleave = function (strings, interpolations) { 31128 var result = [strings[0]]; 31129 31130 for (var i = 0, len = interpolations.length; i < len; i += 1) { 31131 result.push(interpolations[i], strings[i + 1]); 31132 } 31133 31134 return result; 31135}; 31136 31137var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { 31138 return typeof obj; 31139} : function (obj) { 31140 return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; 31141}; 31142 31143var classCallCheck = function (instance, Constructor) { 31144 if (!(instance instanceof Constructor)) { 31145 throw new TypeError("Cannot call a class as a function"); 31146 } 31147}; 31148 31149var createClass = function () { 31150 function defineProperties(target, props) { 31151 for (var i = 0; i < props.length; i++) { 31152 var descriptor = props[i]; 31153 descriptor.enumerable = descriptor.enumerable || false; 31154 descriptor.configurable = true; 31155 if ("value" in descriptor) descriptor.writable = true; 31156 Object.defineProperty(target, descriptor.key, descriptor); 31157 } 31158 } 31159 31160 return function (Constructor, protoProps, staticProps) { 31161 if (protoProps) defineProperties(Constructor.prototype, protoProps); 31162 if (staticProps) defineProperties(Constructor, staticProps); 31163 return Constructor; 31164 }; 31165}(); 31166 31167var _extends = Object.assign || function (target) { 31168 for (var i = 1; i < arguments.length; i++) { 31169 var source = arguments[i]; 31170 31171 for (var key in source) { 31172 if (Object.prototype.hasOwnProperty.call(source, key)) { 31173 target[key] = source[key]; 31174 } 31175 } 31176 } 31177 31178 return target; 31179}; 31180 31181var inherits = function (subClass, superClass) { 31182 if (typeof superClass !== "function" && superClass !== null) { 31183 throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); 31184 } 31185 31186 subClass.prototype = Object.create(superClass && superClass.prototype, { 31187 constructor: { 31188 value: subClass, 31189 enumerable: false, 31190 writable: true, 31191 configurable: true 31192 } 31193 }); 31194 if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; 31195}; 31196 31197var objectWithoutProperties = function (obj, keys) { 31198 var target = {}; 31199 31200 for (var i in obj) { 31201 if (keys.indexOf(i) >= 0) continue; 31202 if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; 31203 target[i] = obj[i]; 31204 } 31205 31206 return target; 31207}; 31208 31209var possibleConstructorReturn = function (self, call) { 31210 if (!self) { 31211 throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); 31212 } 31213 31214 return call && (typeof call === "object" || typeof call === "function") ? call : self; 31215}; // 31216 31217 31218var isPlainObject = function (x) { 31219 return (typeof x === 'undefined' ? 'undefined' : _typeof(x)) === 'object' && x.constructor === Object; 31220}; // 31221 31222 31223var EMPTY_ARRAY = Object.freeze([]); 31224var EMPTY_OBJECT = Object.freeze({}); // 31225 31226function isFunction(test) { 31227 return typeof test === 'function'; 31228} // 31229 31230 31231function getComponentName(target) { 31232 return ( true ? typeof target === 'string' && target : undefined) || target.displayName || target.name || 'Component'; 31233} // 31234 31235 31236function isStatelessFunction(test) { 31237 return typeof test === 'function' && !(test.prototype && test.prototype.isReactComponent); 31238} // 31239 31240 31241function isStyledComponent(target) { 31242 return target && typeof target.styledComponentId === 'string'; 31243} // 31244 31245 31246var SC_ATTR = typeof process !== 'undefined' && (process.env.REACT_APP_SC_ATTR || process.env.SC_ATTR) || 'data-styled'; 31247var SC_VERSION_ATTR = 'data-styled-version'; 31248var SC_STREAM_ATTR = 'data-styled-streamed'; 31249var IS_BROWSER = typeof window !== 'undefined' && 'HTMLElement' in window; 31250var DISABLE_SPEEDY = typeof SC_DISABLE_SPEEDY === 'boolean' && SC_DISABLE_SPEEDY || typeof process !== 'undefined' && (process.env.REACT_APP_SC_DISABLE_SPEEDY || process.env.SC_DISABLE_SPEEDY) || "development" !== 'production'; // Shared empty execution context when generating static styles 31251 31252var STATIC_EXECUTION_CONTEXT = {}; // 31253 31254/** 31255 * Parse errors.md and turn it into a simple hash of code: message 31256 */ 31257 31258var ERRORS = true ? { 31259 "1": "Cannot create styled-component for component: %s.\n\n", 31260 "2": "Can't collect styles once you've consumed a `ServerStyleSheet`'s styles! `ServerStyleSheet` is a one off instance for each server-side render cycle.\n\n- Are you trying to reuse it across renders?\n- Are you accidentally calling collectStyles twice?\n\n", 31261 "3": "Streaming SSR is only supported in a Node.js environment; Please do not try to call this method in the browser.\n\n", 31262 "4": "The `StyleSheetManager` expects a valid target or sheet prop!\n\n- Does this error occur on the client and is your target falsy?\n- Does this error occur on the server and is the sheet falsy?\n\n", 31263 "5": "The clone method cannot be used on the client!\n\n- Are you running in a client-like environment on the server?\n- Are you trying to run SSR on the client?\n\n", 31264 "6": "Trying to insert a new style tag, but the given Node is unmounted!\n\n- Are you using a custom target that isn't mounted?\n- Does your document not have a valid head element?\n- Have you accidentally removed a style tag manually?\n\n", 31265 "7": "ThemeProvider: Please return an object from your \"theme\" prop function, e.g.\n\n```js\ntheme={() => ({})}\n```\n\n", 31266 "8": "ThemeProvider: Please make your \"theme\" prop an object.\n\n", 31267 "9": "Missing document `<head>`\n\n", 31268 "10": "Cannot find a StyleSheet instance. Usually this happens if there are multiple copies of styled-components loaded at once. Check out this issue for how to troubleshoot and fix the common cases where this situation can happen: https://github.com/styled-components/styled-components/issues/1941#issuecomment-417862021\n\n", 31269 "11": "_This error was replaced with a dev-time warning, it will be deleted for v4 final._ [createGlobalStyle] received children which will not be rendered. Please use the component without passing children elements.\n\n", 31270 "12": "It seems you are interpolating a keyframe declaration (%s) into an untagged string. This was supported in styled-components v3, but is not longer supported in v4 as keyframes are now injected on-demand. Please wrap your string in the css\\`\\` helper which ensures the styles are injected correctly. See https://www.styled-components.com/docs/api#css\n\n", 31271 "13": "%s is not a styled component and cannot be referred to via component selector. See https://www.styled-components.com/docs/advanced#referring-to-other-components for more details.\n" 31272} : undefined; 31273/** 31274 * super basic version of sprintf 31275 */ 31276 31277function format() { 31278 var a = arguments.length <= 0 ? undefined : arguments[0]; 31279 var b = []; 31280 31281 for (var c = 1, len = arguments.length; c < len; c += 1) { 31282 b.push(arguments.length <= c ? undefined : arguments[c]); 31283 } 31284 31285 b.forEach(function (d) { 31286 a = a.replace(/%[a-z]/, d); 31287 }); 31288 return a; 31289} 31290/** 31291 * Create an error file out of errors.md for development and a simple web link to the full errors 31292 * in production mode. 31293 */ 31294 31295 31296var StyledComponentsError = function (_Error) { 31297 inherits(StyledComponentsError, _Error); 31298 31299 function StyledComponentsError(code) { 31300 classCallCheck(this, StyledComponentsError); 31301 31302 for (var _len = arguments.length, interpolations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { 31303 interpolations[_key - 1] = arguments[_key]; 31304 } 31305 31306 if (false) { var _this; } else { 31307 var _this = possibleConstructorReturn(this, _Error.call(this, format.apply(undefined, [ERRORS[code]].concat(interpolations)).trim())); 31308 } 31309 31310 return possibleConstructorReturn(_this); 31311 } 31312 31313 return StyledComponentsError; 31314}(Error); // 31315 31316 31317var SC_COMPONENT_ID = /^[^\S\n]*?\/\* sc-component-id:\s*(\S+)\s+\*\//gm; 31318 31319var extractComps = function (maybeCSS) { 31320 var css = '' + (maybeCSS || ''); // Definitely a string, and a clone 31321 31322 var existingComponents = []; 31323 css.replace(SC_COMPONENT_ID, function (match, componentId, matchIndex) { 31324 existingComponents.push({ 31325 componentId: componentId, 31326 matchIndex: matchIndex 31327 }); 31328 return match; 31329 }); 31330 return existingComponents.map(function (_ref, i) { 31331 var componentId = _ref.componentId, 31332 matchIndex = _ref.matchIndex; 31333 var nextComp = existingComponents[i + 1]; 31334 var cssFromDOM = nextComp ? css.slice(matchIndex, nextComp.matchIndex) : css.slice(matchIndex); 31335 return { 31336 componentId: componentId, 31337 cssFromDOM: cssFromDOM 31338 }; 31339 }); 31340}; // 31341 31342 31343var COMMENT_REGEX = /^\s*\/\/.*$/gm; // NOTE: This stylis instance is only used to split rules from SSR'd style tags 31344 31345var stylisSplitter = new stylis_stylis_min__WEBPACK_IMPORTED_MODULE_0___default.a({ 31346 global: false, 31347 cascade: true, 31348 keyframe: false, 31349 prefix: false, 31350 compress: false, 31351 semicolon: true 31352}); 31353var stylis = new stylis_stylis_min__WEBPACK_IMPORTED_MODULE_0___default.a({ 31354 global: false, 31355 cascade: true, 31356 keyframe: false, 31357 prefix: true, 31358 compress: false, 31359 semicolon: false // NOTE: This means "autocomplete missing semicolons" 31360 31361}); // Wrap `insertRulePlugin to build a list of rules, 31362// and then make our own plugin to return the rules. This 31363// makes it easier to hook into the existing SSR architecture 31364 31365var parsingRules = []; // eslint-disable-next-line consistent-return 31366 31367var returnRulesPlugin = function returnRulesPlugin(context) { 31368 if (context === -2) { 31369 var parsedRules = parsingRules; 31370 parsingRules = []; 31371 return parsedRules; 31372 } 31373}; 31374 31375var parseRulesPlugin = stylis_rule_sheet__WEBPACK_IMPORTED_MODULE_1___default()(function (rule) { 31376 parsingRules.push(rule); 31377}); 31378 31379var _componentId = void 0; 31380 31381var _selector = void 0; 31382 31383var _selectorRegexp = void 0; 31384 31385var selfReferenceReplacer = function selfReferenceReplacer(match, offset, string) { 31386 if ( // the first self-ref is always untouched 31387 offset > 0 && // there should be at least two self-refs to do a replacement (.b > .b) 31388 string.slice(0, offset).indexOf(_selector) !== -1 && // no consecutive self refs (.b.b); that is a precedence boost and treated differently 31389 string.slice(offset - _selector.length, offset) !== _selector) { 31390 return '.' + _componentId; 31391 } 31392 31393 return match; 31394}; 31395/** 31396 * When writing a style like 31397 * 31398 * & + & { 31399 * color: red; 31400 * } 31401 * 31402 * The second ampersand should be a reference to the static component class. stylis 31403 * has no knowledge of static class so we have to intelligently replace the base selector. 31404 */ 31405 31406 31407var selfReferenceReplacementPlugin = function selfReferenceReplacementPlugin(context, _, selectors) { 31408 if (context === 2 && selectors.length && selectors[0].lastIndexOf(_selector) > 0) { 31409 // eslint-disable-next-line no-param-reassign 31410 selectors[0] = selectors[0].replace(_selectorRegexp, selfReferenceReplacer); 31411 } 31412}; 31413 31414stylis.use([selfReferenceReplacementPlugin, parseRulesPlugin, returnRulesPlugin]); 31415stylisSplitter.use([parseRulesPlugin, returnRulesPlugin]); 31416 31417var splitByRules = function splitByRules(css) { 31418 return stylisSplitter('', css); 31419}; 31420 31421function stringifyRules(rules, selector, prefix) { 31422 var componentId = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '&'; 31423 var flatCSS = rules.join('').replace(COMMENT_REGEX, ''); // replace JS comments 31424 31425 var cssStr = selector && prefix ? prefix + ' ' + selector + ' { ' + flatCSS + ' }' : flatCSS; // stylis has no concept of state to be passed to plugins 31426 // but since JS is single=threaded, we can rely on that to ensure 31427 // these properties stay in sync with the current stylis run 31428 31429 _componentId = componentId; 31430 _selector = selector; 31431 _selectorRegexp = new RegExp('\\' + _selector + '\\b', 'g'); 31432 return stylis(prefix || !selector ? '' : selector, cssStr); 31433} // 31434 31435/* eslint-disable camelcase, no-undef */ 31436 31437 31438var getNonce = function () { 31439 return true ? __webpack_require__.nc : undefined; 31440}; // 31441 31442/* These are helpers for the StyleTags to keep track of the injected 31443 * rule names for each (component) ID that they're keeping track of. 31444 * They're crucial for detecting whether a name has already been 31445 * injected. 31446 * (This excludes rehydrated names) */ 31447 31448/* adds a new ID:name pairing to a names dictionary */ 31449 31450 31451var addNameForId = function addNameForId(names, id, name) { 31452 if (name) { 31453 // eslint-disable-next-line no-param-reassign 31454 var namesForId = names[id] || (names[id] = Object.create(null)); 31455 namesForId[name] = true; 31456 } 31457}; 31458/* resets an ID entirely by overwriting it in the dictionary */ 31459 31460 31461var resetIdNames = function resetIdNames(names, id) { 31462 // eslint-disable-next-line no-param-reassign 31463 names[id] = Object.create(null); 31464}; 31465/* factory for a names dictionary checking the existance of an ID:name pairing */ 31466 31467 31468var hasNameForId = function hasNameForId(names) { 31469 return function (id, name) { 31470 return names[id] !== undefined && names[id][name]; 31471 }; 31472}; 31473/* stringifies names for the html/element output */ 31474 31475 31476var stringifyNames = function stringifyNames(names) { 31477 var str = ''; // eslint-disable-next-line guard-for-in 31478 31479 for (var id in names) { 31480 str += Object.keys(names[id]).join(' ') + ' '; 31481 } 31482 31483 return str.trim(); 31484}; 31485/* clones the nested names dictionary */ 31486 31487 31488var cloneNames = function cloneNames(names) { 31489 var clone = Object.create(null); // eslint-disable-next-line guard-for-in 31490 31491 for (var id in names) { 31492 clone[id] = _extends({}, names[id]); 31493 } 31494 31495 return clone; 31496}; // 31497 31498/* These are helpers that deal with the insertRule (aka speedy) API 31499 * They are used in the StyleTags and specifically the speedy tag 31500 */ 31501 31502/* retrieve a sheet for a given style tag */ 31503 31504 31505var sheetForTag = function sheetForTag(tag) { 31506 // $FlowFixMe 31507 if (tag.sheet) return tag.sheet; 31508 /* Firefox quirk requires us to step through all stylesheets to find one owned by the given tag */ 31509 31510 var size = tag.ownerDocument.styleSheets.length; 31511 31512 for (var i = 0; i < size; i += 1) { 31513 var sheet = tag.ownerDocument.styleSheets[i]; // $FlowFixMe 31514 31515 if (sheet.ownerNode === tag) return sheet; 31516 } 31517 /* we should always be able to find a tag */ 31518 31519 31520 throw new StyledComponentsError(10); 31521}; 31522/* insert a rule safely and return whether it was actually injected */ 31523 31524 31525var safeInsertRule = function safeInsertRule(sheet, cssRule, index) { 31526 /* abort early if cssRule string is falsy */ 31527 if (!cssRule) return false; 31528 var maxIndex = sheet.cssRules.length; 31529 31530 try { 31531 /* use insertRule and cap passed index with maxIndex (no of cssRules) */ 31532 sheet.insertRule(cssRule, index <= maxIndex ? index : maxIndex); 31533 } catch (err) { 31534 /* any error indicates an invalid rule */ 31535 return false; 31536 } 31537 31538 return true; 31539}; 31540/* deletes `size` rules starting from `removalIndex` */ 31541 31542 31543var deleteRules = function deleteRules(sheet, removalIndex, size) { 31544 var lowerBound = removalIndex - size; 31545 31546 for (var i = removalIndex; i > lowerBound; i -= 1) { 31547 sheet.deleteRule(i); 31548 } 31549}; // 31550 31551/* this marker separates component styles and is important for rehydration */ 31552 31553 31554var makeTextMarker = function makeTextMarker(id) { 31555 return '\n/* sc-component-id: ' + id + ' */\n'; 31556}; 31557/* add up all numbers in array up until and including the index */ 31558 31559 31560var addUpUntilIndex = function addUpUntilIndex(sizes, index) { 31561 var totalUpToIndex = 0; 31562 31563 for (var i = 0; i <= index; i += 1) { 31564 totalUpToIndex += sizes[i]; 31565 } 31566 31567 return totalUpToIndex; 31568}; 31569/* create a new style tag after lastEl */ 31570 31571 31572var makeStyleTag = function makeStyleTag(target, tagEl, insertBefore) { 31573 var targetDocument = document; 31574 if (target) targetDocument = target.ownerDocument;else if (tagEl) targetDocument = tagEl.ownerDocument; 31575 var el = targetDocument.createElement('style'); 31576 el.setAttribute(SC_ATTR, ''); 31577 el.setAttribute(SC_VERSION_ATTR, "4.4.1"); 31578 var nonce = getNonce(); 31579 31580 if (nonce) { 31581 el.setAttribute('nonce', nonce); 31582 } 31583 /* Work around insertRule quirk in EdgeHTML */ 31584 31585 31586 el.appendChild(targetDocument.createTextNode('')); 31587 31588 if (target && !tagEl) { 31589 /* Append to target when no previous element was passed */ 31590 target.appendChild(el); 31591 } else { 31592 if (!tagEl || !target || !tagEl.parentNode) { 31593 throw new StyledComponentsError(6); 31594 } 31595 /* Insert new style tag after the previous one */ 31596 31597 31598 tagEl.parentNode.insertBefore(el, insertBefore ? tagEl : tagEl.nextSibling); 31599 } 31600 31601 return el; 31602}; 31603/* takes a css factory function and outputs an html styled tag factory */ 31604 31605 31606var wrapAsHtmlTag = function wrapAsHtmlTag(css, names) { 31607 return function (additionalAttrs) { 31608 var nonce = getNonce(); 31609 var attrs = [nonce && 'nonce="' + nonce + '"', SC_ATTR + '="' + stringifyNames(names) + '"', SC_VERSION_ATTR + '="' + "4.4.1" + '"', additionalAttrs]; 31610 var htmlAttr = attrs.filter(Boolean).join(' '); 31611 return '<style ' + htmlAttr + '>' + css() + '</style>'; 31612 }; 31613}; 31614/* takes a css factory function and outputs an element factory */ 31615 31616 31617var wrapAsElement = function wrapAsElement(css, names) { 31618 return function () { 31619 var _props; 31620 31621 var props = (_props = {}, _props[SC_ATTR] = stringifyNames(names), _props[SC_VERSION_ATTR] = "4.4.1", _props); 31622 var nonce = getNonce(); 31623 31624 if (nonce) { 31625 // $FlowFixMe 31626 props.nonce = nonce; 31627 } // eslint-disable-next-line react/no-danger 31628 31629 31630 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement('style', _extends({}, props, { 31631 dangerouslySetInnerHTML: { 31632 __html: css() 31633 } 31634 })); 31635 }; 31636}; 31637 31638var getIdsFromMarkersFactory = function getIdsFromMarkersFactory(markers) { 31639 return function () { 31640 return Object.keys(markers); 31641 }; 31642}; 31643/* speedy tags utilise insertRule */ 31644 31645 31646var makeSpeedyTag = function makeSpeedyTag(el, getImportRuleTag) { 31647 var names = Object.create(null); 31648 var markers = Object.create(null); 31649 var sizes = []; 31650 var extractImport = getImportRuleTag !== undefined; 31651 /* indicates whether getImportRuleTag was called */ 31652 31653 var usedImportRuleTag = false; 31654 31655 var insertMarker = function insertMarker(id) { 31656 var prev = markers[id]; 31657 31658 if (prev !== undefined) { 31659 return prev; 31660 } 31661 31662 markers[id] = sizes.length; 31663 sizes.push(0); 31664 resetIdNames(names, id); 31665 return markers[id]; 31666 }; 31667 31668 var insertRules = function insertRules(id, cssRules, name) { 31669 var marker = insertMarker(id); 31670 var sheet = sheetForTag(el); 31671 var insertIndex = addUpUntilIndex(sizes, marker); 31672 var injectedRules = 0; 31673 var importRules = []; 31674 var cssRulesSize = cssRules.length; 31675 31676 for (var i = 0; i < cssRulesSize; i += 1) { 31677 var cssRule = cssRules[i]; 31678 var mayHaveImport = extractImport; 31679 /* @import rules are reordered to appear first */ 31680 31681 if (mayHaveImport && cssRule.indexOf('@import') !== -1) { 31682 importRules.push(cssRule); 31683 } else if (safeInsertRule(sheet, cssRule, insertIndex + injectedRules)) { 31684 mayHaveImport = false; 31685 injectedRules += 1; 31686 } 31687 } 31688 31689 if (extractImport && importRules.length > 0) { 31690 usedImportRuleTag = true; // $FlowFixMe 31691 31692 getImportRuleTag().insertRules(id + '-import', importRules); 31693 } 31694 31695 sizes[marker] += injectedRules; 31696 /* add up no of injected rules */ 31697 31698 addNameForId(names, id, name); 31699 }; 31700 31701 var removeRules = function removeRules(id) { 31702 var marker = markers[id]; 31703 if (marker === undefined) return; // $FlowFixMe 31704 31705 if (el.isConnected === false) return; 31706 var size = sizes[marker]; 31707 var sheet = sheetForTag(el); 31708 var removalIndex = addUpUntilIndex(sizes, marker) - 1; 31709 deleteRules(sheet, removalIndex, size); 31710 sizes[marker] = 0; 31711 resetIdNames(names, id); 31712 31713 if (extractImport && usedImportRuleTag) { 31714 // $FlowFixMe 31715 getImportRuleTag().removeRules(id + '-import'); 31716 } 31717 }; 31718 31719 var css = function css() { 31720 var _sheetForTag = sheetForTag(el), 31721 cssRules = _sheetForTag.cssRules; 31722 31723 var str = ''; // eslint-disable-next-line guard-for-in 31724 31725 for (var id in markers) { 31726 str += makeTextMarker(id); 31727 var marker = markers[id]; 31728 var end = addUpUntilIndex(sizes, marker); 31729 var size = sizes[marker]; 31730 31731 for (var i = end - size; i < end; i += 1) { 31732 var rule = cssRules[i]; 31733 31734 if (rule !== undefined) { 31735 str += rule.cssText; 31736 } 31737 } 31738 } 31739 31740 return str; 31741 }; 31742 31743 return { 31744 clone: function clone() { 31745 throw new StyledComponentsError(5); 31746 }, 31747 css: css, 31748 getIds: getIdsFromMarkersFactory(markers), 31749 hasNameForId: hasNameForId(names), 31750 insertMarker: insertMarker, 31751 insertRules: insertRules, 31752 removeRules: removeRules, 31753 sealed: false, 31754 styleTag: el, 31755 toElement: wrapAsElement(css, names), 31756 toHTML: wrapAsHtmlTag(css, names) 31757 }; 31758}; 31759 31760var makeTextNode = function makeTextNode(targetDocument, id) { 31761 return targetDocument.createTextNode(makeTextMarker(id)); 31762}; 31763 31764var makeBrowserTag = function makeBrowserTag(el, getImportRuleTag) { 31765 var names = Object.create(null); 31766 var markers = Object.create(null); 31767 var extractImport = getImportRuleTag !== undefined; 31768 /* indicates whether getImportRuleTag was called */ 31769 31770 var usedImportRuleTag = false; 31771 31772 var insertMarker = function insertMarker(id) { 31773 var prev = markers[id]; 31774 31775 if (prev !== undefined) { 31776 return prev; 31777 } 31778 31779 markers[id] = makeTextNode(el.ownerDocument, id); 31780 el.appendChild(markers[id]); 31781 names[id] = Object.create(null); 31782 return markers[id]; 31783 }; 31784 31785 var insertRules = function insertRules(id, cssRules, name) { 31786 var marker = insertMarker(id); 31787 var importRules = []; 31788 var cssRulesSize = cssRules.length; 31789 31790 for (var i = 0; i < cssRulesSize; i += 1) { 31791 var rule = cssRules[i]; 31792 var mayHaveImport = extractImport; 31793 31794 if (mayHaveImport && rule.indexOf('@import') !== -1) { 31795 importRules.push(rule); 31796 } else { 31797 mayHaveImport = false; 31798 var separator = i === cssRulesSize - 1 ? '' : ' '; 31799 marker.appendData('' + rule + separator); 31800 } 31801 } 31802 31803 addNameForId(names, id, name); 31804 31805 if (extractImport && importRules.length > 0) { 31806 usedImportRuleTag = true; // $FlowFixMe 31807 31808 getImportRuleTag().insertRules(id + '-import', importRules); 31809 } 31810 }; 31811 31812 var removeRules = function removeRules(id) { 31813 var marker = markers[id]; 31814 if (marker === undefined) return; 31815 /* create new empty text node and replace the current one */ 31816 31817 var newMarker = makeTextNode(el.ownerDocument, id); 31818 el.replaceChild(newMarker, marker); 31819 markers[id] = newMarker; 31820 resetIdNames(names, id); 31821 31822 if (extractImport && usedImportRuleTag) { 31823 // $FlowFixMe 31824 getImportRuleTag().removeRules(id + '-import'); 31825 } 31826 }; 31827 31828 var css = function css() { 31829 var str = ''; // eslint-disable-next-line guard-for-in 31830 31831 for (var id in markers) { 31832 str += markers[id].data; 31833 } 31834 31835 return str; 31836 }; 31837 31838 return { 31839 clone: function clone() { 31840 throw new StyledComponentsError(5); 31841 }, 31842 css: css, 31843 getIds: getIdsFromMarkersFactory(markers), 31844 hasNameForId: hasNameForId(names), 31845 insertMarker: insertMarker, 31846 insertRules: insertRules, 31847 removeRules: removeRules, 31848 sealed: false, 31849 styleTag: el, 31850 toElement: wrapAsElement(css, names), 31851 toHTML: wrapAsHtmlTag(css, names) 31852 }; 31853}; 31854 31855var makeServerTag = function makeServerTag(namesArg, markersArg) { 31856 var names = namesArg === undefined ? Object.create(null) : namesArg; 31857 var markers = markersArg === undefined ? Object.create(null) : markersArg; 31858 31859 var insertMarker = function insertMarker(id) { 31860 var prev = markers[id]; 31861 31862 if (prev !== undefined) { 31863 return prev; 31864 } 31865 31866 return markers[id] = ['']; 31867 }; 31868 31869 var insertRules = function insertRules(id, cssRules, name) { 31870 var marker = insertMarker(id); 31871 marker[0] += cssRules.join(' '); 31872 addNameForId(names, id, name); 31873 }; 31874 31875 var removeRules = function removeRules(id) { 31876 var marker = markers[id]; 31877 if (marker === undefined) return; 31878 marker[0] = ''; 31879 resetIdNames(names, id); 31880 }; 31881 31882 var css = function css() { 31883 var str = ''; // eslint-disable-next-line guard-for-in 31884 31885 for (var id in markers) { 31886 var cssForId = markers[id][0]; 31887 31888 if (cssForId) { 31889 str += makeTextMarker(id) + cssForId; 31890 } 31891 } 31892 31893 return str; 31894 }; 31895 31896 var clone = function clone() { 31897 var namesClone = cloneNames(names); 31898 var markersClone = Object.create(null); // eslint-disable-next-line guard-for-in 31899 31900 for (var id in markers) { 31901 markersClone[id] = [markers[id][0]]; 31902 } 31903 31904 return makeServerTag(namesClone, markersClone); 31905 }; 31906 31907 var tag = { 31908 clone: clone, 31909 css: css, 31910 getIds: getIdsFromMarkersFactory(markers), 31911 hasNameForId: hasNameForId(names), 31912 insertMarker: insertMarker, 31913 insertRules: insertRules, 31914 removeRules: removeRules, 31915 sealed: false, 31916 styleTag: null, 31917 toElement: wrapAsElement(css, names), 31918 toHTML: wrapAsHtmlTag(css, names) 31919 }; 31920 return tag; 31921}; 31922 31923var makeTag = function makeTag(target, tagEl, forceServer, insertBefore, getImportRuleTag) { 31924 if (IS_BROWSER && !forceServer) { 31925 var el = makeStyleTag(target, tagEl, insertBefore); 31926 31927 if (DISABLE_SPEEDY) { 31928 return makeBrowserTag(el, getImportRuleTag); 31929 } else { 31930 return makeSpeedyTag(el, getImportRuleTag); 31931 } 31932 } 31933 31934 return makeServerTag(); 31935}; 31936 31937var rehydrate = function rehydrate(tag, els, extracted) { 31938 /* add all extracted components to the new tag */ 31939 for (var i = 0, len = extracted.length; i < len; i += 1) { 31940 var _extracted$i = extracted[i], 31941 componentId = _extracted$i.componentId, 31942 cssFromDOM = _extracted$i.cssFromDOM; 31943 var cssRules = splitByRules(cssFromDOM); 31944 tag.insertRules(componentId, cssRules); 31945 } 31946 /* remove old HTMLStyleElements, since they have been rehydrated */ 31947 31948 31949 for (var _i = 0, _len = els.length; _i < _len; _i += 1) { 31950 var el = els[_i]; 31951 31952 if (el.parentNode) { 31953 el.parentNode.removeChild(el); 31954 } 31955 } 31956}; // 31957 31958 31959var SPLIT_REGEX = /\s+/; 31960/* determine the maximum number of components before tags are sharded */ 31961 31962var MAX_SIZE = void 0; 31963 31964if (IS_BROWSER) { 31965 /* in speedy mode we can keep a lot more rules in a sheet before a slowdown can be expected */ 31966 MAX_SIZE = DISABLE_SPEEDY ? 40 : 1000; 31967} else { 31968 /* for servers we do not need to shard at all */ 31969 MAX_SIZE = -1; 31970} 31971 31972var sheetRunningId = 0; 31973var master = void 0; 31974 31975var StyleSheet = function () { 31976 /* a map from ids to tags */ 31977 31978 /* deferred rules for a given id */ 31979 31980 /* this is used for not reinjecting rules via hasNameForId() */ 31981 31982 /* when rules for an id are removed using remove() we have to ignore rehydratedNames for it */ 31983 31984 /* a list of tags belonging to this StyleSheet */ 31985 31986 /* a tag for import rules */ 31987 31988 /* current capacity until a new tag must be created */ 31989 31990 /* children (aka clones) of this StyleSheet inheriting all and future injections */ 31991 function StyleSheet() { 31992 var _this = this; 31993 31994 var target = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : IS_BROWSER ? document.head : null; 31995 var forceServer = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; 31996 classCallCheck(this, StyleSheet); 31997 31998 this.getImportRuleTag = function () { 31999 var importRuleTag = _this.importRuleTag; 32000 32001 if (importRuleTag !== undefined) { 32002 return importRuleTag; 32003 } 32004 32005 var firstTag = _this.tags[0]; 32006 var insertBefore = true; 32007 return _this.importRuleTag = makeTag(_this.target, firstTag ? firstTag.styleTag : null, _this.forceServer, insertBefore); 32008 }; 32009 32010 sheetRunningId += 1; 32011 this.id = sheetRunningId; 32012 this.forceServer = forceServer; 32013 this.target = forceServer ? null : target; 32014 this.tagMap = {}; 32015 this.deferred = {}; 32016 this.rehydratedNames = {}; 32017 this.ignoreRehydratedNames = {}; 32018 this.tags = []; 32019 this.capacity = 1; 32020 this.clones = []; 32021 } 32022 /* rehydrate all SSR'd style tags */ 32023 32024 32025 StyleSheet.prototype.rehydrate = function rehydrate$$1() { 32026 if (!IS_BROWSER || this.forceServer) return this; 32027 var els = []; 32028 var extracted = []; 32029 var isStreamed = false; 32030 /* retrieve all of our SSR style elements from the DOM */ 32031 32032 var nodes = document.querySelectorAll('style[' + SC_ATTR + '][' + SC_VERSION_ATTR + '="' + "4.4.1" + '"]'); 32033 var nodesSize = nodes.length; 32034 /* abort rehydration if no previous style tags were found */ 32035 32036 if (!nodesSize) return this; 32037 32038 for (var i = 0; i < nodesSize; i += 1) { 32039 var el = nodes[i]; 32040 /* check if style tag is a streamed tag */ 32041 32042 if (!isStreamed) isStreamed = !!el.getAttribute(SC_STREAM_ATTR); 32043 /* retrieve all component names */ 32044 32045 var elNames = (el.getAttribute(SC_ATTR) || '').trim().split(SPLIT_REGEX); 32046 var elNamesSize = elNames.length; 32047 32048 for (var j = 0, name; j < elNamesSize; j += 1) { 32049 name = elNames[j]; 32050 /* add rehydrated name to sheet to avoid re-adding styles */ 32051 32052 this.rehydratedNames[name] = true; 32053 } 32054 /* extract all components and their CSS */ 32055 32056 32057 extracted.push.apply(extracted, extractComps(el.textContent)); 32058 /* store original HTMLStyleElement */ 32059 32060 els.push(el); 32061 } 32062 /* abort rehydration if nothing was extracted */ 32063 32064 32065 var extractedSize = extracted.length; 32066 if (!extractedSize) return this; 32067 /* create a tag to be used for rehydration */ 32068 32069 var tag = this.makeTag(null); 32070 rehydrate(tag, els, extracted); 32071 /* reset capacity and adjust MAX_SIZE by the initial size of the rehydration */ 32072 32073 this.capacity = Math.max(1, MAX_SIZE - extractedSize); 32074 this.tags.push(tag); 32075 /* retrieve all component ids */ 32076 32077 for (var _j = 0; _j < extractedSize; _j += 1) { 32078 this.tagMap[extracted[_j].componentId] = tag; 32079 } 32080 32081 return this; 32082 }; 32083 /* retrieve a "master" instance of StyleSheet which is typically used when no other is available 32084 * The master StyleSheet is targeted by createGlobalStyle, keyframes, and components outside of any 32085 * StyleSheetManager's context */ 32086 32087 /* reset the internal "master" instance */ 32088 32089 32090 StyleSheet.reset = function reset() { 32091 var forceServer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; 32092 master = new StyleSheet(undefined, forceServer).rehydrate(); 32093 }; 32094 /* adds "children" to the StyleSheet that inherit all of the parents' rules 32095 * while their own rules do not affect the parent */ 32096 32097 32098 StyleSheet.prototype.clone = function clone() { 32099 var sheet = new StyleSheet(this.target, this.forceServer); 32100 /* add to clone array */ 32101 32102 this.clones.push(sheet); 32103 /* clone all tags */ 32104 32105 sheet.tags = this.tags.map(function (tag) { 32106 var ids = tag.getIds(); 32107 var newTag = tag.clone(); 32108 /* reconstruct tagMap */ 32109 32110 for (var i = 0; i < ids.length; i += 1) { 32111 sheet.tagMap[ids[i]] = newTag; 32112 } 32113 32114 return newTag; 32115 }); 32116 /* clone other maps */ 32117 32118 sheet.rehydratedNames = _extends({}, this.rehydratedNames); 32119 sheet.deferred = _extends({}, this.deferred); 32120 return sheet; 32121 }; 32122 /* force StyleSheet to create a new tag on the next injection */ 32123 32124 32125 StyleSheet.prototype.sealAllTags = function sealAllTags() { 32126 this.capacity = 1; 32127 this.tags.forEach(function (tag) { 32128 // eslint-disable-next-line no-param-reassign 32129 tag.sealed = true; 32130 }); 32131 }; 32132 32133 StyleSheet.prototype.makeTag = function makeTag$$1(tag) { 32134 var lastEl = tag ? tag.styleTag : null; 32135 var insertBefore = false; 32136 return makeTag(this.target, lastEl, this.forceServer, insertBefore, this.getImportRuleTag); 32137 }; 32138 /* get a tag for a given componentId, assign the componentId to one, or shard */ 32139 32140 32141 StyleSheet.prototype.getTagForId = function getTagForId(id) { 32142 /* simply return a tag, when the componentId was already assigned one */ 32143 var prev = this.tagMap[id]; 32144 32145 if (prev !== undefined && !prev.sealed) { 32146 return prev; 32147 } 32148 32149 var tag = this.tags[this.tags.length - 1]; 32150 /* shard (create a new tag) if the tag is exhausted (See MAX_SIZE) */ 32151 32152 this.capacity -= 1; 32153 32154 if (this.capacity === 0) { 32155 this.capacity = MAX_SIZE; 32156 tag = this.makeTag(tag); 32157 this.tags.push(tag); 32158 } 32159 32160 return this.tagMap[id] = tag; 32161 }; 32162 /* mainly for createGlobalStyle to check for its id */ 32163 32164 32165 StyleSheet.prototype.hasId = function hasId(id) { 32166 return this.tagMap[id] !== undefined; 32167 }; 32168 /* caching layer checking id+name to already have a corresponding tag and injected rules */ 32169 32170 32171 StyleSheet.prototype.hasNameForId = function hasNameForId(id, name) { 32172 /* exception for rehydrated names which are checked separately */ 32173 if (this.ignoreRehydratedNames[id] === undefined && this.rehydratedNames[name]) { 32174 return true; 32175 } 32176 32177 var tag = this.tagMap[id]; 32178 return tag !== undefined && tag.hasNameForId(id, name); 32179 }; 32180 /* registers a componentId and registers it on its tag */ 32181 32182 32183 StyleSheet.prototype.deferredInject = function deferredInject(id, cssRules) { 32184 /* don't inject when the id is already registered */ 32185 if (this.tagMap[id] !== undefined) return; 32186 var clones = this.clones; 32187 32188 for (var i = 0; i < clones.length; i += 1) { 32189 clones[i].deferredInject(id, cssRules); 32190 } 32191 32192 this.getTagForId(id).insertMarker(id); 32193 this.deferred[id] = cssRules; 32194 }; 32195 /* injects rules for a given id with a name that will need to be cached */ 32196 32197 32198 StyleSheet.prototype.inject = function inject(id, cssRules, name) { 32199 var clones = this.clones; 32200 32201 for (var i = 0; i < clones.length; i += 1) { 32202 clones[i].inject(id, cssRules, name); 32203 } 32204 32205 var tag = this.getTagForId(id); 32206 /* add deferred rules for component */ 32207 32208 if (this.deferred[id] !== undefined) { 32209 // Combine passed cssRules with previously deferred CSS rules 32210 // NOTE: We cannot mutate the deferred array itself as all clones 32211 // do the same (see clones[i].inject) 32212 var rules = this.deferred[id].concat(cssRules); 32213 tag.insertRules(id, rules, name); 32214 this.deferred[id] = undefined; 32215 } else { 32216 tag.insertRules(id, cssRules, name); 32217 } 32218 }; 32219 /* removes all rules for a given id, which doesn't remove its marker but resets it */ 32220 32221 32222 StyleSheet.prototype.remove = function remove(id) { 32223 var tag = this.tagMap[id]; 32224 if (tag === undefined) return; 32225 var clones = this.clones; 32226 32227 for (var i = 0; i < clones.length; i += 1) { 32228 clones[i].remove(id); 32229 } 32230 /* remove all rules from the tag */ 32231 32232 32233 tag.removeRules(id); 32234 /* ignore possible rehydrated names */ 32235 32236 this.ignoreRehydratedNames[id] = true; 32237 /* delete possible deferred rules */ 32238 32239 this.deferred[id] = undefined; 32240 }; 32241 32242 StyleSheet.prototype.toHTML = function toHTML() { 32243 return this.tags.map(function (tag) { 32244 return tag.toHTML(); 32245 }).join(''); 32246 }; 32247 32248 StyleSheet.prototype.toReactElements = function toReactElements() { 32249 var id = this.id; 32250 return this.tags.map(function (tag, i) { 32251 var key = 'sc-' + id + '-' + i; 32252 return /*#__PURE__*/Object(react__WEBPACK_IMPORTED_MODULE_2__["cloneElement"])(tag.toElement(), { 32253 key: key 32254 }); 32255 }); 32256 }; 32257 32258 createClass(StyleSheet, null, [{ 32259 key: 'master', 32260 get: function get$$1() { 32261 return master || (master = new StyleSheet().rehydrate()); 32262 } 32263 /* NOTE: This is just for backwards-compatibility with jest-styled-components */ 32264 32265 }, { 32266 key: 'instance', 32267 get: function get$$1() { 32268 return StyleSheet.master; 32269 } 32270 }]); 32271 return StyleSheet; 32272}(); // 32273 32274 32275var Keyframes = function () { 32276 function Keyframes(name, rules) { 32277 var _this = this; 32278 32279 classCallCheck(this, Keyframes); 32280 32281 this.inject = function (styleSheet) { 32282 if (!styleSheet.hasNameForId(_this.id, _this.name)) { 32283 styleSheet.inject(_this.id, _this.rules, _this.name); 32284 } 32285 }; 32286 32287 this.toString = function () { 32288 throw new StyledComponentsError(12, String(_this.name)); 32289 }; 32290 32291 this.name = name; 32292 this.rules = rules; 32293 this.id = 'sc-keyframes-' + name; 32294 } 32295 32296 Keyframes.prototype.getName = function getName() { 32297 return this.name; 32298 }; 32299 32300 return Keyframes; 32301}(); // 32302 32303/** 32304 * inlined version of 32305 * https://github.com/facebook/fbjs/blob/master/packages/fbjs/src/core/hyphenateStyleName.js 32306 */ 32307 32308 32309var uppercasePattern = /([A-Z])/g; 32310var msPattern = /^ms-/; 32311/** 32312 * Hyphenates a camelcased CSS property name, for example: 32313 * 32314 * > hyphenateStyleName('backgroundColor') 32315 * < "background-color" 32316 * > hyphenateStyleName('MozTransition') 32317 * < "-moz-transition" 32318 * > hyphenateStyleName('msTransition') 32319 * < "-ms-transition" 32320 * 32321 * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix 32322 * is converted to `-ms-`. 32323 * 32324 * @param {string} string 32325 * @return {string} 32326 */ 32327 32328function hyphenateStyleName(string) { 32329 return string.replace(uppercasePattern, '-$1').toLowerCase().replace(msPattern, '-ms-'); 32330} // 32331// Taken from https://github.com/facebook/react/blob/b87aabdfe1b7461e7331abb3601d9e6bb27544bc/packages/react-dom/src/shared/dangerousStyleValue.js 32332 32333 32334function addUnitIfNeeded(name, value) { 32335 // https://github.com/amilajack/eslint-plugin-flowtype-errors/issues/133 32336 // $FlowFixMe 32337 if (value == null || typeof value === 'boolean' || value === '') { 32338 return ''; 32339 } 32340 32341 if (typeof value === 'number' && value !== 0 && !(name in _emotion_unitless__WEBPACK_IMPORTED_MODULE_3__["default"])) { 32342 return value + 'px'; // Presumes implicit 'px' suffix for unitless numbers 32343 } 32344 32345 return String(value).trim(); 32346} // 32347 32348/** 32349 * It's falsish not falsy because 0 is allowed. 32350 */ 32351 32352 32353var isFalsish = function isFalsish(chunk) { 32354 return chunk === undefined || chunk === null || chunk === false || chunk === ''; 32355}; 32356 32357var objToCssArray = function objToCssArray(obj, prevKey) { 32358 var rules = []; 32359 var keys = Object.keys(obj); 32360 keys.forEach(function (key) { 32361 if (!isFalsish(obj[key])) { 32362 if (isPlainObject(obj[key])) { 32363 rules.push.apply(rules, objToCssArray(obj[key], key)); 32364 return rules; 32365 } else if (isFunction(obj[key])) { 32366 rules.push(hyphenateStyleName(key) + ':', obj[key], ';'); 32367 return rules; 32368 } 32369 32370 rules.push(hyphenateStyleName(key) + ': ' + addUnitIfNeeded(key, obj[key]) + ';'); 32371 } 32372 32373 return rules; 32374 }); 32375 return prevKey ? [prevKey + ' {'].concat(rules, ['}']) : rules; 32376}; 32377 32378function flatten(chunk, executionContext, styleSheet) { 32379 if (Array.isArray(chunk)) { 32380 var ruleSet = []; 32381 32382 for (var i = 0, len = chunk.length, result; i < len; i += 1) { 32383 result = flatten(chunk[i], executionContext, styleSheet); 32384 if (result === null) continue;else if (Array.isArray(result)) ruleSet.push.apply(ruleSet, result);else ruleSet.push(result); 32385 } 32386 32387 return ruleSet; 32388 } 32389 32390 if (isFalsish(chunk)) { 32391 return null; 32392 } 32393 /* Handle other components */ 32394 32395 32396 if (isStyledComponent(chunk)) { 32397 return '.' + chunk.styledComponentId; 32398 } 32399 /* Either execute or defer the function */ 32400 32401 32402 if (isFunction(chunk)) { 32403 if (isStatelessFunction(chunk) && executionContext) { 32404 var _result = chunk(executionContext); 32405 32406 if ( true && Object(react_is__WEBPACK_IMPORTED_MODULE_4__["isElement"])(_result)) { 32407 // eslint-disable-next-line no-console 32408 console.warn(getComponentName(chunk) + ' is not a styled component and cannot be referred to via component selector. See https://www.styled-components.com/docs/advanced#referring-to-other-components for more details.'); 32409 } 32410 32411 return flatten(_result, executionContext, styleSheet); 32412 } else return chunk; 32413 } 32414 32415 if (chunk instanceof Keyframes) { 32416 if (styleSheet) { 32417 chunk.inject(styleSheet); 32418 return chunk.getName(); 32419 } else return chunk; 32420 } 32421 /* Handle objects */ 32422 32423 32424 return isPlainObject(chunk) ? objToCssArray(chunk) : chunk.toString(); 32425} // 32426 32427 32428function css(styles) { 32429 for (var _len = arguments.length, interpolations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { 32430 interpolations[_key - 1] = arguments[_key]; 32431 } 32432 32433 if (isFunction(styles) || isPlainObject(styles)) { 32434 // $FlowFixMe 32435 return flatten(interleave(EMPTY_ARRAY, [styles].concat(interpolations))); 32436 } // $FlowFixMe 32437 32438 32439 return flatten(interleave(styles, interpolations)); 32440} // 32441 32442 32443function constructWithOptions(componentConstructor, tag) { 32444 var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : EMPTY_OBJECT; 32445 32446 if (!Object(react_is__WEBPACK_IMPORTED_MODULE_4__["isValidElementType"])(tag)) { 32447 throw new StyledComponentsError(1, String(tag)); 32448 } 32449 /* This is callable directly as a template function */ 32450 // $FlowFixMe: Not typed to avoid destructuring arguments 32451 32452 32453 var templateFunction = function templateFunction() { 32454 return componentConstructor(tag, options, css.apply(undefined, arguments)); 32455 }; 32456 /* If config methods are called, wrap up a new template function and merge options */ 32457 32458 32459 templateFunction.withConfig = function (config) { 32460 return constructWithOptions(componentConstructor, tag, _extends({}, options, config)); 32461 }; 32462 /* Modify/inject new props at runtime */ 32463 32464 32465 templateFunction.attrs = function (attrs) { 32466 return constructWithOptions(componentConstructor, tag, _extends({}, options, { 32467 attrs: Array.prototype.concat(options.attrs, attrs).filter(Boolean) 32468 })); 32469 }; 32470 32471 return templateFunction; 32472} // 32473// Source: https://github.com/garycourt/murmurhash-js/blob/master/murmurhash2_gc.js 32474 32475 32476function murmurhash(c) { 32477 for (var e = c.length | 0, a = e | 0, d = 0, b; e >= 4;) { 32478 b = c.charCodeAt(d) & 255 | (c.charCodeAt(++d) & 255) << 8 | (c.charCodeAt(++d) & 255) << 16 | (c.charCodeAt(++d) & 255) << 24, b = 1540483477 * (b & 65535) + ((1540483477 * (b >>> 16) & 65535) << 16), b ^= b >>> 24, b = 1540483477 * (b & 65535) + ((1540483477 * (b >>> 16) & 65535) << 16), a = 1540483477 * (a & 65535) + ((1540483477 * (a >>> 16) & 65535) << 16) ^ b, e -= 4, ++d; 32479 } 32480 32481 switch (e) { 32482 case 3: 32483 a ^= (c.charCodeAt(d + 2) & 255) << 16; 32484 32485 case 2: 32486 a ^= (c.charCodeAt(d + 1) & 255) << 8; 32487 32488 case 1: 32489 a ^= c.charCodeAt(d) & 255, a = 1540483477 * (a & 65535) + ((1540483477 * (a >>> 16) & 65535) << 16); 32490 } 32491 32492 a ^= a >>> 13; 32493 a = 1540483477 * (a & 65535) + ((1540483477 * (a >>> 16) & 65535) << 16); 32494 return (a ^ a >>> 15) >>> 0; 32495} // 32496 32497/* eslint-disable no-bitwise */ 32498 32499/* This is the "capacity" of our alphabet i.e. 2x26 for all letters plus their capitalised 32500 * counterparts */ 32501 32502 32503var charsLength = 52; 32504/* start at 75 for 'a' until 'z' (25) and then start at 65 for capitalised letters */ 32505 32506var getAlphabeticChar = function getAlphabeticChar(code) { 32507 return String.fromCharCode(code + (code > 25 ? 39 : 97)); 32508}; 32509/* input a number, usually a hash and convert it to base-52 */ 32510 32511 32512function generateAlphabeticName(code) { 32513 var name = ''; 32514 var x = void 0; 32515 /* get a char and divide by alphabet-length */ 32516 32517 for (x = code; x > charsLength; x = Math.floor(x / charsLength)) { 32518 name = getAlphabeticChar(x % charsLength) + name; 32519 } 32520 32521 return getAlphabeticChar(x % charsLength) + name; 32522} // 32523 32524 32525function hasFunctionObjectKey(obj) { 32526 // eslint-disable-next-line guard-for-in, no-restricted-syntax 32527 for (var key in obj) { 32528 if (isFunction(obj[key])) { 32529 return true; 32530 } 32531 } 32532 32533 return false; 32534} 32535 32536function isStaticRules(rules, attrs) { 32537 for (var i = 0; i < rules.length; i += 1) { 32538 var rule = rules[i]; // recursive case 32539 32540 if (Array.isArray(rule) && !isStaticRules(rule, attrs)) { 32541 return false; 32542 } else if (isFunction(rule) && !isStyledComponent(rule)) { 32543 // functions are allowed to be static if they're just being 32544 // used to get the classname of a nested styled component 32545 return false; 32546 } 32547 } 32548 32549 if (attrs.some(function (x) { 32550 return isFunction(x) || hasFunctionObjectKey(x); 32551 })) return false; 32552 return true; 32553} // 32554 32555/* combines hashStr (murmurhash) and nameGenerator for convenience */ 32556 32557 32558var hasher = function hasher(str) { 32559 return generateAlphabeticName(murmurhash(str)); 32560}; 32561/* 32562 ComponentStyle is all the CSS-specific stuff, not 32563 the React-specific stuff. 32564 */ 32565 32566 32567var ComponentStyle = function () { 32568 function ComponentStyle(rules, attrs, componentId) { 32569 classCallCheck(this, ComponentStyle); 32570 this.rules = rules; 32571 this.isStatic = false && false; 32572 this.componentId = componentId; 32573 32574 if (!StyleSheet.master.hasId(componentId)) { 32575 StyleSheet.master.deferredInject(componentId, []); 32576 } 32577 } 32578 /* 32579 * Flattens a rule set into valid CSS 32580 * Hashes it, wraps the whole chunk in a .hash1234 {} 32581 * Returns the hash to be injected on render() 32582 * */ 32583 32584 32585 ComponentStyle.prototype.generateAndInjectStyles = function generateAndInjectStyles(executionContext, styleSheet) { 32586 var isStatic = this.isStatic, 32587 componentId = this.componentId, 32588 lastClassName = this.lastClassName; 32589 32590 if (IS_BROWSER && isStatic && typeof lastClassName === 'string' && styleSheet.hasNameForId(componentId, lastClassName)) { 32591 return lastClassName; 32592 } 32593 32594 var flatCSS = flatten(this.rules, executionContext, styleSheet); 32595 var name = hasher(this.componentId + flatCSS.join('')); 32596 32597 if (!styleSheet.hasNameForId(componentId, name)) { 32598 styleSheet.inject(this.componentId, stringifyRules(flatCSS, '.' + name, undefined, componentId), name); 32599 } 32600 32601 this.lastClassName = name; 32602 return name; 32603 }; 32604 32605 ComponentStyle.generateName = function generateName(str) { 32606 return hasher(str); 32607 }; 32608 32609 return ComponentStyle; 32610}(); // 32611 32612 32613var LIMIT = 200; 32614 32615var createWarnTooManyClasses = function (displayName) { 32616 var generatedClasses = {}; 32617 var warningSeen = false; 32618 return function (className) { 32619 if (!warningSeen) { 32620 generatedClasses[className] = true; 32621 32622 if (Object.keys(generatedClasses).length >= LIMIT) { 32623 // Unable to find latestRule in test environment. 32624 32625 /* eslint-disable no-console, prefer-template */ 32626 console.warn('Over ' + LIMIT + ' classes were generated for component ' + displayName + '. \n' + 'Consider using the attrs method, together with a style object for frequently changed styles.\n' + 'Example:\n' + ' const Component = styled.div.attrs(props => ({\n' + ' style: {\n' + ' background: props.background,\n' + ' },\n' + ' }))`width: 100%;`\n\n' + ' <Component />'); 32627 warningSeen = true; 32628 generatedClasses = {}; 32629 } 32630 } 32631 }; 32632}; // 32633 32634 32635var determineTheme = function (props, fallbackTheme) { 32636 var defaultProps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : EMPTY_OBJECT; // Props should take precedence over ThemeProvider, which should take precedence over 32637 // defaultProps, but React automatically puts defaultProps on props. 32638 32639 /* eslint-disable react/prop-types, flowtype-errors/show-errors */ 32640 32641 var isDefaultTheme = defaultProps ? props.theme === defaultProps.theme : false; 32642 var theme = props.theme && !isDefaultTheme ? props.theme : fallbackTheme || defaultProps.theme; 32643 /* eslint-enable */ 32644 32645 return theme; 32646}; // 32647 32648 32649var escapeRegex = /[[\].#*$><+~=|^:(),"'`-]+/g; 32650var dashesAtEnds = /(^-|-$)/g; 32651/** 32652 * TODO: Explore using CSS.escape when it becomes more available 32653 * in evergreen browsers. 32654 */ 32655 32656function escape(str) { 32657 return str // Replace all possible CSS selectors 32658 .replace(escapeRegex, '-') // Remove extraneous hyphens at the start and end 32659 .replace(dashesAtEnds, ''); 32660} // 32661 32662 32663function isTag(target) { 32664 return typeof target === 'string' && ( true ? target.charAt(0) === target.charAt(0).toLowerCase() : undefined); 32665} // 32666 32667 32668function generateDisplayName(target) { 32669 // $FlowFixMe 32670 return isTag(target) ? 'styled.' + target : 'Styled(' + getComponentName(target) + ')'; 32671} 32672 32673var _TYPE_STATICS; 32674 32675var REACT_STATICS = { 32676 childContextTypes: true, 32677 contextTypes: true, 32678 defaultProps: true, 32679 displayName: true, 32680 getDerivedStateFromProps: true, 32681 propTypes: true, 32682 type: true 32683}; 32684var KNOWN_STATICS = { 32685 name: true, 32686 length: true, 32687 prototype: true, 32688 caller: true, 32689 callee: true, 32690 arguments: true, 32691 arity: true 32692}; 32693var TYPE_STATICS = (_TYPE_STATICS = {}, _TYPE_STATICS[react_is__WEBPACK_IMPORTED_MODULE_4__["ForwardRef"]] = { 32694 $$typeof: true, 32695 render: true 32696}, _TYPE_STATICS); 32697var defineProperty$1 = Object.defineProperty, 32698 getOwnPropertyNames = Object.getOwnPropertyNames, 32699 _Object$getOwnPropert = Object.getOwnPropertySymbols, 32700 getOwnPropertySymbols = _Object$getOwnPropert === undefined ? function () { 32701 return []; 32702} : _Object$getOwnPropert, 32703 getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor, 32704 getPrototypeOf = Object.getPrototypeOf, 32705 objectPrototype = Object.prototype; 32706var arrayPrototype = Array.prototype; 32707 32708function hoistNonReactStatics(targetComponent, sourceComponent, blacklist) { 32709 if (typeof sourceComponent !== 'string') { 32710 // don't hoist over string (html) components 32711 var inheritedComponent = getPrototypeOf(sourceComponent); 32712 32713 if (inheritedComponent && inheritedComponent !== objectPrototype) { 32714 hoistNonReactStatics(targetComponent, inheritedComponent, blacklist); 32715 } 32716 32717 var keys = arrayPrototype.concat(getOwnPropertyNames(sourceComponent), // $FlowFixMe 32718 getOwnPropertySymbols(sourceComponent)); 32719 var targetStatics = TYPE_STATICS[targetComponent.$$typeof] || REACT_STATICS; 32720 var sourceStatics = TYPE_STATICS[sourceComponent.$$typeof] || REACT_STATICS; 32721 var i = keys.length; 32722 var descriptor = void 0; 32723 var key = void 0; // eslint-disable-next-line no-plusplus 32724 32725 while (i--) { 32726 key = keys[i]; 32727 32728 if ( // $FlowFixMe 32729 !KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && // $FlowFixMe 32730 !(targetStatics && targetStatics[key])) { 32731 descriptor = getOwnPropertyDescriptor(sourceComponent, key); 32732 32733 if (descriptor) { 32734 try { 32735 // Avoid failures from read-only properties 32736 defineProperty$1(targetComponent, key, descriptor); 32737 } catch (e) { 32738 /* fail silently */ 32739 } 32740 } 32741 } 32742 } 32743 32744 return targetComponent; 32745 } 32746 32747 return targetComponent; 32748} // 32749 32750 32751function isDerivedReactComponent(fn) { 32752 return !!(fn && fn.prototype && fn.prototype.isReactComponent); 32753} // 32754// Helper to call a given function, only once 32755 32756 32757var once = function (cb) { 32758 var called = false; 32759 return function () { 32760 if (!called) { 32761 called = true; 32762 cb.apply(undefined, arguments); 32763 } 32764 }; 32765}; // 32766 32767 32768var ThemeContext = /*#__PURE__*/Object(react__WEBPACK_IMPORTED_MODULE_2__["createContext"])(); 32769var ThemeConsumer = ThemeContext.Consumer; 32770/** 32771 * Provide a theme to an entire react component tree via context 32772 */ 32773 32774var ThemeProvider = function (_Component) { 32775 inherits(ThemeProvider, _Component); 32776 32777 function ThemeProvider(props) { 32778 classCallCheck(this, ThemeProvider); 32779 32780 var _this = possibleConstructorReturn(this, _Component.call(this, props)); 32781 32782 _this.getContext = Object(memoize_one__WEBPACK_IMPORTED_MODULE_5__["default"])(_this.getContext.bind(_this)); 32783 _this.renderInner = _this.renderInner.bind(_this); 32784 return _this; 32785 } 32786 32787 ThemeProvider.prototype.render = function render() { 32788 if (!this.props.children) return null; 32789 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(ThemeContext.Consumer, null, this.renderInner); 32790 }; 32791 32792 ThemeProvider.prototype.renderInner = function renderInner(outerTheme) { 32793 var context = this.getContext(this.props.theme, outerTheme); 32794 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(ThemeContext.Provider, { 32795 value: context 32796 }, this.props.children); 32797 }; 32798 /** 32799 * Get the theme from the props, supporting both (outerTheme) => {} 32800 * as well as object notation 32801 */ 32802 32803 32804 ThemeProvider.prototype.getTheme = function getTheme(theme, outerTheme) { 32805 if (isFunction(theme)) { 32806 var mergedTheme = theme(outerTheme); 32807 32808 if ( true && (mergedTheme === null || Array.isArray(mergedTheme) || (typeof mergedTheme === 'undefined' ? 'undefined' : _typeof(mergedTheme)) !== 'object')) { 32809 throw new StyledComponentsError(7); 32810 } 32811 32812 return mergedTheme; 32813 } 32814 32815 if (theme === null || Array.isArray(theme) || (typeof theme === 'undefined' ? 'undefined' : _typeof(theme)) !== 'object') { 32816 throw new StyledComponentsError(8); 32817 } 32818 32819 return _extends({}, outerTheme, theme); 32820 }; 32821 32822 ThemeProvider.prototype.getContext = function getContext(theme, outerTheme) { 32823 return this.getTheme(theme, outerTheme); 32824 }; 32825 32826 return ThemeProvider; 32827}(react__WEBPACK_IMPORTED_MODULE_2__["Component"]); // 32828 32829 32830var CLOSING_TAG_R = /^\s*<\/[a-z]/i; 32831 32832var ServerStyleSheet = function () { 32833 function ServerStyleSheet() { 32834 classCallCheck(this, ServerStyleSheet); 32835 /* The master sheet might be reset, so keep a reference here */ 32836 32837 this.masterSheet = StyleSheet.master; 32838 this.instance = this.masterSheet.clone(); 32839 this.sealed = false; 32840 } 32841 /** 32842 * Mark the ServerStyleSheet as being fully emitted and manually GC it from the 32843 * StyleSheet singleton. 32844 */ 32845 32846 32847 ServerStyleSheet.prototype.seal = function seal() { 32848 if (!this.sealed) { 32849 /* Remove sealed StyleSheets from the master sheet */ 32850 var index = this.masterSheet.clones.indexOf(this.instance); 32851 this.masterSheet.clones.splice(index, 1); 32852 this.sealed = true; 32853 } 32854 }; 32855 32856 ServerStyleSheet.prototype.collectStyles = function collectStyles(children) { 32857 if (this.sealed) { 32858 throw new StyledComponentsError(2); 32859 } 32860 32861 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(StyleSheetManager, { 32862 sheet: this.instance 32863 }, children); 32864 }; 32865 32866 ServerStyleSheet.prototype.getStyleTags = function getStyleTags() { 32867 this.seal(); 32868 return this.instance.toHTML(); 32869 }; 32870 32871 ServerStyleSheet.prototype.getStyleElement = function getStyleElement() { 32872 this.seal(); 32873 return this.instance.toReactElements(); 32874 }; 32875 32876 ServerStyleSheet.prototype.interleaveWithNodeStream = function interleaveWithNodeStream(readableStream) { 32877 var _this = this; 32878 32879 { 32880 throw new StyledComponentsError(3); 32881 } 32882 /* the tag index keeps track of which tags have already been emitted */ 32883 32884 var instance = this.instance; 32885 var instanceTagIndex = 0; 32886 var streamAttr = SC_STREAM_ATTR + '="true"'; 32887 var transformer = new stream.Transform({ 32888 transform: function appendStyleChunks(chunk, 32889 /* encoding */ 32890 _, callback) { 32891 var tags = instance.tags; 32892 var html = ''; 32893 /* retrieve html for each new style tag */ 32894 32895 for (; instanceTagIndex < tags.length; instanceTagIndex += 1) { 32896 var tag = tags[instanceTagIndex]; 32897 html += tag.toHTML(streamAttr); 32898 } 32899 /* force our StyleSheets to emit entirely new tags */ 32900 32901 32902 instance.sealAllTags(); 32903 var renderedHtml = chunk.toString(); 32904 /* prepend style html to chunk, unless the start of the chunk is a closing tag in which case append right after that */ 32905 32906 if (CLOSING_TAG_R.test(renderedHtml)) { 32907 var endOfClosingTag = renderedHtml.indexOf('>'); 32908 this.push(renderedHtml.slice(0, endOfClosingTag + 1) + html + renderedHtml.slice(endOfClosingTag + 1)); 32909 } else this.push(html + renderedHtml); 32910 32911 callback(); 32912 } 32913 }); 32914 readableStream.on('end', function () { 32915 return _this.seal(); 32916 }); 32917 readableStream.on('error', function (err) { 32918 _this.seal(); // forward the error to the transform stream 32919 32920 32921 transformer.emit('error', err); 32922 }); 32923 return readableStream.pipe(transformer); 32924 }; 32925 32926 return ServerStyleSheet; 32927}(); // 32928 32929 32930var StyleSheetContext = /*#__PURE__*/Object(react__WEBPACK_IMPORTED_MODULE_2__["createContext"])(); 32931var StyleSheetConsumer = StyleSheetContext.Consumer; 32932 32933var StyleSheetManager = function (_Component) { 32934 inherits(StyleSheetManager, _Component); 32935 32936 function StyleSheetManager(props) { 32937 classCallCheck(this, StyleSheetManager); 32938 32939 var _this = possibleConstructorReturn(this, _Component.call(this, props)); 32940 32941 _this.getContext = Object(memoize_one__WEBPACK_IMPORTED_MODULE_5__["default"])(_this.getContext); 32942 return _this; 32943 } 32944 32945 StyleSheetManager.prototype.getContext = function getContext(sheet, target) { 32946 if (sheet) { 32947 return sheet; 32948 } else if (target) { 32949 return new StyleSheet(target); 32950 } else { 32951 throw new StyledComponentsError(4); 32952 } 32953 }; 32954 32955 StyleSheetManager.prototype.render = function render() { 32956 var _props = this.props, 32957 children = _props.children, 32958 sheet = _props.sheet, 32959 target = _props.target; 32960 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(StyleSheetContext.Provider, { 32961 value: this.getContext(sheet, target) 32962 }, true ? react__WEBPACK_IMPORTED_MODULE_2___default.a.Children.only(children) : undefined); 32963 }; 32964 32965 return StyleSheetManager; 32966}(react__WEBPACK_IMPORTED_MODULE_2__["Component"]); 32967 32968 true ? StyleSheetManager.propTypes = { 32969 sheet: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.instanceOf(StyleSheet), prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.instanceOf(ServerStyleSheet)]), 32970 target: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.shape({ 32971 appendChild: prop_types__WEBPACK_IMPORTED_MODULE_6___default.a.func.isRequired 32972 }) 32973} : undefined; // 32974 32975var identifiers = {}; 32976/* We depend on components having unique IDs */ 32977 32978function generateId(_ComponentStyle, _displayName, parentComponentId) { 32979 var displayName = typeof _displayName !== 'string' ? 'sc' : escape(_displayName); 32980 /** 32981 * This ensures uniqueness if two components happen to share 32982 * the same displayName. 32983 */ 32984 32985 var nr = (identifiers[displayName] || 0) + 1; 32986 identifiers[displayName] = nr; 32987 32988 var componentId = displayName + '-' + _ComponentStyle.generateName(displayName + nr); 32989 32990 return parentComponentId ? parentComponentId + '-' + componentId : componentId; 32991} // $FlowFixMe 32992 32993 32994var StyledComponent = function (_Component) { 32995 inherits(StyledComponent, _Component); 32996 32997 function StyledComponent() { 32998 classCallCheck(this, StyledComponent); 32999 33000 var _this = possibleConstructorReturn(this, _Component.call(this)); 33001 33002 _this.attrs = {}; 33003 _this.renderOuter = _this.renderOuter.bind(_this); 33004 _this.renderInner = _this.renderInner.bind(_this); 33005 33006 if (true) { 33007 _this.warnInnerRef = once(function (displayName) { 33008 return (// eslint-disable-next-line no-console 33009 console.warn('The "innerRef" API has been removed in styled-components v4 in favor of React 16 ref forwarding, use "ref" instead like a typical component. "innerRef" was detected on component "' + displayName + '".') 33010 ); 33011 }); 33012 _this.warnAttrsFnObjectKeyDeprecated = once(function (key, displayName) { 33013 return (// eslint-disable-next-line no-console 33014 console.warn('Functions as object-form attrs({}) keys are now deprecated and will be removed in a future version of styled-components. Switch to the new attrs(props => ({})) syntax instead for easier and more powerful composition. The attrs key in question is "' + key + '" on component "' + displayName + '".', '\n ' + new Error().stack) 33015 ); 33016 }); 33017 _this.warnNonStyledComponentAttrsObjectKey = once(function (key, displayName) { 33018 return (// eslint-disable-next-line no-console 33019 console.warn('It looks like you\'ve used a non styled-component as the value for the "' + key + '" prop in an object-form attrs constructor of "' + displayName + '".\n' + 'You should use the new function-form attrs constructor which avoids this issue: attrs(props => ({ yourStuff }))\n' + "To continue using the deprecated object syntax, you'll need to wrap your component prop in a function to make it available inside the styled component (you'll still get the deprecation warning though.)\n" + ('For example, { ' + key + ': () => InnerComponent } instead of { ' + key + ': InnerComponent }')) 33020 ); 33021 }); 33022 } 33023 33024 return _this; 33025 } 33026 33027 StyledComponent.prototype.render = function render() { 33028 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(StyleSheetConsumer, null, this.renderOuter); 33029 }; 33030 33031 StyledComponent.prototype.renderOuter = function renderOuter() { 33032 var styleSheet = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : StyleSheet.master; 33033 this.styleSheet = styleSheet; // No need to subscribe a static component to theme changes, it won't change anything 33034 33035 if (this.props.forwardedComponent.componentStyle.isStatic) return this.renderInner(); 33036 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(ThemeConsumer, null, this.renderInner); 33037 }; 33038 33039 StyledComponent.prototype.renderInner = function renderInner(theme) { 33040 var _props$forwardedCompo = this.props.forwardedComponent, 33041 componentStyle = _props$forwardedCompo.componentStyle, 33042 defaultProps = _props$forwardedCompo.defaultProps, 33043 displayName = _props$forwardedCompo.displayName, 33044 foldedComponentIds = _props$forwardedCompo.foldedComponentIds, 33045 styledComponentId = _props$forwardedCompo.styledComponentId, 33046 target = _props$forwardedCompo.target; 33047 var generatedClassName = void 0; 33048 33049 if (componentStyle.isStatic) { 33050 generatedClassName = this.generateAndInjectStyles(EMPTY_OBJECT, this.props); 33051 } else { 33052 generatedClassName = this.generateAndInjectStyles(determineTheme(this.props, theme, defaultProps) || EMPTY_OBJECT, this.props); 33053 } 33054 33055 var elementToBeCreated = this.props.as || this.attrs.as || target; 33056 var isTargetTag = isTag(elementToBeCreated); 33057 var propsForElement = {}; 33058 33059 var computedProps = _extends({}, this.props, this.attrs); 33060 33061 var key = void 0; // eslint-disable-next-line guard-for-in 33062 33063 for (key in computedProps) { 33064 if ( true && key === 'innerRef' && isTargetTag) { 33065 this.warnInnerRef(displayName); 33066 } 33067 33068 if (key === 'forwardedComponent' || key === 'as') { 33069 continue; 33070 } else if (key === 'forwardedRef') propsForElement.ref = computedProps[key];else if (key === 'forwardedAs') propsForElement.as = computedProps[key];else if (!isTargetTag || Object(_emotion_is_prop_valid__WEBPACK_IMPORTED_MODULE_7__["default"])(key)) { 33071 // Don't pass through non HTML tags through to HTML elements 33072 propsForElement[key] = computedProps[key]; 33073 } 33074 } 33075 33076 if (this.props.style && this.attrs.style) { 33077 propsForElement.style = _extends({}, this.attrs.style, this.props.style); 33078 } 33079 33080 propsForElement.className = Array.prototype.concat(foldedComponentIds, styledComponentId, generatedClassName !== styledComponentId ? generatedClassName : null, this.props.className, this.attrs.className).filter(Boolean).join(' '); 33081 return /*#__PURE__*/Object(react__WEBPACK_IMPORTED_MODULE_2__["createElement"])(elementToBeCreated, propsForElement); 33082 }; 33083 33084 StyledComponent.prototype.buildExecutionContext = function buildExecutionContext(theme, props, attrs) { 33085 var _this2 = this; 33086 33087 var context = _extends({}, props, { 33088 theme: theme 33089 }); 33090 33091 if (!attrs.length) return context; 33092 this.attrs = {}; 33093 attrs.forEach(function (attrDef) { 33094 var resolvedAttrDef = attrDef; 33095 var attrDefWasFn = false; 33096 var attr = void 0; 33097 var key = void 0; 33098 33099 if (isFunction(resolvedAttrDef)) { 33100 // $FlowFixMe 33101 resolvedAttrDef = resolvedAttrDef(context); 33102 attrDefWasFn = true; 33103 } 33104 /* eslint-disable guard-for-in */ 33105 // $FlowFixMe 33106 33107 33108 for (key in resolvedAttrDef) { 33109 attr = resolvedAttrDef[key]; 33110 33111 if (!attrDefWasFn) { 33112 if (isFunction(attr) && !isDerivedReactComponent(attr) && !isStyledComponent(attr)) { 33113 if (true) { 33114 _this2.warnAttrsFnObjectKeyDeprecated(key, props.forwardedComponent.displayName); 33115 } 33116 33117 attr = attr(context); 33118 33119 if ( true && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default.a.isValidElement(attr)) { 33120 _this2.warnNonStyledComponentAttrsObjectKey(key, props.forwardedComponent.displayName); 33121 } 33122 } 33123 } 33124 33125 _this2.attrs[key] = attr; 33126 context[key] = attr; 33127 } 33128 /* eslint-enable */ 33129 33130 }); 33131 return context; 33132 }; 33133 33134 StyledComponent.prototype.generateAndInjectStyles = function generateAndInjectStyles(theme, props) { 33135 var _props$forwardedCompo2 = props.forwardedComponent, 33136 attrs = _props$forwardedCompo2.attrs, 33137 componentStyle = _props$forwardedCompo2.componentStyle, 33138 warnTooManyClasses = _props$forwardedCompo2.warnTooManyClasses; // statically styled-components don't need to build an execution context object, 33139 // and shouldn't be increasing the number of class names 33140 33141 if (componentStyle.isStatic && !attrs.length) { 33142 return componentStyle.generateAndInjectStyles(EMPTY_OBJECT, this.styleSheet); 33143 } 33144 33145 var className = componentStyle.generateAndInjectStyles(this.buildExecutionContext(theme, props, attrs), this.styleSheet); 33146 if ( true && warnTooManyClasses) warnTooManyClasses(className); 33147 return className; 33148 }; 33149 33150 return StyledComponent; 33151}(react__WEBPACK_IMPORTED_MODULE_2__["Component"]); 33152 33153function createStyledComponent(target, options, rules) { 33154 var isTargetStyledComp = isStyledComponent(target); 33155 var isClass = !isTag(target); 33156 var _options$displayName = options.displayName, 33157 displayName = _options$displayName === undefined ? generateDisplayName(target) : _options$displayName, 33158 _options$componentId = options.componentId, 33159 componentId = _options$componentId === undefined ? generateId(ComponentStyle, options.displayName, options.parentComponentId) : _options$componentId, 33160 _options$ParentCompon = options.ParentComponent, 33161 ParentComponent = _options$ParentCompon === undefined ? StyledComponent : _options$ParentCompon, 33162 _options$attrs = options.attrs, 33163 attrs = _options$attrs === undefined ? EMPTY_ARRAY : _options$attrs; 33164 var styledComponentId = options.displayName && options.componentId ? escape(options.displayName) + '-' + options.componentId : options.componentId || componentId; // fold the underlying StyledComponent attrs up (implicit extend) 33165 33166 var finalAttrs = // $FlowFixMe 33167 isTargetStyledComp && target.attrs ? Array.prototype.concat(target.attrs, attrs).filter(Boolean) : attrs; 33168 var componentStyle = new ComponentStyle(isTargetStyledComp ? // fold the underlying StyledComponent rules up (implicit extend) 33169 // $FlowFixMe 33170 target.componentStyle.rules.concat(rules) : rules, finalAttrs, styledComponentId); 33171 /** 33172 * forwardRef creates a new interim component, which we'll take advantage of 33173 * instead of extending ParentComponent to create _another_ interim class 33174 */ 33175 33176 var WrappedStyledComponent = void 0; 33177 33178 var forwardRef = function forwardRef(props, ref) { 33179 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(ParentComponent, _extends({}, props, { 33180 forwardedComponent: WrappedStyledComponent, 33181 forwardedRef: ref 33182 })); 33183 }; 33184 33185 forwardRef.displayName = displayName; 33186 WrappedStyledComponent = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default.a.forwardRef(forwardRef); 33187 WrappedStyledComponent.displayName = displayName; // $FlowFixMe 33188 33189 WrappedStyledComponent.attrs = finalAttrs; // $FlowFixMe 33190 33191 WrappedStyledComponent.componentStyle = componentStyle; // $FlowFixMe 33192 33193 WrappedStyledComponent.foldedComponentIds = isTargetStyledComp ? // $FlowFixMe 33194 Array.prototype.concat(target.foldedComponentIds, target.styledComponentId) : EMPTY_ARRAY; // $FlowFixMe 33195 33196 WrappedStyledComponent.styledComponentId = styledComponentId; // fold the underlying StyledComponent target up since we folded the styles 33197 // $FlowFixMe 33198 33199 WrappedStyledComponent.target = isTargetStyledComp ? target.target : target; // $FlowFixMe 33200 33201 WrappedStyledComponent.withComponent = function withComponent(tag) { 33202 var previousComponentId = options.componentId, 33203 optionsToCopy = objectWithoutProperties(options, ['componentId']); 33204 var newComponentId = previousComponentId && previousComponentId + '-' + (isTag(tag) ? tag : escape(getComponentName(tag))); 33205 33206 var newOptions = _extends({}, optionsToCopy, { 33207 attrs: finalAttrs, 33208 componentId: newComponentId, 33209 ParentComponent: ParentComponent 33210 }); 33211 33212 return createStyledComponent(tag, newOptions, rules); 33213 }; // $FlowFixMe 33214 33215 33216 Object.defineProperty(WrappedStyledComponent, 'defaultProps', { 33217 get: function get$$1() { 33218 return this._foldedDefaultProps; 33219 }, 33220 set: function set$$1(obj) { 33221 // $FlowFixMe 33222 this._foldedDefaultProps = isTargetStyledComp ? Object(merge_anything__WEBPACK_IMPORTED_MODULE_8__["default"])(target.defaultProps, obj) : obj; 33223 } 33224 }); 33225 33226 if (true) { 33227 // $FlowFixMe 33228 WrappedStyledComponent.warnTooManyClasses = createWarnTooManyClasses(displayName); 33229 } // $FlowFixMe 33230 33231 33232 WrappedStyledComponent.toString = function () { 33233 return '.' + WrappedStyledComponent.styledComponentId; 33234 }; 33235 33236 if (isClass) { 33237 hoistNonReactStatics(WrappedStyledComponent, target, { 33238 // all SC-specific things should not be hoisted 33239 attrs: true, 33240 componentStyle: true, 33241 displayName: true, 33242 foldedComponentIds: true, 33243 styledComponentId: true, 33244 target: true, 33245 withComponent: true 33246 }); 33247 } 33248 33249 return WrappedStyledComponent; 33250} // 33251// Thanks to ReactDOMFactories for this handy list! 33252 33253 33254var domElements = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', // SVG 33255'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'marker', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan']; // 33256 33257var styled = function styled(tag) { 33258 return constructWithOptions(createStyledComponent, tag); 33259}; // Shorthands for all valid HTML Elements 33260 33261 33262domElements.forEach(function (domElement) { 33263 styled[domElement] = styled(domElement); 33264}); // 33265 33266var GlobalStyle = function () { 33267 function GlobalStyle(rules, componentId) { 33268 classCallCheck(this, GlobalStyle); 33269 this.rules = rules; 33270 this.componentId = componentId; 33271 this.isStatic = isStaticRules(rules, EMPTY_ARRAY); 33272 33273 if (!StyleSheet.master.hasId(componentId)) { 33274 StyleSheet.master.deferredInject(componentId, []); 33275 } 33276 } 33277 33278 GlobalStyle.prototype.createStyles = function createStyles(executionContext, styleSheet) { 33279 var flatCSS = flatten(this.rules, executionContext, styleSheet); 33280 var css = stringifyRules(flatCSS, ''); 33281 styleSheet.inject(this.componentId, css); 33282 }; 33283 33284 GlobalStyle.prototype.removeStyles = function removeStyles(styleSheet) { 33285 var componentId = this.componentId; 33286 33287 if (styleSheet.hasId(componentId)) { 33288 styleSheet.remove(componentId); 33289 } 33290 }; // TODO: overwrite in-place instead of remove+create? 33291 33292 33293 GlobalStyle.prototype.renderStyles = function renderStyles(executionContext, styleSheet) { 33294 this.removeStyles(styleSheet); 33295 this.createStyles(executionContext, styleSheet); 33296 }; 33297 33298 return GlobalStyle; 33299}(); // 33300// place our cache into shared context so it'll persist between HMRs 33301 33302 33303if (IS_BROWSER) { 33304 window.scCGSHMRCache = {}; 33305} 33306 33307function createGlobalStyle(strings) { 33308 for (var _len = arguments.length, interpolations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { 33309 interpolations[_key - 1] = arguments[_key]; 33310 } 33311 33312 var rules = css.apply(undefined, [strings].concat(interpolations)); 33313 var id = 'sc-global-' + murmurhash(JSON.stringify(rules)); 33314 var style = new GlobalStyle(rules, id); 33315 33316 var GlobalStyleComponent = function (_React$Component) { 33317 inherits(GlobalStyleComponent, _React$Component); 33318 33319 function GlobalStyleComponent(props) { 33320 classCallCheck(this, GlobalStyleComponent); 33321 33322 var _this = possibleConstructorReturn(this, _React$Component.call(this, props)); 33323 33324 var _this$constructor = _this.constructor, 33325 globalStyle = _this$constructor.globalStyle, 33326 styledComponentId = _this$constructor.styledComponentId; 33327 33328 if (IS_BROWSER) { 33329 window.scCGSHMRCache[styledComponentId] = (window.scCGSHMRCache[styledComponentId] || 0) + 1; 33330 } 33331 /** 33332 * This fixes HMR compatibility. Don't ask me why, but this combination of 33333 * caching the closure variables via statics and then persisting the statics in 33334 * state works across HMR where no other combination did. ¯\_(ã)_/¯ 33335 */ 33336 33337 33338 _this.state = { 33339 globalStyle: globalStyle, 33340 styledComponentId: styledComponentId 33341 }; 33342 return _this; 33343 } 33344 33345 GlobalStyleComponent.prototype.componentWillUnmount = function componentWillUnmount() { 33346 if (window.scCGSHMRCache[this.state.styledComponentId]) { 33347 window.scCGSHMRCache[this.state.styledComponentId] -= 1; 33348 } 33349 /** 33350 * Depending on the order "render" is called this can cause the styles to be lost 33351 * until the next render pass of the remaining instance, which may 33352 * not be immediate. 33353 */ 33354 33355 33356 if (window.scCGSHMRCache[this.state.styledComponentId] === 0) { 33357 this.state.globalStyle.removeStyles(this.styleSheet); 33358 } 33359 }; 33360 33361 GlobalStyleComponent.prototype.render = function render() { 33362 var _this2 = this; 33363 33364 if ( true && react__WEBPACK_IMPORTED_MODULE_2___default.a.Children.count(this.props.children)) { 33365 // eslint-disable-next-line no-console 33366 console.warn('The global style component ' + this.state.styledComponentId + ' was given child JSX. createGlobalStyle does not render children.'); 33367 } 33368 33369 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(StyleSheetConsumer, null, function (styleSheet) { 33370 _this2.styleSheet = styleSheet || StyleSheet.master; 33371 var globalStyle = _this2.state.globalStyle; 33372 33373 if (globalStyle.isStatic) { 33374 globalStyle.renderStyles(STATIC_EXECUTION_CONTEXT, _this2.styleSheet); 33375 return null; 33376 } else { 33377 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(ThemeConsumer, null, function (theme) { 33378 // $FlowFixMe 33379 var defaultProps = _this2.constructor.defaultProps; 33380 33381 var context = _extends({}, _this2.props); 33382 33383 if (typeof theme !== 'undefined') { 33384 context.theme = determineTheme(_this2.props, theme, defaultProps); 33385 } 33386 33387 globalStyle.renderStyles(context, _this2.styleSheet); 33388 return null; 33389 }); 33390 } 33391 }); 33392 }; 33393 33394 return GlobalStyleComponent; 33395 }(react__WEBPACK_IMPORTED_MODULE_2___default.a.Component); 33396 33397 GlobalStyleComponent.globalStyle = style; 33398 GlobalStyleComponent.styledComponentId = id; 33399 return GlobalStyleComponent; 33400} // 33401 33402 33403var replaceWhitespace = function replaceWhitespace(str) { 33404 return str.replace(/\s|\\n/g, ''); 33405}; 33406 33407function keyframes(strings) { 33408 /* Warning if you've used keyframes on React Native */ 33409 if ( true && typeof navigator !== 'undefined' && navigator.product === 'ReactNative') { 33410 // eslint-disable-next-line no-console 33411 console.warn('`keyframes` cannot be used on ReactNative, only on the web. To do animation in ReactNative please use Animated.'); 33412 } 33413 33414 for (var _len = arguments.length, interpolations = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { 33415 interpolations[_key - 1] = arguments[_key]; 33416 } 33417 33418 var rules = css.apply(undefined, [strings].concat(interpolations)); 33419 var name = generateAlphabeticName(murmurhash(replaceWhitespace(JSON.stringify(rules)))); 33420 return new Keyframes(name, stringifyRules(rules, name, '@keyframes')); 33421} // 33422 33423 33424var withTheme = function (Component$$1) { 33425 var WithTheme = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default.a.forwardRef(function (props, ref) { 33426 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(ThemeConsumer, null, function (theme) { 33427 // $FlowFixMe 33428 var defaultProps = Component$$1.defaultProps; 33429 var themeProp = determineTheme(props, theme, defaultProps); 33430 33431 if ( true && themeProp === undefined) { 33432 // eslint-disable-next-line no-console 33433 console.warn('[withTheme] You are not using a ThemeProvider nor passing a theme prop or a theme in defaultProps in component class "' + getComponentName(Component$$1) + '"'); 33434 } 33435 33436 return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(Component$$1, _extends({}, props, { 33437 theme: themeProp, 33438 ref: ref 33439 })); 33440 }); 33441 }); 33442 hoistNonReactStatics(WithTheme, Component$$1); 33443 WithTheme.displayName = 'WithTheme(' + getComponentName(Component$$1) + ')'; 33444 return WithTheme; 33445}; // 33446 33447/* eslint-disable */ 33448 33449 33450var __DO_NOT_USE_OR_YOU_WILL_BE_HAUNTED_BY_SPOOKY_GHOSTS = { 33451 StyleSheet: StyleSheet 33452}; // 33453 33454/* Warning if you've imported this file on React Native */ 33455 33456if ( true && typeof navigator !== 'undefined' && navigator.product === 'ReactNative') { 33457 // eslint-disable-next-line no-console 33458 console.warn("It looks like you've imported 'styled-components' on React Native.\n" + "Perhaps you're looking to import 'styled-components/native'?\n" + 'Read more about this at https://www.styled-components.com/docs/basics#react-native'); 33459} 33460/* Warning if there are several instances of styled-components */ 33461 33462 33463if ( true && typeof window !== 'undefined' && typeof navigator !== 'undefined' && typeof navigator.userAgent === 'string' && navigator.userAgent.indexOf('Node.js') === -1 && navigator.userAgent.indexOf('jsdom') === -1) { 33464 window['__styled-components-init__'] = window['__styled-components-init__'] || 0; 33465 33466 if (window['__styled-components-init__'] === 1) { 33467 // eslint-disable-next-line no-console 33468 console.warn("It looks like there are several instances of 'styled-components' initialized in this application. " + 'This may cause dynamic styles not rendering properly, errors happening during rehydration process ' + 'and makes your application bigger without a good reason.\n\n' + 'See https://s-c.sh/2BAXzed for more info.'); 33469 } 33470 33471 window['__styled-components-init__'] += 1; 33472} // 33473 33474 33475/* harmony default export */ __webpack_exports__["default"] = (styled); 33476 33477/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../process/browser.js */ "./node_modules/process/browser.js"))) 33478 33479/***/ }), 33480
vendor: 22,008 bytes, lines 33481-33723
33481/***/ "./node_modules/styled-system/dist/index.esm.js": 33482/*!******************************************************!*\ 33483 !*** ./node_modules/styled-system/dist/index.esm.js ***! 33484 \******************************************************/ 33485/*! exports provided: get, createParser, createStyleFunction, compose, system, margin, padding, space, color, layout, typography, flexbox, border, background, position, grid, shadow, boxShadow, textShadow, variant, buttonStyle, textStyle, colorStyle, borders, width, height, minWidth, minHeight, maxWidth, maxHeight, size, verticalAlign, display, overflow, overflowX, overflowY, opacity, fontSize, fontFamily, fontWeight, lineHeight, textAlign, fontStyle, letterSpacing, alignItems, alignContent, justifyItems, justifyContent, flexWrap, flexDirection, flex, flexGrow, flexShrink, flexBasis, justifySelf, alignSelf, order, gridGap, gridColumnGap, gridRowGap, gridColumn, gridRow, gridAutoFlow, gridAutoColumns, gridAutoRows, gridTemplateColumns, gridTemplateRows, gridTemplateAreas, gridArea, borderWidth, borderStyle, borderColor, borderTop, borderRight, borderBottom, borderLeft, borderRadius, backgroundImage, backgroundSize, backgroundPosition, backgroundRepeat, zIndex, top, right, bottom, left, style */ 33486/***/ (function(module, __webpack_exports__, __webpack_require__) { 33487 33488"use strict"; 33489__webpack_require__.r(__webpack_exports__); 33490/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "width", function() { return width; }); 33491/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "height", function() { return height; }); 33492/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "minWidth", function() { return minWidth; }); 33493/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "minHeight", function() { return minHeight; }); 33494/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "maxWidth", function() { return maxWidth; }); 33495/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "maxHeight", function() { return maxHeight; }); 33496/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "size", function() { return size; }); 33497/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "verticalAlign", function() { return verticalAlign; }); 33498/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "display", function() { return display; }); 33499/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "overflow", function() { return overflow; }); 33500/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "overflowX", function() { return overflowX; }); 33501/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "overflowY", function() { return overflowY; }); 33502/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "opacity", function() { return opacity; }); 33503/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fontSize", function() { return fontSize; }); 33504/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fontFamily", function() { return fontFamily; }); 33505/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fontWeight", function() { return fontWeight; }); 33506/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "lineHeight", function() { return lineHeight; }); 33507/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "textAlign", function() { return textAlign; }); 33508/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fontStyle", function() { return fontStyle; }); 33509/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "letterSpacing", function() { return letterSpacing; }); 33510/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "alignItems", function() { return alignItems; }); 33511/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "alignContent", function() { return alignContent; }); 33512/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "justifyItems", function() { return justifyItems; }); 33513/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "justifyContent", function() { return justifyContent; }); 33514/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "flexWrap", function() { return flexWrap; }); 33515/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "flexDirection", function() { return flexDirection; }); 33516/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "flex", function() { return flex; }); 33517/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "flexGrow", function() { return flexGrow; }); 33518/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "flexShrink", function() { return flexShrink; }); 33519/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "flexBasis", function() { return flexBasis; }); 33520/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "justifySelf", function() { return justifySelf; }); 33521/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "alignSelf", function() { return alignSelf; }); 33522/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "order", function() { return order; }); 33523/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "gridGap", function() { return gridGap; }); 33524/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "gridColumnGap", function() { return gridColumnGap; }); 33525/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "gridRowGap", function() { return gridRowGap; }); 33526/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "gridColumn", function() { return gridColumn; }); 33527/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "gridRow", function() { return gridRow; }); 33528/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "gridAutoFlow", function() { return gridAutoFlow; }); 33529/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "gridAutoColumns", function() { return gridAutoColumns; }); 33530/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "gridAutoRows", function() { return gridAutoRows; }); 33531/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "gridTemplateColumns", function() { return gridTemplateColumns; }); 33532/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "gridTemplateRows", function() { return gridTemplateRows; }); 33533/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "gridTemplateAreas", function() { return gridTemplateAreas; }); 33534/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "gridArea", function() { return gridArea; }); 33535/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "borderWidth", function() { return borderWidth; }); 33536/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "borderStyle", function() { return borderStyle; }); 33537/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "borderColor", function() { return borderColor; }); 33538/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "borderTop", function() { return borderTop; }); 33539/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "borderRight", function() { return borderRight; }); 33540/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "borderBottom", function() { return borderBottom; }); 33541/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "borderLeft", function() { return borderLeft; }); 33542/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "borderRadius", function() { return borderRadius; }); 33543/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "backgroundImage", function() { return backgroundImage; }); 33544/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "backgroundSize", function() { return backgroundSize; }); 33545/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "backgroundPosition", function() { return backgroundPosition; }); 33546/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "backgroundRepeat", function() { return backgroundRepeat; }); 33547/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "zIndex", function() { return zIndex; }); 33548/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "top", function() { return top; }); 33549/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "right", function() { return right; }); 33550/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bottom", function() { return bottom; }); 33551/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "left", function() { return left; }); 33552/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "style", function() { return style; }); 33553/* harmony import */ var _styled_system_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @styled-system/core */ "./node_modules/@styled-system/core/dist/index.esm.js"); 33554/* harmony import */ var _styled_system_layout__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @styled-system/layout */ "./node_modules/@styled-system/layout/dist/index.esm.js"); 33555/* harmony import */ var _styled_system_color__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @styled-system/color */ "./node_modules/@styled-system/color/dist/index.esm.js"); 33556/* harmony import */ var _styled_system_typography__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @styled-system/typography */ "./node_modules/@styled-system/typography/dist/index.esm.js"); 33557/* harmony import */ var _styled_system_flexbox__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @styled-system/flexbox */ "./node_modules/@styled-system/flexbox/dist/index.esm.js"); 33558/* harmony import */ var _styled_system_grid__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @styled-system/grid */ "./node_modules/@styled-system/grid/dist/index.esm.js"); 33559/* harmony import */ var _styled_system_border__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @styled-system/border */ "./node_modules/@styled-system/border/dist/index.esm.js"); 33560/* harmony import */ var _styled_system_background__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @styled-system/background */ "./node_modules/@styled-system/background/dist/index.esm.js"); 33561/* harmony import */ var _styled_system_position__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @styled-system/position */ "./node_modules/@styled-system/position/dist/index.esm.js"); 33562/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "get", function() { return _styled_system_core__WEBPACK_IMPORTED_MODULE_0__["get"]; }); 33563 33564/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "createParser", function() { return _styled_system_core__WEBPACK_IMPORTED_MODULE_0__["createParser"]; }); 33565 33566/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "createStyleFunction", function() { return _styled_system_core__WEBPACK_IMPORTED_MODULE_0__["createStyleFunction"]; }); 33567 33568/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "compose", function() { return _styled_system_core__WEBPACK_IMPORTED_MODULE_0__["compose"]; }); 33569 33570/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "system", function() { return _styled_system_core__WEBPACK_IMPORTED_MODULE_0__["system"]; }); 33571 33572/* harmony import */ var _styled_system_space__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @styled-system/space */ "./node_modules/@styled-system/space/dist/index.esm.js"); 33573/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "margin", function() { return _styled_system_space__WEBPACK_IMPORTED_MODULE_9__["margin"]; }); 33574 33575/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "padding", function() { return _styled_system_space__WEBPACK_IMPORTED_MODULE_9__["padding"]; }); 33576 33577/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "space", function() { return _styled_system_space__WEBPACK_IMPORTED_MODULE_9__["space"]; }); 33578 33579/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "color", function() { return _styled_system_color__WEBPACK_IMPORTED_MODULE_2__["color"]; }); 33580 33581/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "layout", function() { return _styled_system_layout__WEBPACK_IMPORTED_MODULE_1__["layout"]; }); 33582 33583/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "typography", function() { return _styled_system_typography__WEBPACK_IMPORTED_MODULE_3__["typography"]; }); 33584 33585/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "flexbox", function() { return _styled_system_flexbox__WEBPACK_IMPORTED_MODULE_4__["flexbox"]; }); 33586 33587/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "border", function() { return _styled_system_border__WEBPACK_IMPORTED_MODULE_6__["border"]; }); 33588 33589/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "background", function() { return _styled_system_background__WEBPACK_IMPORTED_MODULE_7__["background"]; }); 33590 33591/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "position", function() { return _styled_system_position__WEBPACK_IMPORTED_MODULE_8__["position"]; }); 33592 33593/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "grid", function() { return _styled_system_grid__WEBPACK_IMPORTED_MODULE_5__["grid"]; }); 33594 33595/* harmony import */ var _styled_system_shadow__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @styled-system/shadow */ "./node_modules/@styled-system/shadow/dist/index.esm.js"); 33596/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "shadow", function() { return _styled_system_shadow__WEBPACK_IMPORTED_MODULE_10__["shadow"]; }); 33597 33598/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "boxShadow", function() { return _styled_system_shadow__WEBPACK_IMPORTED_MODULE_10__["default"]; }); 33599 33600/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "textShadow", function() { return _styled_system_shadow__WEBPACK_IMPORTED_MODULE_10__["default"]; }); 33601 33602/* harmony import */ var _styled_system_variant__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @styled-system/variant */ "./node_modules/@styled-system/variant/dist/index.esm.js"); 33603/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "variant", function() { return _styled_system_variant__WEBPACK_IMPORTED_MODULE_11__["variant"]; }); 33604 33605/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buttonStyle", function() { return _styled_system_variant__WEBPACK_IMPORTED_MODULE_11__["buttonStyle"]; }); 33606 33607/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "textStyle", function() { return _styled_system_variant__WEBPACK_IMPORTED_MODULE_11__["textStyle"]; }); 33608 33609/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "colorStyle", function() { return _styled_system_variant__WEBPACK_IMPORTED_MODULE_11__["colorStyle"]; }); 33610 33611/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "borders", function() { return _styled_system_border__WEBPACK_IMPORTED_MODULE_6__["default"]; }); 33612 33613 // v4 api shims 33614 33615 33616 33617 33618 33619 33620 33621 33622 33623 33624 33625 33626 33627 33628 33629 33630 33631 33632 33633 33634 33635 33636var width = _styled_system_layout__WEBPACK_IMPORTED_MODULE_1__["default"].width, 33637 height = _styled_system_layout__WEBPACK_IMPORTED_MODULE_1__["default"].height, 33638 minWidth = _styled_system_layout__WEBPACK_IMPORTED_MODULE_1__["default"].minWidth, 33639 minHeight = _styled_system_layout__WEBPACK_IMPORTED_MODULE_1__["default"].minHeight, 33640 maxWidth = _styled_system_layout__WEBPACK_IMPORTED_MODULE_1__["default"].maxWidth, 33641 maxHeight = _styled_system_layout__WEBPACK_IMPORTED_MODULE_1__["default"].maxHeight, 33642 size = _styled_system_layout__WEBPACK_IMPORTED_MODULE_1__["default"].size, 33643 verticalAlign = _styled_system_layout__WEBPACK_IMPORTED_MODULE_1__["default"].verticalAlign, 33644 display = _styled_system_layout__WEBPACK_IMPORTED_MODULE_1__["default"].display, 33645 overflow = _styled_system_layout__WEBPACK_IMPORTED_MODULE_1__["default"].overflow, 33646 overflowX = _styled_system_layout__WEBPACK_IMPORTED_MODULE_1__["default"].overflowX, 33647 overflowY = _styled_system_layout__WEBPACK_IMPORTED_MODULE_1__["default"].overflowY; 33648var opacity = _styled_system_color__WEBPACK_IMPORTED_MODULE_2__["default"].opacity; 33649var fontSize = _styled_system_typography__WEBPACK_IMPORTED_MODULE_3__["default"].fontSize, 33650 fontFamily = _styled_system_typography__WEBPACK_IMPORTED_MODULE_3__["default"].fontFamily, 33651 fontWeight = _styled_system_typography__WEBPACK_IMPORTED_MODULE_3__["default"].fontWeight, 33652 lineHeight = _styled_system_typography__WEBPACK_IMPORTED_MODULE_3__["default"].lineHeight, 33653 textAlign = _styled_system_typography__WEBPACK_IMPORTED_MODULE_3__["default"].textAlign, 33654 fontStyle = _styled_system_typography__WEBPACK_IMPORTED_MODULE_3__["default"].fontStyle, 33655 letterSpacing = _styled_system_typography__WEBPACK_IMPORTED_MODULE_3__["default"].letterSpacing; 33656var alignItems = _styled_system_flexbox__WEBPACK_IMPORTED_MODULE_4__["default"].alignItems, 33657 alignContent = _styled_system_flexbox__WEBPACK_IMPORTED_MODULE_4__["default"].alignContent, 33658 justifyItems = _styled_system_flexbox__WEBPACK_IMPORTED_MODULE_4__["default"].justifyItems, 33659 justifyContent = _styled_system_flexbox__WEBPACK_IMPORTED_MODULE_4__["default"].justifyContent, 33660 flexWrap = _styled_system_flexbox__WEBPACK_IMPORTED_MODULE_4__["default"].flexWrap, 33661 flexDirection = _styled_system_flexbox__WEBPACK_IMPORTED_MODULE_4__["default"].flexDirection, 33662 flex = _styled_system_flexbox__WEBPACK_IMPORTED_MODULE_4__["default"].flex, 33663 flexGrow = _styled_system_flexbox__WEBPACK_IMPORTED_MODULE_4__["default"].flexGrow, 33664 flexShrink = _styled_system_flexbox__WEBPACK_IMPORTED_MODULE_4__["default"].flexShrink, 33665 flexBasis = _styled_system_flexbox__WEBPACK_IMPORTED_MODULE_4__["default"].flexBasis, 33666 justifySelf = _styled_system_flexbox__WEBPACK_IMPORTED_MODULE_4__["default"].justifySelf, 33667 alignSelf = _styled_system_flexbox__WEBPACK_IMPORTED_MODULE_4__["default"].alignSelf, 33668 order = _styled_system_flexbox__WEBPACK_IMPORTED_MODULE_4__["default"].order; 33669var gridGap = _styled_system_grid__WEBPACK_IMPORTED_MODULE_5__["default"].gridGap, 33670 gridColumnGap = _styled_system_grid__WEBPACK_IMPORTED_MODULE_5__["default"].gridColumnGap, 33671 gridRowGap = _styled_system_grid__WEBPACK_IMPORTED_MODULE_5__["default"].gridRowGap, 33672 gridColumn = _styled_system_grid__WEBPACK_IMPORTED_MODULE_5__["default"].gridColumn, 33673 gridRow = _styled_system_grid__WEBPACK_IMPORTED_MODULE_5__["default"].gridRow, 33674 gridAutoFlow = _styled_system_grid__WEBPACK_IMPORTED_MODULE_5__["default"].gridAutoFlow, 33675 gridAutoColumns = _styled_system_grid__WEBPACK_IMPORTED_MODULE_5__["default"].gridAutoColumns, 33676 gridAutoRows = _styled_system_grid__WEBPACK_IMPORTED_MODULE_5__["default"].gridAutoRows, 33677 gridTemplateColumns = _styled_system_grid__WEBPACK_IMPORTED_MODULE_5__["default"].gridTemplateColumns, 33678 gridTemplateRows = _styled_system_grid__WEBPACK_IMPORTED_MODULE_5__["default"].gridTemplateRows, 33679 gridTemplateAreas = _styled_system_grid__WEBPACK_IMPORTED_MODULE_5__["default"].gridTemplateAreas, 33680 gridArea = _styled_system_grid__WEBPACK_IMPORTED_MODULE_5__["default"].gridArea; 33681var borderWidth = _styled_system_border__WEBPACK_IMPORTED_MODULE_6__["default"].borderWidth, 33682 borderStyle = _styled_system_border__WEBPACK_IMPORTED_MODULE_6__["default"].borderStyle, 33683 borderColor = _styled_system_border__WEBPACK_IMPORTED_MODULE_6__["default"].borderColor, 33684 borderTop = _styled_system_border__WEBPACK_IMPORTED_MODULE_6__["default"].borderTop, 33685 borderRight = _styled_system_border__WEBPACK_IMPORTED_MODULE_6__["default"].borderRight, 33686 borderBottom = _styled_system_border__WEBPACK_IMPORTED_MODULE_6__["default"].borderBottom, 33687 borderLeft = _styled_system_border__WEBPACK_IMPORTED_MODULE_6__["default"].borderLeft, 33688 borderRadius = _styled_system_border__WEBPACK_IMPORTED_MODULE_6__["default"].borderRadius; 33689var backgroundImage = _styled_system_background__WEBPACK_IMPORTED_MODULE_7__["default"].backgroundImage, 33690 backgroundSize = _styled_system_background__WEBPACK_IMPORTED_MODULE_7__["default"].backgroundSize, 33691 backgroundPosition = _styled_system_background__WEBPACK_IMPORTED_MODULE_7__["default"].backgroundPosition, 33692 backgroundRepeat = _styled_system_background__WEBPACK_IMPORTED_MODULE_7__["default"].backgroundRepeat; 33693var zIndex = _styled_system_position__WEBPACK_IMPORTED_MODULE_8__["default"].zIndex, 33694 top = _styled_system_position__WEBPACK_IMPORTED_MODULE_8__["default"].top, 33695 right = _styled_system_position__WEBPACK_IMPORTED_MODULE_8__["default"].right, 33696 bottom = _styled_system_position__WEBPACK_IMPORTED_MODULE_8__["default"].bottom, 33697 left = _styled_system_position__WEBPACK_IMPORTED_MODULE_8__["default"].left; 33698 33699 // v4 style API shim 33700 33701var style = function style(_ref) { 33702 var prop = _ref.prop, 33703 cssProperty = _ref.cssProperty, 33704 alias = _ref.alias, 33705 key = _ref.key, 33706 transformValue = _ref.transformValue, 33707 scale = _ref.scale, 33708 properties = _ref.properties; 33709 var config = {}; 33710 config[prop] = Object(_styled_system_core__WEBPACK_IMPORTED_MODULE_0__["createStyleFunction"])({ 33711 properties: properties, 33712 property: cssProperty || prop, 33713 scale: key, 33714 defaultScale: scale, 33715 transform: transformValue 33716 }); 33717 if (alias) config[alias] = config[prop]; 33718 var parse = Object(_styled_system_core__WEBPACK_IMPORTED_MODULE_0__["createParser"])(config); 33719 return parse; 33720}; 33721 33722/***/ }), 33723
vendor: 1,428 bytes, lines 33724-33779
33724/***/ "./node_modules/stylis-rule-sheet/index.js": 33725/*!*************************************************!*\ 33726 !*** ./node_modules/stylis-rule-sheet/index.js ***! 33727 \*************************************************/ 33728/*! no static exports found */ 33729/***/ (function(module, exports, __webpack_require__) { 33730 33731(function (factory) { 33732 true ? module['exports'] = factory() : undefined; 33733})(function () { 33734 'use strict'; 33735 33736 return function (insertRule) { 33737 var delimiter = '/*|*/'; 33738 var needle = delimiter + '}'; 33739 33740 function toSheet(block) { 33741 if (block) try { 33742 insertRule(block + '}'); 33743 } catch (e) {} 33744 } 33745 33746 return function ruleSheet(context, content, selectors, parents, line, column, length, ns, depth, at) { 33747 switch (context) { 33748 // property 33749 case 1: 33750 // @import 33751 if (depth === 0 && content.charCodeAt(0) === 64) return insertRule(content + ';'), ''; 33752 break; 33753 // selector 33754 33755 case 2: 33756 if (ns === 0) return content + delimiter; 33757 break; 33758 // at-rule 33759 33760 case 3: 33761 switch (ns) { 33762 // @font-face, @page 33763 case 102: 33764 case 112: 33765 return insertRule(selectors[0] + content), ''; 33766 33767 default: 33768 return content + (at === 0 ? delimiter : ''); 33769 } 33770 33771 case -2: 33772 content.split(needle).forEach(toSheet); 33773 } 33774 }; 33775 }; 33776}); 33777 33778/***/ }), 33779
vendor: 24,065 bytes, lines 33780-34703
33780/***/ "./node_modules/stylis/stylis.min.js": 33781/*!*******************************************!*\ 33782 !*** ./node_modules/stylis/stylis.min.js ***! 33783 \*******************************************/ 33784/*! no static exports found */ 33785/***/ (function(module, exports, __webpack_require__) { 33786 33787!function (e) { 33788 true ? module.exports = e(null) : undefined; 33789}(function e(a) { 33790 "use strict"; 33791 33792 var r = /^\0+/g, 33793 c = /[\0\r\f]/g, 33794 s = /: */g, 33795 t = /zoo|gra/, 33796 i = /([,: ])(transform)/g, 33797 f = /,+\s*(?![^(]*[)])/g, 33798 n = / +\s*(?![^(]*[)])/g, 33799 l = / *[\0] */g, 33800 o = /,\r+?/g, 33801 h = /([\t\r\n ])*\f?&/g, 33802 u = /:global\(((?:[^\(\)\[\]]*|\[.*\]|\([^\(\)]*\))*)\)/g, 33803 d = /\W+/g, 33804 b = /@(k\w+)\s*(\S*)\s*/, 33805 p = /::(place)/g, 33806 k = /:(read-only)/g, 33807 g = /\s+(?=[{\];=:>])/g, 33808 A = /([[}=:>])\s+/g, 33809 C = /(\{[^{]+?);(?=\})/g, 33810 w = /\s{2,}/g, 33811 v = /([^\(])(:+) */g, 33812 m = /[svh]\w+-[tblr]{2}/, 33813 x = /\(\s*(.*)\s*\)/g, 33814 $ = /([\s\S]*?);/g, 33815 y = /-self|flex-/g, 33816 O = /[^]*?(:[rp][el]a[\w-]+)[^]*/, 33817 j = /stretch|:\s*\w+\-(?:conte|avail)/, 33818 z = /([^-])(image-set\()/, 33819 N = "-webkit-", 33820 S = "-moz-", 33821 F = "-ms-", 33822 W = 59, 33823 q = 125, 33824 B = 123, 33825 D = 40, 33826 E = 41, 33827 G = 91, 33828 H = 93, 33829 I = 10, 33830 J = 13, 33831 K = 9, 33832 L = 64, 33833 M = 32, 33834 P = 38, 33835 Q = 45, 33836 R = 95, 33837 T = 42, 33838 U = 44, 33839 V = 58, 33840 X = 39, 33841 Y = 34, 33842 Z = 47, 33843 _ = 62, 33844 ee = 43, 33845 ae = 126, 33846 re = 0, 33847 ce = 12, 33848 se = 11, 33849 te = 107, 33850 ie = 109, 33851 fe = 115, 33852 ne = 112, 33853 le = 111, 33854 oe = 105, 33855 he = 99, 33856 ue = 100, 33857 de = 112, 33858 be = 1, 33859 pe = 1, 33860 ke = 0, 33861 ge = 1, 33862 Ae = 1, 33863 Ce = 1, 33864 we = 0, 33865 ve = 0, 33866 me = 0, 33867 xe = [], 33868 $e = [], 33869 ye = 0, 33870 Oe = null, 33871 je = -2, 33872 ze = -1, 33873 Ne = 0, 33874 Se = 1, 33875 Fe = 2, 33876 We = 3, 33877 qe = 0, 33878 Be = 1, 33879 De = "", 33880 Ee = "", 33881 Ge = ""; 33882 33883 function He(e, a, s, t, i) { 33884 for (var f, n, o = 0, h = 0, u = 0, d = 0, g = 0, A = 0, C = 0, w = 0, m = 0, $ = 0, y = 0, O = 0, j = 0, z = 0, R = 0, we = 0, $e = 0, Oe = 0, je = 0, ze = s.length, Je = ze - 1, Re = "", Te = "", Ue = "", Ve = "", Xe = "", Ye = ""; R < ze;) { 33885 if (C = s.charCodeAt(R), R === Je) if (h + d + u + o !== 0) { 33886 if (0 !== h) C = h === Z ? I : Z; 33887 d = u = o = 0, ze++, Je++; 33888 } 33889 33890 if (h + d + u + o === 0) { 33891 if (R === Je) { 33892 if (we > 0) Te = Te.replace(c, ""); 33893 33894 if (Te.trim().length > 0) { 33895 switch (C) { 33896 case M: 33897 case K: 33898 case W: 33899 case J: 33900 case I: 33901 break; 33902 33903 default: 33904 Te += s.charAt(R); 33905 } 33906 33907 C = W; 33908 } 33909 } 33910 33911 if (1 === $e) switch (C) { 33912 case B: 33913 case q: 33914 case W: 33915 case Y: 33916 case X: 33917 case D: 33918 case E: 33919 case U: 33920 $e = 0; 33921 33922 case K: 33923 case J: 33924 case I: 33925 case M: 33926 break; 33927 33928 default: 33929 for ($e = 0, je = R, g = C, R--, C = W; je < ze;) switch (s.charCodeAt(je++)) { 33930 case I: 33931 case J: 33932 case W: 33933 ++R, C = g, je = ze; 33934 break; 33935 33936 case V: 33937 if (we > 0) ++R, C = g; 33938 33939 case B: 33940 je = ze; 33941 } 33942 33943 } 33944 33945 switch (C) { 33946 case B: 33947 for (g = (Te = Te.trim()).charCodeAt(0), y = 1, je = ++R; R < ze;) { 33948 switch (C = s.charCodeAt(R)) { 33949 case B: 33950 y++; 33951 break; 33952 33953 case q: 33954 y--; 33955 break; 33956 33957 case Z: 33958 switch (A = s.charCodeAt(R + 1)) { 33959 case T: 33960 case Z: 33961 R = Qe(A, R, Je, s); 33962 } 33963 33964 break; 33965 33966 case G: 33967 C++; 33968 33969 case D: 33970 C++; 33971 33972 case Y: 33973 case X: 33974 for (; R++ < Je && s.charCodeAt(R) !== C;); 33975 33976 } 33977 33978 if (0 === y) break; 33979 R++; 33980 } 33981 33982 if (Ue = s.substring(je, R), g === re) g = (Te = Te.replace(r, "").trim()).charCodeAt(0); 33983 33984 switch (g) { 33985 case L: 33986 if (we > 0) Te = Te.replace(c, ""); 33987 33988 switch (A = Te.charCodeAt(1)) { 33989 case ue: 33990 case ie: 33991 case fe: 33992 case Q: 33993 f = a; 33994 break; 33995 33996 default: 33997 f = xe; 33998 } 33999 34000 if (je = (Ue = He(a, f, Ue, A, i + 1)).length, me > 0 && 0 === je) je = Te.length; 34001 if (ye > 0) if (f = Ie(xe, Te, Oe), n = Pe(We, Ue, f, a, pe, be, je, A, i, t), Te = f.join(""), void 0 !== n) if (0 === (je = (Ue = n.trim()).length)) A = 0, Ue = ""; 34002 if (je > 0) switch (A) { 34003 case fe: 34004 Te = Te.replace(x, Me); 34005 34006 case ue: 34007 case ie: 34008 case Q: 34009 Ue = Te + "{" + Ue + "}"; 34010 break; 34011 34012 case te: 34013 if (Ue = (Te = Te.replace(b, "$1 $2" + (Be > 0 ? De : ""))) + "{" + Ue + "}", 1 === Ae || 2 === Ae && Le("@" + Ue, 3)) Ue = "@" + N + Ue + "@" + Ue;else Ue = "@" + Ue; 34014 break; 34015 34016 default: 34017 if (Ue = Te + Ue, t === de) Ve += Ue, Ue = ""; 34018 } else Ue = ""; 34019 break; 34020 34021 default: 34022 Ue = He(a, Ie(a, Te, Oe), Ue, t, i + 1); 34023 } 34024 34025 Xe += Ue, O = 0, $e = 0, z = 0, we = 0, Oe = 0, j = 0, Te = "", Ue = "", C = s.charCodeAt(++R); 34026 break; 34027 34028 case q: 34029 case W: 34030 if ((je = (Te = (we > 0 ? Te.replace(c, "") : Te).trim()).length) > 1) { 34031 if (0 === z) if ((g = Te.charCodeAt(0)) === Q || g > 96 && g < 123) je = (Te = Te.replace(" ", ":")).length; 34032 if (ye > 0) if (void 0 !== (n = Pe(Se, Te, a, e, pe, be, Ve.length, t, i, t))) if (0 === (je = (Te = n.trim()).length)) Te = "\0\0"; 34033 34034 switch (g = Te.charCodeAt(0), A = Te.charCodeAt(1), g) { 34035 case re: 34036 break; 34037 34038 case L: 34039 if (A === oe || A === he) { 34040 Ye += Te + s.charAt(R); 34041 break; 34042 } 34043 34044 default: 34045 if (Te.charCodeAt(je - 1) === V) break; 34046 Ve += Ke(Te, g, A, Te.charCodeAt(2)); 34047 } 34048 } 34049 34050 O = 0, $e = 0, z = 0, we = 0, Oe = 0, Te = "", C = s.charCodeAt(++R); 34051 } 34052 } 34053 34054 switch (C) { 34055 case J: 34056 case I: 34057 if (h + d + u + o + ve === 0) switch ($) { 34058 case E: 34059 case X: 34060 case Y: 34061 case L: 34062 case ae: 34063 case _: 34064 case T: 34065 case ee: 34066 case Z: 34067 case Q: 34068 case V: 34069 case U: 34070 case W: 34071 case B: 34072 case q: 34073 break; 34074 34075 default: 34076 if (z > 0) $e = 1; 34077 } 34078 if (h === Z) h = 0;else if (ge + O === 0 && t !== te && Te.length > 0) we = 1, Te += "\0"; 34079 if (ye * qe > 0) Pe(Ne, Te, a, e, pe, be, Ve.length, t, i, t); 34080 be = 1, pe++; 34081 break; 34082 34083 case W: 34084 case q: 34085 if (h + d + u + o === 0) { 34086 be++; 34087 break; 34088 } 34089 34090 default: 34091 switch (be++, Re = s.charAt(R), C) { 34092 case K: 34093 case M: 34094 if (d + o + h === 0) switch (w) { 34095 case U: 34096 case V: 34097 case K: 34098 case M: 34099 Re = ""; 34100 break; 34101 34102 default: 34103 if (C !== M) Re = " "; 34104 } 34105 break; 34106 34107 case re: 34108 Re = "\\0"; 34109 break; 34110 34111 case ce: 34112 Re = "\\f"; 34113 break; 34114 34115 case se: 34116 Re = "\\v"; 34117 break; 34118 34119 case P: 34120 if (d + h + o === 0 && ge > 0) Oe = 1, we = 1, Re = "\f" + Re; 34121 break; 34122 34123 case 108: 34124 if (d + h + o + ke === 0 && z > 0) switch (R - z) { 34125 case 2: 34126 if (w === ne && s.charCodeAt(R - 3) === V) ke = w; 34127 34128 case 8: 34129 if (m === le) ke = m; 34130 } 34131 break; 34132 34133 case V: 34134 if (d + h + o === 0) z = R; 34135 break; 34136 34137 case U: 34138 if (h + u + d + o === 0) we = 1, Re += "\r"; 34139 break; 34140 34141 case Y: 34142 case X: 34143 if (0 === h) d = d === C ? 0 : 0 === d ? C : d; 34144 break; 34145 34146 case G: 34147 if (d + h + u === 0) o++; 34148 break; 34149 34150 case H: 34151 if (d + h + u === 0) o--; 34152 break; 34153 34154 case E: 34155 if (d + h + o === 0) u--; 34156 break; 34157 34158 case D: 34159 if (d + h + o === 0) { 34160 if (0 === O) switch (2 * w + 3 * m) { 34161 case 533: 34162 break; 34163 34164 default: 34165 y = 0, O = 1; 34166 } 34167 u++; 34168 } 34169 34170 break; 34171 34172 case L: 34173 if (h + u + d + o + z + j === 0) j = 1; 34174 break; 34175 34176 case T: 34177 case Z: 34178 if (d + o + u > 0) break; 34179 34180 switch (h) { 34181 case 0: 34182 switch (2 * C + 3 * s.charCodeAt(R + 1)) { 34183 case 235: 34184 h = Z; 34185 break; 34186 34187 case 220: 34188 je = R, h = T; 34189 } 34190 34191 break; 34192 34193 case T: 34194 if (C === Z && w === T && je + 2 !== R) { 34195 if (33 === s.charCodeAt(je + 2)) Ve += s.substring(je, R + 1); 34196 Re = "", h = 0; 34197 } 34198 34199 } 34200 34201 } 34202 34203 if (0 === h) { 34204 if (ge + d + o + j === 0 && t !== te && C !== W) switch (C) { 34205 case U: 34206 case ae: 34207 case _: 34208 case ee: 34209 case E: 34210 case D: 34211 if (0 === O) { 34212 switch (w) { 34213 case K: 34214 case M: 34215 case I: 34216 case J: 34217 Re += "\0"; 34218 break; 34219 34220 default: 34221 Re = "\0" + Re + (C === U ? "" : "\0"); 34222 } 34223 34224 we = 1; 34225 } else switch (C) { 34226 case D: 34227 if (z + 7 === R && 108 === w) z = 0; 34228 O = ++y; 34229 break; 34230 34231 case E: 34232 if (0 == (O = --y)) we = 1, Re += "\0"; 34233 } 34234 34235 break; 34236 34237 case K: 34238 case M: 34239 switch (w) { 34240 case re: 34241 case B: 34242 case q: 34243 case W: 34244 case U: 34245 case ce: 34246 case K: 34247 case M: 34248 case I: 34249 case J: 34250 break; 34251 34252 default: 34253 if (0 === O) we = 1, Re += "\0"; 34254 } 34255 34256 } 34257 if (Te += Re, C !== M && C !== K) $ = C; 34258 } 34259 34260 } 34261 34262 m = w, w = C, R++; 34263 } 34264 34265 if (je = Ve.length, me > 0) if (0 === je && 0 === Xe.length && 0 === a[0].length == false) if (t !== ie || 1 === a.length && (ge > 0 ? Ee : Ge) === a[0]) je = a.join(",").length + 2; 34266 34267 if (je > 0) { 34268 if (f = 0 === ge && t !== te ? function (e) { 34269 for (var a, r, s = 0, t = e.length, i = Array(t); s < t; ++s) { 34270 for (var f = e[s].split(l), n = "", o = 0, h = 0, u = 0, d = 0, b = f.length; o < b; ++o) { 34271 if (0 === (h = (r = f[o]).length) && b > 1) continue; 34272 if (u = n.charCodeAt(n.length - 1), d = r.charCodeAt(0), a = "", 0 !== o) switch (u) { 34273 case T: 34274 case ae: 34275 case _: 34276 case ee: 34277 case M: 34278 case D: 34279 break; 34280 34281 default: 34282 a = " "; 34283 } 34284 34285 switch (d) { 34286 case P: 34287 r = a + Ee; 34288 34289 case ae: 34290 case _: 34291 case ee: 34292 case M: 34293 case E: 34294 case D: 34295 break; 34296 34297 case G: 34298 r = a + r + Ee; 34299 break; 34300 34301 case V: 34302 switch (2 * r.charCodeAt(1) + 3 * r.charCodeAt(2)) { 34303 case 530: 34304 if (Ce > 0) { 34305 r = a + r.substring(8, h - 1); 34306 break; 34307 } 34308 34309 default: 34310 if (o < 1 || f[o - 1].length < 1) r = a + Ee + r; 34311 } 34312 34313 break; 34314 34315 case U: 34316 a = ""; 34317 34318 default: 34319 if (h > 1 && r.indexOf(":") > 0) r = a + r.replace(v, "$1" + Ee + "$2");else r = a + r + Ee; 34320 } 34321 34322 n += r; 34323 } 34324 34325 i[s] = n.replace(c, "").trim(); 34326 } 34327 34328 return i; 34329 }(a) : a, ye > 0) if (void 0 !== (n = Pe(Fe, Ve, f, e, pe, be, je, t, i, t)) && 0 === (Ve = n).length) return Ye + Ve + Xe; 34330 34331 if (Ve = f.join(",") + "{" + Ve + "}", Ae * ke != 0) { 34332 if (2 === Ae && !Le(Ve, 2)) ke = 0; 34333 34334 switch (ke) { 34335 case le: 34336 Ve = Ve.replace(k, ":" + S + "$1") + Ve; 34337 break; 34338 34339 case ne: 34340 Ve = Ve.replace(p, "::" + N + "input-$1") + Ve.replace(p, "::" + S + "$1") + Ve.replace(p, ":" + F + "input-$1") + Ve; 34341 } 34342 34343 ke = 0; 34344 } 34345 } 34346 34347 return Ye + Ve + Xe; 34348 } 34349 34350 function Ie(e, a, r) { 34351 var c = a.trim().split(o), 34352 s = c, 34353 t = c.length, 34354 i = e.length; 34355 34356 switch (i) { 34357 case 0: 34358 case 1: 34359 for (var f = 0, n = 0 === i ? "" : e[0] + " "; f < t; ++f) s[f] = Je(n, s[f], r, i).trim(); 34360 34361 break; 34362 34363 default: 34364 f = 0; 34365 var l = 0; 34366 34367 for (s = []; f < t; ++f) for (var h = 0; h < i; ++h) s[l++] = Je(e[h] + " ", c[f], r, i).trim(); 34368 34369 } 34370 34371 return s; 34372 } 34373 34374 function Je(e, a, r, c) { 34375 var s = a, 34376 t = s.charCodeAt(0); 34377 if (t < 33) t = (s = s.trim()).charCodeAt(0); 34378 34379 switch (t) { 34380 case P: 34381 switch (ge + c) { 34382 case 0: 34383 case 1: 34384 if (0 === e.trim().length) break; 34385 34386 default: 34387 return s.replace(h, "$1" + e.trim()); 34388 } 34389 34390 break; 34391 34392 case V: 34393 switch (s.charCodeAt(1)) { 34394 case 103: 34395 if (Ce > 0 && ge > 0) return s.replace(u, "$1").replace(h, "$1" + Ge); 34396 break; 34397 34398 default: 34399 return e.trim() + s.replace(h, "$1" + e.trim()); 34400 } 34401 34402 default: 34403 if (r * ge > 0 && s.indexOf("\f") > 0) return s.replace(h, (e.charCodeAt(0) === V ? "" : "$1") + e.trim()); 34404 } 34405 34406 return e + s; 34407 } 34408 34409 function Ke(e, a, r, c) { 34410 var l, 34411 o = 0, 34412 h = e + ";", 34413 u = 2 * a + 3 * r + 4 * c; 34414 if (944 === u) return function (e) { 34415 var a = e.length, 34416 r = e.indexOf(":", 9) + 1, 34417 c = e.substring(0, r).trim(), 34418 s = e.substring(r, a - 1).trim(); 34419 34420 switch (e.charCodeAt(9) * Be) { 34421 case 0: 34422 break; 34423 34424 case Q: 34425 if (110 !== e.charCodeAt(10)) break; 34426 34427 default: 34428 for (var t = s.split((s = "", f)), i = 0, r = 0, a = t.length; i < a; r = 0, ++i) { 34429 for (var l = t[i], o = l.split(n); l = o[r];) { 34430 var h = l.charCodeAt(0); 34431 if (1 === Be && (h > L && h < 90 || h > 96 && h < 123 || h === R || h === Q && l.charCodeAt(1) !== Q)) switch (isNaN(parseFloat(l)) + (-1 !== l.indexOf("("))) { 34432 case 1: 34433 switch (l) { 34434 case "infinite": 34435 case "alternate": 34436 case "backwards": 34437 case "running": 34438 case "normal": 34439 case "forwards": 34440 case "both": 34441 case "none": 34442 case "linear": 34443 case "ease": 34444 case "ease-in": 34445 case "ease-out": 34446 case "ease-in-out": 34447 case "paused": 34448 case "reverse": 34449 case "alternate-reverse": 34450 case "inherit": 34451 case "initial": 34452 case "unset": 34453 case "step-start": 34454 case "step-end": 34455 break; 34456 34457 default: 34458 l += De; 34459 } 34460 34461 } 34462 o[r++] = l; 34463 } 34464 34465 s += (0 === i ? "" : ",") + o.join(" "); 34466 } 34467 34468 } 34469 34470 if (s = c + s + ";", 1 === Ae || 2 === Ae && Le(s, 1)) return N + s + s; 34471 return s; 34472 }(h);else if (0 === Ae || 2 === Ae && !Le(h, 1)) return h; 34473 34474 switch (u) { 34475 case 1015: 34476 return 97 === h.charCodeAt(10) ? N + h + h : h; 34477 34478 case 951: 34479 return 116 === h.charCodeAt(3) ? N + h + h : h; 34480 34481 case 963: 34482 return 110 === h.charCodeAt(5) ? N + h + h : h; 34483 34484 case 1009: 34485 if (100 !== h.charCodeAt(4)) break; 34486 34487 case 969: 34488 case 942: 34489 return N + h + h; 34490 34491 case 978: 34492 return N + h + S + h + h; 34493 34494 case 1019: 34495 case 983: 34496 return N + h + S + h + F + h + h; 34497 34498 case 883: 34499 if (h.charCodeAt(8) === Q) return N + h + h; 34500 if (h.indexOf("image-set(", 11) > 0) return h.replace(z, "$1" + N + "$2") + h; 34501 return h; 34502 34503 case 932: 34504 if (h.charCodeAt(4) === Q) switch (h.charCodeAt(5)) { 34505 case 103: 34506 return N + "box-" + h.replace("-grow", "") + N + h + F + h.replace("grow", "positive") + h; 34507 34508 case 115: 34509 return N + h + F + h.replace("shrink", "negative") + h; 34510 34511 case 98: 34512 return N + h + F + h.replace("basis", "preferred-size") + h; 34513 } 34514 return N + h + F + h + h; 34515 34516 case 964: 34517 return N + h + F + "flex-" + h + h; 34518 34519 case 1023: 34520 if (99 !== h.charCodeAt(8)) break; 34521 return l = h.substring(h.indexOf(":", 15)).replace("flex-", "").replace("space-between", "justify"), N + "box-pack" + l + N + h + F + "flex-pack" + l + h; 34522 34523 case 1005: 34524 return t.test(h) ? h.replace(s, ":" + N) + h.replace(s, ":" + S) + h : h; 34525 34526 case 1e3: 34527 switch (o = (l = h.substring(13).trim()).indexOf("-") + 1, l.charCodeAt(0) + l.charCodeAt(o)) { 34528 case 226: 34529 l = h.replace(m, "tb"); 34530 break; 34531 34532 case 232: 34533 l = h.replace(m, "tb-rl"); 34534 break; 34535 34536 case 220: 34537 l = h.replace(m, "lr"); 34538 break; 34539 34540 default: 34541 return h; 34542 } 34543 34544 return N + h + F + l + h; 34545 34546 case 1017: 34547 if (-1 === h.indexOf("sticky", 9)) return h; 34548 34549 case 975: 34550 switch (o = (h = e).length - 10, u = (l = (33 === h.charCodeAt(o) ? h.substring(0, o) : h).substring(e.indexOf(":", 7) + 1).trim()).charCodeAt(0) + (0 | l.charCodeAt(7))) { 34551 case 203: 34552 if (l.charCodeAt(8) < 111) break; 34553 34554 case 115: 34555 h = h.replace(l, N + l) + ";" + h; 34556 break; 34557 34558 case 207: 34559 case 102: 34560 h = h.replace(l, N + (u > 102 ? "inline-" : "") + "box") + ";" + h.replace(l, N + l) + ";" + h.replace(l, F + l + "box") + ";" + h; 34561 } 34562 34563 return h + ";"; 34564 34565 case 938: 34566 if (h.charCodeAt(5) === Q) switch (h.charCodeAt(6)) { 34567 case 105: 34568 return l = h.replace("-items", ""), N + h + N + "box-" + l + F + "flex-" + l + h; 34569 34570 case 115: 34571 return N + h + F + "flex-item-" + h.replace(y, "") + h; 34572 34573 default: 34574 return N + h + F + "flex-line-pack" + h.replace("align-content", "").replace(y, "") + h; 34575 } 34576 break; 34577 34578 case 973: 34579 case 989: 34580 if (h.charCodeAt(3) !== Q || 122 === h.charCodeAt(4)) break; 34581 34582 case 931: 34583 case 953: 34584 if (true === j.test(e)) if (115 === (l = e.substring(e.indexOf(":") + 1)).charCodeAt(0)) return Ke(e.replace("stretch", "fill-available"), a, r, c).replace(":fill-available", ":stretch");else return h.replace(l, N + l) + h.replace(l, S + l.replace("fill-", "")) + h; 34585 break; 34586 34587 case 962: 34588 if (h = N + h + (102 === h.charCodeAt(5) ? F + h : "") + h, r + c === 211 && 105 === h.charCodeAt(13) && h.indexOf("transform", 10) > 0) return h.substring(0, h.indexOf(";", 27) + 1).replace(i, "$1" + N + "$2") + h; 34589 } 34590 34591 return h; 34592 } 34593 34594 function Le(e, a) { 34595 var r = e.indexOf(1 === a ? ":" : "{"), 34596 c = e.substring(0, 3 !== a ? r : 10), 34597 s = e.substring(r + 1, e.length - 1); 34598 return Oe(2 !== a ? c : c.replace(O, "$1"), s, a); 34599 } 34600 34601 function Me(e, a) { 34602 var r = Ke(a, a.charCodeAt(0), a.charCodeAt(1), a.charCodeAt(2)); 34603 return r !== a + ";" ? r.replace($, " or ($1)").substring(4) : "(" + a + ")"; 34604 } 34605 34606 function Pe(e, a, r, c, s, t, i, f, n, l) { 34607 for (var o, h = 0, u = a; h < ye; ++h) switch (o = $e[h].call(Te, e, u, r, c, s, t, i, f, n, l)) { 34608 case void 0: 34609 case false: 34610 case true: 34611 case null: 34612 break; 34613 34614 default: 34615 u = o; 34616 } 34617 34618 if (u !== a) return u; 34619 } 34620 34621 function Qe(e, a, r, c) { 34622 for (var s = a + 1; s < r; ++s) switch (c.charCodeAt(s)) { 34623 case Z: 34624 if (e === T) if (c.charCodeAt(s - 1) === T && a + 2 !== s) return s + 1; 34625 break; 34626 34627 case I: 34628 if (e === Z) return s + 1; 34629 } 34630 34631 return s; 34632 } 34633 34634 function Re(e) { 34635 for (var a in e) { 34636 var r = e[a]; 34637 34638 switch (a) { 34639 case "keyframe": 34640 Be = 0 | r; 34641 break; 34642 34643 case "global": 34644 Ce = 0 | r; 34645 break; 34646 34647 case "cascade": 34648 ge = 0 | r; 34649 break; 34650 34651 case "compress": 34652 we = 0 | r; 34653 break; 34654 34655 case "semicolon": 34656 ve = 0 | r; 34657 break; 34658 34659 case "preserve": 34660 me = 0 | r; 34661 break; 34662 34663 case "prefix": 34664 if (Oe = null, !r) Ae = 0;else if ("function" != typeof r) Ae = 1;else Ae = 2, Oe = r; 34665 } 34666 } 34667 34668 return Re; 34669 } 34670 34671 function Te(a, r) { 34672 if (void 0 !== this && this.constructor === Te) return e(a); 34673 var s = a, 34674 t = s.charCodeAt(0); 34675 if (t < 33) t = (s = s.trim()).charCodeAt(0); 34676 if (Be > 0) De = s.replace(d, t === G ? "" : "-"); 34677 if (t = 1, 1 === ge) Ge = s;else Ee = s; 34678 var i, 34679 f = [Ge]; 34680 if (ye > 0) if (void 0 !== (i = Pe(ze, r, f, f, pe, be, 0, 0, 0, 0)) && "string" == typeof i) r = i; 34681 var n = He(xe, f, r, 0, 0); 34682 if (ye > 0) if (void 0 !== (i = Pe(je, n, f, f, pe, be, n.length, 0, 0, 0)) && "string" != typeof (n = i)) t = 0; 34683 return De = "", Ge = "", Ee = "", ke = 0, pe = 1, be = 1, we * t == 0 ? n : n.replace(c, "").replace(g, "").replace(A, "$1").replace(C, "$1").replace(w, " "); 34684 } 34685 34686 if (Te.use = function e(a) { 34687 switch (a) { 34688 case void 0: 34689 case null: 34690 ye = $e.length = 0; 34691 break; 34692 34693 default: 34694 if ("function" == typeof a) $e[ye++] = a;else if ("object" == typeof a) for (var r = 0, c = a.length; r < c; ++r) e(a[r]);else qe = 0 | !!a; 34695 } 34696 34697 return e; 34698 }, Te.set = Re, void 0 !== a) Re(a); 34699 return Te; 34700}); 34701 34702/***/ }), 34703
vendor: 795 bytes, lines 34704-34731
34704/***/ "./node_modules/tiny-invariant/dist/tiny-invariant.esm.js": 34705/*!****************************************************************!*\ 34706 !*** ./node_modules/tiny-invariant/dist/tiny-invariant.esm.js ***! 34707 \****************************************************************/ 34708/*! exports provided: default */ 34709/***/ (function(module, __webpack_exports__, __webpack_require__) { 34710 34711"use strict"; 34712__webpack_require__.r(__webpack_exports__); 34713var isProduction = "development" === 'production'; 34714var prefix = 'Invariant failed'; 34715 34716function invariant(condition, message) { 34717 if (condition) { 34718 return; 34719 } 34720 34721 if (isProduction) { 34722 throw new Error(prefix); 34723 } 34724 34725 throw new Error(prefix + ": " + (message || '')); 34726} 34727 34728/* harmony default export */ __webpack_exports__["default"] = (invariant); 34729 34730/***/ }), 34731
vendor: 835 bytes, lines 34732-34764
34732/***/ "./node_modules/tiny-warning/dist/tiny-warning.esm.js": 34733/*!************************************************************!*\ 34734 !*** ./node_modules/tiny-warning/dist/tiny-warning.esm.js ***! 34735 \************************************************************/ 34736/*! exports provided: default */ 34737/***/ (function(module, __webpack_exports__, __webpack_require__) { 34738 34739"use strict"; 34740__webpack_require__.r(__webpack_exports__); 34741var isProduction = "development" === 'production'; 34742 34743function warning(condition, message) { 34744 if (!isProduction) { 34745 if (condition) { 34746 return; 34747 } 34748 34749 var text = "Warning: " + message; 34750 34751 if (typeof console !== 'undefined') { 34752 console.warn(text); 34753 } 34754 34755 try { 34756 throw Error(text); 34757 } catch (x) {} 34758 } 34759} 34760 34761/* harmony default export */ __webpack_exports__["default"] = (warning); 34762 34763/***/ }), 34764
vendor: 1,280 bytes, lines 34765-34805
34765/***/ "./node_modules/value-equal/esm/value-equal.js": 34766/*!*****************************************************!*\ 34767 !*** ./node_modules/value-equal/esm/value-equal.js ***! 34768 \*****************************************************/ 34769/*! exports provided: default */ 34770/***/ (function(module, __webpack_exports__, __webpack_require__) { 34771 34772"use strict"; 34773__webpack_require__.r(__webpack_exports__); 34774function valueOf(obj) { 34775 return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj); 34776} 34777 34778function valueEqual(a, b) { 34779 // Test for strict equality first. 34780 if (a === b) return true; // Otherwise, if either of them == null they are not equal. 34781 34782 if (a == null || b == null) return false; 34783 34784 if (Array.isArray(a)) { 34785 return Array.isArray(b) && a.length === b.length && a.every(function (item, index) { 34786 return valueEqual(item, b[index]); 34787 }); 34788 } 34789 34790 if (typeof a === 'object' || typeof b === 'object') { 34791 var aValue = valueOf(a); 34792 var bValue = valueOf(b); 34793 if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue); 34794 return Object.keys(Object.assign({}, a, b)).every(function (key) { 34795 return valueEqual(a[key], b[key]); 34796 }); 34797 } 34798 34799 return false; 34800} 34801 34802/* harmony default export */ __webpack_exports__["default"] = (valueEqual); 34803 34804/***/ }), 34805
vendor: 727 bytes, lines 34806-34833
34806/***/ "./node_modules/webpack/buildin/global.js": 34807/*!***********************************!*\ 34808 !*** (webpack)/buildin/global.js ***! 34809 \***********************************/ 34810/*! no static exports found */ 34811/***/ (function(module, exports) { 34812 34813var g; // This works in non-strict mode 34814 34815g = function () { 34816 return this; 34817}(); 34818 34819try { 34820 // This works if eval is allowed (see CSP) 34821 g = g || new Function("return this")(); 34822} catch (e) { 34823 // This works if the window reference is available 34824 if (typeof window === "object") g = window; 34825} // g can still be undefined, but nothing to do about it... 34826// We return undefined, instead of nothing here, so it's 34827// easier to handle this case. if(!global) { ...} 34828 34829 34830module.exports = g; 34831 34832/***/ }), 34833
vendor: 798 bytes, lines 34834-34867
34834/***/ "./node_modules/webpack/buildin/module.js": 34835/*!***********************************!*\ 34836 !*** (webpack)/buildin/module.js ***! 34837 \***********************************/ 34838/*! no static exports found */ 34839/***/ (function(module, exports) { 34840 34841module.exports = function (module) { 34842 if (!module.webpackPolyfill) { 34843 module.deprecate = function () {}; 34844 34845 module.paths = []; // module.parent = undefined by default 34846 34847 if (!module.children) module.children = []; 34848 Object.defineProperty(module, "loaded", { 34849 enumerable: true, 34850 get: function () { 34851 return module.l; 34852 } 34853 }); 34854 Object.defineProperty(module, "id", { 34855 enumerable: true, 34856 get: function () { 34857 return module.i; 34858 } 34859 }); 34860 module.webpackPolyfill = 1; 34861 } 34862 34863 return module; 34864}; 34865 34866/***/ }), 34867
vendor: 31,800 bytes, lines 34868-36377
34868/***/ "./node_modules/wonka/dist/wonka.es.js": 34869/*!*********************************************!*\ 34870 !*** ./node_modules/wonka/dist/wonka.es.js ***! 34871 \*********************************************/ 34872/*! exports provided: Types, buffer, combine, concat, concatAll, concatMap, debounce, delay, empty, filter, flatten, forEach, fromArray, fromCallbag, fromDomEvent, fromList, fromListener, fromObservable, fromPromise, fromValue, interval, make, makeSubject, map, merge, mergeAll, mergeMap, never, onEnd, onPush, onStart, pipe, publish, sample, scan, share, skip, skipUntil, skipWhile, subscribe, switchAll, switchMap, take, takeLast, takeUntil, takeWhile, tap, throttle, toArray, toCallbag, toObservable, toPromise */ 34873/***/ (function(module, __webpack_exports__, __webpack_require__) { 34874 34875"use strict"; 34876__webpack_require__.r(__webpack_exports__); 34877/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Types", function() { return Types; }); 34878/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "buffer", function() { return buffer$2; }); 34879/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "combine", function() { return combine$2; }); 34880/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "concat", function() { return concat$2; }); 34881/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "concatAll", function() { return concatAll$2; }); 34882/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "concatMap", function() { return concatMap$2; }); 34883/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "debounce", function() { return debounce$2; }); 34884/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "delay", function() { return delay$2; }); 34885/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "empty", function() { return empty$2; }); 34886/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "filter", function() { return filter$2; }); 34887/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "flatten", function() { return flatten$2; }); 34888/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "forEach", function() { return forEach$2; }); 34889/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fromArray", function() { return fromArray$2; }); 34890/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fromCallbag", function() { return fromCallbag$2; }); 34891/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fromDomEvent", function() { return fromDomEvent$2; }); 34892/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fromList", function() { return fromList$2; }); 34893/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fromListener", function() { return fromListener$2; }); 34894/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fromObservable", function() { return fromObservable$2; }); 34895/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fromPromise", function() { return fromPromise$2; }); 34896/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fromValue", function() { return fromValue$2; }); 34897/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "interval", function() { return interval$2; }); 34898/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "make", function() { return make$2; }); 34899/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "makeSubject", function() { return makeSubject$2; }); 34900/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "map", function() { return map$2; }); 34901/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return merge$2; }); 34902/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mergeAll", function() { return mergeAll$2; }); 34903/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mergeMap", function() { return mergeMap$2; }); 34904/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "never", function() { return never$2; }); 34905/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "onEnd", function() { return onEnd$2; }); 34906/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "onPush", function() { return onPush$2; }); 34907/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "onStart", function() { return onStart$2; }); 34908/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pipe", function() { return pipe; }); 34909/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "publish", function() { return publish$2; }); 34910/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sample", function() { return sample$2; }); 34911/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scan", function() { return scan$2; }); 34912/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "share", function() { return share$2; }); 34913/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "skip", function() { return skip$2; }); 34914/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "skipUntil", function() { return skipUntil$2; }); 34915/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "skipWhile", function() { return skipWhile$2; }); 34916/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "subscribe", function() { return subscribe$2; }); 34917/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "switchAll", function() { return switchAll$2; }); 34918/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "switchMap", function() { return switchMap$2; }); 34919/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "take", function() { return take$2; }); 34920/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "takeLast", function() { return takeLast$2; }); 34921/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "takeUntil", function() { return takeUntil$2; }); 34922/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "takeWhile", function() { return takeWhile$2; }); 34923/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tap", function() { return tap$2; }); 34924/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "throttle", function() { return throttle$2; }); 34925/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "toArray", function() { return toArray$2; }); 34926/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "toCallbag", function() { return toCallbag$2; }); 34927/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "toObservable", function() { return toObservable$2; }); 34928/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "toPromise", function() { return toPromise$2; }); 34929function h(a, b) { 34930 b.tag = a; 34931 return b; 34932} 34933 34934function l(a, b, c) { 34935 for (var d = Array(c), e = 0; e < c;) { 34936 d[e] = a[b], e = e + 1 | 0, b = b + 1 | 0; 34937 } 34938 34939 return d; 34940} 34941 34942function m(a, b) { 34943 for (;;) { 34944 var c = b; 34945 var d = 0 === (b = a.length) ? 1 : b; 34946 34947 if (0 === (b = d - c.length | 0)) { 34948 return a.apply(null, c); 34949 } 34950 34951 if (0 > b) { 34952 b = l(c, d, 0 | -b), a = a.apply(null, l(c, 0, d)); 34953 } else { 34954 return function (a, c) { 34955 return function (d) { 34956 return m(a, c.concat([d])); 34957 }; 34958 }(a, c); 34959 } 34960 } 34961} 34962 34963function r(a, b) { 34964 var c = a.length; 34965 return 1 === c ? a(b) : function q(a, b, c) { 34966 switch (c) { 34967 case 1: 34968 return a(b); 34969 34970 case 2: 34971 return function (c) { 34972 return a(b, c); 34973 }; 34974 34975 case 3: 34976 return function (c, e) { 34977 return a(b, c, e); 34978 }; 34979 34980 case 4: 34981 return function (c, e, f) { 34982 return a(b, c, e, f); 34983 }; 34984 34985 case 5: 34986 return function (c, e, f, g) { 34987 return a(b, c, e, f, g); 34988 }; 34989 34990 case 6: 34991 return function (c, e, f, g, k) { 34992 return a(b, c, e, f, g, k); 34993 }; 34994 34995 case 7: 34996 return function (c, e, f, g, k, n) { 34997 return a(b, c, e, f, g, k, n); 34998 }; 34999 35000 default: 35001 return m(a, [b]); 35002 } 35003 }(a, b, c); 35004} 35005 35006function u(a, b, c, d) { 35007 var e = a.length; 35008 return 3 === e ? a(b, c, d) : function t(a, b, c, d, e) { 35009 switch (e) { 35010 case 1: 35011 return m(a(b), [c, d]); 35012 35013 case 2: 35014 return m(a(b, c), [d]); 35015 35016 case 3: 35017 return a(b, c, d); 35018 35019 case 4: 35020 return function (e) { 35021 return a(b, c, d, e); 35022 }; 35023 35024 case 5: 35025 return function (e, g) { 35026 return a(b, c, d, e, g); 35027 }; 35028 35029 case 6: 35030 return function (e, g, k) { 35031 return a(b, c, d, e, g, k); 35032 }; 35033 35034 case 7: 35035 return function (e, g, k, n) { 35036 return a(b, c, d, e, g, k, n); 35037 }; 35038 35039 default: 35040 return m(a, [b, c, d]); 35041 } 35042 }(a, b, c, d, e); 35043} 35044 35045var v = []; 35046 35047function w(a) { 35048 if (void 0 === a) { 35049 return (a = [v, 0]).tag = 256, a; 35050 } 35051 35052 null !== a && a[0] === v && ((a = [v, a[1] + 1 | 0]).tag = 256); 35053 return a; 35054} 35055 35056function x(a) { 35057 if (null !== a && a[0] === v) { 35058 if (0 !== (a = a[1])) { 35059 return [v, a - 1 | 0]; 35060 } 35061 } else { 35062 return a; 35063 } 35064} 35065 35066function y() { 35067 return 0; 35068} 35069 35070function z(a, b) { 35071 let c = y; 35072 return r(a, function (a) { 35073 "number" != typeof a && (a.tag || (c = a[0])); 35074 return b(a, c); 35075 }); 35076} 35077 35078function A(a, b) { 35079 let c = !1, 35080 d = !1, 35081 e = !1; 35082 return a(h(0, [function (f) { 35083 if (f) { 35084 c = !0; 35085 } else if (d) { 35086 e = !0; 35087 } else { 35088 for (d = e = !0; e && !c;) { 35089 void 0 !== (f = b()) ? (e = !1, a(h(1, [x(f)]))) : (c = !0, a(0)); 35090 } 35091 35092 d = !1; 35093 } 35094 35095 return 0; 35096 }])); 35097} 35098 35099var B = "function" == typeof Symbol ? Symbol.observable || (Symbol.observable = Symbol("observable")) : "@@observable"; 35100 35101function C() { 35102 return 0; 35103} 35104 35105function D(a) { 35106 return function (b) { 35107 return function (c) { 35108 function d() { 35109 return e.shift(); 35110 } 35111 35112 var e = []; 35113 return z(b, function (b, g) { 35114 if ("number" == typeof b) { 35115 return A(c, d); 35116 } 35117 35118 b.tag && (e.length >= a && 0 < a && e.shift(), e.push(b[0])); 35119 return g(0); 35120 }); 35121 }; 35122 }; 35123} 35124 35125function E(a, b) { 35126 return function (c) { 35127 function d(a) { 35128 return c(h(1, [a])); 35129 } 35130 35131 c(h(0, [function (c) { 35132 return c ? r(b, d) : 0; 35133 }])); 35134 return r(a, d); 35135 }; 35136} 35137 35138function F(a, b, c) { 35139 a.addEventListener(b, c); 35140} 35141 35142function G(a, b, c) { 35143 a.removeEventListener(b, c); 35144} 35145 35146function H(a) { 35147 return function (b) { 35148 let c = y, 35149 d = !1; 35150 r(b, function (e) { 35151 if ("number" == typeof e) { 35152 return d = !0, 0; 35153 } 35154 35155 if (e.tag) { 35156 if (d) { 35157 return 0; 35158 } 35159 35160 a(e[0]); 35161 return c(0); 35162 } 35163 35164 c = e = e[0]; 35165 return e(0); 35166 }); 35167 return [function () { 35168 if (d) { 35169 return 0; 35170 } 35171 35172 d = !0; 35173 return c(1); 35174 }]; 35175 }; 35176} 35177 35178function I() { 35179 return 0; 35180} 35181 35182function J(a) { 35183 return function (b) { 35184 var c = a.length; 35185 let d = 0; 35186 return A(b, function () { 35187 if (d < c) { 35188 var e = a[d]; 35189 d = d + 1 | 0; 35190 return w(e); 35191 } 35192 }); 35193 }; 35194} 35195 35196function K(a) { 35197 return a(0); 35198} 35199 35200function L(a) { 35201 return a(0); 35202} 35203 35204function M(a) { 35205 return function (b) { 35206 return function (c) { 35207 return r(b, function (d) { 35208 "number" != typeof d && d.tag && a(d[0]); 35209 return c(d); 35210 }); 35211 }; 35212 }; 35213} 35214 35215function N() { 35216 return 0; 35217} 35218 35219function O() { 35220 return 0; 35221} 35222 35223function P(a) { 35224 return a(1); 35225} 35226 35227function Q(a) { 35228 return a(1); 35229} 35230 35231function R(a) { 35232 return a(0); 35233} 35234 35235function S(a) { 35236 return function (b) { 35237 return function (c) { 35238 let e = y, 35239 f = [], 35240 g = !1; 35241 r(b, function (b) { 35242 if ("number" == typeof b) { 35243 if (g) { 35244 return 0; 35245 } 35246 35247 g = !0; 35248 return 0 === f.length ? c(0) : 0; 35249 } 35250 35251 if (b.tag) { 35252 if (g) { 35253 return 0; 35254 } 35255 35256 !function d(a) { 35257 function d(c) { 35258 return c !== e; 35259 } 35260 35261 let e = y; 35262 return r(a, function (a) { 35263 if ("number" == typeof a) { 35264 return f = f.filter(d), g && 0 === f.length ? c(0) : 0; 35265 } 35266 35267 if (a.tag) { 35268 return 0 !== f.length ? (c(h(1, [a[0]])), e(0)) : 0; 35269 } 35270 35271 e = a = a[0]; 35272 f = f.concat(a); 35273 return a(0); 35274 }); 35275 }(a(b[0])); 35276 return e(0); 35277 } 35278 35279 e = b = b[0]; 35280 return b(0); 35281 }); 35282 return c(h(0, [function (a) { 35283 a ? (f.forEach(P), g || (g = !0, e(1), f.forEach(Q), f = [])) : g || f.forEach(R); 35284 return 0; 35285 }])); 35286 }; 35287 }; 35288} 35289 35290function T(a) { 35291 return a; 35292} 35293 35294function U(a) { 35295 return a; 35296} 35297 35298function V(a) { 35299 return S(U)(a); 35300} 35301 35302function W(a) { 35303 return function (b) { 35304 return function (c) { 35305 function d(b) { 35306 if ("number" == typeof b) { 35307 return k = !1, g = y, void 0 !== (b = e.shift()) ? r(a(x(b)), d) : p ? c(0) : 0; 35308 } 35309 35310 if (b.tag) { 35311 if (n) { 35312 return 0; 35313 } 35314 35315 c(h(1, [b[0]])); 35316 return g(0); 35317 } 35318 35319 k = !0; 35320 g = b = b[0]; 35321 return b(0); 35322 } 35323 35324 let e = [], 35325 f = y, 35326 g = y, 35327 k = !1, 35328 n = !1, 35329 p = !1; 35330 r(b, function (b) { 35331 if ("number" == typeof b) { 35332 if (p) { 35333 return 0; 35334 } 35335 35336 p = !0; 35337 return k || 0 !== e.length ? 0 : c(0); 35338 } 35339 35340 if (b.tag) { 35341 if (p) { 35342 return 0; 35343 } 35344 35345 b = b[0]; 35346 k ? e.push(b) : r(a(b), d); 35347 return f(0); 35348 } 35349 35350 f = b = b[0]; 35351 return b(0); 35352 }); 35353 return c(h(0, [function (a) { 35354 return a ? (g(1), p || (n = p = !0, f(1), g = y), 0) : p ? 0 : g(0); 35355 }])); 35356 }; 35357 }; 35358} 35359 35360function X(a) { 35361 return a; 35362} 35363 35364function Y(a) { 35365 return a; 35366} 35367 35368function Z(a) { 35369 return function (b) { 35370 return function (c) { 35371 function d(a) { 35372 if ("number" == typeof a) { 35373 return g = !1, f = y, n ? c(0) : 0; 35374 } 35375 35376 if (a.tag) { 35377 if (k) { 35378 return 0; 35379 } 35380 35381 c(h(1, [a[0]])); 35382 return f(0); 35383 } 35384 35385 g = !0; 35386 f = a = a[0]; 35387 return a(0); 35388 } 35389 35390 let e = y, 35391 f = y, 35392 g = !1, 35393 k = !1, 35394 n = !1; 35395 r(b, function (b) { 35396 if ("number" == typeof b) { 35397 if (n) { 35398 return 0; 35399 } 35400 35401 n = !0; 35402 return g ? 0 : c(0); 35403 } 35404 35405 if (b.tag) { 35406 if (n) { 35407 return 0; 35408 } 35409 35410 g && (f(1), f = y); 35411 r(a(b[0]), d); 35412 return e(0); 35413 } 35414 35415 e = b = b[0]; 35416 return b(0); 35417 }); 35418 return c(h(0, [function (a) { 35419 return a ? (f(1), n || (k = n = !0, e(1), f = y), 0) : f(0); 35420 }])); 35421 }; 35422 }; 35423} 35424 35425function aa(a) { 35426 return a; 35427} 35428 35429var Types = 0; 35430 35431var buffer$2 = function (a) { 35432 return function (b) { 35433 return function (c) { 35434 function d(a) { 35435 if ("number" == typeof a) { 35436 if (k) { 35437 return 0; 35438 } 35439 35440 k = !0; 35441 f(1); 35442 c(h(1, [e])); 35443 return c(0); 35444 } 35445 35446 if (a.tag) { 35447 if (k) { 35448 return 0; 35449 } 35450 35451 c(h(1, [e])); 35452 e = []; 35453 return g(0); 35454 } 35455 35456 return (g = a[0])(0); 35457 } 35458 35459 let e = [], 35460 f = y, 35461 g = y, 35462 k = !1; 35463 r(b, function (b) { 35464 if ("number" == typeof b) { 35465 if (k) { 35466 return 0; 35467 } 35468 35469 k = !0; 35470 g(1); 35471 c(h(1, [e])); 35472 return c(0); 35473 } 35474 35475 if (b.tag) { 35476 if (k) { 35477 return 0; 35478 } 35479 35480 e.push(b[0]); 35481 return f(0); 35482 } 35483 35484 f = b[0]; 35485 return r(a, d); 35486 }); 35487 return c(h(0, [function (a) { 35488 return k ? 0 : a ? (k = !0, f(1), g(1)) : f(0); 35489 }])); 35490 }; 35491 }; 35492}; 35493 35494var combine$2 = function (a) { 35495 return function (b) { 35496 return function (c) { 35497 let d = y, 35498 e = y, 35499 f = void 0, 35500 g = void 0, 35501 k = !1, 35502 n = 0, 35503 p = !1; 35504 r(a, function (a) { 35505 var b = g; 35506 35507 if ("number" == typeof a) { 35508 if (1 > n) { 35509 return n = n + 1 | 0, 0; 35510 } 35511 35512 if (p) { 35513 return 0; 35514 } 35515 35516 p = !0; 35517 return c(0); 35518 } 35519 35520 if (a.tag) { 35521 a = a[0]; 35522 35523 if (void 0 !== b) { 35524 if (p) { 35525 return 0; 35526 } 35527 35528 f = w(a); 35529 k = !1; 35530 return c(h(1, [[a, x(b)]])); 35531 } 35532 35533 f = w(a); 35534 k = !1; 35535 return 0; 35536 } 35537 35538 d = a[0]; 35539 return 0; 35540 }); 35541 r(b, function (a) { 35542 var b = f; 35543 35544 if ("number" == typeof a) { 35545 if (1 > n) { 35546 return n = n + 1 | 0, 0; 35547 } 35548 35549 if (p) { 35550 return 0; 35551 } 35552 35553 p = !0; 35554 return c(0); 35555 } 35556 35557 if (a.tag) { 35558 a = a[0]; 35559 35560 if (void 0 !== b) { 35561 if (p) { 35562 return 0; 35563 } 35564 35565 g = w(a); 35566 k = !1; 35567 return c(h(1, [[x(b), a]])); 35568 } 35569 35570 g = w(a); 35571 k = !1; 35572 return 0; 35573 } 35574 35575 e = a[0]; 35576 return 0; 35577 }); 35578 return c(h(0, [function (a) { 35579 if (p) { 35580 return 0; 35581 } 35582 35583 if (a) { 35584 return p = !0, d(1), e(1); 35585 } 35586 35587 if (k) { 35588 return 0; 35589 } 35590 35591 k = !0; 35592 d(a); 35593 return e(a); 35594 }])); 35595 }; 35596 }; 35597}; 35598 35599var concat$2 = function (a) { 35600 return W(Y)(J(a)); 35601}; 35602 35603var concatAll$2 = function (a) { 35604 return W(X)(a); 35605}; 35606 35607var concatMap$2 = W; 35608 35609var debounce$2 = function (a) { 35610 return function (b) { 35611 return function (c) { 35612 function d() { 35613 var a = f; 35614 void 0 !== a && (f = void 0, clearTimeout(x(a))); 35615 return 0; 35616 } 35617 35618 let e = !1, 35619 f = void 0; 35620 return r(b, function (b) { 35621 if ("number" == typeof b) { 35622 return e = !0, void 0 !== f ? 0 : c(0); 35623 } 35624 35625 if (b.tag) { 35626 return d(), f = w(setTimeout(function g() { 35627 f = void 0; 35628 c(b); 35629 return e ? c(0) : 0; 35630 }, a(b[0]))), 0; 35631 } 35632 35633 var n = b[0]; 35634 return c(h(0, [function (a) { 35635 return a ? (d(), n(1)) : n(a); 35636 }])); 35637 }); 35638 }; 35639 }; 35640}; 35641 35642var delay$2 = function (a) { 35643 return function (b) { 35644 return function (c) { 35645 let d = y, 35646 e = 0, 35647 f = !1; 35648 r(b, function (b) { 35649 if ("number" != typeof b && !b.tag) { 35650 return d = b[0], 0; 35651 } 35652 35653 f || (e = e + 1 | 0, setTimeout(function k() { 35654 f && 0 === e ? c(0) : e = e - 1 | 0; 35655 return c(b); 35656 }, a)); 35657 return 0; 35658 }); 35659 return c(h(0, [function (a) { 35660 return a ? (f = !0, 0 === e ? c(0) : 0) : f ? 0 : d(a); 35661 }])); 35662 }; 35663 }; 35664}; 35665 35666var empty$2 = function (a) { 35667 a(h(0, [y])); 35668 return a(0); 35669}; 35670 35671var filter$2 = function (a) { 35672 return function (b) { 35673 return function (c) { 35674 return z(b, function (b, e) { 35675 return "number" == typeof b || !b.tag || a(b[0]) ? c(b) : e(0); 35676 }); 35677 }; 35678 }; 35679}; 35680 35681var flatten$2 = V; 35682 35683var forEach$2 = function (a) { 35684 return function (b) { 35685 H(a)(b); 35686 return 0; 35687 }; 35688}; 35689 35690var fromArray$2 = J; 35691 35692var fromCallbag$2 = function (a) { 35693 return function (b) { 35694 return a(0, function (a, d) { 35695 switch (a) { 35696 case 0: 35697 return b(h(0, [function c(a) { 35698 return a ? d(2) : d(1); 35699 }])); 35700 35701 case 1: 35702 return b(h(1, [d])); 35703 35704 case 2: 35705 return b(0); 35706 } 35707 }); 35708 }; 35709}; 35710 35711var fromDomEvent$2 = function (a, b) { 35712 return function (c) { 35713 return E(function (c) { 35714 return u(F, a, b, c); 35715 }, function (c) { 35716 return u(G, a, b, c); 35717 })(c); 35718 }; 35719}; 35720 35721var fromList$2 = function (a) { 35722 return function (b) { 35723 let c = a; 35724 return A(b, function () { 35725 var a = c; 35726 35727 if (a) { 35728 return c = a[1], w(a[0]); 35729 } 35730 }); 35731 }; 35732}; 35733 35734var fromListener$2 = E; 35735 35736var fromObservable$2 = function (a) { 35737 var b = void 0 !== a[B] ? a[B]() : a; 35738 return function (a) { 35739 var c = b.subscribe({ 35740 next: function (b) { 35741 return a(h(1, [b])); 35742 }, 35743 complete: function () { 35744 return a(0); 35745 }, 35746 error: C 35747 }); 35748 return a(h(0, [function (a) { 35749 return a ? c.unsubscribe() : 0; 35750 }])); 35751 }; 35752}; 35753 35754var fromPromise$2 = function (a) { 35755 return function (b) { 35756 let c = !1; 35757 a.then(function (a) { 35758 c || (b(h(1, [a])), b(0)); 35759 return Promise.resolve(0); 35760 }); 35761 return b(h(0, [function (a) { 35762 a && (c = !0); 35763 return 0; 35764 }])); 35765 }; 35766}; 35767 35768var fromValue$2 = function (a) { 35769 return function (b) { 35770 let c = !1; 35771 return b(h(0, [function (d) { 35772 if (d || c) { 35773 return 0; 35774 } 35775 35776 c = !0; 35777 b(h(1, [a])); 35778 return b(0); 35779 }])); 35780 }; 35781}; 35782 35783var interval$2 = function (a) { 35784 return function (b) { 35785 let c = 0; 35786 var d = setInterval(function () { 35787 var a = c; 35788 c = c + 1 | 0; 35789 return b(h(1, [a])); 35790 }, a); 35791 return b(h(0, [function (a) { 35792 a && clearInterval(d); 35793 return 0; 35794 }])); 35795 }; 35796}; 35797 35798var make$2 = function (a) { 35799 return function (b) { 35800 let c = I; 35801 b(h(0, [function (a) { 35802 return a ? c() : 0; 35803 }])); 35804 c = a([function (a) { 35805 return b(h(1, [a])); 35806 }, function () { 35807 return b(0); 35808 }]); 35809 return 0; 35810 }; 35811}; 35812 35813var makeSubject$2 = function () { 35814 let a = [], 35815 b = !1; 35816 return [function (b) { 35817 function c(a) { 35818 return a !== b; 35819 } 35820 35821 a = a.concat(b); 35822 return b(h(0, [function (b) { 35823 1 === b && (a = a.filter(c)); 35824 return 0; 35825 }])); 35826 }, function (c) { 35827 b || a.forEach(function d(a) { 35828 return a(h(1, [c])); 35829 }); 35830 return 0; 35831 }, function () { 35832 b || (b = !0, a.forEach(K)); 35833 return 0; 35834 }]; 35835}; 35836 35837var map$2 = function (a) { 35838 return function (b) { 35839 return function (c) { 35840 return r(b, function (b) { 35841 b = "number" == typeof b ? 0 : b.tag ? h(1, [a(b[0])]) : h(0, [b[0]]); 35842 return c(b); 35843 }); 35844 }; 35845 }; 35846}; 35847 35848var merge$2 = function (a) { 35849 return S(T)(J(a)); 35850}; 35851 35852var mergeAll$2 = V; 35853var mergeMap$2 = S; 35854 35855var never$2 = function (a) { 35856 return a(h(0, [y])); 35857}; 35858 35859var onEnd$2 = function (a) { 35860 return function (b) { 35861 return function (c) { 35862 let d = !1; 35863 return r(b, function (b) { 35864 if ("number" == typeof b) { 35865 if (d) { 35866 return 0; 35867 } 35868 35869 d = !0; 35870 c(b); 35871 return a(); 35872 } 35873 35874 if (b.tag) { 35875 return c(b); 35876 } 35877 35878 var e = b[0]; 35879 return c(h(0, [function (b) { 35880 b && !d && (d = !0, a()); 35881 return e(b); 35882 }])); 35883 }); 35884 }; 35885 }; 35886}; 35887 35888var onPush$2 = M; 35889 35890var onStart$2 = function (a) { 35891 return function (b) { 35892 return function (c) { 35893 return r(b, function (b) { 35894 if ("number" == typeof b || b.tag) { 35895 return c(b); 35896 } 35897 35898 c(b); 35899 return a(); 35900 }); 35901 }; 35902 }; 35903}; 35904 35905var pipe = function (a) { 35906 for (var b = arguments, c = b.length, d = a, e = 1; e < c; e++) { 35907 d = b[e](d); 35908 } 35909 35910 return d; 35911}; 35912 35913var publish$2 = function (a) { 35914 let b = y, 35915 c = !1; 35916 r(a, function (a) { 35917 if ("number" == typeof a) { 35918 return c = !0, 0; 35919 } 35920 35921 if (a.tag) { 35922 return c ? 0 : b(0); 35923 } 35924 35925 b = a = a[0]; 35926 return a(0); 35927 }); 35928 return [function () { 35929 if (c) { 35930 return 0; 35931 } 35932 35933 c = !0; 35934 return b(1); 35935 }]; 35936}; 35937 35938var sample$2 = function (a) { 35939 return function (b) { 35940 return function (c) { 35941 let d = !1, 35942 e = void 0, 35943 f = N, 35944 g = O; 35945 r(b, function (a) { 35946 if ("number" == typeof a) { 35947 return d = !0, g(1), c(0); 35948 } 35949 35950 a.tag ? e = w(a[0]) : f = a[0]; 35951 return 0; 35952 }); 35953 r(a, function (a) { 35954 var b = e; 35955 35956 if ("number" == typeof a) { 35957 return d = !0, f(1), c(0); 35958 } 35959 35960 if (a.tag) { 35961 if (void 0 === b || d) { 35962 return 0; 35963 } 35964 35965 e = void 0; 35966 return c(h(1, [x(b)])); 35967 } 35968 35969 g = a[0]; 35970 return 0; 35971 }); 35972 return c(h(0, [function (a) { 35973 if (a) { 35974 return d = !0, f(1), g(1); 35975 } 35976 35977 f(0); 35978 return g(0); 35979 }])); 35980 }; 35981 }; 35982}; 35983 35984var scan$2 = function (a, b) { 35985 return function (c) { 35986 return function (d) { 35987 let e = b; 35988 return r(c, function (b) { 35989 "number" == typeof b ? b = 0 : b.tag ? b = h(1, [e = a(e, b[0])]) : b = h(0, [b[0]]); 35990 return d(b); 35991 }); 35992 }; 35993 }; 35994}; 35995 35996var share$2 = function (a) { 35997 function b(a) { 35998 "number" == typeof a ? (c.forEach(L), c = []) : a.tag ? (e = !1, c.forEach(function b(b) { 35999 return b(a); 36000 })) : d = a[0]; 36001 return 0; 36002 } 36003 36004 let c = [], 36005 d = y, 36006 e = !1; 36007 return function (f) { 36008 function g(a) { 36009 return a !== f; 36010 } 36011 36012 1 === (c = c.concat(f)).length && r(a, b); 36013 return f(h(0, [function (a) { 36014 if (a) { 36015 return 0 === (c = c.filter(g)).length ? d(1) : 0; 36016 } 36017 36018 if (e) { 36019 return 0; 36020 } 36021 36022 e = !0; 36023 return d(a); 36024 }])); 36025 }; 36026}; 36027 36028var skip$2 = function (a) { 36029 return function (b) { 36030 return function (c) { 36031 let d = a; 36032 return z(b, function (a, b) { 36033 return "number" != typeof a && a.tag && 0 < d ? (d = d - 1 | 0, b(0)) : c(a); 36034 }); 36035 }; 36036 }; 36037}; 36038 36039var skipUntil$2 = function (a) { 36040 return function (b) { 36041 return function (c) { 36042 let d = !0, 36043 e = !1, 36044 f = !1, 36045 g = y, 36046 k = y; 36047 r(b, function (b) { 36048 if ("number" == typeof b) { 36049 return d && k(1), e = !0, c(0); 36050 } 36051 36052 if (b.tag) { 36053 if (d && !e) { 36054 return g(0); 36055 } 36056 36057 if (e) { 36058 return 0; 36059 } 36060 36061 f = !1; 36062 return c(b); 36063 } 36064 36065 var n = b[0]; 36066 g = n; 36067 return r(a, function (a) { 36068 if ("number" == typeof a) { 36069 return 0; 36070 } 36071 36072 if (a.tag) { 36073 return d = !1, k(1); 36074 } 36075 36076 k = a = a[0]; 36077 a(0); 36078 return n(0); 36079 }); 36080 }); 36081 return c(h(0, [function (a) { 36082 if (a) { 36083 return d && k(1), e = !0, g(1); 36084 } 36085 36086 if (f || e) { 36087 return 0; 36088 } 36089 36090 f = !0; 36091 return g(0); 36092 }])); 36093 }; 36094 }; 36095}; 36096 36097var skipWhile$2 = function (a) { 36098 return function (b) { 36099 return function (c) { 36100 let d = !0; 36101 return z(b, function (b, f) { 36102 if ("number" != typeof b && b.tag && d) { 36103 if (a(b[0])) { 36104 return f(0); 36105 } 36106 36107 d = !1; 36108 } 36109 36110 return c(b); 36111 }); 36112 }; 36113 }; 36114}; 36115 36116var subscribe$2 = H; 36117 36118var switchAll$2 = function (a) { 36119 return Z(aa)(a); 36120}; 36121 36122var switchMap$2 = Z; 36123 36124var take$2 = function (a) { 36125 return function (b) { 36126 return function (c) { 36127 let d = 0, 36128 e = y; 36129 r(b, function (b) { 36130 if ("number" == typeof b) { 36131 return d < a ? (d = a, c(0)) : 0; 36132 } 36133 36134 if (b.tag) { 36135 return d < a && (d = d + 1 | 0, c(b), d === a) ? (c(0), e(1)) : 0; 36136 } 36137 36138 e = b[0]; 36139 return 0; 36140 }); 36141 return c(h(0, [function (b) { 36142 return d < a ? b ? (d = a, e(1)) : e(0) : 0; 36143 }])); 36144 }; 36145 }; 36146}; 36147 36148var takeLast$2 = D; 36149 36150var takeUntil$2 = function (a) { 36151 return function (b) { 36152 return function (c) { 36153 function d(a) { 36154 if ("number" == typeof a) { 36155 return 0; 36156 } 36157 36158 if (a.tag) { 36159 return e = !0, f(1), c(0); 36160 } 36161 36162 g = a = a[0]; 36163 return a(0); 36164 } 36165 36166 let e = !1, 36167 f = y, 36168 g = y; 36169 r(b, function (b) { 36170 if ("number" == typeof b) { 36171 if (e) { 36172 return 0; 36173 } 36174 36175 e = !0; 36176 g(1); 36177 return c(0); 36178 } 36179 36180 if (b.tag) { 36181 return e ? 0 : c(b); 36182 } 36183 36184 f = b[0]; 36185 return r(a, d); 36186 }); 36187 return c(h(0, [function (a) { 36188 return e ? 0 : a ? (e = !0, f(1), g(1)) : f(0); 36189 }])); 36190 }; 36191 }; 36192}; 36193 36194var takeWhile$2 = function (a) { 36195 return function (b) { 36196 return function (c) { 36197 let d = !1, 36198 e = y; 36199 r(b, function (b) { 36200 if ("number" == typeof b) { 36201 if (d) { 36202 return 0; 36203 } 36204 36205 d = !0; 36206 return c(0); 36207 } 36208 36209 if (b.tag) { 36210 if (d) { 36211 return 0; 36212 } 36213 36214 if (a(b[0])) { 36215 return c(b); 36216 } 36217 36218 d = !0; 36219 c(0); 36220 return e(1); 36221 } 36222 36223 e = b[0]; 36224 return c(b); 36225 }); 36226 return c(h(0, [function (a) { 36227 return d ? 0 : a ? (d = !0, e(1)) : e(0); 36228 }])); 36229 }; 36230 }; 36231}; 36232 36233var tap$2 = M; 36234 36235var throttle$2 = function (a) { 36236 return function (b) { 36237 return function (c) { 36238 function d() { 36239 void 0 !== g && clearTimeout(x(g)); 36240 return 0; 36241 } 36242 36243 function e() { 36244 g = void 0; 36245 f = !1; 36246 return 0; 36247 } 36248 36249 let f = !1, 36250 g = void 0; 36251 return r(b, function (b) { 36252 if ("number" == typeof b) { 36253 return d(), c(0); 36254 } 36255 36256 if (b.tag) { 36257 if (f) { 36258 return 0; 36259 } 36260 36261 f = !0; 36262 d(); 36263 g = w(setTimeout(e, a(b[0]))); 36264 return c(b); 36265 } 36266 36267 var k = b[0]; 36268 return c(h(0, [function (a) { 36269 return a ? (d(), k(1)) : k(a); 36270 }])); 36271 }); 36272 }; 36273 }; 36274}; 36275 36276var toArray$2 = function (a) { 36277 let b = [], 36278 c = y, 36279 d = !1; 36280 r(a, function (a) { 36281 if ("number" == typeof a) { 36282 return d = !0, 0; 36283 } 36284 36285 if (a.tag) { 36286 return b.push(a[0]), c(0); 36287 } 36288 36289 c = a = a[0]; 36290 return a(0); 36291 }); 36292 d || c(1); 36293 return b; 36294}; 36295 36296var toCallbag$2 = function (a) { 36297 return function (b, c) { 36298 return 0 === b ? r(a, function d(a) { 36299 if ("number" == typeof a) { 36300 return c(2, 0); 36301 } 36302 36303 if (a.tag) { 36304 return c(1, a[0]); 36305 } 36306 36307 var b = a[0]; 36308 return c(0, function (a) { 36309 switch (a) { 36310 case 0: 36311 return 0; 36312 36313 case 1: 36314 return b(0); 36315 36316 case 2: 36317 return b(1); 36318 } 36319 }); 36320 }) : 0; 36321 }; 36322}; 36323 36324var toObservable$2 = function (a) { 36325 var b = { 36326 subscribe: function (b) { 36327 let c = y, 36328 e = !1; 36329 r(a, function (a) { 36330 if ("number" == typeof a) { 36331 return e = !0, b.complete(); 36332 } 36333 36334 if (a.tag) { 36335 if (e) { 36336 return 0; 36337 } 36338 36339 b.next(a[0]); 36340 return c(0); 36341 } 36342 36343 c = a = a[0]; 36344 return a(0); 36345 }); 36346 return { 36347 unsubscribe: function () { 36348 if (e) { 36349 return 0; 36350 } 36351 36352 e = !0; 36353 return c(1); 36354 } 36355 }; 36356 } 36357 }; 36358 36359 b[B] = function () { 36360 return b; 36361 }; 36362 36363 return b; 36364}; 36365 36366var toPromise$2 = function (a) { 36367 return new Promise(function (b) { 36368 return r(D(1)(a), function (a) { 36369 return "number" == typeof a ? 0 : a.tag ? b(a[0]) : a[0](0); 36370 }); 36371 }); 36372}; 36373 36374 36375 36376/***/ }), 36377
36378/***/ "./src/index.js": 36379/*!**********************!*\ 36380 !*** ./src/index.js ***! 36381 \**********************/ 36382/*! no exports provided */ 36383/***/ (function(module, __webpack_exports__, __webpack_require__) { 36384 36385"use strict"; 36386__webpack_require__.r(__webpack_exports__); 36387/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js"); 36388/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 36389/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-dom */ "./node_modules/react-dom/index.js"); 36390/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_1__); 36391/* harmony import */ var prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! prism-react-renderer/themes/dracula */ "./node_modules/prism-react-renderer/themes/dracula/index.js"); 36392/* harmony import */ var spectacle__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! spectacle */ "./node_modules/spectacle/es/index.js"); 36393/* harmony import */ var _theme__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./theme */ "./src/theme.js"); 36394/* harmony import */ var _template__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./template */ "./src/template.js");
36395/* harmony import */ var _assets_blue_hair_headshot_jpg__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../assets/blue_hair_headshot.jpg */ "./assets/blue_hair_headshot.jpg"); 36396/* harmony import */ var _assets_Twitter_Logo_Blue_svg__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../assets/Twitter_Logo_Blue.svg */ "./assets/Twitter_Logo_Blue.svg"); 36397/* harmony import */ var _assets_t_p_favicon_png__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../assets/t&p-favicon.png */ "./assets/t&p-favicon.png"); 36398/* harmony import */ var _assets_living_with_disabilities_legend_jpg__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../assets/living-with-disabilities_legend.jpg */ "./assets/living-with-disabilities_legend.jpg"); 36399/* harmony import */ var _assets_living_with_disabilities_hearing_jpg__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../assets/living-with-disabilities_hearing.jpg */ "./assets/living-with-disabilities_hearing.jpg"); 36400/* harmony import */ var _assets_living_with_disabilities_ambulatory_jpg__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../assets/living-with-disabilities_ambulatory.jpg */ "./assets/living-with-disabilities_ambulatory.jpg"); 36401/* harmony import */ var _assets_living_with_disabilities_vision_jpg__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../assets/living-with-disabilities_vision.jpg */ "./assets/living-with-disabilities_vision.jpg"); 36402/* harmony import */ var _assets_living_with_disabilities_selfcare_jpg__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../assets/living-with-disabilities_selfcare.jpg */ "./assets/living-with-disabilities_selfcare.jpg"); 36403/* harmony import */ var _assets_living_with_disabilities_cognitive_jpg__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../assets/living-with-disabilities_cognitive.jpg */ "./assets/living-with-disabilities_cognitive.jpg"); 36404/* harmony import */ var _assets_living_with_disabilities_independent_jpg__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../assets/living-with-disabilities_independent.jpg */ "./assets/living-with-disabilities_independent.jpg"); 36405/* harmony import */ var _assets_broken_arm_jpg__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../assets/broken_arm.jpg */ "./assets/broken_arm.jpg"); 36406/* harmony import */ var _assets_mouse_cat_jpg__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../assets/mouse_cat.jpg */ "./assets/mouse_cat.jpg"); 36407/* harmony import */ var _assets_sick_at_computer_jpg__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../assets/sick_at_computer.jpg */ "./assets/sick_at_computer.jpg"); 36408/* harmony import */ var _assets_computer_vision_jpg__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../assets/computer_vision.jpg */ "./assets/computer_vision.jpg"); 36409/* harmony import */ var _assets_mobile_screen_glare_jpg__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../assets/mobile_screen_glare.jpg */ "./assets/mobile_screen_glare.jpg"); 36410/* harmony import */ var _assets_video_in_loud_room_png__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../assets/video_in_loud_room.png */ "./assets/video_in_loud_room.png"); 36411/* harmony import */ var _assets_eslint_logo_png__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../assets/eslint_logo.png */ "./assets/eslint_logo.png"); 36412/* harmony import */ var _assets_eslint_terminal_png__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../assets/eslint_terminal.png */ "./assets/eslint_terminal.png"); 36413/* harmony import */ var _assets_IDE_screenshot_png__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../assets/IDE_screenshot.png */ "./assets/IDE_screenshot.png"); 36414/* harmony import */ var _assets_jsx_a11y_rules_documentation_png__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../assets/jsx-a11y_rules_documentation.png */ "./assets/jsx-a11y_rules_documentation.png"); 36415/* harmony import */ var _assets_jsx_a11y_rule_detail_png__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../assets/jsx-a11y_rule_detail.png */ "./assets/jsx-a11y_rule_detail.png"); 36416/* harmony import */ var _assets_deque_logo_png__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../assets/deque_logo.png */ "./assets/deque_logo.png"); 36417/* harmony import */ var _assets_react_axe_screenshot_png__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../assets/react-axe_screenshot.png */ "./assets/react-axe_screenshot.png"); 36418/* harmony import */ var _assets_react_axe_screenshot_expanded_png__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ../assets/react-axe_screenshot_expanded.png */ "./assets/react-axe_screenshot_expanded.png"); 36419/* harmony import */ var _assets_aXe_documentation_1_png__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ../assets/aXe_documentation_1.png */ "./assets/aXe_documentation_1.png"); 36420/* harmony import */ var _assets_aXe_documentation_2_png__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ../assets/aXe_documentation_2.png */ "./assets/aXe_documentation_2.png"); 36421/* harmony import */ var _assets_aXe_documentation_3_png__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ../assets/aXe_documentation_3.png */ "./assets/aXe_documentation_3.png"); 36422/* harmony import */ var _assets_ghost_busters_book_stack_jpg__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ../assets/ghost_busters_book_stack.jpg */ "./assets/ghost_busters_book_stack.jpg"); 36423/* harmony import */ var _assets_storybook_logo_png__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ../assets/storybook_logo.png */ "./assets/storybook_logo.png"); 36424/* harmony import */ var _assets_example_button_args_png__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ../assets/example-button-args.png */ "./assets/example-button-args.png"); 36425/* harmony import */ var _assets_toolbar_walkthrough_optimized_mp4__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ../assets/toolbar-walkthrough-optimized.mp4 */ "./assets/toolbar-walkthrough-optimized.mp4"); 36426/* harmony import */ var _assets_storybook_a11y_addon_png__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ../assets/storybook_a11y_addon.png */ "./assets/storybook_a11y_addon.png"); 36427/* harmony import */ var _assets_jest_logo_png__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ../assets/jest_logo.png */ "./assets/jest_logo.png"); 36428/* harmony import */ var _assets_jest_axe_output_png__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ../assets/jest-axe_output.png */ "./assets/jest-axe_output.png"); 36429/* harmony import */ var _assets_can_telephone_jpg__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ../assets/can_telephone.jpg */ "./assets/can_telephone.jpg"); 36430/* harmony import */ var _assets_selenium_logo_large_png__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ../assets/selenium_logo_large.png */ "./assets/selenium_logo_large.png"); 36431/* harmony import */ var _assets_webdriver_chrome_window_png__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ../assets/webdriver_chrome_window.png */ "./assets/webdriver_chrome_window.png"); 36432/* harmony import */ var _assets_webdriver_results_page1_png__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ../assets/webdriver_results_page1.png */ "./assets/webdriver_results_page1.png"); 36433/* harmony import */ var _assets_webdriver_results_page2_png__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ../assets/webdriver_results_page2.png */ "./assets/webdriver_results_page2.png"); 36434/* harmony import */ var _assets_webdriver_results_page3_png__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ../assets/webdriver_results_page3.png */ "./assets/webdriver_results_page3.png"); 36435/* harmony import */ var _assets_webdriver_results_page4_png__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ../assets/webdriver_results_page4.png */ "./assets/webdriver_results_page4.png"); 36436/* harmony import */ var _assets_cypress_logo_png__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ../assets/cypress-logo.png */ "./assets/cypress-logo.png"); 36437/* harmony import */ var _assets_cypress_app_png__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ../assets/cypress_app.png */ "./assets/cypress_app.png"); 36438/* harmony import */ var _assets_cypress_app_run_test_png__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ../assets/cypress_app_run_test.png */ "./assets/cypress_app_run_test.png"); 36439/* harmony import */ var _assets_cypress_run_results_png__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! ../assets/cypress_run_results.png */ "./assets/cypress_run_results.png"); 36440/* harmony import */ var _assets_cypress_run_results_error_png__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! ../assets/cypress_run_results_error.png */ "./assets/cypress_run_results_error.png"); 36441/* harmony import */ var _assets_cypress_results_in_console_png__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! ../assets/cypress_results_in_console.png */ "./assets/cypress_results_in_console.png"); 36442/* harmony import */ var _assets_out_of_the_box_jpg__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(/*! ../assets/out_of_the_box.jpg */ "./assets/out_of_the_box.jpg"); 36443/* harmony import */ var _assets_github_logo_png__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(/*! ../assets/github_logo.png */ "./assets/github_logo.png"); 36444/* harmony import */ var _assets_GitHub_Action_Results_png__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! ../assets/GitHub_Action_Results.png */ "./assets/GitHub_Action_Results.png"); 36445/* harmony import */ var _assets_GitHub_Action_Results_lint_png__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(/*! ../assets/GitHub_Action_Results_lint.png */ "./assets/GitHub_Action_Results_lint.png"); 36446/* harmony import */ var _assets_gitHub_Action_Results_unittest_png__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(/*! ../assets/gitHub_Action_Results_unittest.png */ "./assets/gitHub_Action_Results_unittest.png"); 36447/* harmony import */ var _assets_Jenkins_logo_png__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(/*! ../assets/Jenkins-logo.png */ "./assets/Jenkins-logo.png"); 36448/* harmony import */ var _assets_netlify_logo_png__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(/*! ../assets/netlify_logo.png */ "./assets/netlify_logo.png"); 36449/* harmony import */ var _assets_travisci_logo_png__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(/*! ../assets/travisci_logo.png */ "./assets/travisci_logo.png"); 36450/* harmony import */ var _assets_circle_logo_horizontal_white_png__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(/*! ../assets/circle-logo-horizontal-white.png */ "./assets/circle-logo-horizontal-white.png"); 36451/* harmony import */ var _assets_lighthouse_logo_png__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(/*! ../assets/lighthouse
36451-logo.png */ "./assets/lighthouse-logo.png"); 36452/* harmony import */ var _assets_pa11y_logo_png__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(/*! ../assets/pa11y_logo.png */ "./assets/pa11y_logo.png"); 36453/* harmony import */ var _assets_Lighthouse_GitHub_App_Install_png__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(/*! ../assets/Lighthouse_GitHub_App_Install.png */ "./assets/Lighthouse_GitHub_App_Install.png"); 36454/* harmony import */ var _assets_Lighthouse_Status_Check_png__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(/*! ../assets/Lighthouse_Status_Check.png */ "./assets/Lighthouse_Status_Check.png"); 36455/* harmony import */ var _assets_Lighthouse_Report_png__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(/*! ../assets/Lighthouse_Report.png */ "./assets/Lighthouse_Report.png"); 36456/* harmony import */ var _assets_Jenkins_Lighthouse_Plugin_png__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(/*! ../assets/Jenkins_Lighthouse_Plugin.png */ "./assets/Jenkins_Lighthouse_Plugin.png"); 36457/* harmony import */ var _assets_pa11y_travis_results_png__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(/*! ../assets/pa11y_travis_results.png */ "./assets/pa11y_travis_results.png"); 36458 36459 36460 36461 36462 36463 36464 36465 36466 36467 36468 36469 36470 36471 36472 36473 36474 36475 36476 36477 36478 36479 36480 36481 36482 36483 36484 36485 36486 36487 36488 36489 36490 36491 36492 36493 36494 36495 36496 36497 36498 36499 36500 36501 36502 36503 36504 36505 36506 36507 36508 36509 36510 36511 36512 36513 36514 36515 36516 36517 36518 36519 36520 36521 36522 36523 36524 36525 36526 36527 36528const Presentation = () => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Deck"], { 36529 theme: _theme__WEBPACK_IMPORTED_MODULE_4__["default"], 36530 template: _template__WEBPACK_IMPORTED_MODULE_5__["default"], 36531 transitionEffect: "fade" 36532}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], { 36533 height: "100%", 36534 flexDirection: "column" 36535}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 36536 color: "primary", 36537 fontSize: "h1" 36538}, "Auditing React Apps for Accessibility"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 36539 fontSize: "h2" 36540}, "Tips and Tricks"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], { 36541 paddingTop: "130px", 36542 width: "100%", 36543 justifyContent: "space-evenly" 36544}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
36544x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 36545 color: "secondary", 36546 fontWeight: "bold", 36547 fontSize: "3em" 36548}, "by Erin Doyle")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 36549 fontFamily: "monospace", 36550 fontSize: "2em" 36551}, "React Summit 2020"))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 36552 marginBottom: "20px" 36553}, "Who am I?"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Grid"], { 36554 gridTemplateColumns: "1fr 2fr", 36555 gridColumnGap: 15 36556}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
36556x"], { 36557 backgroundColor: "primary", 36558 border: "10px inset #FF0080", 36559 overflowY: "hidden" 36560}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 36561 src: _assets_blue_hair_headshot_jpg__WEBPACK_IMPORTED_MODULE_6__["default"], 36562 width: "100%" 36563})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 36564 backgroundColor: "secondary", 36565 overflowY: "hidden" 36566}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["OrderedList"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Appear"], { 36567 elementNum: 0 36568}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], { 36569 paddingBottom: 5, 36570 paddingTop: 4 36571}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], null, "Fullstack Senior Developer at:"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], { 36572 justifyContent: "flex-start", 36573 alightItems: "center" 36574}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
36574x"], { 36575 padding: "0 8px 0 15px", 36576 marginTop: "10px" 36577}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 36578 src: _assets_t_p_favicon_png__WEBPACK_IMPORTED_MODULE_8__["default"] 36579})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Link"], { 36580 href: "theoryandprinciple.com" 36581}, "Theory and Principle"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 36582 fontStyle: "italic", 36583 fontSize: "0.8em" 36584}, "\xA0\xA0(A Legal and Justice Technology design firm)")))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Appear"], { 36585 elementNum: 1 36586}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], { 36587 paddingBottom: 5 36588}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], null, "Egghead.io Instructor"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Link"], { 36589 href: "https://egghead.io/courses/develop-accessible-web-apps-with-react?af=f27y1u" 36590}, "https://egghead.io/courses/develop-accessible-web-apps-with-react"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Appear"], { 36591 elementNum: 2 36592}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], { 36593 paddingBottom: 5 36594}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], null, "Open Source Software contributor"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Link"], { 36595 href: "https://github.com/erin-doyle" 36596}, "https://github.com/erin-doyle"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Appear"], { 36597 elementNum: 3 36598}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], { 36599 justifyContent: "flex-start", 36600 alightItems: "center" 36601}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], null, "Erin Doyle ("), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
36601x"], { 36602 marginTop: "10px", 36603 marginRight: "-10px" 36604}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 36605 src: _assets_Twitter_Logo_Blue_svg__WEBPACK_IMPORTED_MODULE_7__["default"], 36606 height: "70px" 36607})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Link"], { 36608 href: "https://twitter.com/SunshinyDoyle" 36609}, "@SunshinyDoyle)")))))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 36610 width: "75%", 36611 margin: "auto" 36612}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], null, "Why is Accessibility Important?"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], null, "Inclusion"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], { 36613 backgroundColor: "#E5F3F4", 36614 flexDirection: "column", 36615 justifyItems: "center", 36616 flexBasis: "1", 36617 marginLeft: "30px", 36618 marginRight: "30px" 36619}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], { 36620 justifyContent: "center", 36621 alignItems: "flex-end" 36622}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
36622x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 36623 src: _assets_living_with_disabilities_legend_jpg__WEBPACK_IMPORTED_MODULE_9__["default"], 36624 alt: "Living With Disabilities. Number of Americans With a Disability by Age, Sex, and Disability Type" 36625})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 36626 paddingBottom: "3px", 36627 paddingLeft: "10px" 36628}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Link"], { 36629 href: "https://www.census.gov/library/visualizations/2020/comm/living-with-disabilities.html?cid=living-with-disabilities", 36630 target: "_blank", 36631 fontSize: "0.9em" 36632}, "[Source: U.S. Census Bureau]"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Grid"], { 36633 gridTemplateColumns: "1fr 1fr", 36634 gridTemplateRows: "1fr 1fr 1fr", 36635 gridColumnGap: 20 36636}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 36637 src: _assets_living_with_disabilities_hearing_jpg__WEBPACK_IMPORTED_MODULE_10__["default"], 36638 alt: "Number of Americans with Hearing difficulty" 36639})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 36640 src: _assets_living_with_disabilities_ambulatory_jpg__WEBPACK_IMPORTED_MODULE_11__["default"], 36641 alt: "Number of Americans with Ambulatory difficulty" 36642})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 36643 src: _assets_living_with_disabilities_vision_jpg__WEBPACK_IMPORTED_MODULE_12__["default"], 36644 alt: "Number of Americans with Vision difficulty" 36645})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 36646 src: _assets_living_with_disabilities_selfcare_jpg__WEBPACK_IMPORTED_MODULE_13__["default"], 36647 alt: "Number of Americans with Self-Care difficulty" 36648})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 36649 src: _assets_living_with_disabilities_cognitive_jpg__WEBPACK_IMPORTED_MODULE_14__["default"], 36650 alt: "Number of Americans with Cognitive difficulty" 36651})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 36652 src: _assets_living_with_disabilities_independent_jpg__WEBPACK_IMPORTED_MODULE_15__["default"], 36653 alt: "Number of Americans with Independent Living difficulty" 36654})))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 36655 - This infographic comes from the 2018 US Census. 36656 - So this is only a small slice of our global population, 36657 - but it gives us an example that there are millions of people using our web sites that have a disability or difficulty of some sort 36658 - Many of the difficulties listed here make it especially hard for these people to use the web 36659 - And additionally many people may not have a disability to begin with but as they age they develop these difficulties 36660 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 36661 fontSize: "h3", 36662 textAlign: "center" 36663}, "Inclusion - Temporary Limitations"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], { 36664 padding: "20px 40px 0", 36665 height: "75%", 36666 justifyContent: "space-evenly", 36667 alignItems: "center" 36668}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
36668x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 36669 src: _assets_broken_arm_jpg__WEBPACK_IMPORTED_MODULE_16__["default"], 36670 height: "550px" 36671})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 36672 src: _assets_mouse_cat_jpg__WEBPACK_IMPORTED_MODULE_17__["default"], 36673 height: "550px" 36674}))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 36675 - Injuries, broken arm / hand / wrist, recent surgery 36676 - Cat in the way 36677 - preventing people from being able to use a mouse 36678 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 36679 fontSize: "h3", 36680 textAlign: "center" 36681}, "Inclusion - Temporary Limitations"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], { 36682 padding: "20px 40px 0", 36683 height: "75%", 36684 justifyContent: "space-evenly", 36685 alignItems: "center" 36686}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
36686x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 36687 src: _assets_sick_at_computer_jpg__WEBPACK_IMPORTED_MODULE_18__["default"], 36688 height: "350px" 36689})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 36690 src: _assets_computer_vision_jpg__WEBPACK_IMPORTED_MODULE_19__["default"], 36691 height: "350px" 36692}))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 36693 - Sick or on a medication that causes brain fogginess 36694 - can cause cognitive or vision difficulties 36695 - or can make it difficult to make fine motor movements using a mouse 36696 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 36697 fontSize: "h3" 36698}, "Inclusion - Situational or Environmental Limitations"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], { 36699 padding: "20px 20px 0", 36700 height: "70%", 36701 justifyContent: "space-between", 36702 alignItems: "center" 36703}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
36703x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 36704 src: _assets_mobile_screen_glare_jpg__WEBPACK_IMPORTED_MODULE_20__["default"], 36705 height: "350px" 36706})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 36707 src: _assets_video_in_loud_room_png__WEBPACK_IMPORTED_MODULE_21__["default"], 36708 height: "350px" 36709}))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 36710 - Using a mobile device outside where screen glare makes it hard to see 36711 - Trying to watch a video in an area that's too loud to hear it 36712 - or where it needs to be quiet and you can't turn the volume on 36713 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], { 36714 backgroundColor: "tertiary", 36715 backgroundImage: "url(https://static.politico.com/dims4/default/6230068/2147483647/resize/1920x/quality/90/?url=https%3A%2F%2Fstatic.politico.com%2Fb1%2Fd6%2Fb7daf6d24f128a1f5c132c1a23ef%2F20200210-doj-sign-ap-773.jpg)", 36716 backgroundOpacity: 0.6 36717}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 36718 color: "secondary" 36719}, "It's the Law"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], { 36720 margin: "10px", 36721 flexDirection: "row", 36722 justifyContent: "space-evenly", 36723 alignItems: "flex-start" 36724}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Appear"], { 36725 elementNum: 0 36726}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
36726x"], { 36727 backgroundColor: "tertiary", 36728 padding: "10px" 36729}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 36730 paddingBottom: "5px" 36731}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 36732 fontSize: "2em" 36733}, "Americans with Disabilities Act (ADA)")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["UnorderedList"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], null, "Regulated and enforced by the U.S. Department of Justice")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], null, "Prohibits discrimination against individuals with disabilities")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], null, "Applies to:"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["UnorderedList"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], null, "All areas of public life (jobs, schools, transportation)")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], null, "All public and private places that are open to the general public")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], null, "All electronic and information technology")))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], null, "How to comply:"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["UnorderedList"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], null, "Meet the ", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Link"], { 36734 href: "https://www.w3.org/TR/WCAG20" 36735}, "WCAG (Web Content Accessibility Guidelines) 2.0"), " Level AA"))))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Appear"], { 36736 elementNum: 1 36737}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
36737x"], { 36738 backgroundColor: "tertiary", 36739 padding: "10px" 36740}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 36741 paddingBottom: "10px" 36742}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 36743 fontSize: "2em" 36744}, "Section 508 of the Rehabilitation Act of 1973")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["UnorderedList"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], null, "Prohibits discrimination on the basis of disability with regards to Federal Agencies")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], null, "Section 508 adds the inclusion of electronic and information technology")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], null, "Applies to:"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["UnorderedList"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], null, "Programs conducted by Federal Agencies")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], null, "Programs receiving federal financial assistance")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], null, "Both Federal employment and Federal Contractor employment")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], null, "All information and communications technology")))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], null, "How to comply:"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["UnorderedList"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 36745 fontSize: "0.8em" 36746}, "Meet the\xA0", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Link"], { 36747 fontSize: "0.8em", 36748 href: "https://www.access-board.gov/guidelines-and-standards/communications-and-it/about-the-ict-refresh/final-rule/text-of-the-standards-and-guidelines" 36749}, "U.S. Access Board's ICT (Information and Communication Technology) Final Standards and Guidelines"))))))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 36750 - In the United States, we have 2 major laws that require all web sites be accessible to those with disabilities. 36751 - There are many similar laws in other countries around the world. 36752 - As a result of these laws, there are thousands of lawsuits in the US alone each year against company's whose websites have been found to be inaccessible 36753 - Both of these laws encourage using WCAG (or Web Content Accessibility Guidelines) version 2.0 level AA as a guide on how to meet the regulations 36754 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
36754x"], { 36755 width: "75%", 36756 margin: "auto" 36757}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], null, "How do we get there?"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 36758 fontSize: "h2" 36759}, "Auditing Tools and Automation"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 36760 margin: "auto" 36761}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("iframe", { 36762 src: "https://giphy.com/embed/1nR6fu93A17vWZbO9c", 36763 width: "680", 36764 height: "520", 36765 frameBorder: "0", 36766 class: "giphy-embed", 36767 allowFullScreen: true 36768})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 36769 - You don't have to be an expert in accessibility in order to get started in making your apps more accessible. 36770 - There are a number of things that you can add your projects and workflow today to start improving the accessibility of your apps immediately. 36771 - These tools will do a lot of the heavy lifting for you making it very easy to identify issues before they go to production. 36772 - Additionally, taking a test-driven approach to accessibility: 36773 - can really help you incrementally learn more about potential issues and how to resolve them 36774 - most of these tools provide information and educational resources along with any findings that can help you learn more about the issue, 36775 what groups are impacted, how severely they're impacted and how you can fix the issue 36776 - Keep in mind that automated tools can only catch a percentage of _potential_ issues 36777 - Manual testing using the assistive technology devices and strategies used by our users is still crucial in identifying 36778 all accessibility issues or usability problems in your app 36779 - But using tools and automating what we can will give us a big boost 36780 - If we all used these tools and fixed just what they identified alone the web would be massively more accessible to our users 36781 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 36782 fontSize: "h2" 36783}, "Linting"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], { 36784 justifyContent: "center" 36785}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
36785x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 36786 src: _assets_eslint_logo_png__WEBPACK_IMPORTED_MODULE_22__["default"], 36787 width: "300px" 36788})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 36789 fontSize: "3em", 36790 color: "primary" 36791}, "eslint-plugin-jsx-a11y"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 36792 fontSize: "2em" 36793}, "Install"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 36794 marginLeft: "20px", 36795 marginRight: "20px" 36796}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], { 36797 theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"], 36798 language: "shell", 36799 autoFillHeight: true 36800}, ` 36801 # npm 36802 npm install eslint eslint-plugin-jsx-a11y --save-dev 36803 36804 # yarn 36805 yarn add eslint eslint-plugin-jsx-a11y --dev 36806 `)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 36807 - A plugin for ESLint that will run a static analysis check for any potential accessibility issues in your code 36808 - If you're already running ESLint on your code (and you should be) this is a really easy way to start checking your 36809 code for a11y issues 36810 - install 36811 - you'll need to install eslint if you haven't already 36812 - and then install the plugin as development dependency 36813 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 36814 fontSize: "h2" 36815}, "Linting"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], { 36816 justifyContent: "center" 36817}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
36817x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 36818 src: _assets_eslint_logo_png__WEBPACK_IMPORTED_MODULE_22__["default"], 36819 width: "300px" 36820})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 36821 fontSize: "3em", 36822 color: "primary" 36823}, "eslint-plugin-jsx-a11y"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 36824 fontSize: "2em" 36825}, "Enable and Configure"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], { 36826 defaultValue: [], 36827 values: [[1, 4], [8, 10], [5, 7]] 36828}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 36829 position: "relative", 36830 marginLeft: "20px", 36831 marginRight: "20px" 36832}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], { 36833 theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"], 36834 language: "json", 36835 highlightStart: value[0], 36836 highlightEnd: value[1], 36837 fontSize: 18, 36838 autoFillHeight: true 36839}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(` 36840 { 36841 "plugins": [ 36842 "jsx-a11y" 36843 ], 36844 "extends": [ 36845 "plugin:jsx-a11y/recommended" 36846 ], 36847 "rules": { 36848 "jsx-a11y/rule-name": 2 36849 } 36850 } 36851 `)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
36851x"], { 36852 position: "absolute", 36853 bottom: "0rem", 36854 left: "0rem", 36855 right: "0rem", 36856 bg: "black" 36857}, step === 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 36858 fontSize: "1.5rem", 36859 margin: "0rem" 36860}, "Enable"), step === 1 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 36861 fontSize: "1.5rem", 36862 margin: "0rem" 36863}, "Set Specific Rules"), step === 2 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 36864 fontSize: "1.5rem", 36865 margin: "0rem" 36866}, "Use the recommended rule set")))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 36867 - you'll configure this plugin in your .eslintrc, .eslintrc.json file or in an eslintConfig field in package.json 36868 - wherever you currently have eslint configured 36869 - Enable 36870 - (STEP) 36871 - You enable the plugin by adding 'jsx-a11y' to the plugins array 36872 - Configure 36873 - (STEP) 36874 - You can set any specific rules from the supported rules set in the rules object 36875 - (STEP) 36876 - You can also enable all the recommended rules at once by adding to the extends array 36877 - If you want to use the strict rules set instead you'd just replace 'recommended' with 'strict' 36878 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 36879 fontSize: "h2" 36880}, "Linting"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], { 36881 justifyContent: "center" 36882}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
36882x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 36883 src: _assets_eslint_logo_png__WEBPACK_IMPORTED_MODULE_22__["default"], 36884 width: "300px" 36885})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 36886 fontSize: "3em", 36887 color: "primary" 36888}, "eslint-plugin-jsx-a11y"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 36889 fontSize: "2em" 36890}, "Run from the command line"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], { 36891 margin: "10px", 36892 flexDirection: "row", 36893 justifyContent: "space-evenly", 36894 alignItems: "center" 36895}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Appear"], { 36896 elementNum: 0 36897}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
36897x"], { 36898 width: "450px" 36899}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 36900 bg: "black", 36901 padding: "5px", 36902 display: "block" 36903}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 36904 fontFamily: "monospace", 36905 fontSize: "1.5rem", 36906 margin: "0rem" 36907}, "package.json")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], { 36908 theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"], 36909 highlightStart: 5, 36910 highlightEnd: 5, 36911 fontSize: 15, 36912 language: "json", 36913 autoFillHeight: true 36914}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(` 36915 { 36916 "scripts": { 36917 "start": "react-scripts start", 36918 "build": "react-scripts build", 36919 "lint": "eslint src", 36920 "pretest": "npm run lint", 36921 "test": "react-scripts test", 36922 "eject": "react-scripts eject" 36923 } 36924 } 36925 `)))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Appear"], { 36926 elementNum: 1 36927}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
36927x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 36928 src: _assets_eslint_terminal_png__WEBPACK_IMPORTED_MODULE_23__["default"], 36929 width: "800px", 36930 style: { 36931 boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .5), -8px 0px 1.5em rgba(0, 1, 19, .5)' 36932 } 36933})))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 36934 - To run eslint from the command line 36935 - (STEP) 36936 - you can just add a script to your package.json file 36937 - (STEP) 36938 - Then from your terminal run that command 36939 - Let's look at the results: 36940 - It lists all files in which potential accessibility issues were detected 36941 - Under each file it lists the specific errors in that file 36942 - And next to each error is the name of the rule that was violated 36943 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 36944 fontSize: "h2" 36945}, "Linting"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], { 36946 justifyContent: "center" 36947}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
36947x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 36948 src: _assets_eslint_logo_png__WEBPACK_IMPORTED_MODULE_22__["default"], 36949 width: "300px" 36950})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 36951 fontSize: "3em", 36952 color: "primary" 36953}, "eslint-plugin-jsx-a11y"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 36954 fontSize: "2em" 36955}, "IDE Integration"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 36956 marginLeft: "auto", 36957 marginRight: "auto" 36958}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 36959 src: _assets_IDE_screenshot_png__WEBPACK_IMPORTED_MODULE_24__["default"], 36960 style: { 36961 boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .5), -8px 0px 1.5em rgba(0, 1, 19, .5)' 36962 } 36963})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 36964 - Another really cool benefit of using linting to check for accessibility issues is that: 36965 - Most IDEs today have integrations with eslint and can automatically show you any findings 36966 right inline with your code 36967 - This allows you to catch any potential errors immediately as you're writing the code. 36968 - Hovering over the errant code will show you what the finding is. 36969 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
36969x"], { 36970 margin: "20px auto" 36971}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 36972 src: _assets_jsx_a11y_rules_documentation_png__WEBPACK_IMPORTED_MODULE_25__["default"], 36973 height: "650px", 36974 style: { 36975 boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .9), -8px 0px 1.5em rgba(0, 1, 19, .9)' 36976 } 36977})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 36978 - So if you then take one of the errors and look up the rule that was violated you can get more information about it 36979 - The Github repo for the plugin has documentation of all of the rules it supports 36980 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
36980x"], { 36981 margin: "20px auto" 36982}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 36983 src: _assets_jsx_a11y_rule_detail_png__WEBPACK_IMPORTED_MODULE_26__["default"], 36984 height: "650px", 36985 style: { 36986 boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .9), -8px 0px 1.5em rgba(0, 1, 19, .9)' 36987 } 36988})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 36989 - So in the example I just showed you, I had files that were violating the label-has-associated-control rule 36990 - if we look up that rule we can see that: 36991 - For each rule it details 36992 1. what the pass and fail criteria is so you can understand how the rule works 36993 2. suggestions for how to resolve the issue 36994 3. and links to the WCAG guidelines that are specifically violated by this issue 36995 - from there you can learn more about how this specific issue impacts the accessibility for users 36996 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 36997 fontSize: "h2" 36998}, "Runtime"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], { 36999 justifyContent: "center", 37000 paddingBottom: "60px" 37001}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37001x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 37002 src: _assets_deque_logo_png__WEBPACK_IMPORTED_MODULE_27__["default"], 37003 height: "70px" 37004})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 37005 fontSize: "3em", 37006 color: "primary" 37007}, "react-axe"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], { 37008 values: [0, [1, 9], [6, 9]] 37009}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, step === 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 37010 fontSize: "2em" 37011}, "Install"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37011x"], { 37012 marginLeft: "20px", 37013 marginRight: "20px" 37014}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], { 37015 theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"], 37016 language: "shell", 37017 autoFillHeight: true 37018}, ` 37019 # npm 37020 npm install react-axe --save-dev 37021 37022 # yarn 37023 yarn add react-axe --dev 37024 `))), (step === 1 || step === 2) && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 37025 fontSize: "2em" 37026}, "Enable"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 37027 marginLeft: "20px", 37028 marginRight: "20px" 37029}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], { 37030 theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"], 37031 language: "javascript", 37032 highlightStart: value[0], 37033 highlightEnd: value[1], 37034 fontSize: 18, 37035 autoFillHeight: true 37036}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(` 37037 import React from 'react'; 37038 import ReactDOM from 'react-dom'; 37039 37040 import App from './App'; 37041 37042 if (process.env.NODE_ENV !== 'production') { 37043 const axe = require('react-axe'); 37044 axe(React, ReactDOM, 1000); 37045 } 37046 37047 ReactDOM.render(<App/>, document.getElementById('app-root')); 37048 `)))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 37049 - react-axe is an analysis tool for auditing your app for accessibility issues at runtime 37050 - Any findings are output to the Chrome DevTools console 37051 - react-axe layers nicely with the eslint-plugin-jsx-a11y in that 37052 - the eslint plugin can only audit the static code 37053 - but react-axe looks at the rendered DOM 37054 - it can analyze the resulting DOM constantly as components are mounted, unmounted and state changes 37055 - it can test for things like color contrast by being able to analyze the current foreground and 37056 background colors during all states of an element 37057 - (STEP) 37058 - you install it as a development dependency just like the eslint plugin 37059 - (STEP) 37060 - To enable the tool 37061 - (STEP) 37062 - you'll need to initialize it early on in the code that starts up your app, before the call to render the root of your app 37063 - You'll want to conditionally require react-axe so that it's only running in non Production environments as there is a bit of a performance impact when it runs 37064 - To initialize it, you'll just pass the imported axe function the React and ReactDOM objects 37065 - and the third argument is the timing delay in milliseconds that react-axe will wait to start analysis after detecting a component change 37066 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 37067 fontSize: "h2" 37068}, "Runtime"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], { 37069 justifyContent: "center", 37070 paddingBottom: "15px" 37071}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37071x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 37072 src: _assets_deque_logo_png__WEBPACK_IMPORTED_MODULE_27__["default"], 37073 height: "70px" 37074})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 37075 fontSize: "3em", 37076 color: "primary" 37077}, "react-axe"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], { 37078 values: [0] 37079}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 37080 marginLeft: "auto", 37081 marginRight: "auto" 37082}, step === -1 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 37083 src: _assets_react_axe_screenshot_png__WEBPACK_IMPORTED_MODULE_28__["default"], 37084 width: "1300px", 37085 style: { 37086 boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .5), -8px 0px 1.5em rgba(0, 1, 19, .5)' 37087 } 37088}), step === 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 37089 src: _assets_react_axe_screenshot_expanded_png__WEBPACK_IMPORTED_MODULE_29__["default"], 37090 width: "1300px", 37091 style: { 37092 boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .5), -8px 0px 1.5em rgba(0, 1, 19, .5)' 37093 } 37094}))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 37095 - Once installed and enabled react-axe will just run as your app runs, and output any findings to the Chrome DevTools console. 37096 - This is the same page/component that I showed the eslint plugin had reported findings on 37097 - but you can see here that react-axe is able to report even more findings of that same code now that it has the context 37098 of the entire DOM and it's current state 37099 - Looking at what react-axe outputs: 37100 - it lists all found issues in order of severity of the impact to accessibility the problem represents 37101 - if you expand one of the findings 37102 - (STEP) 37103 - It shows the errant source code 37104 - If you hover over the Element listing here it will highlight the element on the page 37105 - And it will list more details about the problem 37106 - Finally, if you click on the link listed with the finding 37107 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], { 37108 values: [0, 1] 37109}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37109x"], { 37110 marginLeft: "auto", 37111 marginRight: "auto", 37112 marginTop: "5px" 37113}, step === -1 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 37114 src: _assets_aXe_documentation_1_png__WEBPACK_IMPORTED_MODULE_30__["default"], 37115 width: "1300px", 37116 style: { 37117 boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .9), -8px 0px 1.5em rgba(0, 1, 19, .9)' 37118 } 37119}), step === 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 37120 src: _assets_aXe_documentation_2_png__WEBPACK_IMPORTED_MODULE_31__["default"], 37121 width: "1300px", 37122 style: { 37123 boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .9), -8px 0px 1.5em rgba(0, 1, 19, .9)' 37124 } 37125}), step === 1 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 37126 src: _assets_aXe_documentation_3_png__WEBPACK_IMPORTED_MODULE_32__["default"], 37127 width: "1300px", 37128 style: { 37129 boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .9), -8px 0px 1.5em rgba(0, 1, 19, .9)' 37130 } 37131}))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 37132 - Just like in the eslint plugin repo, here you can get more information about the issue 37133 - Listed here are examples of how to resolve the issue and make the element in question accessible 37134 - (STEP) 37135 - There is a section showing: 37136 - how severely accessibility is impacted for users 37137 - Which specific disabilities are impacted 37138 - And which WCAG and Section 508 guidelines are violated 37139 - (STEP) 37140 - And there is then further detail explaining in what ways accessibility is impacted by this issue 37141 - which is really helpful in further understanding exactly how our code can impacts people's ability to use our applications 37142 - And finally: 37143 - a list of resources to learn even more through Deque University if desired 37144 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 37145 fontSize: "h2" 37146}, "Component Library"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37146x"], { 37147 marginLeft: "auto", 37148 marginRight: "auto", 37149 paddingTop: "20px" 37150}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 37151 src: _assets_ghost_busters_book_stack_jpg__WEBPACK_IMPORTED_MODULE_33__["default"], 37152 height: "550px" 37153})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 37154 - Building a component library is a great way to gain efficiencies in creating accessible React apps 37155 - You can consolidate all of your UI widget components in one place 37156 - by "UI widget" I mean our basic building block UI elements, things like: 37157 - form elements such as: 37158 - text inputs 37159 - radio buttons 37160 - checkboxes 37161 - text areas 37162 - selects 37163 - and then interactive elements like: 37164 - buttons 37165 - links 37166 - tabs 37167 - nav bars 37168 - etc 37169 - and finally more complex items such as: 37170 - dialogs or modals 37171 - menus 37172 - number steppers 37173 - accordians 37174 - carousels 37175 - and the list goes on 37176 - While of course there are still accessibility considerations once these building blocks are composed on a page, 37177 - but the large bulk of potential accessibility problems lie in how these widgets are individually coded 37178 - If you can write each of these widgets with accessibility in mind then you now have: 37179 - a library of reusable components with accessibility baked in 37180 - you don't need to solve the same problems over and over again for each app you build 37181 - so the amount of issues you'll run into will be massively reduced 37182 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 37183 fontSize: "h2" 37184}, "Component Library"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], { 37185 justifyContent: "center", 37186 paddingBottom: "60px" 37187}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37187x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 37188 src: _assets_storybook_logo_png__WEBPACK_IMPORTED_MODULE_34__["default"], 37189 height: "70px" 37190})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 37191 paddingLeft: "20px" 37192}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 37193 fontSize: "3em", 37194 color: "primary" 37195}, "Storybook"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 37196 marginLeft: "auto", 37197 marginRight: "auto" 37198}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 37199 src: "https://raw.githubusercontent.com/storybookjs/storybook/master/media/storybook-intro.gif" 37200})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 37201 - Storybook is a super useful tool for building a React component library 37202 - It provides UI where you can browse the components in your library 37203 - and while doing so you can: 37204 - view each component in isolation 37205 - and interactively test the component by being able to change the props that are passed in to it 37206 and see how it behaves 37207 - well before having to integrate it into an app 37208 - Being able to develop components in isolation, outside the context of an app allows you to focus on: 37209 - building a component that can be reusable 37210 - and testing various use cases ahead of time without having to worry about application-specific dependencies 37211 - so that when it's time to drop the component into your app it's already been tested on its own 37212 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 37213 fontSize: "h2" 37214}, "Component Library"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], { 37215 justifyContent: "center", 37216 paddingBottom: "60px" 37217}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37217x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 37218 src: _assets_storybook_logo_png__WEBPACK_IMPORTED_MODULE_34__["default"], 37219 height: "70px" 37220})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 37221 paddingLeft: "20px" 37222}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 37223 fontSize: "3em", 37224 color: "primary" 37225}, "Storybook"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], { 37226 values: [0] 37227}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, step === -1 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 37228 fontSize: "2em" 37229}, "Install"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37229x"], { 37230 marginLeft: "20px", 37231 marginRight: "20px" 37232}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], { 37233 theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"], 37234 language: "shell", 37235 autoFillHeight: true 37236}, ` 37237 npx sb init 37238 `))), step === 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 37239 fontSize: "2em" 37240}, "Run"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 37241 marginLeft: "20px", 37242 marginRight: "20px" 37243}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], { 37244 theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"], 37245 language: "shell", 37246 autoFillHeight: true 37247}, ` 37248 npm run storybook 37249 `))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 37250 - Storybook has a CLI making installation simple 37251 - (STEP) 37252 - Run the init command of the Storybook CLI using npx inside an existing project's root directory 37253 - The command will: 37254 - Install required dependencies 37255 - Setup the necessary scripts to run and build Storybook 37256 - Add a default configuration 37257 - Add some boilerplate stories to get you started 37258 - (STEP) 37259 - Once that's done you simply run Storybook with 'npm run storybook' 37260 - and that will start up a development server hosting your Storybook UI 37261 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37261x"], { 37262 marginLeft: "auto", 37263 marginRight: "auto", 37264 marginTop: "-15px" 37265}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 37266 src: _assets_example_button_args_png__WEBPACK_IMPORTED_MODULE_35__["default"], 37267 height: "750px" 37268})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 37269 - As I stated before, Storybook gives you the ability to test changing the props that get passed in to 37270 a component to see how its state changes based on those values 37271 - You can do that on the Controls panel for the component 37272 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37272x"], { 37273 marginLeft: "auto", 37274 marginRight: "auto" 37275}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("video", { 37276 autoPlay: true, 37277 loop: true, 37278 height: "700px" 37279}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("source", { 37280 src: _assets_toolbar_walkthrough_optimized_mp4__WEBPACK_IMPORTED_MODULE_36__["default"], 37281 type: "video/mp4" 37282}))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 37283 - Storybook also provides the ability to test your component using different viewport sizes 37284 and against different background colors 37285 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37285x"], { 37286 marginLeft: "auto", 37287 marginRight: "auto", 37288 marginTop: "-10px" 37289}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 37290 src: _assets_storybook_a11y_addon_png__WEBPACK_IMPORTED_MODULE_37__["default"], 37291 height: "750px" 37292})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 37293 - So here's where Storybook gets even more powerful: 37294 - It supports a plugin system it calls Addons. 37295 - Most notably there is an Addon for auditing the accessibility of components 37296 - Once installed and configured it can audit a component for accessibility issues 37297 and display them in a panel 37298 - The Addon uses the same rules engine that react-axe uses called axe-core 37299 - Here it shows you: 37300 1. Any violations 37301 2. What rules were violated 37302 3. A link to more information 37303 4. And what WCAG and Section 508 Guidelines were violated 37304 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 37305 fontSize: "h2" 37306}, "Unit Testing"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37306x"], { 37307 marginLeft: "auto", 37308 marginRight: "auto" 37309}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("iframe", { 37310 src: "https://giphy.com/embed/l2Je9KLRT3YkN4yas", 37311 width: "730", 37312 height: "616", 37313 frameBorder: "0", 37314 class: "giphy-embed" 37315})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 37316 - We can also add accessibility testing to our unit tests which gives us: 37317 1. an easy way to automate accessibility auditing 37318 2. the flexibility to audit at any level of our code, as low as an element and as high as a component representing an entire page of our app 37319 3. a safety net for any regressions 37320 - For all of the reasons we write unit tests we can apply that to accessibility 37321 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 37322 fontSize: "h2" 37323}, "Unit Testing"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], { 37324 justifyContent: "center", 37325 paddingBottom: "75px" 37326}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37326x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 37327 src: _assets_jest_logo_png__WEBPACK_IMPORTED_MODULE_38__["default"], 37328 height: "75px" 37329})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 37330 fontSize: "3em", 37331 color: "primary" 37332}, "jest-axe"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 37333 fontSize: "2em" 37334}, "Install"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 37335 marginLeft: "20px", 37336 marginRight: "20px" 37337}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], { 37338 theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"], 37339 language: "shell", 37340 autoFillHeight: true 37341}, ` 37342 # npm 37343 npm install jest-axe --save-dev 37344 37345 # yarn 37346 yarn add jest-axe --dev 37347 `)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 37348 - jest-axe is a plugin to jest that also uses the axe-core rules engine 37349 - that's the same rules engine we've already talked about used by react-axe and the Storybook accessibility plugin 37350 - if you're noticing a theme, IMO, the axe-core rules engine is the most trusted source for accessibility auditing 37351 at this time, 37352 - so these tools that are built on top of it share a really thoroughm dependable and consistent foundation 37353 for accessibility auditing 37354 - If you're already using jest for unit testing in your project then all you'll need to do is install jest-axe 37355 to your development dependencies 37356 - Otherwise you'll need to also install jest 37357 - So see the jest docs for more detail on getting jest configured 37358 - But assuming you're already running jest, let's talk about how to add in jest-axe 37359 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 37360 fontSize: "h2" 37361}, "Unit Testing"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], { 37362 justifyContent: "center", 37363 paddingBottom: "75px" 37364}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37364x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 37365 src: _assets_jest_logo_png__WEBPACK_IMPORTED_MODULE_38__["default"], 37366 height: "75px" 37367})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 37368 fontSize: "3em", 37369 color: "primary" 37370}, "jest-axe"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 37371 fontSize: "2em" 37372}, "Writing Tests"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], { 37373 values: [// ReactDOM 37374 [2, 2], [9, 19], [10, 13], [15, 15], [17, 17], // Enzyme 37375 [2, 2], [10, 12], [14, 14], [16, 16], // React Testing Library 37376 [2, 2], [10, 12], [14, 14], [16, 16]] 37377}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37377x"], { 37378 marginLeft: "20px", 37379 marginRight: "20px", 37380 display: step === -1 ? 'none' : 'block' 37381}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 37382 bg: "black", 37383 paddingLeft: "10px", 37384 display: "block" 37385}, [0, 1, 2, 3, 4].includes(step) && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 37386 fontSize: "1.5rem", 37387 margin: "0rem" 37388}, "Rendering with ReactDOM"), [5, 6, 7, 8].includes(step) && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 37389 fontSize: "1.5rem", 37390 margin: "0rem" 37391}, "Using Enzyme"), [9, 10, 11, 12].includes(step) && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 37392 fontSize: "1.5rem", 37393 margin: "0rem" 37394}, "Using React Testing Library")), [0, 1, 2, 3, 4].includes(step) && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], { 37395 theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"], 37396 language: "javascript", 37397 highlightStart: value[0], 37398 highlightEnd: value[1], 37399 fontSize: 15, 37400 autoFillHeight: true 37401}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(` 37402 import React from 'react'; 37403 import ReactDOM from 'react-dom'; 37404 import { axe, toHaveNoViolations } from 'jest-axe'; 37405 37406 import Login from '../Login'; 37407 37408 expect.extend(toHaveNoViolations); 37409 37410 it('should not violate accessibility rules', async () => { 37411 const LoginPage = document.createElement('div'); 37412 ReactDOM.render(( 37413 <Login history={{ push: jest.fn() }} /> 37414 ), LoginPage); 37415 37416 const results = await axe(LoginPage); 37417 37418 expect(results).toHaveNoViolations(); 37419 }); 37420 `)), [5, 6, 7, 8].includes(step) && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], { 37421 theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"], 37422 language: "javascript", 37423 highlightStart: value[0], 37424 highlightEnd: value[1], 37425 fontSize: 15, 37426 autoFillHeight: true 37427}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(` 37428 import React from 'react'; 37429 import { mount } from 'enzyme'; 37430 import { axe, toHaveNoViolations } from 'jest-axe'; 37431 37432 import Login from '../Login'; 37433 37434 expect.extend(toHaveNoViolations); 37435 37436 it('should not violate accessibility rules', async () => { 37437 const LoginPage = mount( 37438 <Login history={{ push: jest.fn() }} /> 37439 ); 37440 37441 const results = await axe(LoginPage.getDOMNode()); 37442 37443 expect(results).toHaveNoViolations(); 37444 }); 37445 `)), [9, 10, 11, 12].includes(step) && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], { 37446 theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"], 37447 language: "javascript", 37448 highlightStart: value[0], 37449 highlightEnd: value[1], 37450 fontSize: 15, 37451 autoFillHeight: true 37452}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(` 37453 import React from 'react'; 37454 import { render } from '@testing-library/react'; 37455 import { axe, toHaveNoViolations } from 'jest-axe'; 37456 37457 import Login from '../Login'; 37458 37459 expect.extend(toHaveNoViolations); 37460 37461 it('should not violate accessibility rules', async () => { 37462 const { container } = render( 37463 <Login history={{ push: jest.fn() }} /> 37464 ); 37465 37466 const results = await axe(container); 37467 37468 expect(results).toHaveNoViolations(); 37469 }); 37470 `)))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 37471 - you can use jest-axe with whatever rendering library you wish as long as you pass the axe function the HTML you wish to test 37472 - (STEP) 37473 - You can use ReactDOM to render the component you wish to test 37474 - (STEP) 37475 - here in this test we're rendering a component representing a Login Page 37476 - this is the same Login Page I've already showed some examples of findings from the eslint plugin and react-axe earlier 37477 - (STEP) 37478 - we're creating a DIV and then calling ReactDOM to render the component we want to test into that DIV 37479 - (STEP) 37480 - then we pass that DIV element which now contains our LoginPage component as rendered HTML to the axe function 37481 - (STEP) 37482 - finally we call expect on the results with the matcher that jest-axe provides us, toHaveNoViolations 37483 - if a violation is found then the test will fail and the violation will be output to the console 37484 - (STEP) 37485 - You can also use Enzyme for rendering the component you wish to test 37486 - (STEP) 37487 - here we use Enzyme's mount function to render our component 37488 - (STEP) 37489 - then we pass the result of Enzyme's getDOMNode function to axe because remember we need to pass the axe function HTML 37490 - (STEP) 37491 - and then the last step is the same no matter what rendering framework we use, we just test that the result from axe has no violations 37492 - (STEP) 37493 - You can even use React-Testing-Library for rendering your test components 37494 - (STEP) 37495 - here we're using React-Testing-Library's render function to render the component 37496 - and destructuring the returned object to get the container 37497 - (STEP) 37498 - then we can pass the container to the axe function 37499 - (STEP) 37500 - and once again expect that there are no violations 37501 37502 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 37503 fontSize: "h2" 37504}, "Unit Testing"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], { 37505 justifyContent: "center", 37506 paddingBottom: "30px" 37507}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37507x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 37508 src: _assets_jest_logo_png__WEBPACK_IMPORTED_MODULE_38__["default"], 37509 height: "75px" 37510})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 37511 fontSize: "3em", 37512 color: "primary" 37513}, "jest-axe"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 37514 marginLeft: "auto", 37515 marginRight: "auto" 37516}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 37517 src: _assets_jest_axe_output_png__WEBPACK_IMPORTED_MODULE_39__["default"], 37518 style: { 37519 boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .5), -8px 0px 1.5em rgba(0, 1, 19, .5)' 37520 } 37521})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 37522 - Here's what the output would look like for that test we just saw the examples of 37523 - If a component being tested has a violation, jest will output that the test failed 37524 - jest-axe adds to the output for the failed test: 37525 1. the HTML element where the violation occurred 37526 2. what the violation was 37527 3. a list of suggestions for fixing the issue 37528 4. And finally a link to more information about the rule that was violated 37529 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 37530 fontSize: "h2" 37531}, "End-to-End Testing"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37531x"], { 37532 margin: "auto" 37533}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 37534 src: _assets_can_telephone_jpg__WEBPACK_IMPORTED_MODULE_40__["default"], 37535 height: "750px" 37536})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 37537 - While a tool like react-axe can audit a page for accessibility at runtime you have to be there 37538 manually testing your app to trigger the auditing and watching the DevTools Console for findings as you go 37539 - This is great while you're developing but gets tedious as a method for repeatedly testing entire pages of your app at a time 37540 - Using End-to-End testing gives us the ability to automate the auditing of our rendered pages 37541 - With End-to-End testing you can program interactions with the UI to fully exercise all possible states of your page's UI widgets 37542 and uncover any accessibility issues on the page 37543 - Just like with unit testing, this provides a great way to build a safety net to catch any regressions as you continue to develop 37544 - For End-to-End Testing we have some options - most notably we can use the axe-core rules engine with both: 37545 - Selenium WebDriver 37546 - and Cypress 37547 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 37548 fontSize: "h2" 37549}, "End-to-End Testing"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], { 37550 justifyContent: "center", 37551 paddingBottom: "75px" 37552}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37552x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 37553 src: _assets_selenium_logo_large_png__WEBPACK_IMPORTED_MODULE_41__["default"], 37554 height: "75px" 37555})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 37556 paddingLeft: "15px" 37557}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 37558 fontSize: "3em", 37559 color: "primary" 37560}, "axe-webdriverjs"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], { 37561 values: [0, 1] 37562}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, step === 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 37563 fontSize: "2em" 37564}, "Install Selenium WebDriver"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37564x"], { 37565 marginLeft: "20px", 37566 marginRight: "20px" 37567}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], { 37568 theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"], 37569 language: "shell", 37570 autoFillHeight: true 37571}, ` 37572 # npm 37573 npm install selenium-webdriver --no-save 37574 37575 # yarn 37576 yarn add selenium-webdriver --dev 37577 `)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 37578 padding: "50px 20px" 37579}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 37580 color: "secondary" 37581}, "For more info on installing Selenium WebDriver and browser drivers see: ", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Link"], { 37582 href: "https://www.selenium.dev/documentation/en/webdriver/driver_requirements/" 37583}, "https://www.selenium.dev/documentation/en/webdriver/driver_requirements/")))), step === 1 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 37584 fontSize: "2em" 37585}, "Install axe-webdriverjs"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37585x"], { 37586 marginLeft: "20px", 37587 marginRight: "20px" 37588}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], { 37589 theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"], 37590 language: "shell", 37591 autoFillHeight: true 37592}, ` 37593 # npm 37594 npm install axe-webdriverjs --save-dev 37595 37596 # yarn 37597 yarn add axe-webdriverjs --dev 37598 `))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 37599 - Starting with Selenium WebDriver, there is a library available 37600 - axe-webdriverjs 37601 - that provides WebDriver the ability to analyze the current page for accessibility issues 37602 - (STEP) 37603 - Start by installing Selenium WebDriver if you haven't already 37604 - and see the link listed here for further details on setting up WebDriver and links to download browser drivers 37605 - (STEP) 37606 - Then install the library axe-webdriverjs to your development dependencies 37607 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 37608 fontSize: "h2" 37609}, "End-to-End Testing"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], { 37610 justifyContent: "center", 37611 paddingBottom: "75px" 37612}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37612x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 37613 src: _assets_selenium_logo_large_png__WEBPACK_IMPORTED_MODULE_41__["default"], 37614 height: "75px" 37615})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 37616 paddingLeft: "15px" 37617}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 37618 fontSize: "3em", 37619 color: "primary" 37620}, "axe-webdriverjs"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 37621 fontSize: "2em" 37622}, "Writing Tests"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], { 37623 defaultValue: [], 37624 values: [[1, 17], [1, 2], [4, 6], [9, 9], [10, 16]] 37625}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37625x"], { 37626 marginLeft: "20px", 37627 marginRight: "20px", 37628 display: step === -1 ? 'none' : 'block' 37629}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 37630 bg: "black", 37631 paddingLeft: "10px", 37632 display: "block" 37633}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 37634 fontFamily: "monospace", 37635 fontSize: "1rem", 37636 margin: "0rem" 37637}, "e2e-tests.js")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], { 37638 theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"], 37639 language: "javascript", 37640 highlightStart: value[0], 37641 highlightEnd: value[1], 37642 fontSize: 15, 37643 autoFillHeight: true 37644}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(` 37645 const WebDriver = require('selenium-webdriver'); 37646 const AxeBuilder = require('axe-webdriverjs'); 37647 37648 const driver = new WebDriver.Builder() 37649 .forBrowser('chrome') 37650 .build(); 37651 37652 driver 37653 .get('localhost:3000/login') 37654 .then(function() { 37655 AxeBuilder(driver).analyze(function(err, results) { 37656 if (err) { 37657 // Handle error somehow 37658 } 37659 console.log(results); 37660 }); 37661 }); 37662 `)))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 37663 - Selenium WebDriver is run via a script. 37664 - (STEP) 37665 - here is a simple example test script 37666 - (STEP) 37667 - we only need to require: 37668 - Selenium WebDriver 37669 - and the axe-webdriverjs library 37670 - (STEP) 37671 - We build a WebDriver instance for Chrome in this example 37672 - (STEP) 37673 - Then we navigate to the page we want to test 37674 - in this case it's the same Login Page that we've used for a number of the other tools we've looked at so far 37675 - (STEP) 37676 - Once the page has loaded we call the AxeBuilder we imported from the axe-webdriverjs library 37677 - it requires we pass it the WebDriver instance we created initially 37678 - then we can finally call the analyze function which will audit the current page against the axe-core rules set 37679 and pass the results as the second argument to a provided callback function 37680 - All we're doing in this callback function is logging out the results object so we can see what that looks like 37681 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 37682 fontSize: "h2" 37683}, "End-to-End Testing"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], { 37684 justifyContent: "center", 37685 paddingBottom: "75px" 37686}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37686x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 37687 src: _assets_selenium_logo_large_png__WEBPACK_IMPORTED_MODULE_41__["default"], 37688 height: "75px" 37689})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 37690 paddingLeft: "15px" 37691}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 37692 fontSize: "3em", 37693 color: "primary" 37694}, "axe-webdriverjs"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 37695 fontSize: "2em" 37696}, "Running"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 37697 marginLeft: "20px", 37698 marginRight: "20px" 37699}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], { 37700 theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"], 37701 language: "shell", 37702 autoFillHeight: true 37703}, ` 37704 node e2e-tests 37705 `)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 37706 - To run the test script we need to run it with Node 37707 - and if you noticed in the previous slide, for this example my script was named e2e-tests.js 37708 - so that's the file we're running here with Node 37709 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], { 37710 values: [0, 1, 2, 3] 37711}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], { 37712 justifyContent: "space-evenly", 37713 alignItems: "center" 37714}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37714x"], { 37715 marginLeft: "auto", 37716 marginRight: "auto", 37717 paddingTop: "75px" 37718}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 37719 src: _assets_webdriver_chrome_window_png__WEBPACK_IMPORTED_MODULE_42__["default"], 37720 width: "500px", 37721 style: { 37722 boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .5), -8px 0px 1.5em rgba(0, 1, 19, .5)' 37723 } 37724})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 37725 paddingTop: "20px" 37726}, step === 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 37727 src: _assets_webdriver_results_page1_png__WEBPACK_IMPORTED_MODULE_43__["default"], 37728 height: "650px", 37729 style: { 37730 boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .5), -8px 0px 1.5em rgba(0, 1, 19, .5)' 37731 } 37732}), step === 1 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 37733 src: _assets_webdriver_results_page2_png__WEBPACK_IMPORTED_MODULE_44__["default"], 37734 height: "650px", 37735 style: { 37736 boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .5), -8px 0px 1.5em rgba(0, 1, 19, .5)' 37737 } 37738}), step === 2 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 37739 src: _assets_webdriver_results_page3_png__WEBPACK_IMPORTED_MODULE_45__["default"], 37740 height: "650px", 37741 style: { 37742 boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .5), -8px 0px 1.5em rgba(0, 1, 19, .5)' 37743 } 37744}), step === 3 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 37745 src: _assets_webdriver_results_page4_png__WEBPACK_IMPORTED_MODULE_46__["default"], 37746 height: "650px", 37747 style: { 37748 boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .5), -8px 0px 1.5em rgba(0, 1, 19, .5)' 37749 } 37750})))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 37751 - once the script starts it will automatically open up a window of the browser that we specified in the test script 37752 - to the url the script specified 37753 - after axe-webdriverjs's analyze function is finished and returns its results to the callback, 37754 - (STEP) 37755 - the results object will be logged to the console as we specified in the test script 37756 - the first property in the results object is the inapplicable items 37757 - these are all of the rules that were found not to apply to the current page 37758 - there will likely be A LOT of these 37759 - (STEP) 37760 - keep scrolling and eventually you'll get to the incomplete items which presumably would include any rules whose checks weren't able to be completed 37761 - and then there is a passes property listing all of the rules that did apply to the page and passed 37762 - (STEP) 37763 - then further down you'll get to the details of the testEngine, testEnvironment, testRunner, timeStamp, toolOptions and the url being tested 37764 - (STEP) 37765 - and then finally is the violations property containing any rules that the page violated 37766 - each violation lists: 37767 - the description and detail about the rule 37768 - a URL where more information is available 37769 - the id of the rule 37770 - how severe the violation impacts accessibility 37771 - references to the Nodes and Tags that violate the rule 37772 - (since these results are just simply being output using console.log we only see [Array] rather than a more useful representation of the value) 37773 - one could certainly customize how the results are reported using this results object to be more tailored to their needs 37774 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 37775 fontSize: "h2" 37776}, "End-to-End Testing"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], { 37777 justifyContent: "center", 37778 alignItems: "center" 37779}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37779x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 37780 src: _assets_cypress_logo_png__WEBPACK_IMPORTED_MODULE_47__["default"], 37781 height: "70px" 37782})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 37783 paddingLeft: "30px", 37784 paddingBottom: "15px" 37785}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 37786 fontSize: "3em", 37787 color: "primary" 37788}, "cypress-axe"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], { 37789 values: [0, 1, 2, 3] 37790}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, step === 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 37791 paddingTop: "75px" 37792}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 37793 fontSize: "2em" 37794}, "Install Cypress"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37794x"], { 37795 marginLeft: "20px", 37796 marginRight: "20px" 37797}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], { 37798 theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"], 37799 language: "shell", 37800 autoFillHeight: true 37801}, ` 37802 # npm 37803 npm install cypress --save-dev 37804 37805 # yarn 37806 yarn add cypress --dev 37807 `))), step === 1 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 37808 paddingTop: "75px" 37809}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 37810 fontSize: "2em" 37811}, "Install cypress-axe"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37811x"], { 37812 marginLeft: "20px", 37813 marginRight: "20px" 37814}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], { 37815 theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"], 37816 language: "shell", 37817 autoFillHeight: true 37818}, ` 37819 # npm 37820 npm install cypress-axe --save-dev 37821 37822 # yarn 37823 yarn add cypress-axe --dev 37824 `))), step === 2 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], { 37825 margin: "10px", 37826 flexDirection: "row", 37827 justifyContent: "space-evenly", 37828 alignItems: "center" 37829}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37829x"], { 37830 width: "475px" 37831}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 37832 bg: "black", 37833 padding: "5px", 37834 display: "block" 37835}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 37836 fontFamily: "monospace", 37837 fontSize: "1.5rem", 37838 margin: "0rem" 37839}, "package.json")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], { 37840 theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"], 37841 highlightStart: 8, 37842 highlightEnd: 8, 37843 fontSize: 15, 37844 language: "json", 37845 autoFillHeight: true 37846}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(` 37847 { 37848 "scripts": { 37849 "start": "react-scripts start", 37850 "build": "react-scripts build", 37851 "lint": "eslint src", 37852 "pretest": "npm run lint", 37853 "test": "react-scripts test", 37854 "cypress:open": "cypress open", 37855 "eject": "react-scripts eject", 37856 } 37857 } 37858 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37858x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 37859 src: _assets_cypress_app_png__WEBPACK_IMPORTED_MODULE_48__["default"], 37860 height: "500px", 37861 style: { 37862 boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .5), -8px 0px 1.5em rgba(0, 1, 19, .5)' 37863 } 37864})))), step === 3 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 37865 fontSize: "2em" 37866}, "Add cypress-axe Commands"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 37867 marginLeft: "auto", 37868 marginRight: "auto", 37869 width: "700px", 37870 paddingTop: "10px" 37871}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 37872 bg: "black", 37873 paddingLeft: "10px", 37874 display: "block" 37875}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 37876 fontFamily: "monospace", 37877 fontSize: "1rem", 37878 margin: "0rem" 37879}, "cypress/support/index.js")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], { 37880 theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"], 37881 language: "javascript", 37882 highlightStart: 22, 37883 highlightEnd: 22, 37884 fontSize: "15px", 37885 autoFillHeight: true 37886}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(` 37887 // *********************************************************** 37888 // This example support/index.js is processed and 37889 // loaded automatically before your test files. 37890 // 37891 // This is a great place to put global configuration and 37892 // behavior that modifies Cypress. 37893 // 37894 // You can change the location of this file or turn off 37895 // automatically serving support files with the 37896 // 'supportFile' configuration option. 37897 // 37898 // You can read more here: 37899 // https://on.cypress.io/configuration 37900 // *********************************************************** 37901 37902 // Import commands.js using ES2015 syntax: 37903 import './commands' 37904 37905 // Alternatively you can use CommonJS syntax: 37906 // require('./commands') 37907 37908 import 'cypress-axe'; 37909 `)))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 37910 - Continuing on to Cypress, cypress-axe is a package that adds commands to Cypress for testing the pages of your application 37911 for accessibility issues using the axe-core rules engine 37912 - (STEP) 37913 - Start by installing Cypress if you haven't already 37914 - (STEP) 37915 - Then install the cypress-axe package 37916 - (STEP) 37917 - If this is your first time setting up Cypress, you'll want to add the command to open the Cypress app 37918 to your npm scripts 37919 - once you run that command, the Cypress app will automatically open in a browser window 37920 - and upon running the first time will install some directory scaffolding with some example files into your project 37921 - (STEP) 37922 - To continue setting up cypress-axe you'll need to open up the index.js file located in the cypress/support directory 37923 - add to it an import of cypress-axe 37924 - this makes the additional commands provided by cypress-axe available to cypress 37925 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 37926 fontSize: "h2" 37927}, "End-to-End Testing"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], { 37928 justifyContent: "center", 37929 alignItems: "center", 37930 paddingBottom: "75px" 37931}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37931x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 37932 src: _assets_cypress_logo_png__WEBPACK_IMPORTED_MODULE_47__["default"], 37933 height: "70px" 37934})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 37935 paddingLeft: "30px", 37936 paddingBottom: "15px" 37937}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 37938 fontSize: "3em", 37939 color: "primary" 37940}, "cypress-axe"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 37941 fontSize: "2em" 37942}, "Writing Tests"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], { 37943 defaultValue: [], 37944 values: [[2, 2], [3, 4], [6, 8]] 37945}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37945x"], { 37946 marginLeft: "20px", 37947 marginRight: "20px" 37948}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], { 37949 theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"], 37950 language: "javascript", 37951 highlightStart: value[0], 37952 highlightEnd: value[1], 37953 autoFillHeight: true 37954}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(` 37955 beforeEach(() => { 37956 cy.visit('http://localhost:3000/login'); 37957 cy.injectAxe(); 37958 }); 37959 37960 it('should not violate accessibility rules', () => { 37961 cy.checkA11y(); 37962 }); 37963 `)))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 37964 - So now let's look at an example test 37965 - (STEP) 37966 - First we call the command to visit the page we want to test 37967 - (STEP) 37968 - That should be followed immediately by the command to injectAxe 37969 - this injects the axe-core runtime into the page so it will be available to use for auditing 37970 - (STEP) 37971 - Then we can proceed to check the page for accessibility issues by calling the checkA11y command 37972 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], { 37973 values: [0, 1, 2, 3] 37974}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, step === -1 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 37975 fontSize: "h2" 37976}, "End-to-End Testing"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], { 37977 justifyContent: "center", 37978 alignItems: "center", 37979 paddingBottom: "75px" 37980}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
37980x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 37981 src: _assets_cypress_logo_png__WEBPACK_IMPORTED_MODULE_47__["default"], 37982 height: "70px" 37983})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 37984 paddingLeft: "30px", 37985 paddingBottom: "15px" 37986}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 37987 fontSize: "3em", 37988 color: "primary" 37989}, "cypress-axe"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 37990 fontSize: "2em" 37991}, "Running Tests")), step === 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 37992 marginLeft: "auto", 37993 marginRight: "auto", 37994 marginTop: "50px" 37995}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 37996 src: _assets_cypress_app_run_test_png__WEBPACK_IMPORTED_MODULE_49__["default"], 37997 style: { 37998 boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .9), -8px 0px 1.5em rgba(0, 1, 19, .9)' 37999 } 38000})), step === 1 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38000x"], { 38001 marginLeft: "auto", 38002 marginRight: "auto", 38003 marginTop: "20px" 38004}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 38005 src: _assets_cypress_run_results_png__WEBPACK_IMPORTED_MODULE_50__["default"], 38006 height: "650px", 38007 style: { 38008 boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .9), -8px 0px 1.5em rgba(0, 1, 19, .9)' 38009 } 38010})), step === 2 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 38011 marginLeft: "auto", 38012 marginRight: "auto", 38013 marginTop: "20px" 38014}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 38015 src: _assets_cypress_run_results_error_png__WEBPACK_IMPORTED_MODULE_51__["default"], 38016 height: "650px", 38017 style: { 38018 boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .9), -8px 0px 1.5em rgba(0, 1, 19, .9)' 38019 } 38020})), step === 3 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38020x"], { 38021 marginLeft: "auto", 38022 marginRight: "auto", 38023 marginTop: "20px" 38024}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 38025 src: _assets_cypress_results_in_console_png__WEBPACK_IMPORTED_MODULE_52__["default"], 38026 height: "650px", 38027 style: { 38028 boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .9), -8px 0px 1.5em rgba(0, 1, 19, .9)' 38029 } 38030})))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 38031 - To run the tests 38032 - (STEP) 38033 - Go to the Cypress App and find the link for the test you wish to run 38034 - Here is the test we just looked at in the previous slide 38035 - (STEP) 38036 - Clicking on the link will open a new window in the selected browser in which to test 38037 - Shown on the right will be the page under test 38038 - and on the left are the test results 38039 - Here you can see there were 5 accessibility violations detected 38040 - and each of them is listed 38041 - (STEP) 38042 - by clicking on one of the accessibility errors 38043 - it will highlight the elements on the page that contain the specific error 38044 - additionally it will log to the Dev Console more details about the error 38045 - (STEP) 38046 - by opening up the DevTools Console we do indeed see more details logged about that error 38047 - Because cypress-axe is using axe-core just like the axe-webdriverjs library we just talked about 38048 you'll notice all of the data points listed here are the same 38049 - So really this gives us the flexibility to choose which End-to-End testing framework we prefer to work with 38050 without being restricted by our ability to test for accessibility. Both of them give us the same results. 38051 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 38052 fontSize: "h2" 38053}, "Continuous Integration"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38053x"], { 38054 marginLeft: "auto", 38055 marginRight: "auto" 38056}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement("iframe", { 38057 src: "https://giphy.com/embed/l2Je3fIeeXyYEM85G", 38058 width: "750", 38059 height: "634", 38060 frameBorder: "0", 38061 class: "giphy-embed" 38062})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 38063 - Continuous Integration is really where a lot of these tools become the most powerful in helping us efficiently 38064 achieve and maintain the accessibility of our applications. 38065 - We want to employ the tools I've covered so far all along the way as we're developing 38066 so that our code is accessible from the start. 38067 - But continuous integration is where we can really implement that safety net to ensure that our application 38068 remains accessible. 38069 - With every code change we make we introduce the potential to break accessibility. 38070 - The bigger our team is or the more rapidly we develop, the easier it is for a code change to slip through the net. 38071 - So employing some form of accessibility auditing in our continuous integration system can go a long way in 38072 helping with that. 38073 - Additionally, it can be used as a gate to prevent code changes that break accessibility from being able to be merged. 38074 - Let me clear, again, as I stated at the very beginning, automated auditing tools will only catch a percentage of 38075 potential accessibility issues, it is no replacement for manual testing which we need to do fairly regularly. 38076 - But being able to automate the auditing will still give us an immense benefit and provide an early warning system 38077 that can be run much more frequently than it's practical to perform manual testing. 38078 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 38079 fontSize: "h2" 38080}, "Continuous Integration"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 38081 fontSize: "3em", 38082 color: "primary" 38083}, "Out of the Box"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], { 38084 justifyContent: "space-evenly", 38085 alightItems: "center", 38086 paddingTop: "50px" 38087}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38087x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["UnorderedList"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Appear"], { 38088 elementNum: 0 38089}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], { 38090 padding: "20px" 38091}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 38092 fontSize: "1.2em" 38093}, "Linting with eslint-plugin-jsx-a11y"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Appear"], { 38094 elementNum: 1 38095}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], { 38096 padding: "20px" 38097}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 38098 fontSize: "1.2em" 38099}, "Unit Testing with jest-axe"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Appear"], { 38100 elementNum: 2 38101}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], { 38102 padding: "20px" 38103}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 38104 fontSize: "1.2em" 38105}, "End-to-End Testing with:"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["UnorderedList"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], null, "axe-webdriverjs")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], null, "cypress-axe"))))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38105x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 38106 src: _assets_out_of_the_box_jpg__WEBPACK_IMPORTED_MODULE_53__["default"], 38107 width: "600px" 38108}))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 38109 - Out of the box with a Continuous Integration system of your choice you have the ability to add 38110 any or all of the following to your pipeline: 38111 - (STEP) 38112 1. linting with the eslint-plugin-jsx-a11y plugin 38113 - (STEP) 38114 2. running the unit tests we've written using jest-axe 38115 - (STEP) 38116 3. running the end-to-end tests we've written using either: 38117 - Selenium WebDriver with the axe-webdriverjs library 38118 - or Cypress with cypress-axe 38119 - I'll show you quick example of how to run these tools with one of the CI systems 38120 - To keep things brief I won't show the example in all of them but the concepts are the same so you should be able to 38121 recreate in whatever your CI system of choice is 38122 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 38123 fontSize: "h2" 38124}, "Continuous Integration"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], { 38125 justifyContent: "center", 38126 alignItems: "center", 38127 paddingBottom: "20px" 38128}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38128x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 38129 src: _assets_github_logo_png__WEBPACK_IMPORTED_MODULE_54__["default"], 38130 height: "75px" 38131})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 38132 paddingLeft: "30px" 38133}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 38134 fontSize: "3em", 38135 color: "primary" 38136}, "Actions CI"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], { 38137 defaultValue: [], 38138 values: [[3, 7, 1, 18], // lint job 38139 [10, 19, 5, 5], [10, 19, 12, 17], // test job 38140 [21, 30, 7, 7]] 38141}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], { 38142 justifyContent: "space-evenly", 38143 alignItems: "center" 38144}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38144x"], { 38145 width: "500px", 38146 height: "500px" 38147}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 38148 bg: "black", 38149 padding: "5px", 38150 display: "block" 38151}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 38152 fontFamily: "monospace", 38153 fontSize: "1.2rem", 38154 margin: "0rem" 38155}, ".github/workflows/ci.yml")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], { 38156 theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"], 38157 highlightStart: value[0], 38158 highlightEnd: value[1], 38159 fontSize: "13", 38160 language: "yml", 38161 autoFillHeight: true 38162}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(` 38163 name: CI 38164 38165 on: 38166 push: 38167 branches: [ master ] 38168 pull_request: 38169 branches: [ master ] 38170 38171 jobs: 38172 lint: 38173 runs-on: ubuntu-latest 38174 name: Run eslint 38175 steps: 38176 - uses: actions/checkout@v1 38177 - uses: actions/setup-node@v1 38178 with: 38179 node-version: '14.x' 38180 - run: npm ci 38181 - run: npm run lint 38182 38183 unit-test: 38184 runs-on: ubuntu-latest 38185 name: Run unit tests 38186 steps: 38187 - uses: actions/checkout@v1 38188 - uses: actions/setup-node@v1 38189 with: 38190 node-version: '14.x' 38191 - run: npm ci 38192 - run: npm run test-only 38193 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38193x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 38194 bg: "black", 38195 padding: "5px", 38196 display: "block" 38197}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 38198 fontFamily: "monospace", 38199 fontSize: "1.2rem", 38200 margin: "0rem" 38201}, "package.json")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], { 38202 theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"], 38203 highlightStart: value[2], 38204 highlightEnd: value[3], 38205 fontSize: "13", 38206 language: "json", 38207 autoFillHeight: true 38208}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(` 38209 { 38210 "scripts": { 38211 "start": "react-scripts start", 38212 "build": "react-scripts build", 38213 "lint": "eslint src", 38214 "pretest": "npm run lint", 38215 "test-only": "react-scripts test", 38216 "test": "npm run test-only", 38217 "cypress:open": "cypress open", 38218 "eject": "react-scripts eject" 38219 }, 38220 "eslintConfig": { 38221 "extends": [ 38222 "react-app", 38223 "plugin:jsx-a11y/recommended" 38224 ] 38225 }, 38226 } 38227 `))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 38228 - For this example I'll be showing a GitHub Action 38229 - This is a .yml file stored at .github/workflows at the root of my project 38230 - (STEP) 38231 - this workflow will be trigger when any pushes or PRs are made to the master branch 38232 - I've separated the workflow out into 2 jobs which will run in parallel 38233 - (STEP) 38234 - there's the 'lint' job which will run the 'lint' npm script I defined in my package.json file 38235 - this runs eslint which will include the eslint-plugin-jsx-a11y 38236 - (STEP) 38237 - since I have that installed and configured in my eslint config 38238 - (STEP) 38239 - the second job is the 'unit-test' job 38240 - this will run the 'test-only' npm script I defined in my package.json file 38241 - this runs jest which will auto detect my jest test files and run the tests I've written using jest-axe 38242 - The reason I have these broken up into 2 separate jobs is that I want to see any failures separately for each 38243 - If these tasks were run linearly then if one fails the job will exit before executing the following job 38244 - but I want to know if I have failures in both tasks rather than having to fix all failures in one and push changes before 38245 I can learn about whether I have failures in the next task 38246 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], { 38247 defaultValue: [], 38248 values: [0, 1] 38249}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38249x"], { 38250 marginLeft: "auto", 38251 marginRight: "auto", 38252 paddingTop: "20px" 38253}, step === -1 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 38254 src: _assets_GitHub_Action_Results_png__WEBPACK_IMPORTED_MODULE_55__["default"], 38255 height: "650px", 38256 style: { 38257 boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .9), -8px 0px 1.5em rgba(0, 1, 19, .9)' 38258 } 38259}), step === 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 38260 src: _assets_GitHub_Action_Results_lint_png__WEBPACK_IMPORTED_MODULE_56__["default"], 38261 height: "650px", 38262 style: { 38263 boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .9), -8px 0px 1.5em rgba(0, 1, 19, .9)' 38264 } 38265}), step === 1 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 38266 src: _assets_gitHub_Action_Results_unittest_png__WEBPACK_IMPORTED_MODULE_57__["default"], 38267 height: "650px", 38268 style: { 38269 boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .9), -8px 0px 1.5em rgba(0, 1, 19, .9)' 38270 } 38271}))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 38272 - Here's what the results look like when this workflow runs on the project we've been testing on throughout this presentation 38273 - It shows that both the lint and unit test running jobs failed (as I expected them to) 38274 - If we click on the failed "Run eslint" job 38275 - (STEP) 38276 - We see the output from the 'npm run lint' script which matches what we saw when I demonstrated using the eslint-plugin-jsx-a11y plugin earlier 38277 - If we click on the failed "Run unit tests" job 38278 - (STEP) 38279 - We see the output from the 'npm run test-only' script which matches what we saw when I demonstrated using jest-axe earlier 38280 - So we can see here how we're able to produce the same results we would get if running these tools locally but we can leverage our CI system to automate them 38281 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 38282 fontSize: "h2" 38283}, "Continuous Integration"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38283x"], { 38284 margin: "50px", 38285 border: "1px solid #FF0080" 38286}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Grid"], { 38287 gridTemplateColumns: "1fr 1fr 1fr", 38288 gridColumnGap: "70px", 38289 height: "550px" 38290}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], { 38291 flexDirection: "column", 38292 alignItems: "center", 38293 justifyContent: "space-evenly" 38294}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 38295 src: _assets_github_logo_png__WEBPACK_IMPORTED_MODULE_54__["default"], 38296 height: "75px" 38297})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 38298 src: _assets_Jenkins_logo_png__WEBPACK_IMPORTED_MODULE_58__["default"], 38299 height: "75px" 38300})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38300x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 38301 src: _assets_netlify_logo_png__WEBPACK_IMPORTED_MODULE_59__["default"], 38302 height: "75px" 38303}))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], { 38304 flexDirection: "column", 38305 alignItems: "center", 38306 justifyContent: "space-evenly" 38307}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 38308 src: _assets_travisci_logo_png__WEBPACK_IMPORTED_MODULE_60__["default"], 38309 height: "75px" 38310})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 38311 src: _assets_circle_logo_horizontal_white_png__WEBPACK_IMPORTED_MODULE_61__["default"], 38312 height: "75px" 38313}))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], { 38314 flexDirection: "column", 38315 alignItems: "center", 38316 justifyContent: "space-evenly" 38317}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38317x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 38318 src: _assets_lighthouse_logo_png__WEBPACK_IMPORTED_MODULE_62__["default"], 38319 height: "125px" 38320})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 38321 src: _assets_pa11y_logo_png__WEBPACK_IMPORTED_MODULE_63__["default"], 38322 height: "125px" 38323}))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 38324 - In addition to what we can do out-of-the-box with our CI system of choice there are plugins 38325 available for each of the major CI systems that we can leverage 38326 - So far just about all of the tools we've talked about have been built upon the axe-core rules engine. 38327 - But in the CI space there are some other players 38328 - Most notably at this time are Lighthouse and pa11y 38329 - Pretty much any of these CI systems can be set up to run either of these tools 38330 - You've probably heard of Lighthouse before as it comes bundled with Chrome DevTools for performing a number 38331 of audits on things such as performance, SEO, best practices as well as accessibility 38332 - Well it's also available to use as a CLI or CI tool 38333 - And once again axe shows up, as Lighthouse uses axe-core under the covers. 38334 - Pa11y is also a set of CLI and CI tools that can perform accessibility audits on a provided URL or file 38335 - It allows you to specify the test runner to use, and at this time comes with the options to use either: 38336 - HTML CodeSniffer 38337 - or axe-core 38338 - I'll show you some examples for each of the top CI systems but this list is not exhaustive and there are more plugins 38339 coming out all the time. 38340 - So I urge you to do some research about what's out there for your system of choice. 38341 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 38342 fontSize: "h2" 38343}, "Continuous Integration"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 38344 fontSize: "3em", 38345 color: "primary" 38346}, "Lighthouse CI"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 38347 fontSize: "2em" 38348}, "Configure"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], { 38349 defaultValue: [], 38350 values: [// package.json 38351 [5, 6], // lighthouserc.json 38352 [1, 15], [4, 4], [5, 5], [6, 8]] 38353}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, step === 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38353x"], { 38354 marginRight: "auto", 38355 marginLeft: "auto" 38356}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 38357 bg: "black", 38358 padding: "5px", 38359 display: "block" 38360}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 38361 fontFamily: "monospace", 38362 fontSize: "1.2rem", 38363 margin: "0rem" 38364}, "package.json")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], { 38365 theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"], 38366 highlightStart: value[0], 38367 highlightEnd: value[1], 38368 language: "json", 38369 autoFillHeight: true 38370}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(` 38371 { 38372 "scripts": { 38373 "start": "react-scripts start", 38374 "build": "react-scripts build", 38375 "serve": "serve -s build", 38376 "serve:lhci": "NODE_ENV=production npm run serve", 38377 "lint": "eslint src", 38378 "pretest": "npm run lint", 38379 "test-only": "react-scripts test", 38380 "test": "npm run test-only", 38381 "cypress:open": "cypress open", 38382 "lighthouse": "lhci autorun", 38383 "eject": "react-scripts eject" 38384 }, 38385 } 38386 `))), [1, 2, 3, 4].includes(step) && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38386x"], { 38387 marginRight: "auto", 38388 marginLeft: "auto", 38389 width: "600px" 38390}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 38391 bg: "black", 38392 padding: "5px", 38393 display: "block" 38394}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 38395 fontFamily: "monospace", 38396 fontSize: "1.2rem", 38397 margin: "0rem" 38398}, "lighthouserc.json")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], { 38399 theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"], 38400 highlightStart: value[0], 38401 highlightEnd: value[1], 38402 language: "json", 38403 autoFillHeight: true 38404}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(` 38405 { 38406 "ci": { 38407 "collect": { 38408 "url": ["http://localhost:5000/login"], 38409 "isSinglePageApplication": true, 38410 "settings": { 38411 "onlyCategories": ["accessibility"] 38412 } 38413 } 38414 } 38415 } 38416 `))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 38417 - (STEP) 38418 - The first thing needed to set up the Lighthouse CI is in the package.json for your project: 38419 - add a script to serve the production build 38420 - I chose to use the serve package but you can use whatever you want just make sure to npm or yarn install it as well 38421 - and then add a script named "serve:lhci" 38422 - this is used by Lighthouse CI to detect what is should run to start your server 38423 - there are also options for letting Lighthouse CI serve static files in its own server so you can do what 38424 best suits your project 38425 - (STEP) 38426 - Next you'll need to create a file in the root of your project named lighthouserc.json. 38427 - There are extensive options for configuring Lighthouse CI but this was just the minimum needed to get up and running. 38428 - I encourage you to check their docs for more options. 38429 - (STEP) 38430 - the 'url' property takes an array of URLs I want Lighthouse to audit 38431 - here I've just specified my Login Page which we've been testing throughout the presentation 38432 - note it's at localhost and the port is specifically 5000 because that's what 'serve' is going to 38433 host it at 38434 - make sure the port is set to whatever your server will be using 38435 - (STEP) 38436 - the next property 'isSinglePageApplication" needs to be set to true for Single Page Applications 38437 - (STEP) 38438 - The settings property here is specifying that I only want Lighthouse to audit for accessibility issues 38439 - Because Lighthouse performs many categories of audits I added this to restrict the results just to 38440 accessibility issues 38441 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 38442 fontSize: "h2" 38443}, "Continuous Integration"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], { 38444 justifyContent: "center", 38445 alignItems: "center", 38446 paddingBottom: "10px" 38447}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38447x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 38448 src: _assets_github_logo_png__WEBPACK_IMPORTED_MODULE_54__["default"], 38449 height: "75px" 38450})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 38451 paddingLeft: "30px" 38452}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 38453 fontSize: "3em", 38454 color: "primary" 38455}, "Lighthouse CI Action"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], { 38456 defaultValue: [], 38457 values: [[3, 7], [14, 14], [15, 15], [16, 16], [17, 17], [18, 18]] 38458}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 38459 marginRight: "auto", 38460 marginLeft: "auto", 38461 width: "800px" 38462}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38462x"], { 38463 bg: "black", 38464 padding: "5px", 38465 display: "block" 38466}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 38467 fontFamily: "monospace", 38468 fontSize: "1.2rem", 38469 margin: "0rem" 38470}, ".github/workflows/lighthouse.yml")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], { 38471 theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"], 38472 highlightStart: value[0], 38473 highlightEnd: value[1], 38474 language: "yml", 38475 autoFillHeight: true 38476}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(` 38477 name: Lighthouse 38478 38479 on: 38480 push: 38481 branches: [ master ] 38482 pull_request: 38483 branches: [ master ] 38484 38485 jobs: 38486 lighthouse: 38487 runs-on: ubuntu-latest 38488 name: Audit with Lighthouse 38489 steps: 38490 - uses: actions/checkout@v2 38491 - uses: actions/setup-node@v1 38492 - run: npm install && npm install -g @lhci/[email protected] 38493 - run: npm run build 38494 - run: lhci autorun --upload.target=temporary-public-storage 38495 `)))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 38496 - So if you want to use Lighthouse with GitHub Actions, similarly to what I already demonstrated, 38497 - you'll need to create a .yml file in the .github/workflow directory at the root of your project 38498 - (STEP) 38499 - again this workflow is triggered on push and PRs of the master branch 38500 - (STEP) 38501 - the workflow will do a checkout of the repo 38502 - (STEP) 38503 - setup node 38504 - (STEP) 38505 - and then install the Lighthouse Continuous Integration CLI 38506 - (STEP) 38507 - it will then build the project 38508 - (STEP) 38509 - and finally runs Lighthouse 38510 - using the configuration we defined in the 'lighthouserc.json' file in our project 38511 - we could also pass flags into the 'lhci autorun' command in place of using the json config file 38512 - here you can see I'm passing the upload.target flag 38513 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 38514 fontSize: "h2" 38515}, "Continuous Integration"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], { 38516 justifyContent: "center", 38517 alignItems: "center", 38518 paddingBottom: "75px" 38519}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38519x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 38520 src: _assets_travisci_logo_png__WEBPACK_IMPORTED_MODULE_60__["default"], 38521 height: "75px" 38522})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 38523 paddingLeft: "30px" 38524}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 38525 fontSize: "3em", 38526 color: "primary" 38527}, "Lighthouse CI"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], { 38528 defaultValue: [], 38529 values: [[1, 10], [4, 5], [7, 7], [8, 8]] 38530}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 38531 marginRight: "auto", 38532 marginLeft: "auto", 38533 width: "800px" 38534}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38534x"], { 38535 bg: "black", 38536 padding: "5px", 38537 display: "block" 38538}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 38539 fontFamily: "monospace", 38540 fontSize: "1.2rem", 38541 margin: "0rem" 38542}, ".travis.yml")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], { 38543 theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"], 38544 highlightStart: value[0], 38545 highlightEnd: value[1], 38546 language: "yml", 38547 autoFillHeight: true 38548}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(` 38549 language: node_js 38550 node_js: 38551 - 14 38552 before_install: 38553 - npm install -g @lhci/[email protected] 38554 script: 38555 - npm run build 38556 - lhci autorun --upload.target=temporary-public-storage 38557 addons: 38558 chrome: stable 38559 `)))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 38560 - The setup for running Lighthouse with Travis is pretty similar to the GitHub Action 38561 - Create a yml file named .travis.yml at the root of your project 38562 - (STEP) 38563 - There's a "before_install" step to install the Lighthouse Continuous Integration CLI 38564 - (STEP) 38565 - And then just like the GitHub Action we'll run the build of our app 38566 - (STEP) 38567 - And then run Lighthouse 38568 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 38569 fontSize: "h2" 38570}, "Continuous Integration"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], { 38571 justifyContent: "center", 38572 alignItems: "center", 38573 paddingBottom: "75px" 38574}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38574x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 38575 src: _assets_circle_logo_horizontal_white_png__WEBPACK_IMPORTED_MODULE_61__["default"], 38576 height: "75px" 38577})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 38578 paddingLeft: "30px" 38579}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 38580 fontSize: "3em", 38581 color: "primary" 38582}, "Lighthouse CI"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], { 38583 defaultValue: [], 38584 values: [[1, 12], [8, 8], [9, 9], [10, 10], [11, 11], [12, 12]] 38585}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 38586 marginRight: "auto", 38587 marginLeft: "auto", 38588 width: "800px" 38589}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38589x"], { 38590 bg: "black", 38591 padding: "5px", 38592 display: "block" 38593}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 38594 fontFamily: "monospace", 38595 fontSize: "1.2rem", 38596 margin: "0rem" 38597}, ".circleci/config.yml")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], { 38598 theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"], 38599 highlightStart: value[0], 38600 highlightEnd: value[1], 38601 language: "yml", 38602 autoFillHeight: true 38603}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(` 38604 version: 2.1 38605 jobs: 38606 build: 38607 docker: 38608 - image: circleci/node:10.16-browsers 38609 working_directory: ~/your-project 38610 steps: 38611 - checkout 38612 - run: npm install 38613 - run: npm run build 38614 - run: sudo npm install -g @lhci/[email protected] 38615 - run: lhci autorun --upload.target=temporary-public-storage 38616 `)))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 38617 - For CircleCI, again the setup is not terribly different 38618 - Place a yml file named config.yml in a .circleci directory at the root of your project 38619 - And the necessary steps are exactly the same 38620 - (STEP) 38621 - checkout the repo 38622 - (STEP) 38623 - install npm dependencies 38624 - (STEP) 38625 - build the app 38626 - (STEP) 38627 - Install Lighthouse 38628 - (STEP) 38629 - And run Lighthouse 38630 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], { 38631 defaultValue: [], 38632 values: [0, 1] 38633}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, step === -1 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38633x"], { 38634 marginLeft: "auto", 38635 marginRight: "auto", 38636 paddingTop: "20px" 38637}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 38638 src: _assets_Lighthouse_GitHub_App_Install_png__WEBPACK_IMPORTED_MODULE_64__["default"], 38639 height: "650px", 38640 style: { 38641 boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .9), -8px 0px 1.5em rgba(0, 1, 19, .9)' 38642 } 38643})), step === 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 38644 marginLeft: "auto", 38645 marginRight: "auto", 38646 paddingTop: "75px" 38647}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 38648 src: _assets_Lighthouse_Status_Check_png__WEBPACK_IMPORTED_MODULE_65__["default"], 38649 style: { 38650 boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .9), -8px 0px 1.5em rgba(0, 1, 19, .9)' 38651 } 38652})), step === 1 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38652x"], { 38653 marginLeft: "auto", 38654 marginRight: "auto", 38655 paddingTop: "20px" 38656}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 38657 src: _assets_Lighthouse_Report_png__WEBPACK_IMPORTED_MODULE_66__["default"], 38658 height: "650px", 38659 style: { 38660 boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .5), -8px 0px 1.5em rgba(0, 1, 19, .5)' 38661 } 38662})))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 38663 - If you're using GitHub and integrate your CI system with your repos there, there's a really cool way 38664 to see the Lighthouse results in much nicer, more readable format than what you'd see in the CI log 38665 - There is an official Lighthouse CI GitHub App that you'll need to install 38666 - (STEP) 38667 - once you've got it installed and wired up with your CI system, you should start to see Status Checks for Lighthouse on your PRs and/or commits, 38668 whichever you have your CI tool triggered by 38669 - A Status Check will show up for each URL you specified for Lighthouse to audit as well as the overall rating for that URL 38670 - Since I only specified for Lighthouse to audit my login page we only have the one status check showing here 38671 - Then by clicking the Details link on the Status Check 38672 - (STEP) 38673 - It will open the Lighthouse Report for that URL 38674 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 38675 fontSize: "h2" 38676}, "Continuous Integration"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], { 38677 justifyContent: "center", 38678 alignItems: "center" 38679}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38679x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 38680 src: _assets_Jenkins_logo_png__WEBPACK_IMPORTED_MODULE_58__["default"], 38681 height: "75px" 38682})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 38683 paddingLeft: "30px" 38684}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 38685 fontSize: "3em", 38686 color: "primary" 38687}, "Lighthouse CI"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], { 38688 defaultValue: [], 38689 values: [0, 1, 2] 38690}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, step === 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 38691 marginLeft: "auto", 38692 marginRight: "auto", 38693 paddingTop: "10px" 38694}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 38695 src: _assets_Jenkins_Lighthouse_Plugin_png__WEBPACK_IMPORTED_MODULE_67__["default"], 38696 height: "500px", 38697 style: { 38698 boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .9), -8px 0px 1.5em rgba(0, 1, 19, .9)' 38699 } 38700})), step === 1 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38700x"], { 38701 paddingTop: "75px", 38702 marginLeft: "20px", 38703 marginRight: "20px" 38704}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 38705 bg: "black", 38706 padding: "5px", 38707 display: "block" 38708}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 38709 fontFamily: "monospace", 38710 fontSize: "1.2rem", 38711 margin: "0rem" 38712}, "machine-setup.sh")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], { 38713 theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"], 38714 language: "shell", 38715 fontSize: "15", 38716 autoFillHeight: true 38717}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(` 38718 #!/bin/bash 38719 38720 set -euxo pipefail 38721 38722 # Add Chrome's apt-key 38723 echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" | sudo tee -a /etc/apt/sources.list.d/google.list 38724 wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add - 38725 38726 # Add Node's apt-key 38727 curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash - 38728 38729 # Install NodeJS and Google Chrome 38730 sudo apt-get update 38731 sudo apt-get install -y nodejs google-chrome-stable 38732 `))), step === 2 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38732x"], { 38733 paddingTop: "75px", 38734 marginLeft: "20px", 38735 marginRight: "20px" 38736}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 38737 bg: "black", 38738 padding: "5px", 38739 display: "block" 38740}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 38741 fontFamily: "monospace", 38742 fontSize: "1.2rem", 38743 margin: "0rem" 38744}, "job.sh")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], { 38745 theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"], 38746 language: "shell", 38747 fontSize: "15", 38748 autoFillHeight: true 38749}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(` 38750 #!/bin/bash 38751 38752 set -euxo pipefail 38753 38754 npm install 38755 npm run build 38756 38757 export CHROME_PATH=$(which google-chrome-stable) 38758 export LHCI_BUILD_CONTEXT__EXTERNAL_BUILD_URL="$BUILD_URL" 38759 38760 npm install -g @lhci/[email protected] 38761 lhci autorun 38762 `))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 38763 - If you're using Jenkins as your CI Tool of choice don't feel left out as it also has the ability to use Lighthouse 38764 - (STEP) 38765 - there is a Plugin available through the Plugins Manager in Jenkins 38766 - Or you can write your own build script to use the Lighthouse CI tool similarly to how the other CI tools I've 38767 demonstrated so far 38768 - (STEP) 38769 - Some setup may have to be done if you haven't already configured your build machine to support Node and Chrome 38770 - (STEP) 38771 - And then your build script will run those say key steps that the others have: 38772 - install your npm packages 38773 - build your app 38774 - install the Lighthouse Continuous Integration CLI 38775 - and then run it 38776 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], { 38777 defaultValue: [], 38778 values: [0, 1] 38779}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, step === -1 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 38780 fontSize: "h2" 38781}, "Continuous Integration"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 38782 fontSize: "3em", 38783 color: "primary" 38784}, "The Lighthouse CI Server")), step === 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38784x"], { 38785 marginLeft: "auto", 38786 marginRight: "auto", 38787 paddingTop: "20px" 38788}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 38789 src: "https://user-images.githubusercontent.com/2301202/79480502-c8af9a80-7fd3-11ea-8087-52f6c8ba6f03.png", 38790 height: "650px", 38791 style: { 38792 boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .9), -8px 0px 1.5em rgba(0, 1, 19, .9)' 38793 } 38794})), step === 1 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 38795 marginLeft: "auto", 38796 marginRight: "auto", 38797 paddingTop: "20px" 38798}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 38799 src: "https://user-images.githubusercontent.com/39191/68522269-7917b680-025e-11ea-8d96-2774c0a0b04c.png", 38800 height: "650px", 38801 style: { 38802 boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .9), -8px 0px 1.5em rgba(0, 1, 19, .9)' 38803 } 38804})))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 38805 - I've only really scratched the surface here on using Lighthouse with your CI system. If you dig into the docs there are a ton of options 38806 for further configuration and there are some really powerful reporting options. 38807 - You can even set up your own Lighthouse CI Server. 38808 - (STEP) 38809 - The Lighthouse CI Server is an open source node server that you can host in a cloud provider or on your local machine, 38810 - essentially as a personal storage and visualization center for the history of your Lighthouse reports for your project. 38811 - Where the methods I've shown you so far will just show you the report that was just generated in a temporary storage location, 38812 they don't provide the ability to persist or compare a history 38813 - The Lighthouse CI Server though gives you the ability to store all of the reports and view data points about that history 38814 - You can see how your score has varied over a timeline 38815 - (STEP) 38816 - You can generate graphs showing improvements and regressions of scores or metric performance. 38817 - And you can view diffs between any two Lighthouse reports to find the root cause of a regression. 38818 - There's a lot of exciting and powerful stuff here to explore! 38819 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 38820 fontSize: "h2" 38821}, "Continuous Integration"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 38822 fontSize: "3em", 38823 color: "primary" 38824}, "Pa11y CI"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 38825 fontSize: "2em" 38826}, "Configure"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], { 38827 defaultValue: [], 38828 values: [// install 38829 0, // package.json 38830 [14, 14], // .pa11y.ci 38831 [1, 8], [2, 4], [5, 7]] 38832}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, step === 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38832x"], { 38833 marginRight: "auto", 38834 marginLeft: "auto", 38835 paddingTop: "75px", 38836 width: "650px" 38837}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], { 38838 theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"], 38839 language: "shell", 38840 autoFillHeight: true 38841}, ` 38842 # npm 38843 npm install pa11y-ci --save-dev 38844 38845 # yarn 38846 yarn add pa11y-ci --dev 38847 `)), step === 1 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 38848 marginRight: "auto", 38849 marginLeft: "auto", 38850 paddingTop: "50px" 38851}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 38852 bg: "black", 38853 padding: "5px", 38854 display: "block" 38855}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 38856 fontFamily: "monospace", 38857 fontSize: "1.2rem", 38858 margin: "0rem" 38859}, "package.json")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], { 38860 theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"], 38861 highlightStart: value[0], 38862 highlightEnd: value[1], 38863 fontSize: "15px", 38864 language: "json", 38865 autoFillHeight: true 38866}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(` 38867 { 38868 "scripts": { 38869 "start": "react-scripts start", 38870 "build": "react-scripts build", 38871 "serve": "serve -s build", 38872 "serve:prod": "NODE_ENV=production npm run serve", 38873 "serve:lhci": "npm run serve:prod", 38874 "lint": "eslint src", 38875 "pretest": "npm run lint", 38876 "test-only": "react-scripts test", 38877 "test": "npm run test-only", 38878 "cypress:open": "cypress open", 38879 "lighthouse": "lhci autorun", 38880 "pa11y": "pa11y-ci", 38881 "eject": "react-scripts eject" 38882 }, 38883 } 38884 `))), [2, 3, 4].includes(step) && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38884x"], { 38885 marginRight: "auto", 38886 marginLeft: "auto", 38887 paddingTop: "75px", 38888 width: "600px" 38889}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 38890 bg: "black", 38891 padding: "5px", 38892 display: "block" 38893}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 38894 fontFamily: "monospace", 38895 fontSize: "1.2rem", 38896 margin: "0rem" 38897}, ".pa11yci")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], { 38898 theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"], 38899 highlightStart: value[0], 38900 highlightEnd: value[1], 38901 language: "json", 38902 autoFillHeight: true 38903}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(` 38904 { 38905 "urls": [ 38906 "http://localhost:5000/login" 38907 ], 38908 "runners": [ 38909 "axe" 38910 ] 38911 } 38912 `))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 38913 - Now let's talk about the Pa11y CI tool 38914 - Some benefits of using Pa11y over Lighthouse are that it's: 38915 - easier to get set up and running faster 38916 - the output results are easier to read 38917 - and it offers the flexibility to specify the test runner 38918 - while it uses HTML CodeSniffer by default you can also configure it 38919 to use aXe or both 38920 - Let's go over the steps to getting it set up 38921 - (STEP) 38922 - First you'll need to install the pa11y-ci package in your project 38923 - (STEP) 38924 - Then you'll need to add an npm script for running pa11y-ci that 38925 you'll use from your CI tool 38926 - (STEP) 38927 - Then you'll need to create a .pa11yci file at the root of your project 38928 - Here's a pretty basic example though there are a lot of things you can 38929 configure if desired 38930 - (STEP) 38931 - It takes an array of URLs to test 38932 - Just like in the Lighthouse examples I'm just specifying my Login Page to start 38933 - (STEP) 38934 - And then here in the runners array you can specify whether you want to use HTML CodeSniffer, 38935 aXe-core, or both 38936 - Here I've chosen to just use aXe 38937 - Now let's set this up with some of the CI systems 38938 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 38939 fontSize: "h2" 38940}, "Continuous Integration"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], { 38941 justifyContent: "center", 38942 alignItems: "center", 38943 paddingBottom: "10px" 38944}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38944x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 38945 src: _assets_github_logo_png__WEBPACK_IMPORTED_MODULE_54__["default"], 38946 height: "75px" 38947})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 38948 paddingLeft: "30px" 38949}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 38950 fontSize: "3em", 38951 color: "primary" 38952}, "Pa11y CI Action"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], { 38953 defaultValue: [], 38954 values: [[18, 18], [19, 19]] 38955}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 38956 marginRight: "auto", 38957 marginLeft: "auto", 38958 width: "800px", 38959 paddingTop: "30px" 38960}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
38960x"], { 38961 bg: "black", 38962 padding: "5px", 38963 display: "block" 38964}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 38965 fontFamily: "monospace", 38966 fontSize: "1.2rem", 38967 margin: "0rem" 38968}, ".github/workflows/pa11y.yml")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], { 38969 theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"], 38970 highlightStart: value[0], 38971 highlightEnd: value[1], 38972 fontSize: "13", 38973 language: "yml", 38974 autoFillHeight: true 38975}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(` 38976 name: Pa11y 38977 38978 on: 38979 push: 38980 branches: [ master ] 38981 pull_request: 38982 branches: [ master ] 38983 38984 jobs: 38985 pa11y: 38986 runs-on: ubuntu-latest 38987 name: Audit with Lighthouse 38988 steps: 38989 - uses: actions/checkout@v2 38990 - uses: actions/setup-node@v1 38991 - run: npm ci 38992 - run: npm run build 38993 - run: npm run serve:prod & sleep 5 38994 - run: npm run pa11y 38995 `)))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 38996 - So if you want to use Pa11y CI with GitHub Actions 38997 - you'll need to create a .yml file in the .github/workflow directory at the root of your project 38998 - The file contents will be very similar to the examples we've already seen 38999 - The main differences are that we'll 39000 - (STEP) 39001 - specifically running a command to start a server serving up our built application 39002 - and wait 5 seconds to give it time to start up and accept connections 39003 - (STEP) 39004 - and then we're running that command I added to my package.json scripts for running pa11y-ci 39005 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 39006 fontSize: "h2" 39007}, "Continuous Integration"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], { 39008 justifyContent: "center", 39009 alignItems: "center", 39010 paddingBottom: "75px" 39011}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
39011x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 39012 src: _assets_travisci_logo_png__WEBPACK_IMPORTED_MODULE_60__["default"], 39013 height: "75px" 39014})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 39015 paddingLeft: "30px" 39016}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 39017 fontSize: "3em", 39018 color: "primary" 39019}, "pa11y-ci"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], { 39020 defaultValue: [], 39021 values: [[5, 5], [6, 6]] 39022}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 39023 marginRight: "auto", 39024 marginLeft: "auto", 39025 width: "800px" 39026}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
39026x"], { 39027 bg: "black", 39028 padding: "5px", 39029 display: "block" 39030}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 39031 fontFamily: "monospace", 39032 fontSize: "1.2rem", 39033 margin: "0rem" 39034}, ".travis.yml")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], { 39035 theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"], 39036 highlightStart: value[0], 39037 highlightEnd: value[1], 39038 language: "yml", 39039 autoFillHeight: true 39040}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(` 39041 language: node_js 39042 node_js: 39043 - 14 39044 script: 39045 - npm run build 39046 - npm run serve:prod & sleep 5; npm run pa11y; 39047 `)))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 39048 - Here's an example of the yml file needed to run pa11y with Travis CI 39049 - It's pretty simple and the key steps are the same 39050 - (STEP) 39051 - again we're just building our project 39052 - (STEP) 39053 - and then serving our app and running pa11y-ci 39054 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 39055 fontSize: "h2" 39056}, "Continuous Integration"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], { 39057 justifyContent: "center", 39058 alignItems: "center", 39059 paddingBottom: "10px" 39060}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
39060x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 39061 src: _assets_circle_logo_horizontal_white_png__WEBPACK_IMPORTED_MODULE_61__["default"], 39062 height: "75px" 39063})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 39064 paddingLeft: "30px", 39065 paddingBottom: "15px" 39066}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 39067 fontSize: "3em", 39068 color: "primary" 39069}, "pa11yci Orb"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], { 39070 defaultValue: [], 39071 values: [[4, 12], [14, 15], [21, 23]] 39072}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 39073 marginRight: "auto", 39074 marginLeft: "auto", 39075 width: "600px" 39076}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
39076x"], { 39077 bg: "black", 39078 padding: "5px", 39079 display: "block" 39080}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 39081 fontFamily: "monospace", 39082 fontSize: "1.2rem", 39083 margin: "0rem" 39084}, ".circleci/config.yml")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], { 39085 theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"], 39086 highlightStart: value[0], 39087 highlightEnd: value[1], 39088 fontSize: "13", 39089 language: "yml", 39090 autoFillHeight: true 39091}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(` 39092 version: 2.1 39093 39094 jobs: 39095 build: 39096 docker: 39097 - image: circleci/node:latest 39098 working_directory: ~/your-project 39099 steps: 39100 - checkout 39101 - run: npm install 39102 - run: npm run build 39103 - run: npm run serve:prod 39104 39105 orbs: 39106 pa11yci: nebulab/pa11yci 39107 39108 workflows: 39109 a11y-audit: 39110 jobs: 39111 - build 39112 - pa11yci/a11y-audit: 39113 requires: 39114 - build 39115 `)))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 39116 - To use pa11y with Circle CI there is a pa11yci Orb available 39117 - (STEP) 39118 - So we've got a build job that does the build and serving of our app 39119 - (STEP) 39120 -And we've got the pa11yci orb registered 39121 - (STEP) 39122 - and finally we define the workflow where the pa11yci job will run after the build job 39123 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
39123x"], { 39124 marginLeft: "auto", 39125 marginRight: "auto", 39126 paddingTop: "50px" 39127}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 39128 src: _assets_pa11y_travis_results_png__WEBPACK_IMPORTED_MODULE_68__["default"], 39129 style: { 39130 boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .5), -8px 0px 1.5em rgba(0, 1, 19, .5)' 39131 } 39132})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 39133 - And here is what the results of running pa11y-ci look like in our CI log 39134 - It lists 3 errors found 39135 - details about what was wrong with each 39136 - and the specific element found with the error 39137 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 39138 fontSize: "h2" 39139}, "Continuous Integration"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], { 39140 justifyContent: "center", 39141 alignItems: "center" 39142}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
39142x"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 39143 src: _assets_netlify_logo_png__WEBPACK_IMPORTED_MODULE_59__["default"], 39144 height: "75px" 39145})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 39146 paddingLeft: "30px" 39147}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 39148 fontSize: "3em", 39149 color: "primary" 39150}, "netlify-plugin-a11y"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Stepper"], { 39151 defaultValue: [], 39152 values: [// install 39153 0, // netlify.toml 39154 [1, 23], [1, 2], [8, 12], [15, 15], [17, 17]] 39155}, (value, step) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, step === 0 && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
39155x"], { 39156 paddingTop: "75px" 39157}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 39158 fontSize: "2em" 39159}, "Install"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 39160 marginRight: "auto", 39161 marginLeft: "auto", 39162 width: "650px" 39163}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], { 39164 theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"], 39165 language: "shell", 39166 autoFillHeight: true 39167}, ` 39168 # npm 39169 npm install netlify-plugin-a11y 39170 39171 # yarn 39172 yarn add netlify-plugin-a11y 39173 `))), [1, 2, 3, 4, 5].includes(step) && /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
39173x"], { 39174 paddingTop: "50px" 39175}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 39176 fontSize: "2em" 39177}, "Configure"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 39178 marginRight: "auto", 39179 marginLeft: "auto", 39180 width: "1100px" 39181}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 39182 bg: "black", 39183 padding: "5px", 39184 display: "block" 39185}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 39186 fontFamily: "monospace", 39187 fontSize: "1.2rem", 39188 margin: "0rem" 39189}, "netlify.toml")), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["CodePane"], { 39190 theme: prism_react_renderer_themes_dracula__WEBPACK_IMPORTED_MODULE_2__["default"], 39191 highlightStart: value[0], 39192 highlightEnd: value[1], 39193 fontSize: "15px", 39194 language: "toml", 39195 autoFillHeight: true 39196}, Object(spectacle__WEBPACK_IMPORTED_MODULE_3__["indentNormalizer"])(` 39197 [[plugins]] 39198 package = "netlify-plugin-a11y" 39199 39200 # all inputs are optional, we just show you the defaults below 39201 [plugins.inputs] 39202 39203 # you can give an array of directories or paths to html files, that you want to run a11y checks on 39204 checkPaths = [ 39205 '/blog', 39206 '/about.html', 39207 '/super/specific/route/index.html', 39208 ] 39209 39210 # # optional config 39211 # ignoreDirectories = ['/admin'] # explicitly ignore these directories 39212 39213 # resultMode = "warn" # is "error" by default 39214 `)))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 39215 - So just like Jenkins was a bit of a different animal when it came to using Lighthouse, we have 39216 Netlify Build which deviates a little from how the other CI tools run Pa11y 39217 - It's got it's own plugin available from Netlify 39218 - To set it up 39219 - (STEP) 39220 - first install the npm package for the plugin 39221 - (STEP) 39222 - next you'll need to add a netlify.toml file to the root of your project 39223 - here is an example file configured to use the plugin 39224 - (STEP) 39225 - Under plugins is specified the a11y plugin 39226 - (STEP) 39227 - The checkPaths is where you specify any file names or directories that should be tested with pa11y 39228 - (STEP) 39229 - You can optionally specify any directories that should be ignore by pa11y 39230 - (STEP) 39231 - And finally you can set the results of the audit to produce warnings rather than errors 39232 which will fail the build 39233 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
39233x"], { 39234 marginLeft: "auto", 39235 marginRight: "auto", 39236 paddingTop: "20px" 39237}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Image"], { 39238 src: "https://user-images.githubusercontent.com/6764957/77147207-226b8600-6a63-11ea-91b2-2de449ef6682.png", 39239 height: "650px", 39240 style: { 39241 boxShadow: '8px 8px 1.5em rgba(0, 1, 19, .5), -8px 0px 1.5em rgba(0, 1, 19, .5)' 39242 } 39243})), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 39244 - And here is an example of what the results look like in the build log when the mode is set to error 39245 - You can see that the Build is indeed failed 39246 - it points out that there were 4 accessibility issues found 39247 - It lists a description of each error and the element that contains the error 39248 `))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Slide"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 39249 fontSize: "h2" 39250}, "Resources"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
39250x"], { 39251 paddingBottom: "100px", 39252 marginTop: "-15px" 39253}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 39254 fontSize: "h3", 39255 textAlign: "center" 39256}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Link"], { 39257 href: "https://erindoyle.dev/talks" 39258}, "https://erindoyle.dev/talks"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Grid"], { 39259 gridTemplateColumns: "1fr 1fr 1fr", 39260 height: "150px" 39261}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 39262 paddingLeft: "100px", 39263 marginLeft: "auto", 39264 marginRight: "auto" 39265}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 39266 fontSize: "2em" 39267}, "Linting"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["UnorderedList"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 39268 color: "secondary", 39269 fontSize: "1em" 39270}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Link"], { 39271 href: "https://github.com/jsx-eslint/eslint-plugin-jsx-a11y" 39272}, "eslint-plugin-jsx-a11y"))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
39272x"], { 39273 padding: "0 100px", 39274 marginLeft: "auto", 39275 marginRight: "auto" 39276}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 39277 fontSize: "2em" 39278}, "Runtime"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["UnorderedList"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 39279 color: "secondary", 39280 fontSize: "1em" 39281}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Link"], { 39282 href: "https://github.com/dequelabs/react-axe" 39283}, "react-axe"))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 39284 paddingRight: "100px", 39285 marginLeft: "auto", 39286 marginRight: "auto" 39287}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 39288 fontSize: "2em" 39289}, "Unit Testing"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["UnorderedList"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 39290 color: "secondary", 39291 fontSize: "1em" 39292}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Link"], { 39293 href: "https://github.com/nickcolley/jest-axe" 39294}, "jest-axe")))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Grid"], { 39295 gridTemplateColumns: "1fr 1fr", 39296 height: "300px" 39297}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
39297x"], { 39298 marginLeft: "auto", 39299 marginRight: "auto", 39300 paddingLeft: "750px5px" 39301}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 39302 fontSize: "2em" 39303}, "End-to-End Testing"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["UnorderedList"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 39304 color: "secondary", 39305 fontSize: "1em" 39306}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Link"], { 39307 href: "https://github.com/dequelabs/axe-webdriverjs" 39308}, "axe-webdriverjs"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 39309 color: "secondary", 39310 fontSize: "1em" 39311}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Link"], { 39312 href: "https://github.com/avanslaars/cypress-axe" 39313}, "cypress-axe"))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
39313x"], { 39314 marginLeft: "auto", 39315 marginRight: "auto", 39316 paddingRight: "100px" 39317}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 39318 fontSize: "2em" 39319}, "Continuous Integration"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["FlexBox"], { 39320 flexDirection: "row", 39321 justifyContents: "space-evenly", 39322 alignItems: "start" 39323}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Box"], { 39324 padding: "20px" 39325}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 39326 fontSize: "1.5em" 39327}, "Lighthouse CI"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["UnorderedList"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 39328 color: "secondary", 39329 fontSize: "1em" 39330}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Link"], { 39331 href: "https://github.com/GoogleChrome/lighthouse-ci" 39332}, "Lighthouse CI"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 39333 color: "secondary", 39334 fontSize: "1em" 39335}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Link"], { 39336 href: "https://github.com/GoogleChrome/lighthouse-ci/blob/a5220a06fc07b4d8c6245abf805424d152016994/docs/getting-started.md#configure-your-ci-provider" 39337}, "GitHub Action"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 39338 color: "secondary", 39339 fontSize: "1em" 39340}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Link"], { 39341 href: "https://github.com/hchiam/learning-lighthouse-ci" 39342}, "Travis CI"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 39343 color: "secondary", 39344 fontSize: "1em" 39345}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Link"], { 39346 href: "https://github.com/GoogleChrome/lighthouse-ci/blob/a5220a06fc07b4d8c6245abf805424d152016994/docs/getting-started.md#configure-your-ci-provider" 39347}, "Circle CI"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 39348 color: "secondary", 39349 fontSize: "1em" 39350}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Link"], { 39351 href: "https://plugins.jenkins.io/lighthouse-report/" 39352}, "Jenkins"))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Bo
39352x"], { 39353 padding: "20px" 39354}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Heading"], { 39355 fontSize: "1.5em" 39356}, "Pa11y CI"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["UnorderedList"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 39357 color: "secondary", 39358 fontSize: "1em" 39359}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Link"], { 39360 href: "https://github.com/pa11y/pa11y-ci" 39361}, "Pa11y CI"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 39362 color: "secondary", 39363 fontSize: "1em" 39364}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Link"], { 39365 href: "https://cruft.io/posts/automated-accessibility-testing-node-travis-ci-pa11y/" 39366}, "Travis CI"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 39367 color: "secondary", 39368 fontSize: "1em" 39369}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Link"], { 39370 href: "https://github.com/nebulab/circleci-orbs-pa11yci" 39371}, "Circle CI"))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["ListItem"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Text"], { 39372 color: "secondary", 39373 fontSize: "1em" 39374}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Link"], { 39375 href: "https://github.com/netlify-labs/netlify-plugin-a11y" 39376}, "Netlify")))))))), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Notes"], null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_3__["Markdown"], null, ` 39377 - And that wraps up all of the awesome tools I wanted to share with you today! 39378 - I'll end here with a list of resource links to all of the tools I talked about so you 39379 can go check them out and add them to your Dev workflow! 39380 - You can get to these links where I've posted the slides at: 39381 - erindoyle.dev/talks and clicking on the link to React Global Summit 2020 39382 `)))); 39383 39384react_dom__WEBPACK_IMPORTED_MODULE_1___default.a.render( /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(Presentation, null), document.getElementById('root')); 39385 39386/***/ }), 39387
39388/***/ "./src/template.js": 39389/*!*************************!*\ 39390 !*** ./src/template.js ***! 39391 \*************************/ 39392/*! exports provided: default */ 39393/***/ (function(module, __webpack_exports__, __webpack_require__) { 39394 39395"use strict"; 39396__webpack_require__.r(__webpack_exports__); 39397/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js"); 39398/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); 39399/* harmony import */ var spectacle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! spectacle */ "./node_modules/spectacle/es/index.js"); 39400 39401 // SPECTACLE_CLI_TEMPLATE_START 39402 39403const template = ({ 39404 slideNumber, 39405 numberOfSlides 39406}) => /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_1__["FlexBox"], { 39407 justifyContent: "flex-start", 39408 position: "absolute", 39409 bottom: 0, 39410 width: 1, 39411 backgroundColor: "tertiary" 39412}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_1__["Box"], { 39413 marginLeft: 3, 39414 marginRight: 3 39415}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_1__["FullScreen"], null)), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_1__["Box"], { 39416 marginLeft: "auto", 39417 marginRight: "auto", 39418 marginBottom: 3 39419}, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_1__["Progress"], null), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(spectacle__WEBPACK_IMPORTED_MODULE_1__["Text"], { 39420 fontSize: "18px" 39421}, "Slide ", slideNumber, " of ", numberOfSlides))); // SPECTACLE_CLI_TEMPLATE_END 39422 39423 39424/* harmony default export */ __webpack_exports__["default"] = (template); 39425 39426/***/ }), 39427
39428/***/ "./src/theme.js": 39429/*!**********************!*\ 39430 !*** ./src/theme.js ***! 39431 \**********************/ 39432/*! exports provided: default */ 39433/***/ (function(module, __webpack_exports__, __webpack_require__) { 39434 39435"use strict"; 39436__webpack_require__.r(__webpack_exports__); 39437// SPECTACLE_CLI_THEME_START 39438const theme = { 39439 fonts: { 39440 header: "'Source Code Pro', monospace", 39441 text: "'Raleway', sans-serif" 39442 }, 39443 colors: { 39444 primary: '#FF0080', 39445 secondary: '#fff', 39446 tertiary: '#0E2133', 39447 quaternary: '#FF0080' 39448 }, 39449 fontSizes: { 39450 header: '64px', 39451 paragraph: '28px', 39452 text: '28px' 39453 }, 39454 space: [0, 4, 8, 16, 32, 64], 39455 size: { 39456 maxCodePaneHeight: 450 39457 } 39458}; // SPECTACLE_CLI_THEME_END 39459 39460/* harmony default export */ __webpack_exports__["default"] = (theme); 39461 39462/***/ })
39462 39463 39464/******/ }); 39465//# sourceMappingURL=deck.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.