vendor: 4,098 bytes, lines 1-118
1/*! 2 * Webflow: Front-end site library 3 * @license MIT 4 * Inline scripts may access the api using an async handler: 5 * var Webflow = Webflow || []; 6 * Webflow.push(readyFunction); 7 */ 8/******/ (function (modules) { // webpackBootstrap 9/******/ // The module cache 10/******/ var installedModules = {}; 11/******/ 12/******/ // The require function 13/******/ function __webpack_require__(moduleId) { 14/******/ 15/******/ // Check if module is in cache 16/******/ if (installedModules[moduleId]) { 17/******/ return installedModules[moduleId].exports; 18 /******/ 19 } 20/******/ // Create a new module (and put it into the cache) 21/******/ var module = installedModules[moduleId] = { 22/******/ i: moduleId, 23/******/ l: false, 24/******/ exports: {} 25 /******/ 26 }; 27/******/ 28/******/ // Execute the module function 29/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 30/******/ 31/******/ // Flag the module as loaded 32/******/ module.l = true; 33/******/ 34/******/ // Return the exports of the module 35/******/ return module.exports; 36 /******/ 37 } 38/******/ 39/******/ 40/******/ // expose the modules object (__webpack_modules__) 41/******/ __webpack_require__.m = modules; 42/******/ 43/******/ // expose the module cache 44/******/ __webpack_require__.c = installedModules; 45/******/ 46/******/ // define getter function for harmony exports 47/******/ __webpack_require__.d = function (exports, name, getter) { 48/******/ if (!__webpack_require__.o(exports, name)) { 49/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); 50 /******/ 51 } 52 /******/ 53 }; 54/******/ 55/******/ // define __esModule on exports 56/******/ __webpack_require__.r = function (exports) { 57/******/ if (typeof Symbol !== 'undefined' && Symbol.toStringTag) { 58/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 59 /******/ 60 } 61/******/ Object.defineProperty(exports, '__esModule', { value: true }); 62 /******/ 63 }; 64/******/ 65/******/ // create a fake namespace object 66/******/ // mode & 1: value is a module id, require it 67/******/ // mode & 2: merge all properties of value into the ns 68/******/ // mode & 4: return value when already ns object 69/******/ // mode & 8|1: behave like require 70/******/ __webpack_require__.t = function (value, mode) { 71/******/ if (mode & 1) value = __webpack_require__(value); 72/******/ if (mode & 8) return value; 73/******/ if ((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; 74/******/ var ns = Object.create(null); 75/******/ __webpack_require__.r(ns); 76/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); 77/******/ if (mode & 2 && typeof value != 'string') for (var key in value) __webpack_require__.d(ns, key, function (key) { return value[key]; }.bind(null, key)); 78/******/ return ns; 79 /******/ 80 }; 81/******/ 82/******/ // getDefaultExport function for compatibility with non-harmony modules 83/******/ __webpack_require__.n = function (module) { 84/******/ var getter = module && module.__esModule ? 85/******/ function getDefault() { return module['default']; } : 86/******/ function getModuleExports() { return module; }; 87/******/ __webpack_require__.d(getter, 'a', getter); 88/******/ return getter; 89 /******/ 90 }; 91/******/ 92/******/ // Object.prototype.hasOwnProperty.call 93/******/ __webpack_require__.o = function (object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; 94/******/ 95/******/ // __webpack_public_path__ 96/******/ __webpack_require__.p = ""; 97/******/ 98/******/ 99/******/ // Load entry module and return exports 100/******/ return __webpack_require__(__webpack_require__.s = 121); 101 /******/ 102}) 103/************************************************************************/ 104/******/([ 105/* 0 */ 106/***/ (function (module, exports) { 107 108 function _interopRequireDefault(obj) { 109 return obj && obj.__esModule ? obj : { 110 "default": obj 111 }; 112 } 113 114 module.exports = _interopRequireDefault; 115 116 /***/ 117 }), 118/* 1 */
119/***/ (function (module, exports) { 120 121 /** 122 * Checks if `value` is classified as an `Array` object. 123 * 124 * @static 125 * @memberOf _ 126 * @since 0.1.0 127 * @category Lang 128 * @param {*} value The value to check. 129 * @returns {boolean} Returns `true` if `value` is an array, else `false`. 130 * @example 131 * 132 * _.isArray([1, 2, 3]); 133 * // => true 134 * 135 * _.isArray(document.body.children); 136 * // => false 137 * 138 * _.isArray('abc'); 139 * // => false 140 * 141 * _.isArray(_.noop); 142 * // => false 143 */ 144 var isArray = Array.isArray; 145 146 module.exports = isArray; 147 148 149 /***/ 150 }), 151/* 2 */ 152/***/ (function (module, exports, __webpack_require__) { 153 154 "use strict"; 155 156 157 var _interopRequireWildcard = __webpack_require__(14); 158 159 Object.defineProperty(exports, "__esModule", { 160 value: true 161 }); 162 var _exportNames = { 163 IX2EngineActionTypes: true, 164 IX2EngineConstants: true 165 }; 166 exports.IX2EngineConstants = exports.IX2EngineActionTypes = void 0; 167 168 var _triggerEvents = __webpack_require__(171); 169 170 Object.keys(_triggerEvents).forEach(function (key) { 171 if (key === "default" || key === "__esModule") return; 172 if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; 173 Object.defineProperty(exports, key, { 174 enumerable: true, 175 get: function get() { 176 return _triggerEvents[key]; 177 } 178 }); 179 }); 180 181 var _animationActions = __webpack_require__(172); 182 183 Object.keys(_animationActions).forEach(function (key) { 184 if (key === "default" || key === "__esModule") return; 185 if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; 186 Object.defineProperty(exports, key, { 187 enumerable: true, 188 get: function get() { 189 return _animationActions[key]; 190 } 191 }); 192 }); 193 194 var _triggerInteractions = __webpack_require__(173); 195 196 Object.keys(_triggerInteractions).forEach(function (key) { 197 if (key === "default" || key === "__esModule") return; 198 if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return; 199 Object.defineProperty(exports, key, { 200 enumerable: true, 201 get: function get() { 202 return _triggerInteractions[key]; 203 } 204 }); 205 }); 206 207 var IX2EngineActionTypes = _interopRequireWildcard(__webpack_require__(174)); 208 209 exports.IX2EngineActionTypes = IX2EngineActionTypes; 210 211 var IX2EngineConstants = _interopRequireWildcard(__webpack_require__(175)); 212 213 exports.IX2EngineConstants = IX2EngineConstants; 214 215 /***/ 216 }), 217/* 3 */ 218/***/ (function (module, exports, __webpack_require__) { 219 220 "use strict"; 221 // @wf-will-never-add-flow-to-this-file 222 223 /* globals window, document, navigator, WEBFLOW_ENV_TEST */ 224 225 /* eslint-disable no-var */ 226 227 /** 228 * Webflow: Core site library 229 */ 230 231 var Webflow = {}; 232 var modules = {}; 233 var primary = []; 234 var secondary = window.Webflow || []; 235 var $ = window.jQuery; 236 var $win = $(window); 237 var $doc = $(document); 238 var isFunction = $.isFunction; 239 240 var _ = Webflow._ = __webpack_require__(124); 241 242 var tram = Webflow.tram = __webpack_require__(66) && $.tram; 243 var domready = false; 244 var destroyed = false; 245 tram.config.hideBackface = false; 246 tram.config.keepInherited = true; 247 /** 248 * Webflow.define - Define a named module 249 * @param {string} name 250 * @param {function} factory 251 * @param {object} options 252 * @return {object} 253 */ 254 255 Webflow.define = function (name, factory, options) { 256 if (modules[name]) { 257 unbindModule(modules[name]); 258 } 259 260 var instance = modules[name] = factory($, _, options) || {}; 261 bindModule(instance); 262 return instance; 263 }; 264 /** 265 * Webflow.require - Require a named module 266 * @param {string} name 267 * @return {object} 268 */ 269 270 271 Webflow.require = function (name) { 272 return modules[name]; 273 }; 274 275 function bindModule(module) { 276 // If running in Webflow app, subscribe to design/preview events 277 if (Webflow.env()) { 278 isFunction(module.design) && $win.on('__wf_design', module.design); 279 isFunction(module.preview) && $win.on('__wf_preview', module.preview); 280 } // Subscribe to front-end destroy event 281 282 283 isFunction(module.destroy) && $win.on('__wf_destroy', module.destroy); // Look for ready method on module 284 285 if (module.ready && isFunction(module.ready)) { 286 addReady(module); 287 } 288 } 289 290 function addReady(module) { 291 // If domready has already happened, run ready method 292 if (domready) { 293 module.ready(); 294 return; 295 } // Otherwise add ready method to the primary queue (only once) 296 297 298 if (_.contains(primary, module.ready)) { 299 return; 300 } 301 302 primary.push(module.ready); 303 } 304 305 function unbindModule(module) { 306 // Unsubscribe module from window events 307 isFunction(module.design) && $win.off('__wf_design', module.design); 308 isFunction(module.preview) && $win.off('__wf_preview', module.preview); 309 isFunction(module.destroy) && $win.off('__wf_destroy', module.destroy); // Remove ready method from primary queue 310 311 if (module.ready && isFunction(module.ready)) { 312 removeReady(module); 313 } 314 } 315 316 function removeReady(module) { 317 primary = _.filter(primary, function (readyFn) { 318 return readyFn !== module.ready; 319 }); 320 } 321 /** 322 * Webflow.push - Add a ready handler into secondary queue 323 * @param {function} ready Callback to invoke on domready 324 */ 325 326 327 Webflow.push = function (ready) { 328 // If domready has already happened, invoke handler 329 if (domready) { 330 isFunction(ready) && ready(); 331 return; 332 } // Otherwise push into secondary queue 333 334 335 secondary.push(ready); 336 }; 337 /** 338 * Webflow.env - Get the state of the Webflow app 339 * @param {string} mode [optional] 340 * @return {boolean} 341 */ 342 343 344 Webflow.env = function (mode) { 345 var designFlag = window.__wf_design; 346 var inApp = typeof designFlag !== 'undefined'; 347 348 if (!mode) { 349 return inApp; 350 } 351 352 if (mode === 'design') { 353 return inApp && designFlag; 354 } 355 356 if (mode === 'preview') { 357 return inApp && !designFlag; 358 } 359 360 if (mode === 'slug') { 361 return inApp && window.__wf_slug; 362 } 363 364 if (mode === 'editor') { 365 return window.WebflowEditor; 366 } 367 368 if (mode === 'test') { 369 return false || window.__wf_test; 370 } 371 372 if (mode === 'frame') { 373 return window !== window.top; 374 } 375 }; // Feature detects + browser sniffs ಠ_ಠ376 377 378 var userAgent = navigator.userAgent.toLowerCase(); 379 var touch = Webflow.env.touch = 'ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch; 380 var chrome = Webflow.env.chrome = /chrome/.test(userAgent) && /Google/.test(navigator.vendor) && parseInt(userAgent.match(/chrome\/(\d+)\./)[1], 10); 381 var ios = Webflow.env.ios = /(ipod|iphone|ipad)/.test(userAgent); 382 Webflow.env.safari = /safari/.test(userAgent) && !chrome && !ios; // Maintain current touch target to prevent late clicks on touch devices 383 384 var touchTarget; // Listen for both events to support touch/mouse hybrid devices 385 386 touch && $doc.on('touchstart mousedown', function (evt) { 387 touchTarget = evt.target; 388 }); 389 /** 390 * Webflow.validClick - validate click target against current touch target 391 * @param {HTMLElement} clickTarget Element being clicked 392 * @return {Boolean} True if click target is valid (always true on non-touch) 393 */ 394 395 Webflow.validClick = touch ? function (clickTarget) { 396 return clickTarget === touchTarget || $.contains(clickTarget, touchTarget); 397 } : function () { 398 return true; 399 }; 400 /** 401 * Webflow.resize, Webflow.scroll - throttled event proxies 402 */ 403 404 var resizeEvents = 'resize.webflow orientationchange.webflow load.webflow';
405 var scrollEvents = 'scroll.webflow ' + resizeEvents; 406 Webflow.resize = eventProxy($win, resizeEvents); 407 Webflow.scroll = eventProxy($win, scrollEvents); 408 Webflow.redraw = eventProxy(); // Create a proxy instance for throttled events 409 410 function eventProxy(target, types) { 411 // Set up throttled method (using custom frame-based _.throttle) 412 var handlers = []; 413 var proxy = {}; 414 proxy.up = _.throttle(function (evt) { 415 _.each(handlers, function (h) { 416 h(evt); 417 }); 418 }); // Bind events to target 419 420 if (target && types) { 421 target.on(types, proxy.up); 422 } 423 /** 424 * Add an event handler 425 * @param {function} handler 426 */ 427 428 429 proxy.on = function (handler) { 430 if (typeof handler !== 'function') { 431 return; 432 } 433 434 if (_.contains(handlers, handler)) { 435 return; 436 } 437 438 handlers.push(handler); 439 }; 440 /** 441 * Remove an event handler 442 * @param {function} handler 443 */ 444 445 446 proxy.off = function (handler) { 447 // If no arguments supplied, clear all handlers 448 if (!arguments.length) { 449 handlers = []; 450 return; 451 } // Otherwise, remove handler from the list 452 453 454 handlers = _.filter(handlers, function (h) { 455 return h !== handler; 456 }); 457 }; 458 459 return proxy; 460 } // Webflow.location - Wrap window.location in api 461 462 463 Webflow.location = function (url) { 464 window.location = url; 465 }; 466 467 if (Webflow.env()) { 468 // Ignore redirects inside a Webflow design/edit environment 469 Webflow.location = function () { }; 470 } // Webflow.ready - Call primary and secondary handlers 471 472 473 Webflow.ready = function () { 474 domready = true; // Restore modules after destroy 475 476 if (destroyed) { 477 restoreModules(); // Otherwise run primary ready methods 478 } else { 479 _.each(primary, callReady); 480 } // Run secondary ready methods 481 482 483 _.each(secondary, callReady); // Trigger resize 484 485 486 Webflow.resize.up(); 487 }; 488 489 function callReady(readyFn) { 490 isFunction(readyFn) && readyFn(); 491 } 492 493 function restoreModules() { 494 destroyed = false; 495 496 _.each(modules, bindModule); 497 } 498 /** 499 * Webflow.load - Add a window load handler that will run even if load event has already happened 500 * @param {function} handler 501 */ 502 503 504 var deferLoad; 505 506 Webflow.load = function (handler) { 507 deferLoad.then(handler); 508 }; 509 510 function bindLoad() { 511 // Reject any previous deferred (to support destroy) 512 if (deferLoad) { 513 deferLoad.reject(); 514 $win.off('load', deferLoad.resolve); 515 } // Create deferred and bind window load event 516 517 518 deferLoad = new $.Deferred(); 519 $win.on('load', deferLoad.resolve); 520 } // Webflow.destroy - Trigger a destroy event for all modules 521 522 523 Webflow.destroy = function (options) { 524 options = options || {}; 525 destroyed = true; 526 $win.triggerHandler('__wf_destroy'); // Allow domready reset for tests 527 528 if (options.domready != null) { 529 domready = options.domready; 530 } // Unbind modules 531 532 533 _.each(modules, unbindModule); // Clear any proxy event handlers 534 535 536 Webflow.resize.off(); 537 Webflow.scroll.off(); 538 Webflow.redraw.off(); // Clear any queued ready methods 539 540 primary = []; 541 secondary = []; // If load event has not yet fired, replace the deferred 542 543 if (deferLoad.state() === 'pending') { 544 bindLoad(); 545 } 546 }; // Listen for domready 547 548 549 $(Webflow.ready); // Listen for window.onload and resolve deferred 550 551 bindLoad(); // Export commonjs module 552 553 module.exports = window.Webflow = Webflow; 554 555 /***/ 556 }), 557/* 4 */ 558/***/ (function (module, exports, __webpack_require__) { 559 560/* WEBPACK VAR INJECTION */(function (global) { 561 var O = 'object'; 562 var check = function (it) { 563 return it && it.Math == Math && it; 564 }; 565 566 // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 567 module.exports = 568 // eslint-disable-next-line no-undef 569 check(typeof globalThis == O && globalThis) || 570 check(typeof window == O && window) || 571 check(typeof self == O && self) || 572 check(typeof global == O && global) || 573 // eslint-disable-next-line no-new-func 574 Function('return this')(); 575 576 /* WEBPACK VAR INJECTION */ 577 }.call(this, __webpack_require__(23))) 578 579 /***/ 580 }), 581/* 5 */ 582/***/ (function (module, exports, __webpack_require__) { 583 584 var freeGlobal = __webpack_require__(90); 585 586 /** Detect free variable `self`. */ 587 var freeSelf = typeof self == 'object' && self && self.Object === Object && self; 588 589 /** Used as a reference to the global object. */ 590 var root = freeGlobal || freeSelf || Function('return this')(); 591 592 module.exports = root; 593 594 595 /***/ 596 }), 597/* 6 */
vendor: 3,766 bytes, lines 598-744
598/***/ (function (module, exports) { 599 600 /** 601 * Checks if `value` is the 602 * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) 603 * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) 604 * 605 * @static 606 * @memberOf _ 607 * @since 0.1.0 608 * @category Lang 609 * @param {*} value The value to check. 610 * @returns {boolean} Returns `true` if `value` is an object, else `false`. 611 * @example 612 * 613 * _.isObject({}); 614 * // => true 615 * 616 * _.isObject([1, 2, 3]); 617 * // => true 618 * 619 * _.isObject(_.noop); 620 * // => true 621 * 622 * _.isObject(null); 623 * // => false 624 */ 625 function isObject(value) { 626 var type = typeof value; 627 return value != null && (type == 'object' || type == 'function'); 628 } 629 630 module.exports = isObject; 631 632 633 /***/ 634 }), 635/* 7 */ 636/***/ (function (module, exports, __webpack_require__) { 637 638 var baseMatches = __webpack_require__(178), 639 baseMatchesProperty = __webpack_require__(232), 640 identity = __webpack_require__(60), 641 isArray = __webpack_require__(1), 642 property = __webpack_require__(241); 643 644 /** 645 * The base implementation of `_.iteratee`. 646 * 647 * @private 648 * @param {*} [value=_.identity] The value to convert to an iteratee. 649 * @returns {Function} Returns the iteratee. 650 */ 651 function baseIteratee(value) { 652 // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. 653 // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. 654 if (typeof value == 'function') { 655 return value; 656 } 657 if (value == null) { 658 return identity; 659 } 660 if (typeof value == 'object') { 661 return isArray(value) 662 ? baseMatchesProperty(value[0], value[1]) 663 : baseMatches(value); 664 } 665 return property(value); 666 } 667 668 module.exports = baseIteratee; 669 670 671 /***/ 672 }), 673/* 8 */ 674/***/ (function (module, exports, __webpack_require__) { 675 676 var baseIsNative = __webpack_require__(190), 677 getValue = __webpack_require__(195); 678 679 /** 680 * Gets the native function at `key` of `object`. 681 * 682 * @private 683 * @param {Object} object The object to query. 684 * @param {string} key The key of the method to get. 685 * @returns {*} Returns the function if it's native, else `undefined`. 686 */ 687 function getNative(object, key) { 688 var value = getValue(object, key); 689 return baseIsNative(value) ? value : undefined; 690 } 691 692 module.exports = getNative; 693 694 695 /***/ 696 }), 697/* 9 */ 698/***/ (function (module, exports) { 699 700 /** 701 * Checks if `value` is object-like. A value is object-like if it's not `null` 702 * and has a `typeof` result of "object". 703 * 704 * @static 705 * @memberOf _ 706 * @since 4.0.0 707 * @category Lang 708 * @param {*} value The value to check. 709 * @returns {boolean} Returns `true` if `value` is object-like, else `false`. 710 * @example 711 * 712 * _.isObjectLike({}); 713 * // => true 714 * 715 * _.isObjectLike([1, 2, 3]); 716 * // => true 717 * 718 * _.isObjectLike(_.noop); 719 * // => false 720 * 721 * _.isObjectLike(null); 722 * // => false 723 */ 724 function isObjectLike(value) { 725 return value != null && typeof value == 'object'; 726 } 727 728 module.exports = isObjectLike; 729 730 731 /***/ 732 }), 733/* 10 */ 734/***/ (function (module, exports, __webpack_require__) { 735 736 "use strict"; 737 738 739 var _interopRequireWildcard = __webpack_require__(14); 740 741 Object.defineProperty(exports, "__esModule", { 742 value: true 743 }); 744 exports.IX2VanillaUtils = exports.IX2VanillaPlugins = exports.IX2ElementsReducer = exports.IX2EasingUtils = exports.IX2Easings = exp
744orts.IX2BrowserSupport = void 0; 745 746 var IX2BrowserSupport = _interopRequireWildcard(__webpack_require__(45)); 747 748 exports.IX2BrowserSupport = IX2BrowserSupport; 749 750 var IX2Easings = _interopRequireWildcard(__webpack_require__(107)); 751 752 exports.IX2Easings = IX2Easings; 753 754 var IX2EasingUtils = _interopRequireWildcard(__webpack_require__(109)); 755 756 exports.IX2EasingUtils = IX2EasingUtils; 757 758 var IX2ElementsReducer = _interopRequireWildcard(__webpack_require__(248)); 759 760 exports.IX2ElementsReducer = IX2ElementsReducer; 761 762 var IX2VanillaPlugins = _interopRequireWildcard(__webpack_require__(111)); 763 764 exports.IX2VanillaPlugins = IX2VanillaPlugins; 765 766 var IX2VanillaUtils = _interopRequireWildcard(__webpack_require__(250)); 767 768 exports.IX2VanillaUtils = IX2VanillaUtils; 769 770 /***/ 771 }), 772/* 11 */ 773/***/ (function (module, exports, __webpack_require__) { 774 775 var Symbol = __webpack_require__(20), 776 getRawTag = __webpack_require__(191), 777 objectToString = __webpack_require__(192); 778 779 /** `Object#toString` result references. */ 780 var nullTag = '[object Null]', 781 undefinedTag = '[object Undefined]'; 782 783 /** Built-in value references. */ 784 var symToStringTag = Symbol ? Symbol.toStringTag : undefined; 785 786 /** 787 * The base implementation of `getTag` without fallbacks for buggy environments. 788 * 789 * @private 790 * @param {*} value The value to query. 791 * @returns {string} Returns the `toStringTag`. 792 */ 793 function baseGetTag(value) { 794 if (value == null) { 795 return value === undefined ? undefinedTag : nullTag; 796 } 797 return (symToStringTag && symToStringTag in Object(value)) 798 ? getRawTag(value) 799 : objectToString(value); 800 } 801 802 module.exports = baseGetTag; 803 804 805 /***/ 806 }), 807/* 12 */ 808/***/ (function (module, exports, __webpack_require__) { 809 810 var isFunction = __webpack_require__(89), 811 isLength = __webpack_require__(53); 812 813 /** 814 * Checks if `value` is array-like. A value is considered array-like if it's 815 * not a function and has a `value.length` that's an integer greater than or 816 * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. 817 * 818 * @static 819 * @memberOf _ 820 * @since 4.0.0 821 * @category Lang 822 * @param {*} value The value to check. 823 * @returns {boolean} Returns `true` if `value` is array-like, else `false`. 824 * @example 825 * 826 * _.isArrayLike([1, 2, 3]); 827 * // => true 828 * 829 * _.isArrayLike(document.body.children); 830 * // => true 831 * 832 * _.isArrayLike('abc'); 833 * // => true 834 * 835 * _.isArrayLike(_.noop); 836 * // => false 837 */ 838 function isArrayLike(value) { 839 return value != null && isLength(value.length) && !isFunction(value); 840 } 841 842 module.exports = isArrayLike; 843 844 845 /***/ 846 }), 847/* 13 */ 848/***/ (function (module, exports) { 849 850 function _typeof2(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof2(obj); } 851 852 function _typeof(obj) { 853 if (typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol") { 854 module.exports = _typeof = function _typeof(obj) { 855 return _typeof2(obj); 856 }; 857 } else { 858 module.exports = _typeof = function _typeof(obj) { 859 return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : _typeof2(obj); 860 }; 861 } 862 863 return _typeof(obj); 864 } 865 866 module.exports = _typeof; 867 868 /***/ 869 }), 870/* 14 */ 871/***/ (function (module, exports) { 872 873 function _interopRequireWildcard(obj) { 874 if (obj && obj.__esModule) { 875 return obj; 876 } else { 877 var newObj = {}; 878 879 if (obj != null) { 880 for (var key in obj) { 881 if (Object.prototype.hasOwnProperty.call(obj, key)) { 882 var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; 883 884 if (desc.get || desc.set) { 885 Object.defineProperty(newObj, key, desc); 886 } else { 887 newObj[key] = obj[key]; 888 } 889 } 890 } 891 } 892 893 newObj["default"] = obj; 894 return newObj; 895 } 896 } 897 898 module.exports = _interopRequireWildcard; 899 900 /***/ 901 }), 902/* 15 */ 903/***/ (function (module, exports, __webpack_require__) { 904 905 var fails = __webpack_require__(16); 906 907 // Thank's IE8 for his funny defineProperty 908 module.exports = !fails(function () { 909 return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7; 910 }); 911 912 913 /***/ 914 }), 915/* 16 */
916/***/ (function (module, exports) { 917 918 module.exports = function (exec) { 919 try { 920 return !!exec(); 921 } catch (error) { 922 return true; 923 } 924 }; 925 926 927 /***/ 928 }), 929/* 17 */ 930/***/ (function (module, exports) { 931 932 var hasOwnProperty = {}.hasOwnProperty; 933 934 module.exports = function (it, key) { 935 return hasOwnProperty.call(it, key); 936 }; 937 938 939 /***/ 940 }), 941/* 18 */ 942/***/ (function (module, exports, __webpack_require__) { 943 944 var DESCRIPTORS = __webpack_require__(15); 945 var definePropertyModule = __webpack_require__(39); 946 var createPropertyDescriptor = __webpack_require__(68); 947 948 module.exports = DESCRIPTORS ? function (object, key, value) { 949 return definePropertyModule.f(object, key, createPropertyDescriptor(1, value)); 950 } : function (object, key, value) { 951 object[key] = value; 952 return object; 953 }; 954 955 956 /***/ 957 }), 958/* 19 */ 959/***/ (function (module, exports, __webpack_require__) { 960 961 "use strict"; 962 963 964 Object.defineProperty(exports, "__esModule", { 965 value: true 966 }); 967 968 var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; 969 970 exports.clone = clone; 971 exports.addLast = addLast; 972 exports.addFirst = addFirst; 973 exports.removeLast = removeLast; 974 exports.removeFirst = removeFirst; 975 exports.insert = insert; 976 exports.removeAt = removeAt; 977 exports.replaceAt = replaceAt; 978 exports.getIn = getIn; 979 exports.set = set; 980 exports.setIn = setIn; 981 exports.update = update; 982 exports.updateIn = updateIn; 983 exports.merge = merge; 984 exports.mergeDeep = mergeDeep; 985 exports.mergeIn = mergeIn; 986 exports.omit = omit; 987 exports.addDefaults = addDefaults; 988 989 990 /*! 991 * Timm 992 * 993 * Immutability helpers with fast reads and acceptable writes. 994 * 995 * @copyright Guillermo Grau Panea 2016 996 * @license MIT 997 */ 998 999 var INVALID_ARGS = 'INVALID_ARGS'; 1000 1001 // =============================================== 1002 // ### Helpers 1003 // =============================================== 1004 1005 1006 function throwStr(msg) { 1007 throw new Error(msg); 1008 } 1009 1010 function getKeysAndSymbols(obj) { 1011 var keys = Object.keys(obj); 1012 if (Object.getOwnPropertySymbols) { 1013 return keys.concat(Object.getOwnPropertySymbols(obj)); 1014 } 1015 return keys; 1016 } 1017 1018 var hasOwnProperty = {}.hasOwnProperty; 1019 1020 function clone(obj) { 1021 if (Array.isArray(obj)) return obj.slice(); 1022 var keys = getKeysAndSymbols(obj); 1023 var out = {}; 1024 for (var i = 0; i < keys.length; i++) { 1025 var key = keys[i]; 1026 out[key] = obj[key]; 1027 } 1028 return out; 1029 } 1030 1031 function doMerge(fAddDefaults, fDeep, first) { 1032 var out = first; 1033 !(out != null) && throwStr(false ? undefined : INVALID_ARGS); 1034 var fChanged = false; 1035 1036 for (var _len = arguments.length, rest = Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) { 1037 rest[_key - 3] = arguments[_key]; 1038 } 1039 1040 for (var idx = 0; idx < rest.length; idx++) { 1041 var obj = rest[idx]; 1042 if (obj == null) continue; 1043 var keys = getKeysAndSymbols(obj); 1044 if (!keys.length) continue; 1045 for (var j = 0; j <= keys.length; j++) { 1046 var key = keys[j]; 1047 if (fAddDefaults && out[key] !== undefined) continue; 1048 var nextVal = obj[key]; 1049 if (fDeep && isObject(out[key]) && isObject(nextVal)) { 1050 nextVal = doMerge(fAddDefaults, fDeep, out[key], nextVal); 1051 }
1052 if (nextVal === undefined || nextVal === out[key]) continue; 1053 if (!fChanged) { 1054 fChanged = true; 1055 out = clone(out); 1056 } 1057 out[key] = nextVal; 1058 } 1059 } 1060 return out; 1061 } 1062 1063 function isObject(o) { 1064 var type = typeof o === 'undefined' ? 'undefined' : _typeof(o); 1065 return o != null && (type === 'object' || type === 'function'); 1066 } 1067 1068 // _deepFreeze = (obj) -> 1069 // Object.freeze obj 1070 // for key in Object.getOwnPropertyNames obj 1071 // val = obj[key] 1072 // if isObject(val) and not Object.isFrozen val 1073 // _deepFreeze val 1074 // obj 1075 1076 // =============================================== 1077 // -- ### Arrays 1078 // =============================================== 1079 1080 // -- #### addLast() 1081 // -- Returns a new array with an appended item or items. 1082 // -- 1083 // -- Usage: `addLast<T>(array: Array<T>, val: Array<T>|T): Array<T>` 1084 // -- 1085 // -- ```js 1086 // -- arr = ['a', 'b'] 1087 // -- arr2 = addLast(arr, 'c') 1088 // -- // ['a', 'b', 'c'] 1089 // -- arr2 === arr 1090 // -- // false 1091 // -- arr3 = addLast(arr, ['c', 'd']) 1092 // -- // ['a', 'b', 'c', 'd'] 1093 // -- ``` 1094 // `array.concat(val)` also handles the scalar case, 1095 // but is apparently very slow 1096 function addLast(array, val) { 1097 if (Array.isArray(val)) return array.concat(val); 1098 return array.concat([val]); 1099 } 1100 1101 // -- #### addFirst() 1102 // -- Returns a new array with a prepended item or items. 1103 // -- 1104 // -- Usage: `addFirst<T>(array: Array<T>, val: Array<T>|T): Array<T>` 1105 // -- 1106 // -- ```js 1107 // -- arr = ['a', 'b'] 1108 // -- arr2 = addFirst(arr, 'c') 1109 // -- // ['c', 'a', 'b'] 1110 // -- arr2 === arr 1111 // -- // false 1112 // -- arr3 = addFirst(arr, ['c', 'd']) 1113 // -- // ['c', 'd', 'a', 'b'] 1114 // -- ``` 1115 function addFirst(array, val) { 1116 if (Array.isArray(val)) return val.concat(array); 1117 return [val].concat(array); 1118 } 1119 1120 // -- #### removeLast() 1121 // -- Returns a new array removing the last item. 1122 // -- 1123 // -- Usage: `removeLast<T>(array: Array<T>): Array<T>` 1124 // -- 1125 // -- ```js 1126 // -- arr = ['a', 'b'] 1127 // -- arr2 = removeLast(arr) 1128 // -- // ['a'] 1129 // -- arr2 === arr 1130 // -- // false 1131 // -- 1132 // -- // The same array is returned if there are no changes: 1133 // -- arr3 = [] 1134 // -- removeLast(arr3) === arr3 1135 // -- // true 1136 // -- ``` 1137 function removeLast(array) { 1138 if (!array.length) return array; 1139 return array.slice(0, array.length - 1); 1140 } 1141 1142 // -- #### removeFirst() 1143 // -- Returns a new array removing the first item. 1144 // -- 1145 // -- Usage: `removeFirst<T>(array: Array<T>): Array<T>` 1146 // -- 1147 // -- ```js 1148 // -- arr = ['a', 'b'] 1149 // -- arr2 = removeFirst(arr) 1150 // -- // ['b'] 1151 // -- arr2 === arr 1152 // -- // false 1153 // -- 1154 // -- // The same array is returned if there are no changes: 1155 // -- arr3 = [] 1156 // -- removeFirst(arr3) === arr3 1157 // -- // true 1158 // -- ``` 1159 function removeFirst(array) { 1160 if (!array.length) return array; 1161 return array.slice(1); 1162 } 1163 1164 // -- #### insert() 1165 // -- Returns a new array obtained by inserting an item or items 1166 // -- at a specified index. 1167 // -- 1168 // -- Usage: `insert<T>(array: Array<T>, idx: number, val: Array<T>|T): Array<T>` 1169 // -- 1170 // -- ```js 1171 // -- arr = ['a', 'b', 'c'] 1172 // -- arr2 = insert(arr, 1, 'd') 1173 // -- // ['a', 'd', 'b', 'c'] 1174 // -- arr2 === arr 1175 // -- // false 1176 // -- insert(arr, 1, ['d', 'e']) 1177 // -- // ['a', 'd', 'e', 'b', 'c'] 1178 // -- ``` 1179 function insert(array, idx, val) { 1180 return array.slice(0, idx).concat(Array.isArray(val) ? val : [val]).concat(array.slice(idx)); 1181 } 1182 1183 // -- #### removeAt() 1184 // -- Returns a new array obtained by removing an item at 1185 // -- a specified index. 1186 // -- 1187 // -- Usage: `removeAt<T>(array: Array<T>, idx: number): Array<T>` 1188 // -- 1189 // -- ```js 1190 // -- arr = ['a', 'b', 'c'] 1191 // -- arr2 = removeAt(arr, 1) 1192 // -- // ['a', 'c'] 1193 // -- arr2 === arr 1194 // -- // false 1195 // -- 1196 // -- // The same array is returned if there are no changes: 1197 // -- removeAt(arr, 4) === arr 1198 // -- // true 1199 // -- ``` 1200 function removeAt(array, idx) { 1201 if (idx >= array.length || idx < 0) return array; 1202 return array.slice(0, idx).concat(array.slice(idx + 1)); 1203 } 1204 1205 // -- #### replaceAt() 1206 // -- Returns a new array obtained by replacing an item at 1207 // -- a specified index. If the provided item is the same as 1208 // -- (*referentially equal to*) the previous item at that position, 1209 // -- the original array is returned. 1210 // -- 1211 // -- Usage: `replaceAt<T>(array: Array<T>, idx: number, newItem: T): Array<T>` 1212 // -- 1213 // -- ```js 1214 // -- arr = ['a', 'b', 'c']
1215 // -- arr2 = replaceAt(arr, 1, 'd') 1216 // -- // ['a', 'd', 'c'] 1217 // -- arr2 === arr 1218 // -- // false 1219 // -- 1220 // -- // The same object is returned if there are no changes: 1221 // -- replaceAt(arr, 1, 'b') === arr 1222 // -- // true 1223 // -- ``` 1224 function replaceAt(array, idx, newItem) { 1225 if (array[idx] === newItem) return array; 1226 var len = array.length; 1227 var result = Array(len); 1228 for (var i = 0; i < len; i++) { 1229 result[i] = array[i]; 1230 } 1231 result[idx] = newItem; 1232 return result; 1233 } 1234 1235 // =============================================== 1236 // -- ### Collections (objects and arrays) 1237 // =============================================== 1238 // -- The following types are used throughout this section 1239 // -- ```js 1240 // -- type ArrayOrObject = Array<any>|Object; 1241 // -- type Key = number|string; 1242 // -- ``` 1243 1244 // -- #### getIn() 1245 // -- Returns a value from an object at a given path. Works with 1246 // -- nested arrays and objects. If the path does not exist, it returns 1247 // -- `undefined`. 1248 // -- 1249 // -- Usage: `getIn(obj: ?ArrayOrObject, path: Array<Key>): any` 1250 // -- 1251 // -- ```js 1252 // -- obj = { a: 1, b: 2, d: { d1: 3, d2: 4 }, e: ['a', 'b', 'c'] } 1253 // -- getIn(obj, ['d', 'd1']) 1254 // -- // 3 1255 // -- getIn(obj, ['e', 1]) 1256 // -- // 'b' 1257 // -- ``` 1258 function getIn(obj, path) { 1259 !Array.isArray(path) && throwStr(false ? undefined : INVALID_ARGS); 1260 if (obj == null) return undefined; 1261 var ptr = obj; 1262 for (var i = 0; i < path.length; i++) { 1263 var key = path[i]; 1264 ptr = ptr != null ? ptr[key] : undefined; 1265 if (ptr === undefined) return ptr; 1266 } 1267 return ptr; 1268 } 1269 1270 // -- #### set() 1271 // -- Returns a new object with a modified attribute. 1272 // -- If the provided value is the same as (*referentially equal to*) 1273 // -- the previous value, the original object is returned. 1274 // -- 1275 // -- Usage: `set<T>(obj: ?T, key: Key, val: any): T` 1276 // -- 1277 // -- ```js 1278 // -- obj = { a: 1, b: 2, c: 3 } 1279 // -- obj2 = set(obj, 'b', 5) 1280 // -- // { a: 1, b: 5, c: 3 } 1281 // -- obj2 === obj 1282 // -- // false 1283 // -- 1284 // -- // The same object is returned if there are no changes: 1285 // -- set(obj, 'b', 2) === obj 1286 // -- // true 1287 // -- ``` 1288 function set(obj, key, val) { 1289 var fallback = typeof key === 'number' ? [] : {}; 1290 var finalObj = obj == null ? fallback : obj; 1291 if (finalObj[key] === val) return finalObj; 1292 var obj2 = clone(finalObj); 1293 obj2[key] = val; 1294 return obj2; 1295 } 1296 1297 // -- #### setIn() 1298 // -- Returns a new object with a modified **nested** attribute. 1299 // -- 1300 // -- Notes: 1301 // -- 1302 // -- * If the provided value is the same as (*referentially equal to*) 1303 // -- the previous value, the original object is returned. 1304 // -- * If the path does not exist, it will be created before setting 1305 // -- the new value. 1306 // -- 1307 // -- Usage: `setIn<T: ArrayOrObject>(obj: T, path: Array<Key>, val: any): T` 1308 // -- 1309 // -- ```js 1310 // -- obj = { a: 1, b: 2, d: { d1: 3, d2: 4 }, e: { e1: 'foo', e2: 'bar' } } 1311 // -- obj2 = setIn(obj, ['d', 'd1'], 4) 1312 // -- // { a: 1, b: 2, d: { d1: 4, d2: 4 }, e: { e1: 'foo', e2: 'bar' } } 1313 // -- obj2 === obj 1314 // -- // false 1315 // -- obj2.d === obj.d 1316 // -- // false 1317 // -- obj2.e === obj.e 1318 // -- // true 1319 // -- 1320 // -- // The same object is returned if there are no changes: 1321 // -- obj3 = setIn(obj, ['d', 'd1'], 3) 1322 // -- // { a: 1, b: 2, d: { d1: 3, d2: 4 }, e: { e1: 'foo', e2: 'bar' } } 1323 // -- obj3 === obj 1324 // -- // true 1325 // -- obj3.d === obj.d 1326 // -- // true 1327 // -- obj3.e === obj.e 1328 // -- // true 1329 // -- 1330 // -- // ... unknown paths create intermediate keys. Numeric segments are treated as array indices: 1331 // -- setIn({ a: 3 }, ['unknown', 0, 'path'], 4) 1332 // -- // { a: 3, unknown: [{ path: 4 }] } 1333 // -- ``` 1334 function doSetIn(obj, path, val, idx) { 1335 var newValue = void 0; 1336 var key = path[idx]; 1337 if (idx === path.length - 1) { 1338 newValue = val; 1339 } else { 1340 var nestedObj = isObject(obj) && isObject(obj[key]) ? obj[key] : typeof path[idx + 1] === 'number' ? [] : {}; 1341 newValue = doSetIn(nestedObj, path, val, idx + 1); 1342 } 1343 return set(obj, key, newValue); 1344 } 1345 1346 function setIn(obj, path, val) { 1347 if (!path.length) return val; 1348 return doSetIn(obj, path, val, 0); 1349 } 1350 1351 // -- #### update() 1352 // -- Returns a new object with a modified attribute,
1353 // -- calculated via a user-provided callback based on the current value. 1354 // -- If the calculated value is the same as (*referentially equal to*) 1355 // -- the previous value, the original object is returned. 1356 // -- 1357 // -- Usage: `update<T: ArrayOrObject>(obj: T, key: Key, 1358 // -- fnUpdate: (prevValue: any) => any): T` 1359 // -- 1360 // -- ```js 1361 // -- obj = { a: 1, b: 2, c: 3 } 1362 // -- obj2 = update(obj, 'b', (val) => val + 1) 1363 // -- // { a: 1, b: 3, c: 3 } 1364 // -- obj2 === obj 1365 // -- // false 1366 // -- 1367 // -- // The same object is returned if there are no changes: 1368 // -- update(obj, 'b', (val) => val) === obj 1369 // -- // true 1370 // -- ``` 1371 function update(obj, key, fnUpdate) { 1372 var prevVal = obj == null ? undefined : obj[key]; 1373 var nextVal = fnUpdate(prevVal); 1374 return set(obj, key, nextVal); 1375 } 1376 1377 // -- #### updateIn() 1378 // -- Returns a new object with a modified **nested** attribute, 1379 // -- calculated via a user-provided callback based on the current value. 1380 // -- If the calculated value is the same as (*referentially equal to*) 1381 // -- the previous value, the original object is returned. 1382 // -- 1383 // -- Usage: `updateIn<T: ArrayOrObject>(obj: T, path: Array<Key>, 1384 // -- fnUpdate: (prevValue: any) => any): T` 1385 // -- 1386 // -- ```js 1387 // -- obj = { a: 1, d: { d1: 3, d2: 4 } } 1388 // -- obj2 = updateIn(obj, ['d', 'd1'], (val) => val + 1) 1389 // -- // { a: 1, d: { d1: 4, d2: 4 } } 1390 // -- obj2 === obj 1391 // -- // false 1392 // -- 1393 // -- // The same object is returned if there are no changes: 1394 // -- obj3 = updateIn(obj, ['d', 'd1'], (val) => val) 1395 // -- // { a: 1, d: { d1: 3, d2: 4 } } 1396 // -- obj3 === obj 1397 // -- // true 1398 // -- ``` 1399 function updateIn(obj, path, fnUpdate) { 1400 var prevVal = getIn(obj, path); 1401 var nextVal = fnUpdate(prevVal); 1402 return setIn(obj, path, nextVal); 1403 } 1404 1405 // -- #### merge() 1406 // -- Returns a new object built as follows: the overlapping keys from the 1407 // -- second one overwrite the corresponding entries from the first one. 1408 // -- Similar to `Object.assign()`, but immutable. 1409 // -- 1410 // -- Usage: 1411 // -- 1412 // -- * `merge(obj1: Object, obj2: ?Object): Object` 1413 // -- * `merge(obj1: Object, ...objects: Array<?Object>): Object` 1414 // -- 1415 // -- The unmodified `obj1` is returned if `obj2` does not *provide something 1416 // -- new to* `obj1`, i.e. if either of the following 1417 // -- conditions are true: 1418 // -- 1419 // -- * `obj2` is `null` or `undefined` 1420 // -- * `obj2` is an object, but it is empty 1421 // -- * All attributes of `obj2` are `undefined` 1422 // -- * All attributes of `obj2` are referentially equal to the 1423 // -- corresponding attributes of `obj1` 1424 // -- 1425 // -- Note that `undefined` attributes in `obj2` do not modify the 1426 // -- corresponding attributes in `obj1`. 1427 // -- 1428 // -- ```js 1429 // -- obj1 = { a: 1, b: 2, c: 3 } 1430 // -- obj2 = { c: 4, d: 5 } 1431 // -- obj3 = merge(obj1, obj2) 1432 // -- // { a: 1, b: 2, c: 4, d: 5 } 1433 // -- obj3 === obj1 1434 // -- // false 1435 // -- 1436 // -- // The same object is returned if there are no changes: 1437 // -- merge(obj1, { c: 3 }) === obj1 1438 // -- // true 1439 // -- ``` 1440 function merge(a, b, c, d, e, f) { 1441 for (var _len2 = arguments.length, rest = Array(_len2 > 6 ? _len2 - 6 : 0), _key2 = 6; _key2 < _len2; _key2++) { 1442 rest[_key2 - 6] = arguments[_key2]; 1443 } 1444 1445 return rest.length ? doMerge.call.apply(doMerge, [null, false, false, a, b, c, d, e, f].concat(rest)) : doMerge(false, false, a, b, c, d, e, f); 1446 } 1447 1448 // -- #### mergeDeep() 1449 // -- Returns a new object built as follows: the overlapping keys from the 1450 // -- second one overwrite the corresponding entries from the first one. 1451 // -- If both the first and second entries are objects they are merged recursively. 1452 // -- Similar to `Object.assign()`, but immutable, and deeply merging. 1453 // -- 1454 // -- Usage: 1455 // -- 1456 // -- * `mergeDeep(obj1: Object, obj2: ?Object): Object` 1457 // -- * `mergeDeep(obj1: Object, ...objects: Array<?Object>): Object` 1458 // -- 1459 // -- The unmodified `obj1` is returned if `obj2` does not *provide something 1460 // -- new to* `obj1`, i.e. if either of the following 1461 // -- conditions are true: 1462 // -- 1463 // -- * `obj2` is `null` or `undefined` 1464 // -- * `obj2` is an object, but it is empty 1465 // -- * All attributes of `obj2` are `undefined` 1466 // -- * All attributes of `obj2` are referentially equal to the
1467 // -- corresponding attributes of `obj1` 1468 // -- 1469 // -- Note that `undefined` attributes in `obj2` do not modify the 1470 // -- corresponding attributes in `obj1`. 1471 // -- 1472 // -- ```js 1473 // -- obj1 = { a: 1, b: 2, c: { a: 1 } } 1474 // -- obj2 = { b: 3, c: { b: 2 } } 1475 // -- obj3 = mergeDeep(obj1, obj2) 1476 // -- // { a: 1, b: 3, c: { a: 1, b: 2 } } 1477 // -- obj3 === obj1 1478 // -- // false 1479 // -- 1480 // -- // The same object is returned if there are no changes: 1481 // -- mergeDeep(obj1, { c: { a: 1 } }) === obj1 1482 // -- // true 1483 // -- ``` 1484 function mergeDeep(a, b, c, d, e, f) { 1485 for (var _len3 = arguments.length, rest = Array(_len3 > 6 ? _len3 - 6 : 0), _key3 = 6; _key3 < _len3; _key3++) { 1486 rest[_key3 - 6] = arguments[_key3]; 1487 } 1488 1489 return rest.length ? doMerge.call.apply(doMerge, [null, false, true, a, b, c, d, e, f].concat(rest)) : doMerge(false, true, a, b, c, d, e, f); 1490 } 1491 1492 // -- #### mergeIn() 1493 // -- Similar to `merge()`, but merging the value at a given nested path. 1494 // -- Note that the returned type is the same as that of the first argument. 1495 // -- 1496 // -- Usage: 1497 // -- 1498 // -- * `mergeIn<T: ArrayOrObject>(obj1: T, path: Array<Key>, obj2: ?Object): T` 1499 // -- * `mergeIn<T: ArrayOrObject>(obj1: T, path: Array<Key>, 1500 // -- ...objects: Array<?Object>): T` 1501 // -- 1502 // -- ```js 1503 // -- obj1 = { a: 1, d: { b: { d1: 3, d2: 4 } } } 1504 // -- obj2 = { d3: 5 } 1505 // -- obj3 = mergeIn(obj1, ['d', 'b'], obj2) 1506 // -- // { a: 1, d: { b: { d1: 3, d2: 4, d3: 5 } } } 1507 // -- obj3 === obj1 1508 // -- // false 1509 // -- 1510 // -- // The same object is returned if there are no changes: 1511 // -- mergeIn(obj1, ['d', 'b'], { d2: 4 }) === obj1 1512 // -- // true 1513 // -- ``` 1514 function mergeIn(a, path, b, c, d, e, f) { 1515 var prevVal = getIn(a, path); 1516 if (prevVal == null) prevVal = {}; 1517 var nextVal = void 0; 1518 1519 for (var _len4 = arguments.length, rest = Array(_len4 > 7 ? _len4 - 7 : 0), _key4 = 7; _key4 < _len4; _key4++) { 1520 rest[_key4 - 7] = arguments[_key4]; 1521 } 1522 1523 if (rest.length) { 1524 nextVal = doMerge.call.apply(doMerge, [null, false, false, prevVal, b, c, d, e, f].concat(rest)); 1525 } else { 1526 nextVal = doMerge(false, false, prevVal, b, c, d, e, f); 1527 } 1528 return setIn(a, path, nextVal); 1529 } 1530 1531 // -- #### omit() 1532 // -- Returns an object excluding one or several attributes. 1533 // -- 1534 // -- Usage: `omit(obj: Object, attrs: Array<string>|string): Object` 1535 // 1536 // -- ```js 1537 // -- obj = { a: 1, b: 2, c: 3, d: 4 } 1538 // -- omit(obj, 'a') 1539 // -- // { b: 2, c: 3, d: 4 } 1540 // -- omit(obj, ['b', 'c']) 1541 // -- // { a: 1, d: 4 } 1542 // -- 1543 // -- // The same object is returned if there are no changes: 1544 // -- omit(obj, 'z') === obj1 1545 // -- // true 1546 // -- ``` 1547 function omit(obj, attrs) { 1548 var omitList = Array.isArray(attrs) ? attrs : [attrs]; 1549 var fDoSomething = false; 1550 for (var i = 0; i < omitList.length; i++) { 1551 if (hasOwnProperty.call(obj, omitList[i])) { 1552 fDoSomething = true; 1553 break; 1554 } 1555 } 1556 if (!fDoSomething) return obj; 1557 var out = {}; 1558 var keys = getKeysAndSymbols(obj); 1559 for (var _i = 0; _i < keys.length; _i++) { 1560 var key = keys[_i]; 1561 if (omitList.indexOf(key) >= 0) continue; 1562 out[key] = obj[key]; 1563 } 1564 return out; 1565 } 1566 1567 // -- #### addDefaults() 1568 // -- Returns a new object built as follows: `undefined` keys in the first one 1569 // -- are filled in with the corresponding values from the second one 1570 // -- (even if they are `null`). 1571 // -- 1572 // -- Usage: 1573 // -- 1574 // -- * `addDefaults(obj: Object, defaults: Object): Object` 1575 // -- * `addDefaults(obj: Object, ...defaultObjects: Array<?Object>): Object` 1576 // -- 1577 // -- ```js 1578 // -- obj1 = { a: 1, b: 2, c: 3 } 1579 // -- obj2 = { c: 4, d: 5, e: null } 1580 // -- obj3 = addDefaults(obj1, obj2) 1581 // -- // { a: 1, b: 2, c: 3, d: 5, e: null } 1582 // -- obj3 === obj1 1583 // -- // false 1584 // -- 1585 // -- // The same object is returned if there are no changes: 1586 // -- addDefaults(obj1, { c: 4 }) === obj1 1587 // -- // true 1588 // -- ``` 1589 function addDefaults(a, b, c, d, e, f) { 1590 for (var _len5 = arguments.length, rest = Array(_len5 > 6 ? _len5 - 6 : 0), _key5 = 6; _key5 < _len5; _key5++) { 1591 rest[_key5 - 6] = arguments[_key5]; 1592 } 1593 1594 return rest.length ? doMerge.call.apply(doMerge, [null, true, false, a, b, c, d, e, f].concat(rest)) : doMerge(true, false, a, b, c, d, e, f); 1595 } 1596 1597 // =============================================== 1598 // ### Public API 1599 // =============================================== 1600 var timm = { 1601 clone: clone, 1602 addLast: addLast, 1603 addFirst: addFirst, 1604 removeLast: removeLast, 1605 removeFirst: removeFirst, 1606 insert: insert, 1607 removeAt: removeAt, 1608 replaceAt: replaceAt, 1609 1610 getIn: getIn, 1611 // eslint-disable-next-line object-shorthand 1612 set: set, // so that flow doesn't complain 1613 setIn: setIn, 1614 update: update, 1615 updateIn: updateIn, 1616 merge: merge, 1617 mergeDeep: mergeDeep, 1618 mergeIn: mergeIn, 1619 omit: omit, 1620 addDefaults: addDefaults 1621 }; 1622 1623 exports.default = timm; 1624 1625 1626 /***/ 1627 }), 1628/* 20 */ 1629/***/ (function (module, exports, __webpack_require__) { 1630 1631 var root = __webpack_require__(5); 1632 1633 /** Built-in value references. */ 1634 var Symbol = root.Symbol; 1635 1636 module.exports = Symbol; 1637 1638 1639 /***/ 1640 }), 1641/* 21 */ 1642/***/ (function (module, exports, __webpack_require__) { 1643 1644 var isSymbol = __webpack_require__(36); 1645 1646 /** Used as references for various `Number` constants. */ 1647 var INFINITY = 1 / 0; 1648 1649 /** 1650 * Converts `value` to a string key if it's not a string or symbol. 1651 * 1652 * @private 1653 * @param {*} value The value to inspect. 1654 * @returns {string|symbol} Returns the key. 1655 */ 1656 function toKey(value) { 1657 if (typeof value == 'string' || isSymbol(value)) { 1658 return value; 1659 } 1660 var result = (value + ''); 1661 return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; 1662 } 1663 1664 module.exports = toKey; 1665 1666 1667 /***/ 1668 }), 1669/* 22 */ 1670/***/ (function (module, exports, __webpack_require__) { 1671 1672 "use strict"; 1673 // @wf-will-never-add-flow-to-this-file 1674 1675 /* globals window, document */ 1676 1677 /* eslint-disable no-var */ 1678 // eslint-disable-next-line strict 1679 1680 1681 var IXEvents = __webpack_require__(37); 1682 1683 function dispatchCustomEvent(element, eventName) { 1684 var event = document.createEvent('CustomEvent'); 1685 event.initCustomEvent(eventName, true, true, null); 1686 element.dispatchEvent(event); 1687 } 1688 /** 1689 * Webflow: IX Event triggers for other modules 1690 */ 1691 1692 1693 var $ = window.jQuery; 1694 var api = {}; 1695 var namespace = '.w-ix'; 1696 var eventTriggers = { 1697 reset: function reset(i, el) { 1698 IXEvents.triggers.reset(i, el); 1699 }, 1700 intro: function intro(i, el) { 1701 IXEvents.triggers.intro(i, el); 1702 dispatchCustomEvent(el, 'COMPONENT_ACTIVE'); 1703 }, 1704 outro: function outro(i, el) { 1705 IXEvents.triggers.outro(i, el); 1706 dispatchCustomEvent(el, 'COMPONENT_INACTIVE'); 1707 } 1708 }; 1709 api.triggers = {}; 1710 api.types = { 1711 INTRO: 'w-ix-intro' + namespace, 1712 OUTRO: 'w-ix-outro' + namespace 1713 }; 1714 $.extend(api.triggers, eventTriggers); 1715 module.exports = api; 1716 1717 /***/ 1718 }), 1719/* 23 */
1720/***/ (function (module, exports) { 1721 1722 var g; 1723 1724 // This works in non-strict mode 1725 g = (function () { 1726 return this; 1727 })(); 1728 1729 try { 1730 // This works if eval is allowed (see CSP) 1731 g = g || new Function("return this")(); 1732 } catch (e) { 1733 // This works if the window reference is available 1734 if (typeof window === "object") g = window; 1735 } 1736 1737 // g can still be undefined, but nothing to do about it... 1738 // We return undefined, instead of nothing here, so it's 1739 // easier to handle this case. if(!global) { ...} 1740 1741 module.exports = g; 1742 1743 1744 /***/ 1745 }), 1746/* 24 */ 1747/***/ (function (module, exports) { 1748 1749 module.exports = function (it) { 1750 return typeof it === 'object' ? it !== null : typeof it === 'function'; 1751 }; 1752 1753 1754 /***/ 1755 }), 1756/* 25 */ 1757/***/ (function (module, exports, __webpack_require__) { 1758 1759 var isObject = __webpack_require__(24); 1760 1761 module.exports = function (it) { 1762 if (!isObject(it)) { 1763 throw TypeError(String(it) + ' is not an object'); 1764 } return it; 1765 }; 1766 1767 1768 /***/ 1769 }), 1770/* 26 */ 1771/***/ (function (module, exports, __webpack_require__) { 1772 1773 var global = __webpack_require__(4); 1774 var setGlobal = __webpack_require__(40); 1775 var IS_PURE = __webpack_require__(137); 1776 1777 var SHARED = '__core-js_shared__'; 1778 var store = global[SHARED] || setGlobal(SHARED, {}); 1779 1780 (module.exports = function (key, value) { 1781 return store[key] || (store[key] = value !== undefined ? value : {}); 1782 })('versions', []).push({ 1783 version: '3.1.3', 1784 mode: IS_PURE ? 'pure' : 'global', 1785 copyright: '© 2019 Denis Pushkarev (zloirock.ru)' 1786 }); 1787 1788 1789 /***/ 1790 }), 1791/* 27 */ 1792/***/ (function (module, exports) { 1793 1794 function _defineProperty(obj, key, value) { 1795 if (key in obj) { 1796 Object.defineProperty(obj, key, { 1797 value: value, 1798 enumerable: true, 1799 configurable: true, 1800 writable: true 1801 }); 1802 } else { 1803 obj[key] = value; 1804 } 1805 1806 return obj; 1807 } 1808 1809 module.exports = _defineProperty; 1810 1811 /***/ 1812 }), 1813/* 28 */ 1814/***/ (function (module, exports) { 1815 1816 function _extends() { 1817 module.exports = _extends = Object.assign || function (target) { 1818 for (var i = 1; i < arguments.length; i++) { 1819 var source = arguments[i]; 1820 1821 for (var key in source) { 1822 if (Object.prototype.hasOwnProperty.call(source, key)) { 1823 target[key] = source[key]; 1824 } 1825 } 1826 } 1827 1828 return target; 1829 }; 1830 1831 return _extends.apply(this, arguments); 1832 } 1833 1834 module.exports = _extends; 1835 1836 /***/ 1837 }), 1838/* 29 */ 1839/***/ (function (module, exports, __webpack_require__) { 1840 1841 var listCacheClear = __webpack_require__(180), 1842 listCacheDelete = __webpack_require__(181), 1843 listCacheGet = __webpack_require__(182), 1844 listCacheHas = __webpack_require__(183), 1845 listCacheSet = __webpack_require__(184); 1846 1847 /** 1848 * Creates an list cache object. 1849 * 1850 * @private 1851 * @constructor 1852 * @param {Array} [entries] The key-value pairs to cache. 1853 */ 1854 function ListCache(entries) { 1855 var index = -1, 1856 length = entries == null ? 0 : entries.length; 1857 1858 this.clear(); 1859 while (++index < length) { 1860 var entry = entries[index]; 1861 this.set(entry[0], entry[1]); 1862 } 1863 } 1864 1865 // Add methods to `ListCache`. 1866 ListCache.prototype.clear = listCacheClear; 1867 ListCache.prototype['delete'] = listCacheDelete; 1868 ListCache.prototype.get = listCacheGet; 1869 ListCache.prototype.has = listCacheHas; 1870 ListCache.prototype.set = listCacheSet; 1871 1872 module.exports = ListCache; 1873 1874 1875 /***/ 1876 }), 1877/* 30 */ 1878/***/ (function (module, exports, __webpack_require__) { 1879 1880 var eq = __webpack_require__(46); 1881 1882 /** 1883 * Gets the index at which the `key` is found in `array` of key-value pairs. 1884 * 1885 * @private 1886 * @param {Array} array The array to inspect. 1887 * @param {*} key The key to search for. 1888 * @returns {number} Returns the index of the matched value, else `-1`. 1889 */ 1890 function assocIndexOf(array, key) { 1891 var length = array.length; 1892 while (length--) { 1893 if (eq(array[length][0], key)) { 1894 return length; 1895 } 1896 } 1897 return -1; 1898 } 1899 1900 module.exports = assocIndexOf; 1901 1902 1903 /***/ 1904 }), 1905/* 31 */ 1906/***/ (function (module, exports, __webpack_require__) { 1907 1908 var getNative = __webpack_require__(8); 1909 1910 /* Built-in method references that are verified to be native. */ 1911 var nativeCreate = getNative(Object, 'create'); 1912 1913 module.exports = nativeCreate; 1914 1915 1916 /***/ 1917 }), 1918/* 32 */ 1919/***/ (function (module, exports, __webpack_require__) { 1920 1921 var isKeyable = __webpack_require__(204); 1922 1923 /** 1924 * Gets the data for `map`. 1925 * 1926 * @private 1927 * @param {Object} map The map to query. 1928 * @param {string} key The reference key. 1929 * @returns {*} Returns the map data. 1930 */ 1931 function getMapData(map, key) { 1932 var data = map.__data__;
1933 return isKeyable(key) 1934 ? data[typeof key == 'string' ? 'string' : 'hash'] 1935 : data.map; 1936 } 1937 1938 module.exports = getMapData; 1939 1940 1941 /***/ 1942 }), 1943/* 33 */ 1944/***/ (function (module, exports, __webpack_require__) { 1945 1946 var arrayLikeKeys = __webpack_require__(97), 1947 baseKeys = __webpack_require__(54), 1948 isArrayLike = __webpack_require__(12); 1949 1950 /** 1951 * Creates an array of the own enumerable property names of `object`. 1952 * 1953 * **Note:** Non-object values are coerced to objects. See the 1954 * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) 1955 * for more details. 1956 * 1957 * @static 1958 * @since 0.1.0 1959 * @memberOf _ 1960 * @category Object 1961 * @param {Object} object The object to query. 1962 * @returns {Array} Returns the array of property names. 1963 * @example 1964 * 1965 * function Foo() { 1966 * this.a = 1; 1967 * this.b = 2; 1968 * } 1969 * 1970 * Foo.prototype.c = 3; 1971 * 1972 * _.keys(new Foo); 1973 * // => ['a', 'b'] (iteration order is not guaranteed) 1974 * 1975 * _.keys('hi'); 1976 * // => ['0', '1'] 1977 */ 1978 function keys(object) { 1979 return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); 1980 } 1981 1982 module.exports = keys; 1983 1984 1985 /***/ 1986 }), 1987/* 34 */ 1988/***/ (function (module, exports, __webpack_require__) { 1989 1990 var baseIsArguments = __webpack_require__(222), 1991 isObjectLike = __webpack_require__(9); 1992 1993 /** Used for built-in method references. */ 1994 var objectProto = Object.prototype; 1995 1996 /** Used to check objects for own properties. */ 1997 var hasOwnProperty = objectProto.hasOwnProperty; 1998 1999 /** Built-in value references. */ 2000 var propertyIsEnumerable = objectProto.propertyIsEnumerable; 2001 2002 /** 2003 * Checks if `value` is likely an `arguments` object. 2004 * 2005 * @static 2006 * @memberOf _ 2007 * @since 0.1.0 2008 * @category Lang 2009 * @param {*} value The value to check. 2010 * @returns {boolean} Returns `true` if `value` is an `arguments` object, 2011 * else `false`. 2012 * @example 2013 * 2014 * _.isArguments(function() { return arguments; }()); 2015 * // => true 2016 * 2017 * _.isArguments([1, 2, 3]); 2018 * // => false 2019 */ 2020 var isArguments = baseIsArguments(function () { return arguments; }()) ? baseIsArguments : function (value) { 2021 return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && 2022 !propertyIsEnumerable.call(value, 'callee'); 2023 }; 2024 2025 module.exports = isArguments; 2026 2027 2028 /***/ 2029 }), 2030/* 35 */ 2031/***/ (function (module, exports, __webpack_require__) { 2032 2033 var isArray = __webpack_require__(1), 2034 isKey = __webpack_require__(59), 2035 stringToPath = __webpack_require__(233), 2036 toString = __webpack_require__(236); 2037 2038 /** 2039 * Casts `value` to a path array if it's not one. 2040 * 2041 * @private 2042 * @param {*} value The value to inspect. 2043 * @param {Object} [object] The object to query keys on. 2044 * @returns {Array} Returns the cast property path array. 2045 */ 2046 function castPath(value, object) { 2047 if (isArray(value)) { 2048 return value; 2049 } 2050 return isKey(value, object) ? [value] : stringToPath(toString(value)); 2051 } 2052 2053 module.exports = castPath; 2054 2055 2056 /***/ 2057 }), 2058/* 36 */ 2059/***/ (function (module, exports, __webpack_require__) { 2060 2061 var baseGetTag = __webpack_require__(11), 2062 isObjectLike = __webpack_require__(9); 2063 2064 /** `Object#toString` result references. */ 2065 var symbolTag = '[object Symbol]'; 2066 2067 /** 2068 * Checks if `value` is classified as a `Symbol` primitive or object. 2069 * 2070 * @static 2071 * @memberOf _ 2072 * @since 4.0.0 2073 * @category Lang 2074 * @param {*} value The value to check. 2075 * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. 2076 * @example 2077 * 2078 * _.isSymbol(Symbol.iterator); 2079 * // => true 2080 * 2081 * _.isSymbol('abc'); 2082 * // => false 2083 */ 2084 function isSymbol(value) { 2085 return typeof value == 'symbol' || 2086 (isObjectLike(value) && baseGetTag(value) == symbolTag); 2087 } 2088 2089 module.exports = isSymbol; 2090 2091 2092 /***/ 2093 }), 2094/* 37 */ 2095/***/ (function (module, exports, __webpack_require__) { 2096 2097 "use strict"; 2098 // @wf-will-never-add-flow-to-this-file 2099 2100 /* globals window */ 2101 2102 /* eslint-disable no-var */ 2103 2104 /** 2105 * Webflow: IX Event triggers for other modules 2106 */ 2107 // eslint-disable-next-line strict 2108 2109 2110 var $ = window.jQuery; 2111 var api = {}; 2112 var eventQueue = []; 2113 var namespace = '.w-ix'; 2114 var eventTriggers = { 2115 reset: function reset(i, el) { 2116 el.__wf_intro = null; 2117 }, 2118 intro: function intro(i, el) { 2119 if (el.__wf_intro) { 2120 return; 2121 } 2122 2123 el.__wf_intro = true; 2124 $(el).triggerHandler(api.types.INTRO); 2125 }, 2126 outro: function outro(i, el) { 2127 if (!el.__wf_intro) { 2128 return; 2129 } 2130 2131 el.__wf_intro = null; 2132 $(el).triggerHandler(api.types.OUTRO); 2133 } 2134 }; 2135 api.triggers = {}; 2136 api.types = { 2137 INTRO: 'w-ix-intro' + namespace, 2138 OUTRO: 'w-ix-outro' + namespace 2139 }; // Trigger any events in queue + restore trigger methods 2140 2141 api.init = function () { 2142 var count = eventQueue.length; 2143 2144 for (var i = 0; i < count; i++) { 2145 var memo = eventQueue[i]; 2146 memo[0](0, memo[1]); 2147 } 2148 2149 eventQueue = []; 2150 $.extend(api.triggers, eventTriggers); 2151 }; // Replace all triggers with async wrapper to queue events until init 2152 2153 2154 api.async = function () { 2155 for (var key in eventTriggers) { 2156 var func = eventTriggers[key]; 2157 2158 if (!eventTriggers.hasOwnProperty(key)) { 2159 continue; 2160 } // Replace trigger method with async wrapper 2161 2162 2163 api.triggers[key] = function (i, el) { 2164 eventQueue.push([func, el]); 2165 }; 2166 } 2167 }; // Default triggers to async queue 2168 2169 2170 api.async(); 2171 module.exports = api; 2172 2173 /***/ 2174 }), 2175/* 38 */ 2176/***/ (function (module, exports, __webpack_require__) { 2177 2178 // toObject with fallback for non-array-like ES3 strings 2179 var IndexedObject = __webpack_require__(133); 2180 var requireObjectCoercible = __webpack_require__(135); 2181 2182 module.exports = function (it) { 2183 return IndexedObject(requireObjectCoercible(it)); 2184 }; 2185 2186 2187 /***/ 2188 }), 2189/* 39 */ 2190/***/ (function (module, exports, __webpack_require__) { 2191 2192 var DESCRIPTORS = __webpack_require__(15); 2193 var IE8_DOM_DEFINE = __webpack_require__(70); 2194 var anObject = __webpack_require__(25); 2195 var toPrimitive = __webpack_require__(69); 2196 2197 var nativeDefineProperty = Object.defineProperty; 2198 2199 // `Object.defineProperty` method 2200 // https://tc39.github.io/ecma262/#sec-object.defineproperty 2201 exports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) { 2202 anObject(O); 2203 P = toPrimitive(P, true); 2204 anObject(Attributes); 2205 if (IE8_DOM_DEFINE) try { 2206 return nativeDefineProperty(O, P, Attributes); 2207 } catch (error) { /* empty */ } 2208 if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported'); 2209 if ('value' in Attributes) O[P] = Attributes.value; 2210 return O; 2211 }; 2212 2213 2214 /***/ 2215 }), 2216/* 40 */ 2217/***/ (function (module, exports, __webpack_require__) { 2218 2219 var global = __webpack_require__(4); 2220 var hide = __webpack_require__(18); 2221 2222 module.exports = function (key, value) {
vendor: 1,616 bytes, lines 2223-2283
2223 try { 2224 hide(global, key, value); 2225 } catch (error) { 2226 global[key] = value; 2227 } return value; 2228 }; 2229 2230 2231 /***/ 2232 }), 2233/* 41 */ 2234/***/ (function (module, exports) { 2235 2236 module.exports = {}; 2237 2238 2239 /***/ 2240 }), 2241/* 42 */ 2242/***/ (function (module, exports) { 2243 2244 // IE8- don't enum bug keys 2245 module.exports = [ 2246 'constructor', 2247 'hasOwnProperty', 2248 'isPrototypeOf', 2249 'propertyIsEnumerable', 2250 'toLocaleString', 2251 'toString', 2252 'valueOf' 2253 ]; 2254 2255 2256 /***/ 2257 }), 2258/* 43 */ 2259/***/ (function (module, __webpack_exports__, __webpack_require__) { 2260 2261 "use strict"; 2262 __webpack_require__.r(__webpack_exports__); 2263/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ActionTypes", function () { return ActionTypes; }); 2264/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function () { return createStore; }); 2265/* harmony import */ var lodash_es_isPlainObject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(80); 2266/* harmony import */ var symbol_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(166); 2267 2268 2269 2270 /** 2271 * These are private action types reserved by Redux. 2272 * For any unknown actions, you must return the current state. 2273 * If the current state is undefined, you must return the initial state. 2274 * Do not reference these action types directly in your code. 2275 */ 2276 var ActionTypes = { 2277 INIT: '@@redux/INIT' 2278 }; 2279 2280 /** 2281 * Creates a Redux store that holds the state tree. 2282 * The only way to change the data in the store is to call `dispatch()` on it. 2283 *
2284 * There should only be a single store in your app. To specify how different 2285 * parts of the state tree respond to actions, you may combine several reducers 2286 * into a single reducer function by using `combineReducers`. 2287 * 2288 * @param {Function} reducer A function that returns the next state tree, given 2289 * the current state tree and the action to handle. 2290 * 2291 * @param {any} [preloadedState] The initial state. You may optionally specify it 2292 * to hydrate the state from the server in universal apps, or to restore a 2293 * previously serialized user session. 2294 * If you use `combineReducers` to produce the root reducer function, this must be 2295 * an object with the same shape as `combineReducers` keys. 2296 * 2297 * @param {Function} enhancer The store enhancer. You may optionally specify it 2298 * to enhance the store with third-party capabilities such as middleware, 2299 * time travel, persistence, etc. The only store enhancer that ships with Redux 2300 * is `applyMiddleware()`. 2301 * 2302 * @returns {Store} A Redux store that lets you read the state, dispatch actions 2303 * and subscribe to changes. 2304 */ 2305 function createStore(reducer, preloadedState, enhancer) { 2306 var _ref2; 2307 2308 if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') { 2309 enhancer = preloadedState; 2310 preloadedState = undefined; 2311 } 2312 2313 if (typeof enhancer !== 'undefined') { 2314 if (typeof enhancer !== 'function') { 2315 throw new Error('Expected the enhancer to be a function.'); 2316 } 2317 2318 return enhancer(createStore)(reducer, preloadedState); 2319 } 2320 2321 if (typeof reducer !== 'function') { 2322 throw new Error('Expected the reducer to be a function.'); 2323 } 2324 2325 var currentReducer = reducer; 2326 var currentState = preloadedState; 2327 var currentListeners = []; 2328 var nextListeners = currentListeners; 2329 var isDispatching = false; 2330 2331 function ensureCanMutateNextListeners() { 2332 if (nextListeners === currentListeners) { 2333 nextListeners = currentListeners.slice(); 2334 } 2335 } 2336 2337 /** 2338 * Reads the state tree managed by the store. 2339 * 2340 * @returns {any} The current state tree of your application. 2341 */ 2342 function getState() { 2343 return currentState; 2344 } 2345 2346 /** 2347 * Adds a change listener. It will be called any time an action is dispatched, 2348 * and some part of the state tree may potentially have changed. You may then 2349 * call `getState()` to read the current state tree inside the callback. 2350 * 2351 * You may call `dispatch()` from a change listener, with the following 2352 * caveats: 2353 * 2354 * 1. The subscriptions are snapshotted just before every `dispatch()` call. 2355 * If you subscribe or unsubscribe while the listeners are being invoked, this 2356 * will not have any effect on the `dispatch()` that is currently in progress. 2357 * However, the next `dispatch()` call, whether nested or not, will use a more 2358 * recent snapshot of the subscription list. 2359 * 2360 * 2. The listener should not expect to see all state changes, as the state 2361 * might have been updated multiple times during a nested `dispatch()` before 2362 * the listener is called. It is, however, guaranteed that all subscribers 2363 * registered before the `dispatch()` started will be called with the latest 2364 * state by the time it exits. 2365 * 2366 * @param {Function} listener A callback to be invoked on every dispatch. 2367 * @returns {Function} A function to remove this change listener. 2368 */ 2369 function subscribe(listener) { 2370 if (typeof listener !== 'function') { 2371 throw new Error('Expected listener to be a function.'); 2372 } 2373 2374 var isSubscribed = true; 2375 2376 ensureCanMutateNextListeners(); 2377 nextListeners.push(listener); 2378 2379 return function unsubscribe() { 2380 if (!isSubscribed) { 2381 return; 2382 } 2383 2384 isSubscribed = false; 2385 2386 ensureCanMutateNextListeners(); 2387 var index = nextListeners.indexOf(listener); 2388 nextListeners.splice(index, 1); 2389 }; 2390 } 2391 2392 /**
2393 * Dispatches an action. It is the only way to trigger a state change. 2394 * 2395 * The `reducer` function, used to create the store, will be called with the 2396 * current state tree and the given `action`. Its return value will 2397 * be considered the **next** state of the tree, and the change listeners 2398 * will be notified. 2399 * 2400 * The base implementation only supports plain object actions. If you want to 2401 * dispatch a Promise, an Observable, a thunk, or something else, you need to 2402 * wrap your store creating function into the corresponding middleware. For 2403 * example, see the documentation for the `redux-thunk` package. Even the 2404 * middleware will eventually dispatch plain object actions using this method. 2405 * 2406 * @param {Object} action A plain object representing âwhat changedâ. It is 2407 * a good idea to keep actions serializable so you can record and replay user 2408 * sessions, or use the time travelling `redux-devtools`. An action must have 2409 * a `type` property which may not be `undefined`. It is a good idea to use 2410 * string constants for action types. 2411 * 2412 * @returns {Object} For convenience, the same action object you dispatched. 2413 * 2414 * Note that, if you use a custom middleware, it may wrap `dispatch()` to 2415 * return something else (for example, a Promise you can await). 2416 */ 2417 function dispatch(action) { 2418 if (!Object(lodash_es_isPlainObject__WEBPACK_IMPORTED_MODULE_0__["default"])(action)) { 2419 throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.'); 2420 } 2421 2422 if (typeof action.type === 'undefined') { 2423 throw new Error('Actions may not have an undefined "type" property. ' + 'Have you misspelled a constant?'); 2424 } 2425 2426 if (isDispatching) { 2427 throw new Error('Reducers may not dispatch actions.'); 2428 } 2429 2430 try { 2431 isDispatching = true; 2432 currentState = currentReducer(currentState, action); 2433 } finally { 2434 isDispatching = false; 2435 } 2436 2437 var listeners = currentListeners = nextListeners; 2438 for (var i = 0; i < listeners.length; i++) { 2439 listeners[i](); 2440 } 2441 2442 return action; 2443 } 2444 2445 /** 2446 * Replaces the reducer currently used by the store to calculate the state. 2447 * 2448 * You might need this if your app implements code splitting and you want to 2449 * load some of the reducers dynamically. You might also need this if you 2450 * implement a hot reloading mechanism for Redux. 2451 * 2452 * @param {Function} nextReducer The reducer for the store to use instead. 2453 * @returns {void} 2454 */ 2455 function replaceReducer(nextReducer) { 2456 if (typeof nextReducer !== 'function') { 2457 throw new Error('Expected the nextReducer to be a function.'); 2458 } 2459 2460 currentReducer = nextReducer; 2461 dispatch({ type: ActionTypes.INIT }); 2462 } 2463 2464 /** 2465 * Interoperability point for observable/reactive libraries. 2466 * @returns {observable} A minimal observable of state changes. 2467 * For more information, see the observable proposal: 2468 * https://github.com/zenparsing/es-observable 2469 */ 2470 function observable() { 2471 var _ref; 2472 2473 var outerSubscribe = subscribe; 2474 return _ref = { 2475 /** 2476 * The minimal observable subscription method. 2477 * @param {Object} observer Any object that can be used as an observer. 2478 * The observer object should have a `next` method. 2479 * @returns {subscription} An object with an `unsubscribe` method that can 2480 * be used to unsubscribe the observable from the store, and prevent further 2481 * emission of values from the observable. 2482 */ 2483 subscribe: function subscribe(observer) { 2484 if (typeof observer !== 'object') { 2485 throw new TypeError('Expected the observer to be an object.'); 2486 } 2487 2488 function observeState() { 2489 if (observer.next) { 2490 observer.next(getState()); 2491 } 2492 } 2493 2494 observeState(); 2495 var unsubscribe = outerSubscribe(observeState); 2496 return { unsubscribe: unsubscribe }; 2497 } 2498 }
2498, _ref[symbol_observable__WEBPACK_IMPORTED_MODULE_1__["default"]] = function () { 2499 return this; 2500 }, _ref; 2501 } 2502 2503 // When a store is created, an "INIT" action is dispatched so that every 2504 // reducer returns their initial state. This effectively populates 2505 // the initial state tree. 2506 dispatch({ type: ActionTypes.INIT }); 2507 2508 return _ref2 = { 2509 dispatch: dispatch, 2510 subscribe: subscribe, 2511 getState: getState, 2512 replaceReducer: replaceReducer 2513 }, _ref2[symbol_observable__WEBPACK_IMPORTED_MODULE_1__["default"]] = observable, _ref2; 2514 } 2515 2516 /***/ 2517 }), 2518/* 44 */ 2519/***/ (function (module, __webpack_exports__, __webpack_require__) { 2520 2521 "use strict"; 2522 __webpack_require__.r(__webpack_exports__); 2523/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function () { return compose; }); 2524 /** 2525 * Composes single-argument functions from right to left. The rightmost 2526 * function can take multiple arguments as it provides the signature for 2527 * the resulting composite function. 2528 * 2529 * @param {...Function} funcs The functions to compose. 2530 * @returns {Function} A function obtained by composing the argument functions 2531 * from right to left. For example, compose(f, g, h) is identical to doing 2532 * (...args) => f(g(h(...args))). 2533 */ 2534 2535 function compose() { 2536 for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) { 2537 funcs[_key] = arguments[_key]; 2538 } 2539 2540 if (funcs.length === 0) { 2541 return function (arg) { 2542 return arg; 2543 }; 2544 } 2545 2546 if (funcs.length === 1) { 2547 return funcs[0]; 2548 } 2549 2550 var last = funcs[funcs.length - 1]; 2551 var rest = funcs.slice(0, -1); 2552 return function () { 2553 return rest.reduceRight(function (composed, f) { 2554 return f(composed); 2555 }, last.apply(undefined, arguments)); 2556 }; 2557 } 2558 2559 /***/ 2560 }), 2561/* 45 */ 2562/***/ (function (module, exports, __webpack_require__) { 2563 2564 "use strict"; 2565 2566 2567 var _interopRequireDefault = __webpack_require__(0); 2568 2569 Object.defineProperty(exports, "__esModule", { 2570 value: true 2571 }); 2572 exports.TRANSFORM_STYLE_PREFIXED = exports.TRANSFORM_PREFIXED = exports.FLEX_PREFIXED = exports.ELEMENT_MATCHES = exports.withBrowser = exports.IS_BROWSER_ENV = void 0; 2573 2574 var _find = _interopRequireDefault(__webpack_require__(86)); 2575 /* eslint-env browser */ 2576 2577 2578 var IS_BROWSER_ENV = typeof window !== 'undefined'; // $FlowFixMe 2579 2580 exports.IS_BROWSER_ENV = IS_BROWSER_ENV; 2581 2582 var withBrowser = function withBrowser(fn, fallback) { 2583 if (IS_BROWSER_ENV) { 2584 return fn(); 2585 } 2586 2587 return fallback; 2588 }; 2589 2590 exports.withBrowser = withBrowser; 2591 var ELEMENT_MATCHES = withBrowser(function () { 2592 return (0, _find["default"])(['matches', 'matchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector', 'webkitMatchesSelector'], function (key) { 2593 return key in Element.prototype; 2594 }); 2595 }); 2596 exports.ELEMENT_MATCHES = ELEMENT_MATCHES; 2597 var FLEX_PREFIXED = withBrowser(function () { 2598 var el = document.createElement('i'); 2599 var values = ['flex', '-webkit-flex', '-ms-flexbox', '-moz-box', '-webkit-box']; 2600 var none = ''; 2601 2602 try { 2603 var length = values.length; 2604 2605 for (var i = 0; i < length; i++) { 2606 var value = values[i]; 2607 el.style.display = value; 2608 2609 if (el.style.display === value) { 2610 return value; 2611 } 2612 } 2613 2614 return none; 2615 } catch (err) { 2616 return none; 2617 } 2618 }, 'flex'); 2619 exports.FLEX_PREFIXED = FLEX_PREFIXED; 2620 var TRANSFORM_PREFIXED = withBrowser(function () { 2621 var el = document.createElement('i'); 2622 2623 if (el.style.transform == null) { 2624 var prefixes = ['Webkit', 'Moz', 'ms']; 2625 var suffix = 'Transform'; 2626 var length = prefixes.length; 2627 2628 for (var i = 0; i < length; i++) { 2629 var prop = prefixes[i] + suffix; // $FlowFixMe 2630 2631 if (el.style[prop] !== undefined) { 2632 return prop; 2633 } 2634 } 2635 } 2636 2637 return 'transform'; 2638 }, 'transform'); // $FlowFixMe 2639 2640 exports.TRANSFORM_PREFIXED = TRANSFORM_PREFIXED; 2641 var TRANSFORM_PREFIX = TRANSFORM_PREFIXED.split('transform')[0]; 2642 var TRANSFORM_STYLE_PREFIXED = TRANSFORM_PREFIX ? TRANSFORM_PREFIX + 'TransformStyle' : 'transformStyle'; 2643 exports.TRANSFORM_STYLE_PREFIXED = TRANSFORM_STYLE_PREFIXED; 2644 2645 /***/ 2646 }), 2647/* 46 */
vendor: 14,797 bytes, lines 2648-3204
2648/***/ (function (module, exports) { 2649 2650 /** 2651 * Performs a 2652 * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) 2653 * comparison between two values to determine if they are equivalent. 2654 * 2655 * @static 2656 * @memberOf _ 2657 * @since 4.0.0 2658 * @category Lang 2659 * @param {*} value The value to compare. 2660 * @param {*} other The other value to compare. 2661 * @returns {boolean} Returns `true` if the values are equivalent, else `false`. 2662 * @example 2663 * 2664 * var object = { 'a': 1 }; 2665 * var other = { 'a': 1 }; 2666 * 2667 * _.eq(object, object); 2668 * // => true 2669 * 2670 * _.eq(object, other); 2671 * // => false 2672 * 2673 * _.eq('a', 'a'); 2674 * // => true 2675 * 2676 * _.eq('a', Object('a')); 2677 * // => false 2678 * 2679 * _.eq(NaN, NaN); 2680 * // => true 2681 */ 2682 function eq(value, other) { 2683 return value === other || (value !== value && other !== other); 2684 } 2685 2686 module.exports = eq; 2687 2688 2689 /***/ 2690 }), 2691/* 47 */ 2692/***/ (function (module, exports, __webpack_require__) { 2693 2694 var getNative = __webpack_require__(8), 2695 root = __webpack_require__(5); 2696 2697 /* Built-in method references that are verified to be native. */ 2698 var Map = getNative(root, 'Map'); 2699 2700 module.exports = Map; 2701 2702 2703 /***/ 2704 }), 2705/* 48 */ 2706/***/ (function (module, exports, __webpack_require__) { 2707 2708 var mapCacheClear = __webpack_require__(196), 2709 mapCacheDelete = __webpack_require__(203), 2710 mapCacheGet = __webpack_require__(205), 2711 mapCacheHas = __webpack_require__(206), 2712 mapCacheSet = __webpack_require__(207); 2713 2714 /** 2715 * Creates a map cache object to store key-value pairs. 2716 * 2717 * @private 2718 * @constructor 2719 * @param {Array} [entries] The key-value pairs to cache. 2720 */ 2721 function MapCache(entries) { 2722 var index = -1, 2723 length = entries == null ? 0 : entries.length; 2724 2725 this.clear(); 2726 while (++index < length) { 2727 var entry = entries[index]; 2728 this.set(entry[0], entry[1]); 2729 } 2730 } 2731 2732 // Add methods to `MapCache`. 2733 MapCache.prototype.clear = mapCacheClear; 2734 MapCache.prototype['delete'] = mapCacheDelete; 2735 MapCache.prototype.get = mapCacheGet; 2736 MapCache.prototype.has = mapCacheHas; 2737 MapCache.prototype.set = mapCacheSet; 2738 2739 module.exports = MapCache; 2740 2741 2742 /***/ 2743 }), 2744/* 49 */ 2745/***/ (function (module, exports) { 2746 2747 /** 2748 * Appends the elements of `values` to `array`. 2749 * 2750 * @private 2751 * @param {Array} array The array to modify. 2752 * @param {Array} values The values to append. 2753 * @returns {Array} Returns `array`. 2754 */ 2755 function arrayPush(array, values) { 2756 var index = -1, 2757 length = values.length, 2758 offset = array.length; 2759 2760 while (++index < length) { 2761 array[offset + index] = values[index]; 2762 } 2763 return array; 2764 } 2765 2766 module.exports = arrayPush; 2767 2768 2769 /***/ 2770 }), 2771/* 50 */ 2772/***/ (function (module, exports, __webpack_require__) { 2773 2774/* WEBPACK VAR INJECTION */(function (module) { 2775 var root = __webpack_require__(5), 2776 stubFalse = __webpack_require__(223); 2777 2778 /** Detect free variable `exports`. */ 2779 var freeExports = true && exports && !exports.nodeType && exports; 2780 2781 /** Detect free variable `module`. */ 2782 var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; 2783 2784 /** Detect the popular CommonJS extension `module.exports`. */ 2785 var moduleExports = freeModule && freeModule.exports === freeExports; 2786 2787 /** Built-in value references. */ 2788 var Buffer = moduleExports ? root.Buffer : undefined; 2789 2790 /* Built-in method references for those with the same name as other `lodash` methods. */ 2791 var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined; 2792 2793 /** 2794 * Checks if `value` is a buffer. 2795 * 2796 * @static 2797 * @memberOf _ 2798 * @since 4.3.0 2799 * @category Lang 2800 * @param {*} value The value to check. 2801 * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. 2802 * @example 2803 * 2804 * _.isBuffer(new Buffer(2)); 2805 * // => true 2806 * 2807 * _.isBuffer(new Uint8Array(2)); 2808 * // => false 2809 */ 2810 var isBuffer = nativeIsBuffer || stubFalse; 2811 2812 module.exports = isBuffer; 2813 2814 /* WEBPACK VAR INJECTION */ 2815 }.call(this, __webpack_require__(98)(module))) 2816 2817 /***/ 2818 }), 2819/* 51 */ 2820/***/ (function (module, exports) { 2821 2822 /** Used as references for various `Number` constants. */ 2823 var MAX_SAFE_INTEGER = 9007199254740991; 2824 2825 /** Used to detect unsigned integer values. */ 2826 var reIsUint = /^(?:0|[1-9]\d*)$/; 2827 2828 /** 2829 * Checks if `value` is a valid array-like index. 2830 * 2831 * @private 2832 * @param {*} value The value to check. 2833 * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. 2834 * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. 2835 */ 2836 function isIndex(value, length) { 2837 var type = typeof value; 2838 length = length == null ? MAX_SAFE_INTEGER : length; 2839 2840 return !!length && 2841 (type == 'number' || 2842 (type != 'symbol' && reIsUint.test(value))) && 2843 (value > -1 && value % 1 == 0 && value < length); 2844 } 2845 2846 module.exports = isIndex; 2847 2848 2849 /***/ 2850 }), 2851/* 52 */ 2852/***/ (function (module, exports, __webpack_require__) { 2853 2854 var baseIsTypedArray = __webpack_require__(224), 2855 baseUnary = __webpack_require__(225), 2856 nodeUtil = __webpack_require__(226); 2857 2858 /* Node.js helper references. */ 2859 var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; 2860 2861 /** 2862 * Checks if `value` is classified as a typed array. 2863 * 2864 * @static 2865 * @memberOf _ 2866 * @since 3.0.0 2867 * @category Lang 2868 * @param {*} value The value to check. 2869 * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. 2870 * @example 2871 * 2872 * _.isTypedArray(new Uint8Array); 2873 * // => true 2874 * 2875 * _.isTypedArray([]); 2876 * // => false 2877 */ 2878 var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; 2879 2880 module.exports = isTypedArray; 2881 2882 2883 /***/ 2884 }), 2885/* 53 */ 2886/***/ (function (module, exports) { 2887 2888 /** Used as references for various `Number` constants. */ 2889 var MAX_SAFE_INTEGER = 9007199254740991; 2890 2891 /** 2892 * Checks if `value` is a valid array-like length. 2893 * 2894 * **Note:** This method is loosely based on 2895 * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). 2896 * 2897 * @static 2898 * @memberOf _ 2899 * @since 4.0.0 2900 * @category Lang 2901 * @param {*} value The value to check. 2902 * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. 2903 * @example 2904 * 2905 * _.isLength(3); 2906 * // => true 2907 * 2908 * _.isLength(Number.MIN_VALUE); 2909 * // => false 2910 * 2911 * _.isLength(Infinity); 2912 * // => false 2913 * 2914 * _.isLength('3'); 2915 * // => false 2916 */ 2917 function isLength(value) { 2918 return typeof value == 'number' && 2919 value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; 2920 } 2921 2922 module.exports = isLength; 2923 2924 2925 /***/ 2926 }), 2927/* 54 */ 2928/***/ (function (module, exports, __webpack_require__) { 2929 2930 var isPrototype = __webpack_require__(55), 2931 nativeKeys = __webpack_require__(227); 2932 2933 /** Used for built-in method references. */ 2934 var objectProto = Object.prototype; 2935 2936 /** Used to check objects for own properties. */ 2937 var hasOwnProperty = objectProto.hasOwnProperty; 2938 2939 /** 2940 * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. 2941 * 2942 * @private 2943 * @param {Object} object The object to query. 2944 * @returns {Array} Returns the array of property names. 2945 */ 2946 function baseKeys(object) { 2947 if (!isPrototype(object)) { 2948 return nativeKeys(object); 2949 } 2950 var result = []; 2951 for (var key in Object(object)) { 2952 if (hasOwnProperty.call(object, key) && key != 'constructor') { 2953 result.push(key); 2954 } 2955 } 2956 return result; 2957 } 2958 2959 module.exports = baseKeys; 2960 2961 2962 /***/ 2963 }), 2964/* 55 */ 2965/***/ (function (module, exports) { 2966 2967 /** Used for built-in method references. */ 2968 var objectProto = Object.prototype; 2969 2970 /** 2971 * Checks if `value` is likely a prototype object. 2972 * 2973 * @private 2974 * @param {*} value The value to check. 2975 * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. 2976 */ 2977 function isPrototype(value) { 2978 var Ctor = value && value.constructor, 2979 proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; 2980 2981 return value === proto; 2982 } 2983 2984 module.exports = isPrototype; 2985 2986 2987 /***/ 2988 }), 2989/* 56 */ 2990/***/ (function (module, exports, __webpack_require__) { 2991 2992 var DataView = __webpack_require__(228), 2993 Map = __webpack_require__(47), 2994 Promise = __webpack_require__(229), 2995 Set = __webpack_require__(230), 2996 WeakMap = __webpack_require__(100), 2997 baseGetTag = __webpack_require__(11), 2998 toSource = __webpack_require__(91); 2999 3000 /** `Object#toString` result references. */ 3001 var mapTag = '[object Map]', 3002 objectTag = '[object Object]', 3003 promiseTag = '[object Promise]', 3004 setTag = '[object Set]', 3005 weakMapTag = '[object WeakMap]'; 3006 3007 var dataViewTag = '[object DataView]'; 3008 3009 /** Used to detect maps, sets, and weakmaps. */ 3010 var dataViewCtorString = toSource(DataView), 3011 mapCtorString = toSource(Map), 3012 promiseCtorString = toSource(Promise), 3013 setCtorString = toSource(Set), 3014 weakMapCtorString = toSource(WeakMap); 3015 3016 /** 3017 * Gets the `toStringTag` of `value`. 3018 * 3019 * @private 3020 * @param {*} value The value to query. 3021 * @returns {string} Returns the `toStringTag`. 3022 */ 3023 var getTag = baseGetTag; 3024 3025 // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6. 3026 if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || 3027 (Map && getTag(new Map) != mapTag) || 3028 (Promise && getTag(Promise.resolve()) != promiseTag) || 3029 (Set && getTag(new Set) != setTag) || 3030 (WeakMap && getTag(new WeakMap) != weakMapTag)) { 3031 getTag = function (value) { 3032 var result = baseGetTag(value), 3033 Ctor = result == objectTag ? value.constructor : undefined, 3034 ctorString = Ctor ? toSource(Ctor) : ''; 3035 3036 if (ctorString) { 3037 switch (ctorString) { 3038 case dataViewCtorString: return dataViewTag; 3039 case mapCtorString: return mapTag; 3040 case promiseCtorString: return promiseTag; 3041 case setCtorString: return setTag; 3042 case weakMapCtorString: return weakMapTag; 3043 } 3044 } 3045 return result; 3046 }; 3047 } 3048 3049 module.exports = getTag; 3050 3051 3052 /***/ 3053 }), 3054/* 57 */ 3055/***/ (function (module, exports, __webpack_require__) { 3056 3057 var baseGet = __webpack_require__(58); 3058 3059 /** 3060 * Gets the value at `path` of `object`. If the resolved value is 3061 * `undefined`, the `defaultValue` is returned in its place. 3062 * 3063 * @static 3064 * @memberOf _ 3065 * @since 3.7.0 3066 * @category Object 3067 * @param {Object} object The object to query. 3068 * @param {Array|string} path The path of the property to get. 3069 * @param {*} [defaultValue] The value returned for `undefined` resolved values. 3070 * @returns {*} Returns the resolved value. 3071 * @example 3072 * 3073 * var object = { 'a': [{ 'b': { 'c': 3 } }] }; 3074 * 3075 * _.get(object, 'a[0].b.c'); 3076 * // => 3 3077 * 3078 * _.get(object, ['a', '0', 'b', 'c']); 3079 * // => 3 3080 * 3081 * _.get(object, 'a.b.c', 'default'); 3082 * // => 'default' 3083 */ 3084 function get(object, path, defaultValue) { 3085 var result = object == null ? undefined : baseGet(object, path); 3086 return result === undefined ? defaultValue : result; 3087 } 3088 3089 module.exports = get; 3090 3091 3092 /***/ 3093 }), 3094/* 58 */ 3095/***/ (function (module, exports, __webpack_require__) { 3096 3097 var castPath = __webpack_require__(35), 3098 toKey = __webpack_require__(21); 3099 3100 /** 3101 * The base implementation of `_.get` without support for default values. 3102 * 3103 * @private 3104 * @param {Object} object The object to query. 3105 * @param {Array|string} path The path of the property to get. 3106 * @returns {*} Returns the resolved value. 3107 */ 3108 function baseGet(object, path) { 3109 path = castPath(path, object); 3110 3111 var index = 0, 3112 length = path.length; 3113 3114 while (object != null && index < length) { 3115 object = object[toKey(path[index++])]; 3116 } 3117 return (index && index == length) ? object : undefined; 3118 } 3119 3120 module.exports = baseGet; 3121 3122 3123 /***/ 3124 }), 3125/* 59 */ 3126/***/ (function (module, exports, __webpack_require__) { 3127 3128 var isArray = __webpack_require__(1), 3129 isSymbol = __webpack_require__(36); 3130 3131 /** Used to match property names within property paths. */ 3132 var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, 3133 reIsPlainProp = /^\w*$/; 3134 3135 /** 3136 * Checks if `value` is a property name and not a property path. 3137 * 3138 * @private 3139 * @param {*} value The value to check. 3140 * @param {Object} [object] The object to query keys on. 3141 * @returns {boolean} Returns `true` if `value` is a property name, else `false`. 3142 */ 3143 function isKey(value, object) { 3144 if (isArray(value)) { 3145 return false; 3146 } 3147 var type = typeof value; 3148 if (type == 'number' || type == 'symbol' || type == 'boolean' || 3149 value == null || isSymbol(value)) { 3150 return true; 3151 } 3152 return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || 3153 (object != null && value in Object(object)); 3154 } 3155 3156 module.exports = isKey; 3157 3158 3159 /***/ 3160 }), 3161/* 60 */ 3162/***/ (function (module, exports) { 3163 3164 /** 3165 * This method returns the first argument it receives. 3166 * 3167 * @static 3168 * @since 0.1.0 3169 * @memberOf _ 3170 * @category Util 3171 * @param {*} value Any value. 3172 * @returns {*} Returns `value`. 3173 * @example 3174 * 3175 * var object = { 'a': 1 }; 3176 * 3177 * console.log(_.identity(object) === object); 3178 * // => true 3179 */ 3180 function identity(value) { 3181 return value; 3182 } 3183 3184 module.exports = identity; 3185 3186 3187 /***/ 3188 }), 3189/* 61 */ 3190/***/ (function (module, exports, __webpack_require__) { 3191 3192 var isObject = __webpack_require__(6), 3193 isSymbol = __webpack_require__(36); 3194 3195 /** Used as references for various `Number` constants. */ 3196 var NAN = 0 / 0; 3197 3198 /** Used to match leading and trailing whitespace. */ 3199 var reTrim = /^\s+|\s+$/g; 3200 3201 /** Used to detect bad signed hexadecimal string values. */ 3202 var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; 3203 3204 /** Used to detect binary string values. */
vendor: 4,158 bytes, lines 3205-3305
3205 var reIsBinary = /^0b[01]+$/i; 3206 3207 /** Used to detect octal string values. */ 3208 var reIsOctal = /^0o[0-7]+$/i; 3209 3210 /** Built-in method references without a dependency on `root`. */ 3211 var freeParseInt = parseInt; 3212 3213 /** 3214 * Converts `value` to a number. 3215 * 3216 * @static 3217 * @memberOf _ 3218 * @since 4.0.0 3219 * @category Lang 3220 * @param {*} value The value to process. 3221 * @returns {number} Returns the number. 3222 * @example 3223 * 3224 * _.toNumber(3.2); 3225 * // => 3.2 3226 * 3227 * _.toNumber(Number.MIN_VALUE); 3228 * // => 5e-324 3229 * 3230 * _.toNumber(Infinity); 3231 * // => Infinity 3232 * 3233 * _.toNumber('3.2'); 3234 * // => 3.2 3235 */ 3236 function toNumber(value) { 3237 if (typeof value == 'number') { 3238 return value; 3239 } 3240 if (isSymbol(value)) { 3241 return NAN; 3242 } 3243 if (isObject(value)) { 3244 var other = typeof value.valueOf == 'function' ? value.valueOf() : value; 3245 value = isObject(other) ? (other + '') : other; 3246 } 3247 if (typeof value != 'string') { 3248 return value === 0 ? value : +value; 3249 } 3250 value = value.replace(reTrim, ''); 3251 var isBinary = reIsBinary.test(value); 3252 return (isBinary || reIsOctal.test(value)) 3253 ? freeParseInt(value.slice(2), isBinary ? 2 : 8) 3254 : (reIsBadHex.test(value) ? NAN : +value); 3255 } 3256 3257 module.exports = toNumber; 3258 3259 3260 /***/ 3261 }), 3262/* 62 */ 3263/***/ (function (module, exports, __webpack_require__) { 3264 3265 "use strict"; 3266 3267 3268 var _interopRequireDefault = __webpack_require__(0); 3269 3270 Object.defineProperty(exports, "__esModule", { 3271 value: true 3272 }); 3273 exports.mediaQueriesDefined = exports.viewportWidthChanged = exports.actionListPlaybackChanged = exports.elementStateChanged = exports.instanceRemoved = exports.instanceStarted = exports.instanceAdded = exports.parameterChanged = exports.animationFrameChanged = exports.eventStateChanged = exports.testFrameRendered = exports.eventListenerAdded = exports.clearRequested = exports.stopRequested = exports.playbackRequested = exports.previewRequested = exports.sessionStopped = exports.sessionStarted = exports.sessionInitialized = exports.rawDataImported = void 0; 3274 3275 var _extends2 = _interopRequireDefault(__webpack_require__(28)); 3276 3277 var _constants = __webpack_require__(2); 3278 3279 var _shared = __webpack_require__(10); 3280 3281 var _constants$IX2EngineA = _constants.IX2EngineActionTypes, 3282 IX2_RAW_DATA_IMPORTED = _constants$IX2EngineA.IX2_RAW_DATA_IMPORTED, 3283 IX2_SESSION_INITIALIZED = _constants$IX2EngineA.IX2_SESSION_INITIALIZED, 3284 IX2_SESSION_STARTED = _constants$IX2EngineA.IX2_SESSION_STARTED, 3285 IX2_SESSION_STOPPED = _constants$IX2EngineA.IX2_SESSION_STOPPED, 3286 IX2_PREVIEW_REQUESTED = _constants$IX2EngineA.IX2_PREVIEW_REQUESTED, 3287 IX2_PLAYBACK_REQUESTED = _constants$IX2EngineA.IX2_PLAYBACK_REQUESTED, 3288 IX2_STOP_REQUESTED = _constants$IX2EngineA.IX2_STOP_REQUESTED, 3289 IX2_CLEAR_REQUESTED = _constants$IX2EngineA.IX2_CLEAR_REQUESTED, 3290 IX2_EVENT_LISTENER_ADDED = _constants$IX2EngineA.IX2_EVENT_LISTENER_ADDED, 3291 IX2_TEST_FRAME_RENDERED = _constants$IX2EngineA.IX2_TEST_FRAME_RENDERED, 3292 IX2_EVENT_STATE_CHANGED = _constants$IX2EngineA.IX2_EVENT_STATE_CHANGED, 3293 IX2_ANIMATION_FRAME_CHANGED = _constants$IX2EngineA.IX2_ANIMATION_FRAME_CHANGED, 3294 IX2_PARAMETER_CHANGED = _constants$IX2EngineA.IX2_PARAMETER_CHANGED, 3295 IX2_INSTANCE_ADDED = _constants$IX2EngineA.IX2_INSTANCE_ADDED, 3296 IX2_INSTANCE_STARTED = _constants$IX2EngineA.IX2_INSTANCE_STARTED, 3297 IX2_INSTANCE_REMOVED = _constants$IX2EngineA.IX2_INSTANCE_REMOVED, 3298 IX2_ELEMENT_STATE_CHANGED = _constants$IX2EngineA.IX2_ELEMENT_STATE_CHANGED, 3299 IX2_ACTION_LIST_PLAYBACK_CHANGED = _constants$IX2EngineA.IX2_ACTION_LIST_PLAYBACK_CHANGED, 3300 IX2_VIEWPORT_WIDTH_CHANGED = _constants$IX2EngineA.IX2_VIEWPORT_WIDTH_CHANGED, 3301 IX2_MEDIA_QUERIES_DEFINED = _constants$IX2EngineA.IX2_MEDIA_QUERIES_DEFINED; 3302 var reifyState = _shared.IX2VanillaUtils.reifyState; // TODO: Figure out what this is and elevate it 3303 3304 var rawDataImported = function rawDataImported(rawData) { 3305 return {
3306 type: IX2_RAW_DATA_IMPORTED, 3307 payload: (0, _extends2["default"])({}, reifyState(rawData)) 3308 }; 3309 }; 3310 3311 exports.rawDataImported = rawDataImported; 3312 3313 var sessionInitialized = function sessionInitialized(_ref) { 3314 var hasBoundaryNodes = _ref.hasBoundaryNodes; 3315 return { 3316 type: IX2_SESSION_INITIALIZED, 3317 payload: { 3318 hasBoundaryNodes: hasBoundaryNodes 3319 } 3320 }; 3321 }; 3322 3323 exports.sessionInitialized = sessionInitialized; 3324 3325 var sessionStarted = function sessionStarted() { 3326 return { 3327 type: IX2_SESSION_STARTED 3328 }; 3329 }; 3330 3331 exports.sessionStarted = sessionStarted; 3332 3333 var sessionStopped = function sessionStopped() { 3334 return { 3335 type: IX2_SESSION_STOPPED 3336 }; 3337 }; 3338 3339 exports.sessionStopped = sessionStopped; 3340 3341 var previewRequested = function previewRequested(_ref2) { 3342 var rawData = _ref2.rawData, 3343 defer = _ref2.defer; 3344 return { 3345 type: IX2_PREVIEW_REQUESTED, 3346 payload: { 3347 defer: defer, 3348 rawData: rawData 3349 } 3350 }; 3351 }; 3352 3353 exports.previewRequested = previewRequested; 3354 3355 var playbackRequested = function playbackRequested(_ref3) { 3356 var _ref3$actionTypeId = _ref3.actionTypeId, 3357 actionTypeId = _ref3$actionTypeId === void 0 ? _constants.ActionTypeConsts.GENERAL_START_ACTION : _ref3$actionTypeId, 3358 actionListId = _ref3.actionListId, 3359 actionItemId = _ref3.actionItemId, 3360 eventId = _ref3.eventId, 3361 allowEvents = _ref3.allowEvents, 3362 immediate = _ref3.immediate, 3363 testManual = _ref3.testManual, 3364 verbose = _ref3.verbose, 3365 rawData = _ref3.rawData; 3366 return { 3367 type: IX2_PLAYBACK_REQUESTED, 3368 payload: { 3369 actionTypeId: actionTypeId, 3370 actionListId: actionListId, 3371 actionItemId: actionItemId, 3372 testManual: testManual, 3373 eventId: eventId, 3374 allowEvents: allowEvents, 3375 immediate: immediate, 3376 verbose: verbose, 3377 rawData: rawData 3378 } 3379 }; 3380 }; 3381 3382 exports.playbackRequested = playbackRequested; 3383 3384 var stopRequested = function stopRequested(actionListId) { 3385 return { 3386 type: IX2_STOP_REQUESTED, 3387 payload: { 3388 actionListId: actionListId 3389 } 3390 }; 3391 }; 3392 3393 exports.stopRequested = stopRequested; 3394 3395 var clearRequested = function clearRequested() { 3396 return { 3397 type: IX2_CLEAR_REQUESTED 3398 }; 3399 }; 3400 3401 exports.clearRequested = clearRequested; 3402 3403 var eventListenerAdded = function eventListenerAdded(target, listenerParams) { 3404 return { 3405 type: IX2_EVENT_LISTENER_ADDED, 3406 payload: { 3407 target: target, 3408 listenerParams: listenerParams 3409 } 3410 }; 3411 }; 3412 3413 exports.eventListenerAdded = eventListenerAdded; 3414 3415 var testFrameRendered = function testFrameRendered() { 3416 var step = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; 3417 return { 3418 type: IX2_TEST_FRAME_RENDERED, 3419 payload: { 3420 step: step 3421 } 3422 }; 3423 }; 3424 3425 exports.testFrameRendered = testFrameRendered; 3426 3427 var eventStateChanged = function eventStateChanged(stateKey, newState) { 3428 return { 3429 type: IX2_EVENT_STATE_CHANGED, 3430 payload: { 3431 stateKey: stateKey, 3432 newState: newState 3433 } 3434 }; 3435 }; 3436 3437 exports.eventStateChanged = eventStateChanged; 3438 3439 var animationFrameChanged = function animationFrameChanged(now, parameters) { 3440 return { 3441 type: IX2_ANIMATION_FRAME_CHANGED, 3442 payload: { 3443 now: now, 3444 parameters: parameters 3445 } 3446 }; 3447 }; 3448 3449 exports.animationFrameChanged = animationFrameChanged; 3450 3451 var parameterChanged = function parameterChanged(key, value) { 3452 return { 3453 type: IX2_PARAMETER_CHANGED, 3454 payload: { 3455 key: key, 3456 value: value 3457 } 3458 }; 3459 }; 3460 3461 exports.parameterChanged = parameterChanged; 3462 3463 var instanceAdded = function instanceAdded(options) { 3464 return { 3465 type: IX2_INSTANCE_ADDED, 3466 payload: (0, _extends2["default"])({}, options) 3467 }; 3468 }; 3469 3470 exports.instanceAdded = instanceAdded; 3471 3472 var instanceStarted = function instanceStarted(instanceId, time) { 3473 return { 3474 type: IX2_INSTANCE_STARTED, 3475 payload: { 3476 instanceId: instanceId, 3477 time: time 3478 } 3479 }; 3480 }; 3481 3482 exports.instanceStarted = instanceStarted; 3483 3484 var instanceRemoved = function instanceRemoved(instanceId) { 3485 return { 3486 type: IX2_INSTANCE_REMOVED, 3487 payload: { 3488 instanceId: instanceId 3489 } 3490 }; 3491 }; 3492 3493 exports.instanceRemoved = instanceRemoved; 3494 3495 var elementStateChanged = function elementStateChanged(elementId, actionTypeId, current, actionItem) { 3496 return { 3497 type: IX2_ELEMENT_STATE_CHANGED, 3498 payload: { 3499 elementId: elementId, 3500 actionTypeId: actionTypeId, 3501 current: current, 3502 actionItem: actionItem 3503 } 3504 }; 3505 }; 3506 3507 exports.elementStateChanged = elementStateChanged; 3508 3509 var actionListPlaybackChanged = function actionListPlaybackChanged(_ref4) { 3510 var actionListId = _ref4.actionListId, 3511 isPlaying = _ref4.isPlaying; 3512 return { 3513 type: IX2_ACTION_LIST_PLAYBACK_CHANGED, 3514 payload: { 3515 actionListId: actionListId, 3516 isPlaying: isPlaying 3517 } 3518 }; 3519 }; 3520 3521 exports.actionListPlaybackChanged = actionListPlaybackChanged; 3522 3523 var viewportWidthChanged = function viewportWidthChanged(_ref5) { 3524 var width = _ref5.width, 3525 mediaQueries = _ref5.mediaQueries; 3526 return { 3527 type: IX2_VIEWPORT_WIDTH_CHANGED, 3528 payload: { 3529 width: width, 3530 mediaQueries: mediaQueries 3531 } 3532 }; 3533 }; 3534 3535 exports.viewportWidthChanged = viewportWidthChanged; 3536 3537 var mediaQueriesDefined = function mediaQueriesDefined() { 3538 return { 3539 type: IX2_MEDIA_QUERIES_DEFINED 3540 }; 3541 }; 3542 3543 exports.mediaQueriesDefined = mediaQueriesDefined; 3544 3545 /***/ 3546 }), 3547/* 63 */ 3548/***/ (function (module, exports, __webpack_require__) { 3549 3550 var baseCreate = __webpack_require__(118), 3551 baseLodash = __webpack_require__(64); 3552 3553 /** 3554 * The base constructor for creating `lodash` wrapper objects. 3555 * 3556 * @private 3557 * @param {*} value The value to wrap. 3558 * @param {boolean} [chainAll] Enable explicit method chain sequences. 3559 */ 3560 function LodashWrapper(value, chainAll) { 3561 this.__wrapped__ = value; 3562 this.__actions__ = []; 3563 this.__chain__ = !!chainAll; 3564 this.__index__ = 0; 3565 this.__values__ = undefined; 3566 } 3567
3568 LodashWrapper.prototype = baseCreate(baseLodash.prototype); 3569 LodashWrapper.prototype.constructor = LodashWrapper; 3570 3571 module.exports = LodashWrapper; 3572 3573 3574 /***/ 3575 }), 3576/* 64 */ 3577/***/ (function (module, exports) { 3578 3579 /** 3580 * The function whose prototype chain sequence wrappers inherit from. 3581 * 3582 * @private 3583 */ 3584 function baseLodash() { 3585 // No operation performed. 3586 } 3587 3588 module.exports = baseLodash; 3589 3590 3591 /***/ 3592 }), 3593/* 65 */ 3594/***/ (function (module, exports, __webpack_require__) { 3595 3596 var baseCreate = __webpack_require__(118), 3597 baseLodash = __webpack_require__(64); 3598 3599 /** Used as references for the maximum length and index of an array. */ 3600 var MAX_ARRAY_LENGTH = 4294967295; 3601 3602 /** 3603 * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation. 3604 * 3605 * @private 3606 * @constructor 3607 * @param {*} value The value to wrap. 3608 */ 3609 function LazyWrapper(value) { 3610 this.__wrapped__ = value; 3611 this.__actions__ = []; 3612 this.__dir__ = 1; 3613 this.__filtered__ = false; 3614 this.__iteratees__ = []; 3615 this.__takeCount__ = MAX_ARRAY_LENGTH; 3616 this.__views__ = []; 3617 } 3618 3619 // Ensure `LazyWrapper` is an instance of `baseLodash`. 3620 LazyWrapper.prototype = baseCreate(baseLodash.prototype); 3621 LazyWrapper.prototype.constructor = LazyWrapper; 3622 3623 module.exports = LazyWrapper; 3624 3625 3626 /***/ 3627 }), 3628/* 66 */ 3629/***/ (function (module, exports, __webpack_require__) { 3630 3631 "use strict"; 3632 // @wf-will-never-add-flow-to-this-file 3633 3634 /* eslint-disable eslint-comments/no-unlimited-disable */ 3635 3636 /* eslint-disable */ 3637 3638 /*! 3639 * tram.js v0.8.2-global 3640 * Cross-browser CSS3 transitions in JavaScript 3641 * https://github.com/bkwld/tram 3642 * MIT License 3643 */ 3644 3645 /* prettier-ignore */ 3646 3647 var _interopRequireDefault = __webpack_require__(0); 3648 3649 var _typeof2 = _interopRequireDefault(__webpack_require__(13)); 3650 3651 window.tram = function (a) { 3652 function b(a, b) { 3653 var c = new M.Bare(); 3654 return c.init(a, b); 3655 } 3656 3657 function c(a) { 3658 return a.replace(/[A-Z]/g, function (a) { 3659 return "-" + a.toLowerCase(); 3660 }); 3661 } 3662 3663 function d(a) { 3664 var b = parseInt(a.slice(1), 16), 3665 c = b >> 16 & 255, 3666 d = b >> 8 & 255, 3667 e = 255 & b; 3668 return [c, d, e]; 3669 } 3670 3671 function e(a, b, c) { 3672 return "#" + (1 << 24 | a << 16 | b << 8 | c).toString(16).slice(1); 3673 } 3674 3675 function f() { } 3676 3677 function g(a, b) { 3678 j("Type warning: Expected: [" + a + "] Got: [" + (0, _typeof2["default"])(b) + "] " + b); 3679 } 3680 3681 function h(a, b, c) { 3682 j("Units do not match [" + a + "]: " + b + ", " + c); 3683 } 3684 3685 function i(a, b, c) { 3686 if (void 0 !== b && (c = b), void 0 === a) return c; 3687 var d = c; 3688 return $.test(a) || !_.test(a) ? d = parseInt(a, 10) : _.test(a) && (d = 1e3 * parseFloat(a)), 0 > d && (d = 0), d === d ? d : c; 3689 } 3690 3691 function j(a) { 3692 U.debug && window && window.console.warn(a); 3693 } 3694 3695 function k(a) { 3696 for (var b = -1, c = a ? a.length : 0, d = []; ++b < c;) { 3697 var e = a[b]; 3698 e && d.push(e); 3699 } 3700 3701 return d; 3702 } 3703 3704 var l = function (a, b, c) { 3705 function d(a) { 3706 return "object" == (0, _typeof2["default"])(a); 3707 } 3708 3709 function e(a) { 3710 return "function" == typeof a; 3711 } 3712 3713 function f() { } 3714 3715 function g(h, i) { 3716 function j() { 3717 var a = new k(); 3718 return e(a.init) && a.init.apply(a, arguments), a; 3719 } 3720 3721 function k() { } 3722 3723 i === c && (i = h, h = Object), j.Bare = k; 3724 var l, 3725 m = f[a] = h[a], 3726 n = k[a] = j[a] = new f(); 3727 return n.constructor = j, j.mixin = function (b) { 3728 return k[a] = j[a] = g(j, b)[a], j; 3729 }, j.open = function (a) { 3730 if (l = {}, e(a) ? l = a.call(j, n, m, j, h) : d(a) && (l = a), d(l)) for (var c in l) { 3731 b.call(l, c) && (n[c] = l[c]); 3732 } 3733 return e(n.init) || (n.init = h), j; 3734 }, j.open(i); 3735 } 3736 3737 return g; 3738 }("prototype", {}.hasOwnProperty), 3739 m = { 3740 ease: ["ease", function (a, b, c, d) { 3741 var e = (a /= d) * a, 3742 f = e * a; 3743 return b + c * (-2.75 * f * e + 11 * e * e + -15.5 * f + 8 * e + .25 * a); 3744 }], 3745 "ease-in": ["ease-in", function (a, b, c, d) { 3746 var e = (a /= d) * a, 3747 f = e * a; 3748 return b + c * (-1 * f * e + 3 * e * e + -3 * f + 2 * e); 3749 }], 3750 "ease-out": ["ease-out", function (a, b, c, d) { 3751 var e = (a /= d) * a, 3752 f = e * a; 3753 return b + c * (.3 * f * e + -1.6 * e * e + 2.2 * f + -1.8 * e + 1.9 * a); 3754 }], 3755 "ease-in-out": ["ease-in-out", function (a, b, c, d) { 3756 var e = (a /= d) * a, 3757 f = e * a; 3758 return b + c * (2 * f * e + -5 * e * e + 2 * f + 2 * e); 3759 }], 3760 linear: ["linear", function (a, b, c, d) { 3761 return c * a / d + b; 3762 }], 3763 "ease-in-quad": ["cubic-bezier(0.550, 0.085, 0.680, 0.530)", function (a, b, c, d) { 3764 return c * (a /= d) * a + b; 3765 }], 3766 "ease-out-quad": ["cubic-bezier(0.250, 0.460, 0.450, 0.940)", function (a, b, c, d) { 3767 return -c * (a /= d) * (a - 2) + b; 3768 }], 3769 "ease-in-out-quad": ["cubic-bezier(0.455, 0.030, 0.515, 0.955)", function (a, b, c, d) { 3770 return (a /= d / 2) < 1 ? c / 2 * a * a + b : -c / 2 * (--a * (a - 2) - 1) + b; 3771 }], 3772 "ease-in-cubic": ["cubic-bezier(0.550, 0.055, 0.675, 0.190)", function (a, b, c, d) { 3773 return c * (a /= d) * a * a + b; 3774 }], 3775 "ease-out-cubic": ["cubic-bezier(0.215, 0.610, 0.355, 1)", function (a, b, c, d) { 3776 return c * ((a = a / d - 1) * a * a + 1) + b; 3777 }], 3778 "ease-in-out-cubic": ["cubic-bezier(0.645, 0.045, 0.355, 1)", function (a, b, c, d) { 3779 return (a /= d / 2) < 1 ? c / 2 * a * a * a + b : c / 2 * ((a -= 2) * a * a + 2) + b; 3780 }], 3781 "ease-in-quart": ["cubic-bezier(0.895, 0.030, 0.685, 0.220)", function (a, b, c, d) { 3782 return c * (a /= d) * a * a * a + b; 3783 }], 3784 "ease-out-quart": ["cubic-bezier(0.165, 0.840, 0.440, 1)", function (a, b, c, d) { 3785 return -c * ((a = a / d - 1) * a * a * a - 1) + b; 3786 }], 3787 "ease-in-out-quart": ["cubic-bezier(0.770, 0, 0.175, 1)", function (a, b, c, d) { 3788 return (a /= d / 2) < 1 ? c / 2 * a * a * a * a + b : -c / 2 * ((a -= 2) * a * a * a - 2) + b; 3789 }], 3790 "ease-in-quint": ["cubic-bezier(0.755, 0.050, 0.855, 0.060)", function (a, b, c, d) { 3791 return c * (a /= d) * a * a * a * a + b; 3792 }], 3793 "ease-out-quint": ["cubic-bezier(0.230, 1, 0.320, 1)", function (a, b, c, d) { 3794 return c * ((a = a / d - 1) * a * a * a * a + 1) + b; 3795 }], 3796 "ease-in-out-quint": ["cubic-bezier(0.860, 0, 0.070, 1)", function (a, b, c, d) { 3797 return (a /= d / 2) < 1 ? c / 2 * a * a * a * a * a + b : c / 2 * ((a -= 2) * a * a * a * a + 2) + b; 3798 }], 3799 "ease-in-sine": ["cubic-bezier(0.470, 0, 0.745, 0.715)", function (a, b, c, d) { 3800 return -c * Math.cos(a / d * (Math.PI / 2)) + c + b; 3801 }], 3802 "ease-out-sine": ["cubic-bezier(0.390, 0.575, 0.565, 1)", function (a, b, c, d) { 3803 return c * Math.sin(a / d * (Math.PI / 2)) + b; 3804 }], 3805 "ease-in-out-sine": ["cubic-bezier(0.445, 0.050, 0.550, 0.950)", function (a, b, c, d) { 3806 return -c / 2 * (Math.cos(Math.PI * a / d) - 1) + b; 3807 }], 3808 "ease-in-expo": ["cubic-bezier(0.950, 0.050, 0.795, 0.035)", function (a, b, c, d) { 3809 return 0 === a ? b : c * Math.pow(2, 10 * (a / d - 1)) + b; 3810 }], 3811 "ease-out-expo": ["cubic-bezier(0.190, 1, 0.220, 1)", function (a, b, c, d) { 3812 return a === d ? b + c : c * (-Math.pow(2, -10 * a / d) + 1) + b; 3813 }], 3814 "ease-in-out-expo": ["cubic-bezier(1, 0, 0, 1)", function (a, b, c, d) { 3815 return 0 === a ? b : a === d ? b + c : (a /= d / 2) < 1 ? c / 2 * Math.pow(2, 10 * (a - 1)) + b : c / 2 * (-Math.pow(2, -10 * --a) + 2) + b; 3816 }], 3817 "ease-in-circ": ["cubic-bezier(0.600, 0.040, 0.980, 0.335)", function (a, b, c, d) { 3818 return -c * (Math.sqrt(1 - (a /= d) * a) - 1) + b; 3819 }], 3820 "ease-out-circ": ["cubic-bezier(0.075, 0.820, 0.165, 1)", function (a, b, c, d) { 3821 return c * Math.sqrt(1 - (a = a / d - 1) * a) + b; 3822 }], 3823 "ease-in-out-circ": ["cubic-bezier(0.785, 0.135, 0.150, 0.860)", function (a, b, c, d) { 3824 return (a /= d / 2) < 1 ? -c / 2 * (Math.sqrt(1 - a * a) - 1) + b : c / 2 * (Math.sqrt(1 - (a -= 2) * a) + 1) + b; 3825 }], 3826 "ease-in-back": ["cubic-bezier(0.600, -0.280, 0.735, 0.045)", function (a, b, c, d, e) { 3827 return void 0 === e && (e = 1.70158), c * (a /= d) * a * ((e + 1) * a - e) + b; 3828 }], 3829 "ease-out-back": ["cubic-bezier(0.175, 0.885, 0.320, 1.275)", function (a, b, c, d, e) { 3830 return void 0 === e && (e = 1.70158), c * ((a = a / d - 1) * a * ((e + 1) * a + e) + 1) + b; 3831 }], 3832 "ease-in-out-back": ["cubic-bezier(0.680, -0.550, 0.265, 1.550)", function (a, b, c, d, e) { 3833 return void 0 === e && (e = 1.70158), (a /= d / 2) < 1 ? c / 2 * a * a * (((e *= 1.525) + 1) * a - e) + b : c / 2 * ((a -= 2) * a * (((e *= 1.525) + 1) * a + e) + 2) + b; 3834 }] 3835 }, 3836 n = { 3837 "ease-in-back": "cubic-bezier(0.600, 0, 0.735, 0.045)", 3838 "ease-out-back": "cubic-bezier(0.175, 0.885, 0.320, 1)", 3839 "ease-in-out-back": "cubic-bezier(0.680, 0, 0.265, 1)" 3840 }, 3841 o = document, 3842 p = window, 3843 q = "bkwld-tram", 3844 r = /[\-\.0-9]/g, 3845 s = /[A-Z]/, 3846 t = "number", 3847 u = /^(rgb|#)/, 3848 v = /(em|cm|mm|in|pt|pc|px)$/, 3849 w = /(em|cm|mm|in|pt|pc|px|%)$/, 3850 x = /(deg|rad|turn)$/, 3851 y = "unitless", 3852 z = /(all|none) 0s ease 0s/, 3853 A = /^(width|height)$/, 3854 B = " ", 3855 C = o.createElement("a"), 3856 D = ["Webkit", "Moz", "O", "ms"], 3857 E = ["-webkit-", "-moz-", "-o-", "-ms-"], 3858 F = function F(a) { 3859 if (a in C.style) return { 3860 dom: a, 3861 css: a 3862 }; 3863 var b, 3864 c, 3865 d = "", 3866 e = a.split("-"); 3867 3868 for (b = 0; b < e.length; b++) { 3869 d += e[b].charAt(0).toUpperCase() + e[b].slice(1); 3870 } 3871 3872 for (b = 0; b < D.length; b++) { 3873 if (c = D[b] + d, c in C.style) return { 3874 dom: c, 3875 css: E[b] + a 3876 }; 3877 } 3878 }, 3879 G = b.support = { 3880 bind: Function.prototype.bind, 3881 transform: F("transform"), 3882 transition: F("transition"), 3883 backface: F("backface-visibility"), 3884 timing: F("transition-timing-function") 3885 }; 3886 3887 if (G.transition) { 3888 var H = G.timing.dom; 3889 if (C.style[H] = m["ease-in-back"][0], !C.style[H]) for (var I in n) { 3890 m[I][0] = n[I]; 3891 } 3892 } 3893 3894 var J = b.frame = function () { 3895 var a = p.requestAnimationFrame || p.webkitRequestAnimationFrame || p.mozRequestAnimationFrame || p.oRequestAnimationFrame || p.msRequestAnimationFrame; 3896 return a && G.bind ? a.bind(p) : function (a) { 3897 p.setTimeout(a, 16); 3898 }; 3899 }(), 3900 K = b.now = function () { 3901 var a = p.performance, 3902 b = a && (a.now || a.webkitNow || a.msNow || a.mozNow); 3903 return b && G.bind ? b.bind(a) : Date.now || function () { 3904 return +new Date(); 3905 }; 3906 }(), 3907 L = l(function (b) { 3908 function d(a, b) { 3909 var c = k(("" + a).split(B)), 3910 d = c[0]; 3911 b = b || {}; 3912 var e = Y[d]; 3913 if (!e) return j("Unsupported property: " + d); 3914 3915 if (!b.weak || !this.props[d]) { 3916 var f = e[0], 3917 g = this.props[d]; 3918 return g || (g = this.props[d] = new f.Bare()), g.init(this.$el, c, e, b), g; 3919 } 3920 } 3921 3922 function e(a, b, c) { 3923 if (a) { 3924 var e = (0, _typeof2["default"])(a); 3925 if (b || (this.timer && this.timer.destroy(), this.queue = [], this.active = !1), "number" == e && b) return this.timer = new S({ 3926 duration: a, 3927 context: this, 3928 complete: h 3929 }), void (this.active = !0); 3930 3931 if ("string" == e && b) { 3932 switch (a) { 3933 case "hide": 3934 o.call(this); 3935 break; 3936 3937 case "stop": 3938 l.call(this); 3939 break; 3940 3941 case "redraw": 3942 p.call(this); 3943 break; 3944 3945 default: 3946 d.call(this, a, c && c[1]); 3947 } 3948 3949 return h.call(this); 3950 } 3951 3952 if ("function" == e) return void a.call(this, this); 3953 3954 if ("object" == e) { 3955 var f = 0; 3956 u.call(this, a, function (a, b) { 3957 a.span > f && (f = a.span), a.stop(), a.animate(b); 3958 }, function (a) { 3959 "wait" in a && (f = i(a.wait, 0)); 3960 }), t.call(this), f > 0 && (this.timer = new S({ 3961 duration: f, 3962 context: this 3963 }), this.active = !0, b && (this.timer.complete = h)); 3964 var g = this, 3965 j = !1, 3966 k = {}; 3967 J(function () { 3968 u.call(g, a, function (a) { 3969 a.active && (j = !0, k[a.name] = a.nextStyle); 3970 }), j && g.$el.css(k); 3971 }); 3972 } 3973 } 3974 } 3975 3976 function f(a) { 3977 a = i(a, 0), this.active ? this.queue.push({ 3978 options: a 3979 }) : (this.timer = new S({ 3980 duration: a, 3981 context: this, 3982 complete: h 3983 }), this.active = !0); 3984 } 3985
3986 function g(a) { 3987 return this.active ? (this.queue.push({ 3988 options: a, 3989 args: arguments 3990 }), void (this.timer.complete = h)) : j("No active transition timer. Use start() or wait() before then()."); 3991 } 3992 3993 function h() { 3994 if (this.timer && this.timer.destroy(), this.active = !1, this.queue.length) { 3995 var a = this.queue.shift(); 3996 e.call(this, a.options, !0, a.args); 3997 } 3998 } 3999 4000 function l(a) { 4001 this.timer && this.timer.destroy(), this.queue = [], this.active = !1; 4002 var b; 4003 "string" == typeof a ? (b = {}, b[a] = 1) : b = "object" == (0, _typeof2["default"])(a) && null != a ? a : this.props, u.call(this, b, v), t.call(this); 4004 } 4005 4006 function m(a) { 4007 l.call(this, a), u.call(this, a, w, x); 4008 } 4009 4010 function n(a) { 4011 "string" != typeof a && (a = "block"), this.el.style.display = a; 4012 } 4013 4014 function o() { 4015 l.call(this), this.el.style.display = "none"; 4016 } 4017 4018 function p() { 4019 this.el.offsetHeight; 4020 } 4021 4022 function r() { 4023 l.call(this), a.removeData(this.el, q), this.$el = this.el = null; 4024 } 4025 4026 function t() { 4027 var a, 4028 b, 4029 c = []; 4030 this.upstream && c.push(this.upstream); 4031 4032 for (a in this.props) { 4033 b = this.props[a], b.active && c.push(b.string); 4034 } 4035 4036 c = c.join(","), this.style !== c && (this.style = c, this.el.style[G.transition.dom] = c); 4037 } 4038 4039 function u(a, b, e) { 4040 var f, 4041 g, 4042 h, 4043 i, 4044 j = b !== v, 4045 k = {}; 4046 4047 for (f in a) { 4048 h = a[f], f in Z ? (k.transform || (k.transform = {}), k.transform[f] = h) : (s.test(f) && (f = c(f)), f in Y ? k[f] = h : (i || (i = {}), i[f] = h)); 4049 } 4050 4051 for (f in k) { 4052 if (h = k[f], g = this.props[f], !g) { 4053 if (!j) continue; 4054 g = d.call(this, f); 4055 } 4056 4057 b.call(this, g, h); 4058 } 4059 4060 e && i && e.call(this, i); 4061 } 4062 4063 function v(a) { 4064 a.stop(); 4065 } 4066 4067 function w(a, b) { 4068 a.set(b); 4069 } 4070 4071 function x(a) { 4072 this.$el.css(a); 4073 } 4074 4075 function y(a, c) { 4076 b[a] = function () { 4077 return this.children ? A.call(this, c, arguments) : (this.el && c.apply(this, arguments), this); 4078 }; 4079 } 4080 4081 function A(a, b) { 4082 var c, 4083 d = this.children.length; 4084 4085 for (c = 0; d > c; c++) { 4086 a.apply(this.children[c], b); 4087 } 4088 4089 return this; 4090 } 4091 4092 b.init = function (b) { 4093 if (this.$el = a(b), this.el = this.$el[0], this.props = {}, this.queue = [], this.style = "", this.active = !1, U.keepInherited && !U.fallback) { 4094 var c = W(this.el, "transition"); 4095 c && !z.test(c) && (this.upstream = c); 4096 } 4097 4098 G.backface && U.hideBackface && V(this.el, G.backface.css, "hidden"); 4099 }, y("add", d), y("start", e), y("wait", f), y("then", g), y("next", h), y("stop", l), y("set", m), y("show", n), y("hide", o), y("redraw", p), y("destroy", r); 4100 }), 4101 M = l(L, function (b) { 4102 function c(b, c) { 4103 var d = a.data(b, q) || a.data(b, q, new L.Bare()); 4104 return d.el || d.init(b), c ? d.start(c) : d; 4105 } 4106 4107 b.init = function (b, d) { 4108 var e = a(b); 4109 if (!e.length) return this; 4110 if (1 === e.length) return c(e[0], d); 4111 var f = []; 4112 return e.each(function (a, b) { 4113 f.push(c(b, d)); 4114 }), this.children = f, this; 4115 }; 4116 }), 4117 N = l(function (a) { 4118 function b() { 4119 var a = this.get(); 4120 this.update("auto"); 4121 var b = this.get(); 4122 return this.update(a), b; 4123 } 4124 4125 function c(a, b, c) { 4126 return void 0 !== b && (c = b), a in m ? a : c; 4127 } 4128 4129 function d(a) { 4130 var b = /rgba?\((\d+),\s*(\d+),\s*(\d+)/.exec(a); 4131 return (b ? e(b[1], b[2], b[3]) : a).replace(/#(\w)(\w)(\w)$/, "#$1$1$2$2$3$3"); 4132 } 4133 4134 var f = { 4135 duration: 500, 4136 ease: "ease", 4137 delay: 0 4138 }; 4139 a.init = function (a, b, d, e) { 4140 this.$el = a, this.el = a[0]; 4141 var g = b[0]; 4142 d[2] && (g = d[2]), X[g] && (g = X[g]), this.name = g, this.type = d[1], this.duration = i(b[1], this.duration, f.duration), this.ease = c(b[2], this.ease, f.ease), this.delay = i(b[3], this.delay, f.delay), this.span = this.duration + this.delay, this.active = !1, this.nextStyle = null, this.auto = A.test(this.name), this.unit = e.unit || this.unit || U.defaultUnit, this.angle = e.angle || this.angle || U.defaultAngle, U.fallback || e.fallback ? this.animate = this.fallback : (this.animate = this.transition, this.string = this.name + B + this.duration + "ms" + ("ease" != this.ease ? B + m[this.ease][0] : "") + (this.delay ? B + this.delay + "ms" : "")); 4143 }, a.set = function (a) { 4144 a = this.convert(a, this.type), this.update(a), this.redraw(); 4145 }, a.transition = function (a) { 4146 this.active = !0, a = this.convert(a, this.type), this.auto && ("auto" == this.el.style[this.name] && (this.update(this.get()), this.redraw()), "auto" == a && (a = b.call(this))), this.nextStyle = a; 4147 }, a.fallback = function (a) { 4148 var c = this.el.style[this.name] || this.convert(this.get(), this.type); 4149 a = this.convert(a, this.type), this.auto && ("auto" == c && (c = this.convert(this.get(), this.type)), "auto" == a && (a = b.call(this))), this.tween = new R({ 4150 from: c, 4151 to: a, 4152 duration: this.duration, 4153 delay: this.delay, 4154 ease: this.ease, 4155 update: this.update, 4156 context: this 4157 }); 4158 }, a.get = function () { 4159 return W(this.el, this.name); 4160 }, a.update = function (a) { 4161 V(this.el, this.name, a); 4162 }, a.stop = function () { 4163 (this.active || this.nextStyle) && (this.active = !1, this.nextStyle = null, V(this.el, this.name, this.get())); 4164 var a = this.tween; 4165 a && a.context && a.destroy(); 4166 }, a.convert = function (a, b) { 4167 if ("auto" == a && this.auto) return a; 4168 var c, 4169 e = "number" == typeof a, 4170 f = "string" == typeof a; 4171 4172 switch (b) { 4173 case t: 4174 if (e) return a; 4175 if (f && "" === a.replace(r, "")) return +a; 4176 c = "number(unitless)"; 4177 break; 4178 4179 case u: 4180 if (f) { 4181 if ("" === a && this.original) return this.original; 4182 if (b.test(a)) return "#" == a.charAt(0) && 7 == a.length ? a : d(a); 4183 } 4184 4185 c = "hex or rgb string"; 4186 break; 4187 4188 case v: 4189 if (e) return a + this.unit; 4190 if (f && b.test(a)) return a; 4191 c = "number(px) or string(unit)"; 4192 break; 4193 4194 case w: 4195 if (e) return a + this.unit; 4196 if (f && b.test(a)) return a; 4197 c = "number(px) or string(unit or %)"; 4198 break; 4199 4200 case x: 4201 if (e) return a + this.angle; 4202 if (f && b.test(a)) return a; 4203 c = "number(deg) or string(angle)"; 4204 break; 4205 4206 case y: 4207 if (e) return a; 4208 if (f && w.test(a)) return a; 4209 c = "number(unitless) or string(unit or %)"; 4210 } 4211 4212 return g(c, a), a; 4213 }, a.redraw = function () { 4214 this.el.offsetHeight; 4215 }; 4216 }), 4217 O = l(N, function (a, b) { 4218 a.init = function () {
4219 b.init.apply(this, arguments), this.original || (this.original = this.convert(this.get(), u)); 4220 }; 4221 }), 4222 P = l(N, function (a, b) { 4223 a.init = function () { 4224 b.init.apply(this, arguments), this.animate = this.fallback; 4225 }, a.get = function () { 4226 return this.$el[this.name](); 4227 }, a.update = function (a) { 4228 this.$el[this.name](a); 4229 }; 4230 }), 4231 Q = l(N, function (a, b) { 4232 function c(a, b) { 4233 var c, d, e, f, g; 4234 4235 for (c in a) { 4236 f = Z[c], e = f[0], d = f[1] || c, g = this.convert(a[c], e), b.call(this, d, g, e); 4237 } 4238 } 4239 4240 a.init = function () { 4241 b.init.apply(this, arguments), this.current || (this.current = {}, Z.perspective && U.perspective && (this.current.perspective = U.perspective, V(this.el, this.name, this.style(this.current)), this.redraw())); 4242 }, a.set = function (a) { 4243 c.call(this, a, function (a, b) { 4244 this.current[a] = b; 4245 }), V(this.el, this.name, this.style(this.current)), this.redraw(); 4246 }, a.transition = function (a) { 4247 var b = this.values(a); 4248 this.tween = new T({ 4249 current: this.current, 4250 values: b, 4251 duration: this.duration, 4252 delay: this.delay, 4253 ease: this.ease 4254 }); 4255 var c, 4256 d = {}; 4257 4258 for (c in this.current) { 4259 d[c] = c in b ? b[c] : this.current[c]; 4260 } 4261 4262 this.active = !0, this.nextStyle = this.style(d); 4263 }, a.fallback = function (a) { 4264 var b = this.values(a); 4265 this.tween = new T({ 4266 current: this.current, 4267 values: b, 4268 duration: this.duration, 4269 delay: this.delay, 4270 ease: this.ease, 4271 update: this.update, 4272 context: this 4273 }); 4274 }, a.update = function () { 4275 V(this.el, this.name, this.style(this.current)); 4276 }, a.style = function (a) { 4277 var b, 4278 c = ""; 4279 4280 for (b in a) { 4281 c += b + "(" + a[b] + ") "; 4282 } 4283 4284 return c; 4285 }, a.values = function (a) { 4286 var b, 4287 d = {}; 4288 return c.call(this, a, function (a, c, e) { 4289 d[a] = c, void 0 === this.current[a] && (b = 0, ~a.indexOf("scale") && (b = 1), this.current[a] = this.convert(b, e)); 4290 }), d; 4291 }; 4292 }), 4293 R = l(function (b) { 4294 function c(a) { 4295 1 === n.push(a) && J(g); 4296 } 4297 4298 function g() { 4299 var a, 4300 b, 4301 c, 4302 d = n.length; 4303 if (d) for (J(g), b = K(), a = d; a--;) { 4304 c = n[a], c && c.render(b); 4305 } 4306 } 4307 4308 function i(b) { 4309 var c, 4310 d = a.inArray(b, n); 4311 d >= 0 && (c = n.slice(d + 1), n.length = d, c.length && (n = n.concat(c))); 4312 } 4313 4314 function j(a) { 4315 return Math.round(a * o) / o; 4316 } 4317 4318 function k(a, b, c) { 4319 return e(a[0] + c * (b[0] - a[0]), a[1] + c * (b[1] - a[1]), a[2] + c * (b[2] - a[2])); 4320 } 4321 4322 var l = { 4323 ease: m.ease[1], 4324 from: 0, 4325 to: 1 4326 }; 4327 b.init = function (a) { 4328 this.duration = a.duration || 0, this.delay = a.delay || 0; 4329 var b = a.ease || l.ease; 4330 m[b] && (b = m[b][1]), "function" != typeof b && (b = l.ease), this.ease = b, this.update = a.update || f, this.complete = a.complete || f, this.context = a.context || this, this.name = a.name; 4331 var c = a.from, 4332 d = a.to; 4333 void 0 === c && (c = l.from), void 0 === d && (d = l.to), this.unit = a.unit || "", "number" == typeof c && "number" == typeof d ? (this.begin = c, this.change = d - c) : this.format(d, c), this.value = this.begin + this.unit, this.start = K(), a.autoplay !== !1 && this.play(); 4334 }, b.play = function () { 4335 this.active || (this.start || (this.start = K()), this.active = !0, c(this)); 4336 }, b.stop = function () { 4337 this.active && (this.active = !1, i(this)); 4338 }, b.render = function (a) { 4339 var b, 4340 c = a - this.start; 4341 4342 if (this.delay) { 4343 if (c <= this.delay) return; 4344 c -= this.delay; 4345 } 4346 4347 if (c < this.duration) { 4348 var d = this.ease(c, 0, 1, this.duration); 4349 return b = this.startRGB ? k(this.startRGB, this.endRGB, d) : j(this.begin + d * this.change), this.value = b + this.unit, void this.update.call(this.context, this.value); 4350 } 4351 4352 b = this.endHex || this.begin + this.change, this.value = b + this.unit, this.update.call(this.context, this.value), this.complete.call(this.context), this.destroy(); 4353 }, b.format = function (a, b) { 4354 if (b += "", a += "", "#" == a.charAt(0)) return this.startRGB = d(b), this.endRGB = d(a), this.endHex = a, this.begin = 0, void (this.change = 1); 4355 4356 if (!this.unit) { 4357 var c = b.replace(r, ""), 4358 e = a.replace(r, ""); 4359 c !== e && h("tween", b, a), this.unit = c; 4360 } 4361 4362 b = parseFloat(b), a = parseFloat(a), this.begin = this.value = b, this.change = a - b; 4363 }, b.destroy = function () { 4364 this.stop(), this.context = null, this.ease = this.update = this.complete = f; 4365 }; 4366 var n = [], 4367 o = 1e3; 4368 }),
4369 S = l(R, function (a) { 4370 a.init = function (a) { 4371 this.duration = a.duration || 0, this.complete = a.complete || f, this.context = a.context, this.play(); 4372 }, a.render = function (a) { 4373 var b = a - this.start; 4374 b < this.duration || (this.complete.call(this.context), this.destroy()); 4375 }; 4376 }), 4377 T = l(R, function (a, b) { 4378 a.init = function (a) { 4379 this.context = a.context, this.update = a.update, this.tweens = [], this.current = a.current; 4380 var b, c; 4381 4382 for (b in a.values) { 4383 c = a.values[b], this.current[b] !== c && this.tweens.push(new R({ 4384 name: b, 4385 from: this.current[b], 4386 to: c, 4387 duration: a.duration, 4388 delay: a.delay, 4389 ease: a.ease, 4390 autoplay: !1 4391 })); 4392 } 4393 4394 this.play(); 4395 }, a.render = function (a) { 4396 var b, 4397 c, 4398 d = this.tweens.length, 4399 e = !1; 4400 4401 for (b = d; b--;) { 4402 c = this.tweens[b], c.context && (c.render(a), this.current[c.name] = c.value, e = !0); 4403 } 4404 4405 return e ? void (this.update && this.update.call(this.context)) : this.destroy(); 4406 }, a.destroy = function () { 4407 if (b.destroy.call(this), this.tweens) { 4408 var a, 4409 c = this.tweens.length; 4410 4411 for (a = c; a--;) { 4412 this.tweens[a].destroy(); 4413 } 4414 4415 this.tweens = null, this.current = null; 4416 } 4417 }; 4418 }), 4419 U = b.config = { 4420 debug: !1, 4421 defaultUnit: "px", 4422 defaultAngle: "deg", 4423 keepInherited: !1, 4424 hideBackface: !1, 4425 perspective: "", 4426 fallback: !G.transition, 4427 agentTests: [] 4428 }; 4429 4430 b.fallback = function (a) { 4431 if (!G.transition) return U.fallback = !0; 4432 U.agentTests.push("(" + a + ")"); 4433 var b = new RegExp(U.agentTests.join("|"), "i"); 4434 U.fallback = b.test(navigator.userAgent); 4435 }, b.fallback("6.0.[2-5] Safari"), b.tween = function (a) { 4436 return new R(a); 4437 }, b.delay = function (a, b, c) { 4438 return new S({ 4439 complete: b, 4440 duration: a, 4441 context: c 4442 }); 4443 }, a.fn.tram = function (a) { 4444 return b.call(null, this, a); 4445 }; 4446 var V = a.style, 4447 W = a.css, 4448 X = { 4449 transform: G.transform && G.transform.css 4450 }, 4451 Y = { 4452 color: [O, u], 4453 background: [O, u, "background-color"], 4454 "outline-color": [O, u], 4455 "border-color": [O, u], 4456 "border-top-color": [O, u], 4457 "border-right-color": [O, u], 4458 "border-bottom-color": [O, u], 4459 "border-left-color": [O, u], 4460 "border-width": [N, v], 4461 "border-top-width": [N, v], 4462 "border-right-width": [N, v], 4463 "border-bottom-width": [N, v], 4464 "border-left-width": [N, v], 4465 "border-spacing": [N, v], 4466 "letter-spacing": [N, v], 4467 margin: [N, v], 4468 "margin-top": [N, v], 4469 "margin-right": [N, v], 4470 "margin-bottom": [N, v], 4471 "margin-left": [N, v], 4472 padding: [N, v], 4473 "padding-top": [N, v], 4474 "padding-right": [N, v], 4475 "padding-bottom": [N, v], 4476 "padding-left": [N, v], 4477 "outline-width": [N, v], 4478 opacity: [N, t], 4479 top: [N, w], 4480 right: [N, w], 4481 bottom: [N, w], 4482 left: [N, w], 4483 "font-size": [N, w], 4484 "text-indent": [N, w], 4485 "word-spacing": [N, w], 4486 width: [N, w], 4487 "min-width": [N, w], 4488 "max-width": [N, w], 4489 height: [N, w], 4490 "min-height": [N, w], 4491 "max-height": [N, w], 4492 "line-height": [N, y], 4493 "scroll-top": [P, t, "scrollTop"], 4494 "scroll-left": [P, t, "scrollLeft"] 4495 }, 4496 Z = {}; 4497 G.transform && (Y.transform = [Q], Z = { 4498 x: [w, "translateX"], 4499 y: [w, "translateY"],
vendor: 6,158 bytes, lines 4500-4709
4500 rotate: [x], 4501 rotateX: [x], 4502 rotateY: [x], 4503 scale: [t], 4504 scaleX: [t], 4505 scaleY: [t], 4506 skew: [x], 4507 skewX: [x], 4508 skewY: [x] 4509 }), G.transform && G.backface && (Z.z = [w, "translateZ"], Z.rotateZ = [x], Z.scaleZ = [t], Z.perspective = [v]); 4510 var $ = /ms/, 4511 _ = /s|\./; 4512 return a.tram = b; 4513 }(window.jQuery); 4514 4515 /***/ 4516 }), 4517/* 67 */ 4518/***/ (function (module, exports, __webpack_require__) { 4519 4520 var DESCRIPTORS = __webpack_require__(15); 4521 var propertyIsEnumerableModule = __webpack_require__(132); 4522 var createPropertyDescriptor = __webpack_require__(68); 4523 var toIndexedObject = __webpack_require__(38); 4524 var toPrimitive = __webpack_require__(69); 4525 var has = __webpack_require__(17); 4526 var IE8_DOM_DEFINE = __webpack_require__(70); 4527 4528 var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; 4529 4530 // `Object.getOwnPropertyDescriptor` method 4531 // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor 4532 exports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) { 4533 O = toIndexedObject(O); 4534 P = toPrimitive(P, true); 4535 if (IE8_DOM_DEFINE) try { 4536 return nativeGetOwnPropertyDescriptor(O, P); 4537 } catch (error) { /* empty */ } 4538 if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]); 4539 }; 4540 4541 4542 /***/ 4543 }), 4544/* 68 */ 4545/***/ (function (module, exports) { 4546 4547 module.exports = function (bitmap, value) { 4548 return { 4549 enumerable: !(bitmap & 1), 4550 configurable: !(bitmap & 2), 4551 writable: !(bitmap & 4), 4552 value: value 4553 }; 4554 }; 4555 4556 4557 /***/ 4558 }), 4559/* 69 */ 4560/***/ (function (module, exports, __webpack_require__) { 4561 4562 var isObject = __webpack_require__(24); 4563 4564 // `ToPrimitive` abstract operation 4565 // https://tc39.github.io/ecma262/#sec-toprimitive 4566 // instead of the ES6 spec version, we didn't implement @@toPrimitive case 4567 // and the second argument - flag - preferred type is a string 4568 module.exports = function (input, PREFERRED_STRING) { 4569 if (!isObject(input)) return input; 4570 var fn, val; 4571 if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val; 4572 if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val; 4573 if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val; 4574 throw TypeError("Can't convert object to primitive value"); 4575 }; 4576 4577 4578 /***/ 4579 }), 4580/* 70 */ 4581/***/ (function (module, exports, __webpack_require__) { 4582 4583 var DESCRIPTORS = __webpack_require__(15); 4584 var fails = __webpack_require__(16); 4585 var createElement = __webpack_require__(71); 4586 4587 // Thank's IE8 for his funny defineProperty 4588 module.exports = !DESCRIPTORS && !fails(function () { 4589 return Object.defineProperty(createElement('div'), 'a', { 4590 get: function () { return 7; } 4591 }).a != 7; 4592 }); 4593 4594 4595 /***/ 4596 }), 4597/* 71 */ 4598/***/ (function (module, exports, __webpack_require__) { 4599 4600 var global = __webpack_require__(4); 4601 var isObject = __webpack_require__(24); 4602 4603 var document = global.document; 4604 // typeof document.createElement is 'object' in old IE 4605 var EXISTS = isObject(document) && isObject(document.createElement); 4606 4607 module.exports = function (it) { 4608 return EXISTS ? document.createElement(it) : {}; 4609 }; 4610 4611 4612 /***/ 4613 }), 4614/* 72 */ 4615/***/ (function (module, exports, __webpack_require__) { 4616 4617 var shared = __webpack_require__(26); 4618 4619 module.exports = shared('native-function-to-string', Function.toString); 4620 4621 4622 /***/ 4623 }), 4624/* 73 */ 4625/***/ (function (module, exports, __webpack_require__) { 4626 4627 var shared = __webpack_require__(26); 4628 var uid = __webpack_require__(74); 4629 4630 var keys = shared('keys'); 4631 4632 module.exports = function (key) { 4633 return keys[key] || (keys[key] = uid(key)); 4634 }; 4635 4636 4637 /***/ 4638 }), 4639/* 74 */ 4640/***/ (function (module, exports) { 4641 4642 var id = 0; 4643 var postfix = Math.random(); 4644 4645 module.exports = function (key) { 4646 return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36); 4647 }; 4648 4649 4650 /***/ 4651 }), 4652/* 75 */ 4653/***/ (function (module, exports, __webpack_require__) { 4654 4655 var path = __webpack_require__(142); 4656 var global = __webpack_require__(4); 4657 4658 var aFunction = function (variable) { 4659 return typeof variable == 'function' ? variable : undefined; 4660 }; 4661 4662 module.exports = function (namespace, method) { 4663 return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace]) 4664 : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method]; 4665 }; 4666 4667 4668 /***/ 4669 }), 4670/* 76 */ 4671/***/ (function (module, exports, __webpack_require__) { 4672 4673 var has = __webpack_require__(17); 4674 var toIndexedObject = __webpack_require__(38); 4675 var indexOf = __webpack_require__(77).indexOf; 4676 var hiddenKeys = __webpack_require__(41); 4677 4678 module.exports = function (object, names) { 4679 var O = toIndexedObject(object); 4680 var i = 0; 4681 var result = []; 4682 var key; 4683 for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key); 4684 // Don't enum bug & hidden keys 4685 while (names.length > i) if (has(O, key = names[i++])) { 4686 ~indexOf(result, key) || result.push(key); 4687 } 4688 return result; 4689 }; 4690 4691 4692 /***/ 4693 }), 4694/* 77 */ 4695/***/ (function (module, exports, __webpack_require__) { 4696 4697 var toIndexedObject = __webpack_require__(38); 4698 var toLength = __webpack_require__(144); 4699 var toAbsoluteIndex = __webpack_require__(145); 4700 4701 // `Array.prototype.{ indexOf, includes }` methods implementation 4702 var createMethod = function (IS_INCLUDES) { 4703 return function ($this, el, fromIndex) { 4704 var O = toIndexedObject($this); 4705 var length = toLength(O.length); 4706 var index = toAbsoluteIndex(fromIndex, length); 4707 var value; 4708 // Array#includes uses SameValueZero equality algorithm 4709 // eslint-disable-next-line no-self-compare
4710 if (IS_INCLUDES && el != el) while (length > index) { 4711 value = O[index++]; 4712 // eslint-disable-next-line no-self-compare 4713 if (value != value) return true; 4714 // Array#indexOf ignores holes, Array#includes - not 4715 } else for (; length > index; index++) { 4716 if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0; 4717 } return !IS_INCLUDES && -1; 4718 }; 4719 }; 4720 4721 module.exports = { 4722 // `Array.prototype.includes` method 4723 // https://tc39.github.io/ecma262/#sec-array.prototype.includes 4724 includes: createMethod(true), 4725 // `Array.prototype.indexOf` method 4726 // https://tc39.github.io/ecma262/#sec-array.prototype.indexof 4727 indexOf: createMethod(false) 4728 }; 4729 4730 4731 /***/ 4732 }), 4733/* 78 */ 4734/***/ (function (module, exports) { 4735 4736 var ceil = Math.ceil; 4737 var floor = Math.floor; 4738 4739 // `ToInteger` abstract operation 4740 // https://tc39.github.io/ecma262/#sec-tointeger 4741 module.exports = function (argument) { 4742 return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument); 4743 }; 4744 4745 4746 /***/ 4747 }), 4748/* 79 */ 4749/***/ (function (module, __webpack_exports__, __webpack_require__) { 4750 4751 "use strict"; 4752 __webpack_require__.r(__webpack_exports__); 4753/* harmony import */ var _createStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(43); 4754/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "createStore", function () { return _createStore__WEBPACK_IMPORTED_MODULE_0__["default"]; }); 4755 4756/* harmony import */ var _combineReducers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(82); 4757/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineReducers", function () { return _combineReducers__WEBPACK_IMPORTED_MODULE_1__["default"]; }); 4758 4759/* harmony import */ var _bindActionCreators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(84); 4760/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bindActionCreators", function () { return _bindActionCreators__WEBPACK_IMPORTED_MODULE_2__["default"]; }); 4761 4762/* harmony import */ var _applyMiddleware__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(85); 4763/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "applyMiddleware", function () { return _applyMiddleware__WEBPACK_IMPORTED_MODULE_3__["default"]; }); 4764 4765/* harmony import */ var _compose__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(44); 4766/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "compose", function () { return _compose__WEBPACK_IMPORTED_MODULE_4__["default"]; }); 4767 4768/* harmony import */ var _utils_warning__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(83); 4769 4770 4771 4772 4773 4774 4775 4776 /* 4777 * This is a dummy function to check if the function name has been altered by minification. 4778 * If the function has been minified and NODE_ENV !== 'production', warn the user. 4779 */ 4780 function isCrushed() { } 4781 4782 if (false) { } 4783 4784 4785 4786 /***/ 4787 }), 4788/* 80 */ 4789/***/ (function (module, __webpack_exports__, __webpack_require__) { 4790 4791 "use strict"; 4792 __webpack_require__.r(__webpack_exports__); 4793/* harmony import */ var _baseGetTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(158); 4794/* harmony import */ var _getPrototype_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(163); 4795/* harmony import */ var _isObjectLike_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(165); 4796 4797 4798 4799 4800 /** `Object#toString` result references. */ 4801 var objectTag = '[object Object]'; 4802 4803 /** Used for built-in method references. */ 4804 var funcProto = Function.prototype, 4805 objectProto = Object.prototype; 4806 4807 /** Used to resolve the decompiled source of functions. */ 4808 var funcToString = funcProto.toString; 4809 4810 /** Used to check objects for own properties. */ 4811 var hasOwnProperty = objectProto.hasOwnProperty; 4812 4813 /** Used to infer the `Object` constructor. */ 4814 var objectCtorString = funcToString.call(Object); 4815 4816 /** 4817 * Checks if `value` is a plain object, that is, an object created by the 4818 * `Object` constructor or one with a `[[Prototype]]` of `null`. 4819 * 4820 * @static 4821 * @memberOf _ 4822 * @since 0.8.0 4823 * @category Lang 4824 * @param {*} value The value to check. 4825 * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. 4826 * @example 4827 * 4828 * function Foo() { 4829 * this.a = 1; 4830 * } 4831 * 4832 * _.isPlainObject(new Foo); 4833 * // => false 4834 * 4835 * _.isPlainObject([1, 2, 3]); 4836 * // => false 4837 * 4838 * _.isPlainObject({ 'x': 0, 'y': 0 }); 4839 * // => true 4840 * 4841 * _.isPlainObject(Object.create(null)); 4842 * // => true 4843 */ 4844 function isPlainObject(value) { 4845 if (!Object(_isObjectLike_js__WEBPACK_IMPORTED_MODULE_2__["default"])(value) || Object(_baseGetTag_js__WEBPACK_IMPORTED_MODULE_0__["default"])(value) != objectTag) { 4846 return false;
4847 } 4848 var proto = Object(_getPrototype_js__WEBPACK_IMPORTED_MODULE_1__["default"])(value); 4849 if (proto === null) { 4850 return true; 4851 } 4852 var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; 4853 return typeof Ctor == 'function' && Ctor instanceof Ctor && 4854 funcToString.call(Ctor) == objectCtorString; 4855 } 4856 4857/* harmony default export */ __webpack_exports__["default"] = (isPlainObject); 4858 4859 4860 /***/ 4861 }), 4862/* 81 */ 4863/***/ (function (module, __webpack_exports__, __webpack_require__) { 4864 4865 "use strict"; 4866 __webpack_require__.r(__webpack_exports__); 4867/* harmony import */ var _root_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(159); 4868 4869 4870 /** Built-in value references. */ 4871 var Symbol = _root_js__WEBPACK_IMPORTED_MODULE_0__["default"].Symbol; 4872 4873/* harmony default export */ __webpack_exports__["default"] = (Symbol); 4874 4875 4876 /***/ 4877 }), 4878/* 82 */ 4879/***/ (function (module, __webpack_exports__, __webpack_require__) { 4880 4881 "use strict"; 4882 __webpack_require__.r(__webpack_exports__); 4883/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function () { return combineReducers; }); 4884/* harmony import */ var _createStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(43); 4885/* harmony import */ var lodash_es_isPlainObject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(80); 4886/* harmony import */ var _utils_warning__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(83); 4887 4888 4889 4890 4891 function getUndefinedStateErrorMessage(key, action) { 4892 var actionType = action && action.type; 4893 var actionName = actionType && '"' + actionType.toString() + '"' || 'an action'; 4894 4895 return 'Given action ' + actionName + ', reducer "' + key + '" returned undefined. ' + 'To ignore an action, you must explicitly return the previous state.'; 4896 } 4897 4898 function getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unex
4898pectedKeyCache) { 4899 var reducerKeys = Object.keys(reducers); 4900 var argumentName = action && action.type === _createStore__WEBPACK_IMPORTED_MODULE_0__["ActionTypes"].INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer'; 4901 4902 if (reducerKeys.length === 0) { 4903 return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.'; 4904 } 4905 4906 if (!Object(lodash_es_isPlainObject__WEBPACK_IMPORTED_MODULE_1__["default"])(inputState)) { 4907 return 'The ' + argumentName + ' has unexpected type of "' + {}.toString.call(inputState).match(/\s([a-z|A-Z]+)/)[1] + '". Expected argument to be an object with the following ' + ('keys: "' + reducerKeys.join('", "') + '"'); 4908 } 4909 4910 var unexpectedKeys = Object.keys(inputState).filter(function (key) { 4911 return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key]; 4912 }); 4913 4914 unexpectedKeys.forEach(function (key) { 4915 unexpectedKeyCache[key] = true; 4916 }); 4917 4918 if (unexpectedKeys.length > 0) { 4919 return 'Unexpected ' + (unexpectedKeys.length > 1 ? 'keys' : 'key') + ' ' + ('"' + unexpectedKeys.join('", "') + '" found in ' + argumentName + '. ') + 'Expected to find one of the known reducer keys instead: ' + ('"' + reducerKeys.join('", "') + '". Unexpected keys will be ignored.'); 4920 } 4921 } 4922 4923 function assertReducerSanity(reducers) { 4924 Object.keys(reducers).forEach(function (key) { 4925 var reducer = reducers[key]; 4926 var initialState = reducer(undefined, { type: _createStore__WEBPACK_IMPORTED_MODULE_0__["ActionTypes"].INIT }); 4927 4928 if (typeof initialState === 'undefined') { 4929 throw new Error('Reducer "' + key + '" returned undefined during initialization. ' + 'If the state passed to the reducer is undefined, you must ' + 'explicitly return the initial state. The initial state may ' + 'not be undefined.'); 4930 } 4931 4932 var type = '@@redux/PROBE_UNKNOWN_ACTION_' + Math.random().toString(36).substring(7).split('').join('.'); 4933 if (typeof reducer(undefined, { type: type }) === 'undefined') { 4934 throw new Error('Reducer "' + key + '" returned undefined when probed with a random type. ' + ('Don\'t try to handle ' + _createStore__WEBPACK_IMPORTED_MODULE_0__["ActionTypes"].INIT + ' or other actions in "redux/*" ') + 'namespace. They are considered private. Instead, you must return the ' + 'current state for any unknown actions, unless it is undefined, ' + 'in which case you must return the initial state, regardless of the ' + 'action type. The initial state may not be undefined.'); 4935 } 4936 }); 4937 } 4938 4939 /** 4940 * Turns an object whose values are different reducer functions, into a single 4941 * reducer function. It will call every child reducer, and gather their results 4942 * into a single state object, whose keys correspond to the keys of the passed 4943 * reducer functions. 4944 * 4945 * @param {Object} reducers An object whose values correspond to different 4946 * reducer functions that need to be combined into one. One handy way to obtain 4947 * it is to use ES6 `import * as reducers` syntax. The reducers may never return 4948 * undefined for any action. Instead, they should return their initial state 4949 * if the state passed to them was undefined, and the current state for any 4950 * unrecognized action. 4951 * 4952 * @returns {Function} A reducer function that invokes every reducer inside the 4953 * passed object, and builds a state object with the same shape. 4954 */ 4955 function combineReducers(reducers) { 4956 var reducerKeys = Object.keys(reducers); 4957 var finalReducers = {}; 4958 for (var i = 0; i < reducerKeys.length; i++) { 4959 var key = reducerKeys[i]; 4960 4961 if (false) { } 4962 4963 if (typeof reducers[key] === 'function') { 4964 finalReducers[key] = reducers[key]; 4965 } 4966 } 4967 var finalReducerKeys = Object.keys(finalReducers); 4968 4969 if (false) { var unexpectedKeyCache; } 4970 4971 var sanityError; 4972 try { 4973 assertReducerSanity(finalReducers); 4974 } catch (e) { 4975 sanityError = e; 4976 } 4977 4978 return function combination() { 4979 var state = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; 4980 var action = arguments[1]; 4981 4982 if (sanityError) { 4983 throw sanityError; 4984 } 4985 4986 if (false) { var warningMessage; } 4987 4988 var hasChanged = false;
4989 var nextState = {}; 4990 for (var i = 0; i < finalReducerKeys.length; i++) { 4991 var key = finalReducerKeys[i]; 4992 var reducer = finalReducers[key]; 4993 var previousStateForKey = state[key]; 4994 var nextStateForKey = reducer(previousStateForKey, action); 4995 if (typeof nextStateForKey === 'undefined') { 4996 var errorMessage = getUndefinedStateErrorMessage(key, action); 4997 throw new Error(errorMessage); 4998 } 4999 nextState[key] = nextStateForKey; 5000 hasChanged = hasChanged || nextStateForKey !== previousStateForKey; 5001 } 5002 return hasChanged ? nextState : state; 5003 }; 5004 } 5005 5006 /***/ 5007 }), 5008/* 83 */ 5009/***/ (function (module, __webpack_exports__, __webpack_require__) { 5010 5011 "use strict"; 5012 __webpack_require__.r(__webpack_exports__); 5013/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function () { return warning; }); 5014 /** 5015 * Prints a warning in the console if it exists. 5016 * 5017 * @param {String} message The warning message. 5018 * @returns {void} 5019 */ 5020 function warning(message) { 5021 /* eslint-disable no-console */ 5022 if (typeof console !== 'undefined' && typeof console.error === 'function') { 5023 console.error(message); 5024 } 5025 /* eslint-enable no-console */ 5026 try { 5027 // This error was thrown as a convenience so that if you enable 5028 // "break on all exceptions" in your console, 5029 // it would pause the execution at this line. 5030 throw new Error(message); 5031 /* eslint-disable no-empty */ 5032 } catch (e) { } 5033 /* eslint-enable no-empty */ 5034 } 5035 5036 /***/ 5037 }), 5038/* 84 */ 5039/***/ (function (module, __webpack_exports__, __webpack_require__) { 5040 5041 "use strict"; 5042 __webpack_require__.r(__webpack_exports__); 5043/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function () { return bindActionCreators; }); 5044 function bindActionCreator(actionCreator, dispatch) { 5045 return function () { 5046 return dispatch(actionCreator.apply(undefined, arguments)); 5047 }; 5048 } 5049 5050 /** 5051 * Turns an object whose values are action creators, into an object with the 5052 * same keys, but with every function wrapped into a `dispatch` call so they 5053 * may be invoked directly. This is just a convenience method, as you can call 5054 * `store.dispatch(MyActionCreators.doSomething())` yourself just fine. 5055 * 5056 * For convenience, you can also pass a single function as the first argument, 5057 * and get a function in return. 5058 * 5059 * @param {Function|Object} actionCreators An object whose values are action 5060 * creator functions. One handy way to obtain it is to use ES6 `import * as` 5061 * syntax. You may also pass a single function. 5062 * 5063 * @param {Function} dispatch The `dispatch` function available on your Redux 5064 * store. 5065 * 5066 * @returns {Function|Object} The object mimicking the original object, but with 5067 * every action creator wrapped into the `dispatch` call. If you passed a 5068 * function as `actionCreators`, the return value will also be a single 5069 * function. 5070 */ 5071 function bindActionCreators(actionCreators, dispatch) { 5072 if (typeof actionCreators === 'function') { 5073 return bindActionCreator(actionCreators, dispatch); 5074 } 5075 5076 if (typeof actionCreators !== 'object' || actionCreators === null) { 5077 throw new Error('bindActionCreators expected an object or a function, instead received ' + (actionCreators === null ? 'null' : typeof actionCreators) + '. ' + 'Did you write "import ActionCreators from" instead of "import * as ActionCreators from"?'); 5078 } 5079 5080 var keys = Object.keys(actionCreators); 5081 var boundActionCreators = {}; 5082 for (var i = 0; i < keys.length; i++) { 5083 var key = keys[i]; 5084 var actionCreator = actionCreators[key]; 5085 if (typeof actionCreator === 'function') { 5086 boundActionCreators[key] = bindActionCreator(actionCreator, dispatch); 5087 } 5088 } 5089 return boundActionCreators; 5090 } 5091 5092 /***/ 5093 }), 5094/* 85 */ 5095/***/ (function (module, __webpack_exports__, __webpack_require__) { 5096 5097 "use strict"; 5098 __webpack_require__.r(__webpack_exports__); 5099/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function () { return applyMiddleware; }); 5100/* harmony import */ var _compose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(44); 5101 var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; 5102 5103 5104 5105 /** 5106 * Creates a store enhancer that applies middleware to the dispatch method 5107 * of the Redux store. This is handy for a variety of tasks, such as expressing 5108 * asynchronous actions in a concise manner, or logging every action payload. 5109 * 5110 * See `redux-thunk` package as an example of the Redux middleware. 5111 * 5112 * Because middleware is potentially asynchronous, this should be the first 5113 * store enhancer in the composition chain. 5114 * 5115 * Note that each middleware will be given the `dispatch` and `getState` functions 5116 * as named arguments. 5117 * 5118 * @param {...Function} middlewares The middleware chain to be applied. 5119 * @returns {Function} A store enhancer applying the middleware. 5120 */ 5121 function applyMiddleware() { 5122 for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) { 5123 middlewares[_key] = arguments[_key]; 5124 } 5125 5126 return function (createStore) { 5127 return function (reducer, preloadedState, enhancer) { 5128 var store = createStore(reducer, preloadedState, enhancer); 5129 var _dispatch = store.dispatch; 5130 var chain = []; 5131 5132 var middlewareAPI = { 5133 getState: store.getState, 5134 dispatch: function dispatch(action) { 5135 return _dispatch(action); 5136 } 5137 }; 5138 chain = middlewares.map(function (middleware) { 5139 return middleware(middlewareAPI); 5140 }); 5141 _dispatch = _compose__WEBPACK_IMPORTED_MODULE_0__["default"].apply(undefined, chain)(store.dispatch); 5142 5143 return _extends({}, store, { 5144 dispatch: _dispatch 5145 }); 5146 }; 5147 }; 5148 } 5149 5150 /***/ 5151 }), 5152/* 86 */ 5153/***/ (function (module, exports, __webpack_require__) { 5154 5155 var createFind = __webpack_require__(87), 5156 findIndex = __webpack_require__(243); 5157 5158 /** 5159 * Iterates over elements of `collection`, returning the first element 5160 * `predicate` returns truthy for. The predicate is invoked with three 5161 * arguments: (value, index|key, collection). 5162 * 5163 * @static 5164 * @memberOf _ 5165 * @since 0.1.0 5166 * @category Collection 5167 * @param {Array|Object} collection The collection to inspect. 5168 * @param {Function} [predicate=_.identity] The function invoked per iteration. 5169 * @param {number} [fromIndex=0] The index to search from. 5170 * @returns {*} Returns the matched element, else `undefined`. 5171 * @example 5172 * 5173 * var users = [ 5174 * { 'user': 'barney', 'age': 36, 'active': true }, 5175 * { 'user': 'fred', 'age': 40, 'active': false }, 5176 * { 'user': 'pebbles', 'age': 1, 'active': true } 5177 * ]; 5178 * 5179 * _.find(users, function(o) { return o.age < 40; }); 5180 * // => object for 'barney' 5181 * 5182 * // The `_.matches` iteratee shorthand. 5183 * _.find(users, { 'age': 1, 'active': true }); 5184 * // => object for 'pebbles' 5185 * 5186 * // The `_.matchesProperty` iteratee shorthand. 5187 * _.find(users, ['active', false]); 5188 * // => object for 'fred' 5189 * 5190 * // The `_.property` iteratee shorthand. 5191 * _.find(users, 'active'); 5192 * // => object for 'barney' 5193 */ 5194 var find = createFind(findIndex); 5195 5196 module.exports = find; 5197 5198 5199 /***/ 5200 }), 5201/* 87 */ 5202/***/ (function (module, exports, __webpack_require__) { 5203 5204 var baseIteratee = __webpack_require__(7), 5205 isArrayLike = __webpack_require__(12), 5206 keys = __webpack_require__(33); 5207 5208 /** 5209 * Creates a `_.find` or `_.findLast` function. 5210 * 5211 * @private 5212 * @param {Function} findIndexFunc The function to find the collection index. 5213 * @returns {Function} Returns the new find function. 5214 */ 5215 function createFind(findIndexFunc) { 5216 return function (collection, predicate, fromIndex) { 5217 var iterable = Object(collection); 5218 if (!isArrayLike(collection)) { 5219 var iteratee = baseIteratee(predicate, 3); 5220 collection = keys(collection); 5221 predicate = function (key) { return iteratee(iterable[key], key, iterable); }; 5222 } 5223 var index = findIndexFunc(collection, predicate, fromIndex); 5224 return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined; 5225 }; 5226 } 5227 5228 module.exports = createFind; 5229 5230 5231 /***/ 5232 }), 5233/* 88 */ 5234/***/ (function (module, exports, __webpack_require__) { 5235 5236 var ListCache = __webpack_require__(29), 5237 stackClear = __webpack_require__(185), 5238 stackDelete = __webpack_require__(186), 5239 stackGet = __webpack_require__(187), 5240 stackHas = __webpack_require__(188), 5241 stackSet = __webpack_require__(189); 5242 5243 /** 5244 * Creates a stack cache object to store key-value pairs. 5245 * 5246 * @private 5247 * @constructor 5248 * @param {Array} [entries] The key-value pairs to cache. 5249 */ 5250 function Stack(entries) {
vendor: 5,167 bytes, lines 5251-5422
5251 var data = this.__data__ = new ListCache(entries); 5252 this.size = data.size; 5253 } 5254 5255 // Add methods to `Stack`. 5256 Stack.prototype.clear = stackClear; 5257 Stack.prototype['delete'] = stackDelete; 5258 Stack.prototype.get = stackGet; 5259 Stack.prototype.has = stackHas; 5260 Stack.prototype.set = stackSet; 5261 5262 module.exports = Stack; 5263 5264 5265 /***/ 5266 }), 5267/* 89 */ 5268/***/ (function (module, exports, __webpack_require__) { 5269 5270 var baseGetTag = __webpack_require__(11), 5271 isObject = __webpack_require__(6); 5272 5273 /** `Object#toString` result references. */ 5274 var asyncTag = '[object AsyncFunction]', 5275 funcTag = '[object Function]', 5276 genTag = '[object GeneratorFunction]', 5277 proxyTag = '[object Proxy]'; 5278 5279 /** 5280 * Checks if `value` is classified as a `Function` object. 5281 * 5282 * @static 5283 * @memberOf _ 5284 * @since 0.1.0 5285 * @category Lang 5286 * @param {*} value The value to check. 5287 * @returns {boolean} Returns `true` if `value` is a function, else `false`. 5288 * @example 5289 * 5290 * _.isFunction(_); 5291 * // => true 5292 * 5293 * _.isFunction(/abc/); 5294 * // => false 5295 */ 5296 function isFunction(value) { 5297 if (!isObject(value)) { 5298 return false; 5299 } 5300 // The use of `Object#toString` avoids issues with the `typeof` operator 5301 // in Safari 9 which returns 'object' for typed arrays and other constructors. 5302 var tag = baseGetTag(value); 5303 return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; 5304 } 5305 5306 module.exports = isFunction; 5307 5308 5309 /***/ 5310 }), 5311/* 90 */ 5312/***/ (function (module, exports, __webpack_require__) { 5313 5314/* WEBPACK VAR INJECTION */(function (global) {/** Detect free variable `global` from Node.js. */ 5315 var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; 5316 5317 module.exports = freeGlobal; 5318 5319 /* WEBPACK VAR INJECTION */ 5320 }.call(this, __webpack_require__(23))) 5321 5322 /***/ 5323 }), 5324/* 91 */ 5325/***/ (function (module, exports) { 5326 5327 /** Used for built-in method references. */ 5328 var funcProto = Function.prototype; 5329 5330 /** Used to resolve the decompiled source of functions. */ 5331 var funcToString = funcProto.toString; 5332 5333 /** 5334 * Converts `func` to its source code. 5335 * 5336 * @private 5337 * @param {Function} func The function to convert. 5338 * @returns {string} Returns the source code. 5339 */ 5340 function toSource(func) { 5341 if (func != null) { 5342 try { 5343 return funcToString.call(func); 5344 } catch (e) { } 5345 try { 5346 return (func + ''); 5347 } catch (e) { } 5348 } 5349 return ''; 5350 } 5351 5352 module.exports = toSource; 5353 5354 5355 /***/ 5356 }), 5357/* 92 */ 5358/***/ (function (module, exports, __webpack_require__) { 5359 5360 var baseIsEqualDeep = __webpack_require__(208), 5361 isObjectLike = __webpack_require__(9); 5362 5363 /** 5364 * The base implementation of `_.isEqual` which supports partial comparisons 5365 * and tracks traversed objects. 5366 * 5367 * @private 5368 * @param {*} value The value to compare. 5369 * @param {*} other The other value to compare. 5370 * @param {boolean} bitmask The bitmask flags. 5371 * 1 - Unordered comparison 5372 * 2 - Partial comparison 5373 * @param {Function} [customizer] The function to customize comparisons. 5374 * @param {Object} [stack] Tracks traversed `value` and `other` objects. 5375 * @returns {boolean} Returns `true` if the values are equivalent, else `false`. 5376 */ 5377 function baseIsEqual(value, other, bitmask, customizer, stack) { 5378 if (value === other) { 5379 return true; 5380 } 5381 if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) { 5382 return value !== value && other !== other; 5383 } 5384 return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); 5385 } 5386 5387 module.exports = baseIsEqual; 5388 5389 5390 /***/ 5391 }), 5392/* 93 */ 5393/***/ (function (module, exports, __webpack_require__) { 5394 5395 var SetCache = __webpack_require__(209), 5396 arraySome = __webpack_require__(212), 5397 cacheHas = __webpack_require__(213); 5398 5399 /** Used to compose bitmasks for value comparisons. */ 5400 var COMPARE_PARTIAL_FLAG = 1, 5401 COMPARE_UNORDERED_FLAG = 2; 5402 5403 /** 5404 * A specialized version of `baseIsEqualDeep` for arrays with support for 5405 * partial deep comparisons. 5406 * 5407 * @private 5408 * @param {Array} array The array to compare. 5409 * @param {Array} other The other array to compare. 5410 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. 5411 * @param {Function} customizer The function to customize comparisons. 5412 * @param {Function} equalFunc The function to determine equivalents of values. 5413 * @param {Object} stack Tracks traversed `array` and `other` objects. 5414 * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. 5415 */ 5416 function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { 5417 var isPartial = bitmask & COMPARE_PARTIAL_FLAG, 5418 arrLength = array.length, 5419 othLength = other.length; 5420 5421 if (arrLength != othLength && !(isPartial && othLength > arrLength)) { 5422 return false;
vendor: 1,348 bytes, lines 5423-5462
5423 } 5424 // Check that cyclic values are equal. 5425 var arrStacked = stack.get(array); 5426 var othStacked = stack.get(other); 5427 if (arrStacked && othStacked) { 5428 return arrStacked == other && othStacked == array; 5429 } 5430 var index = -1, 5431 result = true, 5432 seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined; 5433 5434 stack.set(array, other); 5435 stack.set(other, array); 5436 5437 // Ignore non-index properties. 5438 while (++index < arrLength) { 5439 var arrValue = array[index], 5440 othValue = other[index]; 5441 5442 if (customizer) { 5443 var compared = isPartial 5444 ? customizer(othValue, arrValue, index, other, array, stack) 5445 : customizer(arrValue, othValue, index, array, other, stack); 5446 } 5447 if (compared !== undefined) { 5448 if (compared) { 5449 continue; 5450 } 5451 result = false; 5452 break; 5453 } 5454 // Recursively compare arrays (susceptible to call stack limits). 5455 if (seen) { 5456 if (!arraySome(other, function (othValue, othIndex) { 5457 if (!cacheHas(seen, othIndex) && 5458 (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { 5459 return seen.push(othIndex); 5460 } 5461 })) { 5462 result = false;
vendor: 11,471 bytes, lines 5463-5896
5463 break; 5464 } 5465 } else if (!( 5466 arrValue === othValue || 5467 equalFunc(arrValue, othValue, bitmask, customizer, stack) 5468 )) { 5469 result = false; 5470 break; 5471 } 5472 } 5473 stack['delete'](array); 5474 stack['delete'](other); 5475 return result; 5476 } 5477 5478 module.exports = equalArrays; 5479 5480 5481 /***/ 5482 }), 5483/* 94 */ 5484/***/ (function (module, exports, __webpack_require__) { 5485 5486 var arrayPush = __webpack_require__(49), 5487 isArray = __webpack_require__(1); 5488 5489 /** 5490 * The base implementation of `getAllKeys` and `getAllKeysIn` which uses 5491 * `keysFunc` and `symbolsFunc` to get the enumerable property names and 5492 * symbols of `object`. 5493 * 5494 * @private 5495 * @param {Object} object The object to query. 5496 * @param {Function} keysFunc The function to get the keys of `object`. 5497 * @param {Function} symbolsFunc The function to get the symbols of `object`. 5498 * @returns {Array} Returns the array of property names and symbols. 5499 */ 5500 function baseGetAllKeys(object, keysFunc, symbolsFunc) { 5501 var result = keysFunc(object); 5502 return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); 5503 } 5504 5505 module.exports = baseGetAllKeys; 5506 5507 5508 /***/ 5509 }), 5510/* 95 */ 5511/***/ (function (module, exports, __webpack_require__) { 5512 5513 var arrayFilter = __webpack_require__(220), 5514 stubArray = __webpack_require__(96); 5515 5516 /** Used for built-in method references. */ 5517 var objectProto = Object.prototype; 5518 5519 /** Built-in value references. */ 5520 var propertyIsEnumerable = objectProto.propertyIsEnumerable; 5521 5522 /* Built-in method references for those with the same name as other `lodash` methods. */ 5523 var nativeGetSymbols = Object.getOwnPropertySymbols; 5524 5525 /** 5526 * Creates an array of the own enumerable symbols of `object`. 5527 * 5528 * @private 5529 * @param {Object} object The object to query. 5530 * @returns {Array} Returns the array of symbols. 5531 */ 5532 var getSymbols = !nativeGetSymbols ? stubArray : function (object) { 5533 if (object == null) { 5534 return []; 5535 } 5536 object = Object(object); 5537 return arrayFilter(nativeGetSymbols(object), function (symbol) { 5538 return propertyIsEnumerable.call(object, symbol); 5539 }); 5540 }; 5541 5542 module.exports = getSymbols; 5543 5544 5545 /***/ 5546 }), 5547/* 96 */ 5548/***/ (function (module, exports) { 5549 5550 /** 5551 * This method returns a new empty array. 5552 * 5553 * @static 5554 * @memberOf _ 5555 * @since 4.13.0 5556 * @category Util 5557 * @returns {Array} Returns the new empty array. 5558 * @example 5559 * 5560 * var arrays = _.times(2, _.stubArray); 5561 * 5562 * console.log(arrays); 5563 * // => [[], []] 5564 * 5565 * console.log(arrays[0] === arrays[1]); 5566 * // => false 5567 */ 5568 function stubArray() { 5569 return []; 5570 } 5571 5572 module.exports = stubArray; 5573 5574 5575 /***/ 5576 }), 5577/* 97 */ 5578/***/ (function (module, exports, __webpack_require__) { 5579 5580 var baseTimes = __webpack_require__(221), 5581 isArguments = __webpack_require__(34), 5582 isArray = __webpack_require__(1), 5583 isBuffer = __webpack_require__(50), 5584 isIndex = __webpack_require__(51), 5585 isTypedArray = __webpack_require__(52); 5586 5587 /** Used for built-in method references. */ 5588 var objectProto = Object.prototype; 5589 5590 /** Used to check objects for own properties. */ 5591 var hasOwnProperty = objectProto.hasOwnProperty; 5592 5593 /** 5594 * Creates an array of the enumerable property names of the array-like `value`. 5595 * 5596 * @private 5597 * @param {*} value The value to query. 5598 * @param {boolean} inherited Specify returning inherited property names. 5599 * @returns {Array} Returns the array of property names. 5600 */ 5601 function arrayLikeKeys(value, inherited) { 5602 var isArr = isArray(value), 5603 isArg = !isArr && isArguments(value), 5604 isBuff = !isArr && !isArg && isBuffer(value), 5605 isType = !isArr && !isArg && !isBuff && isTypedArray(value), 5606 skipIndexes = isArr || isArg || isBuff || isType, 5607 result = skipIndexes ? baseTimes(value.length, String) : [], 5608 length = result.length; 5609 5610 for (var key in value) { 5611 if ((inherited || hasOwnProperty.call(value, key)) && 5612 !(skipIndexes && ( 5613 // Safari 9 has enumerable `arguments.length` in strict mode. 5614 key == 'length' || 5615 // Node.js 0.10 has enumerable non-index properties on buffers. 5616 (isBuff && (key == 'offset' || key == 'parent')) || 5617 // PhantomJS 2 has enumerable non-index properties on typed arrays. 5618 (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || 5619 // Skip index properties. 5620 isIndex(key, length) 5621 ))) { 5622 result.push(key); 5623 } 5624 } 5625 return result; 5626 } 5627 5628 module.exports = arrayLikeKeys; 5629 5630 5631 /***/ 5632 }), 5633/* 98 */ 5634/***/ (function (module, exports) { 5635 5636 module.exports = function (module) { 5637 if (!module.webpackPolyfill) { 5638 module.deprecate = function () { }; 5639 module.paths = []; 5640 // module.parent = undefined by default 5641 if (!module.children) module.children = []; 5642 Object.defineProperty(module, "loaded", { 5643 enumerable: true, 5644 get: function () { 5645 return module.l; 5646 } 5647 }); 5648 Object.defineProperty(module, "id", { 5649 enumerable: true, 5650 get: function () { 5651 return module.i; 5652 } 5653 }); 5654 module.webpackPolyfill = 1; 5655 } 5656 return module; 5657 }; 5658 5659 5660 /***/ 5661 }), 5662/* 99 */ 5663/***/ (function (module, exports) { 5664 5665 /** 5666 * Creates a unary function that invokes `func` with its argument transformed. 5667 * 5668 * @private 5669 * @param {Function} func The function to wrap. 5670 * @param {Function} transform The argument transform. 5671 * @returns {Function} Returns the new function. 5672 */ 5673 function overArg(func, transform) { 5674 return function (arg) { 5675 return func(transform(arg)); 5676 }; 5677 } 5678 5679 module.exports = overArg; 5680 5681 5682 /***/ 5683 }), 5684/* 100 */ 5685/***/ (function (module, exports, __webpack_require__) { 5686 5687 var getNative = __webpack_require__(8), 5688 root = __webpack_require__(5); 5689 5690 /* Built-in method references that are verified to be native. */ 5691 var WeakMap = getNative(root, 'WeakMap'); 5692 5693 module.exports = WeakMap; 5694 5695 5696 /***/ 5697 }), 5698/* 101 */ 5699/***/ (function (module, exports, __webpack_require__) { 5700 5701 var isObject = __webpack_require__(6); 5702 5703 /** 5704 * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. 5705 * 5706 * @private 5707 * @param {*} value The value to check. 5708 * @returns {boolean} Returns `true` if `value` if suitable for strict 5709 * equality comparisons, else `false`. 5710 */ 5711 function isStrictComparable(value) { 5712 return value === value && !isObject(value); 5713 } 5714 5715 module.exports = isStrictComparable; 5716 5717 5718 /***/ 5719 }), 5720/* 102 */ 5721/***/ (function (module, exports) { 5722 5723 /** 5724 * A specialized version of `matchesProperty` for source values suitable 5725 * for strict equality comparisons, i.e. `===`. 5726 * 5727 * @private 5728 * @param {string} key The key of the property to get. 5729 * @param {*} srcValue The value to match. 5730 * @returns {Function} Returns the new spec function. 5731 */ 5732 function matchesStrictComparable(key, srcValue) { 5733 return function (object) { 5734 if (object == null) { 5735 return false; 5736 } 5737 return object[key] === srcValue && 5738 (srcValue !== undefined || (key in Object(object))); 5739 }; 5740 } 5741 5742 module.exports = matchesStrictComparable; 5743 5744 5745 /***/ 5746 }), 5747/* 103 */ 5748/***/ (function (module, exports) { 5749 5750 /** 5751 * A specialized version of `_.map` for arrays without support for iteratee 5752 * shorthands. 5753 * 5754 * @private 5755 * @param {Array} [array] The array to iterate over. 5756 * @param {Function} iteratee The function invoked per iteration. 5757 * @returns {Array} Returns the new mapped array. 5758 */ 5759 function arrayMap(array, iteratee) { 5760 var index = -1, 5761 length = array == null ? 0 : array.length, 5762 result = Array(length); 5763 5764 while (++index < length) { 5765 result[index] = iteratee(array[index], index, array); 5766 } 5767 return result; 5768 } 5769 5770 module.exports = arrayMap; 5771 5772 5773 /***/ 5774 }), 5775/* 104 */ 5776/***/ (function (module, exports) { 5777 5778 /** 5779 * The base implementation of `_.property` without support for deep paths. 5780 * 5781 * @private 5782 * @param {string} key The key of the property to get. 5783 * @returns {Function} Returns the new accessor function. 5784 */ 5785 function baseProperty(key) { 5786 return function (object) { 5787 return object == null ? undefined : object[key]; 5788 }; 5789 } 5790 5791 module.exports = baseProperty; 5792 5793 5794 /***/ 5795 }), 5796/* 105 */ 5797/***/ (function (module, exports) { 5798 5799 /** 5800 * The base implementation of `_.findIndex` and `_.findLastIndex` without 5801 * support for iteratee shorthands. 5802 * 5803 * @private 5804 * @param {Array} array The array to inspect. 5805 * @param {Function} predicate The function invoked per iteration. 5806 * @param {number} fromIndex The index to search from. 5807 * @param {boolean} [fromRight] Specify iterating from right to left. 5808 * @returns {number} Returns the index of the matched value, else `-1`. 5809 */ 5810 function baseFindIndex(array, predicate, fromIndex, fromRight) { 5811 var length = array.length, 5812 index = fromIndex + (fromRight ? 1 : -1); 5813 5814 while ((fromRight ? index-- : ++index < length)) { 5815 if (predicate(array[index], index, array)) { 5816 return index; 5817 } 5818 } 5819 return -1; 5820 } 5821 5822 module.exports = baseFindIndex; 5823 5824 5825 /***/ 5826 }), 5827/* 106 */ 5828/***/ (function (module, exports, __webpack_require__) { 5829 5830 var toFinite = __webpack_require__(244); 5831 5832 /** 5833 * Converts `value` to an integer. 5834 * 5835 * **Note:** This method is loosely based on 5836 * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger). 5837 * 5838 * @static 5839 * @memberOf _ 5840 * @since 4.0.0 5841 * @category Lang 5842 * @param {*} value The value to convert. 5843 * @returns {number} Returns the converted integer. 5844 * @example 5845 * 5846 * _.toInteger(3.2); 5847 * // => 3 5848 * 5849 * _.toInteger(Number.MIN_VALUE); 5850 * // => 0 5851 * 5852 * _.toInteger(Infinity); 5853 * // => 1.7976931348623157e+308 5854 * 5855 * _.toInteger('3.2'); 5856 * // => 3 5857 */ 5858 function toInteger(value) { 5859 var result = toFinite(value), 5860 remainder = result % 1; 5861 5862 return result === result ? (remainder ? result - remainder : result) : 0; 5863 } 5864 5865 module.exports = toInteger; 5866 5867 5868 /***/ 5869 }), 5870/* 107 */ 5871/***/ (function (module, exports, __webpack_require__) { 5872 5873 "use strict"; 5874 5875 5876 var _interopRequireDefault = __webpack_require__(0); 5877 5878 Object.defineProperty(exports, "__esModule", { 5879 value: true 5880 }); 5881 exports.inQuad = inQuad; 5882 exports.outQuad = outQuad; 5883 exports.inOutQuad = inOutQuad; 5884 exports.inCubic = inCubic; 5885 exports.outCubic = outCubic; 5886 exports.inOutCubic = inOutCubic; 5887 exports.inQuart = inQuart; 5888 exports.outQuart = outQuart; 5889 exports.inOutQuart = inOutQuart; 5890 exports.inQuint = inQuint; 5891 exports.outQuint = outQuint; 5892 exports.inOutQuint = inOutQuint; 5893 exports.inSine = inSine; 5894 exports.outSine = outSine; 5895 exports.inOutSine = inOutSine; 5896 exports.inExpo = inExpo;
5897 exports.outExpo = outExpo; 5898 exports.inOutExpo = inOutExpo; 5899 exports.inCirc = inCirc; 5900 exports.outCirc = outCirc; 5901 exports.inOutCirc = inOutCirc; 5902 exports.outBounce = outBounce; 5903 exports.inBack = inBack; 5904 exports.outBack = outBack; 5905 exports.inOutBack = inOutBack; 5906 exports.inElastic = inElastic; 5907 exports.outElastic = outElastic; 5908 exports.inOutElastic = inOutElastic; 5909 exports.swingFromTo = swingFromTo; 5910 exports.swingFrom = swingFrom; 5911 exports.swingTo = swingTo; 5912 exports.bounce = bounce; 5913 exports.bouncePast = bouncePast; 5914 exports.easeInOut = exports.easeOut = exports.easeIn = exports.ease = void 0; 5915 5916 var _bezierEasing = _interopRequireDefault(__webpack_require__(108)); // Easing functions adapted from Thomas Fuchs & Jeremy Kahn 5917 // Easing Equations (c) 2003 Robert Penner, BSD license 5918 // https://raw.github.com/danro/easing-js/master/LICENSE 5919 5920 5921 var magicSwing = 1.70158; 5922 var ease = (0, _bezierEasing["default"])(0.25, 0.1, 0.25, 1.0); 5923 exports.ease = ease; 5924 var easeIn = (0, _bezierEasing["default"])(0.42, 0.0, 1.0, 1.0); 5925 exports.easeIn = easeIn; 5926 var easeOut = (0, _bezierEasing["default"])(0.0, 0.0, 0.58, 1.0); 5927 exports.easeOut = easeOut; 5928 var easeInOut = (0, _bezierEasing["default"])(0.42, 0.0, 0.58, 1.0); 5929 exports.easeInOut = easeInOut; 5930 5931 function inQuad(pos) { 5932 return Math.pow(pos, 2); 5933 } 5934 5935 function outQuad(pos) { 5936 return -(Math.pow(pos - 1, 2) - 1); 5937 } 5938 5939 function inOutQuad(pos) { 5940 if ((pos /= 0.5) < 1) { 5941 return 0.5 * Math.pow(pos, 2); 5942 } 5943 5944 return -0.5 * ((pos -= 2) * pos - 2); 5945 } 5946 5947 function inCubic(pos) { 5948 return Math.pow(pos, 3); 5949 } 5950 5951 function outCubic(pos) { 5952 return Math.pow(pos - 1, 3) + 1; 5953 } 5954 5955 function inOutCubic(pos) { 5956 if ((pos /= 0.5) < 1) { 5957 return 0.5 * Math.pow(pos, 3); 5958 } 5959 5960 return 0.5 * (Math.pow(pos - 2, 3) + 2); 5961 } 5962 5963 function inQuart(pos) { 5964 return Math.pow(pos, 4); 5965 } 5966 5967 function outQuart(pos) { 5968 return -(Math.pow(pos - 1, 4) - 1); 5969 } 5970 5971 function inOutQuart(pos) { 5972 if ((pos /= 0.5) < 1) { 5973 return 0.5 * Math.pow(pos, 4); 5974 } 5975 5976 return -0.5 * ((pos -= 2) * Math.pow(pos, 3) - 2); 5977 } 5978 5979 function inQuint(pos) { 5980 return Math.pow(pos, 5); 5981 } 5982 5983 function outQuint(pos) { 5984 return Math.pow(pos - 1, 5) + 1; 5985 } 5986 5987 function inOutQuint(pos) { 5988 if ((pos /= 0.5) < 1) { 5989 return 0.5 * Math.pow(pos, 5); 5990 } 5991 5992 return 0.5 * (Math.pow(pos - 2, 5) + 2); 5993 } 5994 5995 function inSine(pos) { 5996 return -Math.cos(pos * (Math.PI / 2)) + 1; 5997 } 5998 5999 function outSine(pos) { 6000 return Math.sin(pos * (Math.PI / 2)); 6001 } 6002 6003 function inOutSine(pos) { 6004 return -0.5 * (Math.cos(Math.PI * pos) - 1); 6005 } 6006 6007 function inExpo(pos) { 6008 return pos === 0 ? 0 : Math.pow(2, 10 * (pos - 1)); 6009 } 6010 6011 function outExpo(pos) { 6012 return pos === 1 ? 1 : -Math.pow(2, -10 * pos) + 1; 6013 } 6014 6015 function inOutExpo(pos) { 6016 if (pos === 0) { 6017 return 0; 6018 } 6019 6020 if (pos === 1) { 6021 return 1; 6022 } 6023 6024 if ((pos /= 0.5) < 1) { 6025 return 0.5 * Math.pow(2, 10 * (pos - 1)); 6026 } 6027 6028 return 0.5 * (-Math.pow(2, -10 * --pos) + 2); 6029 } 6030 6031 function inCirc(pos) { 6032 return -(Math.sqrt(1 - pos * pos) - 1); 6033 } 6034 6035 function outCirc(pos) { 6036 return Math.sqrt(1 - Math.pow(pos - 1, 2)); 6037 } 6038 6039 function inOutCirc(pos) { 6040 if ((pos /= 0.5) < 1) { 6041 return -0.5 * (Math.sqrt(1 - pos * pos) - 1); 6042 } 6043 6044 return 0.5 * (Math.sqrt(1 - (pos -= 2) * pos) + 1); 6045 } 6046 6047 function outBounce(pos) { 6048 if (pos < 1 / 2.75) { 6049 return 7.5625 * pos * pos; 6050 } else if (pos < 2 / 2.75) { 6051 return 7.5625 * (pos -= 1.5 / 2.75) * pos + 0.75; 6052 } else if (pos < 2.5 / 2.75) { 6053 return 7.5625 * (pos -= 2.25 / 2.75) * pos + 0.9375; 6054 } else { 6055 return 7.5625 * (pos -= 2.625 / 2.75) * pos + 0.984375; 6056 } 6057 } 6058 6059 function inBack(pos) { 6060 var s = magicSwing; 6061 return pos * pos * ((s + 1) * pos - s); 6062 } 6063 6064 function outBack(pos) { 6065 var s = magicSwing; 6066 return (pos -= 1) * pos * ((s + 1) * pos + s) + 1; 6067 } 6068 6069 function inOutBack(pos) { 6070 var s = magicSwing; 6071 6072 if ((pos /= 0.5) < 1) { 6073 return 0.5 * (pos * pos * (((s *= 1.525) + 1) * pos - s)); 6074 } 6075 6076 return 0.5 * ((pos -= 2) * pos * (((s *= 1.525) + 1) * pos + s) + 2); 6077 } 6078 6079 function inElastic(pos) { 6080 var s = magicSwing; 6081 var p = 0; 6082 var a = 1; 6083 6084 if (pos === 0) { 6085 return 0; 6086 } 6087 6088 if (pos === 1) { 6089 return 1; 6090 } 6091 6092 if (!p) { 6093 p = 0.3; 6094 } 6095 6096 if (a < 1) { 6097 a = 1; 6098 s = p / 4; 6099 } else { 6100 s = p / (2 * Math.PI) * Math.asin(1 / a); 6101 } 6102 6103 return -(a * Math.pow(2, 10 * (pos -= 1)) * Math.sin((pos - s
6103) * (2 * Math.PI) / p)); 6104 } 6105 6106 function outElastic(pos) { 6107 var s = magicSwing; 6108 var p = 0; 6109 var a = 1; 6110 6111 if (pos === 0) { 6112 return 0; 6113 } 6114 6115 if (pos === 1) { 6116 return 1; 6117 } 6118 6119 if (!p) { 6120 p = 0.3; 6121 } 6122 6123 if (a < 1) { 6124 a = 1; 6125 s = p / 4; 6126 } else { 6127 s = p / (2 * Math.PI) * Math.asin(1 / a); 6128 } 6129 6130 return a * Math.pow(2, -10 * pos) * Math.sin((pos - s) * (2 * Math.PI) / p) + 1; 6131 } 6132 6133 function inOutElastic(pos) { 6134 var s = magicSwing; 6135 var p = 0; 6136 var a = 1; 6137 6138 if (pos === 0) { 6139 return 0; 6140 } 6141 6142 if ((pos /= 1 / 2) === 2) { 6143 return 1; 6144 } 6145 6146 if (!p) { 6147 p = 0.3 * 1.5; 6148 } 6149 6150 if (a < 1) { 6151 a = 1; 6152 s = p / 4; 6153 } else { 6154 s = p / (2 * Math.PI) * Math.asin(1 / a); 6155 } 6156 6157 if (pos < 1) { 6158 return -0.5 * (a * Math.pow(2, 10 * (pos -= 1)) * Math.sin((pos - s) * (2 * Math.PI) / p)); 6159 } 6160 6161 return a * Math.pow(2, -10 * (pos -= 1)) * Math.sin((pos - s) * (2 * Math.PI) / p) * 0.5 + 1; 6162 } 6163 6164 function swingFromTo(pos) { 6165 var s = magicSwing; 6166 return (pos /= 0.5) < 1 ? 0.5 * (pos * pos * (((s *= 1.525) + 1) * pos - s)) : 0.5 * ((pos -= 2) * pos * (((s *= 1.525) + 1) * pos + s) + 2); 6167 } 6168 6169 function swingFrom(pos) { 6170 var s = magicSwing; 6171 return pos * pos * ((s + 1) * pos - s); 6172 } 6173 6174 function swingTo(pos) { 6175 var s = magicSwing; 6176 return (pos -= 1) * pos * ((s + 1) * pos + s) + 1; 6177 } 6178 6179 function bounce(pos) { 6180 if (pos < 1 / 2.75) { 6181 return 7.5625 * pos * pos; 6182 } else if (pos < 2 / 2.75) { 6183 return 7.5625 * (pos -= 1.5 / 2.75) * pos + 0.75; 6184 } else if (pos < 2.5 / 2.75) { 6185 return 7.5625 * (pos -= 2.25 / 2.75) * pos + 0.9375; 6186 } else { 6187 return 7.5625 * (pos -= 2.625 / 2.75) * pos + 0.984375; 6188 } 6189 } 6190 6191 function bouncePast(pos) { 6192 if (pos < 1 / 2.75) { 6193 return 7.5625 * pos * pos; 6194 } else if (pos < 2 / 2.75) { 6195 return 2 - (7.5625 * (pos -= 1.5 / 2.75) * pos + 0.75); 6196 } else if (pos < 2.5 / 2.75) { 6197 return 2 - (7.5625 * (pos -= 2.25 / 2.75) * pos + 0.9375); 6198 } else { 6199 return 2 - (7.5625 * (pos -= 2.625 / 2.75) * pos + 0.984375); 6200 } 6201 } 6202 6203 /***/ 6204 }), 6205/* 108 */ 6206/***/ (function (module, exports) { 6207 6208 /** 6209 * https://github.com/gre/bezier-easing 6210 * BezierEasing - use bezier curve for transition easing function 6211 * by Gaëtan Renaudeau 2014 - 2015 â MIT License 6212 */ 6213 6214 // These values are established by empiricism with tests (tradeoff: performance VS precision) 6215 var NEWTON_ITERATIONS = 4; 6216 var NEWTON_MIN_SLOPE = 0.001; 6217 var SUBDIVISION_PRECISION = 0.0000001; 6218 var SUBDIVISION_MAX_ITERATIONS = 10; 6219 6220 var kSplineTableSize = 11; 6221 var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0); 6222 6223 var float32ArraySupported = typeof Float32Array === 'function'; 6224 6225 function A(aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; } 6226 function B(aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; } 6227 function C(aA1) { return 3.0 * aA1; } 6228 6229 // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2. 6230 function calcBezier(aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; } 6231 6232 // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2. 6233 function getSlope(aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1); } 6234 6235 function binarySubdivide(aX, aA, aB, mX1, mX2) { 6236 var currentX, currentT, i = 0; 6237 do { 6238 currentT = aA + (aB - aA) / 2.0; 6239 currentX = calcBezier(currentT, mX1, mX2) - aX; 6240 if (currentX > 0.0) { 6241 aB = currentT; 6242 } else { 6243 aA = currentT; 6244 } 6245 } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS); 6246 return currentT; 6247 } 6248 6249 function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) { 6250 for (var i = 0; i < NEWTON_ITERATIONS; ++i) { 6251 var currentSlope = getSlope(aGuessT, mX1, mX2); 6252 if (currentSlope === 0.0) { 6253 return aGuessT; 6254 } 6255 var currentX = calcBezier(aGuessT, mX1, mX2) - aX; 6256 aGuessT -= currentX / currentSlope; 6257 } 6258 return aGuessT; 6259 } 6260 6261 module.exports = function bezier(mX1, mY1, mX2, mY2) { 6262 if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) { 6263 throw new Error('bezier x values must be in [0, 1] range'); 6264 } 6265 6266 // Precompute samples table 6267 var sampleValues = float32ArraySupported ? new Float32Array(kS
6267plineTableSize) : new Array(kSplineTableSize); 6268 if (mX1 !== mY1 || mX2 !== mY2) { 6269 for (var i = 0; i < kSplineTableSize; ++i) { 6270 sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2); 6271 } 6272 } 6273 6274 function getTForX(aX) { 6275 var intervalStart = 0.0; 6276 var currentSample = 1; 6277 var lastSample = kSplineTableSize - 1; 6278 6279 for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) { 6280 intervalStart += kSampleStepSize; 6281 } 6282 --currentSample; 6283 6284 // Interpolate to provide an initial guess for t 6285 var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]); 6286 var guessForT = intervalStart + dist * kSampleStepSize; 6287 6288 var initialSlope = getSlope(guessForT, mX1, mX2); 6289 if (initialSlope >= NEWTON_MIN_SLOPE) { 6290 return newtonRaphsonIterate(aX, guessForT, mX1, mX2); 6291 } else if (initialSlope === 0.0) { 6292 return guessForT; 6293 } else { 6294 return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2); 6295 } 6296 } 6297 6298 return function BezierEasing(x) { 6299 if (mX1 === mY1 && mX2 === mY2) { 6300 return x; // linear 6301 } 6302 // Because JavaScript number are imprecise, we should guarantee the extremes are right. 6303 if (x === 0) { 6304 return 0; 6305 } 6306 if (x === 1) { 6307 return 1; 6308 } 6309 return calcBezier(getTForX(x), mY1, mY2); 6310 }; 6311 }; 6312 6313 6314 /***/ 6315 }), 6316/* 109 */ 6317/***/ (function (module, exports, __webpack_require__) { 6318 6319 "use strict"; 6320 6321 6322 var _interopRequireDefault2 = __webpack_require__(0); 6323 6324 var _toConsumableArray2 = _interopRequireDefault2(__webpack_require__(110)); 6325 6326 var _interopRequireDefault = __webpack_require__(0); 6327 6328 var _interopRequireWildcard = __webpack_require__(14); 6329 6330 Object.defineProperty(exports, "__esModule", { 6331 value: true 6332 }); 6333 exports.optimizeFloat = optimizeFloat; 6334 exports.createBezierEasing = createBezierEasing; 6335 exports.applyEasing = applyEasing; 6336 6337 var easings = _interopRequireWildcard(__webpack_require__(107)); 6338 6339 var _bezierEasing = _interopRequireDefault(__webpack_require__(108)); 6340 6341 function optimizeFloat(value) { 6342 var digits = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5; 6343 var base = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 10; 6344 var pow = Math.pow(base, digits); 6345 6346 var _float = Number(Math.round(value * pow) / pow); 6347 6348 return Math.abs(_float) > 0.0001 ? _float : 0; 6349 } 6350 6351 function createBezierEasing(easing) { 6352 return (0, _bezierEasing["default"]).apply(void 0, (0, _toConsumableArray2["default"])(easing)); 6353 } 6354 6355 function applyEasing(easing, position, customEasingFn) { 6356 if (position === 0) { 6357 return 0; 6358 } 6359 6360 if (position === 1) { 6361 return 1; 6362 } 6363 6364 if (customEasingFn) { 6365 return optimizeFloat(position > 0 ? customEasingFn(position) : position); 6366 } 6367 6368 return optimizeFloat(position > 0 && easing && easings[easing] ? easings[easing](position) : position); 6369 } 6370 6371 /***/ 6372 }), 6373/* 110 */ 6374/***/ (function (module, exports, __webpack_require__) { 6375 6376 var arrayWithoutHoles = __webpack_require__(245); 6377 6378 var iterableToArray = __webpack_require__(246); 6379 6380 var nonIterableSpread = __webpack_require__(247); 6381 6382 function _toConsumableArray(arr) { 6383 return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread(); 6384 } 6385 6386 module.exports = _toConsumableArray; 6387 6388 /***/ 6389 }), 6390/* 111 */ 6391/***/ (function (module, exports, __webpack_require__) { 6392 6393 "use strict"; 6394 6395 6396 var _interopRequireDefault = __webpack_require__(0); 6397 6398 var _defineProperty2 = _interopRequireDefault(__webpack_require__(27)); 6399 6400 Object.defineProperty(exports, "__esModule", { 6401 value: true 6402 }); 6403 exports.isPluginType = isPluginType; 6404 exports.clearPlugin = exports.renderPlugin = exports.createPluginInstance = exports.getPluginDestination = exports.getPluginDuration = exports.getPluginOrigin = exports.getPluginConfig = void 0; 6405 6406 var _IX2LottieUtils = __webpack_require__(249); 6407 6408 var _constants = __webpack_require__(2); 6409 6410 var _IX2BrowserSupport = __webpack_require__(45); // eslint-disable-next-line webflow/module-top-level-imports, webflow/packages-must-be-defined 6411 6412 6413 var pluginMethodMap = (0, _defineProperty2["default"])({}, _constants.ActionTypeConsts.PLUGIN_LOTTIE, {
6414 getConfig: _IX2LottieUtils.getPluginConfig, 6415 getOrigin: _IX2LottieUtils.getPluginOrigin, 6416 getDuration: _IX2LottieUtils.getPluginDuration, 6417 getDestination: _IX2LottieUtils.getPluginDestination, 6418 createInstance: _IX2LottieUtils.createPluginInstance, 6419 render: _IX2LottieUtils.renderPlugin, 6420 clear: _IX2LottieUtils.clearPlugin 6421 }); 6422 6423 function isPluginType(actionTypeId) { 6424 return actionTypeId === _constants.ActionTypeConsts.PLUGIN_LOTTIE; 6425 } 6426 6427 var pluginMethod = function pluginMethod(methodName) { 6428 return function (actionTypeId) { 6429 if (!_IX2BrowserSupport.IS_BROWSER_ENV) { 6430 // IX2 plugins require browser libs for now 6431 return function () { 6432 return null; 6433 }; 6434 } 6435 6436 var plugin = pluginMethodMap[actionTypeId]; 6437 6438 if (!plugin) { 6439 throw new Error("IX2 no plugin configured for: ".concat(actionTypeId)); 6440 } 6441 6442 var method = plugin[methodName]; 6443 6444 if (!method) { 6445 throw new Error("IX2 invalid plugin method: ".concat(methodName)); 6446 } 6447 6448 return method; 6449 }; 6450 }; 6451 6452 var getPluginConfig = pluginMethod('getConfig'); 6453 exports.getPluginConfig = getPluginConfig; 6454 var getPluginOrigin = pluginMethod('getOrigin'); 6455 exports.getPluginOrigin = getPluginOrigin; 6456 var getPluginDuration = pluginMethod('getDuration'); 6457 exports.getPluginDuration = getPluginDuration; 6458 var getPluginDestination = pluginMethod('getDestination'); 6459 exports.getPluginDestination = getPluginDestination; 6460 var createPluginInstance = pluginMethod('createInstance'); 6461 exports.createPluginInstance = createPluginInstance; 6462 var renderPlugin = pluginMethod('render'); 6463 exports.renderPlugin = renderPlugin; 6464 var clearPlugin = pluginMethod('clear'); 6465 exports.clearPlugin = clearPlugin; 6466 6467 /***/ 6468 }), 6469/* 112 */ 6470/***/ (function (module, exports, __webpack_require__) { 6471 6472 var baseForOwn = __webpack_require__(113), 6473 createBaseEach = __webpack_require__(256); 6474 6475 /** 6476 * The base implementation of `_.forEach` without support for iteratee shorthands. 6477 * 6478 * @private 6479 * @param {Array|Object} collection The collection to iterate over. 6480 * @param {Function} iteratee The function invoked per iteration. 6481 * @returns {Array|Object} Returns `collection`. 6482 */ 6483 var baseEach = createBaseEach(baseForOwn); 6484 6485 module.exports = baseEach; 6486 6487 6488 /***/ 6489 }), 6490/* 113 */ 6491/***/ (function (module, exports, __webpack_require__) { 6492 6493 var baseFor = __webpack_require__(254), 6494 keys = __webpack_require__(33); 6495 6496 /** 6497 * The base implementation of `_.forOwn` without support for iteratee shorthands. 6498 * 6499 * @private 6500 * @param {Object} object The object to iterate over. 6501 * @param {Function} iteratee The function invoked per iteration. 6502 * @returns {Object} Returns `object`. 6503 */ 6504 function baseForOwn(object, iteratee) { 6505 return object && baseFor(object, iteratee, keys); 6506 } 6507 6508 module.exports = baseForOwn; 6509 6510 6511 /***/ 6512 }), 6513/* 114 */ 6514/***/ (function (module, exports, __webpack_require__) { 6515 6516 "use strict"; 6517 6518 6519 var _interopRequireDefault = __webpack_require__(260); 6520 6521 exports.__esModule = true; 6522 exports.default = void 0; 6523 6524 var _shallowEqual = _interopRequireDefault(__webpack_require__(261)); 6525 6526 var _default = _shallowEqual.default; 6527 exports.default = _default; 6528 6529 /***/ 6530 }), 6531/* 115 */ 6532/***/ (function (module, exports, __webpack_require__) { 6533 6534 "use strict"; 6535 6536 6537 var _interopRequireDefault2 = __webpack_require__(0); 6538 6539 var _toConsumableArray2 = _interopRequireDefault2(__webpack_require__(110)); 6540 6541 var _interopRequireWildcard = __webpack_require__(14); 6542 6543 var _interopRequireDefault = __webpack_require__(0); 6544 6545 Object.defineProperty(exports, "__esModule", { 6546 value: true 6547 }); 6548 exports.observeRequests = observeRequests; 6549 exports.startEngine = startEngine; 6550 exports.stopEngine = stopEngine; 6551 exports.stopAllActionGroups = stopAllActionGroups; 6552 exports.stopActionGroup = stopActionGroup; 6553 exports.startActionGroup = startActionGroup; 6554 6555 var _extends2 = _interopRequireDefault(__webpack_require__(28)); 6556 6557 var _objectWithoutPropertiesLoose2 = _interopRequireDefault(__webpack_require__(264)); 6558 6559 var _find = _interopRequireDefault(__webpack_require__(86)); 6560 6561 var _get = _interopRequireDefault(__webpack_require__(57)); 6562 6563 var _size = _interopRequireDefault(__webpack_require__(265)); 6564 6565 var _omitBy = _interopRequireDefault(__webpack_require__(271)); 6566 6567 var _isEmpty = _interopRequireDefault(__webpack_require__(283)); 6568 6569 var _mapValues = _interopRequireDefault(__webpack_require__(284)); 6570
6571 var _forEach = _interopRequireDefault(__webpack_require__(285)); 6572 6573 var _throttle = _interopRequireDefault(__webpack_require__(288)); 6574 6575 var _shallowEqual = _interopRequireDefault(__webpack_require__(114)); 6576 6577 var _constants = __webpack_require__(2); 6578 6579 var _shared = __webpack_require__(10); 6580 6581 var _IX2EngineActions = __webpack_require__(62); 6582 6583 var elementApi = _interopRequireWildcard(__webpack_require__(291)); 6584 6585 var _IX2VanillaEvents = _interopRequireDefault(__webpack_require__(292)); 6586 /* eslint-env browser */ 6587 6588 6589 var QuickEffectsIdList = Object.keys(_constants.QuickEffectIds); 6590 6591 var isQuickEffect = function isQuickEffect(actionTypeId) { 6592 return QuickEffectsIdList.includes(actionTypeId); 6593 }; 6594 6595 var _constants$IX2EngineC = _constants.IX2EngineConstants, 6596 COLON_DELIMITER = _constants$IX2EngineC.COLON_DELIMITER, 6597 BOUNDARY_SELECTOR = _constants$IX2EngineC.BOUNDARY_SELECTOR, 6598 HTML_ELEMENT = _constants$IX2EngineC.HTML_ELEMENT, 6599 RENDER_GENERAL = _constants$IX2EngineC.RENDER_GENERAL, 6600 W_MOD_IX = _constants$IX2EngineC.W_MOD_IX; 6601 var _shared$IX2VanillaUti = _shared.IX2VanillaUtils, 6602 getAffectedElements = _shared$IX2VanillaUti.getAffectedElements, 6603 getElementId = _shared$IX2VanillaUti.getElementId, 6604 getDestinationValues = _shared$IX2VanillaUti.getDestinationValues, 6605 observeStore = _shared$IX2VanillaUti.observeStore, 6606 getInstanceId = _shared$IX2VanillaUti.getInstanceId, 6607 renderHTMLElement = _shared$IX2VanillaUti.renderHTMLElement, 6608 clearAllStyles = _shared$IX2VanillaUti.clearAllStyles, 6609 getMaxDurationItemIndex = _shared$IX2VanillaUti.getMaxDurationItemIndex, 6610 getComputedStyle = _shared$IX2VanillaUti.getComputedStyle, 6611 getInstanceOrigin = _shared$IX2VanillaUti.getInstanceOrigin, 6612 reduceListToGroup = _shared$IX2VanillaUti.reduceListToGroup, 6613 shouldNamespaceEventParameter = _shared$IX2VanillaUti.shouldNamespaceEventParameter, 6614 getNamespacedParameterId = _shared$IX2VanillaUti.getNamespacedParameterId, 6615 shouldAllowMediaQuery = _shared$IX2VanillaUti.shouldAllowMediaQuery, 6616 cleanupHTMLElement = _shared$IX2VanillaUti.cleanupHTMLElement, 6617 stringifyTarget = _shared$IX2VanillaUti.stringifyTarget, 6618 mediaQueriesEqual = _shared$IX2VanillaUti.mediaQueriesEqual; 6619 var _shared$IX2VanillaPlu = _shared.IX2VanillaPlugins, 6620 isPluginType = _shared$IX2VanillaPlu.isPluginType, 6621 createPluginInstance = _shared$IX2VanillaPlu.createPluginInstance, 6622 getPluginDuration = _shared$IX2VanillaPlu.getPluginDuration; 6623 var ua = navigator.userAgent; 6624 var IS_MOBILE_SAFARI = ua.match(/iPad/i) || ua.match(/iPhone/); // Keep throttled events at ~80fps to reduce reflows while maintaining render accuracy 6625 6626 var THROTTLED_EVENT_WAIT = 12; // $FlowFixMe 6627 6628 function observeRequests(store) { 6629 observeStore({ 6630 store: store, 6631 select: function select(_ref) { 6632 var ixRequest = _ref.ixRequest; 6633 return ixRequest.preview; 6634 }, 6635 onChange: handlePreviewRequest 6636 }); 6637 observeStore({ 6638 store: store, 6639 select: function select(_ref2) { 6640 var ixRequest = _ref2.ixRequest; 6641 return ixRequest.playback; 6642 }, 6643 onChange: handlePlaybackRequest 6644 }); 6645 observeStore({ 6646 store: store, 6647 select: function select(_ref3) { 6648 var ixRequest = _ref3.ixRequest; 6649 return ixRequest.stop; 6650 }, 6651 onChange: handleStopRequest 6652 }); 6653 observeStore({ 6654 store: store, 6655 select: function select(_ref4) { 6656 var ixRequest = _ref4.ixRequest; 6657 return ixRequest.clear; 6658 }, 6659 onChange: handleClearRequest 6660 }); 6661 } 6662 6663 function observeMediaQueryChange(store) { 6664 observeStore({ 6665 store: store, 6666 select: function select(_ref5) { 6667 var ixSession = _ref5.ixSession; 6668 return ixSession.mediaQueryKey; 6669 }, 6670 onChange: function onChange() { 6671 stopEngine(store); 6672 clearAllStyles({ 6673 store: store, 6674 elementApi: elementApi 6675 }); 6676 startEngine({ 6677 store: store, 6678 allowEvents: true 6679 }); 6680 dispatchPageUpdateEvent(); 6681 } 6682 }); 6683 } 6684 6685 function observeOneRenderTick(store, onTick) { 6686 var unsubscribe = observeStore({ 6687 store: store, 6688 select: function select(_ref6) { 6689 var ixSession = _ref6.ixSession; 6690 return ixSession.tick; 6691 }, 6692 onChange: function onChange(tick) { 6693 onTick(tick); 6694 unsubscribe(); 6695 } 6696 }); 6697 } 6698 6699 function handlePreviewRequest(_ref7, store) { 6700 var rawData = _ref7.rawData, 6701 defer = _ref7.defer; 6702 6703 var start = function start() { 6704 startEngine({ 6705 store: store, 6706 rawData: rawData, 6707 allowEvents: true 6708 }); 6709 dispatchPageUpdateEvent(); 6710 }; 6711 6712 defer ? setTimeout(start, 0) : start(); 6713 } 6714 6715 function dispatchPageUpdateEvent() { 6716 document.dispatchEvent(new CustomEvent('IX2_PAGE_UPDATE')); 6717 } 6718 6719 function handlePlaybackRequest(playback, store) { 6720 var actionTypeId = playback.actionTypeId, 6721 actionListId = playback.actionListId, 6722 actionItemId = playback.actionItemId, 6723 eventId = playback.eventId, 6724 allowEvents = playback.allowEvents, 6725 immediate = playback.immediate, 6726 testManual = playback.testManual, 6727 _playback$verbose = playback.verbose, 6728 verbose = _playback$verbose === void 0 ? true : _playback$verbose; 6729 var rawData = playback.rawData; 6730 6731 if (actionListId && actionItemId && rawData && immediate) { 6732 var actionList = rawData.actionLists[actionListId]; 6733 6734 if (actionList) { 6735 rawData = reduceListToGroup({ 6736 actionList: actionList, 6737 actionItemId: actionItemId, 6738 rawData: rawData 6739 }); 6740 } 6741 } 6742 6743 startEngine({ 6744 store: store, 6745 rawData: rawData, 6746 allowEvents: allowEvents, 6747 testManual: testManual 6748 }); 6749 6750 if (actionListId && actionTypeId === _constants.ActionTypeConsts.GENERAL_START_ACTION || isQuickEffect(actionTypeId)) { 6751 stopActionGroup({ 6752 store: store, 6753 actionListId: actionListId 6754 }); 6755 renderInitialGroup({ 6756 store: store, 6757 actionListId: actionListId, 6758 eventId: eventId 6759 }); 6760 var started = startActionGroup({ 6761 store: store, 6762 eventId: eventId, 6763 actionListId: actionListId, 6764 immediate: immediate,
6765 verbose: verbose 6766 }); 6767 6768 if (verbose && started) { 6769 store.dispatch((0, _IX2EngineActions.actionListPlaybackChanged)({ 6770 actionListId: actionListId, 6771 isPlaying: !immediate 6772 })); 6773 } 6774 } 6775 } 6776 6777 function handleStopRequest(_ref8, store) { 6778 var actionListId = _ref8.actionListId; 6779 6780 if (actionListId) { 6781 stopActionGroup({ 6782 store: store, 6783 actionListId: actionListId 6784 }); 6785 } else { 6786 stopAllActionGroups({ 6787 store: store 6788 }); 6789 } 6790 6791 stopEngine(store); 6792 } 6793 6794 function handleClearRequest(state, store) { 6795 stopEngine(store); 6796 clearAllStyles({ 6797 store: store, 6798 elementApi: elementApi 6799 }); 6800 } // $FlowFixMe 6801 6802 6803 function startEngine(_ref9) { 6804 var store = _ref9.store, 6805 rawData = _ref9.rawData, 6806 allowEvents = _ref9.allowEvents, 6807 testManual = _ref9.testManual; 6808 6809 var _store$getState = store.getState(), 6810 ixSession = _store$getState.ixSession; 6811 6812 if (rawData) { 6813 store.dispatch((0, _IX2EngineActions.rawDataImported)(rawData)); 6814 } 6815 6816 if (!ixSession.active) { 6817 store.dispatch((0, _IX2EngineActions.sessionInitialized)({ 6818 hasBoundaryNodes: Boolean(document.querySelector(BOUNDARY_SELECTOR)) 6819 })); 6820 6821 if (allowEvents) { 6822 bindEvents(store); 6823 addDocumentClass(); 6824 6825 if (store.getState().ixSession.hasDefinedMediaQueries) { 6826 observeMediaQueryChange(store); 6827 } 6828 } 6829 6830 store.dispatch((0, _IX2EngineActions.sessionStarted)()); 6831 startRenderLoop(store, testManual); 6832 } 6833 } 6834 6835 function addDocumentClass() { 6836 var _document = document, 6837 documentElement = _document.documentElement; // $FlowFixMe 6838 6839 if (documentElement.className.indexOf(W_MOD_IX) === -1) { 6840 // $FlowFixMe 6841 documentElement.className += " ".concat(W_MOD_IX); 6842 } 6843 } 6844 6845 function startRenderLoop(store, testManual) { 6846 var handleFrame = function handleFrame(now) { 6847 var _store$getState2 = store.getState(), 6848 ixSession = _store$getState2.ixSession, 6849 ixParameters = _store$getState2.ixParameters; 6850 6851 if (ixSession.active) { 6852 store.dispatch((0, _IX2EngineActions.animationFrameChanged)(now, ixParameters)); 6853 6854 if (testManual) { 6855 observeOneRenderTick(store, handleFrame); 6856 } else { 6857 requestAnimationFrame(handleFrame); 6858 } 6859 } 6860 }; 6861 6862 handleFrame(window.performance.now()); 6863 } // $FlowFixMe 6864 6865 6866 function stopEngine(store) { 6867 var _store$getState3 = store.getState(), 6868 ixSession = _store$getState3.ixSession; 6869 6870 if (ixSession.active) { 6871 var eventListeners = ixSession.eventListeners; 6872 eventListeners.forEach(clearEventListener); 6873 store.dispatch((0, _IX2EngineActions.sessionStopped)()); 6874 } 6875 } 6876 6877 function clearEventListener(_ref10) { 6878 var target = _ref10.target, 6879 listenerParams = _ref10.listenerParams; 6880 target.removeEventListener.apply(target, listenerParams); 6881 } 6882 6883 function createGroupInstances(_ref11) { 6884 var store = _ref11.store, 6885 eventStateKey = _ref11.eventStateKey, 6886 eventTarget = _ref11.eventTarget, 6887 eventId = _ref11.eventId, 6888 eventConfig = _ref11.eventConfig, 6889 actionListId = _ref11.actionListId, 6890 parameterGroup = _ref11.parameterGroup, 6891 smoothing = _ref11.smoothing, 6892 restingValue = _ref11.restingValue; 6893 6894 var _store$getState4 = store.getState(), 6895 ixData = _store$getState4.ixData, 6896 ixSession = _store$getState4.ixSession; 6897 6898 var events = ixData.events; 6899 var event = events[eventId]; 6900 var eventTypeId = event.eventTypeId; 6901 var targetCache = {}; 6902 var instanceActionGroups = {}; 6903 var instanceConfigs = []; 6904 var continuousActionGroups = parameterGroup.continuousActionGroups; 6905 var parameterId = parameterGroup.id; 6906 6907 if (shouldNamespaceEventParameter(eventTypeId, eventConfig)) { 6908 parameterId = getNamespacedParameterId(eventStateKey, parameterId); 6909 } // Limit affected elements when event target is within a boundary node 6910 6911 6912 var eventElementRoot = ixSession.hasBoundaryNodes && eventTarget ? elementApi.getClosestElement(eventTarget, BOUNDARY_SELECTOR) : null; 6913 continuousActionGroups.forEach(function (actionGroup) { 6914 var keyframe = actionGroup.keyframe, 6915 actionItems = actionGroup.actionItems;
6916 actionItems.forEach(function (actionItem) { 6917 var actionTypeId = actionItem.actionTypeId; 6918 var target = actionItem.config.target; 6919 6920 if (!target) { 6921 return; 6922 } 6923 6924 var elementRoot = target.boundaryMode ? eventElementRoot : null; 6925 var key = stringifyTarget(target) + COLON_DELIMITER + actionTypeId; 6926 instanceActionGroups[key] = appendActionItem(instanceActionGroups[key], keyframe, actionItem); 6927 6928 if (!targetCache[key]) { 6929 targetCache[key] = true; 6930 var config = actionItem.config; 6931 getAffectedElements({ 6932 config: config, 6933 event: event, 6934 eventTarget: eventTarget, 6935 elementRoot: elementRoot, 6936 elementApi: elementApi 6937 }).forEach(function (element) { 6938 instanceConfigs.push({ 6939 element: element, 6940 key: key 6941 }); 6942 }); 6943 } 6944 }); 6945 }); 6946 instanceConfigs.forEach(function (_ref12) { 6947 var element = _ref12.element, 6948 key = _ref12.key; 6949 var actionGroups = instanceActionGroups[key]; 6950 var actionItem = (0, _get["default"])(actionGroups, "[0].actionItems[0]", {}); 6951 var actionTypeId = actionItem.actionTypeId; 6952 var pluginInstance = isPluginType(actionTypeId) ? // $FlowFixMe 6953 createPluginInstance(actionTypeId)(element, actionItem) : null; 6954 var destination = getDestinationValues({ 6955 element: element, 6956 actionItem: actionItem, 6957 elementApi: elementApi 6958 }, // $FlowFixMe 6959 pluginInstance); 6960 createInstance({ 6961 store: store, 6962 element: element, 6963 eventId: eventId, 6964 actionListId: actionListId, 6965 actionItem: actionItem, 6966 destination: destination, 6967 continuous: true, 6968 parameterId: parameterId, 6969 actionGroups: actionGroups, 6970 smoothing: smoothing, 6971 restingValue: restingValue, 6972 pluginInstance: pluginInstance 6973 }); 6974 }); 6975 } 6976 6977 function appendActionItem() { 6978 var actionGroups = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; 6979 var keyframe = arguments.length > 1 ? arguments[1] : undefined; 6980 var actionItem = arguments.length > 2 ? arguments[2] : undefined; 6981 var newActionGroups = (0, _toConsumableArray2["default"])(actionGroups); 6982 var groupIndex; 6983 newActionGroups.some(function (group, index) { 6984 if (group.keyframe === keyframe) { 6985 groupIndex = index; 6986 return true; 6987 } 6988 6989 return false; 6990 }); 6991 6992 if (groupIndex == null) { 6993 groupIndex = newActionGroups.length; 6994 newActionGroups.push({ 6995 keyframe: keyframe, 6996 actionItems: [] 6997 }); 6998 } 6999 7000 newActionGroups[groupIndex].actionItems.push(actionItem); 7001 return newActionGroups; 7002 } 7003 7004 function bindEvents(store) { 7005 var _store$getState5 = store.getState(), 7006 ixData = _store$getState5.ixData; 7007 7008 var eventTypeMap = ixData.eventTypeMap; 7009 updateViewportWidth(store); 7010 (0, _forEach["default"])(eventTypeMap, function (events, key) { 7011 var logic = _IX2VanillaEvents["default"][key]; 7012 7013 if (!logic) { 7014 console.warn("IX2 event type not configured: ".concat(key)); 7015 return; 7016 } 7017 7018 bindEventType({ 7019 logic: logic, 7020 store: store, 7021 events: events 7022 }); 7023 }); 7024 7025 var _store$getState6 = store.getState(), 7026 ixSession = _store$getState6.ixSession; 7027 7028 if (ixSession.eventListeners.length) { 7029 bindResizeEvents(store); 7030 } 7031 } 7032 7033 var WINDOW_RESIZE_EVENTS = ['resize', 'orientationchange']; 7034 7035 function bindResizeEvents(store) { 7036 var handleResize = function handleResize() { 7037 updateViewportWidth(store); 7038 }; 7039 7040 WINDOW_RESIZE_EVENTS.forEach(function (type) { 7041 window.addEventListener(type, handleResize); 7042 store.dispatch((0, _IX2EngineActions.eventListenerAdded)(window, [type, handleResize])); 7043 }); 7044 handleResize(); 7045 } 7046 7047 function updateViewportWidth(store) { 7048 var _store$getState7 = store.getState(), 7049 ixSession = _store$getState7.ixSession, 7050 ixData = _store$getState7.ixData; 7051 7052 var width = window.innerWidth; 7053 7054 if (width !== ixSession.viewportWidth) { 7055 var mediaQueries = ixData.mediaQueries; 7056 store.dispatch((0, _IX2EngineActions.viewportWidthChanged)({ 7057 width: width, 7058 mediaQueries: mediaQueries 7059 })); 7060 } 7061 } 7062 7063 var mapFoundValues = function mapFoundValues(object, iteratee) { 7064 return (0, _omitBy["default"])((0, _mapValues["default"])(object, iteratee), _isEmpty["default"]); 7065 }; 7066
7067 var forEachEventTarget = function forEachEventTarget(eventTargets, eventCallback) { 7068 (0, _forEach["default"])(eventTargets, function (elements, eventId) { 7069 elements.forEach(function (element, index) { 7070 var eventStateKey = eventId + COLON_DELIMITER + index; 7071 eventCallback(element, eventId, eventStateKey); 7072 }); 7073 }); 7074 }; 7075 7076 var getAffectedForEvent = function getAffectedForEvent(event) { 7077 var config = { 7078 target: event.target, 7079 targets: event.targets 7080 }; 7081 return getAffectedElements({ 7082 config: config, 7083 elementApi: elementApi 7084 }); 7085 }; 7086 7087 function bindEventType(_ref13) { 7088 var logic = _ref13.logic, 7089 store = _ref13.store, 7090 events = _ref13.events; 7091 injectBehaviorCSSFixes(events); 7092 var eventTypes = logic.types, 7093 eventHandler = logic.handler; 7094 7095 var _store$getState8 = store.getState(), 7096 ixData = _store$getState8.ixData; 7097 7098 var actionLists = ixData.actionLists; 7099 var eventTargets = mapFoundValues(events, getAffectedForEvent); 7100 7101 if (!(0, _size["default"])(eventTargets)) { 7102 return; 7103 } 7104 7105 (0, _forEach["default"])(eventTargets, function (elements, key) { 7106 var event = events[key]; 7107 var eventAction = event.action, 7108 eventId = event.id, 7109 _event$mediaQueries = event.mediaQueries, 7110 mediaQueries = _event$mediaQueries === void 0 ? ixData.mediaQueryKeys : _event$mediaQueries; 7111 var actionListId = eventAction.config.actionListId; 7112 7113 if (!mediaQueriesEqual(mediaQueries, ixData.mediaQueryKeys)) { 7114 store.dispatch((0, _IX2EngineActions.mediaQueriesDefined)()); 7115 } 7116 7117 if (eventAction.actionTypeId === _constants.ActionTypeConsts.GENERAL_CONTINUOUS_ACTION) { 7118 var configs = Array.isArray(event.config) ? event.config : [event.config]; 7119 configs.forEach(function (eventConfig) { 7120 var continuousParameterGroupId = eventConfig.continuousParameterGroupId; 7121 var paramGroups = (0, _get["default"])(actionLists, "".concat(actionListId, ".continuousParameterGroups"), []); 7122 var parameterGroup = (0, _find["default"])(paramGroups, function (_ref14) { 7123 var id = _ref14.id; 7124 return id === continuousParameterGroupId; 7125 }); 7126 var smoothing = (eventConfig.smoothing || 0) / 100; 7127 var restingValue = (eventConfig.restingState || 0) / 100; 7128 7129 if (!parameterGroup) { 7130 return; 7131 } 7132 7133 elements.forEach(function (eventTarget, index) { 7134 var eventStateKey = eventId + COLON_DELIMITER + index; 7135 createGroupInstances({ 7136 store: store, 7137 eventStateKey: eventStateKey, 7138 eventTarget: eventTarget, 7139 eventId: eventId, 7140 eventConfig: eventConfig, 7141 actionListId: actionListId, 7142 parameterGroup: parameterGroup, 7143 smoothing: smoothing, 7144 restingValue: restingValue 7145 }); 7146 }); 7147 }); 7148 } 7149 7150 if (eventAction.actionTypeId === _constants.ActionTypeConsts.GENERAL_START_ACTION || isQuickEffect(eventAction.actionTypeId)) { 7151 renderInitialGroup({ 7152 store: store, 7153 actionListId: actionListId, 7154 eventId: eventId 7155 }); 7156 } 7157 }); 7158 7159 var handleEvent = function handleEvent(nativeEvent) { 7160 var _store$getState9 = store.getState(), 7161 ixSession = _store$getState9.ixSession; 7162 7163 forEachEventTarget(eventTargets, function (element, eventId, eventStateKey) { 7164 var event = events[eventId]; 7165 var oldState = ixSession.eventState[eventStateKey]; 7166 var eventAction = event.action, 7167 _event$mediaQueries2 = event.mediaQueries, 7168 mediaQueries = _event$mediaQueries2 === void 0 ? ixData.mediaQueryKeys : _event$mediaQueries2; // Bypass event handler if current media query is not listed in event config 7169 7170 if (!shouldAllowMediaQuery(mediaQueries, ixSession.mediaQueryKey)) { 7171 return; 7172 } 7173 7174 var handleEventWithConfig = function handleEventWithConfig() { 7175 var eventConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; 7176 var newState = eventHandler({ 7177 store: store, 7178 element: element, 7179 event: event, 7180 eventConfig: eventConfig, 7181 nativeEvent: nativeEvent, 7182 eventStateKey: eventStateKey 7183 }, oldState); 7184 7185 if (!(0, _shallowEqual["default"])(newState, oldState)) { 7186 store.dispatch((0, _IX2EngineActions.eventStateChanged)(eventStateKey, newState)); 7187 } 7188 }; 7189 7190 if (eventAction.actionTypeId === _constants.ActionTypeConsts.GENERAL_CONTINUOUS_ACTION) { 7191 var configs = Array.isArray(event.config) ? event.config : [event.config];
7192 configs.forEach(handleEventWithConfig); 7193 } else { 7194 handleEventWithConfig(); 7195 } 7196 }); 7197 }; 7198 7199 var handleEventThrottled = (0, _throttle["default"])(handleEvent, THROTTLED_EVENT_WAIT); 7200 7201 var addListeners = function addListeners(_ref15) { 7202 var _ref15$target = _ref15.target, 7203 target = _ref15$target === void 0 ? document : _ref15$target, 7204 types = _ref15.types, 7205 shouldThrottle = _ref15.throttle; 7206 types.split(' ').filter(Boolean).forEach(function (type) { 7207 var handlerFunc = shouldThrottle ? handleEventThrottled : handleEvent; // $FlowFixMe 7208 7209 target.addEventListener(type, handlerFunc); 7210 store.dispatch((0, _IX2EngineActions.eventListenerAdded)(target, [type, handlerFunc])); 7211 }); 7212 }; 7213 7214 if (Array.isArray(eventTypes)) { 7215 eventTypes.forEach(addListeners); 7216 } else if (typeof eventTypes === 'string') { 7217 addListeners(logic); 7218 } 7219 } 7220 /** 7221 * Injects CSS into the document to fix behavior issues across 7222 * different devices. 7223 */ 7224 7225 7226 function injectBehaviorCSSFixes(events) { 7227 if (!IS_MOBILE_SAFARI) { 7228 return; 7229 } 7230 7231 var injectedSelectors = {}; 7232 var cssText = ''; 7233 7234 for (var eventId in events) { 7235 var _events$eventId = events[eventId], 7236 eventTypeId = _events$eventId.eventTypeId, 7237 target = _events$eventId.target; 7238 var selector = elementApi.getQuerySelector(target); // $FlowFixMe 7239 7240 if (injectedSelectors[selector]) { 7241 continue; 7242 } // add a "cursor: pointer" style rule to ensure that CLICK events get fired for IOS devices 7243 7244 7245 if (eventTypeId === _constants.EventTypeConsts.MOUSE_CLICK || eventTypeId === _constants.EventTypeConsts.MOUSE_SECOND_CLICK) { 7246 // $FlowFixMe 7247 injectedSelectors[selector] = true; 7248 cssText += // $FlowFixMe 7249 selector + '{' + 'cursor: pointer;' + 'touch-action: manipulation;' + '}'; 7250 } 7251 } 7252 7253 if (cssText) { 7254 var style = document.createElement('style'); 7255 style.textContent = cssText; // $FlowFixMe 7256 7257 document.body.appendChild(style); 7258 } 7259 } 7260 7261 function renderInitialGroup(_ref16) { 7262 var store = _ref16.store, 7263 actionListId = _ref16.actionListId, 7264 eventId = _ref16.eventId; 7265 7266 var _store$getState10 = store.getState(), 7267 ixData = _store$getState10.ixData, 7268 ixSession = _store$getState10.ixSession; 7269 7270 var actionLists = ixData.actionLists, 7271 events = ixData.events; 7272 var event = events[eventId]; 7273 var actionList = actionLists[actionListId]; 7274 7275 if (actionList && actionList.useFirstGroupAsInitialState) { 7276 var initialStateItems = (0, _get["default"])(actionList, 'actionItemGroups[0].actionItems', []); // Bypass initial state render if current media query is not listed in event config 7277 7278 var mediaQueries = (0, _get["default"])(event, 'mediaQueries', ixData.mediaQueryKeys); 7279 7280 if (!shouldAllowMediaQuery(mediaQueries, ixSession.mediaQueryKey)) { 7281 return; 7282 } 7283 7284 initialStateItems.forEach(function (actionItem) { 7285 var _itemConfig$target; 7286 7287 var itemConfig = actionItem.config, 7288 actionTypeId = actionItem.actionTypeId; 7289 var config = // When useEventTarget is explicitly true, use event target/targets to query elements 7290 (itemConfig === null || itemConfig === void 0 ? void 0 : (_itemConfig$target = itemConfig.target) === null || _itemConfig$target === void 0 ? void 0 : _itemConfig$target.useEventTarget) === true ? { 7291 target: event.target, 7292 targets: event.targets 7293 } : itemConfig; 7294 var itemElements = getAffectedElements({ 7295 config: config, 7296 event: event, 7297 elementApi: elementApi 7298 }); 7299 var shouldUsePlugin = isPluginType(actionTypeId); 7300 itemElements.forEach(function (element) { 7301 var pluginInstance = shouldUsePlugin ? // $FlowFixMe 7302 createPluginInstance(actionTypeId)(element, actionItem) : null; 7303 createInstance({ 7304 destination: getDestinationValues({ 7305 element: element, 7306 actionItem: actionItem, 7307 elementApi: elementApi 7308 }, // $FlowFixMe 7309 pluginInstance), 7310 immediate: true, 7311 store: store, 7312 element: element, 7313 eventId: eventId, 7314 actionItem: actionItem, 7315 actionListId: actionListId, 7316 pluginInstance: pluginInstance 7317 }); 7318 }); 7319 }); 7320 } 7321 } // $FlowFixMe 7322 7323 7324 function stopAllActionGroups(_ref17) { 7325 var store = _ref17.store; 7326 7327 var _store$getState11 = store.getState(), 7328 ixInstances = _store$getState11.ixInstances; 7329
7330 (0, _forEach["default"])(ixInstances, function (instance) { 7331 if (!instance.continuous) { 7332 var actionListId = instance.actionListId, 7333 verbose = instance.verbose; 7334 removeInstance(instance, store); 7335 7336 if (verbose) { 7337 store.dispatch((0, _IX2EngineActions.actionListPlaybackChanged)({ 7338 actionListId: actionListId, 7339 isPlaying: false 7340 })); 7341 } 7342 } 7343 }); 7344 } // $FlowFixMe 7345 7346 7347 function stopActionGroup(_ref18) { 7348 var store = _ref18.store, 7349 eventId = _ref18.eventId, 7350 eventTarget = _ref18.eventTarget, 7351 eventStateKey = _ref18.eventStateKey, 7352 actionListId = _ref18.actionListId; 7353 7354 var _store$getState12 = store.getState(), 7355 ixInstances = _store$getState12.ixInstances, 7356 ixSession = _store$getState12.ixSession; // Check for element boundary before stopping engine instances 7357 7358 7359 var eventElementRoot = ixSession.hasBoundaryNodes && eventTarget ? elementApi.getClosestElement(eventTarget, BOUNDARY_SELECTOR) : null; 7360 (0, _forEach["default"])(ixInstances, function (instance) { 7361 var boundaryMode = (0, _get["default"])(instance, 'actionItem.config.target.boundaryMode'); // Validate event key if eventStateKey was provided, otherwise default to true 7362 7363 var validEventKey = eventStateKey ? instance.eventStateKey === eventStateKey : true; // Remove engine instances that match the required ids 7364 7365 if (instance.actionListId === actionListId && instance.eventId === eventId && validEventKey) { 7366 // Avoid removal when root boundary does not contain instance element 7367 if (eventElementRoot && boundaryMode && !elementApi.elementContains(eventElementRoot, instance.element)) { 7368 return; 7369 } 7370 7371 removeInstance(instance, store); 7372 7373 if (instance.verbose) { 7374 store.dispatch((0, _IX2EngineActions.actionListPlaybackChanged)({ 7375 actionListId: actionListId, 7376 isPlaying: false 7377 })); 7378 } 7379 } 7380 }); 7381 } // $FlowFixMe 7382 7383 7384 function startActionGroup(_ref19) { 7385 var store = _ref19.store, 7386 eventId = _ref19.eventId, 7387 eventTarget = _ref19.eventTarget, 7388 eventStateKey = _ref19.eventStateKey, 7389 actionListId = _ref19.actionListId, 7390 _ref19$groupIndex = _ref19.groupIndex, 7391 groupIndex = _ref19$groupIndex === void 0 ? 0 : _ref19$groupIndex, 7392 immediate = _ref19.immediate, 7393 verbose = _ref19.verbose; 7394 7395 var _event$action; 7396 7397 var _store$getState13 = store.getState(), 7398 ixData = _store$getState13.ixData, 7399 ixSession = _store$getState13.ixSession; 7400 7401 var events = ixData.events; 7402 var event = events[eventId] || {}; 7403 var _event$mediaQueries3 = event.mediaQueries, 7404 mediaQueries = _event$mediaQueries3 === void 0 ? ixData.mediaQueryKeys : _event$mediaQueries3; 7405 var actionList = (0, _get["default"])(ixData, "actionLists.".concat(actionListId), {}); 7406 var actionItemGroups = actionList.actionItemGroups, 7407 useFirstGroupAsInitialState = actionList.useFirstGroupAsInitialState; // Abort playback if no action groups 7408 7409 if (!actionItemGroups || !actionItemGroups.length) { 7410 return false; 7411 } // Reset to first group when event loop is configured 7412 7413 7414 if (groupIndex >= actionItemGroups.length && (0, _get["default"])(event, 'config.loop')) { 7415 groupIndex = 0; 7416 } // Skip initial state group during action list playback, as it should already be applied 7417 7418 7419 if (groupIndex === 0 && useFirstGroupAsInitialState) { 7420 groupIndex++; 7421 } // Identify first animated group and apply the initial QuickEffect delay 7422 7423 7424 var isFirstGroup = groupIndex === 0 || groupIndex === 1 && useFirstGroupAsInitialState; 7425 var instanceDelay = isFirstGroup && isQuickEffect((_event$action = event.action) === null || _event$action === void 0 ? void 0 : _event$action.actionTypeId) ? event.config.delay : undefined; // Abort playback if no action items exist at group index 7426 7427 var actionItems = (0, _get["default"])(actionItemGroups, [groupIndex, 'actionItems'], []); 7428 7429 if (!actionItems.length) { 7430 return false;
7431 } // Abort playback if current media query is not listed in event config 7432 7433 7434 if (!shouldAllowMediaQuery(mediaQueries, ixSession.mediaQueryKey)) { 7435 return false; 7436 } // Limit affected elements when event target is within a boundary node 7437 7438 7439 var eventElementRoot = ixSession.hasBoundaryNodes && eventTarget ? elementApi.getClosestElement(eventTarget, BOUNDARY_SELECTOR) : null; 7440 var carrierIndex = getMaxDurationItemIndex(actionItems); 7441 var groupStartResult = false; 7442 actionItems.forEach(function (actionItem, actionIndex) { 7443 var config = actionItem.config, 7444 actionTypeId = actionItem.actionTypeId; 7445 var shouldUsePlugin = isPluginType(actionTypeId); 7446 var target = config.target; 7447 7448 if (!target) { 7449 return; 7450 } 7451 7452 var elementRoot = target.boundaryMode ? eventElementRoot : null; 7453 var elements = getAffectedElements({ 7454 config: config, 7455 event: event, 7456 eventTarget: eventTarget, 7457 elementRoot: elementRoot, 7458 elementApi: elementApi 7459 }); 7460 elements.forEach(function (element, elementIndex) { 7461 var pluginInstance = shouldUsePlugin ? // $FlowFixMe 7462 createPluginInstance(actionTypeId)(element, actionItem) : null; 7463 var pluginDuration = shouldUsePlugin ? // $FlowFixMe 7464 getPluginDuration(actionTypeId)(element, actionItem) : null; 7465 groupStartResult = true; 7466 var isCarrier = carrierIndex === actionIndex && elementIndex === 0; 7467 var computedStyle = getComputedStyle({ 7468 element: element, 7469 actionItem: actionItem 7470 }); 7471 var destination = getDestinationValues({ 7472 element: element, 7473 actionItem: actionItem, 7474 elementApi: elementApi 7475 }, // $FlowFixMe 7476 pluginInstance); 7477 createInstance({ 7478 store: store, 7479 element: element, 7480 actionItem: actionItem, 7481 eventId: eventId, 7482 eventTarget: eventTarget, 7483 eventStateKey: eventStateKey, 7484 actionListId: actionListId, 7485 groupIndex: groupIndex, 7486 isCarrier: isCarrier, 7487 computedStyle: computedStyle, 7488 destination: destination, 7489 immediate: immediate, 7490 verbose: verbose, 7491 pluginInstance: pluginInstance, 7492 pluginDuration: pluginDuration, 7493 instanceDelay: instanceDelay 7494 }); 7495 }); 7496 }); 7497 return groupStartResult; 7498 } 7499 7500 function createInstance(options) { 7501 // $FlowFixMe 7502 var store = options.store, 7503 computedStyle = options.computedStyle, 7504 rest = (0, _objectWithoutPropertiesLoose2["default"])(options, ["store", "computedStyle"]); // $FlowFixMe 7505 7506 var autoStart = !rest.continuous; // $FlowFixMe 7507 7508 var element = rest.element, 7509 actionItem = rest.actionItem, 7510 immediate = rest.immediate, 7511 pluginInstance = rest.pluginInstance; 7512 var instanceId = getInstanceId(); 7513 7514 var _store$getState14 = store.getState(), 7515 ixElements = _store$getState14.ixElements, 7516 ixSession = _store$getState14.ixSession; 7517 7518 var elementId = getElementId(ixElements, element); 7519 7520 var _ref20 = ixElements[elementId] || {}, 7521 refState = _ref20.refState; 7522 7523 var refType = elementApi.getRefType(element); 7524 var origin = getInstanceOrigin(element, refState, computedStyle, actionItem, elementApi, // $FlowFixMe 7525 pluginInstance); 7526 store.dispatch((0, _IX2EngineActions.instanceAdded)((0, _extends2["default"])({ 7527 instanceId: instanceId, 7528 elementId: elementId, 7529 origin: origin, 7530 refType: refType 7531 }, rest))); 7532 dispatchCustomEvent(document.body, 'ix2-animation-started', instanceId); 7533 7534 if (immediate) { 7535 renderImmediateInstance(store, instanceId); 7536 return; 7537 } 7538 7539 observeStore({ 7540 store: store, 7541 select: function select(_ref21) { 7542 var ixInstances = _ref21.ixInstances; 7543 return ixInstances[instanceId]; 7544 }, 7545 onChange: handleInstanceChange 7546 }); 7547 7548 if (autoStart) { 7549 store.dispatch((0, _IX2EngineActions.instanceStarted)(instanceId, ixSession.tick)); 7550 } 7551 } 7552 7553 function removeInstance(instance, store) { 7554 dispatchCustomEvent(document.body, 'ix2-animation-stopping', { 7555 instanceId: instance.id, 7556 state: store.getState() 7557 }); 7558 var elementId = instance.elementId, 7559 actionItem = instance.actionItem; 7560 7561 var _store$getState15 = store.getState(), 7562 ixElements = _store$getState15.ixElements; 7563 7564 var _ref22 = ixElements[elementId] || {}, 7565 ref = _ref22.ref, 7566 refType = _ref22.refType; 7567 7568 if (refType === HTML_ELEMENT) { 7569 cleanupHTMLElement(ref, actionItem, elementApi); 7570 } 7571 7572 store.dispatch((0, _IX2EngineActions.instanceRemoved)(instance.id)); 7573 } 7574 7575 function dispatchCustomEvent(element, eventName, detail) { 7576 var event = document.createEvent('CustomEvent'); 7577 event.initCustomEvent(eventName, true, true, detail); // $FlowFixMe 7578 7579 element.dispatchEvent(event); 7580 } 7581 7582 function renderImmediateInstance(store, instanceId) { 7583 var _store$getState16 = store.getState(), 7584 ixParameters = _store$getState16.ixParameters; 7585 7586 store.dispatch((0, _IX2EngineActions.instanceStarted)(instanceId, 0)); 7587 store.dispatch((0, _IX2EngineActions.animationFrameChanged)(performance.now(), ixParameters)); 7588 7589 var _store$getState17 = store.getState(), 7590 ixInstances = _store$getState17.ixInstances; 7591 7592 handleInstanceChange(ixInstances[instanceId], store); 7593 } 7594 7595 function handleInstanceChange(instance, store) { 7596 var active = instance.active, 7597 continuous = instance.continuous, 7598 complete = instance.complete, 7599 elementId = instance.elementId, 7600 actionItem = instance.actionItem, 7601 actionTypeId = instance.actionTypeId, 7602 renderType = instance.renderType, 7603 current = instance.current, 7604 groupIndex = instance.groupIndex, 7605 eventId = instance.eventId, 7606 eventTarget = instance.eventTarget, 7607 eventStateKey = instance.eventStateKey, 7608 actionListId = instance.actionListId, 7609 isCarrier = instance.isCarrier, 7610 styleProp = instance.styleProp, 7611 verbose = instance.verbose, 7612 pluginInstance = instance.pluginInstance; // Bypass render if current media query is not listed in event config 7613 7614 var _store$getState18 = store.getState(), 7615 ixData = _store$getState18.ixData, 7616 ixSession = _store$getState18.ixSession; 7617 7618 var events = ixData.events; 7619 var event = events[eventId] || {}; 7620 var _event$mediaQueries4 = event.mediaQueries, 7621 mediaQueries = _event$mediaQueries4 === void 0 ? ixData.mediaQueryKeys : _event$mediaQueries4; 7622 7623 if (!shouldAllowMediaQuery(mediaQueries, ixSession.mediaQueryKey)) { 7624 return; 7625 } 7626 7627 if (continuous || active || complete) { 7628 if (current || renderType === RENDER_GENERAL && complete) { 7629 // Render current values to ref state and grab latest 7630 store.dispatch((0, _IX2EngineActions.elementStateChanged)(elementId, actionTypeId, current, actionItem)); 7631 7632 var _store$getState19 = store.getState(), 7633 ixElements = _store$getState19.ixElements; 7634 7635 var _ref23 = ixElements[elementId] || {}, 7636 ref = _ref23.ref, 7637 refType = _ref23.refType, 7638 refState = _ref23.refState; 7639 7640 var actionState = refState && refState[actionTypeId]; // Choose render based on ref type 7641 7642 switch (refType) { 7643 case HTML_ELEMENT: 7644 { 7645 renderHTMLElement(ref, refState, actionState, eventId, actionItem, styleProp, elementApi, renderType, pluginInstance); 7646 break; 7647 } 7648 } 7649 } 7650 7651 if (complete) { 7652 if (isCarrier) { 7653 var started = startActionGroup({ 7654 store: store, 7655 eventId: eventId, 7656 eventTarget: eventTarget, 7657 eventStateKey: eventStateKey, 7658 actionListId: actionListId, 7659 groupIndex: groupIndex + 1,
7660 verbose: verbose 7661 }); 7662 7663 if (verbose && !started) { 7664 store.dispatch((0, _IX2EngineActions.actionListPlaybackChanged)({ 7665 actionListId: actionListId, 7666 isPlaying: false 7667 })); 7668 } 7669 } 7670 7671 removeInstance(instance, store); 7672 } 7673 } 7674 } 7675 7676 /***/ 7677 }), 7678/* 116 */ 7679/***/ (function (module, exports, __webpack_require__) { 7680 7681 var defineProperty = __webpack_require__(117); 7682 7683 /** 7684 * The base implementation of `assignValue` and `assignMergeValue` without 7685 * value checks. 7686 * 7687 * @private 7688 * @param {Object} object The object to modify. 7689 * @param {string} key The key of the property to assign. 7690 * @param {*} value The value to assign. 7691 */ 7692 function baseAssignValue(object, key, value) { 7693 if (key == '__proto__' && defineProperty) { 7694 defineProperty(object, key, { 7695 'configurable': true, 7696 'enumerable': true, 7697 'value': value, 7698 'writable': true 7699 }); 7700 } else { 7701 object[key] = value; 7702 } 7703 } 7704 7705 module.exports = baseAssignValue; 7706 7707 7708 /***/ 7709 }), 7710/* 117 */ 7711/***/ (function (module, exports, __webpack_require__) { 7712 7713 var getNative = __webpack_require__(8); 7714 7715 var defineProperty = (function () { 7716 try { 7717 var func = getNative(Object, 'defineProperty'); 7718 func({}, '', {}); 7719 return func; 7720 } catch (e) { } 7721 }()); 7722 7723 module.exports = defineProperty; 7724 7725 7726 /***/ 7727 }), 7728/* 118 */ 7729/***/ (function (module, exports, __webpack_require__) { 7730 7731 var isObject = __webpack_require__(6); 7732 7733 /** Built-in value references. */ 7734 var objectCreate = Object.create; 7735 7736 /** 7737 * The base implementation of `_.create` without support for assigning 7738 * properties to the created object. 7739 * 7740 * @private 7741 * @param {Object} proto The object to inherit from. 7742 * @returns {Object} Returns the new object. 7743 */ 7744 var baseCreate = (function () { 7745 function object() { } 7746 return function (proto) { 7747 if (!isObject(proto)) { 7748 return {}; 7749 } 7750 if (objectCreate) { 7751 return objectCreate(proto); 7752 } 7753 object.prototype = proto; 7754 var result = new object; 7755 object.prototype = undefined; 7756 return result; 7757 }; 7758 }()); 7759 7760 module.exports = baseCreate; 7761 7762 7763 /***/ 7764 }), 7765/* 119 */ 7766/***/ (function (module, exports, __webpack_require__) { 7767 7768 var metaMap = __webpack_require__(305), 7769 noop = __webpack_require__(306); 7770 7771 /** 7772 * Gets metadata for `func`. 7773 * 7774 * @private 7775 * @param {Function} func The function to query. 7776 * @returns {*} Returns the metadata for `func`. 7777 */ 7778 var getData = !metaMap ? noop : function (func) { 7779 return metaMap.get(func); 7780 }; 7781 7782 module.exports = getData; 7783 7784 7785 /***/ 7786 }), 7787/* 120 */ 7788/***/ (function (module, exports, __webpack_require__) { 7789 7790 var realNames = __webpack_require__(307); 7791 7792 /** Used for built-in method references. */ 7793 var objectProto = Object.prototype; 7794 7795 /** Used to check objects for own properties. */ 7796 var hasOwnProperty = objectProto.hasOwnProperty; 7797 7798 /** 7799 * Gets the name of `func`. 7800 * 7801 * @private 7802 * @param {Function} func The function to query. 7803 * @returns {string} Returns the function name. 7804 */ 7805 function getFuncName(func) { 7806 var result = (func.name + ''), 7807 array = realNames[result], 7808 length = hasOwnProperty.call(realNames, result) ? array.length : 0; 7809 7810 while (length--) { 7811 var data = array[length], 7812 otherFunc = data.func; 7813 if (otherFunc == null || otherFunc == func) { 7814 return data.name; 7815 } 7816 } 7817 return result; 7818 } 7819 7820 module.exports = getFuncName; 7821 7822 7823 /***/ 7824 }), 7825/* 121 */ 7826/***/ (function (module, exports, __webpack_require__) { 7827 7828 __webpack_require__(122); 7829 __webpack_require__(123); 7830 __webpack_require__(37); 7831 __webpack_require__(125); 7832 __webpack_require__(22); 7833 __webpack_require__(126); 7834 __webpack_require__(314); 7835 __webpack_require__(315); 7836 __webpack_require__(316); 7837 __webpack_require__(317); 7838 __webpack_require__(318); 7839 __webpack_require__(323); 7840 __webpack_require__(324); 7841 module.exports = __webpack_require__(325); 7842 7843 7844 /***/ 7845 }), 7846/* 122 */ 7847/***/ (function (module, exports, __webpack_require__) { 7848 7849 "use strict"; 7850 // @wf-will-never-add-flow-to-this-file 7851 7852 /* 7853 global 7854 window, document, Event 7855 */ 7856 7857 /*---------------------------------------- 7858 * objectFitPolyfill 2.3.0 7859 * 7860 * Basic, no-frills version - 7861 * Defaults to object-fit: cover and object-position: 50% 50% 7862 * 7863 * Made by Constance Chen 7864 * Released under the MIT license 7865 * 7866 * https://github.com/constancecchen/object-fit-polyfill 7867 *--------------------------------------*/ 7868 7869 var _interopRequireDefault = __webpack_require__(0); 7870 7871 var _typeof2 = _interopRequireDefault(__webpack_require__(13)); 7872 7873 (function () { 7874 // if the page is being rendered on the server, don't continue 7875 if (typeof window === 'undefined') return; // Workaround for Edge 16+, which only implemented object-fit for <img> tags 7876 // TODO: Keep an eye on Edge to determine which version has full final support 7877 7878 var edgeVersion = window.navigator.userAgent.match(/Edge\/(\d{2})\./);
7879 var edgePartialSupport = edgeVersion ? parseInt(edgeVersion[1], 10) >= 16 : false; // If the browser does support object-fit, we don't need to continue 7880 7881 var hasSupport = 'objectFit' in document.documentElement.style !== false; 7882 7883 if (hasSupport && !edgePartialSupport) { 7884 window.objectFitPolyfill = function () { 7885 return false; 7886 }; 7887 7888 return; 7889 } 7890 /** 7891 * Check the container's parent element to make sure it will 7892 * correctly handle and clip absolutely positioned children 7893 * 7894 * @param {node} $container - parent element 7895 */ 7896 7897 7898 var checkParentContainer = function checkParentContainer($container) { 7899 var styles = window.getComputedStyle($container, null); 7900 var position = styles.getPropertyValue('position'); 7901 var overflow = styles.getPropertyValue('overflow'); 7902 var display = styles.getPropertyValue('display'); 7903 7904 if (!position || position === 'static') { 7905 $container.style.position = 'relative'; 7906 } 7907 7908 if (overflow !== 'hidden') { 7909 $container.style.overflow = 'hidden'; 7910 } // Guesstimating that people want the parent to act like full width/height wrapper here. 7911 // Mostly attempts to target <picture> elements, which default to inline. 7912 7913 7914 if (!display || display === 'inline') { 7915 $container.style.display = 'block'; 7916 } 7917 7918 if ($container.clientHeight === 0) { 7919 $container.style.height = '100%'; 7920 } // Add a CSS class hook, in case people need to override styles for any reason. 7921 7922 7923 if ($container.className.indexOf('object-fit-polyfill') === -1) { 7924 $container.className += ' object-fit-polyfill'; 7925 } 7926 }; 7927 /** 7928 * Check for pre-set max-width/height, min-width/height, 7929 * positioning, or margins, which can mess up image calculations 7930 * 7931 * @param {node} $media - img/video element 7932 */ 7933 7934 7935 var checkMediaProperties = function checkMediaProperties($media) { 7936 var styles = window.getComputedStyle($media, null); 7937 var constraints = { 7938 'max-width': 'none', 7939 'max-height': 'none', 7940 'min-width': '0px', 7941 'min-height': '0px', 7942 top: 'auto', 7943 right: 'auto', 7944 bottom: 'auto', 7945 left: 'auto', 7946 'margin-top': '0px', 7947 'margin-right': '0px', 7948 'margin-bottom': '0px', 7949 'margin-left': '0px' 7950 }; 7951 7952 for (var property in constraints) { 7953 var constraint = styles.getPropertyValue(property); 7954 7955 if (constraint !== constraints[property]) { 7956 $media.style[property] = constraints[property]; 7957 } 7958 } 7959 }; 7960 /** 7961 * Calculate & set object-fit 7962 * 7963 * @param {node} $media - img/video/picture element 7964 */ 7965 7966 7967 var objectFit = function objectFit($media) { 7968 // If necessary, make the parent container work with absolutely positioned elements 7969 var $container = $media.parentNode; 7970 checkParentContainer($container); // Check for any pre-set CSS which could mess up image calculations 7971 7972 checkMediaProperties($media); // Mathematically figure out which side needs covering, and add CSS positioning & centering 7973 7974 $media.style.position = 'absolute'; 7975 $media.style.height = '100%'; 7976 $media.style.width = 'auto'; 7977 7978 if ($media.clientWidth > $container.clientWidth) { 7979 $media.style.top = '0'; 7980 $media.style.marginTop = '0'; 7981 $media.style.left = '50%'; 7982 $media.style.marginLeft = $media.clientWidth / -2 + 'px'; 7983 } else { 7984 $media.style.width = '100%'; 7985 $media.style.height = 'auto'; 7986 $media.style.left = '0'; 7987 $media.style.marginLeft = '0'; 7988 $media.style.top = '50%'; 7989 $media.style.marginTop = $media.clientHeight / -2 + 'px'; 7990 } 7991 }; 7992 /** 7993 * Initialize plugin 7994 * 7995 * @param {node} media - Optional specific DOM node(s) to be polyfilled 7996 */ 7997 7998 7999 var objectFitPolyfill = function objectFitPolyfill(media) { 8000 if (typeof media === 'undefined' || media instanceof Event) { 8001 // If left blank, or a default event, all media on the page will be polyfilled. 8002 media = document.querySelectorAll('[data-object-fit]'); 8003 } else if (media && media.nodeName) { 8004 // If it's a single node, wrap it in an array so it works. 8005 media = [media]; 8006 } else if ((0, _typeof2["default"])(media) === 'object' && media.length && media[0].nodeName) { 8007 // If it's an array of DOM nodes (e.g. a jQuery selector), it's fine as-is. 8008 // eslint-disable-next-line no-self-assign 8009 media = media; 8010 } else { 8011 // Otherwise, if it's invalid or an incorrect type, return false to let people know. 8012 return false;
8013 } 8014 8015 for (var i = 0; i < media.length; i++) { 8016 if (!media[i].nodeName) continue; 8017 var mediaType = media[i].nodeName.toLowerCase(); 8018 8019 if (mediaType === 'img') { 8020 if (edgePartialSupport) continue; // Edge supports object-fit for images (but nothing else), so no need to polyfill 8021 8022 if (media[i].complete) { 8023 objectFit(media[i]); 8024 } else { 8025 media[i].addEventListener('load', function () { 8026 objectFit(this); 8027 }); 8028 } 8029 } else if (mediaType === 'video') { 8030 if (media[i].readyState > 0) { 8031 objectFit(media[i]); 8032 } else { 8033 media[i].addEventListener('loadedmetadata', function () { 8034 objectFit(this); 8035 }); 8036 } 8037 } else { 8038 objectFit(media[i]); 8039 } 8040 } 8041 8042 return true; 8043 }; 8044 8045 if (document.readyState === 'loading') { 8046 // Loading hasn't finished yet 8047 document.addEventListener('DOMContentLoaded', objectFitPolyfill); 8048 } else { 8049 // `DOMContentLoaded` has already fired 8050 objectFitPolyfill(); 8051 } 8052 8053 window.addEventListener('resize', objectFitPolyfill); 8054 window.objectFitPolyfill = objectFitPolyfill; 8055 })(); 8056 8057 /***/ 8058 }), 8059/* 123 */ 8060/***/ (function (module, exports, __webpack_require__) { 8061 8062 "use strict"; 8063 // @wf-will-never-add-flow-to-this-file 8064 8065 /* globals document, window, navigator */ 8066 8067 /* eslint-disable no-var */ 8068 8069 /** 8070 * Webflow: Brand pages on the subdomain 8071 */ 8072 8073 var Webflow = __webpack_require__(3); 8074 8075 Webflow.define('brand', module.exports = function ($) { 8076 var api = {}; 8077 var doc = document; 8078 var $html = $('html'); 8079 var $body = $('body'); 8080 var namespace = '.w-webflow-badge'; 8081 var location = window.location; 8082 var isPhantom = /PhantomJS/i.test(navigator.userAgent); 8083 var fullScreenEvents = 'fullscreenchange webkitfullscreenchange mozfullscreenchange msfullscreenchange'; 8084 var brandElement; // ----------------------------------- 8085 // Module methods 8086 8087 api.ready = function () { 8088 var shouldBrand = $html.attr('data-wf-status'); 8089 var publishedDomain = $html.attr('data-wf-domain') || ''; 8090 8091 if (/\.webflow\.io$/i.test(publishedDomain) && location.hostname !== publishedDomain) { 8092 shouldBrand = true; 8093 } 8094 8095 if (shouldBrand && !isPhantom) { 8096 brandElement = brandElement || createBadge(); 8097 ensureBrand(); 8098 setTimeout(ensureBrand, 500); 8099 $(doc).off(fullScreenEvents, onFullScreenChange).on(fullScreenEvents, onFullScreenChange); 8100 } 8101 }; 8102 8103 function onFullScreenChange() { 8104 var fullScreen = doc.fullScreen || doc.mozFullScreen || doc.webkitIsFullScreen || doc.msFullscreenElement || Boolean(doc.webkitFullscreenElement); 8105 $(brandElement).attr('style', fullScreen ? 'display: none !important;' : ''); 8106 } 8107 8108 function createBadge() { 8109 var $brand = $('<a class="w-webflow-badge"></a>').attr('href', 'https://webflow.com?utm_campaign=brandjs'); 8110 var $logoArt = $('<img>').attr('src', 'https://d3e54v103j8qbb.cloudfront.net/img/webflow-badge-icon.f67cd735e3.svg').attr('alt', '').css({ 8111 marginRight: '8px', 8112 width: '16px' 8113 }); 8114 var $logoText = $('<img>').attr('src', 'https://d1otoma47x30pg.cloudfront.net/img/webflow-badge-text.6faa6a38cd.svg').attr('alt', 'Made in Webflow'); 8115 $brand.append($logoArt, $logoText); 8116 return $brand[0]; 8117 } 8118 8119 function ensureBrand() { 8120 var found = $body.children(namespace); 8121 var match = found.length && found.get(0) === brandElement; 8122 var inEditor = Webflow.env('editor'); 8123 8124 if (match) { 8125 // Remove brand when Editor is active 8126 if (inEditor) { 8127 found.remove(); 8128 } // Exit early, brand is in place 8129 8130 8131 return; 8132 } // Remove any invalid brand elements 8133 8134 8135 if (found.length) { 8136 found.remove(); 8137 } // Append the brand (unless Editor is active) 8138 8139 8140 if (!inEditor) { 8141 $body.append(brandElement); 8142 } 8143 } // Export module 8144 8145 8146 return api; 8147 }); 8148 8149 /***/ 8150 }), 8151/* 124 */ 8152/***/ (function (module, exports, __webpack_require__) { 8153 8154 "use strict"; 8155 // @wf-will-never-add-flow-to-this-file 8156 // Include tram for frame-throttling 8157 8158 /* globals window */ 8159 8160 /* eslint-disable no-var */ 8161 8162 var $ = window.$; 8163 var tram = __webpack_require__(66) && $.tram; 8164 /*! 8165 * Webflow._ (aka) Underscore.js 1.6.0 (custom build) 8166 * _.each 8167 * _.map 8168 * _.find 8169 * _.filter 8170 * _.any 8171 * _.contains 8172 * _.delay 8173 * _.defer 8174 * _.throttle (webflow) 8175 * _.debounce 8176 * _.keys 8177 * _.has 8178 * _.now 8179 * 8180 * http://underscorejs.org
8181 * (c) 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors 8182 * Underscore may be freely distributed under the MIT license. 8183 * @license MIT 8184 */ 8185 8186 module.exports = function () { 8187 var _ = {}; // Current version. 8188 8189 _.VERSION = '1.6.0-Webflow'; // Establish the object that gets returned to break out of a loop iteration. 8190 8191 var breaker = {}; // Save bytes in the minified (but not gzipped) version: 8192 8193 /* eslint-disable one-var */ 8194 8195 var ArrayProto = Array.prototype, 8196 ObjProto = Object.prototype, 8197 FuncProto = Function.prototype; 8198 /* eslint-enable one-var */ 8199 // Create quick reference variables for speed access to core prototypes. 8200 8201 /* eslint-disable one-var, no-unused-vars */ 8202 8203 var push = ArrayProto.push, 8204 slice = ArrayProto.slice, 8205 concat = ArrayProto.concat, 8206 toString = ObjProto.toString, 8207 hasOwnProperty = ObjProto.hasOwnProperty; 8208 /* eslint-enable one-var, no-unused-vars */ 8209 // All **ECMAScript 5** native function implementations that we hope to use 8210 // are declared here. 8211 8212 /* eslint-disable one-var, no-unused-vars */ 8213 8214 var nativeForEach = ArrayProto.forEach, 8215 nativeMap = ArrayProto.map, 8216 nativeReduce = ArrayProto.reduce, 8217 nativeReduceRight = ArrayProto.reduceRight, 8218 nativeFilter = ArrayProto.filter, 8219 nativeEvery = ArrayProto.every, 8220 nativeSome = ArrayProto.some, 8221 nativeIndexOf = ArrayProto.indexOf, 8222 nativeLastIndexOf = ArrayProto.lastIndexOf, 8223 nativeIsArray = Array.isArray, 8224 nativeKeys = Object.keys, 8225 nativeBind = FuncProto.bind; 8226 /* eslint-enable one-var, no-unused-vars */ 8227 // Collection Functions 8228 // -------------------- 8229 // The cornerstone, an `each` implementation, aka `forEach`. 8230 // Handles objects with the built-in `forEach`, arrays, and raw objects. 8231 // Delegates to **ECMAScript 5**'s native `forEach` if available. 8232 8233 var each = _.each = _.forEach = function (obj, iterator, context) { 8234 /* jshint shadow:true */ 8235 if (obj == null) return obj; 8236 8237 if (nativeForEach && obj.forEach === nativeForEach) { 8238 obj.forEach(iterator, context); // eslint-disable-next-line no-implicit-coercion 8239 } else if (obj.length === +obj.length) { 8240 for (var i = 0, length = obj.length; i < length; i++) { 8241 if (iterator.call(context, obj[i], i, obj) === breaker) return; 8242 } 8243 } else { 8244 var keys = _.keys(obj); // eslint-disable-next-line no-redeclare 8245 8246 8247 for (var i = 0, length = keys.length; i < length; i++) { 8248 if (iterator.call(context, obj[keys[i]], keys[i], obj) === breaker) return; 8249 } 8250 } 8251 8252 return obj; 8253 }; // Return the results of applying the iterator to each element. 8254 // Delegates to **ECMAScript 5**'s native `map` if available. 8255 8256 8257 _.map = _.collect = function (obj, iterator, context) { 8258 var results = []; 8259 if (obj == null) return results; 8260 if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context); 8261 each(obj, function (value, index, list) { 8262 results.push(iterator.call(context, value, index, list)); 8263 }); 8264 return results; 8265 }; // Return the first value which passes a truth test. Aliased as `detect`. 8266 8267 8268 _.find = _.detect = function (obj, predicate, context) { 8269 var result; 8270 any(obj, function (value, index, list) { 8271 if (predicate.call(context, value, index, list)) { 8272 result = value; 8273 return true; 8274 } 8275 }); 8276 return result; 8277 }; // Return all the elements that pass a truth test. 8278 // Delegates to **ECMAScript 5**'s native `filter` if available. 8279 // Aliased as `select`. 8280 8281 8282 _.filter = _.select = function (obj, predicate, context) { 8283 var results = []; 8284 if (obj == null) return results; 8285 if (nativeFilter && obj.filter === nativeFilter) return obj.filter(predicate, context); 8286 each(obj, function (value, index, list) { 8287 if (predicate.call(context, value, index, list)) results.push(value); 8288 }); 8289 return results; 8290 }; // Determine if at least one element in the object matches a truth test. 8291 // Delegates to **ECMAScript 5**'s native `some` if available. 8292 // Aliased as `any`. 8293 8294 8295 var any = _.some = _.any = function (obj, predicate, context) { 8296 predicate || (predicate = _.identity); 8297 var result = false;
8298 if (obj == null) return result; 8299 if (nativeSome && obj.some === nativeSome) return obj.some(predicate, context); 8300 each(obj, function (value, index, list) { 8301 if (result || (result = predicate.call(context, value, index, list))) return breaker; 8302 }); 8303 return !!result; // eslint-disable-line no-implicit-coercion 8304 }; // Determine if the array or object contains a given value (using `===`). 8305 // Aliased as `include`. 8306 8307 8308 _.contains = _.include = function (obj, target) { 8309 if (obj == null) return false; 8310 if (nativeIndexOf && obj.indexOf === nativeIndexOf) // eslint-disable-next-line eqeqeq 8311 return obj.indexOf(target) != -1; 8312 return any(obj, function (value) { 8313 return value === target; 8314 }); 8315 }; // Function (ahem) Functions 8316 // -------------------- 8317 // Delays a function for the given number of milliseconds, and then calls 8318 // it with the arguments supplied. 8319 8320 8321 _.delay = function (func, wait) { 8322 var args = slice.call(arguments, 2); 8323 return setTimeout(function () { 8324 return func.apply(null, args); 8325 }, wait); 8326 }; // Defers a function, scheduling it to run after the current call stack has 8327 // cleared. 8328 8329 8330 _.defer = function (func) { 8331 return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1))); 8332 }; // Returns a function, that, when invoked, will only be triggered once every 8333 // browser animation frame - using tram's requestAnimationFrame polyfill. 8334 8335 8336 _.throttle = function (func) { 8337 // eslint-disable-next-line one-var 8338 var wait, args, context; 8339 return function () { 8340 if (wait) return; 8341 wait = true; 8342 args = arguments; 8343 context = this; 8344 tram.frame(function () { 8345 wait = false; 8346 func.apply(context, args); 8347 }); 8348 }; 8349 }; // Returns a function, that, as long as it continues to be invoked, will not 8350 // be triggered. The function will be called after it stops being called for 8351 // N milliseconds. If `immediate` is passed, trigger the function on the 8352 // leading edge, instead of the trailing. 8353 8354 8355 _.debounce = function (func, wait, immediate) { 8356 // eslint-disable-next-line one-var 8357 var timeout, args, context, timestamp, result; 8358 8359 var later = function later() { 8360 var last = _.now() - timestamp; 8361 8362 if (last < wait) { 8363 timeout = setTimeout(later, wait - last); 8364 } else { 8365 timeout = null; 8366 8367 if (!immediate) { 8368 result = func.apply(context, args); 8369 context = args = null; 8370 } 8371 } 8372 }; 8373 8374 return function () { 8375 context = this; 8376 args = arguments; 8377 timestamp = _.now(); 8378 var callNow = immediate && !timeout; 8379 8380 if (!timeout) { 8381 timeout = setTimeout(later, wait); 8382 } 8383 8384 if (callNow) { 8385 result = func.apply(context, args); 8386 context = args = null; 8387 } 8388 8389 return result; 8390 }; 8391 }; // Object Functions 8392 // ---------------- 8393 // Fill in a given object with default properties. 8394 8395 8396 _.defaults = function (obj) { 8397 if (!_.isObject(obj)) return obj; 8398 8399 for (var i = 1, length = arguments.length; i < length; i++) { 8400 var source = arguments[i]; 8401 8402 for (var prop in source) { 8403 // eslint-disable-next-line no-void 8404 if (obj[prop] === void 0) obj[prop] = source[prop]; 8405 } 8406 } 8407 8408 return obj; 8409 }; // Retrieve the names of an object's properties. 8410 // Delegates to **ECMAScript 5**'s native `Object.keys` 8411 8412 8413 _.keys = function (obj) { 8414 if (!_.isObject(obj)) return []; 8415 if (nativeKeys) return nativeKeys(obj); 8416 var keys = []; 8417 8418 for (var key in obj) { 8419 if (_.has(obj, key)) keys.push(key); 8420 } 8421 8422 return keys; 8423 }; // Shortcut function for checking if an object has a given property directly 8424 // on itself (in other words, not on a prototype). 8425 8426 8427 _.has = function (obj, key) { 8428 return hasOwnProperty.call(obj, key); 8429 }; // Is a given variable an object? 8430 8431 8432 _.isObject = function (obj) { 8433 return obj === Object(obj); 8434 }; // Utility Functions 8435 // ----------------- 8436 // A (possibly faster) way to get the current timestamp as an integer. 8437 8438 8439 _.now = Date.now || function () { 8440 return new Date().getTime(); 8441 }; // By default, Underscore uses ERB-style template delimiters, change the 8442 // following template settings to use alternative delimiters. 8443 8444 8445 _.templateSettings = { 8446 evaluate: /<%([\s\S]+?)%>/g, 8447 interpolate: /<%=([\s\S]+?)%>/g, 8448 escape: /<%-([\s\S]+?)%>/g 8449 }; // When customizing `templateSettings`, if you don't want to define an 8450 // interpolation, evaluation or escaping regex, we need one that is 8451 // guaranteed not to match. 8452 8453 var noMatch = /(.)^/; // Certain characters need to be escaped so that they can be put into a 8454 // string literal. 8455 8456 var escapes = { 8457 "'": "'", 8458 '\\': '\\', 8459 '\r': 'r', 8460 '\n': 'n', 8461 "\u2028": 'u2028', 8462 "\u2029": 'u2029' 8463 }; 8464 var escaper = /\\|'|\r|\n|\u2028|\u2029/g; 8465 8466 var escapeChar = function escapeChar(match) { 8467 return '\\' + escapes[match]; 8468 }; // JavaScript micro-templating, similar to John Resig's implementation. 8469 // Underscore templating handles arbitrary delimiters, preserves whitespace, 8470 // and correctly escapes quotes within interpolated code. 8471 // NB: `oldSettings` only exists for backwards compatibility. 8472 8473 8474 _.template = function (text, settings, oldSettings) { 8475 if (!settings && oldSettings) settings = oldSettings; 8476 settings = _.defaults({}, settings, _.templateSettings); // Combine delimiters into one regular expression via alternation. 8477 8478 var matcher = RegExp([(settings.escape || noMatch).source, (settings.interpolate || noMatch).source, (settings.evaluate || noMatch).source].join('|') + '|$', 'g'); // Compile the template source, escaping string literals appropriately. 8479 8480 var index = 0; 8481 var source = "__p+='"; 8482 text.replace(matcher, function (match, escape, interpolate, evaluate, offset) { 8483 source += text.slice(index, offset).replace(escaper, escapeChar); 8484 index = offset + match.length; 8485 8486 if (escape) { 8487 source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'"; 8488 } else if (interpolate) { 8489 source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'";
8490 } else if (evaluate) { 8491 source += "';\n" + evaluate + "\n__p+='"; 8492 } // Adobe VMs need the match returned to produce the correct offest. 8493 8494 8495 return match; 8496 }); 8497 source += "';\n"; // If a variable is not specified, place data values in local scope. 8498 8499 if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n'; 8500 source = "var __t,__p='',__j=Array.prototype.join," + "print=function(){__p+=__j.call(arguments,'');};\n" + source + 'return __p;\n'; 8501 8502 try { 8503 // eslint-disable-next-line no-new-func 8504 var render = new Function(settings.variable || 'obj', '_', source); 8505 } catch (e) { 8506 e.source = source; 8507 throw e; 8508 } 8509 8510 var template = function template(data) { 8511 return render.call(this, data, _); 8512 }; // Provide the compiled source as a convenience for precompilation. 8513 8514 8515 var argument = settings.variable || 'obj'; 8516 template.source = 'function(' + argument + '){\n' + source + '}'; 8517 return template; 8518 }; // Export underscore 8519 8520 8521 return _; 8522 }(); 8523 /* eslint-enable */ 8524 8525 /***/ 8526 }), 8527/* 125 */ 8528/***/ (function (module, exports, __webpack_require__) { 8529 8530 "use strict"; 8531 // @wf-will-never-add-flow-to-this-file 8532 8533 /* globals window */ 8534 8535 /* eslint-disable no-var */ 8536 8537 /** 8538 * Webflow: Interactions 8539 */ 8540 8541 var Webflow = __webpack_require__(3); 8542 8543 var IXEvents = __webpack_require__(37); 8544 8545 Webflow.define('ix', module.exports = function ($, _) { 8546 var api = {}; 8547 var designer; 8548 var $win = $(window); 8549 var namespace = '.w-ix'; 8550 var tram = $.tram; 8551 var env = Webflow.env; 8552 var inApp = env(); 8553 var emptyFix = env.chrome && env.chrome < 35; 8554 var transNone = 'none 0s ease 0s'; 8555 var $subs = $(); 8556 var config = {}; 8557 var anchors = []; 8558 var loads = []; 8559 var readys = []; 8560 var destroyed; 8561 var readyDelay = 1; // Component types and proxy selectors 8562 8563 var components = { 8564 tabs: '.w-tab-link, .w-tab-pane', 8565 dropdown: '.w-dropdown', 8566 slider: '.w-slide', 8567 navbar: '.w-nav' 8568 }; // ----------------------------------- 8569 // Module methods 8570 8571 api.init = function (list) { 8572 setTimeout(function () { 8573 configure(list); 8574 }, 1); 8575 }; 8576 8577 api.preview = function () { 8578 designer = false;
8579 readyDelay = 100; 8580 setTimeout(function () { 8581 configure(window.__wf_ix); 8582 }, 1); 8583 }; 8584 8585 api.design = function () { 8586 designer = true; 8587 api.destroy(); 8588 }; 8589 8590 api.destroy = function () { 8591 destroyed = true; 8592 $subs.each(teardown); 8593 Webflow.scroll.off(scroll); 8594 IXEvents.async(); 8595 anchors = []; 8596 loads = []; 8597 readys = []; 8598 }; 8599 8600 api.ready = function () { 8601 // Redirect IX init while in design/preview modes 8602 if (inApp) { 8603 return env('design') ? api.design() : api.preview(); 8604 } // Ready should only be used after destroy, as a way to re-init 8605 8606 8607 if (config && destroyed) { 8608 destroyed = false; 8609 init(); 8610 } 8611 }; 8612 8613 api.run = run; 8614 api.style = inApp ? styleApp : stylePub; // ----------------------------------- 8615 // Private methods 8616 8617 function configure(list) { 8618 if (!list) { 8619 return; 8620 } // Map all interactions by slug 8621 8622 8623 config = {}; 8624 8625 _.each(list, function (item) { 8626 config[item.slug] = item.value; 8627 }); // Init ix after config 8628 8629 8630 init(); 8631 } 8632 8633 function init() { 8634 initIX1Engine(); // Need init IXEvents regardless if IX1 events exist since 8635 // IXEvents _also_ dispatch IX2 events. 8636 // Trigger queued events, must happen after init 8637 8638 IXEvents.init(); // Trigger a redraw to ensure all IX intros play 8639 8640 Webflow.redraw.up(); 8641 } 8642 8643 function initIX1Engine() { 8644 // Build each element's interaction keying from data attribute 8645 var els = $('[data-ix]'); 8646 8647 if (!els.length) { 8648 return; 8649 } 8650 8651 els.each(teardown); 8652 els.each(build); // Listen for scroll events if any anchors exist 8653 8654 if (anchors.length) { 8655 Webflow.scroll.on(scroll); 8656 setTimeout(scroll, 1); 8657 } // Handle loads or readys if they exist 8658 8659 8660 if (loads.length) { 8661 Webflow.load(runLoads); 8662 } 8663 8664 if (readys.length) { 8665 setTimeout(runReadys, readyDelay); 8666 } 8667 } 8668 8669 function build(i, el) { 8670 var $el = $(el); 8671 var id = $el.attr('data-ix'); 8672 var ix = config[id]; 8673 8674 if (!ix) { 8675 return; 8676 } 8677 8678 var triggers = ix.triggers; 8679 8680 if (!triggers) { 8681 return; 8682 } // Set styles immediately to provide tram with starting transform values 8683 8684 8685 api.style($el, ix.style); 8686 8687 _.each(triggers, function (trigger) { 8688 var state = {}; 8689 var type = trigger.type; 8690 var stepsB = trigger.stepsB && trigger.stepsB.length; 8691 8692 function runA() { 8693 run(trigger, $el, { 8694 group: 'A' 8695 }); 8696 } 8697 8698 function runB() { 8699 run(trigger, $el, { 8700 group: 'B' 8701 }); 8702 } 8703 8704 if (type === 'load') { 8705 trigger.preload && !inApp ? loads.push(runA) : readys.push(runA); 8706 return; 8707 } 8708 8709 if (type === 'click') { 8710 $el.on('click' + namespace, function (evt) { 8711 // Avoid late clicks on touch devices 8712 if (!Webflow.validClick(evt.currentTarget)) { 8713 return; 8714 } // Prevent default on empty hash urls 8715 8716 8717 if ($el.attr('href') === '#') { 8718 evt.preventDefault(); 8719 } 8720 8721 run(trigger, $el, { 8722 group: state.clicked ? 'B' : 'A' 8723 }); 8724 8725 if (stepsB) { 8726 state.clicked = !state.clicked; 8727 } 8728 }); 8729 $subs = $subs.add($el); 8730 return; 8731 } 8732 8733 if (type === 'hover') { 8734 $el.on('mouseenter' + namespace, runA); 8735 $el.on('mouseleave' + namespace, runB); 8736 $subs = $subs.add($el); 8737 return; 8738 } 8739 8740 if (type === 'scroll') { 8741 anchors.push({ 8742 el: $el, 8743 trigger: trigger, 8744 state: { 8745 active: false 8746 }, 8747 offsetTop: convert(trigger.offsetTop), 8748 offsetBot: convert(trigger.offsetBot) 8749 }); 8750 return; 8751 } // Check for a proxy component selector 8752 // type == [tabs, dropdown, slider, navbar] 8753 8754 8755 var proxy = components[type]; 8756 8757 if (proxy) { 8758 var $proxy = $el.closest(proxy); 8759 $proxy.on(IXEvents.types.INTRO, runA).on(IXEvents.types.OUTRO, runB); 8760 $subs = $subs.add($proxy); 8761 return; 8762 } 8763 }); 8764 } 8765 8766 function convert(offset) { 8767 if (!offset) { 8768 return 0; 8769 } 8770 8771 offset = String(offset); 8772 var result = parseInt(offset, 10); // eslint-disable-next-line no-self-compare 8773 8774 if (result !== result) { 8775 return 0; 8776 } 8777 8778 if (offset.indexOf('%') > 0) { 8779 result /= 100; 8780 8781 if (result >= 1) { 8782 result = 0.999; 8783 } 8784 } 8785 8786 return result; 8787 } 8788 8789 function teardown(i, el) { 8790 $(el).off(namespace); 8791 } 8792 8793 function scroll() { 8794 var viewTop = $win.scrollTop(); 8795 var viewHeight = $win.height(); // Check each anchor for a valid scroll trigger 8796 8797 var count = anchors.length; 8798 8799 for (var i = 0; i < count; i++) { 8800 var anchor = anchors[i]; 8801 var $el = anchor.el; 8802 var trigger = anchor.trigger; 8803 var stepsB = trigger.stepsB && trigger.stepsB.length; 8804 var state = anchor.state; 8805 var top = $el.offset().top; 8806 var height = $el.outerHeight(); 8807 var offsetTop = anchor.offsetTop; 8808 var offsetBot = anchor.offsetBot; 8809 8810 if (offsetTop < 1 && offsetTop > 0) { 8811 offsetTop *= viewHeight; 8812 } 8813 8814 if (offsetBot < 1 && offsetBot > 0) { 8815 offsetBot *= viewHeight; 8816 } 8817 8818 var active = top + height - offsetTop >= viewTop && top + offsetBot <= viewTop + viewHeight; 8819 8820 if (active === state.active) { 8821 continue; 8822 } 8823 8824 if (active === false && !stepsB) { 8825 continue; 8826 } 8827 8828 state.active = active; 8829 run(trigger, $el, { 8830 group: active ? 'A' : 'B' 8831 }); 8832 } 8833 } 8834 8835 function runLoads() { 8836 var count = loads.length; 8837 8838 for (var i = 0; i < count; i++) { 8839 loads[i](); 8840 } 8841 } 8842 8843 function runReadys() { 8844 var count = readys.length; 8845 8846 for (var i = 0; i < count; i++) { 8847 readys[i](); 8848 } 8849 } 8850 8851 function run(trigger, $el, opts, replay) { 8852 opts = opts || {}; 8853 var done = opts.done; 8854 var preserve3d = trigger.preserve3d;
8854 // Do not run in designer unless forced 8855 8856 if (designer && !opts.force) { 8857 return; 8858 } // Operate on a set of grouped steps 8859 8860 8861 var group = opts.group || 'A'; 8862 var loop = trigger['loop' + group]; 8863 var steps = trigger['steps' + group]; 8864 8865 if (!steps || !steps.length) { 8866 return; 8867 } 8868 8869 if (steps.length < 2) { 8870 loop = false; 8871 } // One-time init before any loops 8872 8873 8874 if (!replay) { 8875 // Find selector within element descendants, siblings, or query whole document 8876 var selector = trigger.selector; 8877 8878 if (selector) { 8879 if (trigger.descend) { 8880 $el = $el.find(selector); 8881 } else if (trigger.siblings) { 8882 $el = $el.siblings(selector); 8883 } else { 8884 $el = $(selector); 8885 } 8886 8887 if (inApp) { 8888 $el.attr('data-ix-affect', 1); 8889 } 8890 } // Apply empty fix for certain Chrome versions 8891 8892 8893 if (emptyFix) { 8894 $el.addClass('w-ix-emptyfix'); 8895 } // Set preserve3d for triggers with 3d transforms 8896 8897 8898 if (preserve3d) { 8899 $el.css('transform-style', 'preserve-3d'); 8900 } 8901 } 8902 8903 var _tram = tram($el); // Add steps 8904 8905 8906 var meta = { 8907 omit3d: !preserve3d 8908 }; 8909 8910 for (var i = 0; i < steps.length; i++) { 8911 addStep(_tram, steps[i], meta); 8912 } 8913 8914 function fin() { 8915 // Run trigger again if looped 8916 if (loop) { 8917 return run(trigger, $el, opts, true); 8918 } // Reset any 'auto' values 8919 8920 8921 if (meta.width === 'auto') { 8922 _tram.set({ 8923 width: 'auto' 8924 }); 8925 } 8926 8927 if (meta.height === 'auto') { 8928 _tram.set({ 8929 height: 'auto' 8930 }); 8931 } // Run callback 8932 8933 8934 done && done(); 8935 } // Add final step to queue if tram has started 8936 8937 8938 meta.start ? _tram.then(fin) : fin(); 8939 } 8940 8941 function addStep(_tram, step, meta) { 8942 var addMethod = 'add'; 8943 var startMethod = 'start'; // Once the transition has started, we will always use then() to add to the queue. 8944 8945 if (meta.start) { 8946 addMethod = startMethod = 'then'; 8947 } // Parse transitions string on the current step 8948 8949 8950 var transitions = step.transition; 8951 8952 if (transitions) { 8953 transitions = transitions.split(','); 8954 8955 for (var i = 0; i < transitions.length; i++) { 8956 var transition = transitions[i]; 8957 8958 _tram[addMethod](transition); 8959 } 8960 } // Build a clean object to pass to the tram method 8961 8962 8963 var clean = tramify(step, meta) || {}; // Store last width and height values 8964 8965 if (clean.width != null) { 8966 meta.width = clean.width; 8967 } 8968 8969 if (clean.height != null) { 8970 meta.height = clean.height; 8971 } // When transitions are not present, set values immediately and continue queue. 8972 8973 8974 if (transitions == null) { 8975 // If we have started, wrap set() in then() and reset queue 8976 if (meta.start) { 8977 _tram.then(function () { 8978 var queue = this.queue; 8979 this.set(clean); 8980 8981 if (clean.display) { 8982 _tram.redraw(); 8983 8984 Webflow.redraw.up(); 8985 } 8986 8987 this.queue = queue; 8988 this.next(); 8989 }); 8990 } else { 8991 _tram.set(clean); // Always redraw after setting display 8992 8993 8994 if (clean.display) { 8995 _tram.redraw(); 8996 8997 Webflow.redraw.up(); 8998 } 8999 } // Use the wait() method to kick off queue in absence of transitions. 9000 9001 9002 var wait = clean.wait; 9003 9004 if (wait != null) { 9005 _tram.wait(wait); 9006 9007 meta.start = true; 9008 } // Otherwise, when transitions are present 9009 9010 } else { 9011 // If display is present, handle it separately 9012 if (clean.display) { 9013 var display = clean.display; // eslint-disable-next-line webflow/no-delete 9014 9015 delete clean.display; // If we've already started, we need to wrap it in a then() 9016 9017 if (meta.start) { 9018 _tram.then(function () { 9019 var queue = this.queue; 9020 this.set({ 9021 display: display 9022 }).redraw(); 9023 Webflow.redraw.up(); 9024 this.queue = queue; 9025 this.next(); 9026 }); 9027 } else { 9028 _tram.set({ 9029 display: display 9030 }).redraw(); 9031 9032 Webflow.redraw.up(); 9033 } 9034 } // Otherwise, start a transition using the current start method. 9035 9036 9037 _tram[startMethod](clean); 9038 9039 meta.start = true; 9040 } 9041 } // (In app) Set styles immediately and manage upstream transition 9042 9043
9044 function styleApp(el, data) { 9045 var _tram = tram(el); // Exit early when data is empty to avoid clearing upstream 9046 9047 9048 if ($.isEmptyObject(data)) { 9049 return; 9050 } // Get computed transition value 9051 9052 9053 el.css('transition', ''); 9054 var computed = el.css('transition'); // If computed is set to none, clear upstream 9055 9056 if (computed === transNone) { 9057 computed = _tram.upstream = null; 9058 } // Set upstream transition to none temporarily 9059 9060 9061 _tram.upstream = transNone; // Set values immediately 9062 9063 _tram.set(tramify(data)); // Only restore upstream in preview mode 9064 9065 9066 _tram.upstream = computed; 9067 } // (Published) Set styles immediately on specified jquery element 9068 9069 9070 function stylePub(el, data) { 9071 tram(el).set(tramify(data)); 9072 } // Build a clean object for tram 9073 9074 9075 function tramify(obj, meta) { 9076 var omit3d = meta && meta.omit3d; 9077 var result = {}; 9078 var found = false; 9079 9080 for (var key in obj) { 9081 if (key === 'transition') { 9082 continue; 9083 } 9084 9085 if (key === 'keysort') { 9086 continue; 9087 } 9088 9089 if (omit3d) { 9090 if (key === 'z' || key === 'rotateX' || key === 'rotateY' || key === 'scaleZ') { 9091 continue; 9092 } 9093 } 9094 9095 result[key] = obj[key]; 9096 found = true; 9097 } // If empty, return null for tram.set/stop compliance 9098 9099 9100 return found ? result : null; 9101 } // Export module 9102 9103 9104 return api; 9105 }); 9106 9107 /***/ 9108 }), 9109/* 126 */ 9110/***/ (function (module, exports, __webpack_require__) { 9111 9112 "use strict"; 9113 // @wf-will-never-add-flow-to-this-file 9114 9115 /* eslint-disable no-var */ 9116 9117 /** 9118 * Webflow: Interactions 2 9119 */ 9120 9121 var Webflow = __webpack_require__(3); 9122 9123 var ix2 = __webpack_require__(127); 9124 9125 ix2.setEnv(Webflow.env); 9126 Webflow.define('ix2', module.exports = function () { 9127 return ix2; 9128 }); 9129 9130 /***/ 9131 }), 9132/* 127 */ 9133/***/ (function (module, exports, __webpack_require__) { 9134 9135 "use strict"; 9136 9137 9138 var _interopRequireWildcard = __webpack_require__(14); 9139 9140 var _interopRequireDefault = __webpack_require__(0); 9141 9142 Object.defineProperty(exports, "__esModule", { 9143 value: true 9144 }); 9145 exports.setEnv = setEnv; 9146 exports.init = init; 9147 exports.destroy = destroy; 9148 exports.actions = exports.store = void 0; 9149 9150 __webpack_require__(128); 9151 9152 var _redux = __webpack_require__(79); 9153 9154 var _IX2Reducer = _interopRequireDefault(__webpack_require__(169)); 9155 9156 var _IX2VanillaEngine = __webpack_require__(115); 9157 9158 var actions = _interopRequireWildcard(__webpack_require__(62)); 9159 9160 exports.actions = actions; // Array.includes needed for IE11 @packages/systems/ix2/shared/utils/quick-effects 9161 9162 var store = (0, _redux.createStore)(_IX2Reducer["default"]); 9163 exports.store = store; 9164 9165 function setEnv(env) { 9166 if (env()) { 9167 (0, _IX2VanillaEngine.observeRequests)(store); 9168 } 9169 } 9170 9171 function init(rawData) { 9172 destroy(); 9173 (0, _IX2VanillaEngine.startEngine)({ 9174 store: store, 9175 rawData: rawData, 9176 allowEvents: true 9177 }); 9178 } 9179 9180 function destroy() { 9181 (0, _IX2VanillaEngine.stopEngine)(store); 9182 } 9183 9184 /***/ 9185 }), 9186/* 128 */ 9187/***/ (function (module, exports, __webpack_require__) { 9188 9189 module.exports = __webpack_require__(129); 9190 9191 9192 /***/ 9193 }), 9194/* 129 */ 9195/***/ (function (module, exports, __webpack_require__) { 9196 9197 __webpack_require__(130); 9198 var entryUnbind = __webpack_require__(155); 9199 9200 module.exports = entryUnbind('Array', 'includes'); 9201 9202 9203 /***/ 9204 }), 9205/* 130 */ 9206/***/ (function (module, exports, __webpack_require__) { 9207 9208 "use strict"; 9209 9210 var $ = __webpack_require__(131); 9211 var $includes = __webpack_require__(77).includes; 9212 var addToUnscopables = __webpack_require__(148); 9213 9214 // `Array.prototype.includes` method 9215 // https://tc39.github.io/ecma262/#sec-array.prototype.includes 9216 $({ target: 'Array', proto: true }, { 9217 includes: function includes(el /* , fromIndex = 0 */) { 9218 return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined); 9219 } 9220 }); 9221 9222 // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables 9223 addToUnscopables('includes'); 9224 9225 9226 /***/ 9227 }), 9228/* 131 */ 9229/***/ (function (module, exports, __webpack_require__) { 9230 9231 var global = __webpack_require__(4); 9232 var getOwnPropertyDescriptor = __webpack_require__(67).f; 9233 var hide = __webpack_require__(18); 9234 var redefine = __webpack_require__(136); 9235 var setGlobal = __webpack_require__(40); 9236 var copyConstructorProperties = __webpack_require__(140); 9237 var isForced = __webpack_require__(147); 9238 9239 /* 9240 options.target - name of the target object 9241 options.global - target is the global object 9242 options.stat - export as static methods of target 9243 options.proto - export as prototype methods of target 9244 options.real - real prototype method for the `pure` version 9245 options.forced - export even if the native feature is available
vendor: 4,464 bytes, lines 9246-9375
9246 options.bind - bind methods to the target, required for the `pure` version 9247 options.wrap - wrap constructors to preventing global pollution, required for the `pure` version 9248 options.unsafe - use the simple assignment of property instead of delete + defineProperty 9249 options.sham - add a flag to not completely full polyfills 9250 options.enumerable - export as enumerable property 9251 options.noTargetGet - prevent calling a getter on target 9252 */ 9253 module.exports = function (options, source) { 9254 var TARGET = options.target; 9255 var GLOBAL = options.global; 9256 var STATIC = options.stat; 9257 var FORCED, target, key, targetProperty, sourceProperty, descriptor; 9258 if (GLOBAL) { 9259 target = global; 9260 } else if (STATIC) { 9261 target = global[TARGET] || setGlobal(TARGET, {}); 9262 } else { 9263 target = (global[TARGET] || {}).prototype; 9264 } 9265 if (target) for (key in source) { 9266 sourceProperty = source[key]; 9267 if (options.noTargetGet) { 9268 descriptor = getOwnPropertyDescriptor(target, key); 9269 targetProperty = descriptor && descriptor.value; 9270 } else targetProperty = target[key]; 9271 FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); 9272 // contained in target 9273 if (!FORCED && targetProperty !== undefined) { 9274 if (typeof sourceProperty === typeof targetProperty) continue; 9275 copyConstructorProperties(sourceProperty, targetProperty); 9276 } 9277 // add a flag to not completely full polyfills 9278 if (options.sham || (targetProperty && targetProperty.sham)) { 9279 hide(sourceProperty, 'sham', true); 9280 } 9281 // extend global 9282 redefine(target, key, sourceProperty, options); 9283 } 9284 }; 9285 9286 9287 /***/ 9288 }), 9289/* 132 */ 9290/***/ (function (module, exports, __webpack_require__) { 9291 9292 "use strict"; 9293 9294 var nativePropertyIsEnumerable = {}.propertyIsEnumerable; 9295 var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; 9296 9297 // Nashorn ~ JDK8 bug 9298 var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1); 9299 9300 // `Object.prototype.propertyIsEnumerable` method implementation 9301 // https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable 9302 exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) { 9303 var descriptor = getOwnPropertyDescriptor(this, V); 9304 return !!descriptor && descriptor.enumerable; 9305 } : nativePropertyIsEnumerable; 9306 9307 9308 /***/ 9309 }), 9310/* 133 */ 9311/***/ (function (module, exports, __webpack_require__) { 9312 9313 var fails = __webpack_require__(16); 9314 var classof = __webpack_require__(134); 9315 9316 var split = ''.split; 9317 9318 // fallback for non-array-like ES3 and non-enumerable old V8 strings 9319 module.exports = fails(function () { 9320 // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346 9321 // eslint-disable-next-line no-prototype-builtins 9322 return !Object('z').propertyIsEnumerable(0); 9323 }) ? function (it) { 9324 return classof(it) == 'String' ? split.call(it, '') : Object(it); 9325 } : Object; 9326 9327 9328 /***/ 9329 }), 9330/* 134 */ 9331/***/ (function (module, exports) { 9332 9333 var toString = {}.toString; 9334 9335 module.exports = function (it) { 9336 return toString.call(it).slice(8, -1); 9337 }; 9338 9339 9340 /***/ 9341 }), 9342/* 135 */ 9343/***/ (function (module, exports) { 9344 9345 // `RequireObjectCoercible` abstract operation 9346 // https://tc39.github.io/ecma262/#sec-requireobjectcoercible 9347 module.exports = function (it) { 9348 if (it == undefined) throw TypeError("Can't call method on " + it); 9349 return it; 9350 }; 9351 9352 9353 /***/ 9354 }), 9355/* 136 */ 9356/***/ (function (module, exports, __webpack_require__) { 9357 9358 var global = __webpack_require__(4); 9359 var shared = __webpack_require__(26); 9360 var hide = __webpack_require__(18); 9361 var has = __webpack_require__(17); 9362 var setGlobal = __webpack_require__(40); 9363 var nativeFunctionToString = __webpack_require__(72); 9364 var InternalStateModule = __webpack_require__(138); 9365 9366 var getInternalState = InternalStateModule.get; 9367 var enforceInternalState = InternalStateModule.enforce; 9368 var TEMPLATE = String(nativeFunctionToString).split('toString'); 9369 9370 shared('inspectSource', function (it) { 9371 return nativeFunctionToString.call(it); 9372 }); 9373 9374 (module.exports = function (O, key, value, options) { 9375 var unsafe = options ? !!options.unsafe : false;
vendor: 12,142 bytes, lines 9376-9805
9376 var simple = options ? !!options.enumerable : false; 9377 var noTargetGet = options ? !!options.noTargetGet : false; 9378 if (typeof value == 'function') { 9379 if (typeof key == 'string' && !has(value, 'name')) hide(value, 'name', key); 9380 enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : ''); 9381 } 9382 if (O === global) { 9383 if (simple) O[key] = value; 9384 else setGlobal(key, value); 9385 return; 9386 } else if (!unsafe) { 9387 delete O[key]; 9388 } else if (!noTargetGet && O[key]) { 9389 simple = true; 9390 } 9391 if (simple) O[key] = value; 9392 else hide(O, key, value); 9393 // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative 9394 })(Function.prototype, 'toString', function toString() { 9395 return typeof this == 'function' && getInternalState(this).source || nativeFunctionToString.call(this); 9396 }); 9397 9398 9399 /***/ 9400 }), 9401/* 137 */ 9402/***/ (function (module, exports) { 9403 9404 module.exports = false; 9405 9406 9407 /***/ 9408 }), 9409/* 138 */ 9410/***/ (function (module, exports, __webpack_require__) { 9411 9412 var NATIVE_WEAK_MAP = __webpack_require__(139); 9413 var global = __webpack_require__(4); 9414 var isObject = __webpack_require__(24); 9415 var hide = __webpack_require__(18); 9416 var objectHas = __webpack_require__(17); 9417 var sharedKey = __webpack_require__(73); 9418 var hiddenKeys = __webpack_require__(41); 9419 9420 var WeakMap = global.WeakMap; 9421 var set, get, has; 9422 9423 var enforce = function (it) { 9424 return has(it) ? get(it) : set(it, {}); 9425 }; 9426 9427 var getterFor = function (TYPE) { 9428 return function (it) { 9429 var state; 9430 if (!isObject(it) || (state = get(it)).type !== TYPE) { 9431 throw TypeError('Incompatible receiver, ' + TYPE + ' required'); 9432 } return state; 9433 }; 9434 }; 9435 9436 if (NATIVE_WEAK_MAP) { 9437 var store = new WeakMap(); 9438 var wmget = store.get; 9439 var wmhas = store.has; 9440 var wmset = store.set; 9441 set = function (it, metadata) { 9442 wmset.call(store, it, metadata); 9443 return metadata; 9444 }; 9445 get = function (it) { 9446 return wmget.call(store, it) || {}; 9447 }; 9448 has = function (it) { 9449 return wmhas.call(store, it); 9450 }; 9451 } else { 9452 var STATE = sharedKey('state'); 9453 hiddenKeys[STATE] = true; 9454 set = function (it, metadata) { 9455 hide(it, STATE, metadata); 9456 return metadata; 9457 }; 9458 get = function (it) { 9459 return objectHas(it, STATE) ? it[STATE] : {}; 9460 }; 9461 has = function (it) { 9462 return objectHas(it, STATE); 9463 }; 9464 } 9465 9466 module.exports = { 9467 set: set, 9468 get: get, 9469 has: has, 9470 enforce: enforce, 9471 getterFor: getterFor 9472 }; 9473 9474 9475 /***/ 9476 }), 9477/* 139 */ 9478/***/ (function (module, exports, __webpack_require__) { 9479 9480 var global = __webpack_require__(4); 9481 var nativeFunctionToString = __webpack_require__(72); 9482 9483 var WeakMap = global.WeakMap; 9484 9485 module.exports = typeof WeakMap === 'function' && /native code/.test(nativeFunctionToString.call(WeakMap)); 9486 9487 9488 /***/ 9489 }), 9490/* 140 */ 9491/***/ (function (module, exports, __webpack_require__) { 9492 9493 var has = __webpack_require__(17); 9494 var ownKeys = __webpack_require__(141); 9495 var getOwnPropertyDescriptorModule = __webpack_require__(67); 9496 var definePropertyModule = __webpack_require__(39); 9497 9498 module.exports = function (target, source) { 9499 var keys = ownKeys(source); 9500 var defineProperty = definePropertyModule.f; 9501 var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f; 9502 for (var i = 0; i < keys.length; i++) { 9503 var key = keys[i]; 9504 if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key)); 9505 } 9506 }; 9507 9508 9509 /***/ 9510 }), 9511/* 141 */ 9512/***/ (function (module, exports, __webpack_require__) { 9513 9514 var getBuiltIn = __webpack_require__(75); 9515 var getOwnPropertyNamesModule = __webpack_require__(143); 9516 var getOwnPropertySymbolsModule = __webpack_require__(146); 9517 var anObject = __webpack_require__(25); 9518 9519 // all object keys, includes non-enumerable and symbols 9520 module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) { 9521 var keys = getOwnPropertyNamesModule.f(anObject(it)); 9522 var getOwnPropertySymbols = getOwnPropertySymbolsModule.f; 9523 return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys; 9524 }; 9525 9526 9527 /***/ 9528 }), 9529/* 142 */ 9530/***/ (function (module, exports, __webpack_require__) { 9531 9532 module.exports = __webpack_require__(4); 9533 9534 9535 /***/ 9536 }), 9537/* 143 */ 9538/***/ (function (module, exports, __webpack_require__) { 9539 9540 var internalObjectKeys = __webpack_require__(76); 9541 var enumBugKeys = __webpack_require__(42); 9542 9543 var hiddenKeys = enumBugKeys.concat('length', 'prototype'); 9544 9545 // `Object.getOwnPropertyNames` method 9546 // https://tc39.github.io/ecma262/#sec-object.getownpropertynames 9547 exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { 9548 return internalObjectKeys(O, hiddenKeys); 9549 }; 9550 9551 9552 /***/ 9553 }), 9554/* 144 */ 9555/***/ (function (module, exports, __webpack_require__) { 9556 9557 var toInteger = __webpack_require__(78); 9558 9559 var min = Math.min; 9560 9561 // `ToLength` abstract operation 9562 // https://tc39.github.io/ecma262/#sec-tolength 9563 module.exports = function (argument) { 9564 return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991 9565 }; 9566 9567 9568 /***/ 9569 }), 9570/* 145 */ 9571/***/ (function (module, exports, __webpack_require__) { 9572 9573 var toInteger = __webpack_require__(78); 9574 9575 var max = Math.max; 9576 var min = Math.min; 9577 9578 // Helper for a popular repeating case of the spec: 9579 // Let integer be ? ToInteger(index). 9580 // If integer < 0, let result be max((length + integer), 0); else let result be min(length, length). 9581 module.exports = function (index, length) { 9582 var integer = toInteger(index); 9583 return integer < 0 ? max(integer + length, 0) : min(integer, length); 9584 }; 9585 9586 9587 /***/ 9588 }), 9589/* 146 */ 9590/***/ (function (module, exports) { 9591 9592 exports.f = Object.getOwnPropertySymbols; 9593 9594 9595 /***/ 9596 }), 9597/* 147 */ 9598/***/ (function (module, exports, __webpack_require__) { 9599 9600 var fails = __webpack_require__(16); 9601 9602 var replacement = /#|\.prototype\./; 9603 9604 var isForced = function (feature, detection) { 9605 var value = data[normalize(feature)]; 9606 return value == POLYFILL ? true 9607 : value == NATIVE ? false 9608 : typeof detection == 'function' ? fails(detection) 9609 : !!detection; 9610 }; 9611 9612 var normalize = isForced.normalize = function (string) { 9613 return String(string).replace(replacement, '.').toLowerCase(); 9614 }; 9615 9616 var data = isForced.data = {}; 9617 var NATIVE = isForced.NATIVE = 'N'; 9618 var POLYFILL = isForced.POLYFILL = 'P'; 9619 9620 module.exports = isForced; 9621 9622 9623 /***/ 9624 }), 9625/* 148 */ 9626/***/ (function (module, exports, __webpack_require__) { 9627 9628 var wellKnownSymbol = __webpack_require__(149); 9629 var create = __webpack_require__(151); 9630 var hide = __webpack_require__(18); 9631 9632 var UNSCOPABLES = wellKnownSymbol('unscopables'); 9633 var ArrayPrototype = Array.prototype; 9634 9635 // Array.prototype[@@unscopables] 9636 // https://tc39.github.io/ecma262/#sec-array.prototype-@@unscopables 9637 if (ArrayPrototype[UNSCOPABLES] == undefined) { 9638 hide(ArrayPrototype, UNSCOPABLES, create(null)); 9639 } 9640 9641 // add a key to Array.prototype[@@unscopables] 9642 module.exports = function (key) { 9643 ArrayPrototype[UNSCOPABLES][key] = true; 9644 }; 9645 9646 9647 /***/ 9648 }), 9649/* 149 */ 9650/***/ (function (module, exports, __webpack_require__) { 9651 9652 var global = __webpack_require__(4); 9653 var shared = __webpack_require__(26); 9654 var uid = __webpack_require__(74); 9655 var NATIVE_SYMBOL = __webpack_require__(150); 9656 9657 var Symbol = global.Symbol; 9658 var store = shared('wks'); 9659 9660 module.exports = function (name) { 9661 return store[name] || (store[name] = NATIVE_SYMBOL && Symbol[name] 9662 || (NATIVE_SYMBOL ? Symbol : uid)('Symbol.' + name)); 9663 }; 9664 9665 9666 /***/ 9667 }), 9668/* 150 */ 9669/***/ (function (module, exports, __webpack_require__) { 9670 9671 var fails = __webpack_require__(16); 9672 9673 module.exports = !!Object.getOwnPropertySymbols && !fails(function () { 9674 // Chrome 38 Symbol has incorrect toString conversion 9675 // eslint-disable-next-line no-undef 9676 return !String(Symbol()); 9677 }); 9678 9679 9680 /***/ 9681 }), 9682/* 151 */ 9683/***/ (function (module, exports, __webpack_require__) { 9684 9685 var anObject = __webpack_require__(25); 9686 var defineProperties = __webpack_require__(152); 9687 var enumBugKeys = __webpack_require__(42); 9688 var hiddenKeys = __webpack_require__(41); 9689 var html = __webpack_require__(154); 9690 var documentCreateElement = __webpack_require__(71); 9691 var sharedKey = __webpack_require__(73); 9692 var IE_PROTO = sharedKey('IE_PROTO'); 9693 9694 var PROTOTYPE = 'prototype'; 9695 var Empty = function () { /* empty */ }; 9696 9697 // Create object with fake `null` prototype: use iframe Object with cleared prototype 9698 var createDict = function () { 9699 // Thrash, waste and sodomy: IE GC bug 9700 var iframe = documentCreateElement('iframe'); 9701 var length = enumBugKeys.length; 9702 var lt = '<'; 9703 var script = 'script'; 9704 var gt = '>'; 9705 var js = 'java' + script + ':'; 9706 var iframeDocument; 9707 iframe.style.display = 'none'; 9708 html.appendChild(iframe); 9709 iframe.src = String(js); 9710 iframeDocument = iframe.contentWindow.document; 9711 iframeDocument.open(); 9712 iframeDocument.write(lt + script + gt + 'document.F=Object' + lt + '/' + script + gt); 9713 iframeDocument.close(); 9714 createDict = iframeDocument.F; 9715 while (length--) delete createDict[PROTOTYPE][enumBugKeys[length]]; 9716 return createDict(); 9717 }; 9718 9719 // `Object.create` method 9720 // https://tc39.github.io/ecma262/#sec-object.create 9721 module.exports = Object.create || function create(O, Properties) { 9722 var result; 9723 if (O !== null) { 9724 Empty[PROTOTYPE] = anObject(O); 9725 result = new Empty(); 9726 Empty[PROTOTYPE] = null; 9727 // add "__proto__" for Object.getPrototypeOf polyfill 9728 result[IE_PROTO] = O; 9729 } else result = createDict(); 9730 return Properties === undefined ? result : defineProperties(result, Properties); 9731 }; 9732 9733 hiddenKeys[IE_PROTO] = true; 9734 9735 9736 /***/ 9737 }), 9738/* 152 */ 9739/***/ (function (module, exports, __webpack_require__) { 9740 9741 var DESCRIPTORS = __webpack_require__(15); 9742 var definePropertyModule = __webpack_require__(39); 9743 var anObject = __webpack_require__(25); 9744 var objectKeys = __webpack_require__(153); 9745 9746 // `Object.defineProperties` method 9747 // https://tc39.github.io/ecma262/#sec-object.defineproperties 9748 module.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) { 9749 anObject(O); 9750 var keys = objectKeys(Properties); 9751 var length = keys.length; 9752 var index = 0; 9753 var key; 9754 while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]); 9755 return O; 9756 }; 9757 9758 9759 /***/ 9760 }), 9761/* 153 */ 9762/***/ (function (module, exports, __webpack_require__) { 9763 9764 var internalObjectKeys = __webpack_require__(76); 9765 var enumBugKeys = __webpack_require__(42); 9766 9767 // `Object.keys` method 9768 // https://tc39.github.io/ecma262/#sec-object.keys 9769 module.exports = Object.keys || function keys(O) { 9770 return internalObjectKeys(O, enumBugKeys); 9771 }; 9772 9773 9774 /***/ 9775 }), 9776/* 154 */ 9777/***/ (function (module, exports, __webpack_require__) { 9778 9779 var getBuiltIn = __webpack_require__(75); 9780 9781 module.exports = getBuiltIn('document', 'documentElement'); 9782 9783 9784 /***/ 9785 }), 9786/* 155 */ 9787/***/ (function (module, exports, __webpack_require__) { 9788 9789 var global = __webpack_require__(4); 9790 var bind = __webpack_require__(156); 9791 9792 var call = Function.call; 9793 9794 module.exports = function (CONSTRUCTOR, METHOD, length) { 9795 return bind(call, global[CONSTRUCTOR].prototype[METHOD], length); 9796 }; 9797 9798 9799 /***/ 9800 }), 9801/* 156 */ 9802/***/ (function (module, exports, __webpack_require__) { 9803 9804 var aFunction = __webpack_require__(157); 9805
9806 // optional / simple context binding 9807 module.exports = function (fn, that, length) { 9808 aFunction(fn); 9809 if (that === undefined) return fn; 9810 switch (length) { 9811 case 0: return function () { 9812 return fn.call(that); 9813 }; 9814 case 1: return function (a) { 9815 return fn.call(that, a); 9816 }; 9817 case 2: return function (a, b) { 9818 return fn.call(that, a, b); 9819 }; 9820 case 3: return function (a, b, c) { 9821 return fn.call(that, a, b, c); 9822 }; 9823 } 9824 return function (/* ...args */) { 9825 return fn.apply(that, arguments); 9826 }; 9827 }; 9828 9829 9830 /***/ 9831 }), 9832/* 157 */ 9833/***/ (function (module, exports) { 9834 9835 module.exports = function (it) { 9836 if (typeof it != 'function') { 9837 throw TypeError(String(it) + ' is not a function'); 9838 } return it; 9839 }; 9840 9841 9842 /***/ 9843 }), 9844/* 158 */ 9845/***/ (function (module, __webpack_exports__, __webpack_require__) { 9846 9847 "use strict"; 9848 __webpack_require__.r(__webpack_exports__); 9849/* harmony import */ var _Symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(81); 9850/* harmony import */ var _getRawTag_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(161); 9851/* harmony import */ var _objectToString_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(162); 9852 9853 9854 9855 9856 /** `Object#toString` result references. */ 9857 var nullTag = '[object Null]', 9858 undefinedTag = '[object Undefined]'; 9859 9860 /** Built-in value references. */ 9861 var symToStringTag = _Symbol_js__WEBPACK_IMPORTED_MODULE_0__["default"] ? _Symbol_js__WEBPACK_IMPORTED_MODULE_0__["default"].toStringTag : undefined; 9862 9863 /** 9864 * The base implementation of `getTag` without fallbacks for buggy environments. 9865 * 9866 * @private 9867 * @param {*} value The value to query. 9868 * @returns {string} Returns the `toStringTag`. 9869 */ 9870 function baseGetTag(value) { 9871 if (value == null) { 9872 return value === undefined ? undefinedTag : nullTag; 9873 } 9874 return (symToStringTag && symToStringTag in Object(value)) 9875 ? Object(_getRawTag_js__WEBPACK_IMPORTED_MODULE_1__["default"])(value) 9876 : Object(_objectToString_js__WEBPACK_IMPORTED_MODULE_2__["default"])(value); 9877 } 9878 9879/* harmony default export */ __webpack_exports__["default"] = (baseGetTag); 9880 9881 9882 /***/ 9883 }), 9884/* 159 */ 9885/***/ (function (module, __webpack_exports__, __webpack_require__) { 9886 9887 "use strict"; 9888 __webpack_require__.r(__webpack_exports__); 9889/* harmony import */ var _freeGlobal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(160); 9890 9891 9892 /** Detect free variable `self`. */ 9893 var freeSelf = typeof self == 'object' && self && self.Object === Object && self; 9894 9895 /** Used as a reference to the global object. */ 9896 var root = _freeGlobal_js__WEBPACK_IMPORTED_MODULE_0__["default"] || freeSelf || Function('return this')(); 9897 9898/* harmony default export */ __webpack_exports__["default"] = (root); 9899 9900 9901 /***/ 9902 }), 9903/* 160 */ 9904/***/ (function (module, __webpack_exports__, __webpack_require__) { 9905 9906 "use strict"; 9907 __webpack_require__.r(__webpack_exports__); 9908/* WEBPACK VAR INJECTION */(function (global) {/** Detect free variable `global` from Node.js. */ 9909 var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; 9910 9911/* harmony default export */ __webpack_exports__["default"] = (freeGlobal); 9912 9913 /* WEBPACK VAR INJECTION */ 9914 }.call(this, __webpack_require__(23))) 9915 9916 /***/ 9917 }), 9918/* 161 */ 9919/***/ (function (module, __webpack_exports__, __webpack_require__) { 9920 9921 "use strict"; 9922 __webpack_require__.r(__webpack_exports__); 9923/* harmony import */ var _Symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(81); 9924 9925 9926 /** Used for built-in method references. */ 9927 var objectProto = Object.prototype; 9928 9929 /** Used to check objects for own properties. */ 9930 var hasOwnProperty = objectProto.hasOwnProperty; 9931 9932 /** 9933 * Used to resolve the 9934 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) 9935 * of values. 9936 */ 9937 var nativeObjectToString = objectProto.toString; 9938 9939 /** Built-in value references. */ 9940 var symToStringTag = _Symbol_js__WEBPACK_IMPORTED_MODULE_0__["default"] ? _Symbol_js__WEBPACK_IMPORTED_MODULE_0__["default"].toStringTag : undefined; 9941 9942 /** 9943 * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. 9944 * 9945 * @private 9946 * @param {*} value The value to query. 9947 * @returns {string} Returns the raw `toStringTag`. 9948 */ 9949 function getRawTag(value) { 9950 var isOwn = hasOwnProperty.call(value, symToStringTag), 9951 tag = value[symToStringTag]; 9952
9953 try { 9954 value[symToStringTag] = undefined; 9955 var unmasked = true; 9956 } catch (e) { } 9957 9958 var result = nativeObjectToString.call(value); 9959 if (unmasked) { 9960 if (isOwn) { 9961 value[symToStringTag] = tag; 9962 } else { 9963 delete value[symToStringTag]; 9964 } 9965 } 9966 return result; 9967 } 9968 9969/* harmony default export */ __webpack_exports__["default"] = (getRawTag); 9970 9971 9972 /***/ 9973 }), 9974/* 162 */ 9975/***/ (function (module, __webpack_exports__, __webpack_require__) { 9976 9977 "use strict"; 9978 __webpack_require__.r(__webpack_exports__); 9979 /** Used for built-in method references. */ 9980 var objectProto = Object.prototype; 9981 9982 /** 9983 * Used to resolve the 9984 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) 9985 * of values. 9986 */ 9987 var nativeObjectToString = objectProto.toString; 9988 9989 /** 9990 * Converts `value` to a string using `Object.prototype.toString`. 9991 * 9992 * @private 9993 * @param {*} value The value to convert. 9994 * @returns {string} Returns the converted string. 9995 */ 9996 function objectToString(value) { 9997 return nativeObjectToString.call(value); 9998 } 9999 10000/* harmony default export */ __webpack_exports__["default"] = (objectToString); 10001 10002 10003 /***/ 10004 }), 10005/* 163 */ 10006/***/ (function (module, __webpack_exports__, __webpack_require__) { 10007 10008 "use strict"; 10009 __webpack_require__.r(__webpack_exports__); 10010/* harmony import */ var _overArg_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(164); 10011 10012 10013 /** Built-in value references. */ 10014 var getPrototype = Object(_overArg_js__WEBPACK_IMPORTED_MODULE_0__["default"])(Object.getPrototypeOf, Object); 10015 10016/* harmony default export */ __webpack_exports__["default"] = (getPrototype); 10017 10018 10019 /***/ 10020 }), 10021/* 164 */ 10022/***/ (function (module, __webpack_exports__, __webpack_require__) { 10023 10024 "use strict"; 10025 __webpack_require__.r(__webpack_exports__); 10026 /** 10027 * Creates a unary function that invokes `func` with its argument transformed. 10028 * 10029 * @private 10030 * @param {Function} func The function to wrap. 10031 * @param {Function} transform The argument transform. 10032 * @returns {Function} Returns the new function. 10033 */ 10034 function overArg(func, transform) { 10035 return function (arg) { 10036 return func(transform(arg)); 10037 }; 10038 } 10039 10040/* harmony default export */ __webpack_exports__["default"] = (overArg); 10041 10042 10043 /***/ 10044 }), 10045/* 165 */ 10046/***/ (function (module, __webpack_exports__, __webpack_require__) { 10047 10048 "use strict"; 10049 __webpack_require__.r(__webpack_exports__); 10050 /** 10051 * Checks if `value` is object-like. A value is object-like if it's not `null` 10052 * and has a `typeof` result of "object". 10053 * 10054 * @static 10055 * @memberOf _ 10056 * @since 4.0.0 10057 * @category Lang 10058 * @param {*} value The value to check. 10059 * @returns {boolean} Returns `true` if `value` is object-like, else `false`. 10060 * @example 10061 * 10062 * _.isObjectLike({}); 10063 * // => true 10064 * 10065 * _.isObjectLike([1, 2, 3]); 10066 * // => true 10067 * 10068 * _.isObjectLike(_.noop); 10069 * // => false 10070 * 10071 * _.isObjectLike(null); 10072 * // => false 10073 */ 10074 function isObjectLike(value) { 10075 return value != null && typeof value == 'object'; 10076 } 10077 10078/* harmony default export */ __webpack_exports__["default"] = (isObjectLike); 10079 10080 10081 /***/ 10082 }), 10083/* 166 */ 10084/***/ (function (module, __webpack_exports__, __webpack_require__) { 10085 10086 "use strict"; 10087 __webpack_require__.r(__webpack_exports__); 10088/* WEBPACK VAR INJECTION */(function (global, module) {/* harmony import */ var _ponyfill_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(168); 10089 /* global window */ 10090 10091 10092 var root; 10093 10094 if (typeof self !== 'undefined') { 10095 root = self; 10096 } else if (typeof window !== 'undefined') { 10097 root = window; 10098 } else if (typeof global !== 'undefined') { 10099 root = global; 10100 } else if (true) { 10101 root = module; 10102 } else { } 10103 10104 var result = Object(_ponyfill_js__WEBPACK_IMPORTED_MODULE_0__["default"])(root); 10105/* harmony default export */ __webpack_exports__["default"] = (result); 10106 10107 /* WEBPACK VAR INJECTION */ 10108 }.call(this, __webpack_require__(23), __webpack_require__(167)(module))) 10109 10110 /***/ 10111 }), 10112/* 167 */
10113/***/ (function (module, exports) { 10114 10115 module.exports = function (originalModule) { 10116 if (!originalModule.webpackPolyfill) { 10117 var module = Object.create(originalModule); 10118 // module.parent = undefined by default 10119 if (!module.children) module.children = []; 10120 Object.defineProperty(module, "loaded", { 10121 enumerable: true, 10122 get: function () { 10123 return module.l; 10124 } 10125 }); 10126 Object.defineProperty(module, "id", { 10127 enumerable: true, 10128 get: function () { 10129 return module.i; 10130 } 10131 }); 10132 Object.defineProperty(module, "exports", { 10133 enumerable: true 10134 }); 10135 module.webpackPolyfill = 1; 10136 } 10137 return module; 10138 }; 10139 10140 10141 /***/ 10142 }), 10143/* 168 */ 10144/***/ (function (module, __webpack_exports__, __webpack_require__) { 10145 10146 "use strict"; 10147 __webpack_require__.r(__webpack_exports__); 10148/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function () { return symbolObservablePonyfill; }); 10149 function symbolObservablePonyfill(root) { 10150 var result; 10151 var Symbol = root.Symbol; 10152 10153 if (typeof Symbol === 'function') { 10154 if (Symbol.observable) { 10155 result = Symbol.observable; 10156 } else { 10157 result = Symbol('observable'); 10158 Symbol.observable = result; 10159 } 10160 } else { 10161 result = '@@observable'; 10162 } 10163 10164 return result; 10165 }; 10166 10167 10168 /***/ 10169 }), 10170/* 169 */ 10171/***/ (function (module, exports, __webpack_require__) { 10172 10173 "use strict"; 10174 10175 10176 Object.defineProperty(exports, "__esModule", { 10177 value: true 10178 }); 10179 exports["default"] = void 0; 10180 10181 var _redux = __webpack_require__(79); 10182 10183 var _IX2DataReducer = __webpack_require__(170); 10184 10185 var _IX2RequestReducer = __webpack_require__(176); 10186 10187 var _IX2SessionReducer = __webpack_require__(177); 10188 10189 var _shared = __webpack_require__(10); 10190 10191 var _IX2InstancesReducer = __webpack_require__(262); 10192 10193 var _IX2ParametersReducer = __webpack_require__(263); 10194 10195 var ixElements = _shared.IX2ElementsReducer.ixElements; 10196 10197 var _default = (0, _redux.combineReducers)({ 10198 ixData: _IX2DataReducer.ixData, 10199 ixRequest: _IX2RequestReducer.ixRequest, 10200 ixSession: _IX2SessionReducer.ixSession, 10201 ixElements: ixElements, 10202 ixInstances: _IX2InstancesReducer.ixInstances, 10203 ixParameters: _IX2ParametersReducer.ixParameters 10204 }); 10205 10206 exports["default"] = _default; 10207 10208 /***/ 10209 }), 10210/* 170 */ 10211/***/ (function (module, exports, __webpack_require__) { 10212 10213 "use strict"; 10214 10215 10216 Object.defineProperty(exports, "__esModule", { 10217 value: true 10218 }); 10219 exports.ixData = void 0; 10220 10221 var _constants = __webpack_require__(2); 10222 10223 var IX2_RAW_DATA_IMPORTED = _constants.IX2EngineActionTypes.IX2_RAW_DATA_IMPORTED; 10224 10225 var ixData = function ixData() { 10226 var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Object.freeze({}); 10227 var action = arguments.length > 1 ? arguments[1] : undefined; 10228 10229 switch (action.type) { 10230 case IX2_RAW_DATA_IMPORTED: 10231 { 10232 return action.payload.ixData || Object.freeze({}); 10233 } 10234 10235 default: 10236 { 10237 return state; 10238 } 10239 } 10240 }; 10241 10242 exports.ixData = ixData; 10243 10244 /***/ 10245 }), 10246/* 171 */ 10247/***/ (function (module, exports, __webpack_require__) { 10248 10249 "use strict"; 10250 10251 10252 Object.defineProperty(exports, "__esModule", { 10253 value: true 10254 }); 10255 exports.QuickEffectDirectionConsts = exports.QuickEffectIds = exports.EventLimitAffectedElements = exports.EventContinuousMouseAxes = exports.EventBasedOn = exports.EventAppliesTo = exports.EventTypeConsts = void 0; 10256 /** 10257 * Event Type IDs 10258 */ 10259 10260 var EventTypeConsts = { 10261 NAVBAR_OPEN: 'NAVBAR_OPEN', 10262 NAVBAR_CLOSE: 'NAVBAR_CLOSE', 10263 TAB_ACTIVE: 'TAB_ACTIVE', 10264 TAB_INACTIVE: 'TAB_INACTIVE', 10265 SLIDER_ACTIVE: 'SLIDER_ACTIVE', 10266 SLIDER_INACTIVE: 'SLIDER_INACTIVE', 10267 DROPDOWN_OPEN: 'DROPDOWN_OPEN', 10268 DROPDOWN_CLOSE: 'DROPDOWN_CLOSE', 10269 MOUSE_CLICK: 'MOUSE_CLICK', 10270 MOUSE_SECOND_CLICK: 'MOUSE_SECOND_CLICK', 10271 MOUSE_DOWN: 'MOUSE_DOWN', 10272 MOUSE_UP: 'MOUSE_UP', 10273 MOUSE_OVER: 'MOUSE_OVER', 10274 MOUSE_OUT: 'MOUSE_OUT', 10275 MOUSE_MOVE: 'MOUSE_MOVE', 10276 MOUSE_MOVE_IN_VIEWPORT: 'MOUSE_MOVE_IN_VIEWPORT', 10277 SCROLL_INTO_VIEW: 'SCROLL_INTO_VIEW',
10278 SCROLL_OUT_OF_VIEW: 'SCROLL_OUT_OF_VIEW', 10279 SCROLLING_IN_VIEW: 'SCROLLING_IN_VIEW', 10280 ECOMMERCE_CART_OPEN: 'ECOMMERCE_CART_OPEN', 10281 ECOMMERCE_CART_CLOSE: 'ECOMMERCE_CART_CLOSE', 10282 PAGE_START: 'PAGE_START', 10283 PAGE_FINISH: 'PAGE_FINISH', 10284 PAGE_SCROLL_UP: 'PAGE_SCROLL_UP', 10285 PAGE_SCROLL_DOWN: 'PAGE_SCROLL_DOWN', 10286 PAGE_SCROLL: 'PAGE_SCROLL' 10287 }; 10288 /** 10289 * Event Config Enums 10290 */ 10291 10292 exports.EventTypeConsts = EventTypeConsts; 10293 var EventAppliesTo = { 10294 ELEMENT: 'ELEMENT', 10295 CLASS: 'CLASS', 10296 PAGE: 'PAGE' 10297 }; 10298 exports.EventAppliesTo = EventAppliesTo; 10299 var EventBasedOn = { 10300 ELEMENT: 'ELEMENT', 10301 VIEWPORT: 'VIEWPORT' 10302 }; 10303 exports.EventBasedOn = EventBasedOn; 10304 var EventContinuousMouseAxes = { 10305 X_AXIS: 'X_AXIS', 10306 Y_AXIS: 'Y_AXIS' 10307 }; 10308 exports.EventContinuousMouseAxes = EventContinuousMouseAxes; 10309 var EventLimitAffectedElements = { 10310 CHILDREN: 'CHILDREN', 10311 SIBLINGS: 'SIBLINGS', 10312 IMMEDIATE_CHILDREN: 'IMMEDIATE_CHILDREN' 10313 }; 10314 /** 10315 * Quick Effect Enums 10316 */ 10317 10318 exports.EventLimitAffectedElements = EventLimitAffectedElements; 10319 var QuickEffectIds = { 10320 FADE_EFFECT: 'FADE_EFFECT', 10321 SLIDE_EFFECT: 'SLIDE_EFFECT', 10322 GROW_EFFECT: 'GROW_EFFECT', 10323 SHRINK_EFFECT: 'SHRINK_EFFECT', 10324 SPIN_EFFECT: 'SPIN_EFFECT', 10325 FLY_EFFECT: 'FLY_EFFECT', 10326 POP_EFFECT: 'POP_EFFECT', 10327 FLIP_EFFECT: 'FLIP_EFFECT', 10328 JIGGLE_EFFECT: 'JIGGLE_EFFECT', 10329 PULSE_EFFECT: 'PULSE_EFFECT', 10330 DROP_EFFECT: 'DROP_EFFECT', 10331 BLINK_EFFECT: 'BLINK_EFFECT', 10332 BOUNCE_EFFECT: 'BOUNCE_EFFECT', 10333 FLIP_LEFT_TO_RIGHT_EFFECT: 'FLIP_LEFT_TO_RIGHT_EFFECT', 10334 FLIP_RIGHT_TO_LEFT_EFFECT: 'FLIP_RIGHT_TO_LEFT_EFFECT', 10335 RUBBER_BAND_EFFECT: 'RUBBER_BAND_EFFECT', 10336 JELLO_EFFECT: 'JELLO_EFFECT', 10337 GROW_BIG_EFFECT: 'GROW_BIG_EFFECT', 10338 SHRINK_BIG_EFFECT: 'SHRINK_BIG_EFFECT', 10339 PLUGIN_LOTTIE_EFFECT: 'PLUGIN_LOTTIE_EFFECT' 10340 }; 10341 /** 10342 * Quick Effect Direction Enums 10343 */ 10344 10345 exports.QuickEffectIds = QuickEffectIds; 10346 var QuickEffectDirectionConsts = { 10347 LEFT: 'LEFT', 10348 RIGHT: 'RIGHT', 10349 BOTTOM: 'BOTTOM', 10350 TOP: 'TOP', 10351 BOTTOM_LEFT: 'BOTTOM_LEFT', 10352 BOTTOM_RIGHT: 'BOTTOM_RIGHT', 10353 TOP_RIGHT: 'TOP_RIGHT', 10354 TOP_LEFT: 'TOP_LEFT', 10355 CLOCKWISE: 'CLOCKWISE', 10356 COUNTER_CLOCKWISE: 'COUNTER_CLOCKWISE' 10357 }; 10358 exports.QuickEffectDirectionConsts = QuickEffectDirectionConsts; 10359 10360 /***/ 10361 }), 10362/* 172 */ 10363/***/ (function (module, exports, __webpack_require__) { 10364 10365 "use strict"; 10366 10367 10368 Object.defineProperty(exports, "__esModule", { 10369 value: true 10370 }); 10371 exports.ActionAppliesTo = exports.ActionTypeConsts = void 0; 10372 var ActionTypeConsts = { 10373 TRANSFORM_MOVE: 'TRANSFORM_MOVE', 10374 TRANSFORM_SCALE: 'TRANSFORM_SCALE', 10375 TRANSFORM_ROTATE: 'TRANSFORM_ROTATE', 10376 TRANSFORM_SKEW: 'TRANSFORM_SKEW', 10377 STYLE_OPACITY: 'STYLE_OPACITY', 10378 STYLE_SIZE: 'STYLE_SIZE', 10379 STYLE_FILTER: 'STYLE_FILTER', 10380 STYLE_BACKGROUND_COLOR: 'STYLE_BACKGROUND_COLOR', 10381 STYLE_BORDER: 'STYLE_BORDER', 10382 STYLE_TEXT_COLOR: 'STYLE_TEXT_COLOR', 10383 PLUGIN_LOTTIE: 'PLUGIN_LOTTIE', 10384 GENERAL_DISPLAY: 'GENERAL_DISPLAY', 10385 GENERAL_START_ACTION: 'GENERAL_START_ACTION', 10386 GENERAL_CONTINUOUS_ACTION: 'GENERAL_CONTINUOUS_ACTION', 10387 // TODO: Clean these up below because they're not used at this time 10388 GENERAL_COMBO_CLASS: 'GENERAL_COMBO_CLASS', 10389 GENERAL_STOP_ACTION: 'GENERAL_STOP_ACTION', 10390 GENERAL_LOOP: 'GENERAL_LOOP', 10391 STYLE_BOX_SHADOW: 'STYLE_BOX_SHADOW' 10392 }; 10393 exports.ActionTypeConsts = ActionTypeConsts; 10394 var ActionAppliesTo = { 10395 ELEMENT: 'ELEMENT', 10396 ELEMENT_CLASS: 'ELEMENT_CLASS', 10397 TRIGGER_ELEMENT: 'TRIGGER_ELEMENT' 10398 }; 10399 exports.ActionAppliesTo = ActionAppliesTo; 10400 10401 /***/ 10402 }), 10403/* 173 */ 10404/***/ (function (module, exports, __webpack_require__) { 10405 10406 "use strict"; 10407 10408 10409 Object.defineProperty(exports, "__esModule", { 10410 value: true 10411 }); 10412 exports.InteractionTypeConsts = void 0; 10413 var InteractionTypeConsts = { 10414 MOUSE_CLICK_INTERACTION: 'MOUSE_CLICK_INTERACTION', 10415 MOUSE_HOVER_INTERACTION: 'MOUSE_HOVER_INTERACTION', 10416 MOUSE_MOVE_INTERACTION: 'MOUSE_MOVE_INTERACTION', 10417 SCROLL_INTO_VIEW_INTERACTION: 'SCROLL_INTO_VIEW_INTERACTION', 10418 SCROLLING_IN_VIEW_INTERACTION: 'SCROLLING_IN_VIEW_INTERACTION', 10419 MOUSE_MOVE_IN_VIEWPORT_INTERACTION: 'MOUSE_MOVE_IN_VIEWPORT_INTERACTION', 10420 PAGE_IS_SCROLLING_INTERACTION: 'PAGE_IS_SCROLLING_INTERACTION', 10421 PAGE_LOAD_INTERACTION: 'PAGE_LOAD_INTERACTION', 10422 PAGE_SCROLLED_INTERACTION: 'PAGE_SCROLLED_INTERACTION', 10423 NAVBAR_INTERACTION: 'NAVBAR_INTERACTION', 10424 DROPDOWN_INTERACTION: 'DROPDOWN_INTERACTION', 10425 ECOMMERCE_CART_INTERACTION: 'ECOMMERCE_CART_INTERACTION', 10426 TAB_INTERACTION: 'TAB_INTERACTION', 10427 SLIDER_INTERACTION: 'SLIDER_INTERACTION' 10428 }; 10429 exports.InteractionTypeConsts = InteractionTypeConsts; 10430 10431 /***/ 10432 }), 10433/* 174 */ 10434/***/ (function (module, exports, __webpack_require__) { 10435 10436 "use strict"; 10437 10438 10439 Object.defineProperty(exports, "__esModule", { 10440 value: true 10441 });
10442 exports.IX2_TEST_FRAME_RENDERED = exports.IX2_MEDIA_QUERIES_DEFINED = exports.IX2_VIEWPORT_WIDTH_CHANGED = exports.IX2_ACTION_LIST_PLAYBACK_CHANGED = exports.IX2_ELEMENT_STATE_CHANGED = exports.IX2_INSTANCE_REMOVED = exports.IX2_INSTANCE_STARTED = exports.IX2_INSTANCE_ADDED = exports.IX2_PARAMETER_CHANGED = exports.IX2_ANIMATION_FRAME_CHANGED = exports.IX2_EVENT_STATE_CHANGED = exports.IX2_EVENT_LISTENER_ADDED = exports.IX2_CLEAR_REQUESTED = exports.IX2_STOP_REQUESTED = exports.IX2_PLAYBACK_REQUESTED = exports.IX2_PREVIEW_REQUESTED = exports.IX2_SESSION_STOPPED = exports.IX2_SESSION_STARTED = exports.IX2_SESSION_INITIALIZED = exports.IX2_RAW_DATA_IMPORTED = void 0; 10443 var IX2_RAW_DATA_IMPORTED = 'IX2_RAW_DATA_IMPORTED'; 10444 exports.IX2_RAW_DATA_IMPORTED = IX2_RAW_DATA_IMPORTED; 10445 var IX2_SESSION_INITIALIZED = 'IX2_SESSION_INITIALIZED'; 10446 exports.IX2_SESSION_INITIALIZED = IX2_SESSION_INITIALIZED; 10447 var IX2_SESSION_STARTED = 'IX2_SESSION_STARTED'; 10448 exports.IX2_SESSION_STARTED = IX2_SESSION_STARTED; 10449 var IX2_SESSION_STOPPED = 'IX2_SESSION_STOPPED'; 10450 exports.IX2_SESSION_STOPPED = IX2_SESSION_STOPPED; 10451 var IX2_PREVIEW_REQUESTED = 'IX2_PREVIEW_REQUESTED'; 10452 exports.IX2_PREVIEW_REQUESTED = IX2_PREVIEW_REQUESTED; 10453 var IX2_PLAYBACK_REQUESTED = 'IX2_PLAYBACK_REQUESTED'; 10454 exports.IX2_PLAYBACK_REQUESTED = IX2_PLAYBACK_REQUESTED; 10455 var IX2_STOP_REQUESTED = 'IX2_STOP_REQUESTED'; 10456 exports.IX2_STOP_REQUESTED = IX2_STOP_REQUESTED; 10457 var IX2_CLEAR_REQUESTED = 'IX2_CLEAR_REQUESTED'; 10458 exports.IX2_CLEAR_REQUESTED = IX2_CLEAR_REQUESTED; 10459 var IX2_EVENT_LISTENER_ADDED = 'IX2_EVENT_LISTENER_ADDED'; 10460 exports.IX2_EVENT_LISTENER_ADDED = IX2_EVENT_LISTENER_ADDED; 10461 var IX2_EVENT_STATE_CHANGED = 'IX2_EVENT_STATE_CHANGED'; 10462 exports.IX2_EVENT_STATE_CHANGED = IX2_EVENT_STATE_CHANGED; 10463 var IX2_ANIMATION_FRAME_CHANGED = 'IX2_ANIMATION_FRAME_CHANGED'; 10464 exports.IX2_ANIMATION_FRAME_CHANGED = IX2_ANIMATION_FRAME_CHANGED; 10465 var IX2_PARAMETER_CHANGED = 'IX2_PARAMETER_CHANGED'; 10466 exports.IX2_PARAMETER_CHANGED = IX2_PARAMETER_CHANGED; 10467 var IX2_INSTANCE_ADDED = 'IX2_INSTANCE_ADDED'; 10468 exports.IX2_INSTANCE_ADDED = IX2_INSTANCE_ADDED; 10469 var IX2_INSTANCE_STARTED = 'IX2_INSTANCE_STARTED'; 10470 exports.IX2_INSTANCE_STARTED = IX2_INSTANCE_STARTED; 10471 var IX2_INSTANCE_REMOVED = 'IX2_INSTANCE_REMOVED'; 10472 exports.IX2_INSTANCE_REMOVED = IX2_INSTANCE_REMOVED; 10473 var IX2_ELEMENT_STATE_CHANGED = 'IX2_ELEMENT_STATE_CHANGED'; 10474 exports.IX2_ELEMENT_STATE_CHANGED = IX2_ELEMENT_STATE_CHANGED; 10475 var IX2_ACTION_LIST_PLAYBACK_CHANGED = 'IX2_ACTION_LIST_PLAYBACK_CHANGED'; 10476 exports.IX2_ACTION_LIST_PLAYBACK_CHANGED = IX2_ACTION_LIST_PLAYBACK_CHANGED; 10477 var IX2_VIEWPORT_WIDTH_CHANGED = 'IX2_VIEWPORT_WIDTH_CHANGED'; 10478 exports.IX2_VIEWPORT_WIDTH_CHANGED = IX2_VIEWPORT_WIDTH_CHANGED; 10479 var IX2_MEDIA_QUERIES_DEFINED = 'IX2_MEDIA_QUERIES_DEFINED'; 10480 exports.IX2_MEDIA_QUERIES_DEFINED = IX2_MEDIA_QUERIES_DEFINED; 10481 var IX2_TEST_FRAME_RENDERED = 'IX2_TEST_FRAME_RENDERED'; 10482 exports.IX2_TEST_FRAME_RENDERED = IX2_TEST_FRAME_RENDERED; 10483 10484 /***/ 10485 }), 10486/* 175 */ 10487/***/ (function (module, exports, __webpack_require__) { 10488 10489 "use strict"; 10490 10491 10492 Object.defineProperty(exports, "__esModule", { 10493 value: true 10494 }); 10495 exports.RENDER_PLUGIN = exports.RENDER_STYLE = exports.RENDER_GENERAL = exports.RENDER_TRANSFORM = exp
10495orts.ABSTRACT_NODE = exports.PLAIN_OBJECT = exports.HTML_ELEMENT = exports.PRESERVE_3D = exports.PARENT = exports.SIBLINGS = exports.IMMEDIATE_CHILDREN = exports.CHILDREN = exports.BAR_DELIMITER = exports.COLON_DELIMITER = exports.COMMA_DELIMITER = exports.AUTO = exports.WILL_CHANGE = exports.FLEX = exports.DISPLAY = exports.COLOR = exports.BORDER_COLOR = exports.BACKGROUND = exports.BACKGROUND_COLOR = exports.HEIGHT = exports.WIDTH = exports.FILTER = exports.OPACITY = exports.SKEW_Y = exports.SKEW_X = exports.SKEW = exports.ROTATE_Z = exports.ROTATE_Y = exports.ROTATE_X = exports.SCALE_3D = exports.SCALE_Z = exports.SCALE_Y = exports.SCALE_X = exports.TRANSLATE_3D = exports.TRANSLATE_Z = exports.TRANSLATE_Y = exports.TRANSLATE_X = exports.TRANSFORM = exports.CONFIG_UNIT = exports.CONFIG_Z_UNIT = exports.CONFIG_Y_UNIT = exports.CONFIG_X_UNIT = exports.CONFIG_VALUE = exports.CONFIG_Z_VALUE = exports.CONFIG_Y_VALUE = exports.CONFIG_X_VALUE = exports.BOUNDARY_SELECTOR = exports.W_MOD_IX = exports.W_MOD_JS = exports.WF_PAGE = exports.IX2_ID_DELIMITER = void 0; 10496 var IX2_ID_DELIMITER = '|'; 10497 exports.IX2_ID_DELIMITER = IX2_ID_DELIMITER; 10498 var WF_PAGE = 'data-wf-page'; 10499 exports.WF_PAGE = WF_PAGE; 10500 var W_MOD_JS = 'w-mod-js'; 10501 exports.W_MOD_JS = W_MOD_JS; 10502 var W_MOD_IX = 'w-mod-ix'; 10503 exports.W_MOD_IX = W_MOD_IX; 10504 var BOUNDARY_SELECTOR = '.w-dyn-item'; 10505 exports.BOUNDARY_SELECTOR = BOUNDARY_SELECTOR; 10506 var CONFIG_X_VALUE = 'xValue'; 10507 exports.CONFIG_X_VALUE = CONFIG_X_VALUE; 10508 var CONFIG_Y_VALUE = 'yValue'; 10509 exports.CONFIG_Y_VALUE = CONFIG_Y_VALUE; 10510 var CONFIG_Z_VALUE = 'zValue'; 10511 exports.CONFIG_Z_VALUE = CONFIG_Z_VALUE; 10512 var CONFIG_VALUE = 'value'; 10513 exports.CONFIG_VALUE = CONFIG_VALUE; 10514 var CONFIG_X_UNIT = 'xUnit'; 10515 exports.CONFIG_X_UNIT = CONFIG_X_UNIT; 10516 var CONFIG_Y_UNIT = 'yUnit'; 10517 exports.CONFIG_Y_UNIT = CONFIG_Y_UNIT; 10518 var CONFIG_Z_UNIT = 'zUnit'; 10519 exports.CONFIG_Z_UNIT = CONFIG_Z_UNIT; 10520 var CONFIG_UNIT = 'unit'; 10521 exports.CONFIG_UNIT = CONFIG_UNIT; 10522 var TRANSFORM = 'transform'; 10523 exports.TRANSFORM = TRANSFORM; 10524 var TRANSLATE_X = 'translateX'; 10525 exports.TRANSLATE_X = TRANSLATE_X; 10526 var TRANSLATE_Y = 'translateY'; 10527 exports.TRANSLATE_Y = TRANSLATE_Y; 10528 var TRANSLATE_Z = 'translateZ'; 10529 exports.TRANSLATE_Z = TRANSLATE_Z; 10530 var TRANSLATE_3D = 'translate3d'; 10531 exports.TRANSLATE_3D = TRANSLATE_3D; 10532 var SCALE_X = 'scaleX'; 10533 exports.SCALE_X = SCALE_X; 10534 var SCALE_Y = 'scaleY'; 10535 exports.SCALE_Y = SCALE_Y; 10536 var SCALE_Z = 'scaleZ'; 10537 exports.SCALE_Z = SCALE_Z; 10538 var SCALE_3D = 'scale3d'; 10539 exports.SCALE_3D = SCALE_3D; 10540 var ROTATE_X = 'rotateX'; 10541 exports.ROTATE_X = ROTATE_X; 10542 var ROTATE_Y = 'rotateY'; 10543 exports.ROTATE_Y = ROTATE_Y; 10544 var ROTATE_Z = 'rotateZ'; 10545 exports.ROTATE_Z = ROTATE_Z; 10546 var SKEW = 'skew'; 10547 exports.SKEW = SKEW; 10548 var SKEW_X = 'skewX'; 10549 exports.SKEW_X = SKEW_X; 10550 var SKEW_Y = 'skewY'; 10551 exports.SKEW_Y = SKEW_Y; 10552 var OPACITY = 'opacity'; 10553 exports.OPACITY = OPACITY; 10554 var FILTER = 'filter'; 10555 exports.FILTER = FILTER; 10556 var WIDTH = 'width'; 10557 exports.WIDTH = WIDTH; 10558 var HEIGHT = 'height'; 10559 exports.HEIGHT = HEIGHT; 10560 var BACKGROUND_COLOR = 'backgroundColor'; 10561 exports.BACKGROUND_COLOR = BACKGROUND_COLOR; 10562 var BACKGROUND = 'background'; 10563 exports.BACKGROUND = BACKGROUND; 10564 var BORDER_COLOR = 'borderColor'; 10565 exports.BORDER_COLOR = BORDER_COLOR; 10566 var COLOR = 'color'; 10567 exports.COLOR = COLOR; 10568 var DISPLAY = 'display'; 10569 exports.DISPLAY = DISPLAY; 10570 var FLEX = 'flex'; 10571 exports.FLEX = FLEX; 10572 var WILL_CHANGE = 'willChange'; 10573 exports.WILL_CHANGE = WILL_CHANGE; 10574 var AUTO = 'AUTO'; 10575 exports.AUTO = AUTO; 10576 var COMMA_DELIMITER = ','; 10577 exports.COMMA_DELIMITER = COMMA_DELIMITER; 10578 var COLON_DELIMITER = ':'; 10579 exports.COLON_DELIMITER = COLON_DELIMITER; 10580 var BAR_DELIMITER = '|'; 10581 exports.BAR_DELIMITER = BAR_DELIMITER; 10582 var CHILDREN = 'CHILDREN'; 10583 exports.CHILDREN = CHILDREN; 10584 var IMMEDIATE_CHILDREN = 'IMMEDIATE_CHILDREN'; 10585 exports.IMMEDIATE_CHILDREN = IMMEDIATE_CHILDREN; 10586 var SIBLINGS = 'SIBLINGS'; 10587 exports.SIBLINGS = SIBLINGS; 10588 var PARENT = 'PARENT'; 10589 exports.PARENT = PARENT; 10590 var PRESERVE_3D = 'preserve-3d'; 10591 exports.PRESERVE_3D = PRESERVE_3D; 10592 var HTML_ELEMENT = 'HTML_ELEMENT'; 10593 exports.HTML_ELEMENT = HTML_ELEMENT; 10594 var PLAIN_OBJECT = 'PLAIN_OBJECT'; 10595 exports.PLAIN_OBJECT = PLAIN_OBJECT; 10596 var ABSTRACT_NODE = 'ABSTRACT_NODE'; 10597 exports.ABSTRACT_NODE = ABSTRACT_NODE; 10598 var RENDER_TRANSFORM = 'RENDER_TRANSFORM'; 10599 exports.RENDER_TRANSFORM = RENDER_TRANSFORM; 10600 var RENDER_GENERAL = 'RENDER_GENERAL'; 10601 exports.RENDER_GENERAL = RENDER_GENERAL; 10602 var RENDER_STYLE = 'RENDER_STYLE'; 10603 exports.RENDER_STYLE = RENDER_STYLE; 10604 var RENDER_PLUGIN = 'RENDER_PLUGIN'; 10605 exports.RENDER_PLUGIN = RENDER_PLUGIN; 10606 10607 /***/ 10608 }), 10609/* 176 */ 10610/***/ (function (module, exports, __webpack_require__) { 10611 10612 "use strict"; 10613 10614 10615 var _interopRequireDefault2 = __webpack_require__(0); 10616 10617 var _defineProperty2 = _interopRequireDefault2(__webpack_require__(27)); 10618 10619 var _Object$create; 10620 10621 var _interopRequireDefault = __webpack_require__(0); 10622 10623 Object.defineProperty(exports, "__esModule", { 10624 value: true 10625 }); 10626 exports.ixRequest = void 0; 10627 10628 var _extends2 = _interopRequireDefault(__webpack_require__(28)); 10629 10630 var _constants = __webpack_require__(2); 10631 10632 var _timm = __webpack_require__(19); 10633 10634 var _constants$IX2EngineA = _constants.IX2EngineActionTypes,
10635 IX2_PREVIEW_REQUESTED = _constants$IX2EngineA.IX2_PREVIEW_REQUESTED, 10636 IX2_PLAYBACK_REQUESTED = _constants$IX2EngineA.IX2_PLAYBACK_REQUESTED, 10637 IX2_STOP_REQUESTED = _constants$IX2EngineA.IX2_STOP_REQUESTED, 10638 IX2_CLEAR_REQUESTED = _constants$IX2EngineA.IX2_CLEAR_REQUESTED; 10639 var initialState = { 10640 preview: {}, 10641 playback: {}, 10642 stop: {}, 10643 clear: {} 10644 }; 10645 var stateKeys = Object.create(null, (_Object$create = {}, (0, _defineProperty2["default"])(_Object$create, IX2_PREVIEW_REQUESTED, { 10646 value: 'preview' 10647 }), (0, _defineProperty2["default"])(_Object$create, IX2_PLAYBACK_REQUESTED, { 10648 value: 'playback' 10649 }), (0, _defineProperty2["default"])(_Object$create, IX2_STOP_REQUESTED, { 10650 value: 'stop' 10651 }), (0, _defineProperty2["default"])(_Object$create, IX2_CLEAR_REQUESTED, { 10652 value: 'clear' 10653 }), _Object$create)); 10654 10655 var ixRequest = function ixRequest() { 10656 var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState; 10657 var action = arguments.length > 1 ? arguments[1] : undefined; 10658 10659 if (action.type in stateKeys) { 10660 var key = [stateKeys[action.type]]; 10661 return (0, _timm.setIn)(state, [key], (0, _extends2["default"])({}, action.payload)); 10662 } 10663 10664 return state; 10665 }; 10666 10667 exports.ixRequest = ixRequest; 10668 10669 /***/ 10670 }), 10671/* 177 */ 10672/***/ (function (module, exports, __webpack_require__) { 10673 10674 "use strict"; 10675 10676 10677 Object.defineProperty(exports, "__esModule", { 10678 value: true 10679 }); 10680 exports.ixSession = void 0; 10681 10682 var _constants = __webpack_require__(2); 10683 10684 var _timm = __webpack_require__(19); 10685 10686 var _constants$IX2EngineA = _constants.IX2EngineActionTypes, 10687 IX2_SESSION_INITIALIZED = _constants$IX2EngineA.IX2_SESSION_INITIALIZED, 10688 IX2_SESSION_STARTED = _constants$IX2EngineA.IX2_SESSION_STARTED, 10689 IX2_TEST_FRAME_RENDERED = _constants$IX2EngineA.IX2_TEST_FRAME_RENDERED, 10690 IX2_SESSION_STOPPED = _constants$IX2EngineA.IX2_SESSION_STOPPED, 10691 IX2_EVENT_LISTENER_ADDED = _constants$IX2EngineA.IX2_EVENT_LISTENER_ADDED, 10692 IX2_EVENT_STATE_CHANGED = _constants$IX2EngineA.IX2_EVENT_STATE_CHANGED, 10693 IX2_ANIMATION_FRAME_CHANGED = _constants$IX2EngineA.IX2_ANIMATION_FRAME_CHANGED, 10694 IX2_ACTION_LIST_PLAYBACK_CHANGED = _constants$IX2EngineA.IX2_ACTION_LIST_PLAYBACK_CHANGED, 10695 IX2_VIEWPORT_WIDTH_CHANGED = _constants$IX2EngineA.IX2_VIEWPORT_WIDTH_CHANGED, 10696 IX2_MEDIA_QUERIES_DEFINED = _constants$IX2EngineA.IX2_MEDIA_QUERIES_DEFINED; 10697 var initialState = { 10698 active: false, 10699 tick: 0, 10700 eventListeners: [], 10701 eventState: {}, 10702 playbackState: {}, 10703 viewportWidth: 0, 10704 mediaQueryKey: null, 10705 hasBoundaryNodes: false, 10706 hasDefinedMediaQueries: false 10707 }; 10708 var TEST_FRAME_STEPS_SIZE = 20; // $FlowFixMe 10709 10710 var ixSession = function ixSession() { 10711 var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState; 10712 var action = arguments.length > 1 ? arguments[1] : undefined; 10713 10714 switch (action.type) { 10715 case IX2_SESSION_INITIALIZED: 10716 { 10717 var hasBoundaryNodes = action.payload.hasBoundaryNodes; 10718 return (0, _timm.set)(state, 'hasBoundaryNodes', hasBoundaryNodes); 10719 } 10720 10721 case IX2_SESSION_STARTED: 10722 { 10723 return (0, _timm.set)(state, 'active', true); 10724 } 10725 10726 case IX2_TEST_FRAME_RENDERED: 10727 { 10728 var _action$payload$step = action.payload.step, 10729 step = _action$payload$step === void 0 ? TEST_FRAME_STEPS_SIZE : _action$payload$step; 10730 return (0, _timm.set)(state, 'tick', state.tick + step); 10731 } 10732 10733 case IX2_SESSION_STOPPED: 10734 { 10735 return initialState; 10736 } 10737 10738 case IX2_ANIMATION_FRAME_CHANGED: 10739 { 10740 var now = action.payload.now; 10741 return (0, _timm.set)(state, 'tick', now); 10742 } 10743 10744 case IX2_EVENT_LISTENER_ADDED: 10745 { 10746 var eventListeners = (0, _timm.addLast)(state.eventListeners, action.payload); 10747 return (0, _timm.set)(state, 'eventListeners', eventListeners); 10748 } 10749 10750 case IX2_EVENT_STATE_CHANGED: 10751 { 10752 var _action$payload = action.payload, 10753 stateKey = _action$payload.stateKey, 10754 newState = _action$payload.newState; 10755 return (0, _timm.setIn)(state, ['eventState', stateKey], newState); 10756 } 10757 10758 case IX2_ACTION_LIST_PLAYBACK_CHANGED: 10759 { 10760 var _action$payload2 = action.payload, 10761 actionListId = _action$payload2.actionListId, 10762 isPlaying = _action$payload2.isPlaying; 10763 return (0, _timm.setIn)(state, ['playbackState', actionListId], isPlaying); 10764 } 10765 10766 case IX2_VIEWPORT_WIDTH_CHANGED: 10767 { 10768 var _action$payload3 = action.payload, 10769 width = _action$payload3.width, 10770 mediaQueries = _action$payload3.mediaQueries; 10771 var mediaQueryCount = mediaQueries.length; 10772 var mediaQueryKey = null; 10773 10774 for (var i = 0; i < mediaQueryCount; i++) { 10775 var _mediaQueries$i = mediaQueries[i], 10776 key = _mediaQueries$i.key, 10777 min = _mediaQueries$i.min, 10778 max = _mediaQueries$i.max; 10779 10780 if (width >= min && width <= max) { 10781 mediaQueryKey = key; 10782 break; 10783 } 10784 } 10785 10786 return (0, _timm.merge)(state, { 10787 viewportWidth: width, 10788 mediaQueryKey: mediaQueryKey 10789 }); 10790 } 10791 10792 case IX2_MEDIA_QUERIES_DEFINED: 10793 { 10794 return (0, _timm.set)(state, 'hasDefinedMediaQueries', true); 10795 } 10796 10797 default: 10798 { 10799 return state; 10800 } 10801 } 10802 }; 10803 10804 exports.ixSession = ixSession; 10805 10806 /***/ 10807 }), 10808/* 178 */ 10809/***/ (function (module, exports, __webpack_require__) { 10810 10811 var baseIsMatch = __webpack_require__(179), 10812 getMatchData = __webpack_require__(231), 10813 matchesStrictComparable = __webpack_require__(102); 10814 10815 /** 10816 * The base implementation of `_.matches` which doesn't clone `source`. 10817 * 10818 * @private 10819 * @param {Object} source The object of property values to match. 10820 * @returns {Function} Returns the new spec function. 10821 */ 10822 function baseMatches(source) { 10823 var matchData = getMatchData(source); 10824 if (matchData.length == 1 && matchData[0][2]) { 10825 return matchesStrictComparable(matchData[0][0], matchData[0][1]); 10826 } 10827 return function (object) { 10828 return object === source || baseIsMatch(object, source, matchData); 10829 }; 10830 } 10831 10832 module.exports = baseMatches; 10833 10834 10835 /***/ 10836 }), 10837/* 179 */ 10838/***/ (function (module, exports, __webpack_require__) { 10839 10840 var Stack = __webpack_require__(88), 10841 baseIsEqual = __webpack_require__(92); 10842 10843 /** Used to compose bitmasks for value comparisons. */ 10844 var COMPARE_PARTIAL_FLAG = 1, 10845 COMPARE_UNORDERED_FLAG = 2; 10846 10847 /** 10848 * The base implementation of `_.isMatch` without support for iteratee shorthands. 10849 * 10850 * @private 10851 * @param {Object} object The object to inspect. 10852 * @param {Object} source The object of property values to match. 10853 * @param {Array} matchData The property names, values, and compare flags to match. 10854 * @param {Function} [customizer] The function to customize comparisons. 10855 * @returns {boolean} Returns `true` if `object` is a match, else `false`. 10856 */ 10857 function baseIsMatch(object, source, matchData, customizer) { 10858 var index = matchData.length, 10859 length = index, 10860 noCustomizer = !customizer; 10861 10862 if (object == null) { 10863 return !length; 10864 } 10865 object = Object(object); 10866 while (index--) { 10867 var data = matchData[index]; 10868 if ((noCustomizer && data[2]) 10869 ? data[1] !== object[data[0]] 10870 : !(data[0] in object) 10871 ) { 10872 return false;
vendor: 4,223 bytes, lines 10873-11062
10873 } 10874 } 10875 while (++index < length) { 10876 data = matchData[index]; 10877 var key = data[0], 10878 objValue = object[key], 10879 srcValue = data[1]; 10880 10881 if (noCustomizer && data[2]) { 10882 if (objValue === undefined && !(key in object)) { 10883 return false; 10884 } 10885 } else { 10886 var stack = new Stack; 10887 if (customizer) { 10888 var result = customizer(objValue, srcValue, key, object, source, stack); 10889 } 10890 if (!(result === undefined 10891 ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) 10892 : result 10893 )) { 10894 return false; 10895 } 10896 } 10897 } 10898 return true; 10899 } 10900 10901 module.exports = baseIsMatch; 10902 10903 10904 /***/ 10905 }), 10906/* 180 */ 10907/***/ (function (module, exports) { 10908 10909 /** 10910 * Removes all key-value entries from the list cache. 10911 * 10912 * @private 10913 * @name clear 10914 * @memberOf ListCache 10915 */ 10916 function listCacheClear() { 10917 this.__data__ = []; 10918 this.size = 0; 10919 } 10920 10921 module.exports = listCacheClear; 10922 10923 10924 /***/ 10925 }), 10926/* 181 */ 10927/***/ (function (module, exports, __webpack_require__) { 10928 10929 var assocIndexOf = __webpack_require__(30); 10930 10931 /** Used for built-in method references. */ 10932 var arrayProto = Array.prototype; 10933 10934 /** Built-in value references. */ 10935 var splice = arrayProto.splice; 10936 10937 /** 10938 * Removes `key` and its value from the list cache. 10939 * 10940 * @private 10941 * @name delete 10942 * @memberOf ListCache 10943 * @param {string} key The key of the value to remove. 10944 * @returns {boolean} Returns `true` if the entry was removed, else `false`. 10945 */ 10946 function listCacheDelete(key) { 10947 var data = this.__data__, 10948 index = assocIndexOf(data, key); 10949 10950 if (index < 0) { 10951 return false; 10952 } 10953 var lastIndex = data.length - 1; 10954 if (index == lastIndex) { 10955 data.pop(); 10956 } else { 10957 splice.call(data, index, 1); 10958 } 10959 --this.size; 10960 return true; 10961 } 10962 10963 module.exports = listCacheDelete; 10964 10965 10966 /***/ 10967 }), 10968/* 182 */ 10969/***/ (function (module, exports, __webpack_require__) { 10970 10971 var assocIndexOf = __webpack_require__(30); 10972 10973 /** 10974 * Gets the list cache value for `key`. 10975 * 10976 * @private 10977 * @name get 10978 * @memberOf ListCache 10979 * @param {string} key The key of the value to get. 10980 * @returns {*} Returns the entry value. 10981 */ 10982 function listCacheGet(key) { 10983 var data = this.__data__, 10984 index = assocIndexOf(data, key); 10985 10986 return index < 0 ? undefined : data[index][1]; 10987 } 10988 10989 module.exports = listCacheGet; 10990 10991 10992 /***/ 10993 }), 10994/* 183 */ 10995/***/ (function (module, exports, __webpack_require__) { 10996 10997 var assocIndexOf = __webpack_require__(30); 10998 10999 /** 11000 * Checks if a list cache value for `key` exists. 11001 * 11002 * @private 11003 * @name has 11004 * @memberOf ListCache 11005 * @param {string} key The key of the entry to check. 11006 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. 11007 */ 11008 function listCacheHas(key) { 11009 return assocIndexOf(this.__data__, key) > -1; 11010 } 11011 11012 module.exports = listCacheHas; 11013 11014 11015 /***/ 11016 }), 11017/* 184 */ 11018/***/ (function (module, exports, __webpack_require__) { 11019 11020 var assocIndexOf = __webpack_require__(30); 11021 11022 /** 11023 * Sets the list cache `key` to `value`. 11024 * 11025 * @private 11026 * @name set 11027 * @memberOf ListCache 11028 * @param {string} key The key of the value to set. 11029 * @param {*} value The value to set. 11030 * @returns {Object} Returns the list cache instance. 11031 */ 11032 function listCacheSet(key, value) { 11033 var data = this.__data__, 11034 index = assocIndexOf(data, key); 11035 11036 if (index < 0) { 11037 ++this.size; 11038 data.push([key, value]); 11039 } else { 11040 data[index][1] = value; 11041 } 11042 return this; 11043 } 11044 11045 module.exports = listCacheSet; 11046 11047 11048 /***/ 11049 }), 11050/* 185 */ 11051/***/ (function (module, exports, __webpack_require__) { 11052 11053 var ListCache = __webpack_require__(29); 11054 11055 /** 11056 * Removes all key-value entries from the stack. 11057 * 11058 * @private 11059 * @name clear 11060 * @memberOf Stack 11061 */ 11062 function stackClear() {
vendor: 9,638 bytes, lines 11063-11465
11063 this.__data__ = new ListCache; 11064 this.size = 0; 11065 } 11066 11067 module.exports = stackClear; 11068 11069 11070 /***/ 11071 }), 11072/* 186 */ 11073/***/ (function (module, exports) { 11074 11075 /** 11076 * Removes `key` and its value from the stack. 11077 * 11078 * @private 11079 * @name delete 11080 * @memberOf Stack 11081 * @param {string} key The key of the value to remove. 11082 * @returns {boolean} Returns `true` if the entry was removed, else `false`. 11083 */ 11084 function stackDelete(key) { 11085 var data = this.__data__, 11086 result = data['delete'](key); 11087 11088 this.size = data.size; 11089 return result; 11090 } 11091 11092 module.exports = stackDelete; 11093 11094 11095 /***/ 11096 }), 11097/* 187 */ 11098/***/ (function (module, exports) { 11099 11100 /** 11101 * Gets the stack value for `key`. 11102 * 11103 * @private 11104 * @name get 11105 * @memberOf Stack 11106 * @param {string} key The key of the value to get. 11107 * @returns {*} Returns the entry value. 11108 */ 11109 function stackGet(key) { 11110 return this.__data__.get(key); 11111 } 11112 11113 module.exports = stackGet; 11114 11115 11116 /***/ 11117 }), 11118/* 188 */ 11119/***/ (function (module, exports) { 11120 11121 /** 11122 * Checks if a stack value for `key` exists. 11123 * 11124 * @private 11125 * @name has 11126 * @memberOf Stack 11127 * @param {string} key The key of the entry to check. 11128 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. 11129 */ 11130 function stackHas(key) { 11131 return this.__data__.has(key); 11132 } 11133 11134 module.exports = stackHas; 11135 11136 11137 /***/ 11138 }), 11139/* 189 */ 11140/***/ (function (module, exports, __webpack_require__) { 11141 11142 var ListCache = __webpack_require__(29), 11143 Map = __webpack_require__(47), 11144 MapCache = __webpack_require__(48); 11145 11146 /** Used as the size to enable large array optimizations. */ 11147 var LARGE_ARRAY_SIZE = 200; 11148 11149 /** 11150 * Sets the stack `key` to `value`. 11151 * 11152 * @private 11153 * @name set 11154 * @memberOf Stack 11155 * @param {string} key The key of the value to set. 11156 * @param {*} value The value to set. 11157 * @returns {Object} Returns the stack cache instance. 11158 */ 11159 function stackSet(key, value) { 11160 var data = this.__data__; 11161 if (data instanceof ListCache) { 11162 var pairs = data.__data__; 11163 if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { 11164 pairs.push([key, value]); 11165 this.size = ++data.size; 11166 return this; 11167 } 11168 data = this.__data__ = new MapCache(pairs); 11169 } 11170 data.set(key, value); 11171 this.size = data.size; 11172 return this; 11173 } 11174 11175 module.exports = stackSet; 11176 11177 11178 /***/ 11179 }), 11180/* 190 */ 11181/***/ (function (module, exports, __webpack_require__) { 11182 11183 var isFunction = __webpack_require__(89), 11184 isMasked = __webpack_require__(193), 11185 isObject = __webpack_require__(6), 11186 toSource = __webpack_require__(91); 11187 11188 /** 11189 * Used to match `RegExp` 11190 * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). 11191 */ 11192 var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; 11193 11194 /** Used to detect host constructors (Safari). */ 11195 var reIsHostCtor = /^\[object .+?Constructor\]$/; 11196 11197 /** Used for built-in method references. */ 11198 var funcProto = Function.prototype, 11199 objectProto = Object.prototype; 11200 11201 /** Used to resolve the decompiled source of functions. */ 11202 var funcToString = funcProto.toString; 11203 11204 /** Used to check objects for own properties. */ 11205 var hasOwnProperty = objectProto.hasOwnProperty; 11206 11207 /** Used to detect if a method is native. */ 11208 var reIsNative = RegExp('^' + 11209 funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') 11210 .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' 11211 ); 11212 11213 /** 11214 * The base implementation of `_.isNative` without bad shim checks. 11215 * 11216 * @private 11217 * @param {*} value The value to check. 11218 * @returns {boolean} Returns `true` if `value` is a native function, 11219 * else `false`. 11220 */ 11221 function baseIsNative(value) { 11222 if (!isObject(value) || isMasked(value)) { 11223 return false; 11224 } 11225 var pattern = isFunction(value) ? reIsNative : reIsHostCtor; 11226 return pattern.test(toSource(value)); 11227 } 11228 11229 module.exports = baseIsNative; 11230 11231 11232 /***/ 11233 }), 11234/* 191 */ 11235/***/ (function (module, exports, __webpack_require__) { 11236 11237 var Symbol = __webpack_require__(20); 11238 11239 /** Used for built-in method references. */ 11240 var objectProto = Object.prototype; 11241 11242 /** Used to check objects for own properties. */ 11243 var hasOwnProperty = objectProto.hasOwnProperty; 11244 11245 /** 11246 * Used to resolve the 11247 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) 11248 * of values. 11249 */ 11250 var nativeObjectToString = objectProto.toString; 11251 11252 /** Built-in value references. */ 11253 var symToStringTag = Symbol ? Symbol.toStringTag : undefined; 11254 11255 /** 11256 * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. 11257 * 11258 * @private 11259 * @param {*} value The value to query. 11260 * @returns {string} Returns the raw `toStringTag`. 11261 */ 11262 function getRawTag(value) { 11263 var isOwn = hasOwnProperty.call(value, symToStringTag), 11264 tag = value[symToStringTag]; 11265 11266 try { 11267 value[symToStringTag] = undefined; 11268 var unmasked = true; 11269 } catch (e) { } 11270 11271 var result = nativeObjectToString.call(value); 11272 if (unmasked) { 11273 if (isOwn) { 11274 value[symToStringTag] = tag; 11275 } else { 11276 delete value[symToStringTag]; 11277 } 11278 } 11279 return result; 11280 } 11281 11282 module.exports = getRawTag; 11283 11284 11285 /***/ 11286 }), 11287/* 192 */ 11288/***/ (function (module, exports) { 11289 11290 /** Used for built-in method references. */ 11291 var objectProto = Object.prototype; 11292 11293 /** 11294 * Used to resolve the 11295 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) 11296 * of values. 11297 */ 11298 var nativeObjectToString = objectProto.toString; 11299 11300 /** 11301 * Converts `value` to a string using `Object.prototype.toString`. 11302 * 11303 * @private 11304 * @param {*} value The value to convert. 11305 * @returns {string} Returns the converted string. 11306 */ 11307 function objectToString(value) { 11308 return nativeObjectToString.call(value); 11309 } 11310 11311 module.exports = objectToString; 11312 11313 11314 /***/ 11315 }), 11316/* 193 */ 11317/***/ (function (module, exports, __webpack_require__) { 11318 11319 var coreJsData = __webpack_require__(194); 11320 11321 /** Used to detect methods masquerading as native. */ 11322 var maskSrcKey = (function () { 11323 var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); 11324 return uid ? ('Symbol(src)_1.' + uid) : ''; 11325 }()); 11326 11327 /** 11328 * Checks if `func` has its source masked. 11329 * 11330 * @private 11331 * @param {Function} func The function to check. 11332 * @returns {boolean} Returns `true` if `func` is masked, else `false`. 11333 */ 11334 function isMasked(func) { 11335 return !!maskSrcKey && (maskSrcKey in func); 11336 } 11337 11338 module.exports = isMasked; 11339 11340 11341 /***/ 11342 }), 11343/* 194 */ 11344/***/ (function (module, exports, __webpack_require__) { 11345 11346 var root = __webpack_require__(5); 11347 11348 /** Used to detect overreaching core-js shims. */ 11349 var coreJsData = root['__core-js_shared__']; 11350 11351 module.exports = coreJsData; 11352 11353 11354 /***/ 11355 }), 11356/* 195 */ 11357/***/ (function (module, exports) { 11358 11359 /** 11360 * Gets the value at `key` of `object`. 11361 * 11362 * @private 11363 * @param {Object} [object] The object to query. 11364 * @param {string} key The key of the property to get. 11365 * @returns {*} Returns the property value. 11366 */ 11367 function getValue(object, key) { 11368 return object == null ? undefined : object[key]; 11369 } 11370 11371 module.exports = getValue; 11372 11373 11374 /***/ 11375 }), 11376/* 196 */ 11377/***/ (function (module, exports, __webpack_require__) { 11378 11379 var Hash = __webpack_require__(197), 11380 ListCache = __webpack_require__(29), 11381 Map = __webpack_require__(47); 11382 11383 /** 11384 * Removes all key-value entries from the map. 11385 * 11386 * @private 11387 * @name clear 11388 * @memberOf MapCache 11389 */ 11390 function mapCacheClear() { 11391 this.size = 0; 11392 this.__data__ = { 11393 'hash': new Hash, 11394 'map': new (Map || ListCache), 11395 'string': new Hash 11396 }; 11397 } 11398 11399 module.exports = mapCacheClear; 11400 11401 11402 /***/ 11403 }), 11404/* 197 */ 11405/***/ (function (module, exports, __webpack_require__) { 11406 11407 var hashClear = __webpack_require__(198), 11408 hashDelete = __webpack_require__(199), 11409 hashGet = __webpack_require__(200), 11410 hashHas = __webpack_require__(201), 11411 hashSet = __webpack_require__(202); 11412 11413 /** 11414 * Creates a hash object. 11415 * 11416 * @private 11417 * @constructor 11418 * @param {Array} [entries] The key-value pairs to cache. 11419 */ 11420 function Hash(entries) { 11421 var index = -1, 11422 length = entries == null ? 0 : entries.length; 11423 11424 this.clear(); 11425 while (++index < length) { 11426 var entry = entries[index]; 11427 this.set(entry[0], entry[1]); 11428 } 11429 } 11430 11431 // Add methods to `Hash`. 11432 Hash.prototype.clear = hashClear; 11433 Hash.prototype['delete'] = hashDelete; 11434 Hash.prototype.get = hashGet; 11435 Hash.prototype.has = hashHas; 11436 Hash.prototype.set = hashSet; 11437 11438 module.exports = Hash; 11439 11440 11441 /***/ 11442 }), 11443/* 198 */ 11444/***/ (function (module, exports, __webpack_require__) { 11445 11446 var nativeCreate = __webpack_require__(31); 11447 11448 /** 11449 * Removes all key-value entries from the hash. 11450 * 11451 * @private 11452 * @name clear 11453 * @memberOf Hash 11454 */ 11455 function hashClear() { 11456 this.__data__ = nativeCreate ? nativeCreate(null) : {}; 11457 this.size = 0; 11458 } 11459 11460 module.exports = hashClear; 11461 11462 11463 /***/ 11464 }), 11465/* 199 */
vendor: 32,020 bytes, lines 11466-12606
11466/***/ (function (module, exports) { 11467 11468 /** 11469 * Removes `key` and its value from the hash. 11470 * 11471 * @private 11472 * @name delete 11473 * @memberOf Hash 11474 * @param {Object} hash The hash to modify. 11475 * @param {string} key The key of the value to remove. 11476 * @returns {boolean} Returns `true` if the entry was removed, else `false`. 11477 */ 11478 function hashDelete(key) { 11479 var result = this.has(key) && delete this.__data__[key]; 11480 this.size -= result ? 1 : 0; 11481 return result; 11482 } 11483 11484 module.exports = hashDelete; 11485 11486 11487 /***/ 11488 }), 11489/* 200 */ 11490/***/ (function (module, exports, __webpack_require__) { 11491 11492 var nativeCreate = __webpack_require__(31); 11493 11494 /** Used to stand-in for `undefined` hash values. */ 11495 var HASH_UNDEFINED = '__lodash_hash_undefined__'; 11496 11497 /** Used for built-in method references. */ 11498 var objectProto = Object.prototype; 11499 11500 /** Used to check objects for own properties. */ 11501 var hasOwnProperty = objectProto.hasOwnProperty; 11502 11503 /** 11504 * Gets the hash value for `key`. 11505 * 11506 * @private 11507 * @name get 11508 * @memberOf Hash 11509 * @param {string} key The key of the value to get. 11510 * @returns {*} Returns the entry value. 11511 */ 11512 function hashGet(key) { 11513 var data = this.__data__; 11514 if (nativeCreate) { 11515 var result = data[key]; 11516 return result === HASH_UNDEFINED ? undefined : result; 11517 } 11518 return hasOwnProperty.call(data, key) ? data[key] : undefined; 11519 } 11520 11521 module.exports = hashGet; 11522 11523 11524 /***/ 11525 }), 11526/* 201 */ 11527/***/ (function (module, exports, __webpack_require__) { 11528 11529 var nativeCreate = __webpack_require__(31); 11530 11531 /** Used for built-in method references. */ 11532 var objectProto = Object.prototype; 11533 11534 /** Used to check objects for own properties. */ 11535 var hasOwnProperty = objectProto.hasOwnProperty; 11536 11537 /** 11538 * Checks if a hash value for `key` exists. 11539 * 11540 * @private 11541 * @name has 11542 * @memberOf Hash 11543 * @param {string} key The key of the entry to check. 11544 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. 11545 */ 11546 function hashHas(key) { 11547 var data = this.__data__; 11548 return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key); 11549 } 11550 11551 module.exports = hashHas; 11552 11553 11554 /***/ 11555 }), 11556/* 202 */ 11557/***/ (function (module, exports, __webpack_require__) { 11558 11559 var nativeCreate = __webpack_require__(31); 11560 11561 /** Used to stand-in for `undefined` hash values. */ 11562 var HASH_UNDEFINED = '__lodash_hash_undefined__'; 11563 11564 /** 11565 * Sets the hash `key` to `value`. 11566 * 11567 * @private 11568 * @name set 11569 * @memberOf Hash 11570 * @param {string} key The key of the value to set. 11571 * @param {*} value The value to set. 11572 * @returns {Object} Returns the hash instance. 11573 */ 11574 function hashSet(key, value) { 11575 var data = this.__data__; 11576 this.size += this.has(key) ? 0 : 1; 11577 data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; 11578 return this; 11579 } 11580 11581 module.exports = hashSet; 11582 11583 11584 /***/ 11585 }), 11586/* 203 */ 11587/***/ (function (module, exports, __webpack_require__) { 11588 11589 var getMapData = __webpack_require__(32); 11590 11591 /** 11592 * Removes `key` and its value from the map. 11593 * 11594 * @private 11595 * @name delete 11596 * @memberOf MapCache 11597 * @param {string} key The key of the value to remove. 11598 * @returns {boolean} Returns `true` if the entry was removed, else `false`. 11599 */ 11600 function mapCacheDelete(key) { 11601 var result = getMapData(this, key)['delete'](key); 11602 this.size -= result ? 1 : 0; 11603 return result; 11604 } 11605 11606 module.exports = mapCacheDelete; 11607 11608 11609 /***/ 11610 }), 11611/* 204 */ 11612/***/ (function (module, exports) { 11613 11614 /** 11615 * Checks if `value` is suitable for use as unique object key. 11616 * 11617 * @private 11618 * @param {*} value The value to check. 11619 * @returns {boolean} Returns `true` if `value` is suitable, else `false`. 11620 */ 11621 function isKeyable(value) { 11622 var type = typeof value; 11623 return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') 11624 ? (value !== '__proto__') 11625 : (value === null); 11626 } 11627 11628 module.exports = isKeyable; 11629 11630 11631 /***/ 11632 }), 11633/* 205 */ 11634/***/ (function (module, exports, __webpack_require__) { 11635 11636 var getMapData = __webpack_require__(32); 11637 11638 /** 11639 * Gets the map value for `key`. 11640 * 11641 * @private 11642 * @name get 11643 * @memberOf MapCache 11644 * @param {string} key The key of the value to get. 11645 * @returns {*} Returns the entry value. 11646 */ 11647 function mapCacheGet(key) { 11648 return getMapData(this, key).get(key); 11649 } 11650 11651 module.exports = mapCacheGet; 11652 11653 11654 /***/ 11655 }), 11656/* 206 */ 11657/***/ (function (module, exports, __webpack_require__) { 11658 11659 var getMapData = __webpack_require__(32); 11660 11661 /** 11662 * Checks if a map value for `key` exists. 11663 * 11664 * @private 11665 * @name has 11666 * @memberOf MapCache 11667 * @param {string} key The key of the entry to check. 11668 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. 11669 */ 11670 function mapCacheHas(key) { 11671 return getMapData(this, key).has(key); 11672 } 11673 11674 module.exports = mapCacheHas; 11675 11676 11677 /***/ 11678 }), 11679/* 207 */ 11680/***/ (function (module, exports, __webpack_require__) { 11681 11682 var getMapData = __webpack_require__(32); 11683 11684 /** 11685 * Sets the map `key` to `value`. 11686 * 11687 * @private 11688 * @name set 11689 * @memberOf MapCache 11690 * @param {string} key The key of the value to set. 11691 * @param {*} value The value to set. 11692 * @returns {Object} Returns the map cache instance. 11693 */ 11694 function mapCacheSet(key, value) { 11695 var data = getMapData(this, key), 11696 size = data.size; 11697 11698 data.set(key, value); 11699 this.size += data.size == size ? 0 : 1; 11700 return this; 11701 } 11702 11703 module.exports = mapCacheSet; 11704 11705 11706 /***/ 11707 }), 11708/* 208 */ 11709/***/ (function (module, exports, __webpack_require__) { 11710 11711 var Stack = __webpack_require__(88), 11712 equalArrays = __webpack_require__(93), 11713 equalByTag = __webpack_require__(214), 11714 equalObjects = __webpack_require__(218), 11715 getTag = __webpack_require__(56), 11716 isArray = __webpack_require__(1), 11717 isBuffer = __webpack_require__(50), 11718 isTypedArray = __webpack_require__(52); 11719 11720 /** Used to compose bitmasks for value comparisons. */ 11721 var COMPARE_PARTIAL_FLAG = 1; 11722 11723 /** `Object#toString` result references. */ 11724 var argsTag = '[object Arguments]', 11725 arrayTag = '[object Array]', 11726 objectTag = '[object Object]'; 11727 11728 /** Used for built-in method references. */ 11729 var objectProto = Object.prototype; 11730 11731 /** Used to check objects for own properties. */ 11732 var hasOwnProperty = objectProto.hasOwnProperty; 11733 11734 /** 11735 * A specialized version of `baseIsEqual` for arrays and objects which performs 11736 * deep comparisons and tracks traversed objects enabling objects with circular 11737 * references to be compared. 11738 * 11739 * @private 11740 * @param {Object} object The object to compare. 11741 * @param {Object} other The other object to compare. 11742 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. 11743 * @param {Function} customizer The function to customize comparisons. 11744 * @param {Function} equalFunc The function to determine equivalents of values. 11745 * @param {Object} [stack] Tracks traversed `object` and `other` objects. 11746 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. 11747 */ 11748 function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { 11749 var objIsArr = isArray(object), 11750 othIsArr = isArray(other), 11751 objTag = objIsArr ? arrayTag : getTag(object), 11752 othTag = othIsArr ? arrayTag : getTag(other); 11753 11754 objTag = objTag == argsTag ? objectTag : objTag; 11755 othTag = othTag == argsTag ? objectTag : othTag; 11756 11757 var objIsObj = objTag == objectTag, 11758 othIsObj = othTag == objectTag, 11759 isSameTag = objTag == othTag; 11760 11761 if (isSameTag && isBuffer(object)) { 11762 if (!isBuffer(other)) { 11763 return false; 11764 } 11765 objIsArr = true; 11766 objIsObj = false; 11767 } 11768 if (isSameTag && !objIsObj) { 11769 stack || (stack = new Stack); 11770 return (objIsArr || isTypedArray(object)) 11771 ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) 11772 : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); 11773 } 11774 if (!(bitmask & COMPARE_PARTIAL_FLAG)) { 11775 var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), 11776 othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); 11777 11778 if (objIsWrapped || othIsWrapped) { 11779 var objUnwrapped = objIsWrapped ? object.value() : object, 11780 othUnwrapped = othIsWrapped ? other.value() : other; 11781 11782 stack || (stack = new Stack); 11783 return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); 11784 } 11785 } 11786 if (!isSameTag) { 11787 return false; 11788 } 11789 stack || (stack = new Stack); 11790 return equalObjects(object, other, bitmask, customizer, equalFunc, stack); 11791 } 11792 11793 module.exports = baseIsEqualDeep; 11794 11795 11796 /***/ 11797 }), 11798/* 209 */ 11799/***/ (function (module, exports, __webpack_require__) { 11800 11801 var MapCache = __webpack_require__(48), 11802 setCacheAdd = __webpack_require__(210), 11803 setCacheHas = __webpack_require__(211); 11804 11805 /** 11806 * 11807 * Creates an array cache object to store unique values. 11808 * 11809 * @private 11810 * @constructor 11811 * @param {Array} [values] The values to cache. 11812 */ 11813 function SetCache(values) { 11814 var index = -1, 11815 length = values == null ? 0 : values.length; 11816 11817 this.__data__ = new MapCache; 11818 while (++index < length) { 11819 this.add(values[index]); 11820 } 11821 } 11822 11823 // Add methods to `SetCache`. 11824 SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; 11825 SetCache.prototype.has = setCacheHas; 11826 11827 module.exports = SetCache; 11828 11829 11830 /***/ 11831 }), 11832/* 210 */ 11833/***/ (function (module, exports) { 11834 11835 /** Used to stand-in for `undefined` hash values. */ 11836 var HASH_UNDEFINED = '__lodash_hash_undefined__'; 11837 11838 /** 11839 * Adds `value` to the array cache. 11840 * 11841 * @private 11842 * @name add 11843 * @memberOf SetCache 11844 * @alias push 11845 * @param {*} value The value to cache. 11846 * @returns {Object} Returns the cache instance. 11847 */ 11848 function setCacheAdd(value) { 11849 this.__data__.set(value, HASH_UNDEFINED); 11850 return this; 11851 } 11852 11853 module.exports = setCacheAdd; 11854 11855 11856 /***/ 11857 }), 11858/* 211 */ 11859/***/ (function (module, exports) { 11860 11861 /** 11862 * Checks if `value` is in the array cache. 11863 * 11864 * @private 11865 * @name has 11866 * @memberOf SetCache 11867 * @param {*} value The value to search for. 11868 * @returns {number} Returns `true` if `value` is found, else `false`. 11869 */ 11870 function setCacheHas(value) { 11871 return this.__data__.has(value); 11872 } 11873 11874 module.exports = setCacheHas; 11875 11876 11877 /***/ 11878 }), 11879/* 212 */ 11880/***/ (function (module, exports) { 11881 11882 /** 11883 * A specialized version of `_.some` for arrays without support for iteratee 11884 * shorthands. 11885 * 11886 * @private 11887 * @param {Array} [array] The array to iterate over. 11888 * @param {Function} predicate The function invoked per iteration. 11889 * @returns {boolean} Returns `true` if any element passes the predicate check, 11890 * else `false`. 11891 */ 11892 function arraySome(array, predicate) { 11893 var index = -1, 11894 length = array == null ? 0 : array.length; 11895 11896 while (++index < length) { 11897 if (predicate(array[index], index, array)) { 11898 return true; 11899 } 11900 } 11901 return false; 11902 } 11903 11904 module.exports = arraySome; 11905 11906 11907 /***/ 11908 }), 11909/* 213 */ 11910/***/ (function (module, exports) { 11911 11912 /** 11913 * Checks if a `cache` value for `key` exists. 11914 * 11915 * @private 11916 * @param {Object} cache The cache to query. 11917 * @param {string} key The key of the entry to check. 11918 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. 11919 */ 11920 function cacheHas(cache, key) { 11921 return cache.has(key); 11922 } 11923 11924 module.exports = cacheHas; 11925 11926 11927 /***/ 11928 }), 11929/* 214 */ 11930/***/ (function (module, exports, __webpack_require__) { 11931 11932 var Symbol = __webpack_require__(20), 11933 Uint8Array = __webpack_require__(215), 11934 eq = __webpack_require__(46), 11935 equalArrays = __webpack_require__(93), 11936 mapToArray = __webpack_require__(216), 11937 setToArray = __webpack_require__(217); 11938 11939 /** Used to compose bitmasks for value comparisons. */ 11940 var COMPARE_PARTIAL_FLAG = 1, 11941 COMPARE_UNORDERED_FLAG = 2; 11942 11943 /** `Object#toString` result references. */ 11944 var boolTag = '[object Boolean]', 11945 dateTag = '[object Date]', 11946 errorTag = '[object Error]', 11947 mapTag = '[object Map]', 11948 numberTag = '[object Number]', 11949 regexpTag = '[object RegExp]', 11950 setTag = '[object Set]', 11951 stringTag = '[object String]', 11952 symbolTag = '[object Symbol]'; 11953 11954 var arrayBufferTag = '[object ArrayBuffer]', 11955 dataViewTag = '[object DataView]'; 11956 11957 /** Used to convert symbols to primitives and strings. */ 11958 var symbolProto = Symbol ? Symbol.prototype : undefined, 11959 symbolValueOf = symbolProto ? symbolProto.valueOf : undefined; 11960 11961 /** 11962 * A specialized version of `baseIsEqualDeep` for comparing objects of 11963 * the same `toStringTag`. 11964 * 11965 * **Note:** This function only supports comparing values with tags of 11966 * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. 11967 * 11968 * @private 11969 * @param {Object} object The object to compare. 11970 * @param {Object} other The other object to compare. 11971 * @param {string} tag The `toStringTag` of the objects to compare. 11972 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. 11973 * @param {Function} customizer The function to customize comparisons. 11974 * @param {Function} equalFunc The function to determine equivalents of values. 11975 * @param {Object} stack Tracks traversed `object` and `other` objects. 11976 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. 11977 */ 11978 function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { 11979 switch (tag) { 11980 case dataViewTag: 11981 if ((object.byteLength != other.byteLength) || 11982 (object.byteOffset != other.byteOffset)) { 11983 return false; 11984 } 11985 object = object.buffer; 11986 other = other.buffer; 11987 11988 case arrayBufferTag: 11989 if ((object.byteLength != other.byteLength) || 11990 !equalFunc(new Uint8Array(object), new Uint8Array(other))) { 11991 return false; 11992 } 11993 return true; 11994 11995 case boolTag: 11996 case dateTag: 11997 case numberTag: 11998 // Coerce booleans to `1` or `0` and dates to milliseconds. 11999 // Invalid dates are coerced to `NaN`. 12000 return eq(+object, +other); 12001 12002 case errorTag: 12003 return object.name == other.name && object.message == other.message; 12004 12005 case regexpTag: 12006 case stringTag: 12007 // Coerce regexes to strings and treat strings, primitives and objects, 12008 // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring 12009 // for more details. 12010 return object == (other + ''); 12011 12012 case mapTag: 12013 var convert = mapToArray; 12014 12015 case setTag: 12016 var isPartial = bitmask & COMPARE_PARTIAL_FLAG; 12017 convert || (convert = setToArray); 12018 12019 if (object.size != other.size && !isPartial) { 12020 return false; 12021 } 12022 // Assume cyclic values are equal. 12023 var stacked = stack.get(object); 12024 if (stacked) { 12025 return stacked == other; 12026 } 12027 bitmask |= COMPARE_UNORDERED_FLAG; 12028 12029 // Recursively compare objects (susceptible to call stack limits). 12030 stack.set(object, other); 12031 var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); 12032 stack['delete'](object); 12033 return result; 12034 12035 case symbolTag: 12036 if (symbolValueOf) { 12037 return symbolValueOf.call(object) == symbolValueOf.call(other); 12038 } 12039 } 12040 return false; 12041 } 12042 12043 module.exports = equalByTag; 12044 12045 12046 /***/ 12047 }), 12048/* 215 */ 12049/***/ (function (module, exports, __webpack_require__) { 12050 12051 var root = __webpack_require__(5); 12052 12053 /** Built-in value references. */ 12054 var Uint8Array = root.Uint8Array; 12055 12056 module.exports = Uint8Array; 12057 12058 12059 /***/ 12060 }), 12061/* 216 */ 12062/***/ (function (module, exports) { 12063 12064 /** 12065 * Converts `map` to its key-value pairs. 12066 * 12067 * @private 12068 * @param {Object} map The map to convert. 12069 * @returns {Array} Returns the key-value pairs. 12070 */ 12071 function mapToArray(map) { 12072 var index = -1, 12073 result = Array(map.size); 12074 12075 map.forEach(function (value, key) { 12076 result[++index] = [key, value]; 12077 }); 12078 return result; 12079 } 12080 12081 module.exports = mapToArray; 12082 12083 12084 /***/ 12085 }), 12086/* 217 */ 12087/***/ (function (module, exports) { 12088 12089 /** 12090 * Converts `set` to an array of its values. 12091 * 12092 * @private 12093 * @param {Object} set The set to convert. 12094 * @returns {Array} Returns the values. 12095 */ 12096 function setToArray(set) { 12097 var index = -1, 12098 result = Array(set.size); 12099 12100 set.forEach(function (value) { 12101 result[++index] = value; 12102 }); 12103 return result; 12104 } 12105 12106 module.exports = setToArray; 12107 12108 12109 /***/ 12110 }), 12111/* 218 */ 12112/***/ (function (module, exports, __webpack_require__) { 12113 12114 var getAllKeys = __webpack_require__(219); 12115 12116 /** Used to compose bitmasks for value comparisons. */ 12117 var COMPARE_PARTIAL_FLAG = 1; 12118 12119 /** Used for built-in method references. */ 12120 var objectProto = Object.prototype; 12121 12122 /** Used to check objects for own properties. */ 12123 var hasOwnProperty = objectProto.hasOwnProperty; 12124 12125 /** 12126 * A specialized version of `baseIsEqualDeep` for objects with support for 12127 * partial deep comparisons. 12128 * 12129 * @private 12130 * @param {Object} object The object to compare. 12131 * @param {Object} other The other object to compare. 12132 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. 12133 * @param {Function} customizer The function to customize comparisons. 12134 * @param {Function} equalFunc The function to determine equivalents of values. 12135 * @param {Object} stack Tracks traversed `object` and `other` objects. 12136 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. 12137 */ 12138 function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { 12139 var isPartial = bitmask & COMPARE_PARTIAL_FLAG, 12140 objProps = getAllKeys(object), 12141 objLength = objProps.length, 12142 othProps = getAllKeys(other), 12143 othLength = othProps.length; 12144 12145 if (objLength != othLength && !isPartial) { 12146 return false; 12147 } 12148 var index = objLength; 12149 while (index--) { 12150 var key = objProps[index]; 12151 if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { 12152 return false; 12153 } 12154 } 12155 // Check that cyclic values are equal. 12156 var objStacked = stack.get(object); 12157 var othStacked = stack.get(other); 12158 if (objStacked && othStacked) { 12159 return objStacked == other && othStacked == object; 12160 } 12161 var result = true; 12162 stack.set(object, other); 12163 stack.set(other, object); 12164 12165 var skipCtor = isPartial; 12166 while (++index < objLength) { 12167 key = objProps[index]; 12168 var objValue = object[key], 12169 othValue = other[key]; 12170 12171 if (customizer) { 12172 var compared = isPartial 12173 ? customizer(othValue, objValue, key, other, object, stack) 12174 : customizer(objValue, othValue, key, object, other, stack); 12175 } 12176 // Recursively compare objects (susceptible to call stack limits). 12177 if (!(compared === undefined 12178 ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) 12179 : compared 12180 )) { 12181 result = false; 12182 break; 12183 } 12184 skipCtor || (skipCtor = key == 'constructor'); 12185 } 12186 if (result && !skipCtor) { 12187 var objCtor = object.constructor, 12188 othCtor = other.constructor; 12189 12190 // Non `Object` object instances with different constructors are not equal. 12191 if (objCtor != othCtor && 12192 ('constructor' in object && 'constructor' in other) && 12193 !(typeof objCtor == 'function' && objCtor instanceof objCtor && 12194 typeof othCtor == 'function' && othCtor instanceof othCtor)) { 12195 result = false; 12196 } 12197 } 12198 stack['delete'](object); 12199 stack['delete'](other); 12200 return result; 12201 } 12202 12203 module.exports = equalObjects; 12204 12205 12206 /***/ 12207 }), 12208/* 219 */ 12209/***/ (function (module, exports, __webpack_require__) { 12210 12211 var baseGetAllKeys = __webpack_require__(94), 12212 getSymbols = __webpack_require__(95), 12213 keys = __webpack_require__(33); 12214 12215 /** 12216 * Creates an array of own enumerable property names and symbols of `object`. 12217 * 12218 * @private 12219 * @param {Object} object The object to query. 12220 * @returns {Array} Returns the array of property names and symbols. 12221 */ 12222 function getAllKeys(object) { 12223 return baseGetAllKeys(object, keys, getSymbols); 12224 } 12225 12226 module.exports = getAllKeys; 12227 12228 12229 /***/ 12230 }), 12231/* 220 */ 12232/***/ (function (module, exports) { 12233 12234 /** 12235 * A specialized version of `_.filter` for arrays without support for 12236 * iteratee shorthands. 12237 * 12238 * @private 12239 * @param {Array} [array] The array to iterate over. 12240 * @param {Function} predicate The function invoked per iteration. 12241 * @returns {Array} Returns the new filtered array. 12242 */ 12243 function arrayFilter(array, predicate) { 12244 var index = -1, 12245 length = array == null ? 0 : array.length, 12246 resIndex = 0, 12247 result = []; 12248 12249 while (++index < length) { 12250 var value = array[index]; 12251 if (predicate(value, index, array)) { 12252 result[resIndex++] = value; 12253 } 12254 } 12255 return result; 12256 } 12257 12258 module.exports = arrayFilter; 12259 12260 12261 /***/ 12262 }), 12263/* 221 */ 12264/***/ (function (module, exports) { 12265 12266 /** 12267 * The base implementation of `_.times` without support for iteratee shorthands 12268 * or max array length checks. 12269 * 12270 * @private 12271 * @param {number} n The number of times to invoke `iteratee`. 12272 * @param {Function} iteratee The function invoked per iteration. 12273 * @returns {Array} Returns the array of results. 12274 */ 12275 function baseTimes(n, iteratee) { 12276 var index = -1, 12277 result = Array(n); 12278 12279 while (++index < n) { 12280 result[index] = iteratee(index); 12281 } 12282 return result; 12283 } 12284 12285 module.exports = baseTimes; 12286 12287 12288 /***/ 12289 }), 12290/* 222 */ 12291/***/ (function (module, exports, __webpack_require__) { 12292 12293 var baseGetTag = __webpack_require__(11), 12294 isObjectLike = __webpack_require__(9); 12295 12296 /** `Object#toString` result references. */ 12297 var argsTag = '[object Arguments]'; 12298 12299 /** 12300 * The base implementation of `_.isArguments`. 12301 * 12302 * @private 12303 * @param {*} value The value to check. 12304 * @returns {boolean} Returns `true` if `value` is an `arguments` object, 12305 */ 12306 function baseIsArguments(value) { 12307 return isObjectLike(value) && baseGetTag(value) == argsTag; 12308 } 12309 12310 module.exports = baseIsArguments; 12311 12312 12313 /***/ 12314 }), 12315/* 223 */ 12316/***/ (function (module, exports) { 12317 12318 /** 12319 * This method returns `false`. 12320 * 12321 * @static 12322 * @memberOf _ 12323 * @since 4.13.0 12324 * @category Util 12325 * @returns {boolean} Returns `false`. 12326 * @example 12327 * 12328 * _.times(2, _.stubFalse); 12329 * // => [false, false] 12330 */ 12331 function stubFalse() { 12332 return false; 12333 } 12334 12335 module.exports = stubFalse; 12336 12337 12338 /***/ 12339 }), 12340/* 224 */ 12341/***/ (function (module, exports, __webpack_require__) { 12342 12343 var baseGetTag = __webpack_require__(11), 12344 isLength = __webpack_require__(53), 12345 isObjectLike = __webpack_require__(9); 12346 12347 /** `Object#toString` result references. */ 12348 var argsTag = '[object Arguments]', 12349 arrayTag = '[object Array]', 12350 boolTag = '[object Boolean]', 12351 dateTag = '[object Date]', 12352 errorTag = '[object Error]', 12353 funcTag = '[object Function]', 12354 mapTag = '[object Map]', 12355 numberTag = '[object Number]', 12356 objectTag = '[object Object]', 12357 regexpTag = '[object RegExp]', 12358 setTag = '[object Set]', 12359 stringTag = '[object String]', 12360 weakMapTag = '[object WeakMap]'; 12361 12362 var arrayBufferTag = '[object ArrayBuffer]', 12363 dataViewTag = '[object DataView]', 12364 float32Tag = '[object Float32Array]', 12365 float64Tag = '[object Float64Array]', 12366 int8Tag = '[object Int8Array]', 12367 int16Tag = '[object Int16Array]', 12368 int32Tag = '[object Int32Array]', 12369 uint8Tag = '[object Uint8Array]', 12370 uint8ClampedTag = '[object Uint8ClampedArray]', 12371 uint16Tag = '[object Uint16Array]', 12372 uint32Tag = '[object Uint32Array]'; 12373 12374 /** Used to identify `toStringTag` values of typed arrays. */ 12375 var typedArrayTags = {}; 12376 typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = 12377 typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = 12378 typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = 12379 typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = 12380 typedArrayTags[uint32Tag] = true; 12381 typedArrayTags[argsTag] = typedArrayTags[arrayTag] = 12382 typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = 12383 typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = 12384 typedArrayTags[errorTag] = typedArrayTags[funcTag] = 12385 typedArrayTags[mapTag] = typedArrayTags[numberTag] = 12386 typedArrayTags[objectTag] = typedArrayTags[regexpTag] = 12387 typedArrayTags[setTag] = typedArrayTags[stringTag] = 12388 typedArrayTags[weakMapTag] = false; 12389 12390 /** 12391 * The base implementation of `_.isTypedArray` without Node.js optimizations. 12392 * 12393 * @private 12394 * @param {*} value The value to check. 12395 * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. 12396 */ 12397 function baseIsTypedArray(value) { 12398 return isObjectLike(value) && 12399 isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; 12400 } 12401 12402 module.exports = baseIsTypedArray; 12403 12404 12405 /***/ 12406 }), 12407/* 225 */ 12408/***/ (function (module, exports) { 12409 12410 /** 12411 * The base implementation of `_.unary` without support for storing metadata. 12412 * 12413 * @private 12414 * @param {Function} func The function to cap arguments for. 12415 * @returns {Function} Returns the new capped function. 12416 */ 12417 function baseUnary(func) { 12418 return function (value) { 12419 return func(value); 12420 }; 12421 } 12422 12423 module.exports = baseUnary; 12424 12425 12426 /***/ 12427 }), 12428/* 226 */ 12429/***/ (function (module, exports, __webpack_require__) { 12430 12431/* WEBPACK VAR INJECTION */(function (module) { 12432 var freeGlobal = __webpack_require__(90); 12433 12434 /** Detect free variable `exports`. */ 12435 var freeExports = true && exports && !exports.nodeType && exports; 12436 12437 /** Detect free variable `module`. */ 12438 var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; 12439 12440 /** Detect the popular CommonJS extension `module.exports`. */ 12441 var moduleExports = freeModule && freeModule.exports === freeExports; 12442 12443 /** Detect free variable `process` from Node.js. */ 12444 var freeProcess = moduleExports && freeGlobal.process; 12445 12446 /** Used to access faster Node.js helpers. */ 12447 var nodeUtil = (function () { 12448 try { 12449 // Use `util.types` for Node.js 10+. 12450 var types = freeModule && freeModule.require && freeModule.require('util').types; 12451 12452 if (types) { 12453 return types; 12454 } 12455 12456 // Legacy `process.binding('util')` for Node.js < 10. 12457 return freeProcess && freeProcess.binding && freeProcess.binding('util'); 12458 } catch (e) { } 12459 }()); 12460 12461 module.exports = nodeUtil; 12462 12463 /* WEBPACK VAR INJECTION */ 12464 }.call(this, __webpack_require__(98)(module))) 12465 12466 /***/ 12467 }), 12468/* 227 */ 12469/***/ (function (module, exports, __webpack_require__) { 12470 12471 var overArg = __webpack_require__(99); 12472 12473 /* Built-in method references for those with the same name as other `lodash` methods. */ 12474 var nativeKeys = overArg(Object.keys, Object); 12475 12476 module.exports = nativeKeys; 12477 12478 12479 /***/ 12480 }), 12481/* 228 */ 12482/***/ (function (module, exports, __webpack_require__) { 12483 12484 var getNative = __webpack_require__(8), 12485 root = __webpack_require__(5); 12486 12487 /* Built-in method references that are verified to be native. */ 12488 var DataView = getNative(root, 'DataView'); 12489 12490 module.exports = DataView; 12491 12492 12493 /***/ 12494 }), 12495/* 229 */ 12496/***/ (function (module, exports, __webpack_require__) { 12497 12498 var getNative = __webpack_require__(8), 12499 root = __webpack_require__(5); 12500 12501 /* Built-in method references that are verified to be native. */ 12502 var Promise = getNative(root, 'Promise'); 12503 12504 module.exports = Promise; 12505 12506 12507 /***/ 12508 }), 12509/* 230 */ 12510/***/ (function (module, exports, __webpack_require__) { 12511 12512 var getNative = __webpack_require__(8), 12513 root = __webpack_require__(5); 12514 12515 /* Built-in method references that are verified to be native. */ 12516 var Set = getNative(root, 'Set'); 12517 12518 module.exports = Set; 12519 12520 12521 /***/ 12522 }), 12523/* 231 */ 12524/***/ (function (module, exports, __webpack_require__) { 12525 12526 var isStrictComparable = __webpack_require__(101), 12527 keys = __webpack_require__(33); 12528 12529 /** 12530 * Gets the property names, values, and compare flags of `object`. 12531 * 12532 * @private 12533 * @param {Object} object The object to query. 12534 * @returns {Array} Returns the match data of `object`. 12535 */ 12536 function getMatchData(object) { 12537 var result = keys(object), 12538 length = result.length; 12539 12540 while (length--) { 12541 var key = result[length], 12542 value = object[key]; 12543 12544 result[length] = [key, value, isStrictComparable(value)]; 12545 } 12546 return result; 12547 } 12548 12549 module.exports = getMatchData; 12550 12551 12552 /***/ 12553 }), 12554/* 232 */ 12555/***/ (function (module, exports, __webpack_require__) { 12556 12557 var baseIsEqual = __webpack_require__(92), 12558 get = __webpack_require__(57), 12559 hasIn = __webpack_require__(238), 12560 isKey = __webpack_require__(59), 12561 isStrictComparable = __webpack_require__(101), 12562 matchesStrictComparable = __webpack_require__(102), 12563 toKey = __webpack_require__(21); 12564 12565 /** Used to compose bitmasks for value comparisons. */ 12566 var COMPARE_PARTIAL_FLAG = 1, 12567 COMPARE_UNORDERED_FLAG = 2; 12568 12569 /** 12570 * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. 12571 * 12572 * @private 12573 * @param {string} path The path of the property to get. 12574 * @param {*} srcValue The value to match. 12575 * @returns {Function} Returns the new spec function. 12576 */ 12577 function baseMatchesProperty(path, srcValue) { 12578 if (isKey(path) && isStrictComparable(srcValue)) { 12579 return matchesStrictComparable(toKey(path), srcValue); 12580 } 12581 return function (object) { 12582 var objValue = get(object, path); 12583 return (objValue === undefined && objValue === srcValue) 12584 ? hasIn(object, path) 12585 : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); 12586 }; 12587 } 12588 12589 module.exports = baseMatchesProperty; 12590 12591 12592 /***/ 12593 }), 12594/* 233 */ 12595/***/ (function (module, exports, __webpack_require__) { 12596 12597 var memoizeCapped = __webpack_require__(234); 12598 12599 /** Used to match property names within property paths. */ 12600 var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; 12601 12602 /** Used to match backslashes in property paths. */ 12603 var reEscapeChar = /\\(\\)?/g; 12604 12605 /** 12606 * Converts `string` to a property path array.
vendor: 5,693 bytes, lines 12607-12804
12607 * 12608 * @private 12609 * @param {string} string The string to convert. 12610 * @returns {Array} Returns the property path array. 12611 */ 12612 var stringToPath = memoizeCapped(function (string) { 12613 var result = []; 12614 if (string.charCodeAt(0) === 46 /* . */) { 12615 result.push(''); 12616 } 12617 string.replace(rePropName, function (match, number, quote, subString) { 12618 result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match)); 12619 }); 12620 return result; 12621 }); 12622 12623 module.exports = stringToPath; 12624 12625 12626 /***/ 12627 }), 12628/* 234 */ 12629/***/ (function (module, exports, __webpack_require__) { 12630 12631 var memoize = __webpack_require__(235); 12632 12633 /** Used as the maximum memoize cache size. */ 12634 var MAX_MEMOIZE_SIZE = 500; 12635 12636 /** 12637 * A specialized version of `_.memoize` which clears the memoized function's 12638 * cache when it exceeds `MAX_MEMOIZE_SIZE`. 12639 * 12640 * @private 12641 * @param {Function} func The function to have its output memoized. 12642 * @returns {Function} Returns the new memoized function. 12643 */ 12644 function memoizeCapped(func) { 12645 var result = memoize(func, function (key) { 12646 if (cache.size === MAX_MEMOIZE_SIZE) { 12647 cache.clear(); 12648 } 12649 return key; 12650 }); 12651 12652 var cache = result.cache; 12653 return result; 12654 } 12655 12656 module.exports = memoizeCapped; 12657 12658 12659 /***/ 12660 }), 12661/* 235 */ 12662/***/ (function (module, exports, __webpack_require__) { 12663 12664 var MapCache = __webpack_require__(48); 12665 12666 /** Error message constants. */ 12667 var FUNC_ERROR_TEXT = 'Expected a function'; 12668 12669 /** 12670 * Creates a function that memoizes the result of `func`. If `resolver` is 12671 * provided, it determines the cache key for storing the result based on the 12672 * arguments provided to the memoized function. By default, the first argument 12673 * provided to the memoized function is used as the map cache key. The `func` 12674 * is invoked with the `this` binding of the memoized function. 12675 * 12676 * **Note:** The cache is exposed as the `cache` property on the memoized 12677 * function. Its creation may be customized by replacing the `_.memoize.Cache` 12678 * constructor with one whose instances implement the 12679 * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) 12680 * method interface of `clear`, `delete`, `get`, `has`, and `set`. 12681 * 12682 * @static 12683 * @memberOf _ 12684 * @since 0.1.0 12685 * @category Function 12686 * @param {Function} func The function to have its output memoized. 12687 * @param {Function} [resolver] The function to resolve the cache key. 12688 * @returns {Function} Returns the new memoized function. 12689 * @example 12690 * 12691 * var object = { 'a': 1, 'b': 2 }; 12692 * var other = { 'c': 3, 'd': 4 }; 12693 * 12694 * var values = _.memoize(_.values); 12695 * values(object); 12696 * // => [1, 2] 12697 * 12698 * values(other); 12699 * // => [3, 4] 12700 * 12701 * object.a = 2; 12702 * values(object); 12703 * // => [1, 2] 12704 * 12705 * // Modify the result cache. 12706 * values.cache.set(object, ['a', 'b']); 12707 * values(object); 12708 * // => ['a', 'b'] 12709 * 12710 * // Replace `_.memoize.Cache`. 12711 * _.memoize.Cache = WeakMap; 12712 */ 12713 function memoize(func, resolver) { 12714 if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) { 12715 throw new TypeError(FUNC_ERROR_TEXT); 12716 } 12717 var memoized = function () { 12718 var args = arguments, 12719 key = resolver ? resolver.apply(this, args) : args[0], 12720 cache = memoized.cache; 12721 12722 if (cache.has(key)) { 12723 return cache.get(key); 12724 } 12725 var result = func.apply(this, args); 12726 memoized.cache = cache.set(key, result) || cache; 12727 return result; 12728 }; 12729 memoized.cache = new (memoize.Cache || MapCache); 12730 return memoized; 12731 } 12732 12733 // Expose `MapCache`. 12734 memoize.Cache = MapCache; 12735 12736 module.exports = memoize; 12737 12738 12739 /***/ 12740 }), 12741/* 236 */ 12742/***/ (function (module, exports, __webpack_require__) { 12743 12744 var baseToString = __webpack_require__(237); 12745 12746 /** 12747 * Converts `value` to a string. An empty string is returned for `null` 12748 * and `undefined` values. The sign of `-0` is preserved. 12749 * 12750 * @static 12751 * @memberOf _ 12752 * @since 4.0.0 12753 * @category Lang 12754 * @param {*} value The value to convert. 12755 * @returns {string} Returns the converted string. 12756 * @example 12757 * 12758 * _.toString(null); 12759 * // => '' 12760 * 12761 * _.toString(-0); 12762 * // => '-0' 12763 * 12764 * _.toString([1, 2, 3]); 12765 * // => '1,2,3' 12766 */ 12767 function toString(value) { 12768 return value == null ? '' : baseToString(value); 12769 } 12770 12771 module.exports = toString; 12772 12773 12774 /***/ 12775 }), 12776/* 237 */ 12777/***/ (function (module, exports, __webpack_require__) { 12778 12779 var Symbol = __webpack_require__(20), 12780 arrayMap = __webpack_require__(103), 12781 isArray = __webpack_require__(1), 12782 isSymbol = __webpack_require__(36); 12783 12784 /** Used as references for various `Number` constants. */ 12785 var INFINITY = 1 / 0; 12786 12787 /** Used to convert symbols to primitives and strings. */ 12788 var symbolProto = Symbol ? Symbol.prototype : undefined, 12789 symbolToString = symbolProto ? symbolProto.toString : undefined; 12790 12791 /** 12792 * The base implementation of `_.toString` which doesn't convert nullish 12793 * values to empty strings. 12794 * 12795 * @private 12796 * @param {*} value The value to process. 12797 * @returns {string} Returns the string. 12798 */ 12799 function baseToString(value) { 12800 // Exit early for strings to avoid a performance hit in some environments. 12801 if (typeof value == 'string') { 12802 return value; 12803 } 12804 if (isArray(value)) {
vendor: 2,665 bytes, lines 12805-12905
12805 // Recursively convert values (susceptible to call stack limits). 12806 return arrayMap(value, baseToString) + ''; 12807 } 12808 if (isSymbol(value)) { 12809 return symbolToString ? symbolToString.call(value) : ''; 12810 } 12811 var result = (value + ''); 12812 return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; 12813 } 12814 12815 module.exports = baseToString; 12816 12817 12818 /***/ 12819 }), 12820/* 238 */ 12821/***/ (function (module, exports, __webpack_require__) { 12822 12823 var baseHasIn = __webpack_require__(239), 12824 hasPath = __webpack_require__(240); 12825 12826 /** 12827 * Checks if `path` is a direct or inherited property of `object`. 12828 * 12829 * @static 12830 * @memberOf _ 12831 * @since 4.0.0 12832 * @category Object 12833 * @param {Object} object The object to query. 12834 * @param {Array|string} path The path to check. 12835 * @returns {boolean} Returns `true` if `path` exists, else `false`. 12836 * @example 12837 * 12838 * var object = _.create({ 'a': _.create({ 'b': 2 }) }); 12839 * 12840 * _.hasIn(object, 'a'); 12841 * // => true 12842 * 12843 * _.hasIn(object, 'a.b'); 12844 * // => true 12845 * 12846 * _.hasIn(object, ['a', 'b']); 12847 * // => true 12848 * 12849 * _.hasIn(object, 'b'); 12850 * // => false 12851 */ 12852 function hasIn(object, path) { 12853 return object != null && hasPath(object, path, baseHasIn); 12854 } 12855 12856 module.exports = hasIn; 12857 12858 12859 /***/ 12860 }), 12861/* 239 */ 12862/***/ (function (module, exports) { 12863 12864 /** 12865 * The base implementation of `_.hasIn` without support for deep paths. 12866 * 12867 * @private 12868 * @param {Object} [object] The object to query. 12869 * @param {Array|string} key The key to check. 12870 * @returns {boolean} Returns `true` if `key` exists, else `false`. 12871 */ 12872 function baseHasIn(object, key) { 12873 return object != null && key in Object(object); 12874 } 12875 12876 module.exports = baseHasIn; 12877 12878 12879 /***/ 12880 }), 12881/* 240 */ 12882/***/ (function (module, exports, __webpack_require__) { 12883 12884 var castPath = __webpack_require__(35), 12885 isArguments = __webpack_require__(34), 12886 isArray = __webpack_require__(1), 12887 isIndex = __webpack_require__(51), 12888 isLength = __webpack_require__(53), 12889 toKey = __webpack_require__(21); 12890 12891 /** 12892 * Checks if `path` exists on `object`. 12893 * 12894 * @private 12895 * @param {Object} object The object to query. 12896 * @param {Array|string} path The path to check. 12897 * @param {Function} hasFunc The function to check properties. 12898 * @returns {boolean} Returns `true` if `path` exists, else `false`. 12899 */ 12900 function hasPath(object, path, hasFunc) { 12901 path = castPath(path, object); 12902 12903 var index = -1, 12904 length = path.length, 12905 result = false;
vendor: 4,214 bytes, lines 12906-13058
12906 12907 while (++index < length) { 12908 var key = toKey(path[index]); 12909 if (!(result = object != null && hasFunc(object, key))) { 12910 break; 12911 } 12912 object = object[key]; 12913 } 12914 if (result || ++index != length) { 12915 return result; 12916 } 12917 length = object == null ? 0 : object.length; 12918 return !!length && isLength(length) && isIndex(key, length) && 12919 (isArray(object) || isArguments(object)); 12920 } 12921 12922 module.exports = hasPath; 12923 12924 12925 /***/ 12926 }), 12927/* 241 */ 12928/***/ (function (module, exports, __webpack_require__) { 12929 12930 var baseProperty = __webpack_require__(104), 12931 basePropertyDeep = __webpack_require__(242), 12932 isKey = __webpack_require__(59), 12933 toKey = __webpack_require__(21); 12934 12935 /** 12936 * Creates a function that returns the value at `path` of a given object. 12937 * 12938 * @static 12939 * @memberOf _ 12940 * @since 2.4.0 12941 * @category Util 12942 * @param {Array|string} path The path of the property to get. 12943 * @returns {Function} Returns the new accessor function. 12944 * @example 12945 * 12946 * var objects = [ 12947 * { 'a': { 'b': 2 } }, 12948 * { 'a': { 'b': 1 } } 12949 * ]; 12950 * 12951 * _.map(objects, _.property('a.b')); 12952 * // => [2, 1] 12953 * 12954 * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b'); 12955 * // => [1, 2] 12956 */ 12957 function property(path) { 12958 return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path); 12959 } 12960 12961 module.exports = property; 12962 12963 12964 /***/ 12965 }), 12966/* 242 */ 12967/***/ (function (module, exports, __webpack_require__) { 12968 12969 var baseGet = __webpack_require__(58); 12970 12971 /** 12972 * A specialized version of `baseProperty` which supports deep paths. 12973 * 12974 * @private 12975 * @param {Array|string} path The path of the property to get. 12976 * @returns {Function} Returns the new accessor function. 12977 */ 12978 function basePropertyDeep(path) { 12979 return function (object) { 12980 return baseGet(object, path); 12981 }; 12982 } 12983 12984 module.exports = basePropertyDeep; 12985 12986 12987 /***/ 12988 }), 12989/* 243 */ 12990/***/ (function (module, exports, __webpack_require__) { 12991 12992 var baseFindIndex = __webpack_require__(105), 12993 baseIteratee = __webpack_require__(7), 12994 toInteger = __webpack_require__(106); 12995 12996 /* Built-in method references for those with the same name as other `lodash` methods. */ 12997 var nativeMax = Math.max; 12998 12999 /** 13000 * This method is like `_.find` except that it returns the index of the first 13001 * element `predicate` returns truthy for instead of the element itself. 13002 * 13003 * @static 13004 * @memberOf _ 13005 * @since 1.1.0 13006 * @category Array 13007 * @param {Array} array The array to inspect. 13008 * @param {Function} [predicate=_.identity] The function invoked per iteration. 13009 * @param {number} [fromIndex=0] The index to search from. 13010 * @returns {number} Returns the index of the found element, else `-1`. 13011 * @example 13012 * 13013 * var users = [ 13014 * { 'user': 'barney', 'active': false }, 13015 * { 'user': 'fred', 'active': false }, 13016 * { 'user': 'pebbles', 'active': true } 13017 * ]; 13018 * 13019 * _.findIndex(users, function(o) { return o.user == 'barney'; }); 13020 * // => 0 13021 * 13022 * // The `_.matches` iteratee shorthand. 13023 * _.findIndex(users, { 'user': 'fred', 'active': false }); 13024 * // => 1 13025 * 13026 * // The `_.matchesProperty` iteratee shorthand. 13027 * _.findIndex(users, ['active', false]); 13028 * // => 0 13029 * 13030 * // The `_.property` iteratee shorthand. 13031 * _.findIndex(users, 'active'); 13032 * // => 2 13033 */ 13034 function findIndex(array, predicate, fromIndex) { 13035 var length = array == null ? 0 : array.length; 13036 if (!length) { 13037 return -1; 13038 } 13039 var index = fromIndex == null ? 0 : toInteger(fromIndex); 13040 if (index < 0) { 13041 index = nativeMax(length + index, 0); 13042 } 13043 return baseFindIndex(array, baseIteratee(predicate, 3), index); 13044 } 13045 13046 module.exports = findIndex; 13047 13048 13049 /***/ 13050 }), 13051/* 244 */ 13052/***/ (function (module, exports, __webpack_require__) { 13053 13054 var toNumber = __webpack_require__(61); 13055 13056 /** Used as references for various `Number` constants. */ 13057 var INFINITY = 1 / 0, 13058 MAX_INTEGER = 1.7976931348623157e+308;
13059 13060 /** 13061 * Converts `value` to a finite number. 13062 * 13063 * @static 13064 * @memberOf _ 13065 * @since 4.12.0 13066 * @category Lang 13067 * @param {*} value The value to convert. 13068 * @returns {number} Returns the converted number. 13069 * @example 13070 * 13071 * _.toFinite(3.2); 13072 * // => 3.2 13073 * 13074 * _.toFinite(Number.MIN_VALUE); 13075 * // => 5e-324 13076 * 13077 * _.toFinite(Infinity); 13078 * // => 1.7976931348623157e+308 13079 * 13080 * _.toFinite('3.2'); 13081 * // => 3.2 13082 */ 13083 function toFinite(value) { 13084 if (!value) { 13085 return value === 0 ? value : 0; 13086 } 13087 value = toNumber(value); 13088 if (value === INFINITY || value === -INFINITY) { 13089 var sign = (value < 0 ? -1 : 1); 13090 return sign * MAX_INTEGER; 13091 } 13092 return value === value ? value : 0; 13093 } 13094 13095 module.exports = toFinite; 13096 13097 13098 /***/ 13099 }), 13100/* 245 */ 13101/***/ (function (module, exports) { 13102 13103 function _arrayWithoutHoles(arr) { 13104 if (Array.isArray(arr)) { 13105 for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { 13106 arr2[i] = arr[i]; 13107 } 13108 13109 return arr2; 13110 } 13111 } 13112 13113 module.exports = _arrayWithoutHoles; 13114 13115 /***/ 13116 }), 13117/* 246 */ 13118/***/ (function (module, exports) { 13119 13120 function _iterableToArray(iter) { 13121 if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); 13122 } 13123 13124 module.exports = _iterableToArray; 13125 13126 /***/ 13127 }), 13128/* 247 */ 13129/***/ (function (module, exports) { 13130 13131 function _nonIterableSpread() { 13132 throw new TypeError("Invalid attempt to spread non-iterable instance"); 13133 } 13134 13135 module.exports = _nonIterableSpread; 13136 13137 /***/ 13138 }), 13139/* 248 */ 13140/***/ (function (module, exports, __webpack_require__) { 13141 13142 "use strict"; 13143 13144 13145 Object.defineProperty(exports, "__esModule", { 13146 value: true 13147 }); 13148 exports.createElementState = createElementState; 13149 exports.mergeActionState = mergeActionState; 13150 exports.ixElements = void 0; 13151 13152 var _timm = __webpack_require__(19); 13153 13154 var _constants = __webpack_require__(2); 13155 13156 var _constants$IX2EngineC = _constants.IX2EngineConstants, 13157 HTML_ELEMENT = _constants$IX2EngineC.HTML_ELEMENT, 13158 PLAIN_OBJECT = _constants$IX2EngineC.PLAIN_OBJECT, 13159 ABSTRACT_NODE = _constants$IX2EngineC.ABSTRACT_NODE, 13160 CONFIG_X_VALUE = _constants$IX2EngineC.CONFIG_X_VALUE, 13161 CONFIG_Y_VALUE = _constants$IX2EngineC.CONFIG_Y_VALUE, 13162 CONFIG_Z_VALUE = _constants$IX2EngineC.CONFIG_Z_VALUE, 13163 CONFIG_VALUE = _constants$IX2EngineC.CONFIG_VALUE, 13164 CONFIG_X_UNIT = _constants$IX2EngineC.CONFIG_X_UNIT, 13165 CONFIG_Y_UNIT = _constants$IX2EngineC.CONFIG_Y_UNIT, 13166 CONFIG_Z_UNIT = _constants$IX2EngineC.CONFIG_Z_UNIT, 13167 CONFIG_UNIT = _constants$IX2EngineC.CONFIG_UNIT; 13168 var _constants$IX2EngineA = _constants.IX2EngineActionTypes, 13169 IX2_SESSION_STOPPED = _constants$IX2EngineA.IX2_SESSION_STOPPED, 13170 IX2_INSTANCE_ADDED = _constants$IX2EngineA.IX2_INSTANCE_ADDED, 13171 IX2_ELEMENT_STATE_CHANGED = _constants$IX2EngineA.IX2_ELEMENT_STATE_CHANGED; 13172 var initialState = {}; 13173 var refState = 'refState'; 13174 13175 var ixElements = function ixElements() { 13176 var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState; 13177 var action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; 13178 13179 switch (action.type) { 13180 case IX2_SESSION_STOPPED: 13181 { 13182 return initialState; 13183 } 13184 13185 case IX2_INSTANCE_ADDED: 13186 { 13187 var _action$payload = action.payload, 13188 elementId = _action$payload.elementId, 13189 ref = _action$payload.element, 13190 origin = _action$payload.origin, 13191 actionItem = _action$payload.actionItem, 13192 refType = _action$payload.refType; 13193 var actionTypeId = actionItem.actionTypeId; 13194 var newState = state; // Create new ref entry if it doesn't exist 13195 13196 if ((0, _timm.getIn)(newState, [elementId, ref]) !== ref) { 13197 newState = createElementState(newState, ref, refType, elementId, actionItem); 13198 } // Merge origin values into ref state 13199 13200 13201 return mergeActionState(newState, elementId, actionTypeId, origin, actionItem); 13202 } 13203 13204 case IX2_ELEMENT_STATE_CHANGED: 13205 { 13206 var _action$payload2 = action.payload, 13207 _elementId = _action$payload2.elementId, 13208 _actionTypeId = _action$payload2.actionTypeId, 13209 current = _action$payload2.current, 13210 _actionItem = _action$payload2.actionItem; 13211 return mergeActionState(state, _elementId, _actionTypeId, current, _actionItem); 13212 } 13213 13214 default: 13215 { 13216 return state; 13217 } 13218 } 13219 }; 13220 13221 exports.ixElements = ixElements; 13222 13223 function createElementState(state, ref, refType, elementId, actionItem) { 13224 var refId = refType === PLAIN_OBJECT ? (0, _timm.getIn)(actionItem, ['config', 'target', 'objectId']) : null; 13225 return (0, _timm.mergeIn)(state, [elementId], { 13226 id: elementId, 13227 ref: ref, 13228 refId: refId, 13229 refType: refType 13230 }); 13231 } 13232 13233 function mergeActionState(state, elementId, actionTypeId, actionState, // FIXME: weak type is used 13234 actionItem) { 13235 var units = pickUnits(actionItem); 13236 var mergePath = [elementId, refState, actionTypeId]; 13237 return (0, _timm.mergeIn)(state, mergePath, actionState, units); 13238 } 13239 13240 var valueUnitPairs = [[CONFIG_X_VALUE, CONFIG_X_UNIT], [CONFIG_Y_VALUE, CONFIG_Y_UNIT], [CONFIG_Z_VALUE, CONFIG_Z_UNIT], [CONFIG_VALUE, CONFIG_UNIT]]; // FIXME: weak type is used 13241 // eslint-disable-next-line flowtype/no-weak-types 13242 13243 function pickUnits(actionItem) { 13244 var config = actionItem.config; 13245 return valueUnitPairs.reduce(function (result, pair) { 13246 var valueKey = pair[0]; 13247 var unitKey = pair[1]; 13248 var configValue = config[valueKey]; 13249 var configUnit = config[unitKey]; 13250 13251 if (configValue != null && configUnit != null) { 13252 result[unitKey] = configUnit; 13253 } 13254 13255 return result; 13256 }, {}); 13257 } 13258 13259 /***/ 13260 }), 13261/* 249 */ 13262/***/ (function (module, exports, __webpack_require__) { 13263 13264 "use strict"; 13265 13266 13267 Object.defineProperty(exports, "__esModule", { 13268 value: true 13269 }); 13270 exports.clearPlugin = exports.renderPlugin = exports.createPluginInstance = exports.getPluginDestination = exports.getPluginOrigin = exports.getPluginDuration = exports.getPluginConfig = void 0; 13271 /* eslint-env browser */ 13272 // $FlowFixMe 13273 13274 var getPluginConfig = function getPluginConfig(actionItemConfig) { 13275 return actionItemConfig.value; 13276 }; // $FlowFixMe 13277 13278 13279 exports.getPluginConfig = getPluginConfig; 13280 13281 var getPluginDuration = function getPluginDuration(element, actionItem) { 13282 if (actionItem.config.duration !== 'auto') { 13283 return null; 13284 } 13285 13286 var duration = parseFloat(element.getAttribute('data-duration')); 13287 13288 if (duration > 0) { 13289 return duration * 1000; 13290 } 13291 13292 return parseFloat(element.getAttribute('data-default-duration')) * 1000; 13293 }; // $FlowFixMe 13294 13295 13296 exports.getPluginDuration = getPluginDuration; 13297 13298 var getPluginOrigin = function getPluginOrigin(refState) { 13299 return refState || { 13300 value: 0 13301 }; 13302 }; // $FlowFixMe 13303 13304 13305 exports.getPluginOrigin = getPluginOrigin; 13306 13307 var getPluginDestination = function getPluginDestination(actionItemConfig) { 13308 return { 13309 value: actionItemConfig.value 13310 }; 13311 }; // $FlowFixMe 13312 13313 13314 exports.getPluginDestination = getPluginDestination; 13315 13316 var createPluginInstance = function createPluginInstance(element) { 13317 var instance = window.Webflow.require('lottie').createInstance(element); 13318 13319 instance.stop(); 13320 instance.setSubframe(true); 13321 return instance; 13322 }; // $FlowFixMe 13323 13324 13325 exports.createPluginInstance = createPluginInstance; 13326 13327 var renderPlugin = function renderPlugin(pluginInstance, refState, actionItem) { 13328 if (!pluginInstance) { 13329 return; 13330 } 13331 13332 var percent = refState[actionItem.actionTypeId].value / 100; 13333 pluginInstance.goToFrame(pluginInstance.frames * percent); 13334 }; // $FlowFixMe 13335 13336 13337 exports.renderPlugin = renderPlugin; 13338 13339 var clearPlugin = function clearPlugin(element) { 13340 var instance = window.Webflow.require('lottie').createInstance(element); 13341 13342 instance.stop(); 13343 }; 13344 13345 exports.clearPlugin = clearPlugin; 13346 13347 /***/ 13348 }), 13349/* 250 */ 13350/***/ (function (module, exports, __webpack_require__) { 13351 13352 "use strict"; 13353 13354 13355 var _interopRequireDefault2 = __webpack_require__(0); 13356 13357 var _typeof2 = _interopRequireDefault2(__webpack_require__(13)); 13358 13359 var _defineProperty2 = _interopRequireDefault2(__webpack_require__(27)); 13360 13361 var _Object$freeze, _Object$freeze2, _transformDefaults; 13362 13363 var _interopRequireDefault = __webpack_require__(0); 13364 13365 Object.defineProperty(exports, "__esModule", { 13366 value: true 13367 }); 13368 exports.getInstanceId = getInstanceId; 13369 exports.getElementId = getElementId; 13370 exports.reifyState = reifyState; 13371 exports.observeStore = observeStore; 13372 exports.getAffectedElements = getAffectedElements; 13373 exports.getComputedStyle = getComputedStyle; 13374 exports.getInstanceOrigin = getInstanceOrigin; 13375 exports.getDestinationValues = getDestinationValues; 13376 exports.getRenderType = getRenderType; 13377 exports.getStyleProp = getStyleProp; 13378 exports.renderHTMLElement = renderHTMLElement; 13379 exports.clearAllStyles = clearAllStyles; 13380 exports.cleanupHTMLElement = cleanupHTMLElement; 13381 exports.getMaxDurationItemIndex = getMaxDurationItemIndex; 13382 exports.getActionListProgress = getActionListProgress; 13383 exports.reduceListToGroup = reduceListToGroup; 13384 exports.shouldNamespaceEventParameter = shouldNamespaceEventParameter; 13385 exports.getNamespacedParameterId = getNamespacedParameterId; 13386 exports.shouldAllowMediaQuery = shouldAllowMediaQuery; 13387 exports.mediaQueriesEqual = mediaQueriesEqual; 13388 exports.stringifyTarget = stringifyTarget; 13389 exports.getItemConfigByKey = void 0; 13390 13391 var _defaultTo = _interopRequireDefault(__webpack_require__(251)); 13392 13393 var _reduce = _interopRequireDefault(__webpack_require__(252)); 13394 13395 var _findLast = _interopRequireDefault(__webpack_require__(258)); 13396 13397 var _timm = __webpack_require__(19); 13398 13399 var _shallowEqual = _interopRequireDefault(__webpack_require__(114)); 13400 13401 var _constants = __webpack_require__(2); 13402 13403 var _IX2EasingUtils = __webpack_require__(109); 13404 13405 var _IX2VanillaPlugins = __webpack_require__(111); 13406 13407 var _IX2BrowserSupport = __webpack_require__(45); 13408 /* eslint-env browser */ 13409 13410 13411 var _constants$IX2EngineC = _constants.IX2EngineConstants, 13412 BACKGROUND = _constants$IX2EngineC.BACKGROUND, 13413 TRANSFORM = _constants$IX2EngineC.TRANSFORM, 13414 TRANSLATE_3D = _constants$IX2EngineC.TRANSLATE_3D, 13415 SCALE_3D = _constants$IX2EngineC.SCALE_3D, 13416 ROTATE_X = _constants$IX2EngineC.ROTATE_X, 13417 ROTATE_Y = _constants$IX2EngineC.ROTATE_Y, 13418 ROTATE_Z = _constants$IX2EngineC.ROTATE_Z, 13419 SKEW = _constants$IX2EngineC.SKEW, 13420 PRESERVE_3D = _constants$IX2EngineC.PRESERVE_3D, 13421 FLEX = _constants$IX2EngineC.FLEX, 13422 OPACITY = _constants$IX2EngineC.OPACITY, 13423 FILTER = _constants$IX2EngineC.FILTER, 13424 WIDTH = _constants$IX2EngineC.WIDTH,
13425 HEIGHT = _constants$IX2EngineC.HEIGHT, 13426 BACKGROUND_COLOR = _constants$IX2EngineC.BACKGROUND_COLOR, 13427 BORDER_COLOR = _constants$IX2EngineC.BORDER_COLOR, 13428 COLOR = _constants$IX2EngineC.COLOR, 13429 CHILDREN = _constants$IX2EngineC.CHILDREN, 13430 IMMEDIATE_CHILDREN = _constants$IX2EngineC.IMMEDIATE_CHILDREN, 13431 SIBLINGS = _constants$IX2EngineC.SIBLINGS, 13432 PARENT = _constants$IX2EngineC.PARENT, 13433 DISPLAY = _constants$IX2EngineC.DISPLAY, 13434 WILL_CHANGE = _constants$IX2EngineC.WILL_CHANGE, 13435 AUTO = _constants$IX2EngineC.AUTO, 13436 COMMA_DELIMITER = _constants$IX2EngineC.COMMA_DELIMITER, 13437 COLON_DELIMITER = _constants$IX2EngineC.COLON_DELIMITER, 13438 BAR_DELIMITER = _constants$IX2EngineC.BAR_DELIMITER, 13439 RENDER_TRANSFORM = _constants$IX2EngineC.RENDER_TRANSFORM, 13440 RENDER_GENERAL = _constants$IX2EngineC.RENDER_GENERAL, 13441 RENDER_STYLE = _constants$IX2EngineC.RENDER_STYLE, 13442 RENDER_PLUGIN = _constants$IX2EngineC.RENDER_PLUGIN; 13443 var _constants$ActionType = _constants.ActionTypeConsts, 13444 TRANSFORM_MOVE = _constants$ActionType.TRANSFORM_MOVE, 13445 TRANSFORM_SCALE = _constants$ActionType.TRANSFORM_SCALE, 13446 TRANSFORM_ROTATE = _constants$ActionType.TRANSFORM_ROTATE, 13447 TRANSFORM_SKEW = _constants$ActionType.TRANSFORM_SKEW, 13448 STYLE_OPACITY = _constants$ActionType.STYLE_OPACITY, 13449 STYLE_FILTER = _constants$ActionType.STYLE_FILTER, 13450 STYLE_SIZE = _constants$ActionType.STYLE_SIZE,
13451 STYLE_BACKGROUND_COLOR = _constants$ActionType.STYLE_BACKGROUND_COLOR, 13452 STYLE_BORDER = _constants$ActionType.STYLE_BORDER, 13453 STYLE_TEXT_COLOR = _constants$ActionType.STYLE_TEXT_COLOR, 13454 GENERAL_DISPLAY = _constants$ActionType.GENERAL_DISPLAY; 13455 var OBJECT_VALUE = 'OBJECT_VALUE'; 13456 13457 var trim = function trim(v) { 13458 return v.trim(); 13459 }; 13460 13461 var colorStyleProps = Object.freeze((_Object$freeze = {}, (0, _defineProperty2["default"])(_Object$freeze, STYLE_BACKGROUND_COLOR, BACKGROUND_COLOR), (0, _defineProperty2["default"])(_Object$freeze, STYLE_BORDER, BORDER_COLOR), (0, _defineProperty2["default"])(_Object$freeze, STYLE_TEXT_COLOR, COLOR), _Object$freeze)); 13462 var willChangeProps = Object.freeze((_Object$freeze2 = {}, (0, _defineProperty2["default"])(_Object$freeze2, _IX2BrowserSupport.TRANSFORM_PREFIXED, TRANSFORM), (0, _defineProperty2["default"])(_Object$freeze2, BACKGROUND_COLOR, BACKGROUND), (0, _defineProperty2["default"])(_Object$freeze2, OPACITY, OPACITY), (0, _defineProperty2["default"])(_Object$freeze2, FILTER, FILTER), (0, _defineProperty2["default"])(_Object$freeze2, WIDTH, WIDTH), (0, _defineProperty2["default"])(_Object$freeze2, HEIGHT, HEIGHT), _Object$freeze2)); 13463 var objectCache = {}; 13464 var instanceCount = 1; 13465 13466 function getInstanceId() { 13467 return 'i' + instanceCount++; 13468 } 13469 13470 var elementCount = 1; // $FlowFixMe 13471 13472 function getElementId(ixElements, ref) { 13473 // TODO: optimize element lookup 13474 for (var key in ixElements) { 13475 var ixEl = ixElements[key]; 13476 13477 if (ixEl && ixEl.ref === ref) { 13478 return ixEl.id; 13479 } 13480 } 13481 13482 return 'e' + elementCount++; 13483 } // $FlowFixMe 13484 13485 13486 function reifyState() { 13487 var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, 13488 events = _ref2.events, 13489 actionLists = _ref2.actionLists, 13490 site = _ref2.site; 13491 13492 var eventTypeMap = (0, _reduce["default"])(events, function (result, event) { 13493 var eventTypeId = event.eventTypeId; 13494 13495 if (!result[eventTypeId]) { 13496 result[eventTypeId] = {}; 13497 } 13498 13499 result[eventTypeId][event.id] = event; 13500 return result; 13501 }, {}); 13502 var mediaQueries = site && site.mediaQueries; 13503 var mediaQueryKeys = []; 13504 13505 if (mediaQueries) { 13506 mediaQueryKeys = mediaQueries.map(function (mq) { 13507 return mq.key; 13508 }); 13509 } else { 13510 mediaQueries = []; 13511 console.warn("IX2 missing mediaQueries in site data"); 13512 } 13513 13514 return { 13515 ixData: { 13516 events: events, 13517 actionLists: actionLists, 13518 eventTypeMap: eventTypeMap, 13519 mediaQueries: mediaQueries, 13520 mediaQueryKeys: mediaQueryKeys 13521 } 13522 }; 13523 } 13524 13525 var strictEqual = function strictEqual(a, b) { 13526 return a === b; 13527 }; // $FlowFixMe 13528 13529 13530 function observeStore(_ref3) { 13531 var store = _ref3.store, 13532 select = _ref3.select, 13533 onChange = _ref3.onChange, 13534 _ref3$comparator = _ref3.comparator, 13535 comparator = _ref3$comparator === void 0 ? strictEqual : _ref3$comparator; 13536 var getState = store.getState, 13537 subscribe = store.subscribe; 13538 var unsubscribe = subscribe(handleChange); 13539 var currentState = select(getState()); 13540 13541 function handleChange() { 13542 var nextState = select(getState()); 13543 13544 if (nextState == null) { 13545 unsubscribe(); 13546 return; 13547 } 13548 13549 if (!comparator(nextState, currentState)) { 13550 currentState = nextState; 13551 onChange(currentState, store); 13552 } 13553 } 13554 13555 return unsubscribe; 13556 } 13557 13558 function normalizeTarget(target) { 13559 var type = (0, _typeof2["default"])(target); 13560 13561 if (type === 'string') { 13562 return { 13563 id: target 13564 }; 13565 } else if (target != null && type === 'object') { 13566 var id = target.id, 13567 objectId = target.objectId, 13568 selector = target.selector, 13569 selectorGuids = target.selectorGuids, 13570 appliesTo = target.appliesTo, 13571 useEventTarget = target.useEventTarget; 13572 return { 13573 id: id, 13574 objectId: objectId, 13575 selector: selector, 13576 selectorGuids: selectorGuids, 13577 appliesTo: appliesTo, 13578 useEventTarget: useEventTarget 13579 }; 13580 } 13581 13582 return {}; 13583 } 13584 13585 function getAffectedElements(_ref4) { 13586 var config = _ref4.config, 13587 event = _ref4.event, 13588 eventTarget = _ref4.eventTarget, 13589 elementRoot = _ref4.elementRoot, 13590 elementApi = _ref4.elementApi; 13591 13592 var _ref, _event$action, _event$action$config; 13593 13594 if (!elementApi) { 13595 throw new Error('IX2 missing elementApi'); 13596 } 13597 13598 var targets = config.targets; 13599 13600 if (Array.isArray(targets) && targets.length > 0) { 13601 return targets.reduce(function (accumulator, target) { 13602 return accumulator.concat(getAffectedElements({ 13603 config: { 13604 target: target 13605 }, 13606 event: event, 13607 eventTarget: eventTarget, 13608 elementRoot: elementRoot, 13609 elementApi: elementApi 13610 })); 13611 }, []); 13612 } 13613 13614 var getValidDocument = elementApi.getValidDocument, 13615 getQuerySelector = elementApi.getQuerySelector, 13616 queryDocument = elementApi.queryDocument, 13617 getChildElements = elementApi.getChildElements,
13618 getSiblingElements = elementApi.getSiblingElements, 13619 matchSelector = elementApi.matchSelector, 13620 elementContains = elementApi.elementContains, 13621 isSiblingNode = elementApi.isSiblingNode; 13622 var target = config.target; 13623 13624 if (!target) { 13625 return []; 13626 } 13627 13628 var _normalizeTarget = normalizeTarget(target), 13629 id = _normalizeTarget.id, 13630 objectId = _normalizeTarget.objectId, 13631 selector = _normalizeTarget.selector, 13632 selectorGuids = _normalizeTarget.selectorGuids, 13633 appliesTo = _normalizeTarget.appliesTo, 13634 useEventTarget = _normalizeTarget.useEventTarget; 13635 13636 if (objectId) { 13637 var ref = objectCache[objectId] || (objectCache[objectId] = {}); 13638 return [ref]; 13639 } 13640 13641 if (appliesTo === _constants.EventAppliesTo.PAGE) { 13642 var doc = getValidDocument(id); 13643 return doc ? [doc] : []; 13644 } 13645 13646 var overrides = (_ref = event === null || event === void 0 ? void 0 : (_event$action = event.action) === null || _event$action === void 0 ? void 0 : (_event$action$config = _event$action.config) === null || _event$action$config === void 0 ? void 0 : _event$action$config.affectedElements) !== null && _ref !== void 0 ? _ref : {}; 13647 var override = overrides[id || selector] || {}; 13648 var validOverride = Boolean(override.id || override.selector); 13649 var limitAffectedElements; 13650 var baseSelector; 13651 var finalSelector; 13652 var eventTargetSelector = event && getQuerySelector(normalizeTarget(event.target)); 13653 13654 if (validOverride) { 13655 limitAffectedElements = override.limitAffectedElements; 13656 baseSelector = eventTargetSelector; 13657 finalSelector = getQuerySelector(override); 13658 } else { 13659 // pass in selectorGuids as well for server-side rendering. 13660 baseSelector = finalSelector = getQuerySelector({ 13661 id: id, 13662 selector: selector, 13663 selectorGuids: selectorGuids 13664 }); 13665 } 13666 13667 if (event && useEventTarget) { 13668 // eventTarget is not defined when this function is called in a clear request, so find 13669 // all target elements associated with the event data, and return affected elements. 13670 var eventTargets = eventTarget && (finalSelector || useEventTarget === true) ? [eventTarget] : queryDocument(eventTargetSelector); 13671 13672 if (finalSelector) { 13673 if (useEventTarget === PARENT) { 13674 return queryDocument(finalSelector).filter(function (parentElement) { 13675 return eventTargets.some(function (targetElement) { 13676 return elementContains(parentElement, targetElement); 13677 }); 13678 }); 13679 } 13680 13681 if (useEventTarget === CHILDREN) { 13682 return queryDocument(finalSelector).filter(function (childElement) { 13683 return eventTargets.some(function (targetElement) { 13684 return elementContains(targetElement, childElement); 13685 }); 13686 }); 13687 } 13688 13689 if (useEventTarget === SIBLINGS) { 13690 return queryDocument(finalSelector).filter(function (siblingElement) { 13691 return eventTargets.some(function (targetElement) { 13692 return isSiblingNode(targetElement, siblingElement); 13693 }); 13694 }); 13695 } 13696 } 13697 13698 return eventTargets; 13699 } 13700 13701 if (baseSelector == null || finalSelector == null) { 13702 return []; 13703 } 13704 13705 if (_IX2BrowserSupport.IS_BROWSER_ENV && elementRoot) { 13706 return queryDocument(finalSelector).filter(function (element) { 13707 return elementRoot.contains(element); 13708 }); 13709 } 13710 13711 if (limitAffectedElements === CHILDREN) { 13712 return queryDocument(baseSelector, finalSelector); 13713 } else if (limitAffectedElements === IMMEDIATE_CHILDREN) { 13714 return getChildElements(queryDocument(baseSelector)).filter(matchSelector(finalSelector)); 13715 } else if (limitAffectedElements === SIBLINGS) { 13716 return getSiblingElements(queryDocument(baseSelector)).filter(matchSelector(finalSelector)); 13717 } else { 13718 return queryDocument(finalSelector); 13719 } 13720 } // $FlowFixMe 13721 13722 13723 function getComputedStyle(_ref5) { 13724 var element = _ref5.element, 13725 actionItem = _ref5.actionItem; 13726 13727 if (!_IX2BrowserSupport.IS_BROWSER_ENV) { 13728 return {}; 13729 } 13730 13731 var actionTypeId = actionItem.actionTypeId; 13732 13733 switch (actionTypeId) { 13734 case STYLE_SIZE: 13735 case STYLE_BACKGROUND_COLOR: 13736 case STYLE_BORDER: 13737 case STYLE_TEXT_COLOR: 13738 case GENERAL_DISPLAY: 13739 return window.getComputedStyle(element); 13740 13741 default: 13742 return {}; 13743 } 13744 } 13745 13746 var pxValueRegex = /px/; 13747 13748 var getFilterDefaults = function getFilterDefaults(actionState, filters) { 13749 return filters.reduce(function (result, filter) { 13750 if (result[filter.type] == null) { 13751 result[filter.type] = filterDefaults[filter.type]; 13752 } 13753 13754 return result; 13755 }, actionState || {}); 13756 }; 13757 13758 function getInstanceOrigin( // $FlowFixMe 13759 element) { 13760 var refState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; 13761 var computedStyle = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; 13762 var // $FlowFixMe 13763 actionItem = arguments.length > 3 ? arguments[3] : undefined; 13764 var // $FlowFixMe 13765 elementApi = arguments.length > 4 ? arguments[4] : undefined;
13766 var getStyle = elementApi.getStyle; 13767 var actionTypeId = actionItem.actionTypeId, 13768 config = actionItem.config; 13769 13770 if ((0, _IX2VanillaPlugins.isPluginType)(actionTypeId)) { 13771 // $FlowFixMe 13772 return (0, _IX2VanillaPlugins.getPluginOrigin)(actionTypeId)(refState[actionTypeId]); 13773 } 13774 13775 switch (actionTypeId) { 13776 case TRANSFORM_MOVE: 13777 case TRANSFORM_SCALE: 13778 case TRANSFORM_ROTATE: 13779 case TRANSFORM_SKEW: 13780 return refState[actionTypeId] || transformDefaults[actionTypeId]; 13781 13782 case STYLE_FILTER: 13783 return getFilterDefaults(refState[actionTypeId], actionItem.config.filters); 13784 13785 case STYLE_OPACITY: 13786 return { 13787 value: (0, _defaultTo["default"])(parseFloat(getStyle(element, OPACITY)), 1.0) 13788 }; 13789 13790 case STYLE_SIZE: 13791 { 13792 var inlineWidth = getStyle(element, WIDTH); 13793 var inlineHeight = getStyle(element, HEIGHT); 13794 var widthValue; 13795 var heightValue; // When destination unit is 'AUTO', ensure origin values are in px 13796 13797 if (config.widthUnit === AUTO) { 13798 widthValue = pxValueRegex.test(inlineWidth) ? parseFloat(inlineWidth) : parseFloat(computedStyle.width); 13799 } else { 13800 widthValue = (0, _defaultTo["default"])(parseFloat(inlineWidth), parseFloat(computedStyle.width)); 13801 } 13802 13803 if (config.heightUnit === AUTO) { 13804 heightValue = pxValueRegex.test(inlineHeight) ? parseFloat(inlineHeight) : parseFloat(computedStyle.height); 13805 } else { 13806 heightValue = (0, _defaultTo["default"])(parseFloat(inlineHeight), parseFloat(computedStyle.height)); 13807 } 13808 13809 return { 13810 widthValue: widthValue, 13811 heightValue: heightValue 13812 }; 13813 } 13814 13815 case STYLE_BACKGROUND_COLOR: 13816 case STYLE_BORDER: 13817 case STYLE_TEXT_COLOR: 13818 return parseColor({ 13819 element: element, 13820 actionTypeId: actionTypeId, 13821 computedStyle: computedStyle, 13822 getStyle: getStyle 13823 }); 13824 13825 case GENERAL_DISPLAY: 13826 return { 13827 value: (0, _defaultTo["default"])(getStyle(element, DISPLAY), computedStyle.display) 13828 }; 13829 13830 case OBJECT_VALUE: 13831 return refState[actionTypeId] || { 13832 value: 0 13833 }; 13834 13835 default: 13836 return; 13837 } 13838 } 13839 13840 var reduceFilters = function reduceFilters(result, filter) { 13841 if (filter) { 13842 result[filter.type] = filter.value || 0; 13843 } 13844 13845 return result; 13846 }; // $FlowFixMe 13847 13848 13849 var getItemConfigByKey = function getItemConfigByKey(actionTypeId, key, config) { 13850 if ((0, _IX2VanillaPlugins.isPluginType)(actionTypeId)) { 13851 // $FlowFixMe 13852 return (0, _IX2VanillaPlugins.getPluginConfig)(actionTypeId)(config, key); 13853 } 13854 13855 switch (actionTypeId) { 13856 case STYLE_FILTER: 13857 { 13858 var filter = (0, _findLast["default"])(config.filters, function (_ref6) { 13859 var type = _ref6.type; 13860 return type === key; 13861 }); 13862 return filter ? filter.value : 0; 13863 } 13864 13865 default: 13866 return config[key]; 13867 } 13868 }; // $FlowFixMe 13869 13870 13871 exports.getItemConfigByKey = getItemConfigByKey; 13872 13873 function getDestinationValues(_ref7) { 13874 var element = _ref7.element, 13875 actionItem = _ref7.actionItem, 13876 elementApi = _ref7.elementApi; 13877 var actionTypeId = actionItem.actionTypeId; 13878 13879 if ((0, _IX2VanillaPlugins.isPluginType)(actionTypeId)) { 13880 // $FlowFixMe 13881 return (0, _IX2VanillaPlugins.getPluginDestination)(actionTypeId)(actionItem.config); 13882 } 13883 13884 switch (actionTypeId) { 13885 case TRANSFORM_MOVE: 13886 case TRANSFORM_SCALE: 13887 case TRANSFORM_ROTATE: 13888 case TRANSFORM_SKEW: 13889 { 13890 var _actionItem$config = actionItem.config, 13891 xValue = _actionItem$config.xValue, 13892 yValue = _actionItem$config.yValue, 13893 zValue = _actionItem$config.zValue; 13894 return { 13895 xValue: xValue, 13896 yValue: yValue, 13897 zValue: zValue 13898 }; 13899 } 13900 13901 case STYLE_SIZE: 13902 {
13903 var getStyle = elementApi.getStyle, 13904 setStyle = elementApi.setStyle, 13905 getProperty = elementApi.getProperty; 13906 var _actionItem$config2 = actionItem.config, 13907 widthUnit = _actionItem$config2.widthUnit, 13908 heightUnit = _actionItem$config2.heightUnit; 13909 var _actionItem$config3 = actionItem.config, 13910 widthValue = _actionItem$config3.widthValue, 13911 heightValue = _actionItem$config3.heightValue; 13912 13913 if (!_IX2BrowserSupport.IS_BROWSER_ENV) { 13914 return { 13915 widthValue: widthValue, 13916 heightValue: heightValue 13917 }; 13918 } 13919 13920 if (widthUnit === AUTO) { 13921 var temp = getStyle(element, WIDTH); 13922 setStyle(element, WIDTH, ''); 13923 widthValue = getProperty(element, 'offsetWidth'); 13924 setStyle(element, WIDTH, temp); 13925 } 13926 13927 if (heightUnit === AUTO) { 13928 var _temp = getStyle(element, HEIGHT); 13929 13930 setStyle(element, HEIGHT, ''); 13931 heightValue = getProperty(element, 'offsetHeight'); 13932 setStyle(element, HEIGHT, _temp); 13933 } 13934 13935 return { 13936 widthValue: widthValue, 13937 heightValue: heightValue 13938 }; 13939 } 13940 13941 case STYLE_BACKGROUND_COLOR: 13942 case STYLE_BORDER: 13943 case STYLE_TEXT_COLOR: 13944 { 13945 var _actionItem$config4 = actionItem.config, 13946 rValue = _actionItem$config4.rValue, 13947 gValue = _actionItem$config4.gValue, 13948 bValue = _actionItem$config4.bValue, 13949 aValue = _actionItem$config4.aValue; 13950 return { 13951 rValue: rValue, 13952 gValue: gValue, 13953 bValue: bValue, 13954 aValue: aValue 13955 }; 13956 } 13957 13958 case STYLE_FILTER: 13959 { 13960 return actionItem.config.filters.reduce(reduceFilters, {}); 13961 } 13962 13963 default: 13964 { 13965 var value = actionItem.config.value; 13966 return { 13967 value: value 13968 }; 13969 } 13970 } 13971 } // $FlowFixMe 13972 13973 13974 function getRenderType(actionTypeId) { 13975 if (/^TRANSFORM_/.test(actionTypeId)) { 13976 return RENDER_TRANSFORM; 13977 } 13978 13979 if (/^STYLE_/.test(actionTypeId)) { 13980 return RENDER_STYLE; 13981 } 13982 13983 if (/^GENERAL_/.test(actionTypeId)) { 13984 return RENDER_GENERAL; 13985 } 13986 13987 if (/^PLUGIN_/.test(actionTypeId)) { 13988 return RENDER_PLUGIN; 13989 } 13990 } // $FlowFixMe 13991 13992 13993 function getStyleProp(renderType, actionTypeId) { 13994 return renderType === RENDER_STYLE ? actionTypeId.replace('STYLE_', '').toLowerCase() : null; 13995 } 13996 13997 function renderHTMLElement( // $FlowFixMe 13998 element, // $FlowFixMe 13999 refState, // $FlowFixMe 14000 actionState, // $FlowFixMe 14001 eventId, // $FlowFixMe 14002 actionItem, // $FlowFixMe 14003 styleProp, // $FlowFixMe 14004 elementApi, // $FlowFixMe 14005 renderType, // $FlowFixMe 14006 pluginInstance) { 14007 switch (renderType) { 14008 case RENDER_TRANSFORM: 14009 { 14010 return renderTransform(element, refState, actionState, actionItem, elementApi); 14011 } 14012 14013 case RENDER_STYLE: 14014 { 14015 return renderStyle(element, refState, actionState, actionItem, styleProp, elementApi); 14016 } 14017 14018 case RENDER_GENERAL: 14019 { 14020 return renderGeneral(element, actionItem, elementApi); 14021 } 14022 14023 case RENDER_PLUGIN: 14024 { 14025 var actionTypeId = actionItem.actionTypeId; 14026 14027 if ((0, _IX2VanillaPlugins.isPluginType)(actionTypeId)) { 14028 // $FlowFixMe 14029 return (0, _IX2VanillaPlugins.renderPlugin)(actionTypeId)(pluginInstance, refState, actionItem); 14030 } 14031 } 14032 } 14033 } 14034 14035 var transformDefaults = (_transformDefaults = {}, (0, _defineProperty2["default"])(_transformDefaults, TRANSFORM_MOVE, Object.freeze({ 14036 xValue: 0, 14037 yValue: 0, 14038 zValue: 0 14039 })), (0, _defineProperty2["default"])(_transformDefaults, TRANSFORM_SCALE, Object.freeze({ 14040 xValue: 1, 14041 yValue: 1, 14042 zValue: 1 14043 })), (0, _defineProperty2["default"])(_transformDefaults, TRANSFORM_ROTATE, Object.freeze({ 14044 xValue: 0, 14045 yValue: 0, 14046 zValue: 0 14047 })), (0, _defineProperty2["default"])(_transformDefaults, TRANSFORM_SKEW, Object.freeze({ 14048 xValue: 0, 14049 yValue: 0 14050 })), _transformDefaults); 14051 var filterDefaults = Object.freeze({ 14052 blur: 0, 14053 'hue-rotate': 0, 14054 invert: 0, 14055 grayscale: 0, 14056 saturate: 100, 14057 sepia: 0, 14058 contrast: 100, 14059 brightness: 100 14060 }); 14061 14062 var getFilterUnit = function getFilterUnit(filterType, actionItemConfig) { 14063 var filter = (0, _findLast["default"])(actionItemConfig.filters, function (_ref8) { 14064 var type = _ref8.type; 14065 return type === filterType; 14066 }); 14067 14068 if (filter && filter.unit) { 14069 return filter.unit; 14070 } 14071 14072 switch (filterType) { 14073 case 'blur': 14074 return 'px'; 14075 14076 case 'hue-rotate': 14077 return 'deg'; 14078 14079 default: 14080 return '%'; 14081 } 14082 }; 14083 14084 var transformKeys = Object.keys(transformDefaults); 14085 14086 function renderTransform(element, refState, actionState, actionItem, elementApi) { 14087 var newTransform = transformKeys.map(function (actionTypeId) { 14088 var defaults = transformDefaults[actionTypeId]; 14089 14090 var _ref9 = refState[actionTypeId] || {}, 14091 _ref9$xValue = _ref9.xValue, 14092 xValue = _ref9$xValue === void 0 ? defaults.xValue : _ref9$xValue, 14093 _ref9$yValue = _ref9.yValue, 14094 yValue = _ref9$yValue === void 0 ? defaults.yValue : _ref9$yValue, 14095 _ref9$zValue = _ref9.zValue, 14096 zValue = _ref9$zValue === void 0 ? defaults.zValue : _ref9$zValue, 14097 _ref9$xUnit = _ref9.xUnit, 14098 xUnit = _ref9$xUnit === void 0 ? '' : _ref9$xUnit, 14099 _ref9$yUnit = _ref9.yUnit, 14100 yUnit = _ref9$yUnit === void 0 ? '' : _ref9$yUnit, 14101 _ref9$zUnit = _ref9.zUnit, 14102 zUnit = _ref9$zUnit === void 0 ? '' : _ref9$zUnit; 14103 14104 switch (actionTypeId) { 14105 case TRANSFORM_MOVE: 14106 return "".concat(TRANSLATE_3D, "(").concat(xValue).concat(xUnit, ", ").concat(yValue).concat(yUnit, ", ").concat(zValue).concat(zUnit, ")"); 14107 14108 case TRANSFORM_SCALE:
14109 return "".concat(SCALE_3D, "(").concat(xValue).concat(xUnit, ", ").concat(yValue).concat(yUnit, ", ").concat(zValue).concat(zUnit, ")"); 14110 14111 case TRANSFORM_ROTATE: 14112 return "".concat(ROTATE_X, "(").concat(xValue).concat(xUnit, ") ").concat(ROTATE_Y, "(").concat(yValue).concat(yUnit, ") ").concat(ROTATE_Z, "(").concat(zValue).concat(zUnit, ")"); 14113 14114 case TRANSFORM_SKEW: 14115 return "".concat(SKEW, "(").concat(xValue).concat(xUnit, ", ").concat(yValue).concat(yUnit, ")"); 14116 14117 default: 14118 return ''; 14119 } 14120 }).join(' '); 14121 var setStyle = elementApi.setStyle; 14122 addWillChange(element, _IX2BrowserSupport.TRANSFORM_PREFIXED, elementApi); 14123 setStyle(element, _IX2BrowserSupport.TRANSFORM_PREFIXED, newTransform); // Set transform-style: preserve-3d 14124 14125 if (hasDefined3dTransform(actionItem, actionState)) { 14126 setStyle(element, _IX2BrowserSupport.TRANSFORM_STYLE_PREFIXED, PRESERVE_3D); 14127 } 14128 } 14129 14130 function renderFilter(element, actionState, actionItemConfig, elementApi) { 14131 var filterValue = (0, _reduce["default"])(actionState, function (result, value, type) { 14132 return "".concat(result, " ").concat(type, "(").concat(value).concat(getFilterUnit(type, actionItemConfig), ")"); 14133 }, ''); 14134 var setStyle = elementApi.setStyle; 14135 addWillChange(element, FILTER, elementApi); 14136 setStyle(element, FILTER, filterValue); 14137 } 14138 14139 function hasDefined3dTransform(_ref10, _ref11) { 14140 var actionTypeId = _ref10.actionTypeId; 14141 var xValue = _ref11.xValue, 14142 yValue = _ref11.yValue, 14143 zValue = _ref11.zValue; 14144 // TRANSLATE_Z 14145 return actionTypeId === TRANSFORM_MOVE && zValue !== undefined || // SCALE_Z 14146 actionTypeId === TRANSFORM_SCALE && zValue !== undefined || // ROTATE_X or ROTATE_Y 14147 actionTypeId === TRANSFORM_ROTATE && (xValue !== undefined || yValue !== undefined); 14148 } 14149 14150 var paramCapture = '\\(([^)]+)\\)'; 14151 var rgbValidRegex = /^rgb/; 14152 var rgbMatchRegex = RegExp("rgba?".concat(paramCapture)); 14153 14154 function getFirstMatch(regex, value) { 14155 var match = regex.exec(value); 14156 return match ? match[1] : ''; 14157 } 14158 14159 function parseColor(_ref12) { 14160 var element = _ref12.element, 14161 actionTypeId = _ref12.actionTypeId, 14162 computedStyle = _ref12.computedStyle, 14163 getStyle = _ref12.getStyle; 14164 var prop = colorStyleProps[actionTypeId]; 14165 var inlineValue = getStyle(element, prop); 14166 var value = rgbValidRegex.test(inlineValue) ? inlineValue : computedStyle[prop]; 14167 var matches = getFirstMatch(rgbMatchRegex, value).split(COMMA_DELIMITER); 14168 return { 14169 rValue: (0, _defaultTo["default"])(parseInt(matches[0], 10), 255), 14170 gValue: (0, _defaultTo["default"])(parseInt(matches[1], 10), 255), 14171 bValue: (0, _defaultTo["default"])(parseInt(matches[2], 10), 255), 14172 aValue: (0, _defaultTo["default"])(parseFloat(matches[3]), 1) 14173 }; 14174 } 14175
14176 function renderStyle(element, refState, actionState, actionItem, styleProp, elementApi) { 14177 var setStyle = elementApi.setStyle; 14178 var actionTypeId = actionItem.actionTypeId, 14179 config = actionItem.config; 14180 14181 switch (actionTypeId) { 14182 case STYLE_SIZE: 14183 { 14184 var _actionItem$config5 = actionItem.config, 14185 _actionItem$config5$w = _actionItem$config5.widthUnit, 14186 widthUnit = _actionItem$config5$w === void 0 ? '' : _actionItem$config5$w, 14187 _actionItem$config5$h = _actionItem$config5.heightUnit, 14188 heightUnit = _actionItem$config5$h === void 0 ? '' : _actionItem$config5$h; 14189 var widthValue = actionState.widthValue, 14190 heightValue = actionState.heightValue; 14191 14192 if (widthValue !== undefined) { 14193 if (widthUnit === AUTO) { 14194 widthUnit = 'px'; 14195 } 14196 14197 addWillChange(element, WIDTH, elementApi); 14198 setStyle(element, WIDTH, widthValue + widthUnit); 14199 } 14200 14201 if (heightValue !== undefined) { 14202 if (heightUnit === AUTO) { 14203 heightUnit = 'px'; 14204 } 14205 14206 addWillChange(element, HEIGHT, elementApi); 14207 setStyle(element, HEIGHT, heightValue + heightUnit); 14208 } 14209 14210 break; 14211 } 14212 14213 case STYLE_FILTER: 14214 { 14215 renderFilter(element, actionState, config, elementApi); 14216 break; 14217 } 14218 14219 case STYLE_BACKGROUND_COLOR: 14220 case STYLE_BORDER: 14221 case STYLE_TEXT_COLOR: 14222 { 14223 var prop = colorStyleProps[actionTypeId]; 14224 var rValue = Math.round(actionState.rValue); 14225 var gValue = Math.round(actionState.gValue); 14226 var bValue = Math.round(actionState.bValue); 14227 var aValue = actionState.aValue; 14228 addWillChange(element, prop, elementApi); 14229 setStyle(element, prop, aValue >= 1 ? "rgb(".concat(rValue, ",").concat(gValue, ",").concat(bValue, ")") : "rgba(".concat(rValue, ",").concat(gValue, ",").concat(bValue, ",").concat(aValue, ")")); 14230 break; 14231 } 14232 14233 default: 14234 { 14235 var _config$unit = config.unit, 14236 unit = _config$unit === void 0 ? '' : _config$unit; 14237 addWillChange(element, styleProp, elementApi); 14238 setStyle(element, styleProp, actionState.value + unit); 14239 break; 14240 } 14241 } 14242 } 14243 14244 function renderGeneral(element, actionItem, elementApi) { 14245 var setStyle = elementApi.setStyle; 14246 14247 switch (actionItem.actionTypeId) { 14248 case GENERAL_DISPLAY: 14249 { 14250 var value = actionItem.config.value; 14251 14252 if (value === FLEX && _IX2BrowserSupport.IS_BROWSER_ENV) { 14253 setStyle(element, DISPLAY, _IX2BrowserSupport.FLEX_PREFIXED); 14254 } else { 14255 setStyle(element, DISPLAY, value); 14256 } 14257 14258 return; 14259 } 14260 } 14261 } 14262 14263 function addWillChange(element, prop, elementApi) { 14264 if (!_IX2BrowserSupport.IS_BROWSER_ENV) { 14265 return; 14266 } // $FlowFixMe 14267 14268 14269 var validProp = willChangeProps[prop]; 14270 14271 if (!validProp) { 14272 return; 14273 } 14274
14275 var getStyle = elementApi.getStyle, 14276 setStyle = elementApi.setStyle; 14277 var value = getStyle(element, WILL_CHANGE); 14278 14279 if (!value) { 14280 setStyle(element, WILL_CHANGE, validProp); 14281 return; 14282 } 14283 14284 var values = value.split(COMMA_DELIMITER).map(trim); 14285 14286 if (values.indexOf(validProp) === -1) { 14287 setStyle(element, WILL_CHANGE, values.concat(validProp).join(COMMA_DELIMITER)); 14288 } 14289 } 14290 14291 function removeWillChange(element, prop, elementApi) { 14292 if (!_IX2BrowserSupport.IS_BROWSER_ENV) { 14293 return; 14294 } // $FlowFixMe 14295 14296 14297 var validProp = willChangeProps[prop]; 14298 14299 if (!validProp) { 14300 return; 14301 } 14302 14303 var getStyle = elementApi.getStyle, 14304 setStyle = elementApi.setStyle; 14305 var value = getStyle(element, WILL_CHANGE); 14306 14307 if (!value || value.indexOf(validProp) === -1) { 14308 return; 14309 } 14310 14311 setStyle(element, WILL_CHANGE, value.split(COMMA_DELIMITER).map(trim).filter(function (v) { 14312 return v !== validProp; 14313 }).join(COMMA_DELIMITER)); 14314 } // $FlowFixMe 14315 14316 14317 function clearAllStyles(_ref13) { 14318 var store = _ref13.store, 14319 elementApi = _ref13.elementApi; 14320 14321 var _store$getState = store.getState(), 14322 ixData = _store$getState.ixData; 14323 14324 var _ixData$events = ixData.events, 14325 events = _ixData$events === void 0 ? {} : _ixData$events, 14326 _ixData$actionLists = ixData.actionLists, 14327 actionLists = _ixData$actionLists === void 0 ? {} : _ixData$actionLists; 14328 Object.keys(events).forEach(function (eventId) { 14329 var event = events[eventId]; 14330 var config = event.action.config; 14331 var actionListId = config.actionListId; 14332 var actionList = actionLists[actionListId]; 14333 14334 if (actionList) { 14335 clearActionListStyles({ 14336 actionList: actionList, 14337 event: event, 14338 elementApi: elementApi 14339 }); 14340 } 14341 }); 14342 Object.keys(actionLists).forEach(function (actionListId) { 14343 clearActionListStyles({ 14344 actionList: actionLists[actionListId], 14345 elementApi: elementApi 14346 }); 14347 }); 14348 } // $FlowFixMe 14349 14350 14351 function clearActionListStyles(_ref14) { 14352 var _ref14$actionList = _ref14.actionList, 14353 actionList = _ref14$actionList === void 0 ? {} : _ref14$actionList, 14354 event = _ref14.event, 14355 elementApi = _ref14.elementApi; 14356 var actionItemGroups = actionList.actionItemGroups, 14357 continuousParameterGroups = actionList.continuousParameterGroups; 14358 actionItemGroups && actionItemGroups.forEach(function (actionGroup) { 14359 clearActionGroupStyles({ 14360 actionGroup: actionGroup, 14361 event: event, 14362 elementApi: elementApi 14363 }); 14364 }); 14365 continuousParameterGroups && continuousParameterGroups.forEach(function (paramGroup) { 14366 var continuousActionGroups = paramGroup.continuousActionGroups; 14367 continuousActionGroups.forEach(function (actionGroup) { 14368 clearActionGroupStyles({ 14369 actionGroup: actionGroup, 14370 event: event, 14371 elementApi: elementApi 14372 }); 14373 }); 14374 }); 14375 } 14376 14377 function clearActionGroupStyles(_ref15) { 14378 var actionGroup = _ref15.actionGroup, 14379 event = _ref15.event, 14380 elementApi = _ref15.elementApi; 14381 var actionItems = actionGroup.actionItems; 14382 actionItems.forEach(function (_ref16) { 14383 var actionTypeId = _ref16.actionTypeId, 14384 config = _ref16.config; 14385 var clearElement; 14386 14387 if ((0, _IX2VanillaPlugins.isPluginType)(actionTypeId)) { 14388 clearElement = (0, _IX2VanillaPlugins.clearPlugin)(actionTypeId); 14389 } else { 14390 clearElement = processElementByType({ 14391 effect: clearStyleProp, 14392 actionTypeId: actionTypeId, 14393 elementApi: elementApi 14394 }); 14395 } 14396 14397 getAffectedElements({ 14398 config: config, 14399 event: event, 14400 elementApi: elementApi 14401 }
14401).forEach(clearElement); 14402 }); 14403 } // $FlowFixMe 14404 14405 14406 function cleanupHTMLElement(element, actionItem, elementApi) { 14407 var setStyle = elementApi.setStyle, 14408 getStyle = elementApi.getStyle; 14409 var actionTypeId = actionItem.actionTypeId; 14410 14411 if (actionTypeId === STYLE_SIZE) { 14412 var config = actionItem.config; 14413 14414 if (config.widthUnit === AUTO) { 14415 setStyle(element, WIDTH, ''); 14416 } 14417 14418 if (config.heightUnit === AUTO) { 14419 setStyle(element, HEIGHT, ''); 14420 } 14421 } 14422 14423 if (getStyle(element, WILL_CHANGE)) { 14424 processElementByType({ 14425 effect: removeWillChange, 14426 actionTypeId: actionTypeId, 14427 elementApi: elementApi 14428 })(element); 14429 } 14430 } 14431 14432 var processElementByType = function processElementByType(_ref17) { 14433 var effect = _ref17.effect, 14434 actionTypeId = _ref17.actionTypeId, 14435 elementApi = _ref17.elementApi; 14436 return function (element) { 14437 switch (actionTypeId) { 14438 case TRANSFORM_MOVE: 14439 case TRANSFORM_SCALE: 14440 case TRANSFORM_ROTATE: 14441 case TRANSFORM_SKEW: 14442 effect(element, _IX2BrowserSupport.TRANSFORM_PREFIXED, elementApi); 14443 break; 14444 14445 case STYLE_FILTER: 14446 effect(element, FILTER, elementApi); 14447 break; 14448 14449 case STYLE_OPACITY: 14450 effect(element, OPACITY, elementApi); 14451 break; 14452 14453 case STYLE_SIZE: 14454 effect(element, WIDTH, elementApi); 14455 effect(element, HEIGHT, elementApi); 14456 break; 14457 14458 case STYLE_BACKGROUND_COLOR: 14459 case STYLE_BORDER: 14460 case STYLE_TEXT_COLOR: 14461 effect(element, colorStyleProps[actionTypeId], elementApi); 14462 break; 14463 14464 case GENERAL_DISPLAY: 14465 effect(element, DISPLAY, elementApi); 14466 break; 14467 } 14468 }; 14469 }; 14470 14471 function clearStyleProp(element, prop, elementApi) { 14472 var setStyle = elementApi.setStyle; 14473 removeWillChange(element, prop, elementApi); 14474 setStyle(element, prop, ''); // Clear transform-style: preserve-3d 14475 14476 if (prop === _IX2BrowserSupport.TRANSFORM_PREFIXED) { 14477 setStyle(element, _IX2BrowserSupport.TRANSFORM_STYLE_PREFIXED, ''); 14478 } 14479 } // $FlowFixMe 14480 14481 14482 function getMaxDurationItemIndex(actionItems) { 14483 var maxDuration = 0; 14484 var resultIndex = 0; 14485 actionItems.forEach(function (actionItem, index) { 14486 var config = actionItem.config; 14487 var total = config.delay + config.duration; 14488 14489 if (total >= maxDuration) { 14490 maxDuration = total; 14491 resultIndex = index; 14492 } 14493 }); 14494 return resultIndex; 14495 } // $FlowFixMe 14496 14497 14498 function getActionListProgress(actionList, instance) { 14499 var actionItemGroups = actionList.actionItemGroups, 14500 useFirstGroupAsInitialState = actionList.useFirstGroupAsInitialState; 14501 var instanceItem = instance.actionItem, 14502 _instance$verboseTime = instance.verboseTimeElapsed, 14503 verboseTimeElapsed = _instance$verboseTime === void 0 ? 0 : _instance$verboseTime; 14504 var totalDuration = 0; 14505 var elapsedDuration = 0; 14506 actionItemGroups.forEach(function (group, index) { 14507 if (useFirstGroupAsInitialState && index === 0) { 14508 return; 14509 } 14510 14511 var actionItems = group.actionItems; 14512 var carrierItem = actionItems[getMaxDurationItemIndex(actionItems)]; 14513 var config = carrierItem.config, 14514 actionTypeId = carrierItem.actionTypeId; 14515 14516 if (instanceItem.id === carrierItem.id) { 14517 elapsedDuration = totalDuration + verboseTimeElapsed; 14518 } 14519 14520 var duration = getRenderType(actionTypeId) === RENDER_GENERAL ? 0 : config.duration; 14521 totalDuration += config.delay + duration; 14522 }); 14523 return totalDuration > 0 ? (0, _IX2EasingUtils.optimizeFloat)(elapsedDuration / totalDuration) : 0; 14524 } // $FlowFixMe 14525 14526 14527 function reduceListToGroup(_ref18) { 14528 var actionList = _ref18.actionList, 14529 actionItemId = _ref18.actionItemId, 14530 rawData = _ref18.rawData; 14531 var actionItemGroups = actionList.actionItemGroups, 14532 continuousParameterGroups = actionList.continuousParameterGroups; 14533 var newActionItems = []; 14534 14535 var takeItemUntilMatch = function takeItemUntilMatch(actionItem) { 14536 newActionItems.push((0, _timm.mergeIn)(actionItem, ['config'], { 14537 delay: 0, 14538 duration: 0 14539 })); 14540 return actionItem.id === actionItemId; 14541 }; 14542 14543 actionItemGroups && actionItemGroups.some(function (_ref19) { 14544 var actionItems = _ref19.actionItems; 14545 return actionItems.some(takeItemUntilMatch); 14546 }); 14547 continuousParameterGroups && continuousParameterGroups.some(function (paramGroup) { 14548 var continuousActionGroups = paramGroup.continuousActionGroups; 14549 return continuousActionGroups.some(function (_ref20) { 14550 var actionItems = _ref20.actionItems; 14551 return actionItems.some(takeItemUntilMatch); 14552 }); 14553 }); 14554 return (0, _timm.setIn)(rawData, ['actionLists'], (0, _defineProperty2["default"])({}, actionList.id, { 14555 id: actionList.id, 14556 actionItemGroups: [{ 14557 actionItems: newActionItems 14558 }] 14559 })); 14560 } // $FlowFixMe 14561 14562 14563 function shouldNamespaceEventParameter(eventTypeId, _ref22) { 14564 var basedOn = _ref22.basedOn; 14565 return eventTypeId === _constants.EventTypeConsts.SCROLLING_IN_VIEW && (basedOn === _constants.EventBasedOn.ELEMENT || basedOn == null) || eventTypeId === _constants.EventTypeConsts.MOUSE_MOVE && basedOn === _constants.EventBasedOn.ELEMENT; 14566 } 14567 14568 function getNamespacedParameterId(eventStateKey, continuousParameterGroupId) { 14569 var namespacedParameterId = eventStateKey + COLON_DELIMITER + continuousParameterGroupId; 14570 return namespacedParameterId; 14571 } // $FlowFixMe 14572 14573 14574 function shouldAllowMediaQuery(mediaQueries, mediaQueryKey) { 14575 // During design mode, current media query key does not exist 14576 if (mediaQueryKey == null) { 14577 return true; 14578 } 14579 14580 return mediaQueries.indexOf(mediaQueryKey) !== -1; 14581 } // $FlowFixMe 14582 14583 14584 function mediaQueriesEqual(listA, listB) { 14585 return (0, _shallowEqual["default"])(listA && listA.sort(), listB && listB.sort()); 14586 } // $FlowFixMe 14587 14588 14589 function stringifyTarget(target) { 14590 if (typeof target === 'string') { 14591 return target; 14592 } 14593 14594 var _target$id = target.id, 14595 id = _target$id === void 0 ? '' : _target$id, 14596 _target$selector = target.selector, 14597 selector = _target$selector === void 0 ? '' : _target$selector, 14598 _target$useEventTarge = target.useEventTarget, 14599 useEventTarget = _target$useEventTarge === void 0 ? '' : _target$useEventTarge; 14600 return id + BAR_DELIMITER + selector + BAR_DELIMITER + useEventTarget; 14601 } 14602 14603 /***/ 14604 }), 14605/* 251 */
vendor: 10,430 bytes, lines 14606-14950
14606/***/ (function (module, exports) { 14607 14608 /** 14609 * Checks `value` to determine whether a default value should be returned in 14610 * its place. The `defaultValue` is returned if `value` is `NaN`, `null`, 14611 * or `undefined`. 14612 * 14613 * @static 14614 * @memberOf _ 14615 * @since 4.14.0 14616 * @category Util 14617 * @param {*} value The value to check. 14618 * @param {*} defaultValue The default value. 14619 * @returns {*} Returns the resolved value. 14620 * @example 14621 * 14622 * _.defaultTo(1, 10); 14623 * // => 1 14624 * 14625 * _.defaultTo(undefined, 10); 14626 * // => 10 14627 */ 14628 function defaultTo(value, defaultValue) { 14629 return (value == null || value !== value) ? defaultValue : value; 14630 } 14631 14632 module.exports = defaultTo; 14633 14634 14635 /***/ 14636 }), 14637/* 252 */ 14638/***/ (function (module, exports, __webpack_require__) { 14639 14640 var arrayReduce = __webpack_require__(253), 14641 baseEach = __webpack_require__(112), 14642 baseIteratee = __webpack_require__(7), 14643 baseReduce = __webpack_require__(257), 14644 isArray = __webpack_require__(1); 14645 14646 /** 14647 * Reduces `collection` to a value which is the accumulated result of running 14648 * each element in `collection` thru `iteratee`, where each successive 14649 * invocation is supplied the return value of the previous. If `accumulator` 14650 * is not given, the first element of `collection` is used as the initial 14651 * value. The iteratee is invoked with four arguments: 14652 * (accumulator, value, index|key, collection). 14653 * 14654 * Many lodash methods are guarded to work as iteratees for methods like 14655 * `_.reduce`, `_.reduceRight`, and `_.transform`. 14656 * 14657 * The guarded methods are: 14658 * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`, 14659 * and `sortBy` 14660 * 14661 * @static 14662 * @memberOf _ 14663 * @since 0.1.0 14664 * @category Collection 14665 * @param {Array|Object} collection The collection to iterate over. 14666 * @param {Function} [iteratee=_.identity] The function invoked per iteration. 14667 * @param {*} [accumulator] The initial value. 14668 * @returns {*} Returns the accumulated value. 14669 * @see _.reduceRight 14670 * @example 14671 * 14672 * _.reduce([1, 2], function(sum, n) { 14673 * return sum + n; 14674 * }, 0); 14675 * // => 3 14676 * 14677 * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { 14678 * (result[value] || (result[value] = [])).push(key); 14679 * return result; 14680 * }, {}); 14681 * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed) 14682 */ 14683 function reduce(collection, iteratee, accumulator) { 14684 var func = isArray(collection) ? arrayReduce : baseReduce, 14685 initAccum = arguments.length < 3; 14686 14687 return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach); 14688 } 14689 14690 module.exports = reduce; 14691 14692 14693 /***/ 14694 }), 14695/* 253 */ 14696/***/ (function (module, exports) { 14697 14698 /** 14699 * A specialized version of `_.reduce` for arrays without support for 14700 * iteratee shorthands. 14701 * 14702 * @private 14703 * @param {Array} [array] The array to iterate over. 14704 * @param {Function} iteratee The function invoked per iteration. 14705 * @param {*} [accumulator] The initial value. 14706 * @param {boolean} [initAccum] Specify using the first element of `array` as 14707 * the initial value. 14708 * @returns {*} Returns the accumulated value. 14709 */ 14710 function arrayReduce(array, iteratee, accumulator, initAccum) { 14711 var index = -1, 14712 length = array == null ? 0 : array.length; 14713 14714 if (initAccum && length) { 14715 accumulator = array[++index]; 14716 } 14717 while (++index < length) { 14718 accumulator = iteratee(accumulator, array[index], index, array); 14719 } 14720 return accumulator; 14721 } 14722 14723 module.exports = arrayReduce; 14724 14725 14726 /***/ 14727 }), 14728/* 254 */ 14729/***/ (function (module, exports, __webpack_require__) { 14730 14731 var createBaseFor = __webpack_require__(255); 14732 14733 /** 14734 * The base implementation of `baseForOwn` which iterates over `object` 14735 * properties returned by `keysFunc` and invokes `iteratee` for each property. 14736 * Iteratee functions may exit iteration early by explicitly returning `false`. 14737 * 14738 * @private 14739 * @param {Object} object The object to iterate over. 14740 * @param {Function} iteratee The function invoked per iteration. 14741 * @param {Function} keysFunc The function to get the keys of `object`. 14742 * @returns {Object} Returns `object`. 14743 */ 14744 var baseFor = createBaseFor(); 14745 14746 module.exports = baseFor; 14747 14748 14749 /***/ 14750 }), 14751/* 255 */ 14752/***/ (function (module, exports) { 14753 14754 /** 14755 * Creates a base function for methods like `_.forIn` and `_.forOwn`. 14756 * 14757 * @private 14758 * @param {boolean} [fromRight] Specify iterating from right to left. 14759 * @returns {Function} Returns the new base function. 14760 */ 14761 function createBaseFor(fromRight) { 14762 return function (object, iteratee, keysFunc) { 14763 var index = -1, 14764 iterable = Object(object), 14765 props = keysFunc(object), 14766 length = props.length; 14767 14768 while (length--) { 14769 var key = props[fromRight ? length : ++index]; 14770 if (iteratee(iterable[key], key, iterable) === false) { 14771 break; 14772 } 14773 } 14774 return object; 14775 }; 14776 } 14777 14778 module.exports = createBaseFor; 14779 14780 14781 /***/ 14782 }), 14783/* 256 */ 14784/***/ (function (module, exports, __webpack_require__) { 14785 14786 var isArrayLike = __webpack_require__(12); 14787 14788 /** 14789 * Creates a `baseEach` or `baseEachRight` function. 14790 * 14791 * @private 14792 * @param {Function} eachFunc The function to iterate over a collection. 14793 * @param {boolean} [fromRight] Specify iterating from right to left. 14794 * @returns {Function} Returns the new base function. 14795 */ 14796 function createBaseEach(eachFunc, fromRight) { 14797 return function (collection, iteratee) { 14798 if (collection == null) { 14799 return collection; 14800 } 14801 if (!isArrayLike(collection)) { 14802 return eachFunc(collection, iteratee); 14803 } 14804 var length = collection.length, 14805 index = fromRight ? length : -1, 14806 iterable = Object(collection); 14807 14808 while ((fromRight ? index-- : ++index < length)) { 14809 if (iteratee(iterable[index], index, iterable) === false) { 14810 break; 14811 } 14812 } 14813 return collection; 14814 }; 14815 } 14816 14817 module.exports = createBaseEach; 14818 14819 14820 /***/ 14821 }), 14822/* 257 */ 14823/***/ (function (module, exports) { 14824 14825 /** 14826 * The base implementation of `_.reduce` and `_.reduceRight`, without support 14827 * for iteratee shorthands, which iterates over `collection` using `eachFunc`. 14828 * 14829 * @private 14830 * @param {Array|Object} collection The collection to iterate over. 14831 * @param {Function} iteratee The function invoked per iteration. 14832 * @param {*} accumulator The initial value. 14833 * @param {boolean} initAccum Specify using the first or last element of 14834 * `collection` as the initial value. 14835 * @param {Function} eachFunc The function to iterate over `collection`. 14836 * @returns {*} Returns the accumulated value. 14837 */ 14838 function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) { 14839 eachFunc(collection, function (value, index, collection) { 14840 accumulator = initAccum 14841 ? (initAccum = false, value) 14842 : iteratee(accumulator, value, index, collection); 14843 }); 14844 return accumulator; 14845 } 14846 14847 module.exports = baseReduce; 14848 14849 14850 /***/ 14851 }), 14852/* 258 */ 14853/***/ (function (module, exports, __webpack_require__) { 14854 14855 var createFind = __webpack_require__(87), 14856 findLastIndex = __webpack_require__(259); 14857 14858 /** 14859 * This method is like `_.find` except that it iterates over elements of 14860 * `collection` from right to left. 14861 * 14862 * @static 14863 * @memberOf _ 14864 * @since 2.0.0 14865 * @category Collection 14866 * @param {Array|Object} collection The collection to inspect. 14867 * @param {Function} [predicate=_.identity] The function invoked per iteration. 14868 * @param {number} [fromIndex=collection.length-1] The index to search from. 14869 * @returns {*} Returns the matched element, else `undefined`. 14870 * @example 14871 * 14872 * _.findLast([1, 2, 3, 4], function(n) { 14873 * return n % 2 == 1; 14874 * }); 14875 * // => 3 14876 */ 14877 var findLast = createFind(findLastIndex); 14878 14879 module.exports = findLast; 14880 14881 14882 /***/ 14883 }), 14884/* 259 */ 14885/***/ (function (module, exports, __webpack_require__) { 14886 14887 var baseFindIndex = __webpack_require__(105), 14888 baseIteratee = __webpack_require__(7), 14889 toInteger = __webpack_require__(106); 14890 14891 /* Built-in method references for those with the same name as other `lodash` methods. */ 14892 var nativeMax = Math.max, 14893 nativeMin = Math.min; 14894 14895 /** 14896 * This method is like `_.findIndex` except that it iterates over elements 14897 * of `collection` from right to left. 14898 * 14899 * @static 14900 * @memberOf _ 14901 * @since 2.0.0 14902 * @category Array 14903 * @param {Array} array The array to inspect. 14904 * @param {Function} [predicate=_.identity] The function invoked per iteration. 14905 * @param {number} [fromIndex=array.length-1] The index to search from. 14906 * @returns {number} Returns the index of the found element, else `-1`. 14907 * @example 14908 * 14909 * var users = [ 14910 * { 'user': 'barney', 'active': true }, 14911 * { 'user': 'fred', 'active': false }, 14912 * { 'user': 'pebbles', 'active': false } 14913 * ]; 14914 * 14915 * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; }); 14916 * // => 2 14917 * 14918 * // The `_.matches` iteratee shorthand. 14919 * _.findLastIndex(users, { 'user': 'barney', 'active': true }); 14920 * // => 0 14921 * 14922 * // The `_.matchesProperty` iteratee shorthand. 14923 * _.findLastIndex(users, ['active', false]); 14924 * // => 2 14925 * 14926 * // The `_.property` iteratee shorthand. 14927 * _.findLastIndex(users, 'active'); 14928 * // => 0 14929 */ 14930 function findLastIndex(array, predicate, fromIndex) { 14931 var length = array == null ? 0 : array.length; 14932 if (!length) { 14933 return -1; 14934 } 14935 var index = length - 1; 14936 if (fromIndex !== undefined) { 14937 index = toInteger(fromIndex); 14938 index = fromIndex < 0 14939 ? nativeMax(length + index, 0) 14940 : nativeMin(index, length - 1); 14941 } 14942 return baseFindIndex(array, baseIteratee(predicate, 3), index, true); 14943 } 14944 14945 module.exports = findLastIndex; 14946 14947 14948 /***/ 14949 }), 14950/* 260 */
14951/***/ (function (module, exports) { 14952 14953 function _interopRequireDefault(obj) { 14954 return obj && obj.__esModule ? obj : { 14955 default: obj 14956 }; 14957 } 14958 14959 module.exports = _interopRequireDefault; 14960 14961 /***/ 14962 }), 14963/* 261 */ 14964/***/ (function (module, exports, __webpack_require__) { 14965 14966 "use strict"; 14967 /** 14968 * Copyright (c) 2013-present, Facebook, Inc. 14969 * 14970 * This source code is licensed under the MIT license found in the 14971 * LICENSE file in the root directory of this source tree. 14972 * 14973 * @typechecks 14974 * 14975 */ 14976 14977 /*eslint-disable no-self-compare */ 14978 14979 14980 14981 var hasOwnProperty = Object.prototype.hasOwnProperty; 14982 14983 /** 14984 * inlined Object.is polyfill to avoid requiring consumers ship their own 14985 * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is 14986 */ 14987 function is(x, y) { 14988 // SameValue algorithm 14989 if (x === y) { 14990 // Steps 1-5, 7-10 14991 // Steps 6.b-6.e: +0 != -0 14992 // Added the nonzero y check to make Flow happy, but it is redundant 14993 return x !== 0 || y !== 0 || 1 / x === 1 / y; 14994 } else { 14995 // Step 6.a: NaN == NaN 14996 return x !== x && y !== y; 14997 } 14998 } 14999 15000 /** 15001 * Performs equality by iterating through keys on an object and returning false 15002 * when any key has values which are not strictly equal between the arguments. 15003 * Returns true when the values of all keys are strictly equal. 15004 */ 15005 function shallowEqual(objA, objB) { 15006 if (is(objA, objB)) { 15007 return true; 15008 } 15009 15010 if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) { 15011 return false; 15012 } 15013 15014 var keysA = Object.keys(objA); 15015 var keysB = Object.keys(objB); 15016 15017 if (keysA.length !== keysB.length) { 15018 return false; 15019 } 15020 15021 // Test for A's keys different from B. 15022 for (var i = 0; i < keysA.length; i++) { 15023 if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) { 15024 return false; 15025 } 15026 } 15027 15028 return true; 15029 } 15030 15031 module.exports = shallowEqual; 15032 15033 /***/ 15034 }), 15035/* 262 */ 15036/***/ (function (module, exports, __webpack_require__) { 15037 15038 "use strict"; 15039 15040 15041 Object.defineProperty(exports, "__esModule", { 15042 value: true 15043 }); 15044 exports.ixInstances = void 0; 15045 15046 var _constants = __webpack_require__(2); 15047 15048 var _shared = __webpack_require__(10); 15049 15050 var _timm = __webpack_require__(19); 15051 /* eslint-env browser */ 15052 15053 15054 var _constants$IX2EngineA = _constants.IX2EngineActionTypes, 15055 IX2_RAW_DATA_IMPORTED = _constants$IX2EngineA.IX2_RAW_DATA_IMPORTED, 15056 IX2_SESSION_STOPPED = _constants$IX2EngineA.IX2_SESSION_STOPPED, 15057 IX2_INSTANCE_ADDED = _constants$IX2EngineA.IX2_INSTANCE_ADDED, 15058 IX2_INSTANCE_STARTED = _constants$IX2EngineA.IX2_INSTANCE_STARTED, 15059 IX2_INSTANCE_REMOVED = _constants$IX2EngineA.IX2_INSTANCE_REMOVED, 15060 IX2_ANIMATION_FRAME_CHANGED = _constants$IX2EngineA.IX2_ANIMATION_FRAME_CHANGED; 15061 var _shared$IX2EasingUtil = _shared.IX2EasingUtils, 15062 optimizeFloat = _shared$IX2EasingUtil.optimizeFloat, 15063 applyEasing = _shared$IX2EasingUtil.applyEasing, 15064 createBezierEasing = _shared$IX2EasingUtil.createBezierEasing; 15065 var RENDER_GENERAL = _constants.IX2EngineConstants.RENDER_GENERAL; 15066 var _shared$IX2VanillaUti = _shared.IX2VanillaUtils, 15067 getItemConfigByKey = _shared$IX2VanillaUti.getItemConfigByKey, 15068 getRenderType = _shared$IX2VanillaUti.getRenderType, 15069 getStyleProp = _shared$IX2VanillaUti.getStyleProp; 15070 15071 var continuousInstance = function continuousInstance(state, action) { 15072 var lastPosition = state.position, 15073 parameterId = state.parameterId, 15074 actionGroups = state.actionGroups, 15075 destinationKeys = state.destinationKeys, 15076 smoothing = state.smoothing, 15077 restingValue = state.restingValue, 15078 actionTypeId = state.actionTypeId, 15079 customEasingFn = state.customEasingFn; 15080 var parameters = action.payload.parameters; 15081 var velocity = Math.max(1 - smoothing, 0.01); 15082 var paramValue = parameters[parameterId]; 15083 15084 if (paramValue == null) { 15085 velocity = 1; 15086 paramValue = restingValue; 15087 } 15088 15089 var nextPosition = Math.max(paramValue, 0) || 0; 15090 var positionDiff = optimizeFloat(nextPosition - lastPosition); 15091 var position = optimizeFloat(lastPosition + positionDiff * velocity); 15092 var keyframePosition = position * 100; 15093 15094 if (position === lastPosition && state.current) { 15095 return state; 15096 } 15097 15098 var fromActionItem; 15099 var toActionItem; 15100 var positionOffset; 15101 var positionRange; 15102 15103 for (var i = 0, length = actionGroups.length; i < length; i++) { 15104 var _actionGroups$i = actionGroups[i], 15105 keyframe = _actionGroups$i.keyframe, 15106 actionItems = _actionGroups$i.actionItems; 15107 15108 if (i === 0) { 15109 fromActionItem = actionItems[0]; 15110 } 15111 15112 if (keyframePosition >= keyframe) { 15113 fromActionItem = actionItems[0]; 15114 var nextGroup = actionGroups[i + 1]; 15115 var hasNextItem = nextGroup && keyframePosition !== keyframe; 15116 toActionItem = hasNextItem ? nextGroup.actionItems[0] : null; 15117 15118 if (hasNextItem) { 15119 positionOffset = keyframe / 100; 15120 positionRange = (nextGroup.keyframe - keyframe) / 100; 15121 } 15122 } 15123 } 15124 15125 var current = {}; 15126 15127 if (fromActionItem && !toActionItem) { 15128 for (var _i = 0, _length = destinationKeys.length; _i < _length; _i++) { 15129 var key = destinationKeys[_i];
15130 current[key] = getItemConfigByKey(actionTypeId, key, fromActionItem.config); 15131 } 15132 } else if (fromActionItem && toActionItem && positionOffset !== undefined && positionRange !== undefined) { 15133 var localPosition = (position - positionOffset) / positionRange; 15134 var easing = fromActionItem.config.easing; 15135 var eased = applyEasing(easing, localPosition, customEasingFn); 15136 15137 for (var _i2 = 0, _length2 = destinationKeys.length; _i2 < _length2; _i2++) { 15138 var _key = destinationKeys[_i2]; 15139 var fromVal = getItemConfigByKey(actionTypeId, _key, fromActionItem.config); 15140 var toVal = getItemConfigByKey(actionTypeId, _key, toActionItem.config); // $FlowFixMe â toVal and fromVal could potentially be null, need to update type higher to determine number 15141 15142 var diff = toVal - fromVal; // $FlowFixMe 15143 15144 var value = diff * eased + fromVal; 15145 current[_key] = value; 15146 } 15147 } 15148 15149 return (0, _timm.merge)(state, { 15150 position: position, 15151 current: current 15152 }); 15153 }; 15154 15155 var timedInstance = function timedInstance(state, action) { 15156 var _state = state, 15157 active = _state.active, 15158 origin = _state.origin, 15159 start = _state.start, 15160 immediate = _state.immediate, 15161 renderType = _state.renderType, 15162 verbose = _state.verbose, 15163 actionItem = _state.actionItem, 15164 destination = _state.destination, 15165 destinationKeys = _state.destinationKeys, 15166 pluginDuration = _state.pluginDuration, 15167 instanceDelay = _state.instanceDelay, 15168 customEasingFn = _state.customEasingFn; 15169 var easing = actionItem.config.easing; 15170 var _actionItem$config = actionItem.config, 15171 duration = _actionItem$config.duration, 15172 delay = _actionItem$config.delay; 15173 15174 if (pluginDuration != null) { 15175 duration = pluginDuration; 15176 } 15177 15178 delay = instanceDelay != null ? instanceDelay : delay; 15179 15180 if (renderType === RENDER_GENERAL) { 15181 duration = 0; 15182 } else if (immediate) { 15183 duration = delay = 0; 15184 } 15185 15186 var now = action.payload.now; 15187 15188 if (active && origin) { 15189 var delta = now - (start + delay); 15190 15191 if (verbose) { 15192 var verboseDelta = now - start; 15193 var verboseDuration = duration + delay; 15194 var verbosePosition = optimizeFloat(Math.min(Math.max(0, verboseDelta / verboseDuration), 1)); 15195 state = (0, _timm.set)(state, 'verboseTimeElapsed', verboseDuration * verbosePosition); 15196 } 15197 15198 if (delta < 0) { 15199 return state; 15200 } 15201 15202 var position = optimizeFloat(Math.min(Math.max(0, delta / duration), 1)); 15203 var eased = applyEasing(easing, position, customEasingFn); 15204 var newProps = {}; 15205 var current = null; 15206 15207 if (destinationKeys.length) { 15208 current = destinationKeys.reduce(function (result, key) { 15209 var destValue = destination[key]; 15210 var originVal = parseFloat(origin[key]) || 0; 15211 var diff = parseFloat(destValue) - originVal; 15212 var value = diff * eased + originVal; 15213 result[key] = value; 15214 return result; 15215 }, {}); 15216 } 15217 15218 newProps.current = current; 15219 newProps.position = position; 15220 15221 if (position === 1) { 15222 newProps.active = false; 15223 newProps.complete = true; 15224 } 15225 15226 return (0, _timm.merge)(state, newProps); 15227 } 15228 15229 return state; 15230 }; 15231 15232 var ixInstances = function ixInstances() { 15233 var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Object.freeze({}); 15234 var action = arguments.length > 1 ? arguments[1] : undefined; 15235 15236 switch (action.type) { 15237 case IX2_RAW_DATA_IMPORTED: 15238 { 15239 return action.payload.ixInstances || Object.freeze({}); 15240 } 15241 15242 case IX2_SESSION_STOPPED: 15243 { 15244 return Object.freeze({}); 15245 } 15246 15247 case IX2_INSTANCE_ADDED: 15248 { 15249 var _action$payload = action.payload, 15250 instanceId = _action$payload.instanceId, 15251 elementId = _action$payload.elementId, 15252 actionItem = _action$payload.actionItem, 15253 eventId = _action$payload.eventId, 15254 eventTarget = _action$payload.eventTarget, 15255 eventStateKey = _action$payload.eventStateKey, 15256 actionListId = _action$payload.actionListId, 15257 groupIndex = _action$payload.groupIndex, 15258 isCarrier = _action$payload.isCarrier, 15259 origin = _action$payload.origin, 15260 destination = _action$payload.destination, 15261 immediate = _action$payload.immediate, 15262 verbose = _action$payload.verbose, 15263 continuous = _action$payload.continuous, 15264 parameterId = _action$payload.parameterId, 15265 actionGroups = _action$payload.actionGroups, 15266 smoothing = _action$payload.smoothing, 15267 restingValue = _action$payload.restingValue, 15268 pluginInstance = _action$payload.pluginInstance, 15269 pluginDuration = _action$payload.pluginDuration, 15270 instanceDelay = _action$payload.instanceDelay; 15271 var actionTypeId = actionItem.actionTypeId; 15272 var renderType = getRenderType(actionTypeId); 15273 var styleProp = getStyleProp(renderType, actionTypeId); 15274 var destinationKeys = Object.keys(destination).filter(function (key) { 15275 return destination[key] != null; 15276 }); 15277 var easing = actionItem.config.easing; 15278 return (0, _timm.set)(state, instanceId, { 15279 id: instanceId, 15280 elementId: elementId, 15281 active: false, 15282 position: 0, 15283 start: 0, 15284 origin: origin, 15285 destination: destination, 15286 destinationKeys: destinationKeys, 15287 immediate: immediate,
15288 verbose: verbose, 15289 current: null, 15290 actionItem: actionItem, 15291 actionTypeId: actionTypeId, 15292 eventId: eventId, 15293 eventTarget: eventTarget, 15294 eventStateKey: eventStateKey, 15295 actionListId: actionListId, 15296 groupIndex: groupIndex, 15297 renderType: renderType, 15298 isCarrier: isCarrier, 15299 styleProp: styleProp, 15300 continuous: continuous, 15301 parameterId: parameterId, 15302 actionGroups: actionGroups, 15303 smoothing: smoothing, 15304 restingValue: restingValue, 15305 pluginInstance: pluginInstance, 15306 pluginDuration: pluginDuration, 15307 instanceDelay: instanceDelay, 15308 customEasingFn: Array.isArray(easing) && easing.length === 4 ? createBezierEasing(easing) : undefined 15309 }); 15310 } 15311 15312 case IX2_INSTANCE_STARTED: 15313 { 15314 var _action$payload2 = action.payload, 15315 _instanceId = _action$payload2.instanceId, 15316 time = _action$payload2.time; 15317 return (0, _timm.mergeIn)(state, [_instanceId], { 15318 active: true, 15319 complete: false, 15320 start: time 15321 }); 15322 } 15323 15324 case IX2_INSTANCE_REMOVED: 15325 { 15326 var _instanceId2 = action.payload.instanceId; 15327 15328 if (!state[_instanceId2]) { 15329 return state; 15330 } 15331 15332 var newState = {}; 15333 var keys = Object.keys(state); 15334 var length = keys.length; 15335 15336 for (var i = 0; i < length; i++) { 15337 var key = keys[i]; 15338 15339 if (key !== _instanceId2) { 15340 newState[key] = state[key]; 15341 } 15342 } 15343 15344 return newState; 15345 } 15346 15347 case IX2_ANIMATION_FRAME_CHANGED: 15348 { 15349 var _newState = state; 15350 15351 var _keys = Object.keys(state); 15352 15353 var _length3 = _keys.length; 15354 15355 for (var _i3 = 0; _i3 < _length3; _i3++) { 15356 var _key2 = _keys[_i3]; 15357 var instance = state[_key2]; 15358 var reducer = instance.continuous ? continuousInstance : timedInstance; 15359 _newState = (0, _timm.set)(_newState, _key2, reducer(instance, action)); 15360 } 15361 15362 return _newState; 15363 } 15364 15365 default: 15366 { 15367 return state; 15368 } 15369 } 15370 }; 15371 15372 exports.ixInstances = ixInstances; 15373 15374 /***/ 15375 }), 15376/* 263 */ 15377/***/ (function (module, exports, __webpack_require__) { 15378 15379 "use strict"; 15380 15381 15382 Object.defineProperty(exports, "__esModule", { 15383 value: true 15384 }); 15385 exports.ixParameters = void 0; 15386 15387 var _constants = __webpack_require__(2); 15388 15389 var _constants$IX2EngineA = _constants.IX2EngineActionTypes, 15390 IX2_RAW_DATA_IMPORTED = _constants$IX2EngineA.IX2_RAW_DATA_IMPORTED, 15391 IX2_SESSION_STOPPED = _constants$IX2EngineA.IX2_SESSION_STOPPED, 15392 IX2_PARAMETER_CHANGED = _constants$IX2EngineA.IX2_PARAMETER_CHANGED; // prettier-ignore 15393 15394 var ixParameters = function ixParameters() { 15395 var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { 15396 /*mutable flat state*/ 15397 }; 15398 var action = arguments.length > 1 ? arguments[1] : undefined; 15399 15400 switch (action.type) { 15401 case IX2_RAW_DATA_IMPORTED: 15402 { 15403 return action.payload.ixParameters || { 15404 /*mutable flat state*/ 15405 }; 15406 } 15407 15408 case IX2_SESSION_STOPPED: 15409 { 15410 return { 15411 /*mutable flat state*/ 15412 }; 15413 } 15414 15415 case IX2_PARAMETER_CHANGED: 15416 { 15417 var _action$payload = action.payload, 15418 key = _action$payload.key, 15419 value = _action$payload.value; 15420 state[key] = value; 15421 return state; 15422 } 15423 15424 default: 15425 { 15426 return state; 15427 } 15428 } 15429 }; 15430 15431 exports.ixParameters = ixParameters; 15432 15433 /***/ 15434 }), 15435/* 264 */ 15436/***/ (function (module, exports) { 15437 15438 function _objectWithoutPropertiesLoose(source, excluded) { 15439 if (source == null) return {}; 15440 var target = {}; 15441 var sourceKeys = Object.keys(source); 15442 var key, i; 15443 15444 for (i = 0; i < sourceKeys.length; i++) { 15445 key = sourceKeys[i]; 15446 if (excluded.indexOf(key) >= 0) continue; 15447 target[key] = source[key]; 15448 } 15449 15450 return target; 15451 } 15452 15453 module.exports = _objectWithoutPropertiesLoose; 15454 15455 /***/ 15456 }), 15457/* 265 */ 15458/***/ (function (module, exports, __webpack_require__) { 15459 15460 var baseKeys = __webpack_require__(54), 15461 getTag = __webpack_require__(56), 15462 isArrayLike = __webpack_require__(12), 15463 isString = __webpack_require__(266),
vendor: 6,197 bytes, lines 15464-15683
15464 stringSize = __webpack_require__(267); 15465 15466 /** `Object#toString` result references. */ 15467 var mapTag = '[object Map]', 15468 setTag = '[object Set]'; 15469 15470 /** 15471 * Gets the size of `collection` by returning its length for array-like 15472 * values or the number of own enumerable string keyed properties for objects. 15473 * 15474 * @static 15475 * @memberOf _ 15476 * @since 0.1.0 15477 * @category Collection 15478 * @param {Array|Object|string} collection The collection to inspect. 15479 * @returns {number} Returns the collection size. 15480 * @example 15481 * 15482 * _.size([1, 2, 3]); 15483 * // => 3 15484 * 15485 * _.size({ 'a': 1, 'b': 2 }); 15486 * // => 2 15487 * 15488 * _.size('pebbles'); 15489 * // => 7 15490 */ 15491 function size(collection) { 15492 if (collection == null) { 15493 return 0; 15494 } 15495 if (isArrayLike(collection)) { 15496 return isString(collection) ? stringSize(collection) : collection.length; 15497 } 15498 var tag = getTag(collection); 15499 if (tag == mapTag || tag == setTag) { 15500 return collection.size; 15501 } 15502 return baseKeys(collection).length; 15503 } 15504 15505 module.exports = size; 15506 15507 15508 /***/ 15509 }), 15510/* 266 */ 15511/***/ (function (module, exports, __webpack_require__) { 15512 15513 var baseGetTag = __webpack_require__(11), 15514 isArray = __webpack_require__(1), 15515 isObjectLike = __webpack_require__(9); 15516 15517 /** `Object#toString` result references. */ 15518 var stringTag = '[object String]'; 15519 15520 /** 15521 * Checks if `value` is classified as a `String` primitive or object. 15522 * 15523 * @static 15524 * @since 0.1.0 15525 * @memberOf _ 15526 * @category Lang 15527 * @param {*} value The value to check. 15528 * @returns {boolean} Returns `true` if `value` is a string, else `false`. 15529 * @example 15530 * 15531 * _.isString('abc'); 15532 * // => true 15533 * 15534 * _.isString(1); 15535 * // => false 15536 */ 15537 function isString(value) { 15538 return typeof value == 'string' || 15539 (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag); 15540 } 15541 15542 module.exports = isString; 15543 15544 15545 /***/ 15546 }), 15547/* 267 */ 15548/***/ (function (module, exports, __webpack_require__) { 15549 15550 var asciiSize = __webpack_require__(268), 15551 hasUnicode = __webpack_require__(269), 15552 unicodeSize = __webpack_require__(270); 15553 15554 /** 15555 * Gets the number of symbols in `string`. 15556 * 15557 * @private 15558 * @param {string} string The string to inspect. 15559 * @returns {number} Returns the string size. 15560 */ 15561 function stringSize(string) { 15562 return hasUnicode(string) 15563 ? unicodeSize(string) 15564 : asciiSize(string); 15565 } 15566 15567 module.exports = stringSize; 15568 15569 15570 /***/ 15571 }), 15572/* 268 */ 15573/***/ (function (module, exports, __webpack_require__) { 15574 15575 var baseProperty = __webpack_require__(104); 15576 15577 /** 15578 * Gets the size of an ASCII `string`. 15579 * 15580 * @private 15581 * @param {string} string The string inspect. 15582 * @returns {number} Returns the string size. 15583 */ 15584 var asciiSize = baseProperty('length'); 15585 15586 module.exports = asciiSize; 15587 15588 15589 /***/ 15590 }), 15591/* 269 */ 15592/***/ (function (module, exports) { 15593 15594 /** Used to compose unicode character classes. */ 15595 var rsAstralRange = '\\ud800-\\udfff', 15596 rsComboMarksRange = '\\u0300-\\u036f', 15597 reComboHalfMarksRange = '\\ufe20-\\ufe2f', 15598 rsComboSymbolsRange = '\\u20d0-\\u20ff', 15599 rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, 15600 rsVarRange = '\\ufe0e\\ufe0f'; 15601 15602 /** Used to compose unicode capture groups. */ 15603 var rsZWJ = '\\u200d'; 15604 15605 /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */ 15606 var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']'); 15607 15608 /** 15609 * Checks if `string` contains Unicode symbols. 15610 * 15611 * @private 15612 * @param {string} string The string to inspect. 15613 * @returns {boolean} Returns `true` if a symbol is found, else `false`. 15614 */ 15615 function hasUnicode(string) { 15616 return reHasUnicode.test(string); 15617 } 15618 15619 module.exports = hasUnicode; 15620 15621 15622 /***/ 15623 }), 15624/* 270 */ 15625/***/ (function (module, exports) { 15626 15627 /** Used to compose unicode character classes. */ 15628 var rsAstralRange = '\\ud800-\\udfff', 15629 rsComboMarksRange = '\\u0300-\\u036f', 15630 reComboHalfMarksRange = '\\ufe20-\\ufe2f', 15631 rsComboSymbolsRange = '\\u20d0-\\u20ff', 15632 rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, 15633 rsVarRange = '\\ufe0e\\ufe0f'; 15634 15635 /** Used to compose unicode capture groups. */ 15636 var rsAstral = '[' + rsAstralRange + ']', 15637 rsCombo = '[' + rsComboRange + ']', 15638 rsFitz = '\\ud83c[\\udffb-\\udfff]', 15639 rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', 15640 rsNonAstral = '[^' + rsAstralRange + ']', 15641 rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', 15642 rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', 15643 rsZWJ = '\\u200d'; 15644 15645 /** Used to compose unicode regexes. */ 15646 var reOptMod = rsModifier + '?', 15647 rsOptVar = '[' + rsVarRange + ']?', 15648 rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*', 15649 rsSeq = rsOptVar + reOptMod + rsOptJoin, 15650 rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')'; 15651 15652 /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ 15653 var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); 15654 15655 /** 15656 * Gets the size of a Unicode `string`. 15657 * 15658 * @private 15659 * @param {string} string The string inspect. 15660 * @returns {number} Returns the string size. 15661 */ 15662 function unicodeSize(string) { 15663 var result = reUnicode.lastIndex = 0; 15664 while (reUnicode.test(string)) { 15665 ++result; 15666 } 15667 return result; 15668 } 15669 15670 module.exports = unicodeSize; 15671 15672 15673 /***/ 15674 }), 15675/* 271 */ 15676/***/ (function (module, exports, __webpack_require__) { 15677 15678 var baseIteratee = __webpack_require__(7), 15679 negate = __webpack_require__(272), 15680 pickBy = __webpack_require__(273); 15681 15682 /** 15683 * The opposite of `_.pickBy`;
15683 this method creates an object composed of 15684 * the own and inherited enumerable string keyed properties of `object` that 15685 * `predicate` doesn't return truthy for. The predicate is invoked with two 15686 * arguments: (value, key). 15687 * 15688 * @static 15689 * @memberOf _ 15690 * @since 4.0.0 15691 * @category Object 15692 * @param {Object} object The source object. 15693 * @param {Function} [predicate=_.identity] The function invoked per property. 15694 * @returns {Object} Returns the new object. 15695 * @example 15696 * 15697 * var object = { 'a': 1, 'b': '2', 'c': 3 }; 15698 * 15699 * _.omitBy(object, _.isNumber); 15700 * // => { 'b': '2' } 15701 */ 15702 function omitBy(object, predicate) { 15703 return pickBy(object, negate(baseIteratee(predicate))); 15704 } 15705 15706 module.exports = omitBy; 15707 15708 15709 /***/ 15710 }), 15711/* 272 */ 15712/***/ (function (module, exports) { 15713 15714 /** Error message constants. */ 15715 var FUNC_ERROR_TEXT = 'Expected a function'; 15716 15717 /** 15718 * Creates a function that negates the result of the predicate `func`. The 15719 * `func` predicate is invoked with the `this` binding and arguments of the 15720 * created function. 15721 * 15722 * @static 15723 * @memberOf _ 15724 * @since 3.0.0 15725 * @category Function 15726 * @param {Function} predicate The predicate to negate. 15727 * @returns {Function} Returns the new negated function. 15728 * @example 15729 * 15730 * function isEven(n) { 15731 * return n % 2 == 0; 15732 * } 15733 * 15734 * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven)); 15735 * // => [1, 3, 5] 15736 */ 15737 function negate(predicate) { 15738 if (typeof predicate != 'function') { 15739 throw new TypeError(FUNC_ERROR_TEXT); 15740 } 15741 return function () { 15742 var args = arguments; 15743 switch (args.length) { 15744 case 0: return !predicate.call(this); 15745 case 1: return !predicate.call(this, args[0]); 15746 case 2: return !predicate.call(this, args[0], args[1]); 15747 case 3: return !predicate.call(this, args[0], args[1], args[2]); 15748 } 15749 return !predicate.apply(this, args); 15750 }; 15751 } 15752 15753 module.exports = negate; 15754 15755 15756 /***/ 15757 }), 15758/* 273 */ 15759/***/ (function (module, exports, __webpack_require__) { 15760 15761 var arrayMap = __webpack_require__(103), 15762 baseIteratee = __webpack_require__(7), 15763 basePickBy = __webpack_require__(274), 15764 getAllKeysIn = __webpack_require__(277); 15765 15766 /**
vendor: 6,063 bytes, lines 15767-15976
15767 * Creates an object composed of the `object` properties `predicate` returns 15768 * truthy for. The predicate is invoked with two arguments: (value, key). 15769 * 15770 * @static 15771 * @memberOf _ 15772 * @since 4.0.0 15773 * @category Object 15774 * @param {Object} object The source object. 15775 * @param {Function} [predicate=_.identity] The function invoked per property. 15776 * @returns {Object} Returns the new object. 15777 * @example 15778 * 15779 * var object = { 'a': 1, 'b': '2', 'c': 3 }; 15780 * 15781 * _.pickBy(object, _.isNumber); 15782 * // => { 'a': 1, 'c': 3 } 15783 */ 15784 function pickBy(object, predicate) { 15785 if (object == null) { 15786 return {}; 15787 } 15788 var props = arrayMap(getAllKeysIn(object), function (prop) { 15789 return [prop]; 15790 }); 15791 predicate = baseIteratee(predicate); 15792 return basePickBy(object, props, function (value, path) { 15793 return predicate(value, path[0]); 15794 }); 15795 } 15796 15797 module.exports = pickBy; 15798 15799 15800 /***/ 15801 }), 15802/* 274 */ 15803/***/ (function (module, exports, __webpack_require__) { 15804 15805 var baseGet = __webpack_require__(58), 15806 baseSet = __webpack_require__(275), 15807 castPath = __webpack_require__(35); 15808 15809 /** 15810 * The base implementation of `_.pickBy` without support for iteratee shorthands. 15811 * 15812 * @private 15813 * @param {Object} object The source object. 15814 * @param {string[]} paths The property paths to pick. 15815 * @param {Function} predicate The function invoked per property. 15816 * @returns {Object} Returns the new object. 15817 */ 15818 function basePickBy(object, paths, predicate) { 15819 var index = -1, 15820 length = paths.length, 15821 result = {}; 15822 15823 while (++index < length) { 15824 var path = paths[index], 15825 value = baseGet(object, path); 15826 15827 if (predicate(value, path)) { 15828 baseSet(result, castPath(path, object), value); 15829 } 15830 } 15831 return result; 15832 } 15833 15834 module.exports = basePickBy; 15835 15836 15837 /***/ 15838 }), 15839/* 275 */ 15840/***/ (function (module, exports, __webpack_require__) { 15841 15842 var assignValue = __webpack_require__(276), 15843 castPath = __webpack_require__(35), 15844 isIndex = __webpack_require__(51), 15845 isObject = __webpack_require__(6), 15846 toKey = __webpack_require__(21); 15847 15848 /** 15849 * The base implementation of `_.set`. 15850 * 15851 * @private 15852 * @param {Object} object The object to modify. 15853 * @param {Array|string} path The path of the property to set. 15854 * @param {*} value The value to set. 15855 * @param {Function} [customizer] The function to customize path creation. 15856 * @returns {Object} Returns `object`. 15857 */ 15858 function baseSet(object, path, value, customizer) { 15859 if (!isObject(object)) { 15860 return object; 15861 } 15862 path = castPath(path, object); 15863 15864 var index = -1, 15865 length = path.length, 15866 lastIndex = length - 1, 15867 nested = object; 15868 15869 while (nested != null && ++index < length) { 15870 var key = toKey(path[index]), 15871 newValue = value; 15872 15873 if (key === '__proto__' || key === 'constructor' || key === 'prototype') { 15874 return object; 15875 } 15876 15877 if (index != lastIndex) { 15878 var objValue = nested[key]; 15879 newValue = customizer ? customizer(objValue, key, nested) : undefined; 15880 if (newValue === undefined) { 15881 newValue = isObject(objValue) 15882 ? objValue 15883 : (isIndex(path[index + 1]) ? [] : {}); 15884 } 15885 } 15886 assignValue(nested, key, newValue); 15887 nested = nested[key]; 15888 } 15889 return object; 15890 } 15891 15892 module.exports = baseSet; 15893 15894 15895 /***/ 15896 }), 15897/* 276 */ 15898/***/ (function (module, exports, __webpack_require__) { 15899 15900 var baseAssignValue = __webpack_require__(116), 15901 eq = __webpack_require__(46); 15902 15903 /** Used for built-in method references. */ 15904 var objectProto = Object.prototype; 15905 15906 /** Used to check objects for own properties. */ 15907 var hasOwnProperty = objectProto.hasOwnProperty; 15908 15909 /** 15910 * Assigns `value` to `key` of `object` if the existing value is not equivalent 15911 * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) 15912 * for equality comparisons. 15913 * 15914 * @private 15915 * @param {Object} object The object to modify. 15916 * @param {string} key The key of the property to assign. 15917 * @param {*} value The value to assign. 15918 */ 15919 function assignValue(object, key, value) { 15920 var objValue = object[key]; 15921 if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || 15922 (value === undefined && !(key in object))) { 15923 baseAssignValue(object, key, value); 15924 } 15925 } 15926 15927 module.exports = assignValue; 15928 15929 15930 /***/ 15931 }), 15932/* 277 */ 15933/***/ (function (module, exports, __webpack_require__) { 15934 15935 var baseGetAllKeys = __webpack_require__(94), 15936 getSymbolsIn = __webpack_require__(278), 15937 keysIn = __webpack_require__(280); 15938 15939 /** 15940 * Creates an array of own and inherited enumerable property names and 15941 * symbols of `object`. 15942 * 15943 * @private 15944 * @param {Object} object The object to query. 15945 * @returns {Array} Returns the array of property names and symbols. 15946 */ 15947 function getAllKeysIn(object) { 15948 return baseGetAllKeys(object, keysIn, getSymbolsIn); 15949 } 15950 15951 module.exports = getAllKeysIn; 15952 15953 15954 /***/ 15955 }), 15956/* 278 */ 15957/***/ (function (module, exports, __webpack_require__) { 15958 15959 var arrayPush = __webpack_require__(49), 15960 getPrototype = __webpack_require__(279), 15961 getSymbols = __webpack_require__(95), 15962 stubArray = __webpack_require__(96); 15963 15964 /* Built-in method references for those with the same name as other `lodash` methods. */ 15965 var nativeGetSymbols = Object.getOwnPropertySymbols; 15966 15967 /** 15968 * Creates an array of the own and inherited enumerable symbols of `object`. 15969 * 15970 * @private 15971 * @param {Object} object The object to query. 15972 * @returns {Array} Returns the array of symbols. 15973 */ 15974 var getSymbolsIn = !nativeGetSymbols ? stubArray : function (object) { 15975 var result = []; 15976 while (object) {
vendor: 9,963 bytes, lines 15977-16345
15977 arrayPush(result, getSymbols(object)); 15978 object = getPrototype(object); 15979 } 15980 return result; 15981 }; 15982 15983 module.exports = getSymbolsIn; 15984 15985 15986 /***/ 15987 }), 15988/* 279 */ 15989/***/ (function (module, exports, __webpack_require__) { 15990 15991 var overArg = __webpack_require__(99); 15992 15993 /** Built-in value references. */ 15994 var getPrototype = overArg(Object.getPrototypeOf, Object); 15995 15996 module.exports = getPrototype; 15997 15998 15999 /***/ 16000 }), 16001/* 280 */ 16002/***/ (function (module, exports, __webpack_require__) { 16003 16004 var arrayLikeKeys = __webpack_require__(97), 16005 baseKeysIn = __webpack_require__(281), 16006 isArrayLike = __webpack_require__(12); 16007 16008 /** 16009 * Creates an array of the own and inherited enumerable property names of `object`. 16010 * 16011 * **Note:** Non-object values are coerced to objects. 16012 * 16013 * @static 16014 * @memberOf _ 16015 * @since 3.0.0 16016 * @category Object 16017 * @param {Object} object The object to query. 16018 * @returns {Array} Returns the array of property names. 16019 * @example 16020 * 16021 * function Foo() { 16022 * this.a = 1; 16023 * this.b = 2; 16024 * } 16025 * 16026 * Foo.prototype.c = 3; 16027 * 16028 * _.keysIn(new Foo); 16029 * // => ['a', 'b', 'c'] (iteration order is not guaranteed) 16030 */ 16031 function keysIn(object) { 16032 return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); 16033 } 16034 16035 module.exports = keysIn; 16036 16037 16038 /***/ 16039 }), 16040/* 281 */ 16041/***/ (function (module, exports, __webpack_require__) { 16042 16043 var isObject = __webpack_require__(6), 16044 isPrototype = __webpack_require__(55), 16045 nativeKeysIn = __webpack_require__(282); 16046 16047 /** Used for built-in method references. */ 16048 var objectProto = Object.prototype; 16049 16050 /** Used to check objects for own properties. */ 16051 var hasOwnProperty = objectProto.hasOwnProperty; 16052 16053 /** 16054 * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. 16055 * 16056 * @private 16057 * @param {Object} object The object to query. 16058 * @returns {Array} Returns the array of property names. 16059 */ 16060 function baseKeysIn(object) { 16061 if (!isObject(object)) { 16062 return nativeKeysIn(object); 16063 } 16064 var isProto = isPrototype(object), 16065 result = []; 16066 16067 for (var key in object) { 16068 if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { 16069 result.push(key); 16070 } 16071 } 16072 return result; 16073 } 16074 16075 module.exports = baseKeysIn; 16076 16077 16078 /***/ 16079 }), 16080/* 282 */ 16081/***/ (function (module, exports) { 16082 16083 /** 16084 * This function is like 16085 * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) 16086 * except that it includes inherited enumerable properties. 16087 * 16088 * @private 16089 * @param {Object} object The object to query. 16090 * @returns {Array} Returns the array of property names. 16091 */ 16092 function nativeKeysIn(object) { 16093 var result = []; 16094 if (object != null) { 16095 for (var key in Object(object)) { 16096 result.push(key); 16097 } 16098 } 16099 return result; 16100 } 16101 16102 module.exports = nativeKeysIn; 16103 16104 16105 /***/ 16106 }), 16107/* 283 */ 16108/***/ (function (module, exports, __webpack_require__) { 16109 16110 var baseKeys = __webpack_require__(54), 16111 getTag = __webpack_require__(56), 16112 isArguments = __webpack_require__(34), 16113 isArray = __webpack_require__(1), 16114 isArrayLike = __webpack_require__(12), 16115 isBuffer = __webpack_require__(50), 16116 isPrototype = __webpack_require__(55), 16117 isTypedArray = __webpack_require__(52); 16118 16119 /** `Object#toString` result references. */ 16120 var mapTag = '[object Map]', 16121 setTag = '[object Set]'; 16122 16123 /** Used for built-in method references. */ 16124 var objectProto = Object.prototype; 16125 16126 /** Used to check objects for own properties. */ 16127 var hasOwnProperty = objectProto.hasOwnProperty; 16128 16129 /** 16130 * Checks if `value` is an empty object, collection, map, or set. 16131 * 16132 * Objects are considered empty if they have no own enumerable string keyed 16133 * properties. 16134 * 16135 * Array-like values such as `arguments` objects, arrays, buffers, strings, or 16136 * jQuery-like collections are considered empty if they have a `length` of `0`. 16137 * Similarly, maps and sets are considered empty if they have a `size` of `0`. 16138 * 16139 * @static 16140 * @memberOf _ 16141 * @since 0.1.0 16142 * @category Lang 16143 * @param {*} value The value to check. 16144 * @returns {boolean} Returns `true` if `value` is empty, else `false`. 16145 * @example 16146 * 16147 * _.isEmpty(null); 16148 * // => true 16149 * 16150 * _.isEmpty(true); 16151 * // => true 16152 * 16153 * _.isEmpty(1); 16154 * // => true 16155 * 16156 * _.isEmpty([1, 2, 3]); 16157 * // => false 16158 * 16159 * _.isEmpty({ 'a': 1 }); 16160 * // => false 16161 */ 16162 function isEmpty(value) { 16163 if (value == null) { 16164 return true; 16165 } 16166 if (isArrayLike(value) && 16167 (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' || 16168 isBuffer(value) || isTypedArray(value) || isArguments(value))) { 16169 return !value.length; 16170 } 16171 var tag = getTag(value); 16172 if (tag == mapTag || tag == setTag) { 16173 return !value.size; 16174 } 16175 if (isPrototype(value)) { 16176 return !baseKeys(value).length; 16177 } 16178 for (var key in value) { 16179 if (hasOwnProperty.call(value, key)) { 16180 return false; 16181 } 16182 } 16183 return true; 16184 } 16185 16186 module.exports = isEmpty; 16187 16188 16189 /***/ 16190 }), 16191/* 284 */ 16192/***/ (function (module, exports, __webpack_require__) { 16193 16194 var baseAssignValue = __webpack_require__(116), 16195 baseForOwn = __webpack_require__(113), 16196 baseIteratee = __webpack_require__(7); 16197 16198 /** 16199 * Creates an object with the same keys as `object` and values generated 16200 * by running each own enumerable string keyed property of `object` thru 16201 * `iteratee`. The iteratee is invoked with three arguments: 16202 * (value, key, object). 16203 * 16204 * @static 16205 * @memberOf _ 16206 * @since 2.4.0 16207 * @category Object 16208 * @param {Object} object The object to iterate over. 16209 * @param {Function} [iteratee=_.identity] The function invoked per iteration. 16210 * @returns {Object} Returns the new mapped object. 16211 * @see _.mapKeys 16212 * @example 16213 * 16214 * var users = { 16215 * 'fred': { 'user': 'fred', 'age': 40 }, 16216 * 'pebbles': { 'user': 'pebbles', 'age': 1 } 16217 * }; 16218 * 16219 * _.mapValues(users, function(o) { return o.age; }); 16220 * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) 16221 * 16222 * // The `_.property` iteratee shorthand. 16223 * _.mapValues(users, 'age'); 16224 * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) 16225 */ 16226 function mapValues(object, iteratee) { 16227 var result = {}; 16228 iteratee = baseIteratee(iteratee, 3); 16229 16230 baseForOwn(object, function (value, key, object) { 16231 baseAssignValue(result, key, iteratee(value, key, object)); 16232 }); 16233 return result; 16234 } 16235 16236 module.exports = mapValues; 16237 16238 16239 /***/ 16240 }), 16241/* 285 */ 16242/***/ (function (module, exports, __webpack_require__) { 16243 16244 var arrayEach = __webpack_require__(286), 16245 baseEach = __webpack_require__(112), 16246 castFunction = __webpack_require__(287), 16247 isArray = __webpack_require__(1); 16248 16249 /** 16250 * Iterates over elements of `collection` and invokes `iteratee` for each element. 16251 * The iteratee is invoked with three arguments: (value, index|key, collection). 16252 * Iteratee functions may exit iteration early by explicitly returning `false`. 16253 * 16254 * **Note:** As with other "Collections" methods, objects with a "length" 16255 * property are iterated like arrays. To avoid this behavior use `_.forIn` 16256 * or `_.forOwn` for object iteration. 16257 * 16258 * @static 16259 * @memberOf _ 16260 * @since 0.1.0 16261 * @alias each 16262 * @category Collection 16263 * @param {Array|Object} collection The collection to iterate over. 16264 * @param {Function} [iteratee=_.identity] The function invoked per iteration. 16265 * @returns {Array|Object} Returns `collection`. 16266 * @see _.forEachRight 16267 * @example 16268 * 16269 * _.forEach([1, 2], function(value) { 16270 * console.log(value); 16271 * }); 16272 * // => Logs `1` then `2`. 16273 * 16274 * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) { 16275 * console.log(key); 16276 * }); 16277 * // => Logs 'a' then 'b' (iteration order is not guaranteed). 16278 */ 16279 function forEach(collection, iteratee) { 16280 var func = isArray(collection) ? arrayEach : baseEach; 16281 return func(collection, castFunction(iteratee)); 16282 } 16283 16284 module.exports = forEach; 16285 16286 16287 /***/ 16288 }), 16289/* 286 */ 16290/***/ (function (module, exports) { 16291 16292 /** 16293 * A specialized version of `_.forEach` for arrays without support for 16294 * iteratee shorthands. 16295 * 16296 * @private 16297 * @param {Array} [array] The array to iterate over. 16298 * @param {Function} iteratee The function invoked per iteration. 16299 * @returns {Array} Returns `array`. 16300 */ 16301 function arrayEach(array, iteratee) { 16302 var index = -1, 16303 length = array == null ? 0 : array.length; 16304 16305 while (++index < length) { 16306 if (iteratee(array[index], index, array) === false) { 16307 break; 16308 } 16309 } 16310 return array; 16311 } 16312 16313 module.exports = arrayEach; 16314 16315 16316 /***/ 16317 }), 16318/* 287 */ 16319/***/ (function (module, exports, __webpack_require__) { 16320 16321 var identity = __webpack_require__(60); 16322 16323 /** 16324 * Casts `value` to `identity` if it's not a function. 16325 * 16326 * @private 16327 * @param {*} value The value to inspect. 16328 * @returns {Function} Returns cast function. 16329 */ 16330 function castFunction(value) { 16331 return typeof value == 'function' ? value : identity; 16332 } 16333 16334 module.exports = castFunction; 16335 16336 16337 /***/ 16338 }), 16339/* 288 */ 16340/***/ (function (module, exports, __webpack_require__) { 16341 16342 var debounce = __webpack_require__(289), 16343 isObject = __webpack_require__(6); 16344 16345 /** Error message constants. */
vendor: 4,353 bytes, lines 16346-16446
16346 var FUNC_ERROR_TEXT = 'Expected a function'; 16347 16348 /** 16349 * Creates a throttled function that only invokes `func` at most once per 16350 * every `wait` milliseconds. The throttled function comes with a `cancel` 16351 * method to cancel delayed `func` invocations and a `flush` method to 16352 * immediately invoke them. Provide `options` to indicate whether `func` 16353 * should be invoked on the leading and/or trailing edge of the `wait` 16354 * timeout. The `func` is invoked with the last arguments provided to the 16355 * throttled function. Subsequent calls to the throttled function return the 16356 * result of the last `func` invocation. 16357 * 16358 * **Note:** If `leading` and `trailing` options are `true`, `func` is 16359 * invoked on the trailing edge of the timeout only if the throttled function 16360 * is invoked more than once during the `wait` timeout. 16361 * 16362 * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred 16363 * until to the next tick, similar to `setTimeout` with a timeout of `0`. 16364 * 16365 * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) 16366 * for details over the differences between `_.throttle` and `_.debounce`. 16367 * 16368 * @static 16369 * @memberOf _ 16370 * @since 0.1.0 16371 * @category Function 16372 * @param {Function} func The function to throttle. 16373 * @param {number} [wait=0] The number of milliseconds to throttle invocations to. 16374 * @param {Object} [options={}] The options object. 16375 * @param {boolean} [options.leading=true] 16376 * Specify invoking on the leading edge of the timeout. 16377 * @param {boolean} [options.trailing=true] 16378 * Specify invoking on the trailing edge of the timeout. 16379 * @returns {Function} Returns the new throttled function. 16380 * @example 16381 * 16382 * // Avoid excessively updating the position while scrolling. 16383 * jQuery(window).on('scroll', _.throttle(updatePosition, 100)); 16384 * 16385 * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes. 16386 * var throttled = _.throttle(renewToken, 300000, { 'trailing': false }); 16387 * jQuery(element).on('click', throttled); 16388 * 16389 * // Cancel the trailing throttled invocation. 16390 * jQuery(window).on('popstate', throttled.cancel); 16391 */ 16392 function throttle(func, wait, options) { 16393 var leading = true, 16394 trailing = true; 16395 16396 if (typeof func != 'function') { 16397 throw new TypeError(FUNC_ERROR_TEXT); 16398 } 16399 if (isObject(options)) { 16400 leading = 'leading' in options ? !!options.leading : leading; 16401 trailing = 'trailing' in options ? !!options.trailing : trailing; 16402 } 16403 return debounce(func, wait, { 16404 'leading': leading, 16405 'maxWait': wait, 16406 'trailing': trailing 16407 }); 16408 } 16409 16410 module.exports = throttle; 16411 16412 16413 /***/ 16414 }), 16415/* 289 */ 16416/***/ (function (module, exports, __webpack_require__) { 16417 16418 var isObject = __webpack_require__(6), 16419 now = __webpack_require__(290), 16420 toNumber = __webpack_require__(61); 16421 16422 /** Error message constants. */ 16423 var FUNC_ERROR_TEXT = 'Expected a function'; 16424 16425 /* Built-in method references for those with the same name as other `lodash` methods. */ 16426 var nativeMax = Math.max, 16427 nativeMin = Math.min; 16428 16429 /** 16430 * Creates a debounced function that delays invoking `func` until after `wait` 16431 * milliseconds have elapsed since the last time the debounced function was 16432 * invoked. The debounced function comes with a `cancel` method to cancel 16433 * delayed `func` invocations and a `flush` method to immediately invoke them. 16434 * Provide `options` to indicate whether `func` should be invoked on the 16435 * leading and/or trailing edge of the `wait` timeout. The `func` is invoked 16436 * with the last arguments provided to the debounced function. Subsequent 16437 * calls to the debounced function return the result of the last `func` 16438 * invocation. 16439 * 16440 * **Note:** If `leading` and `trailing` options are `true`, `func` is 16441 * invoked on the trailing edge of the timeout only if the debounced function 16442 * is invoked more than once during the `wait` timeout. 16443 * 16444 * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred 16445 * until to the next tick, similar to `setTimeout` with a timeout of `0`. 16446 *
16447 * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) 16448 * for details over the differences between `_.debounce` and `_.throttle`. 16449 * 16450 * @static 16451 * @memberOf _ 16452 * @since 0.1.0 16453 * @category Function 16454 * @param {Function} func The function to debounce. 16455 * @param {number} [wait=0] The number of milliseconds to delay. 16456 * @param {Object} [options={}] The options object. 16457 * @param {boolean} [options.leading=false] 16458 * Specify invoking on the leading edge of the timeout. 16459 * @param {number} [options.maxWait] 16460 * The maximum time `func` is allowed to be delayed before it's invoked. 16461 * @param {boolean} [options.trailing=true] 16462 * Specify invoking on the trailing edge of the timeout. 16463 * @returns {Function} Returns the new debounced function. 16464 * @example 16465 * 16466 * // Avoid costly calculations while the window size is in flux. 16467 * jQuery(window).on('resize', _.debounce(calculateLayout, 150)); 16468 * 16469 * // Invoke `sendMail` when clicked, debouncing subsequent calls. 16470 * jQuery(element).on('click', _.debounce(sendMail, 300, { 16471 * 'leading': true, 16472 * 'trailing': false 16473 * })); 16474 * 16475 * // Ensure `batchLog` is invoked once after 1 second of debounced calls. 16476 * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 }); 16477 * var source = new EventSource('/stream'); 16478 * jQuery(source).on('message', debounced); 16479 * 16480 * // Cancel the trailing debounced invocation. 16481 * jQuery(window).on('popstate', debounced.cancel); 16482 */ 16483 function debounce(func, wait, options) { 16484 var lastArgs, 16485 lastThis, 16486 maxWait, 16487 result, 16488 timerId, 16489 lastCallTime, 16490 lastInvokeTime = 0, 16491 leading = false, 16492 maxing = false, 16493 trailing = true; 16494 16495 if (typeof func != 'function') { 16496 throw new TypeError(FUNC_ERROR_TEXT); 16497 } 16498 wait = toNumber(wait) || 0; 16499 if (isObject(options)) { 16500 leading = !!options.leading; 16501 maxing = 'maxWait' in options; 16502 maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait; 16503 trailing = 'trailing' in options ? !!options.trailing : trailing; 16504 } 16505 16506 function invokeFunc(time) { 16507 var args = lastArgs, 16508 thisArg = lastThis; 16509 16510 lastArgs = lastThis = undefined; 16511 lastInvokeTime = time; 16512 result = func.apply(thisArg, args); 16513 return result; 16514 } 16515 16516 function leadingEdge(time) { 16517 // Reset any `maxWait` timer. 16518 lastInvokeTime = time; 16519 // Start the timer for the trailing edge. 16520 timerId = setTimeout(timerExpired, wait); 16521 // Invoke the leading edge. 16522 return leading ? invokeFunc(time) : result; 16523 } 16524 16525 function remainingWait(time) { 16526 var timeSinceLastCall = time - lastCallTime, 16527 timeSinceLastInvoke = time - lastInvokeTime, 16528 timeWaiting = wait - timeSinceLastCall; 16529 16530 return maxing 16531 ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) 16532 : timeWaiting; 16533 } 16534 16535 function shouldInvoke(time) { 16536 var timeSinceLastCall = time - lastCallTime, 16537 timeSinceLastInvoke = time - lastInvokeTime; 16538 16539 // Either this is the first call, activity has stopped and we're at the 16540 // trailing edge, the system time has gone backwards and we're treating 16541 // it as the trailing edge, or we've hit the `maxWait` limit. 16542 return (lastCallTime === undefined || (timeSinceLastCall >= wait) || 16543 (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait)); 16544 } 16545 16546 function timerExpired() { 16547 var time = now(); 16548 if (shouldInvoke(time)) { 16549 return trailingEdge(time); 16550 } 16551 // Restart the timer. 16552 timerId = setTimeout(timerExpired, remainingWait(time)); 16553 } 16554 16555 function trailingEdge(time) { 16556 timerId = undefined; 16557 16558 // Only invoke if we have `lastArgs` which means `func` has been 16559 // debounced at least once. 16560 if (trailing && lastArgs) { 16561 return invokeFunc(time); 16562 } 16563 lastArgs = lastThis = undefined; 16564 return result; 16565 } 16566 16567 function cancel() { 16568 if (timerId !== undefined) { 16569 clearTimeout(timerId); 16570 } 16571 lastInvokeTime = 0; 16572 lastArgs = lastCallTime = lastThis = timerId = undefined; 16573 } 16574 16575 function flush() { 16576 return timerId === undefined ? result : trailingEdge(now()); 16577 } 16578 16579 function debounced() { 16580 var time = now(), 16581 isInvoking = shouldInvoke(time); 16582 16583 lastArgs = arguments; 16584 lastThis = this; 16585 lastCallTime = time; 16586 16587 if (isInvoking) { 16588 if (timerId === undefined) { 16589 return leadingEdge(lastCallTime); 16590 } 16591 if (maxing) { 16592 // Handle invocations in a tight loop. 16593 clearTimeout(timerId); 16594 timerId = setTimeout(timerExpired, wait); 16595 return invokeFunc(lastCallTime); 16596 } 16597 } 16598 if (timerId === undefined) { 16599 timerId = setTimeout(timerExpired, wait); 16600 } 16601 return result; 16602 } 16603 debounced.cancel = cancel; 16604 debounced.flush = flush; 16605 return debounced; 16606 } 16607 16608 module.exports = debounce; 16609 16610 16611 /***/ 16612 }), 16613/* 290 */ 16614/***/ (function (module, exports, __webpack_require__) { 16615 16616 var root = __webpack_require__(5); 16617 16618 /** 16619 * Gets the timestamp of the number of milliseconds that have elapsed since 16620 * the Unix epoch (1 January 1970 00:00:00 UTC). 16621 * 16622 * @static 16623 * @memberOf _ 16624 * @since 2.4.0 16625 * @category Date 16626 * @returns {number} Returns the timestamp. 16627 * @example 16628 * 16629 * _.defer(function(stamp) { 16630 * console.log(_.now() - stamp); 16631 * }, _.now()); 16632 * // => Logs the number of milliseconds it took for the deferred invocation. 16633 */ 16634 var now = function () { 16635 return root.Date.now(); 16636 }; 16637 16638 module.exports = now; 16639 16640 16641 /***/ 16642 }), 16643/* 291 */ 16644/***/ (function (module, exports, __webpack_require__) { 16645 16646 "use strict"; 16647 16648 16649 var _interopRequireDefault = __webpack_require__(0); 16650 16651 var _typeof2 = _interopRequireDefault(__webpack_require__(13)); 16652 16653 Object.defineProperty(exports, "__esModule", { 16654 value: true 16655 }); 16656 exports.setStyle = setStyle; 16657 exports.getStyle = getStyle; 16658 exports.getProperty = getProperty; 16659 exports.matchSelector = matchSelector; 16660 exports.getQuerySelector = getQuerySelector; 16661 exports.getValidDocument = getValidDocument; 16662 exports.queryDocument = queryDocument; 16663 exports.elementContains = elementContains; 16664 exports.isSiblingNode = isSiblingNode; 16665 exports.getChildElements = getChildElements; 16666 exports.getSiblingElements = getSiblingElements; 16667 exports.getRefType = getRefType; 16668 exports.getClosestElement = void 0; 16669 16670 var _shared = __webpack_require__(10); 16671 16672 var _constants = __webpack_require__(2); 16673 /* eslint-env browser */ 16674 16675 16676 var ELEMENT_MATCHES = _shared.IX2BrowserSupport.ELEMENT_MATCHES; 16677 var _constants$IX2EngineC = _constants.IX2EngineConstants, 16678 IX2_ID_DELIMITER = _constants$IX2EngineC.IX2_ID_DELIMITER, 16679 HTML_ELEMENT = _constants$IX2EngineC.HTML_ELEMENT, 16680 PLAIN_OBJECT = _constants$IX2EngineC.PLAIN_OBJECT, 16681 WF_PAGE = _constants$IX2EngineC.WF_PAGE; 16682 16683 function setStyle(element, prop, value) { 16684 // $FlowIgnore â flow complains that prop should be a number. Will need to update upstream 16685 element.style[prop] = value; 16686 } 16687 16688 function getStyle(element, prop) { 16689 // $FlowIgnore â flow complains that prop should be a number. Will need to update upstream 16690 return element.style[prop]; 16691 } 16692 16693 function getProperty(element, prop) { 16694 // $FlowIgnore â flow complains that prop should be a number. Will need to update upstream 16695 return element[prop]; 16696 } 16697 16698 function matchSelector(selector) { 16699 // $FlowIgnore â ELEMENT_MATCHES is the name of the method on the element's prototype depending on browser 16700 return function (element) { 16701 return element[ELEMENT_MATCHES](selector); 16702 }; 16703 } 16704 16705 function getQuerySelector(_ref) { 16706 var id = _ref.id, 16707 selector = _ref.selector; 16708 16709 if (id) { 16710 var nodeId = id; 16711 16712 if (id.indexOf(IX2_ID_DELIMITER) !== -1) { 16713 var pair = id.split(IX2_ID_DELIMITER); 16714 var pageId = pair[0]; 16715 nodeId = pair[1]; // Short circuit query if we're on the wrong page 16716 // $FlowIgnore â if documentElement is null crash 16717 16718 if (pageId !== document.documentElement.getAttribute(WF_PAGE)) { 16719 return null; 16720 } 16721 } 16722 16723 return "[data-w-id^=\"".concat(nodeId, "\"]"); 16724 } 16725 16726 return selector; 16727 } 16728 16729 function getValidDocument(pageId) { 16730 if (pageId == null || // $FlowIgnore â if documentElement is null crash 16731 pageId === document.documentElement.getAttribute(WF_PAGE)) { 16732 return document; 16733 } 16734 16735 return null; 16736 } 16737 16738 function queryDocument(baseSelector, descendantSelector) { 16739 return Array.prototype.slice.call(document.querySelectorAll(descendantSelector ? baseSelector + ' ' + descendantSelector : baseSelector)); 16740 } 16741 16742 function elementContains(parent, child) { 16743 return parent.contains(child); 16744 } 16745 16746 function isSiblingNode(a, b) { 16747 return a !== b && a.parentNode === b.parentNode; 16748 } 16749 16750 function getChildElements(sourceElements) { 16751 var childElements = []; 16752 16753 for (var i = 0, _ref2 = sourceElements || [], length = _ref2.length; i < length; i++) { 16754 var children = sourceElements[i].children; 16755 var childCount = children.length; 16756 16757 if (!childCount) { 16758 continue; 16759 } 16760 16761 for (var j = 0; j < childCount; j++) { 16762 childElements.push(children[j]); 16763 } 16764 } 16765 16766 return childElements; 16767 } // $FlowFixMe 16768 16769 16770 function getSiblingElements() { 16771 var sourceElements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; 16772 var elements = []; 16773 var parentCache = []; 16774 16775 for (var i = 0, length = sourceElements.length; i < length; i++) { 16776 var parentNode = sourceElements[i].parentNode; 16777 16778 if (!parentNode || !parentNode.children || !parentNode.children.length) { 16779 continue; 16780 } 16781 16782 if (parentCache.indexOf(parentNode) !== -1) { 16783 continue; 16784 } 16785 16786 parentCache.push(parentNode); 16787 var el = parentNode.firstElementChild; 16788 16789 while (el != null) { 16790 if (sourceElements.indexOf(el) === -1) { 16791 elements.push(el); 16792 } 16793 16794 el = el.nextElementSibling; 16795 } 16796 } 16797 16798 return elements; 16799 } 16800 16801 var getClosestElement = Element.prototype.closest ? function (element, selector) { 16802 // $FlowIgnore â ELEMENT_MATCHES is the name of the method on the element's prototype depending on browser 16803 if (!document.documentElement.contains(element)) { 16804 return null; 16805 } 16806 16807 return element.closest(selector); 16808 } : function (element, selector) { 16809 // $FlowIgnore â if documentElement is null crash 16810 if (!document.documentElement.contains(element)) { 16811 return null; 16812 } 16813 16814 var el = element; 16815 16816 do { 16817 // $FlowIgnore â if documentElement is null crash 16818 if (el[ELEMENT_MATCHES] && el[ELEMENT_MATCHES](selector)) { 16819 return el; 16820 } 16821 16822 el = el.parentNode; 16823 } while (el != null); 16824 16825 return null; 16826 }; 16827 exports.getClosestElement = getClosestElement; 16828 16829 function getRefType(ref) { 16830 if (ref != null && (0, _typeof2["default"])(ref) == 'object') { 16831 return ref instanceof Element ? HTML_ELEMENT : PLAIN_OBJECT; 16832 } 16833 16834 return null; 16835 } 16836 16837 /***/ 16838 }), 16839/* 292 */ 16840/***/ (function (module, exports, __webpack_require__) { 16841 16842 "use strict"; 16843 16844 16845 var _interopRequireDefault2 = __webpack_require__(0); 16846 16847 var _defineProperty2 = _interopRequireDefault2(__webpack_require__(27)); 16848 16849 var _typeof2 = _interopRequireDefault2(__webpack_require__(13)); 16850 16851 var _default2; 16852 16853 var _interopRequireDefault = __webpack_require__(0); 16854 16855 Object.defineProperty(exports, "__esModule", { 16856 value: true 16857 }); 16858 exports["default"] = void 0; 16859 16860 var _extends2 = _interopRequireDefault(__webpack_require__(28)); 16861 16862 var _flow = _interopRequireDefault(__webpack_require__(293)); 16863 16864 var _get = _interopRequireDefault(__webpack_require__(57)); 16865 16866 var _clamp = _interopRequireDefault(__webpack_require__(312)); 16867 16868 var _constants = __webpack_require__(2); 16869 16870 var _IX2VanillaEngine = __webpack_require__(115); 16871 16872 var _IX2EngineActions = __webpack_require__(62); 16873 16874 var _shared = __webpack_require__(10); 16875 /* eslint-env browser */ 16876 16877 16878 var _constants$EventTypeC = _constants.EventTypeConsts, 16879 MOUSE_CLICK = _constants$EventTypeC.MOUSE_CLICK, 16880 MOUSE_SECOND_CLICK = _constants$EventTypeC.MOUSE_SECOND_CLICK, 16881 MOUSE_DOWN = _constants$EventTypeC.MOUSE_DOWN, 16882 MOUSE_UP = _constants$EventTypeC.MOUSE_UP, 16883 MOUSE_OVER = _constants$EventTypeC.MOUSE_OVER, 16884 MOUSE_OUT = _constants$EventTypeC.MOUSE_OUT, 16885 DROPDOWN_CLOSE = _constants$EventTypeC.DROPDOWN_CLOSE, 16886 DROPDOWN_OPEN = _constants$EventTypeC.DROPDOWN_OPEN, 16887 SLIDER_ACTIVE = _constants$EventTypeC.SLIDER_ACTIVE, 16888 SLIDER_INACTIVE = _constants$EventTypeC.SLIDER_INACTIVE, 16889 TAB_ACTIVE = _constants$EventTypeC.TAB_ACTIVE, 16890 TAB_INACTIVE = _constants$EventTypeC.TAB_INACTIVE, 16891 NAVBAR_CLOSE = _constants$EventTypeC.NAVBAR_CLOSE, 16892 NAVBAR_OPEN = _constants$EventTypeC.NAVBAR_OPEN, 16893 MOUSE_MOVE = _constants$EventTypeC.MOUSE_MOVE, 16894 PAGE_SCROLL_DOWN = _constants$EventTypeC.PAGE_SCROLL_DOWN, 16895 SCROLL_INTO_VIEW = _constants$EventTypeC.SCROLL_INTO_VIEW,
16896 SCROLL_OUT_OF_VIEW = _constants$EventTypeC.SCROLL_OUT_OF_VIEW, 16897 PAGE_SCROLL_UP = _constants$EventTypeC.PAGE_SCROLL_UP, 16898 SCROLLING_IN_VIEW = _constants$EventTypeC.SCROLLING_IN_VIEW, 16899 PAGE_FINISH = _constants$EventTypeC.PAGE_FINISH, 16900 ECOMMERCE_CART_CLOSE = _constants$EventTypeC.ECOMMERCE_CART_CLOSE, 16901 ECOMMERCE_CART_OPEN = _constants$EventTypeC.ECOMMERCE_CART_OPEN, 16902 PAGE_START = _constants$EventTypeC.PAGE_START, 16903 PAGE_SCROLL = _constants$EventTypeC.PAGE_SCROLL; 16904 var COMPONENT_ACTIVE = 'COMPONENT_ACTIVE'; 16905 var COMPONENT_INACTIVE = 'COMPONENT_INACTIVE'; 16906 var COLON_DELIMITER = _constants.IX2EngineConstants.COLON_DELIMITER; 16907 var getNamespacedParameterId = _shared.IX2VanillaUtils.getNamespacedParameterId; 16908 16909 var composableFilter = function composableFilter(predicate) { 16910 return function (options) { 16911 if ((0, _typeof2["default"])(options) === 'object' && predicate(options)) { 16912 return true; 16913 } 16914 16915 return options; 16916 }; 16917 }; 16918 16919 var isElement = composableFilter(function (_ref) { 16920 var element = _ref.element, 16921 nativeEvent = _ref.nativeEvent; 16922 return element === nativeEvent.target; 16923 }); 16924 var containsElement = composableFilter(function (_ref2) { 16925 var element = _ref2.element, 16926 nativeEvent = _ref2.nativeEvent; 16927 return element.contains(nativeEvent.target); 16928 }); 16929 var isOrContainsElement = (0, _flow["default"])([isElement, containsElement]); 16930 16931 var getAutoStopEvent = function getAutoStopEvent(store, autoStopEventId) { 16932 if (autoStopEventId) { 16933 var _store$getState = store.getState(), 16934 ixData = _store$getState.ixData; 16935 16936 var events = ixData.events; 16937 var eventToStop = events[autoStopEventId]; 16938 16939 if (eventToStop && !AUTO_STOP_DISABLED_EVENTS[eventToStop.eventTypeId]) { 16940 return eventToStop; 16941 } 16942 } 16943 16944 return null; 16945 }; 16946 16947 var hasAutoStopEvent = function hasAutoStopEvent(_ref3) { 16948 var store = _ref3.store, 16949 event = _ref3.event; 16950 var eventAction = event.action; 16951 var autoStopEventId = eventAction.config.autoStopEventId; 16952 return Boolean(getAutoStopEvent(store, autoStopEventId)); 16953 }; 16954 16955 var actionGroupCreator = function actionGroupCreator(_ref4, state) { 16956 var store = _ref4.store, 16957 event = _ref4.event, 16958 element = _ref4.element, 16959 eventStateKey = _ref4.eventStateKey; 16960 var eventAction = event.action, 16961 eventId = event.id; 16962 var _eventAction$config = eventAction.config, 16963 actionListId = _eventAction$config.actionListId, 16964 autoStopEventId = _eventAction$config.autoStopEventId; 16965 var eventToStop = getAutoStopEvent(store, autoStopEventId); 16966 16967 if (eventToStop) { 16968 (0, _IX2VanillaEngine.stopActionGroup)({ 16969 store: store, 16970 eventId: autoStopEventId, 16971 eventTarget: element, 16972 eventStateKey: autoStopEventId + COLON_DELIMITER + eventStateKey.split(COLON_DELIMITER)[1], 16973 actionListId: (0, _get["default"])(eventToStop, 'action.config.actionListId') 16974 }); 16975 } 16976 16977 (0, _IX2VanillaEngine.stopActionGroup)({ 16978 store: store, 16979 eventId: eventId, 16980 eventTarget: element, 16981 eventStateKey: eventStateKey, 16982 actionListId: actionListId 16983 }); 16984 (0, _IX2VanillaEngine.startActionGroup)({ 16985 store: store, 16986 eventId: eventId, 16987 eventTarget: element, 16988 eventStateKey: eventStateKey, 16989 actionListId: actionListId 16990 }); 16991 return state; 16992 }; // $FlowFixMe 16993 16994 16995 var withFilter = function withFilter(filter, handler) { 16996 return function (options, state) { 16997 return (// $FlowFixMe 16998 filter(options, state) === true ? handler(options, state) : state 16999 ); 17000 }; 17001 }; 17002 17003 var baseActionGroupOptions = { 17004 handler: withFilter(isOrContainsElement, actionGroupCreator) 17005 }; 17006 var baseActivityActionGroupOptions = (0, _extends2["default"])({}, baseActionGroupOptions, { 17007 types: [COMPONENT_ACTIVE, COMPONENT_INACTIVE].join(' ') 17008 }); 17009 var SCROLL_EVENT_TYPES = [{ 17010 target: window, 17011 types: 'resize orientationchange', 17012 throttle: true 17013 }, {
17014 target: document, 17015 types: 'scroll wheel readystatechange IX2_PAGE_UPDATE', 17016 throttle: true 17017 }]; 17018 var MOUSE_OVER_OUT_TYPES = 'mouseover mouseout'; 17019 var baseScrollActionGroupOptions = { 17020 types: SCROLL_EVENT_TYPES 17021 }; 17022 var AUTO_STOP_DISABLED_EVENTS = { 17023 PAGE_START: PAGE_START, 17024 PAGE_FINISH: PAGE_FINISH 17025 }; 17026 17027 var getDocumentState = function () { 17028 var supportOffset = window.pageXOffset !== undefined; 17029 var isCSS1Compat = document.compatMode === 'CSS1Compat'; 17030 var rootElement = isCSS1Compat ? document.documentElement : document.body; 17031 return function () { 17032 return { 17033 // $FlowFixMe 17034 scrollLeft: supportOffset ? window.pageXOffset : rootElement.scrollLeft, 17035 // $FlowFixMe 17036 scrollTop: supportOffset ? window.pageYOffset : rootElement.scrollTop, 17037 // required to remove elasticity in Safari scrolling. 17038 stiffScrollTop: (0, _clamp["default"])( // $FlowFixMe 17039 supportOffset ? window.pageYOffset : rootElement.scrollTop, 0, // $FlowFixMe 17040 rootElement.scrollHeight - window.innerHeight), 17041 // $FlowFixMe 17042 scrollWidth: rootElement.scrollWidth, 17043 // $FlowFixMe 17044 scrollHeight: rootElement.scrollHeight, 17045 // $FlowFixMe 17046 clientWidth: rootElement.clientWidth, 17047 // $FlowFixMe 17048 clientHeight: rootElement.clientHeight, 17049 innerWidth: window.innerWidth, 17050 innerHeight: window.innerHeight 17051 }; 17052 }; 17053 }(); 17054 17055 var areBoxesIntersecting = function areBoxesIntersecting(a, b) { 17056 return !(a.left > b.right || a.right < b.left || a.top > b.bottom || a.bottom < b.top); 17057 }; 17058 17059 var isElementHovered = function isElementHovered(_ref5) { 17060 var element = _ref5.element, 17061 nativeEvent = _ref5.nativeEvent; 17062 var type = nativeEvent.type, 17063 target = nativeEvent.target, 17064 relatedTarget = nativeEvent.relatedTarget; 17065 var containsTarget = element.contains(target); 17066 17067 if (type === 'mouseover' && containsTarget) { 17068 return true; 17069 } 17070 17071 var containsRelated = element.contains(relatedTarget); 17072 17073 if (type === 'mouseout' && containsTarget && containsRelated) { 17074 return true; 17075 } 17076 17077 return false; 17078 }; 17079 17080 var isElementVisible = function isElementVisible(options) { 17081 var element = options.element, 17082 config = options.event.config; 17083 17084 var _getDocumentState = getDocumentState(), 17085 clientWidth = _getDocumentState.clientWidth, 17086 clientHeight = _getDocumentState.clientHeight; 17087 17088 var scrollOffsetValue = config.scrollOffsetValue; 17089 var scrollOffsetUnit = config.scrollOffsetUnit; 17090 var isPX = scrollOffsetUnit === 'PX'; 17091 var offsetPadding = isPX ? scrollOffsetValue : clientHeight * (scrollOffsetValue || 0) / 100; 17092 return areBoxesIntersecting(element.getBoundingClientRect(), { 17093 left: 0, 17094 top: offsetPadding, 17095 right: clientWidth, 17096 bottom: clientHeight - offsetPadding 17097 }); 17098 }; 17099 17100 var whenComponentActiveChange = function whenComponentActiveChange(handler) { 17101 return function (options, oldState) { 17102 var type = options.nativeEvent.type; // prettier-ignore 17103 17104 var isActive = [COMPONENT_ACTIVE, COMPONENT_INACTIVE].indexOf(type) !== -1 ? type === COMPONENT_ACTIVE : oldState.isActive; 17105 var newState = (0, _extends2["default"])({}, oldState, { 17106 isActive: isActive 17107 }); 17108 17109 if (!oldState || newState.isActive !== oldState.isActive) { 17110 return handler(options, newState) || newState; 17111 } 17112 17113 return newState; 17114 }; 17115 }; 17116 17117 var whenElementHoverChange = function whenElementHoverChange(handler) { 17118 return function (options, oldState) { 17119 var newState = { 17120 elementHovered: isElementHovered(options) 17121 }; 17122 17123 if (oldState ? newState.elementHovered !== oldState.elementHovered : newState.elementHovered) { 17124 return handler(options, newState) || newState; 17125 } 17126 17127 return newState; 17128 }; 17129 }; // $FlowFixMe 17130 17131 17132 var whenElementVisibiltyChange = function whenElementVisibiltyChange(handler) { 17133 return function (options, oldState) { 17134 var newState = (0, _extends2["default"])({}, oldState, { 17135 elementVisible: isElementVisible(options) 17136 }); 17137 17138 if (oldState ? newState.elementVisible !== oldState.elementVisible : newState.elementVisible) { 17139 return handler(options, newState) || newState; 17140 } 17141 17142 return newState; 17143 }; 17144 }; // $FlowFixMe 17145 17146 17147 var whenScrollDirectionChange = function whenScrollDirectionChange(handler) { 17148 return function (options) { 17149 var oldState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; 17150 17151 var _getDocumentState2 = getDocumentState(), 17152 scrollTop = _getDocumentState2.stiffScrollTop, 17153 scrollHeight = _getDocumentState2.scrollHeight,
17154 innerHeight = _getDocumentState2.innerHeight; 17155 17156 var _options$event = options.event, 17157 config = _options$event.config, 17158 eventTypeId = _options$event.eventTypeId; 17159 var scrollOffsetValue = config.scrollOffsetValue, 17160 scrollOffsetUnit = config.scrollOffsetUnit; 17161 var isPX = scrollOffsetUnit === 'PX'; 17162 var scrollHeightBounds = scrollHeight - innerHeight; // percent top since innerHeight may change for mobile devices which also changes the scrollTop value. 17163 17164 var percentTop = Number((scrollTop / scrollHeightBounds).toFixed(2)); // no state change 17165 17166 if (oldState && oldState.percentTop === percentTop) { 17167 return oldState; 17168 } 17169 17170 var scrollTopPadding = (isPX ? scrollOffsetValue : innerHeight * (scrollOffsetValue || 0) / 100) / scrollHeightBounds; 17171 var scrollingDown; 17172 var scrollDirectionChanged; 17173 var anchorTop = 0; 17174 17175 if (oldState) { 17176 scrollingDown = percentTop > oldState.percentTop; 17177 scrollDirectionChanged = oldState.scrollingDown !== scrollingDown; 17178 anchorTop = scrollDirectionChanged ? percentTop : oldState.anchorTop; 17179 } 17180 17181 var inBounds = eventTypeId === PAGE_SCROLL_DOWN ? percentTop >= anchorTop + scrollTopPadding : percentTop <= anchorTop - scrollTopPadding; 17182 var newState = (0, _extends2["default"])({}, oldState, { 17183 percentTop: percentTop, 17184 inBounds: inBounds, 17185 anchorTop: anchorTop, 17186 scrollingDown: scrollingDown 17187 }); 17188 17189 if (oldState && inBounds && (scrollDirectionChanged || newState.inBounds !== oldState.inBounds)) { 17190 return handler(options, newState) || newState; 17191 } 17192 17193 return newState; 17194 }; 17195 }; 17196 17197 var pointIntersects = function pointIntersects(point, rect) { 17198 return point.left > rect.left && point.left < rect.right && point.top > rect.top && point.top < rect.bottom; 17199 }; 17200 17201 var whenPageLoadFinish = function whenPageLoadFinish(handler) { 17202 return function (options, oldState) { 17203 var newState = { 17204 finished: document.readyState === 'complete' 17205 }; 17206 17207 if (newState.finished && !(oldState && oldState.finshed)) { 17208 handler(options); 17209 } 17210 17211 return newState; 17212 }; 17213 }; 17214 17215 var whenPageLoadStart = function whenPageLoadStart(handler) { 17216 return function (options, oldState) { 17217 var newState = { 17218 started: true 17219 }; 17220 17221 if (!oldState) { 17222 handler(options); 17223 } 17224 17225 return newState; 17226 }; 17227 }; 17228 17229 var whenClickCountChange = function whenClickCountChange(handler) { 17230 return function (options) { 17231 var oldState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { 17232 clickCount: 0 17233 }; 17234 var newState = { 17235 clickCount: oldState.clickCount % 2 + 1 17236 }; 17237 17238 if (newState.clickCount !== oldState.clickCount) { 17239 return handler(options, newState) || newState; 17240 } 17241 17242 return newState; 17243 }; 17244 }; 17245 17246 var getComponentActiveOptions = function getComponentActiveOptions() { 17247 var allowNestedChildrenEvents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; 17248 return (0, _extends2["default"])({}, baseActivityActionGroupOptions, { 17249 handler: withFilter(allowNestedChildrenEvents ? isOrContainsElement : isElement, whenComponentActiveChange(function (options, state) { 17250 return state.isActive ? baseActionGroupOptions.handler(options, state) : state; 17251 })) 17252 }); 17253 }; 17254 17255 var getComponentInactiveOptions = function getComponentInactiveOptions() { 17256 var allowNestedChildrenEvents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; 17257 return (0, _extends2["default"])({}, baseActivityActionGroupOptions, { 17258 handler: withFilter(allowNestedChildrenEvents ? isOrContainsElement : isElement, whenComponentActiveChange(function (options, state) { 17259 return !state.isActive ? baseActionGroupOptions.handler(options, state) : state; 17260 })) 17261 }); 17262 }; 17263 17264 var scrollIntoOutOfViewOptions = (0, _extends2["default"])({}, baseScrollActionGroupOptions, { 17265 handler: whenElementVisibiltyChange(function (options, state) { 17266 var elementVisible = state.elementVisible; 17267 var event = options.event, 17268 store = options.store; 17269 17270 var _store$getState2 = store.getState(), 17271 ixData = _store$getState2.ixData; 17272 17273 var events = ixData.events; // trigger the handler only once if only one of SCROLL_INTO or SCROLL_OUT_OF event types 17274 // are registered. 17275 17276 if (!events[event.action.config.autoStopEventId] && state.triggered) { 17277 return state; 17278 } 17279 17280 if (event.eventTypeId === SCROLL_INTO_VIEW === elementVisible) { 17281 actionGroupCreator(options); 17282 return (0, _extends2["default"])({}, state, { 17283 triggered: true 17284 }); 17285 } else { 17286 return state; 17287 } 17288 }) 17289 }); 17290 var MOUSE_OUT_ROUND_THRESHOLD = 0.05; 17291 17292 var _default = (_default2 = {}, (0, _defineProperty2["default"])(_default2, SLIDER_ACTIVE, getComponentActiveOptions()), (0, _defineProperty2["default"])(_default2, SLIDER_INACTIVE, getComponentInactiveOptions()), (0, _defineProperty2["default"])(_default2, DROPDOWN_OPEN, getComponentActiveOptions()), (0, _defineProperty2["default"])(_default2, DROPDOWN_CLOSE, getComponentInactiveOptions()), (0, _defineProperty2["default"])(_default2, NAVBAR_OPEN, getComponentActiveOptions(false)), (0, _defineProperty2["default"])(_default2, NAVBAR_CLOSE, getComponentInactiveOptions(false)), (0, _defineProperty2["default"])(_default2, TAB_ACTIVE, getComponentActiveOptions()), (0, _defineProperty2["default"])(_default2, TAB_INACTIVE, getComponentInactiveOptions()), (0, _defineProperty2["default"])(_default2, ECOMMERCE_CART_OPEN, { 17293 types: 'ecommerce-cart-open', 17294 handler: withFilter(isOrContainsElement, actionGroupCreator) 17295 }), (0, _defineProperty2["default"])(_default2, ECOMMERCE_CART_CLOSE, { 17296 types: 'ecommerce-cart-close', 17297 handler: withFilter(isOrContainsElement, actionGroupCreator) 17298 }), (0, _defineProperty2["default"])(_default2, MOUSE_CLICK, { 17299 types: 'click', 17300 handler: withFilter(isOrContainsElement, whenClickCountChange(function (options, _ref6) { 17301 var clickCount = _ref6.clickCount; 17302 17303 if (hasAutoStopEvent(options)) { 17304 clickCount === 1 && actionGroupCreator(options); 17305 } else { 17306 actionGroupCreator(options); 17307 } 17308 })) 17309 }), (0, _defineProperty2["default"])(_default2, MOUSE_SECOND_CLICK, { 17310 types: 'click', 17311 handler: withFilter(isOrContainsElement, whenClickCountChange(function (options, _ref7) { 17312 var clickCount = _ref7.clickCount; 17313 17314 if (clickCount === 2) { 17315 actionGroupCreator(options); 17316 } 17317 })) 17318 }), (0, _defineProperty2["default"])(_default2, MOUSE_DOWN, (0, _extends2["default"])({}, baseActionGroupOptions, { 17319 types: 'mousedown' 17320 })), (0, _defineProperty2["default"])(_default2, MOUSE_UP, (0, _extends2["default"])({}, baseActionGroupOptions, { 17321 types: 'mouseup' 17322 })), (0, _defineProperty2["default"])(_default2, MOUSE_OVER, { 17323 types: MOUSE_OVER_OUT_TYPES, 17324 handler: withFilter(isOrContainsElement, whenElementHoverChange(function (options, state) { 17325 if (state.elementHovered) { 17326 actionGroupCreator(options); 17327 } 17328 })) 17329 }), (0, _defineProperty2["default"])(_default2, MOUSE_OUT, { 17330 types: MOUSE_OVER_OUT_TYPES, 17331 handler: withFilter(isOrContainsElement, whenElementHoverChange(function (options, state) { 17332 if (!state.elementHovered) { 17333 actionGroupCreator(options); 17334 } 17335 })) 17336 }), (0, _defineProperty2["default"])(_default2, MOUSE_MOVE, { 17337 types: 'mousemove mouseout scroll', 17338 handler: function handler( // $FlowFixMe 17339 _ref8) { 17340 var store = _ref8.store, 17341 element = _ref8.element, 17342 eventConfig = _ref8.eventConfig, 17343 nativeEvent = _ref8.nativeEvent, 17344 eventStateKey = _ref8.eventStateKey; 17345 var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { 17346 clientX: 0, 17347 clientY: 0, 17348 pageX: 0, 17349 pageY: 0 17350 }; 17351 var basedOn = eventConfig.basedOn, 17352 selectedAxis = eventConfig.selectedAxis, 17353 continuousParameterGroupId = eventConfig.continuousParameterGroupId, 17354 reverse = eventConfig.reverse, 17355 _eventConfig$restingS = eventConfig.restingState, 17356 restingState = _eventConfig$restingS === void 0 ? 0 : _eventConfig$restingS; 17357 var _nativeEvent$clientX = nativeEvent.clientX, 17358 clientX = _nativeEvent$clientX === void 0 ? state.clientX : _nativeEvent$clientX, 17359 _nativeEvent$clientY = nativeEvent.clientY, 17360 clientY = _nativeEvent$clientY === void 0 ? state.clientY : _nativeEvent$clientY,
17361 _nativeEvent$pageX = nativeEvent.pageX, 17362 pageX = _nativeEvent$pageX === void 0 ? state.pageX : _nativeEvent$pageX, 17363 _nativeEvent$pageY = nativeEvent.pageY, 17364 pageY = _nativeEvent$pageY === void 0 ? state.pageY : _nativeEvent$pageY; 17365 var isXAxis = selectedAxis === 'X_AXIS'; 17366 var isMouseOut = nativeEvent.type === 'mouseout'; 17367 var value = restingState / 100; 17368 var namespacedParameterId = continuousParameterGroupId; 17369 var elementHovered = false; 17370 17371 switch (basedOn) { 17372 case _constants.EventBasedOn.VIEWPORT: 17373 { 17374 value = isXAxis ? Math.min(clientX, window.innerWidth) / window.innerWidth : Math.min(clientY, window.innerHeight) / window.innerHeight; 17375 break; 17376 } 17377 17378 case _constants.EventBasedOn.PAGE: 17379 { 17380 var _getDocumentState3 = getDocumentState(), 17381 scrollLeft = _getDocumentState3.scrollLeft, 17382 scrollTop = _getDocumentState3.scrollTop, 17383 scrollWidth = _getDocumentState3.scrollWidth, 17384 scrollHeight = _getDocumentState3.scrollHeight; 17385 17386 value = isXAxis ? Math.min(scrollLeft + pageX, scrollWidth) / scrollWidth : Math.min(scrollTop + pageY, scrollHeight) / scrollHeight; 17387 break; 17388 } 17389 17390 case _constants.EventBasedOn.ELEMENT: 17391 default: 17392 { 17393 namespacedParameterId = getNamespacedParameterId(eventStateKey, continuousParameterGroupId); 17394 var isMouseEvent = nativeEvent.type.indexOf('mouse') === 0; // Use isOrContainsElement for mouse events since they are fired from the target 17395 17396 if (isMouseEvent && isOrContainsElement({ 17397 element: element, 17398 nativeEvent: nativeEvent 17399 }) !== true) { 17400 break; 17401 } 17402 17403 var rect = element.getBoundingClientRect(); 17404 var left = rect.left, 17405 top = rect.top, 17406 width = rect.width, 17407 height = rect.height; // Otherwise we'll need to calculate the mouse position from the previous handler state 17408 // against the target element's rect 17409 17410 if (!isMouseEvent && !pointIntersects({ 17411 left: clientX, 17412 top: clientY 17413 }, rect)) { 17414 break; 17415 } 17416 17417 elementHovered = true; 17418 value = isXAxis ? (clientX - left) / width : (clientY - top) / height; 17419 break; 17420 } 17421 } // cover case where the event is a mouse out, but the value is not quite at 100% 17422 17423 17424 if (isMouseOut && (value > 1 - MOUSE_OUT_ROUND_THRESHOLD || value < MOUSE_OUT_ROUND_THRESHOLD)) { 17425 value = Math.round(value); 17426 } // Only update based on element if the mouse is moving over or has just left the element 17427 17428 17429 if (basedOn !== _constants.EventBasedOn.ELEMENT || elementHovered || // $FlowFixMe 17430 elementHovered !== state.elementHovered) { 17431 value = reverse ? 1 - value : value; 17432 store.dispatch((0, _IX2EngineActions.parameterChanged)(namespacedParameterId, value)); 17433 } 17434 17435 return { 17436 elementHovered: elementHovered, 17437 clientX: clientX, 17438 clientY: clientY, 17439 pageX: pageX, 17440 pageY: pageY 17441 }; 17442 } 17443 }), (0, _defineProperty2["default"])(_default2, PAGE_SCROLL, { 17444 types: SCROLL_EVENT_TYPES, 17445 // $FlowFixMe 17446 handler: function handler(_ref9) { 17447 var store = _ref9.store, 17448 eventConfig = _ref9.eventConfig; 17449 var continuousParameterGroupId = eventConfig.continuousParameterGroupId, 17450 reverse = eventConfig.reverse; 17451 17452 var _getDocumentState4 = getDocumentState(), 17453 scrollTop = _getDocumentState4.scrollTop, 17454 scrollHeight = _getDocumentState4.scrollHeight, 17455 clientHeight = _getDocumentState4.clientHeight; 17456 17457 var value = scrollTop / (scrollHeight - clientHeight); 17458 value = reverse ? 1 - value : value; 17459 store.dispatch((0, _IX2EngineActions.parameterChanged)(continuousParameterGroupId, value)); 17460 } 17461 }), (0, _defineProperty2["default"])(_default2, SCROLLING_IN_VIEW, { 17462 types: SCROLL_EVENT_TYPES, 17463 handler: function handler( // $FlowFixMe 17464 _ref10) { 17465 var element = _ref10.element, 17466 store = _ref10.store, 17467 eventConfig = _ref10.eventConfig, 17468 eventStateKey = _ref10.eventStateKey; 17469 var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { 17470 scrollPercent: 0 17471 }; 17472 17473 var _getDocumentState5 = getDocumentState(), 17474 scrollLeft = _getDocumentState5.scrollLeft, 17475 scrollTop = _getDocumentState5.scrollTop, 17476 scrollWidth = _getDocumentState5.scrollWidth, 17477 scrollHeight = _getDocumentState5.scrollHeight, 17478 visibleHeight = _getDocumentState5.clientHeight; 17479 17480 var basedOn = eventConfig.basedOn, 17481 selectedAxis = eventConfig.selectedAxis, 17482 continuousParameterGroupId = eventConfig.continuousParameterGroupId, 17483 startsEntering = eventConfig.startsEntering, 17484 startsExiting = eventConfig.startsExiting, 17485 addEndOffset = eventConfig.addEndOffset, 17486 addStartOffset = eventConfig.addStartOffset, 17487 _eventConfig$addOffse = eventConfig.addOffsetValue, 17488 addOffsetValue = _eventConfig$addOffse === void 0 ? 0 : _eventConfig$addOffse, 17489 _eventConfig$endOffse = eventConfig.endOffsetValue, 17490 endOffsetValue = _eventConfig$endOffse === void 0 ? 0 : _eventConfig$endOffse; 17491 var isXAxis = selectedAxis === 'X_AXIS'; 17492 17493 if (basedOn === _constants.EventBasedOn.VIEWPORT) { 17494 var value = isXAxis ? scrollLeft / scrollWidth : scrollTop / scrollHeight; 17495 17496 if (value !== state.scrollPercent) { 17497 store.dispatch((0, _IX2EngineActions.parameterChanged)(continuousParameterGroupId, value)); 17498 } 17499 17500 return { 17501 scrollPercent: value 17502 }; 17503 } else { 17504 var namespacedParameterId = getNamespacedParameterId(eventStateKey, continuousParameterGroupId); 17505 var elementRect = element.getBoundingClientRect(); 17506 var offsetStartPerc = (addStartOffset ? addOffsetValue : 0) / 100; 17507 var offsetEndPerc = (addEndOffset ? endOffsetValue : 0) / 100; // flip the offset percentages depending on start / exit type 17508 17509 offsetStartPerc = startsEntering ? offsetStartPerc : 1 - offsetStartPerc; 17510 offsetEndPerc = startsExiting ? offsetEndPerc : 1 - offsetEndPerc; 17511 var offsetElementTop = elementRect.top + Math.min(elementRect.height * offsetStartPerc, visibleHeight); 17512 var offsetElementBottom = elementRect.top + elementRect.height * offsetEndPerc; 17513 var offsetHeight = offsetElementBottom - offsetElementTop; 17514 var fixedScrollHeight = Math.min(visibleHeight + offsetHeight, scrollHeight); 17515 var fixedScrollTop = Math.min(Math.max(0, visibleHeight - offsetElementTop), fixedScrollHeight); 17516 var fixedScrollPerc = fixedScrollTop / fixedScrollHeight; 17517 17518 if (fixedScrollPerc !== state.scrollPercent) { 17519 store.dispatch((0, _IX2EngineActions.parameterChanged)(namespacedParameterId, fixedScrollPerc)); 17520 } 17521 17522 return { 17523 scrollPercent: fixedScrollPerc 17524 }; 17525 } 17526 } 17527 }), (0, _defineProperty2["default"])(_default2, SCROLL_INTO_VIEW, scrollIntoOutOfViewOptions), (0, _defineProperty2["default"])(_default2, SCROLL_OUT_OF_V
17527IEW, scrollIntoOutOfViewOptions), (0, _defineProperty2["default"])(_default2, PAGE_SCROLL_DOWN, (0, _extends2["default"])({}, baseScrollActionGroupOptions, { 17528 handler: whenScrollDirectionChange(function (options, state) { 17529 if (state.scrollingDown) { 17530 actionGroupCreator(options); 17531 } 17532 }) 17533 })), (0, _defineProperty2["default"])(_default2, PAGE_SCROLL_UP, (0, _extends2["default"])({}, baseScrollActionGroupOptions, { 17534 handler: whenScrollDirectionChange(function (options, state) { 17535 if (!state.scrollingDown) { 17536 actionGroupCreator(options); 17537 } 17538 }) 17539 })), (0, _defineProperty2["default"])(_default2, PAGE_FINISH, { 17540 types: 'readystatechange IX2_PAGE_UPDATE', 17541 handler: withFilter(isElement, whenPageLoadFinish(actionGroupCreator)) 17542 }), (0, _defineProperty2["default"])(_default2, PAGE_START, { 17543 types: 'readystatechange IX2_PAGE_UPDATE', 17544 handler: withFilter(isElement, whenPageLoadStart(actionGroupCreator)) 17545 }), _default2); 17546 17547 exports["default"] = _default; 17548 17549 /***/ 17550 }), 17551/* 293 */ 17552/***/ (function (module, exports, __webpack_require__) { 17553
vendor: 4,322 bytes, lines 17554-17706
17554 var createFlow = __webpack_require__(294); 17555 17556 /** 17557 * Creates a function that returns the result of invoking the given functions 17558 * with the `this` binding of the created function, where each successive 17559 * invocation is supplied the return value of the previous. 17560 * 17561 * @static 17562 * @memberOf _ 17563 * @since 3.0.0 17564 * @category Util 17565 * @param {...(Function|Function[])} [funcs] The functions to invoke. 17566 * @returns {Function} Returns the new composite function. 17567 * @see _.flowRight 17568 * @example 17569 * 17570 * function square(n) { 17571 * return n * n; 17572 * } 17573 * 17574 * var addSquare = _.flow([_.add, square]); 17575 * addSquare(1, 2); 17576 * // => 9 17577 */ 17578 var flow = createFlow(); 17579 17580 module.exports = flow; 17581 17582 17583 /***/ 17584 }), 17585/* 294 */ 17586/***/ (function (module, exports, __webpack_require__) { 17587 17588 var LodashWrapper = __webpack_require__(63), 17589 flatRest = __webpack_require__(295), 17590 getData = __webpack_require__(119), 17591 getFuncName = __webpack_require__(120), 17592 isArray = __webpack_require__(1), 17593 isLaziable = __webpack_require__(308); 17594 17595 /** Error message constants. */ 17596 var FUNC_ERROR_TEXT = 'Expected a function'; 17597 17598 /** Used to compose bitmasks for function metadata. */ 17599 var WRAP_CURRY_FLAG = 8, 17600 WRAP_PARTIAL_FLAG = 32, 17601 WRAP_ARY_FLAG = 128, 17602 WRAP_REARG_FLAG = 256; 17603 17604 /** 17605 * Creates a `_.flow` or `_.flowRight` function. 17606 * 17607 * @private 17608 * @param {boolean} [fromRight] Specify iterating from right to left. 17609 * @returns {Function} Returns the new flow function. 17610 */ 17611 function createFlow(fromRight) { 17612 return flatRest(function (funcs) { 17613 var length = funcs.length, 17614 index = length, 17615 prereq = LodashWrapper.prototype.thru; 17616 17617 if (fromRight) { 17618 funcs.reverse(); 17619 } 17620 while (index--) { 17621 var func = funcs[index]; 17622 if (typeof func != 'function') { 17623 throw new TypeError(FUNC_ERROR_TEXT); 17624 } 17625 if (prereq && !wrapper && getFuncName(func) == 'wrapper') { 17626 var wrapper = new LodashWrapper([], true); 17627 } 17628 } 17629 index = wrapper ? index : length; 17630 while (++index < length) { 17631 func = funcs[index]; 17632 17633 var funcName = getFuncName(func), 17634 data = funcName == 'wrapper' ? getData(func) : undefined; 17635 17636 if (data && isLaziable(data[0]) && 17637 data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) && 17638 !data[4].length && data[9] == 1 17639 ) { 17640 wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]); 17641 } else { 17642 wrapper = (func.length == 1 && isLaziable(func)) 17643 ? wrapper[funcName]() 17644 : wrapper.thru(func); 17645 } 17646 } 17647 return function () { 17648 var args = arguments, 17649 value = args[0]; 17650 17651 if (wrapper && args.length == 1 && isArray(value)) { 17652 return wrapper.plant(value).value(); 17653 } 17654 var index = 0, 17655 result = length ? funcs[index].apply(this, args) : value; 17656 17657 while (++index < length) { 17658 result = funcs[index].call(this, result); 17659 } 17660 return result; 17661 }; 17662 }); 17663 } 17664 17665 module.exports = createFlow; 17666 17667 17668 /***/ 17669 }), 17670/* 295 */ 17671/***/ (function (module, exports, __webpack_require__) { 17672 17673 var flatten = __webpack_require__(296), 17674 overRest = __webpack_require__(299), 17675 setToString = __webpack_require__(301); 17676 17677 /** 17678 * A specialized version of `baseRest` which flattens the rest array. 17679 * 17680 * @private 17681 * @param {Function} func The function to apply a rest parameter to. 17682 * @returns {Function} Returns the new function. 17683 */ 17684 function flatRest(func) { 17685 return setToString(overRest(func, undefined, flatten), func + ''); 17686 } 17687 17688 module.exports = flatRest; 17689 17690 17691 /***/ 17692 }), 17693/* 296 */ 17694/***/ (function (module, exports, __webpack_require__) { 17695 17696 var baseFlatten = __webpack_require__(297); 17697 17698 /** 17699 * Flattens `array` a single level deep. 17700 * 17701 * @static 17702 * @memberOf _ 17703 * @since 0.1.0 17704 * @category Array 17705 * @param {Array} array The array to flatten. 17706 * @returns {Array} Returns the new flattened array.
vendor: 5,976 bytes, lines 17707-17915
17707 * @example 17708 * 17709 * _.flatten([1, [2, [3, [4]], 5]]); 17710 * // => [1, 2, [3, [4]], 5] 17711 */ 17712 function flatten(array) { 17713 var length = array == null ? 0 : array.length; 17714 return length ? baseFlatten(array, 1) : []; 17715 } 17716 17717 module.exports = flatten; 17718 17719 17720 /***/ 17721 }), 17722/* 297 */ 17723/***/ (function (module, exports, __webpack_require__) { 17724 17725 var arrayPush = __webpack_require__(49), 17726 isFlattenable = __webpack_require__(298); 17727 17728 /** 17729 * The base implementation of `_.flatten` with support for restricting flattening. 17730 * 17731 * @private 17732 * @param {Array} array The array to flatten. 17733 * @param {number} depth The maximum recursion depth. 17734 * @param {boolean} [predicate=isFlattenable] The function invoked per iteration. 17735 * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks. 17736 * @param {Array} [result=[]] The initial result value. 17737 * @returns {Array} Returns the new flattened array. 17738 */ 17739 function baseFlatten(array, depth, predicate, isStrict, result) { 17740 var index = -1, 17741 length = array.length; 17742 17743 predicate || (predicate = isFlattenable); 17744 result || (result = []); 17745 17746 while (++index < length) { 17747 var value = array[index]; 17748 if (depth > 0 && predicate(value)) { 17749 if (depth > 1) { 17750 // Recursively flatten arrays (susceptible to call stack limits). 17751 baseFlatten(value, depth - 1, predicate, isStrict, result); 17752 } else { 17753 arrayPush(result, value); 17754 } 17755 } else if (!isStrict) { 17756 result[result.length] = value; 17757 } 17758 } 17759 return result; 17760 } 17761 17762 module.exports = baseFlatten; 17763 17764 17765 /***/ 17766 }), 17767/* 298 */ 17768/***/ (function (module, exports, __webpack_require__) { 17769 17770 var Symbol = __webpack_require__(20), 17771 isArguments = __webpack_require__(34), 17772 isArray = __webpack_require__(1); 17773 17774 /** Built-in value references. */ 17775 var spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined; 17776 17777 /** 17778 * Checks if `value` is a flattenable `arguments` object or array. 17779 * 17780 * @private 17781 * @param {*} value The value to check. 17782 * @returns {boolean} Returns `true` if `value` is flattenable, else `false`. 17783 */ 17784 function isFlattenable(value) { 17785 return isArray(value) || isArguments(value) || 17786 !!(spreadableSymbol && value && value[spreadableSymbol]); 17787 } 17788 17789 module.exports = isFlattenable; 17790 17791 17792 /***/ 17793 }), 17794/* 299 */ 17795/***/ (function (module, exports, __webpack_require__) { 17796 17797 var apply = __webpack_require__(300); 17798 17799 /* Built-in method references for those with the same name as other `lodash` methods. */ 17800 var nativeMax = Math.max; 17801 17802 /** 17803 * A specialized version of `baseRest` which transforms the rest array. 17804 * 17805 * @private 17806 * @param {Function} func The function to apply a rest parameter to. 17807 * @param {number} [start=func.length-1] The start position of the rest parameter. 17808 * @param {Function} transform The rest array transform. 17809 * @returns {Function} Returns the new function. 17810 */ 17811 function overRest(func, start, transform) { 17812 start = nativeMax(start === undefined ? (func.length - 1) : start, 0); 17813 return function () { 17814 var args = arguments, 17815 index = -1, 17816 length = nativeMax(args.length - start, 0), 17817 array = Array(length); 17818 17819 while (++index < length) { 17820 array[index] = args[start + index]; 17821 } 17822 index = -1; 17823 var otherArgs = Array(start + 1); 17824 while (++index < start) { 17825 otherArgs[index] = args[index]; 17826 } 17827 otherArgs[start] = transform(array); 17828 return apply(func, this, otherArgs); 17829 }; 17830 } 17831 17832 module.exports = overRest; 17833 17834 17835 /***/ 17836 }), 17837/* 300 */ 17838/***/ (function (module, exports) { 17839 17840 /** 17841 * A faster alternative to `Function#apply`, this function invokes `func` 17842 * with the `this` binding of `thisArg` and the arguments of `args`. 17843 * 17844 * @private 17845 * @param {Function} func The function to invoke. 17846 * @param {*} thisArg The `this` binding of `func`. 17847 * @param {Array} args The arguments to invoke `func` with. 17848 * @returns {*} Returns the result of `func`. 17849 */ 17850 function apply(func, thisArg, args) { 17851 switch (args.length) { 17852 case 0: return func.call(thisArg); 17853 case 1: return func.call(thisArg, args[0]); 17854 case 2: return func.call(thisArg, args[0], args[1]); 17855 case 3: return func.call(thisArg, args[0], args[1], args[2]); 17856 } 17857 return func.apply(thisArg, args); 17858 } 17859 17860 module.exports = apply; 17861 17862 17863 /***/ 17864 }), 17865/* 301 */ 17866/***/ (function (module, exports, __webpack_require__) { 17867 17868 var baseSetToString = __webpack_require__(302), 17869 shortOut = __webpack_require__(304); 17870 17871 /** 17872 * Sets the `toString` method of `func` to return `string`. 17873 * 17874 * @private 17875 * @param {Function} func The function to modify. 17876 * @param {Function} string The `toString` result. 17877 * @returns {Function} Returns `func`. 17878 */ 17879 var setToString = shortOut(baseSetToString); 17880 17881 module.exports = setToString; 17882 17883 17884 /***/ 17885 }), 17886/* 302 */ 17887/***/ (function (module, exports, __webpack_require__) { 17888 17889 var constant = __webpack_require__(303), 17890 defineProperty = __webpack_require__(117), 17891 identity = __webpack_require__(60); 17892 17893 /** 17894 * The base implementation of `setToString` without support for hot loop shorting. 17895 * 17896 * @private 17897 * @param {Function} func The function to modify. 17898 * @param {Function} string The `toString` result. 17899 * @returns {Function} Returns `func`. 17900 */ 17901 var baseSetToString = !defineProperty ? identity : function (func, string) { 17902 return defineProperty(func, 'toString', { 17903 'configurable': true, 17904 'enumerable': false, 17905 'value': constant(string), 17906 'writable': true 17907 }); 17908 }; 17909 17910 module.exports = baseSetToString; 17911 17912 17913 /***/ 17914 }), 17915/* 303 */
vendor: 7,975 bytes, lines 17916-18155
17916/***/ (function (module, exports) { 17917 17918 /** 17919 * Creates a function that returns `value`. 17920 * 17921 * @static 17922 * @memberOf _ 17923 * @since 2.4.0 17924 * @category Util 17925 * @param {*} value The value to return from the new function. 17926 * @returns {Function} Returns the new constant function. 17927 * @example 17928 * 17929 * var objects = _.times(2, _.constant({ 'a': 1 })); 17930 * 17931 * console.log(objects); 17932 * // => [{ 'a': 1 }, { 'a': 1 }] 17933 * 17934 * console.log(objects[0] === objects[1]); 17935 * // => true 17936 */ 17937 function constant(value) { 17938 return function () { 17939 return value; 17940 }; 17941 } 17942 17943 module.exports = constant; 17944 17945 17946 /***/ 17947 }), 17948/* 304 */ 17949/***/ (function (module, exports) { 17950 17951 /** Used to detect hot functions by number of calls within a span of milliseconds. */ 17952 var HOT_COUNT = 800, 17953 HOT_SPAN = 16; 17954 17955 /* Built-in method references for those with the same name as other `lodash` methods. */ 17956 var nativeNow = Date.now; 17957 17958 /** 17959 * Creates a function that'll short out and invoke `identity` instead 17960 * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN` 17961 * milliseconds. 17962 * 17963 * @private 17964 * @param {Function} func The function to restrict. 17965 * @returns {Function} Returns the new shortable function. 17966 */ 17967 function shortOut(func) { 17968 var count = 0, 17969 lastCalled = 0; 17970 17971 return function () { 17972 var stamp = nativeNow(), 17973 remaining = HOT_SPAN - (stamp - lastCalled); 17974 17975 lastCalled = stamp; 17976 if (remaining > 0) { 17977 if (++count >= HOT_COUNT) { 17978 return arguments[0]; 17979 } 17980 } else { 17981 count = 0; 17982 } 17983 return func.apply(undefined, arguments); 17984 }; 17985 } 17986 17987 module.exports = shortOut; 17988 17989 17990 /***/ 17991 }), 17992/* 305 */ 17993/***/ (function (module, exports, __webpack_require__) { 17994 17995 var WeakMap = __webpack_require__(100); 17996 17997 /** Used to store function metadata. */ 17998 var metaMap = WeakMap && new WeakMap; 17999 18000 module.exports = metaMap; 18001 18002 18003 /***/ 18004 }), 18005/* 306 */ 18006/***/ (function (module, exports) { 18007 18008 /** 18009 * This method returns `undefined`. 18010 * 18011 * @static 18012 * @memberOf _ 18013 * @since 2.3.0 18014 * @category Util 18015 * @example 18016 * 18017 * _.times(2, _.noop); 18018 * // => [undefined, undefined] 18019 */ 18020 function noop() { 18021 // No operation performed. 18022 } 18023 18024 module.exports = noop; 18025 18026 18027 /***/ 18028 }), 18029/* 307 */ 18030/***/ (function (module, exports) { 18031 18032 /** Used to lookup unminified function names. */ 18033 var realNames = {}; 18034 18035 module.exports = realNames; 18036 18037 18038 /***/ 18039 }), 18040/* 308 */ 18041/***/ (function (module, exports, __webpack_require__) { 18042 18043 var LazyWrapper = __webpack_require__(65), 18044 getData = __webpack_require__(119), 18045 getFuncName = __webpack_require__(120), 18046 lodash = __webpack_require__(309); 18047 18048 /** 18049 * Checks if `func` has a lazy counterpart. 18050 * 18051 * @private 18052 * @param {Function} func The function to check. 18053 * @returns {boolean} Returns `true` if `func` has a lazy counterpart, 18054 * else `false`. 18055 */ 18056 function isLaziable(func) { 18057 var funcName = getFuncName(func), 18058 other = lodash[funcName]; 18059 18060 if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) { 18061 return false; 18062 } 18063 if (func === other) { 18064 return true; 18065 } 18066 var data = getData(other); 18067 return !!data && func === data[0]; 18068 } 18069 18070 module.exports = isLaziable; 18071 18072 18073 /***/ 18074 }), 18075/* 309 */ 18076/***/ (function (module, exports, __webpack_require__) { 18077 18078 var LazyWrapper = __webpack_require__(65), 18079 LodashWrapper = __webpack_require__(63), 18080 baseLodash = __webpack_require__(64), 18081 isArray = __webpack_require__(1), 18082 isObjectLike = __webpack_require__(9), 18083 wrapperClone = __webpack_require__(310); 18084 18085 /** Used for built-in method references. */ 18086 var objectProto = Object.prototype; 18087 18088 /** Used to check objects for own properties. */ 18089 var hasOwnProperty = objectProto.hasOwnProperty; 18090 18091 /** 18092 * Creates a `lodash` object which wraps `value` to enable implicit method 18093 * chain sequences. Methods that operate on and return arrays, collections, 18094 * and functions can be chained together. Methods that retrieve a single value 18095 * or may return a primitive value will automatically end the chain sequence 18096 * and return the unwrapped value. Otherwise, the value must be unwrapped 18097 * with `_#value`. 18098 * 18099 * Explicit chain sequences, which must be unwrapped with `_#value`, may be 18100 * enabled using `_.chain`. 18101 * 18102 * The execution of chained methods is lazy, that is, it's deferred until 18103 * `_#value` is implicitly or explicitly called. 18104 * 18105 * Lazy evaluation allows several methods to support shortcut fusion. 18106 * Shortcut fusion is an optimization to merge iteratee calls; this avoids 18107 * the creation of intermediate arrays and can greatly reduce the number of 18108 * iteratee executions. Sections of a chain sequence qualify for shortcut 18109 * fusion if the section is applied to an array and iteratees accept only 18110 * one argument. The heuristic for whether a section qualifies for shortcut 18111 * fusion is subject to change. 18112 * 18113 * Chaining is supported in custom builds as long as the `_#value` method is 18114 * directly or indirectly included in the build. 18115 * 18116 * In addition to lodash methods, wrappers have `Array` and `String` methods. 18117 * 18118 * The wrapper `Array` methods are: 18119 * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift` 18120 * 18121 * The wrapper `String` methods are: 18122 * `replace` and `split` 18123 * 18124 * The wrapper methods that support shortcut fusion are: 18125 * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`, 18126 * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`, 18127 * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray` 18128 * 18129 * The chainable wrapper methods are: 18130 * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`, 18131 * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`, 18132 * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`, 18133 * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`, 18134 * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`, 18135 * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`, 18136 * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`, 18137 * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`, 18138 * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`, 18139 * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`, 18140 * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`, 18141 * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`, 18142 * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`, 18143 * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`, 18144 * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`, 18145 * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`, 18146 * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`, 18147 * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`, 18148 * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`, 18149 * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`, 18150 * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`, 18151 * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`, 18152 * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`, 18153 * `zipObject`, `zipObjectDeep`, and `zipWith` 18154 * 18155 * The wrapper methods that are **not** chainable by default are:
18156 * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`, 18157 * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`, 18158 * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`, 18159 * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`, 18160 * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`, 18161 * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`, 18162 * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`, 18163 * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`, 18164 * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`, 18165 * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`, 18166 * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`, 18167 * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`, 18168 * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`, 18169 * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`, 18170 * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`, 18171 * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`, 18172 * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`, 18173 * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`, 18174 * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`, 18175 * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`, 18176 * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`, 18177 * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`, 18178 * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`, 18179 * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`, 18180 * `upperFirst`, `value`, and `words` 18181 * 18182 * @name _ 18183 * @constructor 18184 * @category Seq 18185 * @param {*} value The value to wrap in a `lodash` instance. 18186 * @returns {Object} Returns the new `lodash` wrapper instance. 18187 * @example 18188 * 18189 * function square(n) { 18190 * return n * n; 18191 * } 18192 * 18193 * var wrapped = _([1, 2, 3]); 18194 * 18195 * // Returns an unwrapped value. 18196 * wrapped.reduce(_.add); 18197 * // => 6 18198 * 18199 * // Returns a wrapped value. 18200 * var squares = wrapped.map(square); 18201 * 18202 * _.isArray(squares); 18203 * // => false 18204 * 18205 * _.isArray(squares.value()); 18206 * // => true 18207 */ 18208 function lodash(value) { 18209 if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) { 18210 if (value instanceof LodashWrapper) { 18211 return value; 18212 } 18213 if (hasOwnProperty.call(value, '__wrapped__')) { 18214 return wrapperClone(value); 18215 } 18216 } 18217 return new LodashWrapper(value); 18218 } 18219 18220 // Ensure wrappers are instances of `baseLodash`. 18221 lodash.prototype = baseLodash.prototype; 18222 lodash.prototype.constructor = lodash; 18223 18224 module.exports = lodash; 18225 18226 18227 /***/ 18228 }), 18229/* 310 */ 18230/***/ (function (module, exports, __webpack_require__) { 18231 18232 var LazyWrapper = __webpack_require__(65), 18233 LodashWrapper = __webpack_require__(63), 18234 copyArray = __webpack_require__(311); 18235 18236 /** 18237 * Creates a clone of `wrapper`. 18238 * 18239 * @private 18240 * @param {Object} wrapper The wrapper to clone. 18241 * @returns {Object} Returns the cloned wrapper. 18242 */ 18243 function wrapperClone(wrapper) { 18244 if (wrapper instanceof LazyWrapper) { 18245 return wrapper.clone(); 18246 } 18247 var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__); 18248 result.__actions__ = copyArray(wrapper.__actions__); 18249 result.__index__ = wrapper.__index__; 18250 result.__values__ = wrapper.__values__; 18251 return result; 18252 } 18253 18254 module.exports = wrapperClone; 18255 18256 18257 /***/ 18258 }), 18259/* 311 */ 18260/***/ (function (module, exports) { 18261 18262 /** 18263 * Copies the values of `source` to `array`. 18264 * 18265 * @private 18266 * @param {Array} source The array to copy values from. 18267 * @param {Array} [array=[]] The array to copy values to. 18268 * @returns {Array} Returns `array`. 18269 */ 18270 function copyArray(source, array) { 18271 var index = -1, 18272 length = source.length; 18273 18274 array || (array = Array(length)); 18275 while (++index < length) { 18276 array[index] = source[index]; 18277 } 18278 return array; 18279 } 18280 18281 module.exports = copyArray; 18282 18283 18284 /***/ 18285 }), 18286/* 312 */ 18287/***/ (function (module, exports, __webpack_require__) { 18288 18289 var baseClamp = __webpack_require__(313), 18290 toNumber = __webpack_require__(61); 18291 18292 /** 18293 * Clamps `number` within the inclusive `lower` and `upper` bounds. 18294 * 18295 * @static 18296 * @memberOf _ 18297 * @since 4.0.0 18298 * @category Number 18299 * @param {number} number The number to clamp. 18300 * @param {number} [lower] The lower bound. 18301 * @param {number} upper The upper bound. 18302 * @returns {number} Returns the clamped number. 18303 * @example 18304 * 18305 * _.clamp(-10, -5, 5); 18306 * // => -5 18307 * 18308 * _.clamp(10, -5, 5); 18309 * // => 5 18310 */ 18311 function clamp(number, lower, upper) { 18312 if (upper === undefined) { 18313 upper = lower; 18314 lower = undefined; 18315 } 18316 if (upper !== undefined) { 18317 upper = toNumber(upper); 18318 upper = upper === upper ? upper : 0; 18319 } 18320 if (lower !== undefined) { 18321 lower = toNumber(lower); 18322 lower = lower === lower ? lower : 0; 18323 } 18324 return baseClamp(toNumber(number), lower, upper); 18325 } 18326 18327 module.exports = clamp; 18328 18329 18330 /***/ 18331 }), 18332/* 313 */
18333/***/ (function (module, exports) { 18334 18335 /** 18336 * The base implementation of `_.clamp` which doesn't coerce arguments. 18337 * 18338 * @private 18339 * @param {number} number The number to clamp. 18340 * @param {number} [lower] The lower bound. 18341 * @param {number} upper The upper bound. 18342 * @returns {number} Returns the clamped number. 18343 */ 18344 function baseClamp(number, lower, upper) { 18345 if (number === number) { 18346 if (upper !== undefined) { 18347 number = number <= upper ? number : upper; 18348 } 18349 if (lower !== undefined) { 18350 number = number >= lower ? number : lower; 18351 } 18352 } 18353 return number; 18354 } 18355 18356 module.exports = baseClamp; 18357 18358 18359 /***/ 18360 }), 18361/* 314 */ 18362/***/ (function (module, exports, __webpack_require__) { 18363 18364 "use strict"; 18365 // @wf-will-never-add-flow-to-this-file 18366 18367 /* globals window, document */ 18368 18369 /* eslint-disable no-var */ 18370 18371 /** 18372 * Webflow: Auto-select links to current page or section 18373 */ 18374 18375 var Webflow = __webpack_require__(3); 18376 18377 Webflow.define('links', module.exports = function ($, _) { 18378 var api = {}; 18379 var $win = $(window); 18380 var designer; 18381 var inApp = Webflow.env(); 18382 var location = window.location; 18383 var tempLink = document.createElement('a'); 18384 var linkCurrent = 'w--current'; 18385 var indexPage = /index\.(html|php)$/; 18386 var dirList = /\/$/; 18387 var anchors; 18388 var slug; // ----------------------------------- 18389 // Module methods 18390 18391 api.ready = api.design = api.preview = init; // ----------------------------------- 18392 // Private methods 18393 18394 function init() { 18395 designer = inApp && Webflow.env('design'); 18396 slug = Webflow.env('slug') || location.pathname || ''; // Reset scroll listener, init anchors 18397 18398 Webflow.scroll.off(scroll); 18399 anchors = []; // Test all links for a selectable href 18400 18401 var links = document.links; 18402 18403 for (var i = 0; i < links.length; ++i) { 18404 select(links[i]); 18405 } // Listen for scroll if any anchors exist 18406 18407 18408 if (anchors.length) { 18409 Webflow.scroll.on(scroll); 18410 scroll(); 18411 } 18412 } 18413 18414 function select(link) { 18415 var href = designer && link.getAttribute('href-disabled') || link.getAttribute('href'); 18416 tempLink.href = href; // Ignore any hrefs with a colon to safely avoid all uri schemes 18417 18418 if (href.indexOf(':') >= 0) { 18419 return; 18420 } 18421 18422 var $link = $(link); // Check for all links with hash (eg (this-host)(/this-path)#section) to this page 18423 18424 if (tempLink.hash.length > 1 && tempLink.host + tempLink.pathname === location.host + location.pathname) { 18425 // Ignore any hrefs with Google Translate type hash 18426 // Example: jQuery can't parse $('#googtrans(en|es)') 18427 // https://forum.webflow.com/t/dropdown-menus-not-working-on-site/87140 18428 if (!/^#[a-zA-Z0-9\-\_]+$/.test(tempLink.hash)) { 18429 return; 18430 } 18431 18432 var $section = $(tempLink.hash); 18433 $section.length && anchors.push({ 18434 link: $link, 18435 sec: $section, 18436 active: false 18437 }); 18438 return; 18439 } // Ignore empty # links 18440 18441 18442 if (href === '#' || href === '') { 18443 return; 18444 } // Determine whether the link should be selected 18445 18446 18447 var match = tempLink.href === location.href || href === slug || indexPage.test(href) && dirList.test(slug); 18448 setClass($link, linkCurrent, match); 18449 } 18450 18451 function scroll() { 18452 var viewTop = $win.scrollTop(); 18453 var viewHeight = $win.height(); // Check each anchor for a section in view 18454 18455 _.each(anchors, function (anchor) { 18456 var $link = anchor.link; 18457 var $section = anchor.sec; 18458 var top = $section.offset().top; 18459 var height = $section.outerHeight(); 18460 var offset = viewHeight * 0.5; 18461 var active = $section.is(':visible') && top + height - offset >= viewTop && top + offset <= viewTop + viewHeight; 18462 18463 if (anchor.active === active) { 18464 return; 18465 } 18466 18467 anchor.active = active; 18468 setClass($link, linkCurrent, active); 18469 }); 18470 } 18471 18472 function setClass($elem, className, add) { 18473 var exists = $elem.hasClass(className); 18474 18475 if (add && exists) { 18476 return; 18477 } 18478 18479 if (!add && !exists) { 18480 return; 18481 } 18482 18483 add ? $elem.addClass(className) : $elem.removeClass(className); 18484 } // Export module 18485 18486 18487 return api; 18488 }); 18489 18490 /***/ 18491 }), 18492/* 315 */ 18493/***/ (function (module, exports, __webpack_require__) { 18494 18495 "use strict"; 18496 // @wf-will-never-add-flow-to-this-file 18497 18498 /* globals window, document */ 18499 18500 /* eslint-disable no-var */ 18501 18502 /** 18503 * Webflow: Smooth scroll 18504 */ 18505 18506 var Webflow = __webpack_require__(3); 18507 18508 Webflow.define('scroll', module.exports = function ($) { 18509 // Native browser events & namespaces used in this module 18510 var CLICK = 'click';
18511 var CHANGE = 'change'; 18512 var CHANGE_NS = '.wf-change'; 18513 var EMPTY_LINK_NS = '.wf-empty-link'; 18514 var SCROLL_NS = '.wf-scroll'; 18515 /** 18516 * A collection of namespaced events found in this module. 18517 * Namespaced events encapsulate our code, and make it safer and easier 18518 * for designers to apply custom code overrides. 18519 * @see https://api.jquery.com/on/#event-names 18520 * @typedef {Object.<string>} NamespacedEventsCollection 18521 */ 18522 18523 var NS_EVENTS = { 18524 WF_CHANGE: CHANGE + CHANGE_NS, 18525 WF_CLICK_EMPTY: CLICK + EMPTY_LINK_NS, 18526 WF_CLICK_SCROLL: CLICK + SCROLL_NS 18527 }; 18528 var $doc = $(document); 18529 var win = window; 18530 var loc = win.location; 18531 var history = inIframe() ? null : win.history; 18532 var validHash = /^[a-zA-Z0-9][\w:.-]*$/; 18533 var emptyHrefSelector = 'a[href="#"]'; 18534 /** 18535 * Select only links whose href: 18536 * - contains a # 18537 * - is not one of our namespaced TabLink elements 18538 * - is not _only_ a # 18539 */ 18540 18541 var localHrefSelector = 'a[href*="#"]:not(.w-tab-link):not(' + emptyHrefSelector + ')'; 18542 /** 18543 * The current page url, minus the hash. 18544 * Will be set in the `ready` function 18545 */ 18546 18547 var locHref; 18548 18549 function inIframe() { 18550 try { 18551 return Boolean(win.frameElement); 18552 } catch (e) { 18553 return true; 18554 } 18555 } 18556 /** 18557 * Determine if we should execute custom scroll 18558 */ 18559 18560 18561 function validateScroll(e) { 18562 if (Webflow.env('design')) { 18563 return; 18564 } // Ignore links being used by jQuery mobile 18565 18566 18567 if (window.$.mobile && $(e.currentTarget).hasClass('ui-link')) { 18568 return; 18569 } // The href property always contains the full url so we can compare 18570 // with the documentâs location to only target links on this page. 18571 18572 18573 var parts = this.href.split('#'); 18574 var hash = parts[0] === locHref ? parts[1] : null; 18575 18576 if (hash) { 18577 findEl(hash, e); 18578 } 18579 } 18580 18581 function findEl(hash, e) { 18582 if (!validHash.test(hash)) { 18583 return; 18584 } 18585 18586 var el = $('#' + hash); 18587 18588 if (!el.length) { 18589 return; 18590 } 18591 18592 if (e) { 18593 e.preventDefault(); 18594 e.stopPropagation(); 18595 } // Push new history state 18596 18597 18598 if (loc.hash !== hash && history && history.pushState && // Navigation breaks Chrome when the protocol is `file:`. 18599 !(Webflow.env.chrome && loc.protocol === 'file:')) { 18600 var oldHash = history.state && history.state.hash; 18601 18602 if (oldHash !== hash) { 18603 history.pushState({ 18604 hash: hash 18605 }, '', '#' + hash); 18606 } 18607 } // If a fixed header exists, offset for the height 18608 18609 18610 var rootTag = Webflow.env('editor') ? '.w-editor-body' : 'body'; 18611 var header = $('header, ' + rootTag + ' > .header, ' + rootTag + ' > .w-nav:not([data-no-scroll])'); 18612 var offset = header.css('position') === 'fixed' ? header.outerHeight() : 0; 18613 win.setTimeout(function () { 18614 scroll(el, offset); 18615 }, e ? 0 : 300); 18616 } 18617 18618 function scroll(el, offset) { 18619 var start = $(win).scrollTop(); 18620 var end = el.offset().top - offset; // If specified, scroll so that the element ends up in the middle of the viewport 18621 18622 if (el.data('scroll') === 'mid') { 18623 var available = $(win).height() - offset; 18624 var elHeight = el.outerHeight(); 18625 18626 if (elHeight < available) { 18627 end -= Math.round((available - elHeight) / 2); 18628 } 18629 } 18630 18631 var mult = 1; // Check for custom time multiplier on the body and the element 18632 18633 $('body').add(el).each(function () { 18634 var time = parseFloat($(this).attr('data-scroll-time'), 10); 18635 18636 if (!isNaN(time) && (time === 0 || time > 0)) { 18637 mult = time; 18638 } 18639 }); // Shim for IE8 and below 18640 18641 if (!Date.now) { 18642 Date.now = function () { 18643 return new Date().getTime(); 18644 }; 18645 } 18646 18647 var clock = Date.now(); 18648 18649 var animate = win.requestAnimationFrame || win.mozRequestAnimationFrame || win.webkitRequestAnimationFrame || function (fn) { 18650 win.setTimeout(fn, 15); 18651 }; 18652 18653 var duration = (472.143 * Math.log(Math.abs(start - end) + 125) - 2000) * mult; 18654 18655 var step = function step() {
18656 var elapsed = Date.now() - clock; 18657 win.scroll(0, getY(start, end, elapsed, duration)); 18658 18659 if (elapsed <= duration) { 18660 animate(step); 18661 } 18662 }; 18663 18664 step(); 18665 } 18666 18667 function getY(start, end, elapsed, duration) { 18668 if (elapsed > duration) { 18669 return end; 18670 } 18671 18672 return start + (end - start) * ease(elapsed / duration); 18673 } 18674 18675 function ease(t) { 18676 return t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1; 18677 } // TODO: Re-implement after customer-facing comms 18678 // function handleReducedMotionChange(evt) { 18679 // var {WF_CLICK_SCROLL} = NS_EVENTS; 18680 // if (evt.target.matches) { 18681 // $doc.off(WF_CLICK_SCROLL); 18682 // } else { 18683 // $doc.on(WF_CLICK_SCROLL, localHrefSelector, validateScroll); 18684 // } 18685 // } 18686 18687 18688 function ready() { 18689 // eslint-disable-next-line no-unused-vars 18690 var WF_CHANGE = NS_EVENTS.WF_CHANGE, 18691 WF_CLICK_EMPTY = NS_EVENTS.WF_CLICK_EMPTY, 18692 WF_CLICK_SCROLL = NS_EVENTS.WF_CLICK_SCROLL; 18693 locHref = loc.href.split('#')[0]; // var reducedMotionQ = window.matchMedia( 18694 // '(prefers-reduced-motion: reduce)' 18695 // ); 18696 // if (!reducedMotionQ.matches) { 18697 18698 $doc.on(WF_CLICK_SCROLL, localHrefSelector, validateScroll); // } 18699 // $(reducedMotionQ).on(WF_CHANGE, handleReducedMotionChange); 18700 18701 /** 18702 * Prevent empty hash links from triggering scroll. 18703 * Legacy feature to preserve: use the default "#" link 18704 * to trigger an interaction, and do not want the page 18705 * to scroll to the top. 18706 */ 18707 18708 $doc.on(WF_CLICK_EMPTY, emptyHrefSelector, function (e) { 18709 e.preventDefault(); 18710 }); 18711 } // Export module 18712 18713 18714 return { 18715 ready: ready 18716 }; 18717 }); 18718 18719 /***/ 18720 }), 18721/* 316 */ 18722/***/ (function (module, exports, __webpack_require__) { 18723 18724 "use strict"; 18725 // @wf-will-never-add-flow-to-this-file 18726 18727 /* globals document, window */ 18728 18729 /* eslint-disable no-var */ 18730 18731 /** 18732 * Webflow: Touch events 18733 * Supports legacy 'tap' event 18734 * Adds a 'swipe' event to desktop and mobile 18735 */ 18736 18737 var Webflow = __webpack_require__(3); 18738 18739 Webflow.define('touch', module.exports = function ($) { 18740 var api = {}; 18741 var getSelection = window.getSelection; // Delegate all legacy 'tap' events to 'click' 18742 18743 $.event.special.tap = { 18744 bindType: 'click', 18745 delegateType: 'click' 18746 }; 18747 18748 api.init = function (el) { 18749 el = typeof el === 'string' ? $(el).get(0) : el; 18750 return el ? new Touch(el) : null; 18751 }; 18752 18753 function Touch(el) { 18754 var active = false; 18755 var useTouch = false; 18756 var thresholdX = Math.min(Math.round(window.innerWidth * 0.04), 40); 18757 var startX; 18758 var lastX; 18759 el.addEventListener('touchstart', start, false); 18760 el.addEventListener('touchmove', move, false); 18761 el.addEventListener('touchend', end, false); 18762 el.addEventListener('touchcancel', cancel, false); 18763 el.addEventListener('mousedown', start, false); 18764 el.addEventListener('mousemove', move, false); 18765 el.addEventListener('mouseup', end, false); 18766 el.addEventListener('mouseout', cancel, false); 18767 18768 function start(evt) { 18769 // We donât handle multi-touch events yet. 18770 var touches = evt.touches; 18771 18772 if (touches && touches.length > 1) { 18773 return; 18774 } 18775 18776 active = true; 18777 18778 if (touches) { 18779 useTouch = true; 18780 startX = touches[0].clientX; 18781 } else { 18782 startX = evt.clientX; 18783 } 18784 18785 lastX = startX; 18786 } 18787 18788 function move(evt) { 18789 if (!active) { 18790 return; 18791 } 18792 18793 if (useTouch && evt.type === 'mousemove') { 18794 evt.preventDefault(); 18795 evt.stopPropagation(); 18796 return; 18797 } 18798 18799 var touches = evt.touches; 18800 var x = touches ? touches[0].clientX : evt.clientX; 18801 var velocityX = x - lastX; 18802 lastX = x; // Allow swipes while pointer is down, but prevent them during text selection 18803 18804 if (Math.abs(velocityX) > thresholdX && getSelection && String(getSelection()) === '') { 18805 triggerEvent('swipe', evt, { 18806 direction: velocityX > 0 ? 'right' : 'left' 18807 }); 18808 cancel(); 18809 } 18810 } 18811 18812 function end(evt) { 18813 if (!active) { 18814 return; 18815 } 18816 18817 active = false;
18818 18819 if (useTouch && evt.type === 'mouseup') { 18820 evt.preventDefault(); 18821 evt.stopPropagation(); 18822 useTouch = false; 18823 return; 18824 } 18825 } 18826 18827 function cancel() { 18828 active = false; 18829 } 18830 18831 function destroy() { 18832 el.removeEventListener('touchstart', start, false); 18833 el.removeEventListener('touchmove', move, false); 18834 el.removeEventListener('touchend', end, false); 18835 el.removeEventListener('touchcancel', cancel, false); 18836 el.removeEventListener('mousedown', start, false); 18837 el.removeEventListener('mousemove', move, false); 18838 el.removeEventListener('mouseup', end, false); 18839 el.removeEventListener('mouseout', cancel, false); 18840 el = null; 18841 } // Public instance methods 18842 18843 18844 this.destroy = destroy; 18845 } // Wrap native event to supoprt preventdefault + stopPropagation 18846 18847 18848 function triggerEvent(type, evt, data) { 18849 var newEvent = $.Event(type, { 18850 originalEvent: evt 18851 }); 18852 $(evt.target).trigger(newEvent, data); 18853 } // Listen for touch events on all nodes by default. 18854 18855 18856 api.instance = api.init(document); // Export module 18857 18858 return api; 18859 }); 18860 18861 /***/ 18862 }), 18863/* 317 */ 18864/***/ (function (module, exports, __webpack_require__) { 18865 18866 "use strict"; 18867 // @wf-will-never-add-flow-to-this-file 18868 18869 /* globals window, document */ 18870 18871 /* eslint-disable no-var */ 18872 18873 /** 18874 * Webflow: Dropdown component 18875 */ 18876 18877 var Webflow = __webpack_require__(3); 18878 18879 var IXEvents = __webpack_require__(22); 18880 18881 var KEY_CODES = { 18882 ARROW_LEFT: 37, 18883 ARROW_UP: 38, 18884 ARROW_RIGHT: 39, 18885 ARROW_DOWN: 40, 18886 ESCAPE: 27, 18887 SPACE: 32, 18888 ENTER: 13, 18889 HOME: 36, 18890 END: 35 18891 }; 18892 var FORCE_CLOSE = true; 18893 /** 18894 * This pattern matches links that begin with a `#` AND have some alphanumeric 18895 * characters after it, including also hyphens and underscores 18896 * 18897 * Matches: 18898 * #foo 18899 * #999 18900 * #foo-bar_baz 18901 * 18902 * Does not match: 18903 * # 18904 */ 18905 18906 var INTERNAL_PAGE_LINK_HASHES_PATTERN = /^#[a-zA-Z0-9\-_]+$/; 18907 Webflow.define('dropdown', module.exports = function ($, _) { 18908 var debounce = _.debounce; 18909 var api = {}; 18910 var inApp = Webflow.env(); 18911 var inPreview = false; 18912 var inDesigner; 18913 var touch = Webflow.env.touch; 18914 var namespace = '.w-dropdown'; 18915 var openStateClassName = 'w--open'; 18916 var ix = IXEvents.triggers; 18917 var defaultZIndex = 900; // @dropdown-depth 18918 18919 var focusOutEvent = 'focusout' + namespace; 18920 var keydownEvent = 'keydown' + namespace; 18921 var mouseEnterEvent = 'mouseenter' + namespace; 18922 var mouseMoveEvent = 'mousemove' + namespace; 18923 var mouseLeaveEvent = 'mouseleave' + namespace; 18924 var mouseUpEvent = (touch ? 'click' : 'mouseup') + namespace; 18925 var closeEvent = 'w-close' + namespace; 18926 var settingEvent = 'setting' + namespace; 18927 var $doc = $(document); 18928 var $dropdowns; // ----------------------------------- 18929 // Module methods 18930 18931 api.ready = init; 18932 18933 api.design = function () { 18934 // Close all when returning from preview 18935 if (inPreview) { 18936 closeAll(); 18937 } 18938 18939 inPreview = false; 18940 init(); 18941 }; 18942 18943 api.preview = function () { 18944 inPreview = true; 18945 init(); 18946 }; // ----------------------------------- 18947 // Private methods 18948 18949 18950 function init() { 18951 inDesigner = inApp && Webflow.env('design'); // Find all instances on the page 18952 18953 $dropdowns = $doc.find(namespace); 18954 $dropdowns.each(build); 18955 } 18956 18957 function build(i, el) { 18958 var $el = $(el); // Store state in data 18959 18960 var data = $.data(el, namespace); 18961 18962 if (!data) { 18963 data = $.data(el, namespace, { 18964 open: false, 18965 el: $el, 18966 config: {}, 18967 selectedIdx: -1 18968 }); 18969 } 18970 18971 data.toggle = data.el.children('.w-dropdown-toggle'); 18972 data.list = data.el.children('.w-dropdown-list'); 18973 data.links = data.list.find('a:not(.w-dropdown .w-dropdown a)'); 18974 data.complete = complete(data); 18975 data.mouseLeave = makeMouseLeaveHandler(data); 18976 data.mouseUpOutside = outside(data); 18977 data.mouseMoveOutside = moveOutside(data); // Set config from data attributes 18978 18979 configure(data); // Store the IDs of the toggle button & list 18980 18981 var toggleId = data.toggle.attr('id'); 18982 var listId = data.list.attr('id'); // If user did not provide toggle ID, set it 18983 18984 if (!toggleId) { 18985 toggleId = 'w-dropdown-toggle-' + i; 18986 } // If user did not provide list ID, set it 18987 18988 18989 if (!listId) { 18990 listId = 'w-dropdown-list-' + i; 18991 } // Add attributes to toggle element 18992 18993 18994 data.toggle.attr('id', toggleId); 18995 data.toggle.attr('aria-controls', listId); 18996 data.toggle.attr('aria-haspopup', 'menu'); 18997 data.toggle.attr('aria-expanded', 'false'); // If toggle element is not a button 18998 18999 if (data.toggle.prop('tagName') !== 'BUTTON') { 19000 // Give it an appropriate role 19001 data.toggle.attr('role', 'button'); // And give it a tabindex if user has not provided one 19002 19003 if (!data.toggle.attr('tabindex')) { 19004 data.toggle.attr('tabindex', '0'); 19005 } 19006 } // Add attributes to list element 19007 19008 19009 data.list.attr('id', listId); 19010 data.list.attr('aria-labelledby', toggleId); 19011 data.links.each(function (idx, link) { 19012 /** 19013 * In macOS Safari, links don't take focus on click unless they have 19014 * a tabindex. Without this, the dropdown will break. 19015 * @see https://gist.github.com/cvrebert/68659d0333a578d75372 19016 */ 19017 if (!link.hasAttribute('tabindex')) link.setAttribute('tabindex', '0'); // We want to close the drop down if the href links somewhere internally 19018 // to the page 19019 19020 if (INTERNAL_PAGE_LINK_HASHES_PATTERN.test(link.hash)) { 19021 link.addEventListener('click', close.bind(null, data)); 19022 } 19023 }); // Remove old events 19024 19025 data.el.off(namespace); 19026 data.toggle.off(namespace); 19027 19028 if (data.nav) { 19029 data.nav.off(namespace); 19030 } 19031 19032 var initialToggler = makeToggler(data, FORCE_CLOSE); 19033 19034 if (inDesigner) { 19035 data.el.on(settingEvent, makeSettingEventHandler(data)); 19036 } 19037 19038 if (!inDesigner) { 19039 // Close in preview mode and clean the data.hovering state 19040 if (inApp) { 19041 data.hovering = false;
19042 close(data); 19043 } 19044 19045 if (data.config.hover) { 19046 data.toggle.on(mouseEnterEvent, makeMouseEnterHandler(data)); 19047 } 19048 19049 data.el.on(closeEvent, initialToggler); 19050 data.el.on(keydownEvent, makeDropdownKeydownHandler(data)); 19051 data.el.on(focusOutEvent, makeDropdownFocusOutHandler(data)); 19052 data.toggle.on(mouseUpEvent, initialToggler); 19053 data.toggle.on(keydownEvent, makeToggleKeydownHandler(data)); 19054 data.nav = data.el.closest('.w-nav'); 19055 data.nav.on(closeEvent, initialToggler); 19056 } 19057 } 19058 /** 19059 * Mutate the data object with a new config property 19060 */ 19061 19062 19063 function configure(data) { 19064 // Determine if z-index should be managed 19065 var zIndex = Number(data.el.css('z-index')); 19066 data.manageZ = zIndex === defaultZIndex || zIndex === defaultZIndex + 1; 19067 data.config = { 19068 hover: (data.el.attr('data-hover') === true || data.el.attr('data-hover') === '1') && !touch, 19069 delay: Number(data.el.attr('data-delay')) || 0 19070 }; 19071 } 19072 19073 function makeSettingEventHandler(data) { 19074 return function (evt, options) { 19075 options = options || {}; 19076 configure(data); 19077 options.open === true && open(data, true); 19078 options.open === false && close(data, { 19079 immediate: true 19080 }); 19081 }; 19082 } 19083 19084 function makeToggler(data, forceClose) { 19085 return debounce(function (evt) { 19086 if (data.open || evt && evt.type === 'w-close') { 19087 return close(data, { 19088 forceClose: forceClose 19089 }); 19090 } 19091 19092 open(data); 19093 }); 19094 } 19095 19096 function open(data) { 19097 if (data.open) { 19098 return; 19099 } 19100 19101 closeOthers(data); 19102 data.open = true; 19103 data.list.addClass(openStateClassName); 19104 data.toggle.addClass(openStateClassName); 19105 data.toggle.attr('aria-expanded', 'true'); // ARIA 19106 19107 ix.intro(0, data.el[0]); 19108 Webflow.redraw.up(); // Increase z-index to keep above other managed dropdowns 19109 19110 data.manageZ && data.el.css('z-index', defaultZIndex + 1); // Listen for click outside events 19111 19112 var isEditor = Webflow.env('editor'); 19113 19114 if (!inDesigner) { 19115 $doc.on(mouseUpEvent, data.mouseUpOutside); 19116 } 19117 19118 if (data.hovering && !isEditor) { 19119 data.el.on(mouseLeaveEvent, data.mouseLeave); 19120 } 19121 19122 if (data.hovering && isEditor) { 19123 $doc.on(mouseMoveEvent, data.mouseMoveOutside); 19124 } // Clear previous delay 19125 19126 19127 window.clearTimeout(data.delayId); 19128 } 19129 19130 function close(data) { 19131 var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, 19132 immediate = _ref.immediate, 19133 forceClose = _ref.forceClose; 19134 19135 if (!data.open) { 19136 return; 19137 } // Do not close hover-based menus if currently hovering 19138 19139 19140 if (data.config.hover && data.hovering && !forceClose) { 19141 return; 19142 } 19143 19144 data.toggle.attr('aria-expanded', 'false'); 19145 data.open = false; 19146 var config = data.config; 19147 ix.outro(0, data.el[0]); // Stop listening for click outside events 19148 19149 $doc.off(mouseUpEvent, data.mouseUpOutside); 19150 $doc.off(mouseMoveEvent, data.mouseMoveOutside); 19151 data.el.off(mouseLeaveEvent, data.mouseLeave); // Clear previous delay 19152 19153 window.clearTimeout(data.delayId); // Skip delay during immediate 19154 19155 if (!config.delay || immediate) { 19156 return data.complete(); 19157 } // Optionally wait for delay before close 19158 19159 19160 data.delayId = window.setTimeout(data.complete, config.delay); 19161 } 19162 19163 function closeAll() { 19164 $doc.find(namespace).each(function (i, el) { 19165 $(el).triggerHandler(closeEvent); 19166 }); 19167 } 19168 19169 function closeOthers(data) { 19170 var self = data.el[0]; 19171 $dropdowns.each(function (i, other) { 19172 var $other = $(other); 19173 19174 if ($other.is(self) || $other.has(self).length) { 19175 return; 19176 } 19177 19178 $other.triggerHandler(closeEvent); 19179 }); 19180 } 19181 19182 function outside(data) { 19183 // Unbind previous click handler if it exists 19184 if (data.mouseUpOutside) { 19185 $doc.off(mouseUpEvent, data.mouseUpOutside); 19186 } // Close menu when clicked outside 19187 19188 19189 return debounce(function (evt) { 19190 if (!data.open) { 19191 return; 19192 } 19193 19194 var $target = $(evt.target); 19195 19196 if ($target.closest('.w-dropdown-toggle').length) { 19197 return; 19198 } 19199 19200 var isEventOutsideDropdowns = $.inArray(data.el[0], $target.parents(namespace)) === -1; 19201 var isEditor = Webflow.env('editor'); 19202 19203 if (isEventOutsideDropdowns) { 19204 if (isEditor) { 19205 var isEventOnDetachedSvg = $target.parents().length === 1 && $target.parents('svg').length === 1; 19206 var isEventOnHoverControls = $target.parents('.w-editor-bem-EditorHoverControls').length; 19207 19208 if (isEventOnDetachedSvg || isEventOnHoverControls) { 19209 return; 19210 } 19211 } 19212 19213 close(data); 19214 } 19215 }); 19216 } 19217 19218 function complete(data) { 19219 return function () { 19220 data.list.removeClass(openStateClassName); 19221 data.toggle.removeClass(openStateClassName); // Reset z-index for managed dropdowns 19222 19223 data.manageZ && data.el.css('z-index', ''); 19224 }; 19225 } 19226 19227 function makeMouseEnterHandler(data) { 19228 return function () { 19229 data.hovering = true; 19230 open(data); 19231 }; 19232 } 19233 19234 function makeMouseLeaveHandler(data) { 19235 return function () { 19236 data.hovering = false; // We do not want the list to close upon mouseleave 19237 // if one of the links has focus 19238 19239 if (!data.links.is(':focus')) { 19240 close(data); 19241 } 19242 }; 19243 } 19244 19245 function moveOutside(data) { 19246 return debounce(function (evt) { 19247 if (!data.open) { 19248 return; 19249 } 19250 19251 var $target = $(evt.target); 19252 var isEventOutsideDropdowns = $.inArray(data.el[0], $target.parents(namespace)) === -1; 19253 19254 if (isEventOutsideDropdowns) { 19255 var isEventOnHoverControls = $target.parents('.w-editor-bem-EditorHoverControls').length; 19256 var isEventOnHoverToolbar = $target.parents('.w-editor-bem-RTToolbar').length; 19257 var $editorOverlay = $('.w-editor-bem-EditorOverlay'); 19258 var isDropdownInEdition = $editorOverlay.find('.w-editor-edit-outline').length || $editorOverlay.find('.w-editor-bem-RTToolbar').length; 19259 19260 if (isEventOnHoverControls || isEventOnHoverToolbar || isDropdownInEdition) { 19261 return; 19262 } 19263 19264 data.hovering = false;
19265 close(data); 19266 } 19267 }); 19268 } 19269 19270 function makeDropdownKeydownHandler(data) { 19271 return function (evt) { 19272 // Do not respond to keyboard events in designer or preview mode, 19273 // or if the list is not open 19274 if (inDesigner || inPreview || !data.open) { 19275 return; 19276 } // Realign selectedIdx with the menu item that is currently in focus. 19277 // We need this because we do not track the `Tab` key activity! 19278 19279 19280 data.selectedIdx = data.links.index(document.activeElement); // Evaluate item-selection logic 19281 19282 switch (evt.keyCode) { 19283 case KEY_CODES.HOME: 19284 { 19285 if (!data.open) return; 19286 data.selectedIdx = 0; 19287 focusSelectedLink(data); 19288 return evt.preventDefault(); 19289 } 19290 19291 case KEY_CODES.END: 19292 { 19293 if (!data.open) return; 19294 data.selectedIdx = data.links.length - 1; 19295 focusSelectedLink(data); 19296 return evt.preventDefault(); 19297 } 19298 19299 case KEY_CODES.ESCAPE: 19300 { 19301 close(data); 19302 data.toggle.focus(); 19303 return evt.stopPropagation(); 19304 } 19305 19306 case KEY_CODES.ARROW_RIGHT: 19307 case KEY_CODES.ARROW_DOWN: 19308 { 19309 data.selectedIdx = Math.min(data.links.length - 1, data.selectedIdx + 1); 19310 focusSelectedLink(data); 19311 return evt.preventDefault(); 19312 } 19313 19314 case KEY_CODES.ARROW_LEFT: 19315 case KEY_CODES.ARROW_UP: 19316 { 19317 data.selectedIdx = Math.max(-1, data.selectedIdx - 1); 19318 focusSelectedLink(data); 19319 return evt.preventDefault(); 19320 } 19321 } 19322 }; 19323 } 19324 19325 function focusSelectedLink(data) { 19326 if (data.links[data.selectedIdx]) { 19327 data.links[data.selectedIdx].focus(); 19328 } 19329 } 19330 19331 function makeToggleKeydownHandler(data) { 19332 // We want to close immediately 19333 // if interacting via keyboard 19334 var toggler = makeToggler(data, FORCE_CLOSE); 19335 return function (evt) { 19336 // Do not respond to keyboard events in designer or preview 19337 if (inDesigner || inPreview) return; // If the menu is not open, we don't want 19338 // the up or Down arrows to do anything 19339 19340 if (!data.open) { 19341 switch (evt.keyCode) { 19342 case KEY_CODES.ARROW_UP: 19343 case KEY_CODES.ARROW_DOWN: 19344 { 19345 return evt.stopPropagation(); 19346 } 19347 } 19348 } 19349 19350 switch (evt.keyCode) { 19351 case KEY_CODES.SPACE: 19352 case KEY_CODES.ENTER: 19353 { 19354 toggler(); 19355 evt.stopPropagation(); 19356 return evt.preventDefault(); 19357 } 19358 } 19359 }; 19360 } 19361 19362 function makeDropdownFocusOutHandler(data) { 19363 return debounce(function (evt) { 19364 var relatedTarget = evt.relatedTarget, 19365 target = evt.target; 19366 var menuEl = data.el[0]; 19367 /** 19368 * Close menu 19369 * With focusout events, the `relatedTarget` is the element that will next receive focus. 19370 * @see: https://developer.mozilla.org/en-US/docs/Web/API/FocusEvent/relatedTarget 19371 */ 19372 19373 var menuContainsFocus = menuEl.contains(relatedTarget) || menuEl.contains(target); 19374 19375 if (!menuContainsFocus) { 19376 close(data); 19377 } 19378 19379 return evt.stopPropagation(); 19380 }); 19381 } // Export module 19382 19383 19384 return api; 19385 }); 19386 19387 /***/ 19388 }), 19389/* 318 */ 19390/***/ (function (module, exports, __webpack_require__) { 19391 19392 "use strict"; 19393 // @wf-will-never-add-flow-to-this-file 19394 19395 /* globals 19396 window, 19397 document, 19398 FormData, 19399 WEBFLOW_FORM_API_HOST, 19400 WEBFLOW_FORM_OLDIE_HOST 19401 */ 19402 19403 /* eslint-disable no-var */ 19404 19405 /** 19406 * Webflow: Forms 19407 */ 19408 19409 var _interopRequireDefault = __webpack_require__(0); 19410 19411 var _slicedToArray2 = _interopRequireDefault(__webpack_require__(319)); 19412 19413 var Webflow = __webpack_require__(3); 19414 19415 Webflow.define('forms', module.exports = function ($, _) { 19416 var api = {}; 19417 var $doc = $(document); 19418 var $forms; 19419 var loc = window.location; 19420 var retro = window.XDomainRequest && !window.atob; 19421 var namespace = '.w-form'; 19422 var siteId; 19423 var emailField = /e(-)?mail/i; 19424 var emailValue = /^\S+@\S+$/; 19425 var alert = window.alert; 19426 var inApp = Webflow.env(); 19427 var listening; 19428 var formUrl; 19429 var signFileUrl; // MailChimp domains: list-manage.com + mirrors 19430 19431 var chimpRegex = /list-manage[1-9]?.com/i; 19432 19433 var disconnected = _.debounce(function () { 19434 alert('Oops! This page has improperly configured forms. Please contact your website administrator to fix this issue.'); 19435 }, 100); 19436 19437 api.ready = api.design = api.preview = function () { 19438 // Init forms 19439 init(); // Wire document events on published site only once 19440 19441 if (!inApp && !listening) { 19442 addListeners(); 19443 } 19444 }; 19445
19446 function init() { 19447 siteId = $('html').attr('data-wf-site'); 19448 formUrl = "https://webflow.com" + '/api/v1/form/' + siteId; // Work around same-protocol IE XDR limitation - without this IE9 and below forms won't submit 19449 19450 if (retro && formUrl.indexOf("https://webflow.com") >= 0) { 19451 formUrl = formUrl.replace("https://webflow.com", "http://formdata.webflow.com"); 19452 } 19453 19454 signFileUrl = "".concat(formUrl, "/signFile"); 19455 $forms = $(namespace + ' form'); 19456 19457 if (!$forms.length) { 19458 return; 19459 } 19460 19461 $forms.each(build); 19462 } 19463 19464 function build(i, el) { 19465 // Store form state using namespace 19466 var $el = $(el); 19467 var data = $.data(el, namespace); 19468 19469 if (!data) { 19470 data = $.data(el, namespace, { 19471 form: $el 19472 }); 19473 } // data.form 19474 19475 19476 reset(data); 19477 var wrap = $el.closest('div.w-form'); 19478 data.done = wrap.find('> .w-form-done'); 19479 data.fail = wrap.find('> .w-form-fail'); 19480 data.fileUploads = wrap.find('.w-file-upload'); 19481 data.fileUploads.each(function (j) { 19482 initFileUpload(j, data); 19483 }); 19484 var action = data.action = $el.attr('action'); 19485 data.handler = null; 19486 data.redirect = $el.attr('data-redirect'); // MailChimp form 19487 19488 if (chimpRegex.test(action)) { 19489 data.handler = submitMailChimp; 19490 return; 19491 } // Custom form action 19492 19493 19494 if (action) { 19495 return; 19496 } // Webflow forms for hosting accounts 19497 19498 19499 if (siteId) { 19500 data.handler = typeof hostedSubmitWebflow === 'function' ? hostedSubmitWebflow : exportedSubmitWebflow; 19501 return; 19502 } // Alert for disconnected Webflow forms 19503 19504 19505 disconnected(); 19506 } 19507 19508 function addListeners() { 19509 listening = true; // Handle form submission for Webflow forms 19510 19511 $doc.on('submit', namespace + ' form', function (evt) { 19512 var data = $.data(this, namespace); 19513 19514 if (data.handler) { 19515 data.evt = evt; 19516 data.handler(data); 19517 } 19518 }); // handle checked ui for custom checkbox and radio button 19519 19520 var CHECKBOX_CLASS_NAME = '.w-checkbox-input'; 19521 var RADIO_INPUT_CLASS_NAME = '.w-radio-input'; 19522 var CHECKED_CLASS = 'w--redirected-checked'; 19523 var FOCUSED_CLASS = 'w--redirected-focus'; 19524 var CUSTOM_CONTROLS = [['checkbox', CHECKBOX_CLASS_NAME], ['radio', RADIO_INPUT_CLASS_NAME]]; 19525 $doc.on('change', namespace + " form input[type=\"checkbox\"]:not(" + CHECKBOX_CLASS_NAME + ')', function (evt) { 19526 $(evt.target).siblings(CHECKBOX_CLASS_NAME).toggleClass(CHECKED_CLASS); 19527 }); 19528 $doc.on('change', namespace + " form input[type=\"radio\"]", function (evt) { 19529 $("input[name=\"".concat(evt.target.name, "\"]:not(").concat(CHECKBOX_CLASS_NAME, ")")).map(function (i, el) { 19530 return $(el).siblings(RADIO_INPUT_CLASS_NAME).removeClass(CHECKED_CLASS); 19531 }); 19532 var $target = $(evt.target); 19533 19534 if (!$target.hasClass('w-radio-input')) { 19535 $target.siblings(RADIO_INPUT_CLASS_NAME).addClass(CHECKED_CLASS); 19536 } 19537 }); 19538 CUSTOM_CONTROLS.forEach(function (_ref) { 19539 var _ref2 = (0, _slicedToArray2["default"])(_ref, 2), 19540 controlType = _ref2[0], 19541 customControlClassName = _ref2[1]; 19542 19543 $doc.on('focus', namespace + " form input[type=\"".concat(controlType, "\"]:not(") + customControlClassName + ')', function (evt) { 19544 $(evt.target).siblings(customControlClassName).addClass(FOCUSED_CLASS); 19545 }); 19546 $doc.on('blur', namespace + " form input[type=\"".concat(controlType, "\"]:not(") + customControlClassName + ')', function (evt) { 19547 $(evt.target).siblings(customControlClassName).removeClass(FOCUSED_CLASS); 19548 }); 19549 }); 19550 } // Reset data common to all submit handlers 19551 19552 19553 function reset(data) { 19554 var btn = data.btn = data.form.find(':input[type="submit"]'); 19555 data.wait = data.btn.attr('data-wait') || null; 19556 data.success = false;
19557 btn.prop('disabled', false); 19558 data.label && btn.val(data.label); 19559 } // Disable submit button 19560 19561 19562 function disableBtn(data) { 19563 var btn = data.btn; 19564 var wait = data.wait; 19565 btn.prop('disabled', true); // Show wait text and store previous label 19566 19567 if (wait) { 19568 data.label = btn.val(); 19569 btn.val(wait); 19570 } 19571 } // Find form fields, validate, and set value pairs 19572 19573 19574 function findFields(form, result) { 19575 var status = null; 19576 result = result || {}; // The ":input" selector is a jQuery shortcut to select all inputs, selects, textareas 19577 19578 form.find(':input:not([type="submit"]):not([type="file"])').each(function (i, el) { 19579 var field = $(el); 19580 var type = field.attr('type'); 19581 var name = field.attr('data-name') || field.attr('name') || 'Field ' + (i + 1); 19582 var value = field.val(); 19583 19584 if (type === 'checkbox') { 19585 value = field.is(':checked'); 19586 } else if (type === 'radio') { 19587 // Radio group value already processed 19588 if (result[name] === null || typeof result[name] === 'string') { 19589 return; 19590 } 19591 19592 value = form.find('input[name="' + field.attr('name') + '"]:checked').val() || null; 19593 } 19594 19595 if (typeof value === 'string') { 19596 value = $.trim(value); 19597 } 19598 19599 result[name] = value; 19600 status = status || getStatus(field, type, name, value); 19601 }); 19602 return status; 19603 } 19604 19605 function findFileUploads(form) { 19606 var result = {}; 19607 form.find(':input[type="file"]').each(function (i, el) { 19608 var field = $(el); 19609 var name = field.attr('data-name') || field.attr('name') || 'File ' + (i + 1); 19610 var value = field.attr('data-value'); 19611 19612 if (typeof value === 'string') { 19613 value = $.trim(value); 19614 } 19615 19616 result[name] = value; 19617 }); 19618 return result; 19619 } 19620 19621 function getStatus(field, type, name, value) { 19622 var status = null; 19623 19624 if (type === 'password') { 19625 status = 'Passwords cannot be submitted.'; 19626 } else if (field.attr('required')) { 19627 if (!value) { 19628 status = 'Please fill out the required field: ' + name; 19629 } else if (emailField.test(field.attr('type'))) { 19630 if (!emailValue.test(value)) { 19631 status = 'Please enter a valid email address for: ' + name; 19632 } 19633 } 19634 } else if (name === 'g-recaptcha-response' && !value) { 19635 status = 'Please confirm youâre not a robot.'; 19636 } 19637 19638 return status; 19639 } 19640 19641 function exportedSubmitWebflow(data) { 19642 preventDefault(data); 19643 afterSubmit(data); 19644 } // Submit form to MailChimp 19645 19646 19647 function submitMailChimp(data) { 19648 reset(data); 19649 var form = data.form; 19650 var payload = {}; // Skip Ajax submission if http/s mismatch, fallback to POST instead 19651 19652 if (/^https/.test(loc.href) && !/^https/.test(data.action)) { 19653 form.attr('method', 'post'); 19654 return; 19655 } 19656 19657 preventDefault(data); // Find & populate all fields 19658 19659 var status = findFields(form, payload); 19660 19661 if (status) { 19662 return alert(status); 19663 } // Disable submit button 19664 19665 19666 disableBtn(data); // Use special format for MailChimp params 19667 19668 var fullName; 19669 19670 _.each(payload, function (value, key) { 19671 if (emailField.test(key)) { 19672 payload.EMAIL = value; 19673 } 19674 19675 if (/^((full[ _-]?)?name)$/i.test(key)) { 19676 fullName = value; 19677 } 19678 19679 if (/^(first[ _-]?name)$/i.test(key)) { 19680 payload.FNAME = value; 19681 } 19682 19683 if (/^(last[ _-]?name)$/i.test(key)) { 19684 payload.LNAME = value; 19685 } 19686 }); 19687 19688 if (fullName && !payload.FNAME) { 19689 fullName = fullName.split(' '); 19690 payload.FNAME = fullName[0]; 19691 payload.LNAME = payload.LNAME || fullName[1]; 19692 } // Use the (undocumented) MailChimp jsonp api 19693 19694 19695 var url = data.action.replace('/post?', '/post-json?') + '&c=?'; // Add special param to prevent bot signups 19696 19697 var userId = url.indexOf('u=') + 2; 19698 userId = url.substring(userId, url.indexOf('&', userId)); 19699 var listId = url.indexOf('id=') + 3; 19700 listId = url.substring(listId, url.indexOf('&', listId)); 19701 payload['b_' + userId + '_' + listId] = ''; 19702 $.ajax({ 19703 url: url, 19704 data: payload, 19705 dataType: 'jsonp' 19706 }).done(function (resp) { 19707 data.success = resp.result === 'success' || /already/.test(resp.msg); 19708 19709 if (!data.success) { 19710 console.info('MailChimp error: ' + resp.msg); 19711 } 19712 19713 afterSubmit(data); 19714 }).fail(function () { 19715 afterSubmit(data); 19716 }); 19717 } // Common callback which runs after all Ajax submissions 19718 19719 19720 function afterSubmit(data) { 19721 var form = data.form; 19722 var redirect = data.redirect; 19723 var success = data.success; // Redirect to a success url if defined 19724 19725 if (success && redirect) { 19726 Webflow.location(redirect); 19727 return; 19728 } // Show or hide status divs 19729 19730 19731 data.done.toggle(success); 19732 data.fail.toggle(!success); // Hide form on success 19733 19734 form.toggle(!success); // Reset data and enable submit button 19735 19736 reset(data); 19737 } 19738 19739 function preventDefault(data) { 19740 data.evt && data.evt.preventDefault(); 19741 data.evt = null; 19742 } 19743 19744 function initFileUpload(i, form) { 19745 if (!form.fileUploads || !form.fileUploads[i]) { 19746 return; 19747 } 19748 19749 var file; 19750 var $el = $(form.fileUploads[i]); 19751 var $defaultWrap = $el.find('> .w-file-upload-default'); 19752 var $uploadingWrap = $el.find('> .w-file-upload-uploading'); 19753 var $successWrap = $el.find('> .w-file-upload-success'); 19754 var $errorWrap = $el.find('> .w-file-upload-error'); 19755 var $input = $defaultWrap.find('.w-file-upload-input'); 19756 var $label = $defaultWrap.find('.w-file-upload-label'); 19757 var $labelChildren = $label.children(); 19758 var $errorMsgEl = $errorWrap.find('.w-file-upload-error-msg'); 19759 var $fileEl = $successWrap.find('.w-file-upload-file'); 19760 var $removeEl = $successWrap.find('.w-file-remove-link'); 19761 var $fileNameEl = $fileEl.find('.w-file-upload-file-name'); 19762 var sizeErrMsg = $errorMsgEl.attr('data-w-size-error'); 19763 var typeErrMsg = $errorMsgEl.attr('data-w-type-error'); 19764 var genericErrMsg = $errorMsgEl.attr('data-w-generic-error'); 19765 19766 if (!inApp) { 19767 $removeEl.on('click', function () { 19768 $input.removeAttr('data-value'); 19769 $input.val(''); 19770 $fileNameEl.html(''); 19771 $defaultWrap.toggle(true); 19772 $successWrap.toggle(false); 19773 }); 19774 $input.on('change', function (e) { 19775 file = e.target && e.target.files && e.target.files[0]; 19776 19777 if (!file) { 19778 return; 19779 } // Show uploading 19780 19781 19782 $defaultWrap.toggle(false); 19783 $errorWrap.toggle(false); 19784 $uploadingWrap.toggle(true); // Set filename 19785 19786 $fileNameEl.text(file.name); // Disable submit button 19787 19788 if (!isUploading()) { 19789 disableBtn(form); 19790 } 19791 19792 form.fileUploads[i].uploading = true; 19793 signFile(file, afterSign); 19794 }); // Setting input width 1px and height equal label 19795 // This is so the browser required error will show up 19796 19797 var height = $label.outerHeight(); 19798 $input.height(height); 19799 $input.width(1); 19800 } else { 19801 $input.on('click', function (e) { 19802 e.preventDefault(); 19803 }); 19804 $label.on('click', function (e) { 19805 e.preventDefault(); 19806 }); 19807 $labelChildren.on('click', function (e) { 19808 e.preventDefault(); 19809 }); 19810 } 19811 19812 function parseError(err) { 19813 var errorMsg = err.responseJSON && err.responseJSON.msg; 19814 var userError = genericErrMsg; 19815 19816 if (typeof errorMsg === 'string' && errorMsg.indexOf('InvalidFileTypeError') === 0) { 19817 userError = typeErrMsg; 19818 } else if (typeof errorMsg === 'string' && errorMsg.indexOf('MaxFileSizeError') === 0) { 19819 userError = sizeErrMsg; 19820 } 19821 19822 $errorMsgEl.text(userError); 19823 $input.removeAttr('data-value'); 19824 $input.val(''); 19825 $uploadingWrap.toggle(false); 19826 $defaultWrap.toggle(true); 19827 $errorWrap.toggle(true); 19828 form.fileUploads[i].uploading = false;
19829 19830 if (!isUploading()) { 19831 reset(form); 19832 } 19833 } 19834 19835 function afterSign(err, data) { 19836 if (err) { 19837 return parseError(err); 19838 } 19839 19840 var fileName = data.fileName; 19841 var postData = data.postData; 19842 var fileId = data.fileId; 19843 var s3Url = data.s3Url; 19844 $input.attr('data-value', fileId); 19845 uploadS3(s3Url, postData, file, fileName, afterUpload); 19846 } 19847 19848 function afterUpload(err) { 19849 if (err) { 19850 return parseError(err); 19851 } // Show success 19852 19853 19854 $uploadingWrap.toggle(false); 19855 $successWrap.css('display', 'inline-block'); 19856 form.fileUploads[i].uploading = false; 19857 19858 if (!isUploading()) { 19859 reset(form); 19860 } 19861 } 19862 19863 function isUploading() { 19864 var uploads = form.fileUploads && form.fileUploads.toArray() || []; 19865 return uploads.some(function (value) { 19866 return value.uploading; 19867 }); 19868 } 19869 } 19870 19871 function signFile(file, cb) { 19872 var payload = { 19873 name: file.name, 19874 size: file.size 19875 }; 19876 $.ajax({ 19877 type: 'POST', 19878 url: signFileUrl, 19879 data: payload, 19880 dataType: 'json', 19881 crossDomain: true 19882 }).done(function (data) { 19883 cb(null, data); 19884 }).fail(function (err) { 19885 cb(err); 19886 }); 19887 } 19888 19889 function uploadS3(url, data, file, fileName, cb) { 19890 var formData = new FormData(); 19891 19892 for (var k in data) { 19893 formData.append(k, data[k]); 19894 } 19895 19896 formData.append('file', file, fileName); 19897 $.ajax({ 19898 type: 'POST', 19899 url: url, 19900 data: formData, 19901 processData: false, 19902 contentType: false 19903 }).done(function () { 19904 cb(null); 19905 }).fail(function (err) { 19906 cb(err); 19907 }); 19908 } // Export module 19909 19910 19911 return api; 19912 }); 19913 19914 /***/ 19915 }), 19916/* 319 */ 19917/***/ (function (module, exports, __webpack_require__) { 19918 19919 var arrayWithHoles = __webpack_require__(320); 19920 19921 var iterableToArrayLimit = __webpack_require__(321); 19922 19923 var nonIterableRest = __webpack_require__(322); 19924 19925 function _slicedToArray(arr, i) { 19926 return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest(); 19927 } 19928 19929 module.exports = _slicedToArray; 19930 19931 /***/ 19932 }), 19933/* 320 */ 19934/***/ (function (module, exports) { 19935 19936 function _arrayWithHoles(arr) { 19937 if (Array.isArray(arr)) return arr; 19938 } 19939 19940 module.exports = _arrayWithHoles; 19941 19942 /***/ 19943 }), 19944/* 321 */ 19945/***/ (function (module, exports) { 19946 19947 function _iterableToArrayLimit(arr, i) { 19948 var _arr = []; 19949 var _n = true; 19950 var _d = false; 19951 var _e = undefined; 19952 19953 try { 19954 for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { 19955 _arr.push(_s.value); 19956 19957 if (i && _arr.length === i) break; 19958 } 19959 } catch (err) { 19960 _d = true; 19961 _e = err; 19962 } finally { 19963 try { 19964 if (!_n && _i["return"] != null) _i["return"](); 19965 } finally { 19966 if (_d) throw _e; 19967 } 19968 } 19969 19970 return _arr; 19971 } 19972 19973 module.exports = _iterableToArrayLimit; 19974 19975 /***/ 19976 }), 19977/* 322 */ 19978/***/ (function (module, exports) { 19979 19980 function _nonIterableRest() { 19981 throw new TypeError("Invalid attempt to destructure non-iterable instance"); 19982 } 19983 19984 module.exports = _nonIterableRest; 19985 19986 /***/ 19987 }), 19988/* 323 */ 19989/***/ (function (module, exports, __webpack_require__) { 19990 19991 "use strict"; 19992 // @wf-will-never-add-flow-to-this-file 19993 19994 /* globals window, document, jQuery */ 19995 19996 /* eslint-disable no-var */ 19997 19998 /** 19999 * Webflow: Lightbox component 20000 */ 20001 20002 var Webflow = __webpack_require__(3); 20003 20004 var CONDITION_INVISIBLE_CLASS = 'w-condition-invisible'; 20005 var CONDVIS_SELECTOR = '.' + CONDITION_INVISIBLE_CLASS; 20006 20007 function withoutConditionallyHidden(items) { 20008 return items.filter(function (item) { 20009 return !isConditionallyHidden(item); 20010 }); 20011 } 20012 20013 function isConditionallyHidden(item) { 20014 return Boolean(item.$el && item.$el.closest(CONDVIS_SELECTOR).length); 20015 } 20016 20017 function getPreviousVisibleIndex(start, items) { 20018 for (var i = start; i >= 0; i--) { 20019 if (!isConditionallyHidden(items[i])) { 20020 return i; 20021 } 20022 } 20023 20024 return -1; 20025 } 20026 20027 function getNextVisibleIndex(start, items) { 20028 for (var i = start; i <= items.length - 1; i++) { 20029 if (!isConditionallyHidden(items[i])) { 20030 return i; 20031 } 20032 } 20033 20034 return -1; 20035 } 20036 20037 function shouldSetArrowLeftInactive(currentIndex, items) { 20038 return getPreviousVisibleIndex(currentIndex - 1, items) === -1; 20039 } 20040 20041 function shouldSetArrowRightInactive(currentIndex, items) { 20042 return getNextVisibleIndex(currentIndex + 1, items) === -1; 20043 } 20044 20045 function createLightbox(window, document, $, container) { 20046 var tram = $.tram; 20047 var isArray = Array.isArray; 20048 var namespace = 'w-lightbox';
20049 var prefix = namespace + '-'; 20050 var prefixRegex = /(^|\s+)/g; // Array of objects describing items to be displayed. 20051 20052 var items = []; // Index of the currently displayed item. 20053 20054 var currentIndex; // Object holding references to jQuery wrapped nodes. 20055 20056 var $refs; // Instance of Spinner 20057 20058 var spinner; 20059 20060 function lightbox(thing, index) { 20061 items = isArray(thing) ? thing : [thing]; 20062 20063 if (!$refs) { 20064 lightbox.build(); 20065 } 20066 20067 if (withoutConditionallyHidden(items).length > 1) { 20068 $refs.items = $refs.empty; 20069 items.forEach(function (item) { 20070 var $thumbnail = dom('thumbnail'); 20071 var $item = dom('item').append($thumbnail); 20072 20073 if (isConditionallyHidden(item)) { 20074 $item.addClass(CONDITION_INVISIBLE_CLASS); 20075 } 20076 20077 $refs.items = $refs.items.add($item); 20078 loadImage(item.thumbnailUrl || item.url, function ($image) { 20079 if ($image.prop('width') > $image.prop('height')) { 20080 addClass($image, 'wide'); 20081 } else { 20082 addClass($image, 'tall'); 20083 } 20084 20085 $thumbnail.append(addClass($image, 'thumbnail-image')); 20086 }); 20087 }); 20088 $refs.strip.empty().append($refs.items); 20089 addClass($refs.content, 'group'); 20090 } 20091 20092 tram( // Focus the lightbox to receive keyboard events. 20093 removeClass($refs.lightbox, 'hide').trigger('focus')).add('opacity .3s').start({ 20094 opacity: 1 20095 }); // Prevent document from scrolling while lightbox is active. 20096 20097 addClass($refs.html, 'noscroll'); 20098 return lightbox.show(index || 0); 20099 } 20100 /** 20101 * Creates the DOM structure required by the lightbox. 20102 */ 20103 20104 20105 lightbox.build = function () { 20106 // In case `build` is called more than once. 20107 lightbox.destroy(); 20108 $refs = { 20109 html: $(document.documentElement), 20110 // Empty jQuery object can be used to build new ones using `.add`. 20111 empty: $() 20112 }; 20113 $refs.arrowLeft = dom('control left inactive'); 20114 $refs.arrowRight = dom('control right inactive'); 20115 $refs.close = dom('control close'); 20116 $refs.spinner = dom('spinner'); 20117 $refs.strip = dom('strip'); 20118 spinner = new Spinner($refs.spinner, prefixed('hide')); 20119 $refs.content = dom('content').append($refs.spinner, $refs.arrowLeft, $refs.arrowRight, $refs.close); 20120 $refs.container = dom('container').append($refs.content, $refs.strip); 20121 $refs.lightbox = dom('backdrop hide').append($refs.container); // We are delegating events for performance reasons and also 20122 // to not have to reattach handlers when images change. 20123 20124 $refs.strip.on('click', selector('item'), itemTapHandler); 20125 $refs.content.on('swipe', swipeHandler).on('click', selector('left'), handlerPrev).on('click', selector('right'), handlerNext).on('click', selector('close'), handlerHide).on('click', selector('image, caption'), handlerNext); 20126 $refs.container.on('click', selector('view'), handlerHide) // Prevent images from being dragged around. 20127 .on('dragstart', selector('img'), preventDefault); 20128 $refs.lightbox.on('keydown', keyHandler) // IE loses focus to inner nodes without letting us know. 20129 .on('focusin', focusThis); // The `tabindex` attribute is needed to enable non-input elements 20130 // to receive keyboard events. 20131 20132 $(container).append($refs.lightbox.prop('tabIndex', 0)); 20133 return lightbox; 20134 }; 20135 /** 20136 * Dispose of DOM nodes created by the lightbox. 20137 */ 20138 20139 20140 lightbox.destroy = function () { 20141 if (!$refs) { 20142 return; 20143 } // Event handlers are also removed. 20144 20145 20146 removeClass($refs.html, 'noscroll'); 20147 $refs.lightbox.remove(); 20148 $refs = undefined; 20149 }; 20150 /** 20151 * Show a specific item. 20152 */ 20153 20154 20155 lightbox.show = function (index) { 20156 // Bail if we are already showing this item. 20157 if (index === currentIndex) { 20158 return; 20159 } 20160 20161 var item = items[index]; 20162 20163 if (!item) { 20164 return lightbox.hide(); 20165 } 20166 20167 if (isConditionallyHidden(item)) { 20168 if (index < currentIndex) { 20169 var previousVisibleIndex = getPreviousVisibleIndex(index - 1, items); 20170 index = previousVisibleIndex > -1 ? previousVisibleIndex : index; 20171 } else { 20172 var nextVisibleIndex = getNextVisibleIndex(index + 1, items); 20173 index = nextVisibleIndex > -1 ? nextVisibleIndex : index; 20174 } 20175 20176 item = items[index]; 20177 } 20178 20179 var previousIndex = currentIndex; 20180 currentIndex = index; 20181 spinner.show(); // For videos, load an empty SVG with the video dimensions to preserve 20182 // the videoâs aspect ratio while being responsive. 20183 20184 var url = item.html && svgDataUri(item.width, item.height) || item.url; 20185 loadImage(url, function ($image) { 20186 // Make sure this is the last item requested to be shown since 20187 // images can finish loading in a different order than they were 20188 // requested in. 20189 if (index !== currentIndex) { 20190 return; 20191 } 20192 20193 var $figure = dom('figure', 'figure').append(addClass($image, 'image')); 20194 var $frame = dom('frame').append($figure); 20195 var $newView = dom('view').append($frame); 20196 var $html; 20197 var isIframe; 20198 20199 if (item.html) { 20200 $html = $(item.html);
20201 isIframe = $html.is('iframe'); 20202 20203 if (isIframe) { 20204 $html.on('load', transitionToNewView); 20205 } 20206 20207 $figure.append(addClass($html, 'embed')); 20208 } 20209 20210 if (item.caption) { 20211 $figure.append(dom('caption', 'figcaption').text(item.caption)); 20212 } 20213 20214 $refs.spinner.before($newView); 20215 20216 if (!isIframe) { 20217 transitionToNewView(); 20218 } 20219 20220 function transitionToNewView() { 20221 spinner.hide(); 20222 20223 if (index !== currentIndex) { 20224 $newView.remove(); 20225 return; 20226 } 20227 20228 toggleClass($refs.arrowLeft, 'inactive', shouldSetArrowLeftInactive(index, items)); 20229 toggleClass($refs.arrowRight, 'inactive', shouldSetArrowRightInactive(index, items)); 20230 20231 if ($refs.view) { 20232 tram($refs.view).add('opacity .3s').start({ 20233 opacity: 0 20234 }).then(remover($refs.view)); 20235 tram($newView).add('opacity .3s').add('transform .3s').set({ 20236 x: index > previousIndex ? '80px' : '-80px' 20237 }).start({ 20238 opacity: 1, 20239 x: 0 20240 }); 20241 } else { 20242 $newView.css('opacity', 1); 20243 } 20244 20245 $refs.view = $newView; 20246 20247 if ($refs.items) { 20248 removeClass($refs.items, 'active'); // Mark proper thumbnail as active 20249 20250 var $activeThumb = $refs.items.eq(index); 20251 addClass($activeThumb, 'active'); // Scroll into view 20252 20253 maybeScroll($activeThumb); 20254 } 20255 } 20256 }); 20257 return lightbox; 20258 }; 20259 /** 20260 * Hides the lightbox. 20261 */ 20262 20263 20264 lightbox.hide = function () { 20265 tram($refs.lightbox).add('opacity .3s').start({ 20266 opacity: 0 20267 }).then(hideLightbox); 20268 return lightbox; 20269 }; 20270 20271 lightbox.prev = function () { 20272 var previousVisibleIndex = getPreviousVisibleIndex(currentIndex - 1, items); 20273 20274 if (previousVisibleIndex > -1) { 20275 lightbox.show(previousVisibleIndex); 20276 } 20277 }; 20278 20279 lightbox.next = function () { 20280 var nextVisibleIndex = getNextVisibleIndex(currentIndex + 1, items); 20281 20282 if (nextVisibleIndex > -1) { 20283 lightbox.show(nextVisibleIndex); 20284 } 20285 }; 20286 20287 function createHandler(action) { 20288 return function (event) { 20289 // We only care about events triggered directly on the bound selectors. 20290 if (this !== event.target) { 20291 return; 20292 } 20293 20294 event.stopPropagation(); 20295 event.preventDefault(); 20296 action(); 20297 }; 20298 } 20299 20300 var handlerPrev = createHandler(lightbox.prev); 20301 var handlerNext = createHandler(lightbox.next); 20302 var handlerHide = createHandler(lightbox.hide); 20303 20304 var itemTapHandler = function itemTapHandler(event) { 20305 var index = $(this).index(); 20306 event.preventDefault(); 20307 lightbox.show(index); 20308 }; 20309 20310 var swipeHandler = function swipeHandler(event, data) { 20311 // Prevent scrolling. 20312 event.preventDefault(); 20313 20314 if (data.direction === 'left') { 20315 lightbox.next(); 20316 } else if (data.direction === 'right') { 20317 lightbox.prev(); 20318 } 20319 }; 20320 20321 var focusThis = function focusThis() { 20322 this.focus(); 20323 }; 20324 20325 function preventDefault(event) { 20326 event.preventDefault(); 20327 } 20328 20329 function keyHandler(event) { 20330 var keyCode = event.keyCode; // [esc] 20331 20332 if (keyCode === 27) { 20333 lightbox.hide(); // [â] 20334 } else if (keyCode === 37) { 20335 lightbox.prev(); // [â¶] 20336 } else if (keyCode === 39) { 20337 lightbox.next(); 20338 } 20339 } 20340 20341 function hideLightbox() { 20342 // If the lightbox hasn't been destroyed already 20343 if ($refs) { 20344 // Reset strip scroll, otherwise next lightbox opens scrolled to last position 20345 $refs.strip.scrollLeft(0).empty(); 20346 removeClass($refs.html, 'noscroll'); 20347 addClass($refs.lightbox, 'hide'); 20348 $refs.view && $refs.view.remove(); // Reset some stuff 20349 20350 removeClass($refs.content, 'group'); 20351 addClass($refs.arrowLeft, 'inactive'); 20352 addClass($refs.arrowRight, 'inactive'); 20353 currentIndex = $refs.view = undefined; 20354 } 20355 } 20356 20357 function loadImage(url, callback) { 20358 var $image = dom('img', 'img'); 20359 $image.one('load', function () { 20360 callback($image); 20361 }); // Start loading image. 20362 20363 $image.attr('src', url); 20364 return $image; 20365 } 20366 20367 function remover($element) { 20368 return function () { 20369 $element.remove(); 20370 }; 20371 } 20372 20373 function maybeScroll($item) { 20374 var itemElement = $item.get(0); 20375 var stripElement = $refs.strip.get(0); 20376 var itemLeft = itemElement.offsetLeft; 20377 var itemWidth = itemElement.clientWidth; 20378 var stripScrollLeft = stripElement.scrollLeft; 20379 var stripWidth = stripElement.clientWidth; 20380 var stripScrollLeftMax = stripElement.scrollWidth - stripWidth; 20381 var newScrollLeft; 20382 20383 if (itemLeft < stripScrollLeft) { 20384 newScrollLeft = Math.max(0, itemLeft + itemWidth - stripWidth); 20385 } else if (itemLeft + itemWidth > stripWidth + stripScrollLeft) { 20386 newScrollLeft = Math.min(itemLeft, stripScrollLeftMax); 20387 } 20388 20389 if (newScrollLeft != null) { 20390 tram($refs.strip).add('scroll-left 500ms').start({ 20391 'scroll-left': newScrollLeft 20392 }); 20393 } 20394 } 20395 /** 20396 * Spinner 20397 */ 20398 20399 20400 function Spinner($spinner, className, delay) { 20401 this.$element = $spinner; 20402 this.className = className; 20403 this.delay = delay || 200; 20404 this.hide(); 20405 } 20406 20407 Spinner.prototype.show = function () { 20408 // eslint-disable-next-line no-shadow 20409 var spinner = this; // Bail if we are already showing the spinner. 20410 20411 if (spinner.timeoutId) { 20412 return; 20413 } 20414 20415 spinner.timeoutId = setTimeout(function () { 20416 spinner.$element.removeClass(spinner.className); // eslint-disable-next-line webflow/no-delete 20417 20418 delete spinner.timeoutId; 20419 }, spinner.delay); 20420 }; 20421 20422 Spinner.prototype.hide = function () { 20423 // eslint-disable-next-line no-shadow 20424 var spinner = this; 20425 20426 if (spinner.timeoutId) { 20427 clearTimeout(spinner.timeoutId); // eslint-disable-next-line webflow/no-delete 20428 20429 delete spinner.timeoutId; 20430 return; 20431 } 20432 20433 spinner.$element.addClass(spinner.className); 20434 }; 20435 20436 function prefixed(string, isSelector) { 20437 return string.replace(prefixRegex, (isSelector ? ' .' : ' ') + prefix); 20438 } 20439 20440 function selector(string) { 20441 return prefixed(string, true); 20442 } 20443 /** 20444 * jQuery.addClass with auto-prefixing 20445 * @param {jQuery} Element to add class to 20446 * @param {string}
20446 Class name that will be prefixed and added to element 20447 * @return {jQuery} 20448 */ 20449 20450 20451 function addClass($element, className) { 20452 return $element.addClass(prefixed(className)); 20453 } 20454 /** 20455 * jQuery.removeClass with auto-prefixing 20456 * @param {jQuery} Element to remove class from 20457 * @param {string} Class name that will be prefixed and removed from element 20458 * @return {jQuery} 20459 */ 20460 20461 20462 function removeClass($element, className) { 20463 return $element.removeClass(prefixed(className)); 20464 } 20465 /** 20466 * jQuery.toggleClass with auto-prefixing 20467 * @param {jQuery} Element where class will be toggled 20468 * @param {string} Class name that will be prefixed and toggled 20469 * @param {boolean} Optional boolean that determines if class will be added or removed 20470 * @return {jQuery} 20471 */ 20472 20473 20474 function toggleClass($element, className, shouldAdd) { 20475 return $element.toggleClass(prefixed(className), shouldAdd); 20476 } 20477 /** 20478 * Create a new DOM element wrapped in a jQuery object, 20479 * decorated with our custom methods. 20480 * @param {string} className 20481 * @param {string} [tag] 20482 * @return {jQuery} 20483 */ 20484 20485 20486 function dom(className, tag) { 20487 return addClass($(document.createElement(tag || 'div')), className); 20488 } 20489 20490 function svgDataUri(width, height) { 20491 var svg = '<svg xmlns="http://www.w3.org/2000/svg" width="' + width + '" height="' + height + '"/>'; 20492 return 'data:image/svg+xml;charset=utf-8,' + encodeURI(svg); 20493 } // Compute some dimensions manually for iOS < 8, because of buggy support for VH. 20494 // Also, Android built-in browser does not support viewport units. 20495 20496 20497 (function () { 20498 var ua = window.navigator.userAgent; 20499 var iOSRegex = /(iPhone|iPad|iPod);[^OS]*OS (\d)/; 20500 var iOSMatches = ua.match(iOSRegex); 20501 var android = ua.indexOf('Android ') > -1 && ua.indexOf('Chrome') === -1; 20502 20503 if (!android && (!iOSMatches || iOSMatches[2] > 7)) { 20504 return; 20505 } 20506 20507 var styleNode = document.createElement('style'); 20508 document.head.appendChild(styleNode); 20509 window.addEventListener('resize', refresh, true); 20510 20511 function refresh() { 20512 var vh = window.innerHeight; 20513 var vw = window.innerWidth; 20514 var content = '.w-lightbox-content, .w-lightbox-view, .w-lightbox-view:before {' + 'height:' + vh + 'px' + '}' + '.w-lightbox-view {' + 'width:' + vw + 'px' + '}' + '.w-lightbox-group, .w-lightbox-group .w-lightbox-view, .w-lightbox-group .w-lightbox-view:before {' + 'height:' + 0.86 * vh + 'px' + '}' + '.w-lightbox-image {' + 'max-width:' + vw + 'px;' + 'max-height:' + vh + 'px' + '}' + '.w-lightbox-group .w-lightbox-image {' + 'max-height:' + 0.86 * vh + 'px' + '}' + '.w-lightbox-strip {' + 'padding: 0 ' + 0.01 * vh + 'px' + '}' + '.w-lightbox-item {' + 'width:' + 0.1 * vh + 'px;' + 'padding:' + 0.02 * vh + 'px ' + 0.01 * vh + 'px' + '}' + '.w-lightbox-thumbnail {' + 'height:' + 0.1 * vh + 'px' + '}' + '@media (min-width: 768px) {' + '.w-lightbox-content, .w-lightbox-view, .w-lightbox-view:before {' + 'height:' + 0.96 * vh + 'px' + '}' + '.w-lightbox-content {' + 'margin-top:' + 0.02 * vh + 'px' + '}' + '.w-lightbox-group, .w-lightbox-group .w-lightbox-view, .w-lightbox-group .w-lightbox-view:before {' + 'height:' + 0.84 * vh + 'px' + '}' + '.w-lightbox-image {' + 'max-width:' + 0.96 * vw + 'px;' + 'max-height:' + 0.96 * vh + 'px' + '}' + '.w-lightbox-group .w-lightbox-image {' + 'max-width:' + 0.823 * vw + 'px;' + 'max-height:' + 0.84 * vh + 'px' + '}' + '}'; 20515 styleNode.textContent = content; 20516 } 20517 20518 refresh(); 20519 })(); 20520 20521 return lightbox; 20522 } 20523 20524 Webflow.define('lightbox', module.exports = function ($) { 20525 var api = {}; 20526 var inApp = Webflow.env(); 20527 var lightbox = createLightbox(window, document, $, inApp ? '#lightbox-mountpoint' : 'body'); 20528 var $doc = $(document); 20529 var $lightboxes; 20530 var designer; 20531 var namespace = '.w-lightbox'; 20532 var groups; // ----------------------------------- 20533 // Module methods 20534 20535 api.ready = api.design = api.preview = init; // ----------------------------------- 20536 // Private methods 20537
20538 function init() { 20539 designer = inApp && Webflow.env('design'); // Reset Lightbox 20540 20541 lightbox.destroy(); // Reset groups 20542 20543 groups = {}; // Find all instances on the page 20544 20545 $lightboxes = $doc.find(namespace); // Instantiate all lighboxes 20546 20547 $lightboxes.webflowLightBox(); 20548 } 20549 20550 jQuery.fn.extend({ 20551 webflowLightBox: function webflowLightBox() { 20552 var $el = this; 20553 $.each($el, function (i, el) { 20554 // Store state in data 20555 var data = $.data(el, namespace); 20556 20557 if (!data) { 20558 data = $.data(el, namespace, { 20559 el: $(el), 20560 mode: 'images', 20561 images: [], 20562 embed: '' 20563 }); 20564 } // Remove old events 20565 20566 20567 data.el.off(namespace); // Set config from json script tag 20568 20569 configure(data); // Add events based on mode 20570 20571 if (designer) { 20572 data.el.on('setting' + namespace, configure.bind(null, data)); 20573 } else { 20574 data.el.on('click' + namespace, clickHandler(data)) // Prevent page scrolling to top when clicking on lightbox triggers. 20575 .on('click' + namespace, function (e) { 20576 e.preventDefault(); 20577 }); 20578 } 20579 }); 20580 } 20581 }); 20582 20583 function configure(data) { 20584 var json = data.el.children('.w-json').html(); 20585 var groupName; 20586 var groupItems; 20587 20588 if (!json) { 20589 data.items = []; 20590 return; 20591 } 20592 20593 try { 20594 json = JSON.parse(json); 20595 } catch (e) { 20596 console.error('Malformed lightbox JSON configuration.', e); 20597 } 20598 20599 supportOldLightboxJson(json); 20600 json.items.forEach(function (item) { 20601 item.$el = data.el; 20602 }); 20603 groupName = json.group; 20604 20605 if (groupName) { 20606 groupItems = groups[groupName]; 20607 20608 if (!groupItems) { 20609 groupItems = groups[groupName] = []; 20610 } 20611 20612 data.items = groupItems; 20613 20614 if (json.items.length) { 20615 data.index = groupItems.length; 20616 groupItems.push.apply(groupItems, json.items); 20617 } 20618 } else { 20619 data.items = json.items; 20620 data.index = 0; 20621 } 20622 } 20623 20624 function clickHandler(data) { 20625 return function () { 20626 data.items.length && lightbox(data.items, data.index || 0); 20627 }; 20628 } 20629 20630 function supportOldLightboxJson(data) { 20631 if (data.images) { 20632 data.images.forEach(function (item) { 20633 item.type = 'image'; 20634 }); 20635 data.items = data.images; 20636 } 20637 20638 if (data.embed) { 20639 data.embed.type = 'video'; 20640 data.items = [data.embed]; 20641 } 20642 20643 if (data.groupId) { 20644 data.group = data.groupId; 20645 } 20646 } // Export module 20647 20648 20649 return api; 20650 }); 20651 20652 /***/ 20653 }), 20654/* 324 */ 20655/***/ (function (module, exports, __webpack_require__) { 20656 20657 "use strict"; 20658 // @wf-will-never-add-flow-to-this-file 20659 20660 /* global window, document */ 20661 20662 /* eslint-disable no-var */ 20663 20664 /** 20665 * Webflow: Slider component 20666 */ 20667 20668 var Webflow = __webpack_require__(3); 20669 20670 var IXEvents = __webpack_require__(22); 20671 20672 var KEY_CODES = { 20673 ARROW_LEFT: 37, 20674 ARROW_UP: 38, 20675 ARROW_RIGHT: 39, 20676 ARROW_DOWN: 40, 20677 SPACE: 32, 20678 ENTER: 13, 20679 HOME: 36, 20680 END: 35 20681 }; 20682 var FOCUSABLE_SELECTOR = 'a[href], area[href], [role="button"], input, select, textarea, button, iframe, object, embed, *[tabindex], *[contenteditable]'; 20683 Webflow.define('slider', module.exports = function ($, _) { 20684 var api = {}; 20685 var tram = $.tram; 20686 var $doc = $(document); 20687 var $sliders; 20688 var designer; 20689 var inApp = Webflow.env(); 20690 var namespace = '.w-slider'; 20691 var dot = '<div class="w-slider-dot" data-wf-ignore />'; 20692 var ariaLiveLabelHtml = '<div aria-live="off" aria-atomic="true" class="w-slider-aria-label" data-wf-ignore />'; 20693 var ix = IXEvents.triggers; 20694 var fallback; 20695 var inRedraw; // ----------------------------------- 20696 // Module methods 20697 20698 api.ready = function () { 20699 designer = Webflow.env('design'); 20700 init(); 20701 }; 20702 20703 api.design = function () { 20704 designer = true; 20705 init(); 20706 }; 20707 20708 api.preview = function () { 20709 designer = false;
20710 init(); 20711 }; 20712 20713 api.redraw = function () { 20714 inRedraw = true; 20715 init(); 20716 }; 20717 20718 api.destroy = removeListeners; // ----------------------------------- 20719 // Private methods 20720 20721 function init() { 20722 // Find all sliders on the page 20723 $sliders = $doc.find(namespace); 20724 20725 if (!$sliders.length) { 20726 return; 20727 } 20728 20729 $sliders.each(build); 20730 inRedraw = null; 20731 20732 if (fallback) { 20733 return; 20734 } 20735 20736 removeListeners(); 20737 addListeners(); 20738 } 20739 20740 function removeListeners() { 20741 Webflow.resize.off(renderAll); 20742 Webflow.redraw.off(api.redraw); 20743 } 20744 20745 function addListeners() { 20746 Webflow.resize.on(renderAll); 20747 Webflow.redraw.on(api.redraw); 20748 } 20749 20750 function renderAll() { 20751 $sliders.filter(':visible').each(render); 20752 } 20753 20754 function build(i, el) { 20755 var $el = $(el); // Store slider state in data 20756 20757 var data = $.data(el, namespace); 20758 20759 if (!data) { 20760 data = $.data(el, namespace, { 20761 index: 0, 20762 depth: 1, 20763 hasFocus: { 20764 keyboard: false, 20765 mouse: false 20766 }, 20767 el: $el, 20768 config: {} 20769 }); 20770 } 20771 20772 data.mask = $el.children('.w-slider-mask'); 20773 data.left = $el.children('.w-slider-arrow-left'); 20774 data.right = $el.children('.w-slider-arrow-right'); 20775 data.nav = $el.children('.w-slider-nav'); 20776 data.slides = data.mask.children('.w-slide'); 20777 data.slides.each(ix.reset); 20778 20779 if (inRedraw) { 20780 data.maskWidth = 0; 20781 } 20782 20783 if ($el.attr('role') === undefined) { 20784 $el.attr('role', 'region'); 20785 } 20786 20787 if ($el.attr('aria-label') === undefined) { 20788 $el.attr('aria-label', 'carousel'); 20789 } // Store the ID of the slider slide view mask 20790 20791 20792 var slideViewId = data.mask.attr('id'); // If user did not provide an ID, set it 20793 20794 if (!slideViewId) { 20795 slideViewId = 'w-slider-mask-' + i; 20796 data.mask.attr('id', slideViewId); 20797 } // Create aria live label 20798 20799 20800 data.ariaLiveLabel = $(ariaLiveLabelHtml).appendTo(data.mask); // Add attributes to left/right buttons 20801 20802 data.left.attr('role', 'button'); 20803 data.left.attr('tabindex', '0'); 20804 data.left.attr('aria-controls', slideViewId); 20805 20806 if (data.left.attr('aria-label') === undefined) { 20807 data.left.attr('aria-label', 'previous slide'); 20808 } 20809 20810 data.right.attr('role', 'button'); 20811 data.right.attr('tabindex', '0'); 20812 data.right.attr('aria-controls', slideViewId); 20813 20814 if (data.right.attr('aria-label') === undefined) { 20815 data.right.attr('aria-label', 'next slide'); 20816 } // Disable in old browsers 20817 20818 20819 if (!tram.support.transform) { 20820 data.left.hide(); 20821 data.right.hide(); 20822 data.nav.hide(); 20823 fallback = true; 20824 return; 20825 } // Remove old events 20826 20827 20828 data.el.off(namespace); 20829 data.left.off(namespace); 20830 data.right.off(namespace); 20831 data.nav.off(namespace); // Set config from data attributes 20832 20833 configure(data); // Add events based on mode 20834 20835 if (designer) { 20836 data.el.on('setting' + namespace, handler(data)); 20837 stopTimer(data); 20838 data.hasTimer = false; 20839 } else { 20840 data.el.on('swipe' + namespace, handler(data)); 20841 data.left.on('click' + namespace, previousFunction(data)); 20842 data.right.on('click' + namespace, next(data)); 20843 data.left.on('keydown' + namespace, keyboardSlideButtonsFunction(data, previousFunction)); 20844 data.right.on('keydown' + namespace, keyboardSlideButtonsFunction(data, next)); // Listen to nav keyboard events 20845 20846 data.nav.on('keydown' + namespace, '> div', handler(data)); // Start timer if autoplay is true, only once 20847 20848 if (data.config.autoplay && !data.hasTimer) { 20849 data.hasTimer = true; 20850 data.timerCount = 1; 20851 startTimer(data); 20852 } 20853 20854 data.el.on('mouseenter' + namespace, hasFocus(data, true, 'mouse')); 20855 data.el.on('focusin' + namespace, hasFocus(data, true, 'ke
20855yboard')); 20856 data.el.on('mouseleave' + namespace, hasFocus(data, false, 'mouse')); 20857 data.el.on('focusout' + namespace, hasFocus(data, false, 'keyboard')); 20858 } // Listen to nav click events 20859 20860 20861 data.nav.on('click' + namespace, '> div', handler(data)); // Remove gaps from formatted html (for inline-blocks) 20862 20863 if (!inApp) { 20864 data.mask.contents().filter(function () { 20865 return this.nodeType === 3; 20866 }).remove(); 20867 } // If slider or any parent is hidden, temporarily show for measurements (https://github.com/webflow/webflow/issues/24921) 20868 20869 20870 var $elHidden = $el.filter(':hidden'); 20871 $elHidden.show(); 20872 var $elHiddenParents = $el.parents(':hidden'); 20873 $elHiddenParents.show(); // Run first render 20874 20875 render(i, el); // If slider or any parent is hidden, reset after temporarily showing for measurements 20876 20877 $elHidden.css('display', ''); 20878 $elHiddenParents.css('display', ''); 20879 } 20880 20881 function configure(data) { 20882 var config = {}; 20883 config.crossOver = 0; // Set config options from data attributes 20884 20885 config.animation = data.el.attr('data-animation') || 'slide'; 20886 20887 if (config.animation === 'outin') { 20888 config.animation = 'cross'; 20889 config.crossOver = 0.5; 20890 } 20891 20892 config.easing = data.el.attr('data-easing') || 'ease'; 20893 var duration = data.el.attr('data-duration'); 20894 config.duration = duration != null ? parseInt(duration, 10) : 500; 20895 20896 if (isAttrTrue(data.el.attr('data-infinite'))) { 20897 config.infinite = true; 20898 } 20899 20900 if (isAttrTrue(data.el.attr('data-disable-swipe'))) { 20901 config.disableSwipe = true; 20902 } 20903 20904 if (isAttrTrue(data.el.attr('data-hide-arrows'))) { 20905 config.hideArrows = true; 20906 } else if (data.config.hideArrows) { 20907 data.left.show(); 20908 data.right.show(); 20909 } 20910 20911 if (isAttrTrue(data.el.attr('data-autoplay'))) { 20912 config.autoplay = true; 20913 config.delay = parseInt(data.el.attr('data-delay'), 10) || 2000; 20914 config.timerMax = parseInt(data.el.attr('data-autoplay-limit'), 10); // Disable timer on first touch or mouse down 20915 20916 var touchEvents = 'mousedown' + namespace + ' touchstart' + namespace; 20917 20918 if (!designer) { 20919 data.el.off(touchEvents).one(touchEvents, function () { 20920 stopTimer(data); 20921 }); 20922 } 20923 } // Use edge buffer to help calculate page count 20924 20925 20926 var arrowWidth = data.right.width(); 20927 config.edge = arrowWidth ? arrowWidth + 40 : 100; // Store config in data 20928 20929 data.config = config; 20930 } 20931 20932 function isAttrTrue(value) { 20933 return value === '1' || value === 'true'; 20934 } 20935 20936 function hasFocus(data, focusIn, eventType) { 20937 return function (evt) { 20938 if (!focusIn) { 20939 // Prevent Focus Out if moving to another element in the slider 20940 if ($.contains(data.el.get(0), evt.relatedTarget)) { 20941 return; 20942 } 20943 20944 data.hasFocus[eventType] = focusIn; // Prevent Aria live change if focused by other input 20945 20946 if (data.hasFocus.mouse && eventType === 'keyboard' || data.hasFocus.keyboard && eventType === 'mouse') { 20947 return; 20948 } 20949 } else { 20950 data.hasFocus[eventType] = focusIn; 20951 } 20952 20953 if (focusIn) { 20954 data.ariaLiveLabel.attr('aria-live', 'polite'); 20955 20956 if (data.hasTimer) { 20957 stopTimer(data); 20958 } 20959 } else { 20960 data.ariaLiveLabel.attr('aria-live', 'off'); 20961 20962 if (data.hasTimer) { 20963 startTimer(data); 20964 } 20965 } 20966 20967 return; 20968 }; 20969 } 20970 20971 function keyboardSlideButtonsFunction(data, directionFunction) { 20972 return function (evt) { 20973 switch (evt.keyCode) { 20974 case KEY_CODES.SPACE: 20975 case KEY_CODES.ENTER: 20976 { 20977 // DirectionFunction returns a function 20978 directionFunction(data)(); 20979 evt.preventDefault(); 20980 return evt.stopPropagation(); 20981 } 20982 } 20983 }; 20984 } 20985 20986 function previousFunction(data) { 20987 return function () { 20988 change(data, { 20989 index: data.index - 1, 20990 vector: -1 20991 }); 20992 }; 20993 } 20994 20995 function next(data) { 20996 return function () { 20997 change(data, { 20998 index: data.index + 1, 20999 vector: 1 21000 }); 21001 }; 21002 } 21003 21004 function select(data, value) { 21005 // Select page based on slide element index 21006 var found = null; 21007 21008 if (value === data.slides.length) { 21009 init(); 21010 layout(data); // Rebuild and find new slides 21011 } 21012 21013 _.each(data.anchors, function (anchor, index) { 21014 $(anchor.els).each(function (i, el) { 21015 if ($(el).index() === value) { 21016 found = index; 21017 } 21018 }); 21019 }); 21020 21021 if (found != null) { 21022 change(data, { 21023 index: found, 21024 immediate: true 21025 }); 21026 } 21027 } 21028 21029 function startTimer(data) { 21030 stopTimer(data); 21031 var config = data.config; 21032 var timerMax = config.timerMax; 21033 21034 if (timerMax && data.timerCount++ > timerMax) { 21035 return; 21036 } 21037 21038 data.timerId = window.setTimeout(function () { 21039 if (data.timerId == null || designer) { 21040 return; 21041 } 21042 21043 next(data)(); 21044 startTimer(data); 21045 }, config.delay); 21046 } 21047 21048 function stopTimer(data) { 21049 window.clearTimeout(data.timerId); 21050 data.timerId = null; 21051 } 21052 21053 function handler(data) { 21054 return function (evt, options) { 21055 options = options || {}; 21056 var config = data.config; // Designer settings 21057 21058 if (designer && evt.type === 'setting') { 21059 if (options.select === 'prev') { 21060 return previousFunction(data)(); 21061 } 21062 21063 if (options.select === 'next') { 21064 return next(data)(); 21065 } 21066 21067 configure(data); 21068 layout(data); 21069 21070 if (options.select == null) { 21071 return; 21072 } 21073 21074 select(data, options.select); 21075 return; 21076 } // Swipe event 21077 21078 21079 if (evt.type === 'swipe') { 21080 if (config.disableSwipe) { 21081 return; 21082 } 21083 21084 if (Webflow.env('editor')) { 21085 return; 21086 } 21087 21088 if (options.direction === 'left') { 21089 return next(data)(); 21090 } 21091 21092 if (options.direction === 'right') { 21093 return previousFunction(data)(); 21094 } 21095 21096 return; 21097 } // Page buttons 21098 21099 21100 if (data.nav.has(evt.target).length) { 21101 var index = $(evt.target).index(); 21102 21103 if (evt.type === 'click') { 21104 change(data, { 21105 index: index 21106 }); 21107 } 21108 21109 if (evt.type === 'keydown') { 21110 switch (evt.keyCode) { 21111 case KEY_CODES.ENTER: 21112 case KEY_CODES.SPACE: 21113 { 21114 change(data, { 21115 index: index 21116 }); 21117 evt.preventDefault(); 21118 break; 21119 } 21120 21121 case KEY_CODES.ARROW_LEFT: 21122 case KEY_CODES.ARROW_UP: 21123 { 21124 focusDot(data.nav, Math.max(index - 1, 0)); 21125 evt.preventDefault(); 21126 break; 21127 } 21128 21129 case KEY_CODES.ARROW_RIGHT: 21130 case KEY_CODES.ARROW_DOWN: 21131 { 21132 focusDot(data.nav, Math.min(index + 1, data.pages)); 21133 evt.preventDefault(); 21134 break; 21135 } 21136 21137 case KEY_CODES.HOME: 21138 { 21139 focusDot(data.nav, 0); 21140 evt.preventDefault(); 21141 break; 21142 } 21143 21144 case KEY_CODES.END: 21145 { 21146 focusDot(data.nav, data.pages); 21147 evt.preventDefault(); 21148 break; 21149 } 21150 21151 default: 21152 { 21153 return; 21154 } 21155 } 21156 } 21157 } 21158 }; 21159 } 21160 21161 function focusDot($nav, index) { 21162 // Focus nav dot; don't change class to active 21163 var $active = $nav.children().eq(index).focus(); 21164 $nav.children().not($active); 21165 } 21166 21167 function change(data, options) { 21168 options = options || {}; 21169 var config = data.config; 21170 var anchors = data.anchors; // Set new index 21171 21172 data.previous = data.index; 21173 var index = options.index; 21174 var shift = {}; 21175 21176 if (index < 0) { 21177 index = anchors.length - 1; 21178 21179 if (config.infinite) { 21180 // Shift first slide to the end 21181 shift.x = -data.endX; 21182 shift.from = 0; 21183 shift.to = anchors[0].width; 21184 } 21185 } else if (index >= anchors.length) { 21186 index = 0; 21187 21188 if (config.infinite) { 21189 // Shift last slide to the start
21190 shift.x = anchors[anchors.length - 1].width; 21191 shift.from = -anchors[anchors.length - 1].x; 21192 shift.to = shift.from - shift.x; 21193 } 21194 } 21195 21196 data.index = index; // Select nav dot; set class active 21197 21198 var $active = data.nav.children().eq(index).addClass('w-active').attr('aria-selected', 'true').attr('tabindex', '0'); 21199 data.nav.children().not($active).removeClass('w-active').attr('aria-selected', 'false').attr('tabindex', '-1'); // Hide arrows 21200 21201 if (config.hideArrows) { 21202 data.index === anchors.length - 1 ? data.right.hide() : data.right.show(); 21203 data.index === 0 ? data.left.hide() : data.left.show(); 21204 } // Get page offset from anchors 21205 21206 21207 var lastOffsetX = data.offsetX || 0; 21208 var offsetX = data.offsetX = -anchors[data.index].x; 21209 var resetConfig = { 21210 x: offsetX, 21211 opacity: 1, 21212 visibility: '' 21213 }; // Transition slides 21214 21215 var targets = $(anchors[data.index].els); 21216 var prevTargs = $(anchors[data.previous] && anchors[data.previous].els); 21217 var others = data.slides.not(targets); 21218 var animation = config.animation; 21219 var easing = config.easing; 21220 var duration = Math.round(config.duration); 21221 var vector = options.vector || (data.index > data.previous ? 1 : -1); 21222 var fadeRule = 'opacity ' + duration + 'ms ' + easing; 21223 var slideRule = 'transform ' + duration + 'ms ' + easing; // Make active slides' content focusable 21224 21225 targets.find(FOCUSABLE_SELECTOR).removeAttr('tabindex'); 21226 targets.removeAttr('aria-hidden'); // Voiceover bug: Sometimes descendants are still visible, so hide everything... 21227 21228 targets.find('*').removeAttr('aria-hidden'); // Prevent focus on inactive slides' content 21229 21230 others.find(FOCUSABLE_SELECTOR).attr('tabindex', '-1'); 21231 others.attr('aria-hidden', 'true'); // Voiceover bug: Sometimes descendants are still visible, so hide everything... 21232 21233 others.find('*').attr('aria-hidden', 'true'); // Trigger IX events 21234 21235 if (!designer) { 21236 targets.each(ix.intro); 21237 others.each(ix.outro); 21238 } // Set immediately after layout changes (but not during redraw) 21239 21240 21241 if (options.immediate && !inRedraw) { 21242 tram(targets).set(resetConfig); 21243 resetOthers(); 21244 return; 21245 } // Exit early if index is unchanged 21246 21247 21248 if (data.index === data.previous) { 21249 return; 21250 } // Announce slide change to screen reader 21251 21252 21253 data.ariaLiveLabel.text("Slide ".concat(index + 1, " of ").concat(anchors.length, ".")); // Cross Fade / Out-In 21254 21255 if (animation === 'cross') { 21256 var reduced = Math.round(duration - duration * config.crossOver); 21257 var wait = Math.round(duration - reduced); 21258 fadeRule = 'opacity ' + reduced + 'ms ' + easing; 21259 tram(prevTargs).set({ 21260 visibility: '' 21261 }).add(fadeRule).start({ 21262 opacity: 0 21263 }); 21264 tram(targets).set({ 21265 visibility: '', 21266 x: offsetX, 21267 opacity: 0, 21268 zIndex: data.depth++ 21269 }).add(fadeRule).wait(wait).then({ 21270 opacity: 1 21271 }).then(resetOthers); 21272 return; 21273 } // Fade Over 21274 21275 21276 if (animation === 'fade') { 21277 tram(prevTargs).set({ 21278 visibility: '' 21279 }).stop(); 21280 tram(targets).set({ 21281 visibility: '', 21282 x: offsetX, 21283 opacity: 0, 21284 zIndex: data.depth++ 21285 }).add(fadeRule).start({ 21286 opacity: 1 21287 }).then(resetOthers); 21288 return; 21289 } // Slide Over 21290 21291 21292 if (animation === 'over') { 21293 resetConfig = { 21294 x: data.endX 21295 }; 21296 tram(prevTargs).set({ 21297 visibility: '' 21298 }).stop(); 21299 tram(targets).set({ 21300 visibility: '', 21301 zIndex: data.depth++, 21302 x: offsetX + anchors[data.index].width * vector 21303 }).add(slideRule).start({ 21304 x: offsetX 21305 }).then(resetOthers); 21306 return; 21307 } // Slide - infinite scroll 21308 21309 21310 if (config.infinite && shift.x) { 21311 tram(data.slides.not(prevTargs)).set({ 21312 visibility: '', 21313 x: shift.x 21314 }).add(slideRule).start({ 21315 x: offsetX 21316 }); 21317 tram(prevTargs).set({ 21318 visibility: '', 21319 x: shift.from 21320 }).add(slideRule).start({ 21321 x: shift.to 21322 }); 21323 data.shifted = prevTargs; 21324 } else { 21325 if (config.infinite && data.shifted) { 21326 tram(data.shifted).set({ 21327 visibility: '', 21328 x: lastOffsetX 21329 }); 21330 data.shifted = null; 21331 } // Slide - basic scroll 21332 21333 21334 tram(data.slides).set({ 21335 visibility: '' 21336 }).add(slideRule).start({ 21337 x: offsetX 21338 }); 21339 } // Helper to move others out of view 21340 21341 21342 function resetOthers() { 21343 targets = $(anchors[data.index].els); 21344 others = data.slides.not(targets); 21345 21346 if (animation !== 'slide') { 21347 resetConfig.visibility = 'hidden'; 21348 } 21349 21350 tram(others).set(resetConfig); 21351 } 21352 } 21353 21354 function render(i, el) { 21355 var data = $.data(el, namespace); 21356 21357 if (!data) { 21358 return; 21359 } 21360 21361 if (maskChanged(data)) { 21362 return layout(data); 21363 } 21364 21365 if (designer && slidesChanged(data)) { 21366 layout(data); 21367 } 21368 } 21369 21370 function layout(data) { 21371 // Determine page count from width of slides 21372 var pages = 1; 21373 var offset = 0; 21374 var anchor = 0; 21375 var width = 0; 21376 var maskWidth = data.maskWidth; 21377 var threshold = maskWidth - data.config.edge; 21378 21379 if (threshold < 0) { 21380 threshold = 0; 21381 } 21382 21383 data.anchors = [{ 21384 els: [], 21385 x: 0, 21386 width: 0 21387 }]; 21388 data.slides.each(function (i, el) { 21389 if (anchor - offset > threshold) { 21390 pages++; 21391 offset += maskWidth; // Store page anchor for transition 21392 21393 data.anchors[pages - 1] = { 21394 els: [], 21395 x: anchor, 21396 width: 0 21397 }; 21398 } // Set next anchor using current width + margin 21399 21400 21401 width = $(el).outerWidth(true); 21402 anchor += width; 21403 data.anchors[pages - 1].width += width; 21404 data.anchors[pages - 1].els.push(el); 21405 var ariaLabel = i + 1 + ' of ' + data.slides.length; 21406 $(el).attr('aria-label', ariaLabel); 21407 $(el).attr('role', 'group'); 21408 }); 21409 data.endX = anchor; // Build dots if nav exists and needs updating 21410 21411 if (designer) { 21412 data.pages = null; 21413 } 21414 21415 if (data.nav.length && data.pages !== pages) { 21416 data.pages = pages; 21417 buildNav(data); 21418 } // Make sure index is still within range and call change handler 21419 21420 21421 var index = data.index; 21422 21423 if (index >= pages) { 21424 index = pages - 1; 21425 } 21426 21427 change(data, { 21428 immediate: true, 21429 index: index 21430 }); 21431 } 21432 21433 function buildNav(data) { 21434 var dots = []; 21435 var $dot; 21436 var spacing = data.el.attr('data-nav-spacing'); 21437 21438 if (spacing) { 21439 spacing = parseFloat(spacing) + 'px'; 21440 } 21441 21442 for (var i = 0, len = data.pages; i < len; i++) { 21443 $dot = $(dot); 21444 $dot.attr('aria-label', 'Show slide ' + (i + 1) + ' of ' + len).attr('aria-selected', 'false').attr('role', 'button').attr('tabindex', '-1'); 21445 21446 if (data.nav.hasClass('w-num')) { 21447 $dot.text(i + 1); 21448 } 21449 21450 if (spacing != null) { 21451 $dot.css({ 21452 'margin-left': spacing, 21453 'margin-right': spacing 21454 }); 21455 } 21456 21457 dots.push($dot); 21458 } 21459 21460 data.nav.empty().append(dots); 21461 } 21462 21463 function maskChanged(data) { 21464 var maskWidth = data.mask.width(); 21465 21466 if (data.maskWidth !== maskWidth) { 21467 data.maskWidth = maskWidth; 21468 return true; 21469 } 21470 21471 return false;
21472 } 21473 21474 function slidesChanged(data) { 21475 var slidesWidth = 0; 21476 data.slides.each(function (i, el) { 21477 slidesWidth += $(el).outerWidth(true); 21478 }); 21479 21480 if (data.slidesWidth !== slidesWidth) { 21481 data.slidesWidth = slidesWidth; 21482 return true; 21483 } 21484 21485 return false; 21486 } // Export module 21487 21488 21489 return api; 21490 }); 21491 21492 /***/ 21493 }), 21494/* 325 */ 21495/***/ (function (module, exports, __webpack_require__) { 21496 21497 "use strict"; 21498 // @wf-will-never-add-flow-to-this-file 21499 21500 /* global document window */ 21501 21502 /* eslint-disable no-var */ 21503 21504 /** 21505 * Webflow: Tabs component 21506 */ 21507 21508 var Webflow = __webpack_require__(3); 21509 21510 var IXEvents = __webpack_require__(22); 21511 21512 Webflow.define('tabs', module.exports = function ($) { 21513 var api = {}; 21514 var tram = $.tram; 21515 var $doc = $(document); 21516 var $tabs; 21517 var design; 21518 var env = Webflow.env; 21519 var safari = env.safari; 21520 var inApp = env(); 21521 var tabAttr = 'data-w-tab'; 21522 var paneAttr = 'data-w-pane'; 21523 var namespace = '.w-tabs'; 21524 var linkCurrent = 'w--current'; 21525 var tabActive = 'w--tab-active'; 21526 var ix = IXEvents.triggers; 21527 var inRedraw = false; // ----------------------------------- 21528 // Module methods 21529 21530 api.ready = api.design = api.preview = init; 21531 21532 api.redraw = function () { 21533 inRedraw = true; 21534 init(); 21535 inRedraw = false; 21536 }; 21537 21538 api.destroy = function () { 21539 $tabs = $doc.find(namespace); 21540 21541 if (!$tabs.length) { 21542 return; 21543 } 21544 21545 $tabs.each(resetIX); 21546 removeListeners(); 21547 }; // ----------------------------------- 21548 // Private methods 21549 21550 21551 function init() { 21552 design = inApp && Webflow.env('design'); // Find all instances on the page 21553 21554 $tabs = $doc.find(namespace); 21555 21556 if (!$tabs.length) { 21557 return; 21558 } 21559 21560 $tabs.each(build); 21561 21562 if (Webflow.env('preview') && !inRedraw) { 21563 $tabs.each(resetIX); 21564 } 21565 21566 removeListeners(); 21567 addListeners(); 21568 } 21569 21570 function removeListeners() { 21571 Webflow.redraw.off(api.redraw); 21572 } 21573 21574 function addListeners() { 21575 Webflow.redraw.on(api.redraw); 21576 } 21577 21578 function resetIX(i, el) { 21579 var data = $.data(el, namespace); 21580 21581 if (!data) { 21582 return; 21583 } 21584 21585 data.links && data.links.each(ix.reset); 21586 data.panes && data.panes.each(ix.reset); 21587 } 21588 21589 function build(i, el) { 21590 var widgetHash = namespace.substr(1) + '-' + i; 21591 var $el = $(el); // Store state in data 21592 21593 var data = $.data(el, namespace); 21594 21595 if (!data) { 21596 data = $.data(el, namespace, { 21597 el: $el, 21598 config: {} 21599 }); 21600 } 21601 21602 data.current = null; 21603 data.tabIdentifier = widgetHash + '-' + tabAttr; 21604 data.paneIdentifier = widgetHash + '-' + paneAttr; 21605 data.menu = $el.children('.w-tab-menu'); 21606 data.links = data.menu.children('.w-tab-link'); 21607 data.content = $el.children('.w-tab-content'); 21608 data.panes = data.content.children('.w-tab-pane'); // Remove old events 21609 21610 data.el.off(namespace); 21611 data.links.off(namespace); // This role is necessary in the ARIA spec 21612 21613 data.menu.attr('role', 'tablist'); // Set all tabs unfocusable 21614 21615 data.links.attr('tabindex', '-1'); // Set config from data attributes 21616 21617 configure(data); // Wire up events when not in design mode 21618 21619 if (!design) { 21620 data.links.on('click' + namespace, linkSelect(data)); 21621 data.links.on('keydown' + namespace, handleLinkKeydown(data)); // Trigger first intro event from current tab 21622 21623 var $link = data.links.filter('.' + linkCurrent); 21624 var tab = $link.attr(tabAttr); 21625 tab && changeTab(data, { 21626 tab: tab, 21627 immediate: true 21628 }); 21629 } 21630 } 21631 21632 function configure(data) { 21633 var config = {}; // Set config options from data attributes 21634 21635 config.easing = data.el.attr('data-easing') || 'ease'; 21636 var intro = parseInt(data.el.attr('data-duration-in'), 10); // eslint-disable-next-line no-self-compare 21637
21638 intro = config.intro = intro === intro ? intro : 0; 21639 var outro = parseInt(data.el.attr('data-duration-out'), 10); // eslint-disable-next-line no-self-compare 21640 21641 outro = config.outro = outro === outro ? outro : 0; 21642 config.immediate = !intro && !outro; // Store config in data 21643 21644 data.config = config; 21645 } 21646 21647 function getActiveTabIdx(data) { 21648 var tab = data.current; 21649 return Array.prototype.findIndex.call(data.links, function (t) { 21650 return t.getAttribute(tabAttr) === tab; 21651 }, null); 21652 } 21653 21654 function linkSelect(data) { 21655 return function (evt) { 21656 evt.preventDefault(); 21657 var tab = evt.currentTarget.getAttribute(tabAttr); 21658 tab && changeTab(data, { 21659 tab: tab 21660 }); 21661 }; 21662 } 21663 21664 function handleLinkKeydown(data) { 21665 return function (evt) { 21666 var currentIdx = getActiveTabIdx(data); 21667 var keyName = evt.key; 21668 var keyMap = { 21669 ArrowLeft: currentIdx - 1, 21670 ArrowUp: currentIdx - 1, 21671 ArrowRight: currentIdx + 1, 21672 ArrowDown: currentIdx + 1, 21673 End: data.links.length - 1, 21674 Home: 0 21675 }; // Bail out of function if this key is not 21676 // involved in tab management 21677 21678 if (!(keyName in keyMap)) return; 21679 evt.preventDefault(); 21680 var nextIdx = keyMap[keyName]; // go back to end of tabs if we wrap past the start 21681 21682 if (nextIdx === -1) { 21683 nextIdx = data.links.length - 1; 21684 } // go back to start if we wrap past the last tab 21685 21686 21687 if (nextIdx === data.links.length) { 21688 nextIdx = 0; 21689 } 21690 21691 var tabEl = data.links[nextIdx]; 21692 var tab = tabEl.getAttribute(tabAttr); 21693 tab && changeTab(data, { 21694 tab: tab 21695 }); 21696 }; 21697 } 21698 21699 function changeTab(data, options) { 21700 options = options || {}; 21701 var config = data.config; 21702 var easing = config.easing; 21703 var tab = options.tab; // Don't select the same tab twice 21704 21705 if (tab === data.current) { 21706 return; 21707 } 21708 21709 data.current = tab; 21710 /** 21711 * The currently active tab. 21712 * Will be referenced to manage focus after 21713 * TabLink attributes are changed 21714 * @type {HTMLAnchorElement} 21715 */ 21716 21717 var currentTab; // Select the current link 21718 21719 data.links.each(function (i, el) { 21720 var $el = $(el); // Add important attributes at build time. 21721 21722 if (options.immediate || config.immediate) { 21723 // Store corresponding pane for reference. 21724 var pane = data.panes[i]; // IDs are necessary for ARIA relationships, 21725 // so if the user did not create one, we create one 21726 // using our generated identifier 21727 21728 if (!el.id) { 21729 el.id = data.tabIdentifier + '-' + i; 21730 } 21731 21732 if (!pane.id) { 21733 pane.id = data.paneIdentifier + '-' + i; 21734 } 21735 21736 el.href = '#' + pane.id; // Tab elements must take this role 21737 21738 el.setAttribute('role', 'tab'); // Tab elements must reference the unique ID of the panel 21739 // that they control 21740 21741 el.setAttribute('aria-controls', pane.id); // Tab elements must report that they are not selected 21742 // by default 21743 21744 el.setAttribute('aria-selected', 'false'); // Panes must take on the `Tabpanel` role 21745 21746 pane.setAttribute('role', 'tabpanel'); // Elements with tabpanel role must be labelled by 21747 // their controlling tab 21748 21749 pane.setAttribute('aria-labelledby', el.id); 21750 } 21751 21752 if (el.getAttribute(tabAttr) === tab) { 21753 // This is the current tab. Store it. 21754 currentTab = el; 21755 $el.addClass(linkCurrent).removeAttr('tabindex').attr({ 21756 'aria-selected': 'true' 21757 }).each(ix.intro); 21758 } else if ($el.hasClass(linkCurrent)) { 21759 $el.removeClass(linkCurrent).attr({ 21760 tabindex: '-1', 21761 'aria-selected': 'false' 21762 }).each(ix.outro); 21763 } 21764 }); // Find the new tab panes and keep track of previous 21765 21766 var targets = []; 21767 var previous = []; 21768 data.panes.each(function (i, el) { 21769 var $el = $(el); 21770 21771 if (el.getAttribute(tabAttr) === tab) { 21772 targets.push(el); 21773 } else if ($el.hasClass(tabActive)) { 21774 previous.push(el); 21775 } 21776 }); 21777 var $targets = $(targets); 21778 var $previous = $(previous); // Switch tabs immediately and bypass transitions 21779 21780 if (options.immediate || config.immediate) { 21781 $targets.addClass(tabActive).each(ix.intro); 21782 $previous.removeClass(tabActive); // Redraw to benefit components in the hidden tab pane 21783 // But only if not currently in the middle of a redraw 21784 21785 if (!inRedraw) { 21786 Webflow.redraw.up(); 21787 } 21788 21789 return; 21790 } // Focus if this is not the on-page-load call to `changeTab` 21791 else { 21792 // Backwards compatible hack to prevent focus from scrolling 21793 var x = window.scrollX; 21794 var y = window.scrollY; 21795 currentTab.focus(); 21796 window.scrollTo(x, y); 21797 } // Fade out the currently active tab before intro 21798 21799 21800 if ($previous.length && config.outro) { 21801 $previous.each(ix.outro); 21802 tram($previous).add('opacity ' + config.outro + 'ms ' + easing, { 21803 fallback: safari 21804 }).start({ 21805 opacity: 0 21806 }).then(function () { 21807 return fadeIn(config, $previous, $targets); 21808 }); 21809 } else { 21810 // Skip the outro and play intro 21811 fadeIn(config, $previous, $targets); 21812 } 21813 } // Fade in the new target 21814 21815 21816 function fadeIn(config, $previous, $targets) { 21817 // Clear previous active class + styles touched by tram
21818 // We cannot remove the whole inline style because it could be dynamically bound 21819 $previous.removeClass(tabActive).css({ 21820 opacity: '', 21821 transition: '', 21822 transform: '', 21823 width: '', 21824 height: '' 21825 }); // Add active class to new target 21826 21827 $targets.addClass(tabActive).each(ix.intro); 21828 Webflow.redraw.up(); // Set opacity immediately if intro is zero 21829 21830 if (!config.intro) { 21831 return tram($targets).set({ 21832 opacity: 1 21833 }); 21834 } // Otherwise fade in opacity 21835 21836 21837 tram($targets).set({ 21838 opacity: 0 21839 }).redraw().add('opacity ' + config.intro + 'ms ' + config.easing, { 21840 fallback: safari 21841 }).start({ 21842 opacity: 1 21843 }); 21844 } // Export module 21845 21846 21847 return api; 21848 }); 21849 21850 /***/ 21851 }) 21852/******/]);/** 21853 * ---------------------------------------------------------------------- 21854 * Webflow: Interactions: Init 21855 */ 21856Webflow.require('ix').init([ 21857 { "slug": "sub-companies", "name": "Sub Companies", "value": { "style": {}, "triggers": [{ "type": "hover", "selector": ".sub-companies", "stepsA": [{ "display": "flex", "opacity": 0 }, { "opacity": 1, "transition": "opacity 1200ms ease-out-quint 0" }], "stepsB": [] }, { "type": "hover", "selector": ".sub-team", "stepsA": [{ "opacity": 0 }, { "display": "none" }], "stepsB": [] }, { "type": "hover", "selector": ".sub-services", "stepsA": [{ "opacity": 0 }, { "display": "none" }], "stepsB": [] }] } }, 21858 { "slug": "sub-team", "name": "Sub Team", "value": { "style": {}, "triggers": [{ "type": "hover", "selector": ".sub-team", "stepsA": [{ "display": "flex", "opacity": 0 }, { "opacity": 1, "transition": "opacity 1200ms ease-out-quint 0" }], "stepsB": [] }, { "type": "hover", "selector": ".sub-companies", "stepsA": [{ "opacity": 0 }, { "display": "none" }], "stepsB": [] }, { "type": "hover", "selector": ".sub-services", "stepsA": [{ "opacity": 0 }, { "display": "none" }], "stepsB": [] }] } }, 21859 { "slug": "sub-services", "name": "Sub Services", "value": { "style": {}, "triggers": [{ "type": "hover", "selector": ".sub-services", "stepsA": [{ "display": "flex", "opacity": 0 }, { "opacity": 1, "transition": "opacity 1200ms ease-out-quint 0" }], "stepsB": [] }, { "type": "hover", "selector": ".sub-companies", "stepsA": [{ "opacity": 0 }, { "display": "none" }], "stepsB": [] }, { "type": "hover", "selector": ".sub-team", "stepsA": [{ "opacity": 0 }, { "display": "none" }], "stepsB": [] }] } }, 21860 { "slug": "sub-out", "name": "Sub Out", "value": { "style": {}, "triggers": [{ "type": "hover", "stepsA": [], "stepsB": [{ "opacity": 0, "transition": "opacity 500ms ease-out-quint 0" }, { "display": "none" }] }] } }, 21861 { "slug": "hide-all-subs", "name": "Hide All Subs", "value": { "style": {}, "triggers": [{ "type": "hover", "selector": ".sub-companies", "stepsA": [{ "opacity": 0 }], "stepsB": [] }, { "type": "hover", "selector": ".sub-team", "stepsA": [{ "opacity": 0 }], "stepsB": [] }, { "type": "hover", "selector": ".sub-services", "stepsA": [{ "opacity": 0 }], "stepsB": [] }] } }, 21862 { "slug": "triangle-link", "name": "Triangle Link", "value": { "style": {}, "triggers": [{ "type": "hover", "selector": ".hp1-link-arrow", "descend": true, "preserve3d": true, "stepsA": [{ "opacity": 1, "transition": "opacity 500ms ease-out-quint 0, transform 500ms ease-out-quint 0", "x": "1px", "y": "-1px", "z": "0px" }], "stepsB": [{ "opacity": 0, "transition": "transform 200 ease 0, opacity 500ms ease-out-quint 0", "x": "-1px", "y": "1px", "z": "0px" }] }] } }, 21863 { "slug": "screen-fade", "name": "Screen Fade", "value": { "style": { "opacity": 0, "x": "0px", "y": "45px", "z": "0px" }, "triggers": [{ "type": "scroll", "offsetTop": "0%", "offsetBot": "0%", "stepsA": [{ "wait": "1000ms", "opacity": 1, "transition": "transform 2400ms ease-out-quint 0, opacity 1800ms ease-out-quint 0", "x": "0px", "y": "0px", "z": "0px" }], "stepsB": [{ "opacity": 0, "transition": "transform 200 ease 0, opacity 200 ease 0", "x": "0px", "y": "45px", "z": "0px" }] }] } }, 21864 { "slug": "screen-fade-logos", "name": "Screen Fade Logos", "value": { "style": { "opacity": 0, "x": "0px", "y": "45px", "z": "0px" }, "triggers": [{ "type": "scroll", "offsetBot": "25%", "stepsA": [{ "wait": "1000ms", "opacity": 0.35, "transition": "transform 2400ms ease-out-quint 0, opacity 1800ms ease-out-quint 0", "x": "0px", "y": "0p
21864x", "z": "0px" }], "stepsB": [{ "opacity": 0, "transition": "transform 200 ease 0, opacity 200 ease 0", "x": "0px", "y": "45px", "z": "0px" }] }] } }, 21865 { "slug": "vertical-divider", "name": "Vertical Divider", "value": { "style": { "height": "0px" }, "triggers": [{ "type": "scroll", "offsetBot": "0%", "stepsA": [{ "height": "30px", "transition": "height 1200ms ease-out-quint 0" }], "stepsB": [{ "height": "0px", "transition": "height 200 ease 0" }] }] } }, 21866 { "slug": "show-menu", "name": "Show Menu", "value": { "style": {}, "triggers": [{ "type": "click", "selector": ".g-menu", "stepsA": [{ "display": "flex", "opacity": 1, "transition": "opacity 600ms ease 0" }], "stepsB": [] }, { "type": "click", "selector": ".menu-blur", "stepsA": [{ "display": "block", "opacity": 1, "transition": "opacity 600ms ease 0" }], "stepsB": [] }] } }, 21867 { "slug": "close-menu", "name": "Close Menu", "value": { "style": {}, "triggers": [{ "type": "click", "selector": ".g-menu", "stepsA": [{ "opacity": 0, "transition": "opacity 300ms ease 0" }, { "display": "none" }], "stepsB": [] }, { "type": "click", "selector": ".menu-blur", "stepsA": [{ "opacity": 0, "transition": "opacity 300ms ease 0" }, { "display": "none" }], "stepsB": [] }] } }, 21868 { "slug": "hover-example", "name": "Hover example", "value": { "style": {}, "triggers": [{ "type": "hover", "stepsA": [{ "width": "40%", "transition": "width 500ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".db1", "stepsA": [{ "width": "30%", "transition": "width 500ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".db3", "stepsA": [{ "width": "30%", "transition": "width 500ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".fade-copy", "stepsA": [{ "opacity": 0, "transition": "opacity 500ms ease 0, width 200 ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".fade-copy-2", "stepsA": [{ "opacity": 1, "transition": "opacity 500ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".gi2", "stepsA": [{ "opacity": 1, "transition": "opacity 500ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".fade-copy-3", "stepsA": [{ "opacity": 0, "transition": "opacity 500ms ease 0, width 200 ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".gi1", "stepsA": [{ "opacity": 0, "transition": "opacity 500ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".gi3", "stepsA": [{ "opacity": 0, "transition": "opacity 500ms ease 0" }], "stepsB": [] }] } }, 21869 { "slug": "hover-example-2", "name": "Hover example 2", "value": { "style": {}, "triggers": [{ "type": "hover", "stepsA": [{ "width": "40%", "transition": "width 500ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".db2", "stepsA": [{ "width": "30%", "transition": "width 500ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".db3", "stepsA": [{ "width": "30%", "transition": "width 500ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".fade-copy", "stepsA": [{ "opacity": 1, "transition": "opacity 500ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".fade-copy-2", "stepsA": [{ "opacity": 0, "transition": "opacity 500ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".gi1", "stepsA": [{ "opacity": 1, "transition": "opacity 500ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".fade-copy-3", "stepsA": [{ "opacity": 0, "transition": "opacity 500ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".gi2", "stepsA": [{ "opacity": 0, "transition": "opacity 500ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".gi3", "stepsA": [{ "opacity": 0, "transition": "opacity 500ms ease 0" }], "stepsB": [] }] } }, 21870 { "slug": "hover-example-3", "name": "Hover example 3", "value": { "style": {}, "triggers": [{ "type": "hover", "stepsA": [{ "width": "40%", "transition": "width 500ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".db2", "stepsA": [{ "width": "30%", "transition": "width 500ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".db1", "stepsA": [{ "width": "30%", "transition": "width 500ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".fade-copy-3", "stepsA": [{ "opacity": 1, "transition": "opacity 500ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".fade-copy-2", "stepsA": [{ "opacity": 0, "transition": "opacity 500ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".gi3", "stepsA": [{ "opacity": 1, "transition": "opacity 500ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".fade-copy", "stepsA": [{ "opacity": 0, "transition": "opacity 500ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".gi2", "stepsA": [{ "opacity": 0, "transition": "opacity 500ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".gi1", "stepsA": [{ "opacity": 0, "transition": "opacity 500ms ease 0" }], "stepsB": [] }] } }, 21871 { "slug": "phil-copy", "name": "Phil Copy", "value": { "style": {}, "triggers": [{ "type": "scroll", "selector": ".hp1-phil-copy", "offsetBot": "70%", "stepsA": [{ "wait": "1500ms", "opacity": 1, "transition": "opacity 1000ms ease 0" }], "stepsB": [] }] } }, 21872 { "slug": "hp1-loc-info", "name": "HP1 Loc Info", "value": { "style": {}, "triggers": [{ "type": "hover", "selector": ".hp1-loc-info", "descend": true, "stepsA": [{ "opacity": 1, "transition": "opacity 1000ms ease-out-quint 0" }], "stepsB": [{ "opacity": 0, "transition": "opacity 500ms ease 0" }] }] } }, 21873 { "slug": "show-test-images", "name": "Show Test Images", "value": { "style": {}, "triggers": [{ "type": "scroll", "selector": ".webpt-top", "offsetBot": "25%", "preserve3d": true, "stepsA": [{ "wait": "1000ms" }, { "opacity": 1, "transition": "opacity 1000ms ease 0, transform 1000ms ease 0", "x": "0px", "y": "0p
21873x", "z": "0px" }], "stepsB": [] }, { "type": "scroll", "selector": ".webpt-partner", "offsetBot": "25%", "preserve3d": true, "stepsA": [{ "wait": "1750ms" }, { "opacity": 1, "transition": "opacity 1000ms ease 0, transform 1000ms ease 0", "x": "0px", "y": "0px", "z": "0px" }], "stepsB": [] }] } }, 21874 { "slug": "people-hover", "name": "People Hover", "value": { "style": {}, "triggers": [{ "type": "hover", "selector": ".hp1-people-info", "descend": true, "preserve3d": true, "stepsA": [{ "opacity": 1, "height": "250px", "transition": "height 300ms ease-out-quart 0, opacity 200 ease 0, transform 200 ease 0", "x": "0px", "y": "0px", "z": "0px" }], "stepsB": [{ "height": "75px", "transition": "height 300ms ease-out 0" }] }, { "type": "hover", "selector": ".hp1-people-sub-info", "descend": true, "stepsA": [{ "opacity": 1, "transition": "opacity 1000ms ease-out-quad 0" }], "stepsB": [{ "opacity": 0, "transition": "opacity 500ms ease-out 0" }] }, { "type": "hover", "selector": ".people-triangle", "descend": true, "preserve3d": true, "stepsA": [{ "opacity": 1, "transition": "opacity 300ms ease 0, transform 300ms ease 0", "x": "0px", "y": "0px", "z": "0px" }], "stepsB": [{ "opacity": 0, "transition": "opacity 300ms ease 0, transform 200 ease 0", "x": "-10px", "y": "10px", "z": "0px" }] }] } }, 21875 { "slug": "show-filters", "name": "Show Filters", "value": { "style": {}, "triggers": [{ "type": "click", "selector": ".hp1-people-filters", "stepsA": [{ "opacity": 1, "height": "auto", "transition": "opacity 500ms ease 0, height 300ms ease 0" }], "stepsB": [] }] } }, 21876 { "slug": "hide-filters", "name": "Hide Filters", "value": { "style": {}, "triggers": [{ "type": "click", "selector": ".hp1-people-filters", "stepsA": [{ "opacity": 0, "height": "0px", "transition": "opacity 300ms ease 0, height 500ms ease 0" }], "stepsB": [] }] } }, 21877 { "slug": "show-ham-menu", "name": "Show Ham Menu", "value": { "style": {}, "triggers": [{ "type": "hover", "selector": ".ham-menu-over", "stepsA": [{ "display": "flex", "opacity": 0 }, { "opacity": 1, "transition": "opacity 500ms ease 0" }], "stepsB": [] }] } }, 21878 { "slug": "filters-companies", "name": "Filters Companies", "value": { "style": {}, "triggers": [{ "type": "scroll", "selector": ".companies-sub", "stepsA": [{ "opacity": 0, "transition": "opacity 500ms ease 0" }, { "display": "none" }], "stepsB": [{ "display": "block", "opacity": 0 }, { "opacity": 1, "transition": "opacity 500ms ease 0" }] }] } }, 21879 { "slug": "show-sub-dd", "name": "Show Sub DD", "value": { "style": {}, "triggers": [{ "type": "hover", "selector": ".new-filter-sector-dd-sub", "stepsA": [{ "display": "block", "opacity": 0 }, { "opacity": 1, "transition": "opacity 450ms ease 0" }], "stepsB": [] }] } }, 21880 { "slug": "dd-sector", "name": "DD Sector", "value": { "style": {}, "triggers": [{ "type": "hover", "selector": ".dd-sector", "stepsA": [{ "display": "block", "opacity": 0 }, { "opacity": 1, "transition": "opacity 450ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".dd-location", "stepsA": [{ "display": "none", "opacity": 0 }], "stepsB": [] }, { "type": "hover", "selector": ".dd-stage", "stepsA": [{ "display": "none", "opacity": 0 }], "stepsB": [] }, { "type": "hover", "selector": ".dd-status", "stepsA": [{ "display": "none", "opacity": 0 }], "stepsB": [] }, { "type": "hover", "selector": ".dd-role", "stepsA": [{ "display": "none", "opacity": 0 }], "stepsB": [] }] } }, 21881 { "slug": "dd-location", "name": "DD Location", "value": { "style": {}, "triggers": [{ "type": "hover", "selector": ".dd-location", "stepsA": [{ "display": "block", "opacity": 0 }, { "opacity": 1, "transition": "opacity 450ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".dd-sector", "stepsA": [{ "display": "none", "opacity": 0 }], "stepsB": [] }, { "type": "hover", "selector": ".dd-stage", "stepsA": [{ "display": "none", "opacity": 0 }], "stepsB": [] }, { "type": "hover", "selector": ".dd-status", "stepsA": [{ "display": "none", "opacity": 0 }], "stepsB": [] }, { "type": "hover", "selector": ".dd-role", "stepsA": [{ "display": "none", "opacity": 0 }], "stepsB": [] }] } },
21882 { "slug": "dd-stage", "name": "DD Stage", "value": { "style": {}, "triggers": [{ "type": "hover", "selector": ".dd-stage", "stepsA": [{ "display": "block", "opacity": 0 }, { "opacity": 1, "transition": "opacity 450ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".dd-sector", "stepsA": [{ "display": "none", "opacity": 0 }], "stepsB": [] }, { "type": "hover", "selector": ".dd-location", "stepsA": [{ "display": "none", "opacity": 0 }], "stepsB": [] }, { "type": "hover", "selector": ".dd-status", "stepsA": [{ "display": "none", "opacity": 0 }], "stepsB": [] }] } }, 21883 { "slug": "dd-status", "name": "DD Status", "value": { "style": {}, "triggers": [{ "type": "hover", "selector": ".dd-status", "stepsA": [{ "display": "block", "opacity": 0 }, { "opacity": 1, "transition": "opacity 450ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".dd-sector", "stepsA": [{ "display": "none", "opacity": 0 }], "stepsB": [] }, { "type": "hover", "selector": ".dd-location", "stepsA": [{ "display": "none", "opacity": 0 }], "stepsB": [] }, { "type": "hover", "selector": ".dd-stage", "stepsA": [{ "display": "none", "opacity": 0 }], "stepsB": [] }] } }, 21884 { "slug": "dd-role", "name": "DD Role", "value": { "style": {}, "triggers": [{ "type": "hover", "selector": ".dd-role", "stepsA": [{ "display": "block", "opacity": 0 }, { "opacity": 1, "transition": "opacity 450ms ease 0" }], "stepsB": [] }, { "type": "hover", "selector": ".dd-sector", "stepsA": [{ "display": "none", "opacity": 0 }], "stepsB": [] }, { "type": "hover", "selector": ".dd-location", "stepsA": [{ "display": "none", "opacity": 0 }], "stepsB": [] }] } } 21885]); 21886/** 21887 * ---------------------------------------------------------------------- 21888 * Webflow: Interactions 2.0: Init 21889 */ 21890Webflow.require('ix2').init( 21891 { "events": { "e": { "id": "e", "name": "", "animationType": "custom", "eventTypeId": "MOUSE_CLICK", "action": { "id": "", "actionTypeId": "GENERAL_START_ACTION", "config": { "delay": 0, "easing": "", "duration": 0, "actionListId": "a-3", "affectedElements": {}, "playInReverse": false, "autoStopEventId": "e-2" } }, "mediaQueries": ["main", "medium", "small", "tiny"], "target": { "id": "e19bb167-2f95-e4d1-f26a-212fa7c92e98", "appliesTo": "ELEMENT", "styleBlockIds": [] }, "targets": [{ "id": "e19bb167-2f95-e4d1-f26a-212fa7c92e98", "appliesTo": "ELEMENT", "styleBlockIds": [] }], "config": { "loop": false, "playInReverse": false, "scrollOffsetValue": null, "scrollOffsetUnit": null, "delay": null, "direction": null, "effectIn": null }, "createdOn": 1611008145499 }, "e-3": { "id": "e-3", "name": "", "animationType": "custom", "eventTypeId": "MOUSE_CLICK", "action": { "id": "", "actionTypeId": "GENERAL_START_ACTION", "config": { "delay": 0, "easing": "", "duration": 0, "actionListId": "a-4", "affectedElements": {}, "playInReverse": false, "autoStopEventId": "e-4" } }, "mediaQueries": ["main", "medium", "small", "tiny"], "target": { "id": "TextBlock", "appliesTo": "ELEMENT", "styleBlockIds": [] }, "targets": [{ "id": "TextBlock", "appliesTo": "ELEMENT", "styleBlockIds": [] }], "config": { "loop": false, "playInReverse": false, "scrollOffsetValue": null, "scrollOffsetUnit": null, "delay": null, "direction": null, "effectIn": null }, "createdOn": 1611015773411 } }, "actionLists": { "a-3": { "id": "a-3", "title": "Global Search Show", "actionItemGroups": [{ "actionItems": [{ "id": "a-3-n", "actionTypeId": "GENERAL_DISPLAY", "config": { "delay": 0, "easing": "", "duration": 0, "target": { "selector": ".search-box", "selectorGuids": ["ebf52721-7690-8662-3ed2-5bcc59f6828e"] }, "value": "block" } }, { "id": "a-3-n-3", "actionTypeId": "STYLE_OPACITY", "config": { "delay": 0, "easing": "", "duration": 0, "target": { "selector": ".search-box", "selectorGuids": ["ebf52721-7690-8662-3ed2-5bcc59f6828e"] }, "value": 0, "unit": "" } }] }, { "actionItems": [{ "id": "a-3-n-2", "actionTypeId": "STYLE_OPACITY", "config": { "delay": 0, "easing": "ease", "duration": 500, "target": { "selector": ".search-box", "selectorGuids": ["ebf52721-7690-8662-3ed2-5bcc59f6828e"] }, "value": 1, "unit": "" } }] }], "useFirstGroupAsInitialState": false, "createdOn": 1611008150271 }, "a-4": { "id": "a-4", "title": "Global Search Hide", "actionItemGroups": [{ "actionItems": [{ "id": "a-4-n-3", "actionTypeId": "STYLE_OPACITY", "config": { "delay": 0, "easing": "ease", "duration": 500, "target": { "selector": ".search-box", "selectorGuids": ["ebf52721-7690-8662-3ed2-5bcc59f6828e"] }, "value": 0, "unit": "" } }] }, { "actionItems": [{ "id": "a-4-n", "actionTypeId": "GENERAL_DISPLAY", "config": { "delay": 0, "easing": "", "duration": 0, "target": { "selector": ".search-box", "selectorGuids": ["ebf52721-7690-8662-3ed2-5bcc59f6828e"] }, "value": "none" } }, { "id": "a-4-n-2", "actionTypeId": "STYLE_OPACITY", "config": { "delay": 0, "easing": "", "duration": 0, "target": { "selector": ".search-box", "selectorGuids": ["ebf52721-7690-8662-3ed2-5bcc59f6828e"] }, "value": 0, "unit": "" } }] }], "useFirstGroupAsInitialState": false, "createdOn": 1611008150271 } }, "site": { "mediaQueries": [{ "key": "main", "min": 992, "max": 10000 }, { "key": "medium", "min": 768, "max": 991 }, { "key": "small", "min": 480, "max": 767 }, { "key": "tiny", "min": 0, "max": 479 }] } } 21892); 21893 21894 21895 21896 21897 21898 21899 21900 21901 21902$(document).ready(function () { 21903 21904 // if ($(window).width() < 769) { 21905 // $(".new-filters.dropdown-menu nav > ul > li").hover( 21906 // function () { 21907 // $(this).addClass("dropdown-opened"); 21908 // }, function () { 21909 // $(this).removeClass("dropdown-opened"); 21910 // } 21911 // ); 21912 // $(".sector-dropdown li").click(function () { 21913 // $('li.dropdown-opened').removeClass("dropdown-opened"); 21914 21915 // }); 21916 21917 // } 21918 21919 21920 $("a.search-icon").click(function () { 21921 setTimeout(function () { 21922 $(".search-box .search-global input#search").focus(); 21923 }, 1000); 21924 }); 21925 21926 if (window.location.hash) { 21927 var hash = window.location.hash; 21928 if (hash.length && !hash.includes('=')) { 21929 $('html, body').animate({
21930 scrollTop: $(hash).offset().top + -70 21931 }, 0, 'swing'); 21932 } 21933 } 21934 21935 // const video = document.querySelector('video'); 21936 21937 // video.oncanplaythrough = (event) => { 21938 // console.log('I think I can play thru the entire ' + ' video without ever having to stop to buffer.'); 21939 // }; 21940 21941 document.addEventListener("DOMContentLoaded", function () { 21942 var lazyVideos = [].slice.call(document.querySelectorAll("video.lazy")); 21943 21944 if ("IntersectionObserver" in window) { 21945 var lazyVideoObserver = new IntersectionObserver(function (entries, observer) { 21946 entries.forEach(function (video) { 21947 if (video.isIntersecting) { 21948 for (var source in video.target.children) { 21949 var videoSource = video.target.children[source]; 21950 if (typeof videoSource.tagName === "string" && videoSource.tagName === "SOURCE") { 21951 videoSource.src = videoSource.dataset.src; 21952 } 21953 } 21954 21955 video.target.load(); 21956 video.target.classList.remove("lazy"); 21957 lazyVideoObserver.unobserve(video.target); 21958 } 21959 }); 21960 }); 21961 21962 lazyVideos.forEach(function (lazyVideo) { 21963 lazyVideoObserver.observe(lazyVideo); 21964 }); 21965 } 21966 }); 21967 21968 21969 setTimeout(function () { 21970 $('.hp1-hero-content, .services-hero, .about-hero, .people-hero-cool.companies .companies-2-intro').css('opacity', '1'); 21971 }, 700); 21972 $('[data-lazysrc]').each(function () { 21973 var $this = $(this), 21974 src = $(this).data('lazysrc'); 21975 $this.attr('src', src); 21976 console.log(src); 21977 }); 21978 21979 21980 21981 //blog slider 21982 if ($(".blog-slider").length) { 21983 $('.blog-slider').slick({ 21984 infinite: true, 21985 slidesToShow: 1, 21986 slidesToScroll: 1, 21987 arrows: false, 21988 speed: 500, 21989 fade: true, 21990 cssEase: 'linear' 21991 }); 21992 } 21993 21994 21995 //blog slider navigation arrows 21996 $('.slider-button.r').click(function () { 21997 $('.blog-slider').slick('slickPrev'); 21998 }) 21999 22000 $('.slider-button.l').click(function () { 22001 $('.blog-slider').slick('slickNext'); 22002 }) 22003 22004 22005 //ie-message 22006 function msieversion() { 22007 22008 var ua = window.navigator.userAgent; 22009 var msie = ua.indexOf("MSIE "); 22010 22011 if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) // If Internet Explorer, return version number 22012 { 22013 22014 $('.explorer-wrapper').addClass('show'); 22015 } 22016 else // If another browser, return 0 22017 { 22018 $('.explorer-wrapper.show').removeClass('show'); 22019 } 22020 22021 return false; 22022 22023 } 22024 msieversion(); 22025 22026 22027});
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.