vendor: 5,035 bytes, lines 1-163
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/******/ // Create a new module (and put it into the cache) 20/******/ var module = installedModules[moduleId] = { 21/******/ i: moduleId, 22/******/ l: false, 23/******/ exports: {} 24/******/ }; 25/******/ 26/******/ // Execute the module function 27/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 28/******/ 29/******/ // Flag the module as loaded 30/******/ module.l = true; 31/******/ 32/******/ // Return the exports of the module 33/******/ return module.exports; 34/******/ } 35/******/ 36/******/ 37/******/ // expose the modules object (__webpack_modules__) 38/******/ __webpack_require__.m = modules; 39/******/ 40/******/ // expose the module cache 41/******/ __webpack_require__.c = installedModules; 42/******/ 43/******/ // define getter function for harmony exports 44/******/ __webpack_require__.d = function(exports, name, getter) { 45/******/ if(!__webpack_require__.o(exports, name)) { 46/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); 47/******/ } 48/******/ }; 49/******/ 50/******/ // define __esModule on exports 51/******/ __webpack_require__.r = function(exports) { 52/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 53/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 54/******/ } 55/******/ Object.defineProperty(exports, '__esModule', { value: true }); 56/******/ }; 57/******/ 58/******/ // create a fake namespace object 59/******/ // mode & 1: value is a module id, require it 60/******/ // mode & 2: merge all properties of value into the ns 61/******/ // mode & 4: return value when already ns object 62/******/ // mode & 8|1: behave like require 63/******/ __webpack_require__.t = function(value, mode) { 64/******/ if(mode & 1) value = __webpack_require__(value); 65/******/ if(mode & 8) return value; 66/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; 67/******/ var ns = Object.create(null); 68/******/ __webpack_require__.r(ns); 69/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); 70/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); 71/******/ return ns; 72/******/ }; 73/******/ 74/******/ // getDefaultExport function for compatibility with non-harmony modules 75/******/ __webpack_require__.n = function(module) { 76/******/ var getter = module && module.__esModule ? 77/******/ function getDefault() { return module['default']; } : 78/******/ function getModuleExports() { return module; }; 79/******/ __webpack_require__.d(getter, 'a', getter); 80/******/ return getter; 81/******/ }; 82/******/ 83/******/ // Object.prototype.hasOwnProperty.call 84/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; 85/******/ 86/******/ // __webpack_public_path__ 87/******/ __webpack_require__.p = ""; 88/******/ 89/******/ 90/******/ // Load entry module and return exports 91/******/ return __webpack_require__(__webpack_require__.s = 100); 92/******/ }) 93/************************************************************************/ 94/******/ ([ 95/* 0 */ 96/***/ (function(module, exports) { 97 98function _interopRequireDefault(obj) { 99 return obj && obj.__esModule ? obj : { 100 "default": obj 101 }; 102} 103 104module.exports = _interopRequireDefault; 105 106/***/ }), 107/* 1 */ 108/***/ (function(module, exports) { 109 110/** 111 * Checks if `value` is classified as an `Array` object. 112 * 113 * @static 114 * @memberOf _ 115 * @since 0.1.0 116 * @category Lang 117 * @param {*} value The value to check. 118 * @returns {boolean} Returns `true` if `value` is an array, else `false`. 119 * @example 120 * 121 * _.isArray([1, 2, 3]); 122 * // => true 123 * 124 * _.isArray(document.body.children); 125 * // => false 126 * 127 * _.isArray('abc'); 128 * // => false 129 * 130 * _.isArray(_.noop); 131 * // => false 132 */ 133var isArray = Array.isArray; 134 135module.exports = isArray; 136 137 138/***/ }), 139/* 2 */ 140/***/ (function(module, exports, __webpack_require__) { 141 142"use strict"; 143 // @wf-will-never-add-flow-to-this-file 144 145/* eslint-disable */ 146 147/** 148 * Webflow: Core site library 149 */ 150 151var Webflow = {}; 152var modules = {}; 153var primary = []; 154var secondary = window.Webflow || []; 155var $ = window.jQuery; 156var $win = $(window); 157var $doc = $(document); 158var isFunction = $.isFunction; 159 160var _ = Webflow._ = __webpack_require__(102); 161 162var tram = Webflow.tram = __webpack_require__(55) && $.tram; 163var domready = false;
164var destroyed = false; 165tram.config.hideBackface = false; 166tram.config.keepInherited = true; 167/** 168 * Webflow.define - Define a named module 169 * @param {string} name 170 * @param {function} factory 171 * @param {object} options 172 * @return {object} 173 */ 174 175Webflow.define = function (name, factory, options) { 176 if (modules[name]) { 177 unbindModule(modules[name]); 178 } 179 180 var instance = modules[name] = factory($, _, options) || {}; 181 bindModule(instance); 182 return instance; 183}; 184/** 185 * Webflow.require - Require a named module 186 * @param {string} name 187 * @return {object} 188 */ 189 190 191Webflow.require = function (name) { 192 return modules[name]; 193}; 194 195function bindModule(module) { 196 // If running in Webflow app, subscribe to design/preview events 197 if (Webflow.env()) { 198 isFunction(module.design) && $win.on('__wf_design', module.design); 199 isFunction(module.preview) && $win.on('__wf_preview', module.preview); 200 } // Subscribe to front-end destroy event 201 202 203 isFunction(module.destroy) && $win.on('__wf_destroy', module.destroy); // Look for ready method on module 204 205 if (module.ready && isFunction(module.ready)) { 206 addReady(module); 207 } 208} 209 210function addReady(module) { 211 // If domready has already happened, run ready method 212 if (domready) { 213 module.ready(); 214 return; 215 } // Otherwise add ready method to the primary queue (only once) 216 217 218 if (_.contains(primary, module.ready)) { 219 return; 220 } 221 222 primary.push(module.ready); 223} 224 225function unbindModule(module) { 226 // Unsubscribe module from window events 227 isFunction(module.design) && $win.off('__wf_design', module.design); 228 isFunction(module.preview) && $win.off('__wf_preview', module.preview); 229 isFunction(module.destroy) && $win.off('__wf_destroy', module.destroy); // Remove ready method from primary queue 230 231 if (module.ready && isFunction(module.ready)) { 232 removeReady(module); 233 } 234} 235 236function removeReady(module) { 237 primary = _.filter(primary, function (readyFn) { 238 return readyFn !== module.ready; 239 }); 240} 241/** 242 * Webflow.push - Add a ready handler into secondary queue 243 * @param {function} ready Callback to invoke on domready 244 */ 245 246 247Webflow.push = function (ready) { 248 // If domready has already happened, invoke handler 249 if (domready) { 250 isFunction(ready) && ready(); 251 return; 252 } // Otherwise push into secondary queue 253 254 255 secondary.push(ready); 256}; 257/** 258 * Webflow.env - Get the state of the Webflow app 259 * @param {string} mode [optional] 260 * @return {boolean} 261 */ 262 263 264Webflow.env = function (mode) { 265 var designFlag = window.__wf_design; 266 var inApp = typeof designFlag !== 'undefined'; 267 268 if (!mode) { 269 return inApp; 270 } 271 272 if (mode === 'design') { 273 return inApp && designFlag; 274 } 275 276 if (mode === 'preview') { 277 return inApp && !designFlag; 278 } 279 280 if (mode === 'slug') { 281 return inApp && window.__wf_slug; 282 } 283 284 if (mode === 'editor') { 285 return window.WebflowEditor; 286 } 287 288 if (mode === 'test') { 289 return false || window.__wf_test; 290 } 291 292 if (mode === 'frame') { 293 return window !== window.top; 294 } 295}; // Feature detects + browser sniffs ಠ_ಠ296 297 298var userAgent = navigator.userAgent.toLowerCase(); 299var touch = Webflow.env.touch = 'ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch; 300var chrome = Webflow.env.chrome = /chrome/.test(userAgent) && /Google/.test(navigator.vendor) && parseInt(userAgent.match(/chrome\/(\d+)\./)[1], 10); 301var ios = Webflow.env.ios = /(ipod|iphone|ipad)/.test(userAgent); 302Webflow.env.safari = /safari/.test(userAgent) && !chrome && !ios; // Maintain current touch target to prevent late clicks on touch devices 303 304var touchTarget; // Listen for both events to support touch/mouse hybrid devices 305 306touch && $doc.on('touchstart mousedown', function (evt) { 307 touchTarget = evt.target; 308}); 309/** 310 * Webflow.validClick - validate click target against current touch target 311 * @param {HTMLElement} clickTarget Element being clicked 312 * @return {Boolean} True if click target is valid (always true on non-touch) 313 */ 314 315Webflow.validClick = touch ? function (clickTarget) { 316 return clickTarget === touchTarget || $.contains(clickTarget, touchTarget); 317} : function () { 318 return true; 319}; 320/** 321 * Webflow.resize, Webflow.scroll - throttled event proxies 322 */ 323 324var resizeEvents = 'resize.webflow orientationchange.webflow load.webflow';
325var scrollEvents = 'scroll.webflow ' + resizeEvents; 326Webflow.resize = eventProxy($win, resizeEvents); 327Webflow.scroll = eventProxy($win, scrollEvents); 328Webflow.redraw = eventProxy(); // Create a proxy instance for throttled events 329 330function eventProxy(target, types) { 331 // Set up throttled method (using custom frame-based _.throttle) 332 var handlers = []; 333 var proxy = {}; 334 proxy.up = _.throttle(function (evt) { 335 _.each(handlers, function (h) { 336 h(evt); 337 }); 338 }); // Bind events to target 339 340 if (target && types) { 341 target.on(types, proxy.up); 342 } 343 /** 344 * Add an event handler 345 * @param {function} handler 346 */ 347 348 349 proxy.on = function (handler) { 350 if (typeof handler !== 'function') { 351 return; 352 } 353 354 if (_.contains(handlers, handler)) { 355 return; 356 } 357 358 handlers.push(handler); 359 }; 360 /** 361 * Remove an event handler 362 * @param {function} handler 363 */ 364 365 366 proxy.off = function (handler) { 367 // If no arguments supplied, clear all handlers 368 if (!arguments.length) { 369 handlers = []; 370 return; 371 } // Otherwise, remove handler from the list 372 373 374 handlers = _.filter(handlers, function (h) { 375 return h !== handler; 376 }); 377 }; 378 379 return proxy; 380} // Webflow.location - Wrap window.location in api 381 382 383Webflow.location = function (url) { 384 window.location = url; 385}; 386 387if (Webflow.env()) { 388 // Ignore redirects inside a Webflow design/edit environment 389 Webflow.location = function () {}; 390} // Webflow.ready - Call primary and secondary handlers 391 392 393Webflow.ready = function () { 394 domready = true; // Restore modules after destroy 395 396 if (destroyed) { 397 restoreModules(); // Otherwise run primary ready methods 398 } else { 399 _.each(primary, callReady); 400 } // Run secondary ready methods 401 402 403 _.each(secondary, callReady); // Trigger resize 404 405 406 Webflow.resize.up(); 407}; 408 409function callReady(readyFn) { 410 isFunction(readyFn) && readyFn(); 411} 412 413function restoreModules() { 414 destroyed = false; 415 416 _.each(modules, bindModule); 417} 418/** 419 * Webflow.load - Add a window load handler that will run even if load event has already happened 420 * @param {function} handler 421 */ 422 423 424var deferLoad; 425 426Webflow.load = function (handler) { 427 deferLoad.then(handler); 428}; 429 430function bindLoad() { 431 // Reject any previous deferred (to support destroy) 432 if (deferLoad) { 433 deferLoad.reject(); 434 $win.off('load', deferLoad.resolve); 435 } // Create deferred and bind window load event 436 437 438 deferLoad = new $.Deferred(); 439 $win.on('load', deferLoad.resolve); 440} // Webflow.destroy - Trigger a destroy event for all modules 441 442 443Webflow.destroy = function (options) { 444 options = options || {}; 445 destroyed = true; 446 $win.triggerHandler('__wf_destroy'); // Allow domready reset for tests 447 448 if (options.domready != null) { 449 domready = options.domready; 450 } // Unbind modules 451 452 453 _.each(modules, unbindModule); // Clear any proxy event handlers 454 455 456 Webflow.resize.off(); 457 Webflow.scroll.off(); 458 Webflow.redraw.off(); // Clear any queued ready methods 459 460 primary = []; 461 secondary = []; // If load event has not yet fired, replace the deferred 462 463 if (deferLoad.state() === 'pending') { 464 bindLoad(); 465 } 466}; // Listen for domready 467 468 469$(Webflow.ready); // Listen for window.onload and resolve deferred 470 471bindLoad(); // Export commonjs module 472 473module.exports = window.Webflow = Webflow; 474 475/***/ }), 476/* 3 */ 477/***/ (function(module, exports, __webpack_require__) { 478 479"use strict"; 480 481 482var _interopRequireWildcard = __webpack_require__(16); 483 484Object.defineProperty(exports, "__esModule", { 485 value: true 486}); 487exports.IX2VanillaUtils = exports.IX2VanillaPlugins = exports.IX2ElementsReducer = exports.IX2EngineConstants = exports.IX2EngineItemTypes = exports.IX2EngineEventTypes = exports.IX2EngineActionTypes = exports.IX2EasingUtils = exports.IX2Easings = exp
vendor: 4,896 bytes, lines 487-685
487orts.IX2BrowserSupport = void 0; 488 489var IX2BrowserSupport = _interopRequireWildcard(__webpack_require__(32)); 490 491exports.IX2BrowserSupport = IX2BrowserSupport; 492 493var IX2Easings = _interopRequireWildcard(__webpack_require__(85)); 494 495exports.IX2Easings = IX2Easings; 496 497var IX2EasingUtils = _interopRequireWildcard(__webpack_require__(86)); 498 499exports.IX2EasingUtils = IX2EasingUtils; 500 501var IX2EngineActionTypes = _interopRequireWildcard(__webpack_require__(87)); 502 503exports.IX2EngineActionTypes = IX2EngineActionTypes; 504 505var IX2EngineEventTypes = _interopRequireWildcard(__webpack_require__(88)); 506 507exports.IX2EngineEventTypes = IX2EngineEventTypes; 508 509var IX2EngineItemTypes = _interopRequireWildcard(__webpack_require__(49)); 510 511exports.IX2EngineItemTypes = IX2EngineItemTypes; 512 513var IX2EngineConstants = _interopRequireWildcard(__webpack_require__(50)); 514 515exports.IX2EngineConstants = IX2EngineConstants; 516 517var IX2ElementsReducer = _interopRequireWildcard(__webpack_require__(185)); 518 519exports.IX2ElementsReducer = IX2ElementsReducer; 520 521var IX2VanillaPlugins = _interopRequireWildcard(__webpack_require__(89)); 522 523exports.IX2VanillaPlugins = IX2VanillaPlugins; 524 525var IX2VanillaUtils = _interopRequireWildcard(__webpack_require__(187)); 526 527exports.IX2VanillaUtils = IX2VanillaUtils; 528 529/***/ }), 530/* 4 */ 531/***/ (function(module, exports, __webpack_require__) { 532 533var freeGlobal = __webpack_require__(67); 534 535/** Detect free variable `self`. */ 536var freeSelf = typeof self == 'object' && self && self.Object === Object && self; 537 538/** Used as a reference to the global object. */ 539var root = freeGlobal || freeSelf || Function('return this')(); 540 541module.exports = root; 542 543 544/***/ }), 545/* 5 */ 546/***/ (function(module, exports) { 547 548/** 549 * Checks if `value` is the 550 * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) 551 * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) 552 * 553 * @static 554 * @memberOf _ 555 * @since 0.1.0 556 * @category Lang 557 * @param {*} value The value to check. 558 * @returns {boolean} Returns `true` if `value` is an object, else `false`. 559 * @example 560 * 561 * _.isObject({}); 562 * // => true 563 * 564 * _.isObject([1, 2, 3]); 565 * // => true 566 * 567 * _.isObject(_.noop); 568 * // => true 569 * 570 * _.isObject(null); 571 * // => false 572 */ 573function isObject(value) { 574 var type = typeof value; 575 return value != null && (type == 'object' || type == 'function'); 576} 577 578module.exports = isObject; 579 580 581/***/ }), 582/* 6 */ 583/***/ (function(module, exports, __webpack_require__) { 584 585var baseMatches = __webpack_require__(119), 586 baseMatchesProperty = __webpack_require__(173), 587 identity = __webpack_require__(46), 588 isArray = __webpack_require__(1), 589 property = __webpack_require__(180); 590 591/** 592 * The base implementation of `_.iteratee`. 593 * 594 * @private 595 * @param {*} [value=_.identity] The value to convert to an iteratee. 596 * @returns {Function} Returns the iteratee. 597 */ 598function baseIteratee(value) { 599 // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. 600 // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. 601 if (typeof value == 'function') { 602 return value; 603 } 604 if (value == null) { 605 return identity; 606 } 607 if (typeof value == 'object') { 608 return isArray(value) 609 ? baseMatchesProperty(value[0], value[1]) 610 : baseMatches(value); 611 } 612 return property(value); 613} 614 615module.exports = baseIteratee; 616 617 618/***/ }), 619/* 7 */ 620/***/ (function(module, exports, __webpack_require__) { 621 622var baseIsNative = __webpack_require__(131), 623 getValue = __webpack_require__(136); 624 625/** 626 * Gets the native function at `key` of `object`. 627 * 628 * @private 629 * @param {Object} object The object to query. 630 * @param {string} key The key of the method to get. 631 * @returns {*} Returns the function if it's native, else `undefined`. 632 */ 633function getNative(object, key) { 634 var value = getValue(object, key); 635 return baseIsNative(value) ? value : undefined; 636} 637 638module.exports = getNative; 639 640 641/***/ }), 642/* 8 */ 643/***/ (function(module, exports) { 644 645/** 646 * Checks if `value` is object-like. A value is object-like if it's not `null` 647 * and has a `typeof` result of "object". 648 * 649 * @static 650 * @memberOf _ 651 * @since 4.0.0 652 * @category Lang 653 * @param {*} value The value to check. 654 * @returns {boolean} Returns `true` if `value` is object-like, else `false`. 655 * @example 656 * 657 * _.isObjectLike({}); 658 * // => true 659 * 660 * _.isObjectLike([1, 2, 3]); 661 * // => true 662 * 663 * _.isObjectLike(_.noop); 664 * // => false 665 * 666 * _.isObjectLike(null); 667 * // => false 668 */ 669function isObjectLike(value) { 670 return value != null && typeof value == 'object'; 671} 672 673module.exports = isObjectLike; 674 675 676/***/ }), 677/* 9 */ 678/***/ (function(module, exports, __webpack_require__) { 679 680var Symbol = __webpack_require__(11), 681 getRawTag = __webpack_require__(132), 682 objectToString = __webpack_require__(133); 683 684/** `Object#toString` result references. */ 685var nullTag = '[object Null]',
686 undefinedTag = '[object Undefined]'; 687 688/** Built-in value references. */ 689var symToStringTag = Symbol ? Symbol.toStringTag : undefined; 690 691/** 692 * The base implementation of `getTag` without fallbacks for buggy environments. 693 * 694 * @private 695 * @param {*} value The value to query. 696 * @returns {string} Returns the `toStringTag`. 697 */ 698function baseGetTag(value) { 699 if (value == null) { 700 return value === undefined ? undefinedTag : nullTag; 701 } 702 return (symToStringTag && symToStringTag in Object(value)) 703 ? getRawTag(value) 704 : objectToString(value); 705} 706 707module.exports = baseGetTag; 708 709 710/***/ }), 711/* 10 */ 712/***/ (function(module, exports, __webpack_require__) { 713 714var isFunction = __webpack_require__(66), 715 isLength = __webpack_require__(40); 716 717/** 718 * Checks if `value` is array-like. A value is considered array-like if it's 719 * not a function and has a `value.length` that's an integer greater than or 720 * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. 721 * 722 * @static 723 * @memberOf _ 724 * @since 4.0.0 725 * @category Lang 726 * @param {*} value The value to check. 727 * @returns {boolean} Returns `true` if `value` is array-like, else `false`. 728 * @example 729 * 730 * _.isArrayLike([1, 2, 3]); 731 * // => true 732 * 733 * _.isArrayLike(document.body.children); 734 * // => true 735 * 736 * _.isArrayLike('abc'); 737 * // => true 738 * 739 * _.isArrayLike(_.noop); 740 * // => false 741 */ 742function isArrayLike(value) { 743 return value != null && isLength(value.length) && !isFunction(value); 744} 745 746module.exports = isArrayLike; 747 748 749/***/ }), 750/* 11 */ 751/***/ (function(module, exports, __webpack_require__) { 752 753var root = __webpack_require__(4); 754 755/** Built-in value references. */ 756var Symbol = root.Symbol; 757 758module.exports = Symbol; 759 760 761/***/ }), 762/* 12 */ 763/***/ (function(module, exports, __webpack_require__) { 764 765var isSymbol = __webpack_require__(25); 766 767/** Used as references for various `Number` constants. */ 768var INFINITY = 1 / 0; 769 770/** 771 * Converts `value` to a string key if it's not a string or symbol. 772 * 773 * @private 774 * @param {*} value The value to inspect. 775 * @returns {string|symbol} Returns the key. 776 */ 777function toKey(value) { 778 if (typeof value == 'string' || isSymbol(value)) { 779 return value; 780 } 781 var result = (value + ''); 782 return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; 783} 784 785module.exports = toKey; 786 787 788/***/ }), 789/* 13 */ 790/***/ (function(module, exports, __webpack_require__) { 791 792"use strict"; 793 794 795Object.defineProperty(exports, "__esModule", { 796 value: true 797}); 798 799var _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; }; 800 801exports.clone = clone; 802exports.addLast = addLast; 803exports.addFirst = addFirst; 804exports.removeLast = removeLast; 805exports.removeFirst = removeFirst; 806exports.insert = insert; 807exports.removeAt = removeAt; 808exports.replaceAt = replaceAt; 809exports.getIn = getIn; 810exports.set = set; 811exports.setIn = setIn; 812exports.update = update; 813exports.updateIn = updateIn; 814exports.merge = merge; 815exports.mergeDeep = mergeDeep; 816exports.mergeIn = mergeIn; 817exports.omit = omit; 818exports.addDefaults = addDefaults; 819 820 821/*! 822 * Timm 823 * 824 * Immutability helpers with fast reads and acceptable writes. 825 * 826 * @copyright Guillermo Grau Panea 2016 827 * @license MIT 828 */ 829 830var INVALID_ARGS = 'INVALID_ARGS'; 831 832// =============================================== 833// ### Helpers 834// =============================================== 835 836 837function throwStr(msg) { 838 throw new Error(msg); 839} 840 841function getKeysAndSymbols(obj) { 842 var keys = Object.keys(obj); 843 if (Object.getOwnPropertySymbols) { 844 return keys.concat(Object.getOwnPropertySymbols(obj)); 845 } 846 return keys; 847} 848 849var hasOwnProperty = {}.hasOwnProperty; 850 851function clone(obj) { 852 if (Array.isArray(obj)) return obj.slice(); 853 var keys = getKeysAndSymbols(obj); 854 var out = {}; 855 for (var i = 0; i < keys.length; i++) { 856 var key = keys[i]; 857 out[key] = obj[key]; 858 } 859 return out; 860} 861 862function doMerge(fAddDefaults, fDeep, first) { 863 var out = first; 864 !(out != null) && throwStr( false ? undefined : INVALID_ARGS); 865 var fChanged = false;
866 867 for (var _len = arguments.length, rest = Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) { 868 rest[_key - 3] = arguments[_key]; 869 } 870 871 for (var idx = 0; idx < rest.length; idx++) { 872 var obj = rest[idx]; 873 if (obj == null) continue; 874 var keys = getKeysAndSymbols(obj); 875 if (!keys.length) continue; 876 for (var j = 0; j <= keys.length; j++) { 877 var key = keys[j]; 878 if (fAddDefaults && out[key] !== undefined) continue; 879 var nextVal = obj[key]; 880 if (fDeep && isObject(out[key]) && isObject(nextVal)) { 881 nextVal = doMerge(fAddDefaults, fDeep, out[key], nextVal); 882 } 883 if (nextVal === undefined || nextVal === out[key]) continue; 884 if (!fChanged) { 885 fChanged = true; 886 out = clone(out); 887 } 888 out[key] = nextVal; 889 } 890 } 891 return out; 892} 893 894function isObject(o) { 895 var type = typeof o === 'undefined' ? 'undefined' : _typeof(o); 896 return o != null && (type === 'object' || type === 'function'); 897} 898 899// _deepFreeze = (obj) -> 900// Object.freeze obj 901// for key in Object.getOwnPropertyNames obj 902// val = obj[key] 903// if isObject(val) and not Object.isFrozen val 904// _deepFreeze val 905// obj 906 907// =============================================== 908// -- ### Arrays 909// =============================================== 910 911// -- #### addLast() 912// -- Returns a new array with an appended item or items. 913// -- 914// -- Usage: `addLast<T>(array: Array<T>, val: Array<T>|T): Array<T>` 915// -- 916// -- ```js 917// -- arr = ['a', 'b'] 918// -- arr2 = addLast(arr, 'c') 919// -- // ['a', 'b', 'c'] 920// -- arr2 === arr 921// -- // false 922// -- arr3 = addLast(arr, ['c', 'd']) 923// -- // ['a', 'b', 'c', 'd'] 924// -- ``` 925// `array.concat(val)` also handles the scalar case, 926// but is apparently very slow 927function addLast(array, val) { 928 if (Array.isArray(val)) return array.concat(val); 929 return array.concat([val]); 930} 931 932// -- #### addFirst() 933// -- Returns a new array with a prepended item or items. 934// -- 935// -- Usage: `addFirst<T>(array: Array<T>, val: Array<T>|T): Array<T>` 936// -- 937// -- ```js 938// -- arr = ['a', 'b'] 939// -- arr2 = addFirst(arr, 'c') 940// -- // ['c', 'a', 'b'] 941// -- arr2 === arr 942// -- // false 943// -- arr3 = addFirst(arr, ['c', 'd']) 944// -- // ['c', 'd', 'a', 'b'] 945// -- ``` 946function addFirst(array, val) { 947 if (Array.isArray(val)) return val.concat(array); 948 return [val].concat(array); 949} 950 951// -- #### removeLast() 952// -- Returns a new array removing the last item. 953// -- 954// -- Usage: `removeLast<T>(array: Array<T>): Array<T>` 955// -- 956// -- ```js 957// -- arr = ['a', 'b'] 958// -- arr2 = removeLast(arr) 959// -- // ['a'] 960// -- arr2 === arr 961// -- // false 962// -- 963// -- // The same array is returned if there are no changes: 964// -- arr3 = [] 965// -- removeLast(arr3) === arr3 966// -- // true 967// -- ``` 968function removeLast(array) { 969 if (!array.length) return array; 970 return array.slice(0, array.length - 1); 971} 972 973// -- #### removeFirst() 974// -- Returns a new array removing the first item. 975// -- 976// -- Usage: `removeFirst<T>(array: Array<T>): Array<T>` 977// -- 978// -- ```js 979// -- arr = ['a', 'b'] 980// -- arr2 = removeFirst(arr) 981// -- // ['b'] 982// -- arr2 === arr 983// -- // false 984// -- 985// -- // The same array is returned if there are no changes: 986// -- arr3 = [] 987// -- removeFirst(arr3) === arr3 988// -- // true 989// -- ``` 990function removeFirst(array) { 991 if (!array.length) return array; 992 return array.slice(1); 993} 994 995// -- #### insert() 996// -- Returns a new array obtained by inserting an item or items 997// -- at a specified index. 998// -- 999// -- Usage: `insert<T>(array: Array<T>, idx: number, val: Array<T>|T): Array<T>` 1000// -- 1001// -- ```js 1002// -- arr = ['a', 'b', 'c'] 1003// -- arr2 = insert(arr, 1, 'd') 1004// -- // ['a', 'd', 'b', 'c'] 1005// -- arr2 === arr 1006// -- // false 1007// -- insert(arr, 1, ['d', 'e']) 1008// -- // ['a', 'd', 'e', 'b', 'c'] 1009// -- ``` 1010function insert(array, idx, val) { 1011 return array.slice(0, idx).concat(Array.isArray(val) ? val : [val]).concat(array.slice(idx)); 1012} 1013 1014// -- #### removeAt() 1015// -- Returns a new array obtained by removing an item at 1016// -- a specified index. 1017// -- 1018// -- Usage: `removeAt<T>(array: Array<T>, idx: number): Array<T>` 1019// -- 1020// -- ```js 1021// -- arr = ['a', 'b', 'c']
1022// -- arr2 = removeAt(arr, 1) 1023// -- // ['a', 'c'] 1024// -- arr2 === arr 1025// -- // false 1026// -- 1027// -- // The same array is returned if there are no changes: 1028// -- removeAt(arr, 4) === arr 1029// -- // true 1030// -- ``` 1031function removeAt(array, idx) { 1032 if (idx >= array.length || idx < 0) return array; 1033 return array.slice(0, idx).concat(array.slice(idx + 1)); 1034} 1035 1036// -- #### replaceAt() 1037// -- Returns a new array obtained by replacing an item at 1038// -- a specified index. If the provided item is the same as 1039// -- (*referentially equal to*) the previous item at that position, 1040// -- the original array is returned. 1041// -- 1042// -- Usage: `replaceAt<T>(array: Array<T>, idx: number, newItem: T): Array<T>` 1043// -- 1044// -- ```js 1045// -- arr = ['a', 'b', 'c'] 1046// -- arr2 = replaceAt(arr, 1, 'd') 1047// -- // ['a', 'd', 'c'] 1048// -- arr2 === arr 1049// -- // false 1050// -- 1051// -- // The same object is returned if there are no changes: 1052// -- replaceAt(arr, 1, 'b') === arr 1053// -- // true 1054// -- ``` 1055function replaceAt(array, idx, newItem) { 1056 if (array[idx] === newItem) return array; 1057 var len = array.length; 1058 var result = Array(len); 1059 for (var i = 0; i < len; i++) { 1060 result[i] = array[i]; 1061 } 1062 result[idx] = newItem; 1063 return result; 1064} 1065 1066// =============================================== 1067// -- ### Collections (objects and arrays) 1068// =============================================== 1069// -- The following types are used throughout this section 1070// -- ```js 1071// -- type ArrayOrObject = Array<any>|Object; 1072// -- type Key = number|string; 1073// -- ``` 1074 1075// -- #### getIn() 1076// -- Returns a value from an object at a given path. Works with 1077// -- nested arrays and objects. If the path does not exist, it returns 1078// -- `undefined`. 1079// -- 1080// -- Usage: `getIn(obj: ?ArrayOrObject, path: Array<Key>): any` 1081// -- 1082// -- ```js 1083// -- obj = { a: 1, b: 2, d: { d1: 3, d2: 4 }, e: ['a', 'b', 'c'] } 1084// -- getIn(obj, ['d', 'd1']) 1085// -- // 3 1086// -- getIn(obj, ['e', 1]) 1087// -- // 'b' 1088// -- ``` 1089function getIn(obj, path) { 1090 !Array.isArray(path) && throwStr( false ? undefined : INVALID_ARGS); 1091 if (obj == null) return undefined; 1092 var ptr = obj; 1093 for (var i = 0; i < path.length; i++) { 1094 var key = path[i]; 1095 ptr = ptr != null ? ptr[key] : undefined; 1096 if (ptr === undefined) return ptr; 1097 } 1098 return ptr; 1099} 1100 1101// -- #### set() 1102// -- Returns a new object with a modified attribute. 1103// -- If the provided value is the same as (*referentially equal to*) 1104// -- the previous value, the original object is returned. 1105// -- 1106// -- Usage: `set<T>(obj: ?T, key: Key, val: any): T` 1107// -- 1108// -- ```js 1109// -- obj = { a: 1, b: 2, c: 3 } 1110// -- obj2 = set(obj, 'b', 5) 1111// -- // { a: 1, b: 5, c: 3 } 1112// -- obj2 === obj 1113// -- // false 1114// -- 1115// -- // The same object is returned if there are no changes: 1116// -- set(obj, 'b', 2) === obj 1117// -- // true 1118// -- ``` 1119function set(obj, key, val) { 1120 var fallback = typeof key === 'number' ? [] : {}; 1121 var finalObj = obj == null ? fallback : obj; 1122 if (finalObj[key] === val) return finalObj; 1123 var obj2 = clone(finalObj); 1124 obj2[key] = val; 1125 return obj2; 1126} 1127 1128// -- #### setIn() 1129// -- Returns a new object with a modified **nested** attribute. 1130// -- 1131// -- Notes: 1132// -- 1133// -- * If the provided value is the same as (*referentially equal to*) 1134// -- the previous value, the original object is returned. 1135// -- * If the path does not exist, it will be created before setting 1136// -- the new value. 1137// -- 1138// -- Usage: `setIn<T: ArrayOrObject>(obj: T, path: Array<Key>, val: any): T` 1139// -- 1140// -- ```js 1141// -- obj = { a: 1, b: 2, d: { d1: 3, d2: 4 }, e: { e1: 'foo', e2: 'bar' } } 1142// -- obj2 = setIn(obj, ['d', 'd1'], 4) 1143// -- // { a: 1, b: 2, d: { d1: 4, d2: 4 }, e: { e1: 'foo', e2: 'bar' } } 1144// -- obj2 === obj 1145// -- // false 1146// -- obj2.d === obj.d 1147// -- // false 1148// -- obj2.e === obj.e 1149// -- // true 1150// -- 1151// -- // The same object is returned if there are no changes: 1152// -- obj3 = setIn(obj, ['d', 'd1'], 3) 1153// -- // { a: 1, b: 2, d: { d1: 3, d2: 4 }, e: { e1: 'foo', e2: 'bar' } } 1154// -- obj3 === obj 1155// -- // true 1156// -- obj3.d === obj.d 1157// -- // true 1158// -- obj3.e === obj.e 1159// -- // true 1160// -- 1161// -- // ... unknown paths create intermediate keys. Numeric segments are treated as array indices: 1162// -- setIn({ a: 3 }, ['unknown', 0, 'path'], 4) 1163// -- // { a: 3, unknown: [{ path: 4 }] } 1164// -- ``` 1165function doSetIn(obj, path, val, idx) { 1166 var newValue = void 0; 1167 var key = path[idx]; 1168 if (idx === path.length - 1) { 1169 newValue = val; 1170 } else { 1171 var nestedObj = isObject(obj) && isObject(obj[key]) ? obj[key] : typeof path[idx + 1] === 'number' ? [] : {}; 1172 newValue = doSetIn(nestedObj, path, val, idx + 1); 1173 } 1174 return set(obj, key, newValue); 1175} 1176 1177function setIn(obj, path, val) { 1178 if (!path.length) return val; 1179 return doSetIn(obj, path, val, 0); 1180} 1181 1182// -- #### update() 1183// -- Returns a new object with a modified attribute,
1184// -- calculated via a user-provided callback based on the current value. 1185// -- If the calculated value is the same as (*referentially equal to*) 1186// -- the previous value, the original object is returned. 1187// -- 1188// -- Usage: `update<T: ArrayOrObject>(obj: T, key: Key, 1189// -- fnUpdate: (prevValue: any) => any): T` 1190// -- 1191// -- ```js 1192// -- obj = { a: 1, b: 2, c: 3 } 1193// -- obj2 = update(obj, 'b', (val) => val + 1) 1194// -- // { a: 1, b: 3, c: 3 } 1195// -- obj2 === obj 1196// -- // false 1197// -- 1198// -- // The same object is returned if there are no changes: 1199// -- update(obj, 'b', (val) => val) === obj 1200// -- // true 1201// -- ``` 1202function update(obj, key, fnUpdate) { 1203 var prevVal = obj == null ? undefined : obj[key]; 1204 var nextVal = fnUpdate(prevVal); 1205 return set(obj, key, nextVal); 1206} 1207 1208// -- #### updateIn() 1209// -- Returns a new object with a modified **nested** attribute, 1210// -- calculated via a user-provided callback based on the current value. 1211// -- If the calculated value is the same as (*referentially equal to*) 1212// -- the previous value, the original object is returned. 1213// -- 1214// -- Usage: `updateIn<T: ArrayOrObject>(obj: T, path: Array<Key>, 1215// -- fnUpdate: (prevValue: any) => any): T` 1216// -- 1217// -- ```js 1218// -- obj = { a: 1, d: { d1: 3, d2: 4 } } 1219// -- obj2 = updateIn(obj, ['d', 'd1'], (val) => val + 1) 1220// -- // { a: 1, d: { d1: 4, d2: 4 } } 1221// -- obj2 === obj 1222// -- // false 1223// -- 1224// -- // The same object is returned if there are no changes: 1225// -- obj3 = updateIn(obj, ['d', 'd1'], (val) => val) 1226// -- // { a: 1, d: { d1: 3, d2: 4 } } 1227// -- obj3 === obj 1228// -- // true 1229// -- ``` 1230function updateIn(obj, path, fnUpdate) { 1231 var prevVal = getIn(obj, path); 1232 var nextVal = fnUpdate(prevVal); 1233 return setIn(obj, path, nextVal); 1234} 1235 1236// -- #### merge() 1237// -- Returns a new object built as follows: the overlapping keys from the 1238// -- second one overwrite the corresponding entries from the first one. 1239// -- Similar to `Object.assign()`, but immutable. 1240// -- 1241// -- Usage: 1242// -- 1243// -- * `merge(obj1: Object, obj2: ?Object): Object` 1244// -- * `merge(obj1: Object, ...objects: Array<?Object>): Object` 1245// -- 1246// -- The unmodified `obj1` is returned if `obj2` does not *provide something 1247// -- new to* `obj1`, i.e. if either of the following 1248// -- conditions are true: 1249// -- 1250// -- * `obj2` is `null` or `undefined` 1251// -- * `obj2` is an object, but it is empty 1252// -- * All attributes of `obj2` are `undefined` 1253// -- * All attributes of `obj2` are referentially equal to the 1254// -- corresponding attributes of `obj1` 1255// -- 1256// -- Note that `undefined` attributes in `obj2` do not modify the 1257// -- corresponding attributes in `obj1`. 1258// -- 1259// -- ```js 1260// -- obj1 = { a: 1, b: 2, c: 3 } 1261// -- obj2 = { c: 4, d: 5 } 1262// -- obj3 = merge(obj1, obj2) 1263// -- // { a: 1, b: 2, c: 4, d: 5 } 1264// -- obj3 === obj1 1265// -- // false 1266// -- 1267// -- // The same object is returned if there are no changes: 1268// -- merge(obj1, { c: 3 }) === obj1 1269// -- // true 1270// -- ``` 1271function merge(a, b, c, d, e, f) { 1272 for (var _len2 = arguments.length, rest = Array(_len2 > 6 ? _len2 - 6 : 0), _key2 = 6; _key2 < _len2; _key2++) { 1273 rest[_key2 - 6] = arguments[_key2]; 1274 } 1275 1276 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); 1277} 1278 1279// -- #### mergeDeep() 1280// -- Returns a new object built as follows: the overlapping keys from the 1281// -- second one overwrite the corresponding entries from the first one. 1282// -- If both the first and second entries are objects they are merged recursively. 1283// -- Similar to `Object.assign()`, but immutable, and deeply merging. 1284// -- 1285// -- Usage: 1286// -- 1287// -- * `mergeDeep(obj1: Object, obj2: ?Object): Object` 1288// -- * `mergeDeep(obj1: Object, ...objects: Array<?Object>): Object` 1289// -- 1290// -- The unmodified `obj1` is returned if `obj2` does not *provide something 1291// -- new to* `obj1`, i.e. if either of the following 1292// -- conditions are true: 1293// -- 1294// -- * `obj2` is `null` or `undefined` 1295// -- * `obj2` is an object, but it is empty 1296// -- * All attributes of `obj2` are `undefined` 1297// -- * All attributes of `obj2` are referentially equal to the
1298// -- corresponding attributes of `obj1` 1299// -- 1300// -- Note that `undefined` attributes in `obj2` do not modify the 1301// -- corresponding attributes in `obj1`. 1302// -- 1303// -- ```js 1304// -- obj1 = { a: 1, b: 2, c: { a: 1 } } 1305// -- obj2 = { b: 3, c: { b: 2 } } 1306// -- obj3 = mergeDeep(obj1, obj2) 1307// -- // { a: 1, b: 3, c: { a: 1, b: 2 } } 1308// -- obj3 === obj1 1309// -- // false 1310// -- 1311// -- // The same object is returned if there are no changes: 1312// -- mergeDeep(obj1, { c: { a: 1 } }) === obj1 1313// -- // true 1314// -- ``` 1315function mergeDeep(a, b, c, d, e, f) { 1316 for (var _len3 = arguments.length, rest = Array(_len3 > 6 ? _len3 - 6 : 0), _key3 = 6; _key3 < _len3; _key3++) { 1317 rest[_key3 - 6] = arguments[_key3]; 1318 } 1319 1320 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); 1321} 1322 1323// -- #### mergeIn() 1324// -- Similar to `merge()`, but merging the value at a given nested path. 1325// -- Note that the returned type is the same as that of the first argument. 1326// -- 1327// -- Usage: 1328// -- 1329// -- * `mergeIn<T: ArrayOrObject>(obj1: T, path: Array<Key>, obj2: ?Object): T` 1330// -- * `mergeIn<T: ArrayOrObject>(obj1: T, path: Array<Key>, 1331// -- ...objects: Array<?Object>): T` 1332// -- 1333// -- ```js 1334// -- obj1 = { a: 1, d: { b: { d1: 3, d2: 4 } } } 1335// -- obj2 = { d3: 5 } 1336// -- obj3 = mergeIn(obj1, ['d', 'b'], obj2) 1337// -- // { a: 1, d: { b: { d1: 3, d2: 4, d3: 5 } } } 1338// -- obj3 === obj1 1339// -- // false 1340// -- 1341// -- // The same object is returned if there are no changes: 1342// -- mergeIn(obj1, ['d', 'b'], { d2: 4 }) === obj1 1343// -- // true 1344// -- ``` 1345function mergeIn(a, path, b, c, d, e, f) { 1346 var prevVal = getIn(a, path); 1347 if (prevVal == null) prevVal = {}; 1348 var nextVal = void 0; 1349 1350 for (var _len4 = arguments.length, rest = Array(_len4 > 7 ? _len4 - 7 : 0), _key4 = 7; _key4 < _len4; _key4++) { 1351 rest[_key4 - 7] = arguments[_key4]; 1352 } 1353 1354 if (rest.length) { 1355 nextVal = doMerge.call.apply(doMerge, [null, false, false, prevVal, b, c, d, e, f].concat(rest)); 1356 } else { 1357 nextVal = doMerge(false, false, prevVal, b, c, d, e, f); 1358 } 1359 return setIn(a, path, nextVal); 1360} 1361 1362// -- #### omit() 1363// -- Returns an object excluding one or several attributes. 1364// -- 1365// -- Usage: `omit(obj: Object, attrs: Array<string>|string): Object` 1366// 1367// -- ```js 1368// -- obj = { a: 1, b: 2, c: 3, d: 4 } 1369// -- omit(obj, 'a') 1370// -- // { b: 2, c: 3, d: 4 } 1371// -- omit(obj, ['b', 'c']) 1372// -- // { a: 1, d: 4 } 1373// -- 1374// -- // The same object is returned if there are no changes: 1375// -- omit(obj, 'z') === obj1 1376// -- // true 1377// -- ``` 1378function omit(obj, attrs) { 1379 var omitList = Array.isArray(attrs) ? attrs : [attrs]; 1380 var fDoSomething = false; 1381 for (var i = 0; i < omitList.length; i++) { 1382 if (hasOwnProperty.call(obj, omitList[i])) { 1383 fDoSomething = true; 1384 break; 1385 } 1386 } 1387 if (!fDoSomething) return obj; 1388 var out = {}; 1389 var keys = getKeysAndSymbols(obj); 1390 for (var _i = 0; _i < keys.length; _i++) { 1391 var key = keys[_i]; 1392 if (omitList.indexOf(key) >= 0) continue; 1393 out[key] = obj[key]; 1394 } 1395 return out; 1396} 1397 1398// -- #### addDefaults() 1399// -- Returns a new object built as follows: `undefined` keys in the first one 1400// -- are filled in with the corresponding values from the second one 1401// -- (even if they are `null`). 1402// -- 1403// -- Usage: 1404// -- 1405// -- * `addDefaults(obj: Object, defaults: Object): Object` 1406// -- * `addDefaults(obj: Object, ...defaultObjects: Array<?Object>): Object` 1407// -- 1408// -- ```js 1409// -- obj1 = { a: 1, b: 2, c: 3 } 1410// -- obj2 = { c: 4, d: 5, e: null } 1411// -- obj3 = addDefaults(obj1, obj2) 1412// -- // { a: 1, b: 2, c: 3, d: 5, e: null } 1413// -- obj3 === obj1 1414// -- // false 1415// -- 1416// -- // The same object is returned if there are no changes: 1417// -- addDefaults(obj1, { c: 4 }) === obj1 1418// -- // true 1419// -- ``` 1420function addDefaults(a, b, c, d, e, f) { 1421 for (var _len5 = arguments.length, rest = Array(_len5 > 6 ? _len5 - 6 : 0), _key5 = 6; _key5 < _len5; _key5++) { 1422 rest[_key5 - 6] = arguments[_key5]; 1423 } 1424 1425 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); 1426} 1427 1428// =============================================== 1429// ### Public API 1430// =============================================== 1431var timm = { 1432 clone: clone, 1433 addLast: addLast, 1434 addFirst: addFirst, 1435 removeLast: removeLast, 1436 removeFirst: removeFirst, 1437 insert: insert, 1438 removeAt: removeAt, 1439 replaceAt: replaceAt, 1440 1441 getIn: getIn, 1442 // eslint-disable-next-line object-shorthand 1443 set: set, // so that flow doesn't complain 1444 setIn: setIn, 1445 update: update, 1446 updateIn: updateIn, 1447 merge: merge, 1448 mergeDeep: mergeDeep, 1449 mergeIn: mergeIn, 1450 omit: omit, 1451 addDefaults: addDefaults 1452}; 1453 1454exports.default = timm; 1455 1456 1457/***/ }), 1458/* 14 */
1459/***/ (function(module, exports) { 1460 1461function _defineProperty(obj, key, value) { 1462 if (key in obj) { 1463 Object.defineProperty(obj, key, { 1464 value: value, 1465 enumerable: true, 1466 configurable: true, 1467 writable: true 1468 }); 1469 } else { 1470 obj[key] = value; 1471 } 1472 1473 return obj; 1474} 1475 1476module.exports = _defineProperty; 1477 1478/***/ }), 1479/* 15 */ 1480/***/ (function(module, exports) { 1481 1482function _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); } 1483 1484function _typeof(obj) { 1485 if (typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol") { 1486 module.exports = _typeof = function _typeof(obj) { 1487 return _typeof2(obj); 1488 }; 1489 } else { 1490 module.exports = _typeof = function _typeof(obj) { 1491 return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : _typeof2(obj); 1492 }; 1493 } 1494 1495 return _typeof(obj); 1496} 1497 1498module.exports = _typeof; 1499 1500/***/ }), 1501/* 16 */ 1502/***/ (function(module, exports) { 1503 1504function _interopRequireWildcard(obj) { 1505 if (obj && obj.__esModule) { 1506 return obj; 1507 } else { 1508 var newObj = {}; 1509 1510 if (obj != null) { 1511 for (var key in obj) { 1512 if (Object.prototype.hasOwnProperty.call(obj, key)) { 1513 var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; 1514 1515 if (desc.get || desc.set) { 1516 Object.defineProperty(newObj, key, desc); 1517 } else { 1518 newObj[key] = obj[key]; 1519 } 1520 } 1521 } 1522 } 1523 1524 newObj["default"] = obj; 1525 return newObj; 1526 } 1527} 1528 1529module.exports = _interopRequireWildcard; 1530 1531/***/ }), 1532/* 17 */ 1533/***/ (function(module, exports, __webpack_require__) { 1534 1535var listCacheClear = __webpack_require__(121), 1536 listCacheDelete = __webpack_require__(122), 1537 listCacheGet = __webpack_require__(123), 1538 listCacheHas = __webpack_require__(124), 1539 listCacheSet = __webpack_require__(125); 1540 1541/** 1542 * Creates an list cache object. 1543 * 1544 * @private 1545 * @constructor 1546 * @param {Array} [entries] The key-value pairs to cache. 1547 */ 1548function ListCache(entries) { 1549 var index = -1, 1550 length = entries == null ? 0 : entries.length; 1551 1552 this.clear(); 1553 while (++index < length) { 1554 var entry = entries[index]; 1555 this.set(entry[0], entry[1]); 1556 } 1557} 1558 1559// Add methods to `ListCache`. 1560ListCache.prototype.clear = listCacheClear; 1561ListCache.prototype['delete'] = listCacheDelete; 1562ListCache.prototype.get = listCacheGet; 1563ListCache.prototype.has = listCacheHas; 1564ListCache.prototype.set = listCacheSet; 1565 1566module.exports = ListCache; 1567 1568 1569/***/ }), 1570/* 18 */ 1571/***/ (function(module, exports, __webpack_require__) { 1572 1573var eq = __webpack_require__(33); 1574 1575/** 1576 * Gets the index at which the `key` is found in `array` of key-value pairs. 1577 * 1578 * @private 1579 * @param {Array} array The array to inspect. 1580 * @param {*} key The key to search for. 1581 * @returns {number} Returns the index of the matched value, else `-1`. 1582 */ 1583function assocIndexOf(array, key) { 1584 var length = array.length; 1585 while (length--) { 1586 if (eq(array[length][0], key)) { 1587 return length; 1588 } 1589 } 1590 return -1; 1591} 1592 1593module.exports = assocIndexOf; 1594 1595 1596/***/ }), 1597/* 19 */ 1598/***/ (function(module, exports, __webpack_require__) { 1599 1600var getNative = __webpack_require__(7); 1601 1602/* Built-in method references that are verified to be native. */ 1603var nativeCreate = getNative(Object, 'create'); 1604 1605module.exports = nativeCreate; 1606 1607 1608/***/ }), 1609/* 20 */ 1610/***/ (function(module, exports, __webpack_require__) { 1611 1612var isKeyable = __webpack_require__(145); 1613 1614/** 1615 * Gets the data for `map`. 1616 * 1617 * @private 1618 * @param {Object} map The map to query. 1619 * @param {string} key The reference key. 1620 * @returns {*} Returns the map data. 1621 */ 1622function getMapData(map, key) { 1623 var data = map.__data__; 1624 return isKeyable(key) 1625 ? data[typeof key == 'string' ? 'string' : 'hash'] 1626 : data.map; 1627} 1628 1629module.exports = getMapData; 1630 1631 1632/***/ }), 1633/* 21 */ 1634/***/ (function(module, exports, __webpack_require__) { 1635 1636var arrayLikeKeys = __webpack_require__(74), 1637 baseKeys = __webpack_require__(41), 1638 isArrayLike = __webpack_require__(10); 1639 1640/** 1641 * Creates an array of the own enumerable property names of `object`. 1642 * 1643 * **Note:** Non-object values are coerced to objects. See the 1644 * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) 1645 * for more details. 1646 * 1647 * @static 1648 * @since 0.1.0 1649 * @memberOf _ 1650 * @category Object 1651 * @param {Object} object The object to query. 1652 * @returns {Array} Returns the array of property names. 1653 * @example 1654 * 1655 * function Foo() { 1656 * this.a = 1; 1657 * this.b = 2; 1658 * } 1659 * 1660 * Foo.prototype.c = 3; 1661 * 1662 * _.keys(new Foo); 1663 * // => ['a', 'b'] (iteration order is not guaranteed) 1664 * 1665 * _.keys('hi'); 1666 * // => ['0', '1'] 1667 */ 1668function keys(object) { 1669 return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); 1670} 1671 1672module.exports = keys; 1673 1674 1675/***/ }), 1676/* 22 */ 1677/***/ (function(module, exports, __webpack_require__) { 1678 1679var baseIsArguments = __webpack_require__(163), 1680 isObjectLike = __webpack_require__(8); 1681 1682/** Used for built-in method references. */ 1683var objectProto = Object.prototype; 1684 1685/** Used to check objects for own properties. */ 1686var hasOwnProperty = objectProto.hasOwnProperty; 1687 1688/** Built-in value references. */ 1689var propertyIsEnumerable = objectProto.propertyIsEnumerable; 1690 1691/** 1692 * Checks if `value` is likely an `arguments` object. 1693 * 1694 * @static 1695 * @memberOf _ 1696 * @since 0.1.0 1697 * @category Lang 1698 * @param {*} value The value to check. 1699 * @returns {boolean} Returns `true` if `value` is an `arguments` object, 1700 * else `false`. 1701 * @example 1702 * 1703 * _.isArguments(function() { return arguments; }()); 1704 * // => true 1705 * 1706 * _.isArguments([1, 2, 3]); 1707 * // => false 1708 */ 1709var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { 1710 return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && 1711 !propertyIsEnumerable.call(value, 'callee'); 1712}; 1713 1714module.exports = isArguments; 1715 1716 1717/***/ }), 1718/* 23 */ 1719/***/ (function(module, exports, __webpack_require__) { 1720 1721var baseGet = __webpack_require__(44); 1722 1723/** 1724 * Gets the value at `path` of `object`. If the resolved value is 1725 * `undefined`, the `defaultValue` is returned in its place. 1726 * 1727 * @static 1728 * @memberOf _ 1729 * @since 3.7.0 1730 * @category Object 1731 * @param {Object} object The object to query. 1732 * @param {Array|string} path The path of the property to get. 1733 * @param {*} [defaultValue] The value returned for `undefined` resolved values. 1734 * @returns {*} Returns the resolved value. 1735 * @example 1736 * 1737 * var object = { 'a': [{ 'b': { 'c': 3 } }] }; 1738 * 1739 * _.get(object, 'a[0].b.c'); 1740 * // => 3 1741 * 1742 * _.get(object, ['a', '0', 'b', 'c']); 1743 * // => 3 1744 * 1745 * _.get(object, 'a.b.c', 'default'); 1746 * // => 'default' 1747 */ 1748function get(object, path, defaultValue) { 1749 var result = object == null ? undefined : baseGet(object, path); 1750 return result === undefined ? defaultValue : result; 1751} 1752 1753module.exports = get; 1754 1755 1756/***/ }), 1757/* 24 */ 1758/***/ (function(module, exports, __webpack_require__) { 1759 1760var isArray = __webpack_require__(1), 1761 isKey = __webpack_require__(45), 1762 stringToPath = __webpack_require__(174), 1763 toString = __webpack_require__(80); 1764 1765/** 1766 * Casts `value` to a path array if it's not one. 1767 * 1768 * @private 1769 * @param {*} value The value to inspect. 1770 * @param {Object} [object] The object to query keys on. 1771 * @returns {Array} Returns the cast property path array.
vendor: 1,732 bytes, lines 1772-1849
1772 */ 1773function castPath(value, object) { 1774 if (isArray(value)) { 1775 return value; 1776 } 1777 return isKey(value, object) ? [value] : stringToPath(toString(value)); 1778} 1779 1780module.exports = castPath; 1781 1782 1783/***/ }), 1784/* 25 */ 1785/***/ (function(module, exports, __webpack_require__) { 1786 1787var baseGetTag = __webpack_require__(9), 1788 isObjectLike = __webpack_require__(8); 1789 1790/** `Object#toString` result references. */ 1791var symbolTag = '[object Symbol]'; 1792 1793/** 1794 * Checks if `value` is classified as a `Symbol` primitive or object. 1795 * 1796 * @static 1797 * @memberOf _ 1798 * @since 4.0.0 1799 * @category Lang 1800 * @param {*} value The value to check. 1801 * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. 1802 * @example 1803 * 1804 * _.isSymbol(Symbol.iterator); 1805 * // => true 1806 * 1807 * _.isSymbol('abc'); 1808 * // => false 1809 */ 1810function isSymbol(value) { 1811 return typeof value == 'symbol' || 1812 (isObjectLike(value) && baseGetTag(value) == symbolTag); 1813} 1814 1815module.exports = isSymbol; 1816 1817 1818/***/ }), 1819/* 26 */ 1820/***/ (function(module, exports, __webpack_require__) { 1821 1822var defineProperty = __webpack_require__(14); 1823 1824function _objectSpread(target) { 1825 for (var i = 1; i < arguments.length; i++) { 1826 var source = arguments[i] != null ? arguments[i] : {}; 1827 var ownKeys = Object.keys(source); 1828 1829 if (typeof Object.getOwnPropertySymbols === 'function') { 1830 ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { 1831 return Object.getOwnPropertyDescriptor(source, sym).enumerable; 1832 })); 1833 } 1834 1835 ownKeys.forEach(function (key) { 1836 defineProperty(target, key, source[key]); 1837 }); 1838 } 1839 1840 return target; 1841} 1842 1843module.exports = _objectSpread; 1844 1845/***/ }), 1846/* 27 */ 1847/***/ (function(module, exports, __webpack_require__) { 1848 1849"use strict";
1850// @wf-will-never-add-flow-to-this-file 1851 1852/* eslint-disable */ 1853 1854/** 1855 * Webflow: IX Event triggers for other modules 1856 */ 1857 1858 1859var $ = window.jQuery; 1860var api = {}; 1861var eventQueue = []; 1862var namespace = '.w-ix'; 1863var eventTriggers = { 1864 reset: function reset(i, el) { 1865 el.__wf_intro = null; 1866 }, 1867 intro: function intro(i, el) { 1868 if (el.__wf_intro) { 1869 return; 1870 } 1871 1872 el.__wf_intro = true; 1873 $(el).triggerHandler(api.types.INTRO); 1874 }, 1875 outro: function outro(i, el) { 1876 if (!el.__wf_intro) { 1877 return; 1878 } 1879 1880 el.__wf_intro = null; 1881 $(el).triggerHandler(api.types.OUTRO); 1882 } 1883}; 1884api.triggers = {}; 1885api.types = { 1886 INTRO: 'w-ix-intro' + namespace, 1887 OUTRO: 'w-ix-outro' + namespace 1888}; // Trigger any events in queue + restore trigger methods 1889 1890api.init = function () { 1891 var count = eventQueue.length; 1892 1893 for (var i = 0; i < count; i++) { 1894 var memo = eventQueue[i]; 1895 memo[0](0, memo[1]); 1896 } 1897 1898 eventQueue = []; 1899 $.extend(api.triggers, eventTriggers); 1900}; // Replace all triggers with async wrapper to queue events until init 1901 1902 1903api.async = function () { 1904 for (var key in eventTriggers) { 1905 var func = eventTriggers[key]; 1906 1907 if (!eventTriggers.hasOwnProperty(key)) { 1908 continue; 1909 } // Replace trigger method with async wrapper 1910 1911 1912 api.triggers[key] = function (i, el) { 1913 eventQueue.push([func, el]); 1914 }; 1915 } 1916}; // Default triggers to async queue 1917 1918 1919api.async(); 1920module.exports = api; 1921 1922/***/ }), 1923/* 28 */ 1924/***/ (function(module, exports, __webpack_require__) { 1925 1926"use strict";
1927// @wf-will-never-add-flow-to-this-file 1928 1929/* eslint-disable */ 1930 1931 1932var IXEvents = __webpack_require__(27); 1933 1934function dispatchCustomEvent(element, eventName) { 1935 var event = document.createEvent('CustomEvent'); 1936 event.initCustomEvent(eventName, true, true, null); 1937 element.dispatchEvent(event); 1938} 1939/** 1940 * Webflow: IX Event triggers for other modules 1941 */ 1942 1943 1944var $ = window.jQuery; 1945var api = {}; 1946var namespace = '.w-ix'; 1947var eventTriggers = { 1948 reset: function reset(i, el) { 1949 IXEvents.triggers.reset(i, el); 1950 }, 1951 intro: function intro(i, el) { 1952 IXEvents.triggers.intro(i, el); 1953 dispatchCustomEvent(el, 'COMPONENT_ACTIVE'); 1954 }, 1955 outro: function outro(i, el) { 1956 IXEvents.triggers.outro(i, el); 1957 dispatchCustomEvent(el, 'COMPONENT_INACTIVE'); 1958 } 1959}; 1960api.triggers = {}; 1961api.types = { 1962 INTRO: 'w-ix-intro' + namespace, 1963 OUTRO: 'w-ix-outro' + namespace 1964}; 1965$.extend(api.triggers, eventTriggers); 1966module.exports = api; 1967 1968/***/ }), 1969/* 29 */ 1970/***/ (function(module, __webpack_exports__, __webpack_require__) { 1971 1972"use strict"; 1973__webpack_require__.r(__webpack_exports__); 1974/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ActionTypes", function() { return ActionTypes; }); 1975/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return createStore; }); 1976/* harmony import */ var lodash_es_isPlainObject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(57); 1977/* harmony import */ var symbol_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(114); 1978 1979 1980 1981/** 1982 * These are private action types reserved by Redux. 1983 * For any unknown actions, you must return the current state. 1984 * If the current state is undefined, you must return the initial state. 1985 * Do not reference these action types directly in your code. 1986 */ 1987var ActionTypes = { 1988 INIT: '@@redux/INIT' 1989}; 1990 1991/** 1992 * Creates a Redux store that holds the state tree. 1993 * The only way to change the data in the store is to call `dispatch()` on it. 1994 *
1995 * There should only be a single store in your app. To specify how different 1996 * parts of the state tree respond to actions, you may combine several reducers 1997 * into a single reducer function by using `combineReducers`. 1998 * 1999 * @param {Function} reducer A function that returns the next state tree, given 2000 * the current state tree and the action to handle. 2001 * 2002 * @param {any} [preloadedState] The initial state. You may optionally specify it 2003 * to hydrate the state from the server in universal apps, or to restore a 2004 * previously serialized user session. 2005 * If you use `combineReducers` to produce the root reducer function, this must be 2006 * an object with the same shape as `combineReducers` keys. 2007 * 2008 * @param {Function} enhancer The store enhancer. You may optionally specify it 2009 * to enhance the store with third-party capabilities such as middleware, 2010 * time travel, persistence, etc. The only store enhancer that ships with Redux 2011 * is `applyMiddleware()`. 2012 * 2013 * @returns {Store} A Redux store that lets you read the state, dispatch actions 2014 * and subscribe to changes. 2015 */ 2016function createStore(reducer, preloadedState, enhancer) { 2017 var _ref2; 2018 2019 if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') { 2020 enhancer = preloadedState; 2021 preloadedState = undefined; 2022 } 2023 2024 if (typeof enhancer !== 'undefined') { 2025 if (typeof enhancer !== 'function') { 2026 throw new Error('Expected the enhancer to be a function.'); 2027 } 2028 2029 return enhancer(createStore)(reducer, preloadedState); 2030 } 2031 2032 if (typeof reducer !== 'function') { 2033 throw new Error('Expected the reducer to be a function.'); 2034 } 2035 2036 var currentReducer = reducer; 2037 var currentState = preloadedState; 2038 var currentListeners = []; 2039 var nextListeners = currentListeners; 2040 var isDispatching = false; 2041 2042 function ensureCanMutateNextListeners() { 2043 if (nextListeners === currentListeners) { 2044 nextListeners = currentListeners.slice(); 2045 } 2046 } 2047 2048 /** 2049 * Reads the state tree managed by the store. 2050 * 2051 * @returns {any} The current state tree of your application. 2052 */ 2053 function getState() { 2054 return currentState; 2055 } 2056 2057 /** 2058 * Adds a change listener. It will be called any time an action is dispatched, 2059 * and some part of the state tree may potentially have changed. You may then 2060 * call `getState()` to read the current state tree inside the callback. 2061 * 2062 * You may call `dispatch()` from a change listener, with the following 2063 * caveats: 2064 * 2065 * 1. The subscriptions are snapshotted just before every `dispatch()` call. 2066 * If you subscribe or unsubscribe while the listeners are being invoked, this 2067 * will not have any effect on the `dispatch()` that is currently in progress. 2068 * However, the next `dispatch()` call, whether nested or not, will use a more 2069 * recent snapshot of the subscription list. 2070 * 2071 * 2. The listener should not expect to see all state changes, as the state 2072 * might have been updated multiple times during a nested `dispatch()` before 2073 * the listener is called. It is, however, guaranteed that all subscribers 2074 * registered before the `dispatch()` started will be called with the latest 2075 * state by the time it exits. 2076 * 2077 * @param {Function} listener A callback to be invoked on every dispatch. 2078 * @returns {Function} A function to remove this change listener. 2079 */ 2080 function subscribe(listener) { 2081 if (typeof listener !== 'function') { 2082 throw new Error('Expected listener to be a function.'); 2083 } 2084 2085 var isSubscribed = true; 2086 2087 ensureCanMutateNextListeners(); 2088 nextListeners.push(listener); 2089 2090 return function unsubscribe() { 2091 if (!isSubscribed) { 2092 return; 2093 } 2094 2095 isSubscribed = false; 2096 2097 ensureCanMutateNextListeners(); 2098 var index = nextListeners.indexOf(listener); 2099 nextListeners.splice(index, 1); 2100 }; 2101 } 2102 2103 /** 2104 * Dispatches an action. It is the only way to trigger a state change. 2105 * 2106 * The `reducer` function, used to create the store, will be called with the 2107 * current state tree and the given `action`. Its return value will 2108 * be considered the **next** state of the tree, and the change listeners 2109 * will be notified. 2110 * 2111 * The base implementation only supports plain object actions. If you want to 2112 * dispatch a Promise, an Observable, a thunk, or something else, you need to 2113 * wrap your store creating function into the corresponding middleware. For 2114 * example, see the documentation for the `redux-thunk` package. Even the 2115 * middleware will eventually dispatch plain object actions using this method. 2116 * 2117 * @param {Object} action A plain object representing âwhat changedâ. It is 2118 * a good idea to keep actions serializable so you can record and replay user 2119 * sessions, or use the time travelling `redux-devtools`. An action must have 2120 * a `type` property which may not be `undefined`. It is a good idea to use 2121 * string constants for action types. 2122 * 2123 * @returns {Object} For convenience, the same action object you dispatched. 2124 * 2125 * Note that, if you use a custom middleware, it may wrap `dispatch()` to 2126 * return something else (for example, a Promise you can await). 2127 */ 2128 function dispatch(action) { 2129 if (!Object(lodash_es_isPlainObject__WEBPACK_IMPORTED_MODULE_0__["default"])(action)) { 2130 throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.'); 2131 } 2132 2133 if (typeof action.type === 'undefined') { 2134 throw new Error('Actions may not have an undefined "type" property. ' + 'Have you misspelled a constant?'); 2135 } 2136 2137 if (isDispatching) { 2138 throw new Error('Reducers may not dispatch actions.'); 2139 } 2140 2141 try { 2142 isDispatching = true; 2143 currentState = currentReducer(currentState, action); 2144 } finally { 2145 isDispatching = false;
2146 } 2147 2148 var listeners = currentListeners = nextListeners; 2149 for (var i = 0; i < listeners.length; i++) { 2150 listeners[i](); 2151 } 2152 2153 return action; 2154 } 2155 2156 /** 2157 * Replaces the reducer currently used by the store to calculate the state. 2158 * 2159 * You might need this if your app implements code splitting and you want to 2160 * load some of the reducers dynamically. You might also need this if you 2161 * implement a hot reloading mechanism for Redux. 2162 * 2163 * @param {Function} nextReducer The reducer for the store to use instead. 2164 * @returns {void} 2165 */ 2166 function replaceReducer(nextReducer) { 2167 if (typeof nextReducer !== 'function') { 2168 throw new Error('Expected the nextReducer to be a function.'); 2169 } 2170 2171 currentReducer = nextReducer; 2172 dispatch({ type: ActionTypes.INIT }); 2173 } 2174 2175 /** 2176 * Interoperability point for observable/reactive libraries. 2177 * @returns {observable} A minimal observable of state changes. 2178 * For more information, see the observable proposal: 2179 * https://github.com/zenparsing/es-observable 2180 */ 2181 function observable() { 2182 var _ref; 2183 2184 var outerSubscribe = subscribe; 2185 return _ref = { 2186 /** 2187 * The minimal observable subscription method. 2188 * @param {Object} observer Any object that can be used as an observer. 2189 * The observer object should have a `next` method. 2190 * @returns {subscription} An object with an `unsubscribe` method that can 2191 * be used to unsubscribe the observable from the store, and prevent further 2192 * emission of values from the observable. 2193 */ 2194 subscribe: function subscribe(observer) { 2195 if (typeof observer !== 'object') { 2196 throw new TypeError('Expected the observer to be an object.'); 2197 } 2198 2199 function observeState() { 2200 if (observer.next) { 2201 observer.next(getState()); 2202 } 2203 } 2204 2205 observeState(); 2206 var unsubscribe = outerSubscribe(observeState); 2207 return { unsubscribe: unsubscribe }; 2208 } 2209 }, _ref[symbol_observable__WEBPACK_IMPORTED_MODULE_1__["default"]] = function () { 2210 return this; 2211 }, _ref; 2212 } 2213 2214 // When a store is created, an "INIT" action is dispatched so that every 2215 // reducer returns their initial state. This effectively populates 2216 // the initial state tree. 2217 dispatch({ type: ActionTypes.INIT }); 2218 2219 return _ref2 = { 2220 dispatch: dispatch, 2221 subscribe: subscribe, 2222 getState: getState, 2223 replaceReducer: replaceReducer 2224 }, _ref2[symbol_observable__WEBPACK_IMPORTED_MODULE_1__["default"]] = observable, _ref2; 2225} 2226 2227/***/ }), 2228/* 30 */ 2229/***/ (function(module, exports) { 2230 2231var g; 2232 2233// This works in non-strict mode 2234g = (function() { 2235 return this; 2236})(); 2237 2238try { 2239 // This works if eval is allowed (see CSP) 2240 g = g || new Function("return this")(); 2241} catch (e) { 2242 // This works if the window reference is available 2243 if (typeof window === "object") g = window; 2244} 2245 2246// g can still be undefined, but nothing to do about it... 2247// We return undefined, instead of nothing here, so it's 2248// easier to handle this case. if(!global) { ...} 2249 2250module.exports = g; 2251 2252 2253/***/ }), 2254/* 31 */ 2255/***/ (function(module, __webpack_exports__, __webpack_require__) { 2256 2257"use strict"; 2258__webpack_require__.r(__webpack_exports__); 2259/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return compose; }); 2260/** 2261 * Composes single-argument functions from right to left. The rightmost 2262 * function can take multiple arguments as it provides the signature for 2263 * the resulting composite function. 2264 * 2265 * @param {...Function} funcs The functions to compose. 2266 * @returns {Function} A function obtained by composing the argument functions 2267 * from right to left. For example, compose(f, g, h) is identical to doing 2268 * (...args) => f(g(h(...args))). 2269 */ 2270 2271function compose() { 2272 for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) { 2273 funcs[_key] = arguments[_key]; 2274 } 2275 2276 if (funcs.length === 0) { 2277 return function (arg) { 2278 return arg; 2279 }; 2280 } 2281 2282 if (funcs.length === 1) { 2283 return funcs[0]; 2284 } 2285 2286 var last = funcs[funcs.length - 1]; 2287 var rest = funcs.slice(0, -1); 2288 return function () { 2289 return rest.reduceRight(function (composed, f) { 2290 return f(composed); 2291 }, last.apply(undefined, arguments)); 2292 }; 2293} 2294 2295/***/ }), 2296/* 32 */ 2297/***/ (function(module, exports, __webpack_require__) { 2298 2299"use strict"; 2300 2301 2302var _interopRequireDefault = __webpack_require__(0); 2303 2304Object.defineProperty(exports, "__esModule", { 2305 value: true 2306});
2307exports.TRANSFORM_STYLE_PREFIXED = exports.TRANSFORM_PREFIXED = exports.FLEX_PREFIXED = exports.ELEMENT_MATCHES = exports.withBrowser = exports.IS_BROWSER_ENV = void 0; 2308 2309var _find = _interopRequireDefault(__webpack_require__(63)); 2310/* eslint-env browser */ 2311 2312 2313var IS_BROWSER_ENV = typeof window !== 'undefined'; 2314exports.IS_BROWSER_ENV = IS_BROWSER_ENV; 2315 2316var withBrowser = function withBrowser(fn, fallback) { 2317 if (IS_BROWSER_ENV) { 2318 return fn(); 2319 } 2320 2321 return fallback; 2322}; 2323 2324exports.withBrowser = withBrowser; 2325var ELEMENT_MATCHES = withBrowser(function () { 2326 return (0, _find["default"])(['matches', 'matchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector', 'webkitMatchesSelector'], function (key) { 2327 return key in Element.prototype; 2328 }); 2329}); 2330exports.ELEMENT_MATCHES = ELEMENT_MATCHES; 2331var FLEX_PREFIXED = withBrowser(function () { 2332 var el = document.createElement('i'); 2333 var values = ['flex', '-webkit-flex', '-ms-flexbox', '-moz-box', '-webkit-box']; 2334 var none = ''; 2335 2336 try { 2337 var length = values.length; 2338 2339 for (var i = 0; i < length; i++) { 2340 var value = values[i]; 2341 el.style.display = value; 2342 2343 if (el.style.display === value) { 2344 return value; 2345 } 2346 } 2347 2348 return none; 2349 } catch (err) { 2350 return none; 2351 } 2352}, 'flex'); 2353exports.FLEX_PREFIXED = FLEX_PREFIXED; 2354var TRANSFORM_PREFIXED = withBrowser(function () { 2355 var el = document.createElement('i'); 2356 2357 if (el.style.transform == null) { 2358 var prefixes = ['Webkit', 'Moz', 'ms']; 2359 var suffix = 'Transform'; 2360 var length = prefixes.length; 2361 2362 for (var i = 0; i < length; i++) { 2363 var prop = prefixes[i] + suffix; 2364 2365 if (el.style[prop] !== undefined) { 2366 return prop; 2367 } 2368 } 2369 } 2370 2371 return 'transform'; 2372}, 'transform'); 2373exports.TRANSFORM_PREFIXED = TRANSFORM_PREFIXED; 2374var TRANSFORM_PREFIX = TRANSFORM_PREFIXED.split('transform')[0]; 2375var TRANSFORM_STYLE_PREFIXED = TRANSFORM_PREFIX ? TRANSFORM_PREFIX + 'TransformStyle' : 'transformStyle'; 2376exports.TRANSFORM_STYLE_PREFIXED = TRANSFORM_STYLE_PREFIXED; 2377 2378/***/ }), 2379/* 33 */ 2380/***/ (function(module, exports) { 2381 2382/** 2383 * Performs a 2384 * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) 2385 * comparison between two values to determine if they are equivalent. 2386 * 2387 * @static 2388 * @memberOf _ 2389 * @since 4.0.0 2390 * @category Lang 2391 * @param {*} value The value to compare. 2392 * @param {*} other The other value to compare. 2393 * @returns {boolean} Returns `true` if the values are equivalent, else `false`. 2394 * @example 2395 * 2396 * var object = { 'a': 1 }; 2397 * var other = { 'a': 1 }; 2398 * 2399 * _.eq(object, object); 2400 * // => true 2401 * 2402 * _.eq(object, other); 2403 * // => false 2404 * 2405 * _.eq('a', 'a'); 2406 * // => true 2407 * 2408 * _.eq('a', Object('a')); 2409 * // => false 2410 * 2411 * _.eq(NaN, NaN); 2412 * // => true 2413 */ 2414function eq(value, other) { 2415 return value === other || (value !== value && other !== other); 2416} 2417 2418module.exports = eq; 2419 2420 2421/***/ }), 2422/* 34 */ 2423/***/ (function(module, exports, __webpack_require__) { 2424 2425var getNative = __webpack_require__(7), 2426 root = __webpack_require__(4); 2427 2428/* Built-in method references that are verified to be native. */ 2429var Map = getNative(root, 'Map'); 2430 2431module.exports = Map; 2432 2433 2434/***/ }), 2435/* 35 */ 2436/***/ (function(module, exports, __webpack_require__) { 2437 2438var mapCacheClear = __webpack_require__(137), 2439 mapCacheDelete = __webpack_require__(144), 2440 mapCacheGet = __webpack_require__(146), 2441 mapCacheHas = __webpack_require__(147), 2442 mapCacheSet = __webpack_require__(148); 2443 2444/** 2445 * Creates a map cache object to store key-value pairs. 2446 * 2447 * @private 2448 * @constructor 2449 * @param {Array} [entries] The key-value pairs to cache. 2450 */ 2451function MapCache(entries) { 2452 var index = -1, 2453 length = entries == null ? 0 : entries.length; 2454 2455 this.clear(); 2456 while (++index < length) { 2457 var entry = entries[index]; 2458 this.set(entry[0], entry[1]); 2459 } 2460} 2461 2462// Add methods to `MapCache`. 2463MapCache.prototype.clear = mapCacheClear; 2464MapCache.prototype['delete'] = mapCacheDelete; 2465MapCache.prototype.get = mapCacheGet; 2466MapCache.prototype.has = mapCacheHas; 2467MapCache.prototype.set = mapCacheSet; 2468 2469module.exports = MapCache; 2470 2471 2472/***/ }), 2473/* 36 */
vendor: 7,132 bytes, lines 2474-2753
2474/***/ (function(module, exports) { 2475 2476/** 2477 * Appends the elements of `values` to `array`. 2478 * 2479 * @private 2480 * @param {Array} array The array to modify. 2481 * @param {Array} values The values to append. 2482 * @returns {Array} Returns `array`. 2483 */ 2484function arrayPush(array, values) { 2485 var index = -1, 2486 length = values.length, 2487 offset = array.length; 2488 2489 while (++index < length) { 2490 array[offset + index] = values[index]; 2491 } 2492 return array; 2493} 2494 2495module.exports = arrayPush; 2496 2497 2498/***/ }), 2499/* 37 */ 2500/***/ (function(module, exports, __webpack_require__) { 2501 2502/* WEBPACK VAR INJECTION */(function(module) {var root = __webpack_require__(4), 2503 stubFalse = __webpack_require__(164); 2504 2505/** Detect free variable `exports`. */ 2506var freeExports = true && exports && !exports.nodeType && exports; 2507 2508/** Detect free variable `module`. */ 2509var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; 2510 2511/** Detect the popular CommonJS extension `module.exports`. */ 2512var moduleExports = freeModule && freeModule.exports === freeExports; 2513 2514/** Built-in value references. */ 2515var Buffer = moduleExports ? root.Buffer : undefined; 2516 2517/* Built-in method references for those with the same name as other `lodash` methods. */ 2518var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined; 2519 2520/** 2521 * Checks if `value` is a buffer. 2522 * 2523 * @static 2524 * @memberOf _ 2525 * @since 4.3.0 2526 * @category Lang 2527 * @param {*} value The value to check. 2528 * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. 2529 * @example 2530 * 2531 * _.isBuffer(new Buffer(2)); 2532 * // => true 2533 * 2534 * _.isBuffer(new Uint8Array(2)); 2535 * // => false 2536 */ 2537var isBuffer = nativeIsBuffer || stubFalse; 2538 2539module.exports = isBuffer; 2540 2541/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(75)(module))) 2542 2543/***/ }), 2544/* 38 */ 2545/***/ (function(module, exports) { 2546 2547/** Used as references for various `Number` constants. */ 2548var MAX_SAFE_INTEGER = 9007199254740991; 2549 2550/** Used to detect unsigned integer values. */ 2551var reIsUint = /^(?:0|[1-9]\d*)$/; 2552 2553/** 2554 * Checks if `value` is a valid array-like index. 2555 * 2556 * @private 2557 * @param {*} value The value to check. 2558 * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. 2559 * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. 2560 */ 2561function isIndex(value, length) { 2562 var type = typeof value; 2563 length = length == null ? MAX_SAFE_INTEGER : length; 2564 2565 return !!length && 2566 (type == 'number' || 2567 (type != 'symbol' && reIsUint.test(value))) && 2568 (value > -1 && value % 1 == 0 && value < length); 2569} 2570 2571module.exports = isIndex; 2572 2573 2574/***/ }), 2575/* 39 */ 2576/***/ (function(module, exports, __webpack_require__) { 2577 2578var baseIsTypedArray = __webpack_require__(165), 2579 baseUnary = __webpack_require__(166), 2580 nodeUtil = __webpack_require__(167); 2581 2582/* Node.js helper references. */ 2583var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; 2584 2585/** 2586 * Checks if `value` is classified as a typed array. 2587 * 2588 * @static 2589 * @memberOf _ 2590 * @since 3.0.0 2591 * @category Lang 2592 * @param {*} value The value to check. 2593 * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. 2594 * @example 2595 * 2596 * _.isTypedArray(new Uint8Array); 2597 * // => true 2598 * 2599 * _.isTypedArray([]); 2600 * // => false 2601 */ 2602var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; 2603 2604module.exports = isTypedArray; 2605 2606 2607/***/ }), 2608/* 40 */ 2609/***/ (function(module, exports) { 2610 2611/** Used as references for various `Number` constants. */ 2612var MAX_SAFE_INTEGER = 9007199254740991; 2613 2614/** 2615 * Checks if `value` is a valid array-like length. 2616 * 2617 * **Note:** This method is loosely based on 2618 * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). 2619 * 2620 * @static 2621 * @memberOf _ 2622 * @since 4.0.0 2623 * @category Lang 2624 * @param {*} value The value to check. 2625 * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. 2626 * @example 2627 * 2628 * _.isLength(3); 2629 * // => true 2630 * 2631 * _.isLength(Number.MIN_VALUE); 2632 * // => false 2633 * 2634 * _.isLength(Infinity); 2635 * // => false 2636 * 2637 * _.isLength('3'); 2638 * // => false 2639 */ 2640function isLength(value) { 2641 return typeof value == 'number' && 2642 value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; 2643} 2644 2645module.exports = isLength; 2646 2647 2648/***/ }), 2649/* 41 */ 2650/***/ (function(module, exports, __webpack_require__) { 2651 2652var isPrototype = __webpack_require__(42), 2653 nativeKeys = __webpack_require__(168); 2654 2655/** Used for built-in method references. */ 2656var objectProto = Object.prototype; 2657 2658/** Used to check objects for own properties. */ 2659var hasOwnProperty = objectProto.hasOwnProperty; 2660 2661/** 2662 * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. 2663 * 2664 * @private 2665 * @param {Object} object The object to query. 2666 * @returns {Array} Returns the array of property names. 2667 */ 2668function baseKeys(object) { 2669 if (!isPrototype(object)) { 2670 return nativeKeys(object); 2671 } 2672 var result = []; 2673 for (var key in Object(object)) { 2674 if (hasOwnProperty.call(object, key) && key != 'constructor') { 2675 result.push(key); 2676 } 2677 } 2678 return result; 2679} 2680 2681module.exports = baseKeys; 2682 2683 2684/***/ }), 2685/* 42 */ 2686/***/ (function(module, exports) { 2687 2688/** Used for built-in method references. */ 2689var objectProto = Object.prototype; 2690 2691/** 2692 * Checks if `value` is likely a prototype object. 2693 * 2694 * @private 2695 * @param {*} value The value to check. 2696 * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. 2697 */ 2698function isPrototype(value) { 2699 var Ctor = value && value.constructor, 2700 proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; 2701 2702 return value === proto; 2703} 2704 2705module.exports = isPrototype; 2706 2707 2708/***/ }), 2709/* 43 */ 2710/***/ (function(module, exports, __webpack_require__) { 2711 2712var DataView = __webpack_require__(169), 2713 Map = __webpack_require__(34), 2714 Promise = __webpack_require__(170), 2715 Set = __webpack_require__(171), 2716 WeakMap = __webpack_require__(77), 2717 baseGetTag = __webpack_require__(9), 2718 toSource = __webpack_require__(68); 2719 2720/** `Object#toString` result references. */ 2721var mapTag = '[object Map]', 2722 objectTag = '[object Object]', 2723 promiseTag = '[object Promise]', 2724 setTag = '[object Set]', 2725 weakMapTag = '[object WeakMap]'; 2726 2727var dataViewTag = '[object DataView]'; 2728 2729/** Used to detect maps, sets, and weakmaps. */ 2730var dataViewCtorString = toSource(DataView), 2731 mapCtorString = toSource(Map), 2732 promiseCtorString = toSource(Promise), 2733 setCtorString = toSource(Set), 2734 weakMapCtorString = toSource(WeakMap); 2735 2736/** 2737 * Gets the `toStringTag` of `value`. 2738 * 2739 * @private 2740 * @param {*} value The value to query. 2741 * @returns {string} Returns the `toStringTag`. 2742 */ 2743var getTag = baseGetTag; 2744 2745// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6. 2746if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || 2747 (Map && getTag(new Map) != mapTag) || 2748 (Promise && getTag(Promise.resolve()) != promiseTag) || 2749 (Set && getTag(new Set) != setTag) || 2750 (WeakMap && getTag(new WeakMap) != weakMapTag)) { 2751 getTag = function(value) { 2752 var result = baseGetTag(value), 2753 Ctor = result == objectTag ? value.constructor : undefined,
vendor: 5,744 bytes, lines 2754-2988
2754 ctorString = Ctor ? toSource(Ctor) : ''; 2755 2756 if (ctorString) { 2757 switch (ctorString) { 2758 case dataViewCtorString: return dataViewTag; 2759 case mapCtorString: return mapTag; 2760 case promiseCtorString: return promiseTag; 2761 case setCtorString: return setTag; 2762 case weakMapCtorString: return weakMapTag; 2763 } 2764 } 2765 return result; 2766 }; 2767} 2768 2769module.exports = getTag; 2770 2771 2772/***/ }), 2773/* 44 */ 2774/***/ (function(module, exports, __webpack_require__) { 2775 2776var castPath = __webpack_require__(24), 2777 toKey = __webpack_require__(12); 2778 2779/** 2780 * The base implementation of `_.get` without support for default values. 2781 * 2782 * @private 2783 * @param {Object} object The object to query. 2784 * @param {Array|string} path The path of the property to get. 2785 * @returns {*} Returns the resolved value. 2786 */ 2787function baseGet(object, path) { 2788 path = castPath(path, object); 2789 2790 var index = 0, 2791 length = path.length; 2792 2793 while (object != null && index < length) { 2794 object = object[toKey(path[index++])]; 2795 } 2796 return (index && index == length) ? object : undefined; 2797} 2798 2799module.exports = baseGet; 2800 2801 2802/***/ }), 2803/* 45 */ 2804/***/ (function(module, exports, __webpack_require__) { 2805 2806var isArray = __webpack_require__(1), 2807 isSymbol = __webpack_require__(25); 2808 2809/** Used to match property names within property paths. */ 2810var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, 2811 reIsPlainProp = /^\w*$/; 2812 2813/** 2814 * Checks if `value` is a property name and not a property path. 2815 * 2816 * @private 2817 * @param {*} value The value to check. 2818 * @param {Object} [object] The object to query keys on. 2819 * @returns {boolean} Returns `true` if `value` is a property name, else `false`. 2820 */ 2821function isKey(value, object) { 2822 if (isArray(value)) { 2823 return false; 2824 } 2825 var type = typeof value; 2826 if (type == 'number' || type == 'symbol' || type == 'boolean' || 2827 value == null || isSymbol(value)) { 2828 return true; 2829 } 2830 return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || 2831 (object != null && value in Object(object)); 2832} 2833 2834module.exports = isKey; 2835 2836 2837/***/ }), 2838/* 46 */ 2839/***/ (function(module, exports) { 2840 2841/** 2842 * This method returns the first argument it receives. 2843 * 2844 * @static 2845 * @since 0.1.0 2846 * @memberOf _ 2847 * @category Util 2848 * @param {*} value Any value. 2849 * @returns {*} Returns `value`. 2850 * @example 2851 * 2852 * var object = { 'a': 1 }; 2853 * 2854 * console.log(_.identity(object) === object); 2855 * // => true 2856 */ 2857function identity(value) { 2858 return value; 2859} 2860 2861module.exports = identity; 2862 2863 2864/***/ }), 2865/* 47 */ 2866/***/ (function(module, exports, __webpack_require__) { 2867 2868var toFinite = __webpack_require__(183); 2869 2870/** 2871 * Converts `value` to an integer. 2872 * 2873 * **Note:** This method is loosely based on 2874 * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger). 2875 * 2876 * @static 2877 * @memberOf _ 2878 * @since 4.0.0 2879 * @category Lang 2880 * @param {*} value The value to convert. 2881 * @returns {number} Returns the converted integer. 2882 * @example 2883 * 2884 * _.toInteger(3.2); 2885 * // => 3 2886 * 2887 * _.toInteger(Number.MIN_VALUE); 2888 * // => 0 2889 * 2890 * _.toInteger(Infinity); 2891 * // => 1.7976931348623157e+308 2892 * 2893 * _.toInteger('3.2'); 2894 * // => 3 2895 */ 2896function toInteger(value) { 2897 var result = toFinite(value), 2898 remainder = result % 1; 2899 2900 return result === result ? (remainder ? result - remainder : result) : 0; 2901} 2902 2903module.exports = toInteger; 2904 2905 2906/***/ }), 2907/* 48 */ 2908/***/ (function(module, exports, __webpack_require__) { 2909 2910var isObject = __webpack_require__(5), 2911 isSymbol = __webpack_require__(25); 2912 2913/** Used as references for various `Number` constants. */ 2914var NAN = 0 / 0; 2915 2916/** Used to match leading and trailing whitespace. */ 2917var reTrim = /^\s+|\s+$/g; 2918 2919/** Used to detect bad signed hexadecimal string values. */ 2920var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; 2921 2922/** Used to detect binary string values. */ 2923var reIsBinary = /^0b[01]+$/i; 2924 2925/** Used to detect octal string values. */ 2926var reIsOctal = /^0o[0-7]+$/i; 2927 2928/** Built-in method references without a dependency on `root`. */ 2929var freeParseInt = parseInt; 2930 2931/** 2932 * Converts `value` to a number. 2933 * 2934 * @static 2935 * @memberOf _ 2936 * @since 4.0.0 2937 * @category Lang 2938 * @param {*} value The value to process. 2939 * @returns {number} Returns the number. 2940 * @example 2941 * 2942 * _.toNumber(3.2); 2943 * // => 3.2 2944 * 2945 * _.toNumber(Number.MIN_VALUE); 2946 * // => 5e-324 2947 * 2948 * _.toNumber(Infinity); 2949 * // => Infinity 2950 * 2951 * _.toNumber('3.2'); 2952 * // => 3.2 2953 */ 2954function toNumber(value) { 2955 if (typeof value == 'number') { 2956 return value; 2957 } 2958 if (isSymbol(value)) { 2959 return NAN; 2960 } 2961 if (isObject(value)) { 2962 var other = typeof value.valueOf == 'function' ? value.valueOf() : value; 2963 value = isObject(other) ? (other + '') : other; 2964 } 2965 if (typeof value != 'string') { 2966 return value === 0 ? value : +value; 2967 } 2968 value = value.replace(reTrim, ''); 2969 var isBinary = reIsBinary.test(value); 2970 return (isBinary || reIsOctal.test(value)) 2971 ? freeParseInt(value.slice(2), isBinary ? 2 : 8) 2972 : (reIsBadHex.test(value) ? NAN : +value); 2973} 2974 2975module.exports = toNumber; 2976 2977 2978/***/ }), 2979/* 49 */ 2980/***/ (function(module, exports, __webpack_require__) { 2981 2982"use strict"; 2983 2984 2985Object.defineProperty(exports, "__esModule", { 2986 value: true 2987}); 2988exports.PLUGIN_LOTTIE = exports.JELLO_EFFECT = exports.RUBBER_BAND_EFFECT = exports.FLIP_RIGHT_TO_LEFT_EFFECT = exports.FLIP_LEFT_TO_RIGHT_EFFECT = exports.BOUNCE_EFFECT = exports.BLINK_EFFECT = exports.DROP_EFFECT = exports.PULSE_EFFECT = exports.JIGGLE_EFFECT = exports.FLIP_EFFECT = exports.POP_EFFECT = exports.FLY_EFFECT = exports.SPIN_EFFECT = exports.SHRINK_BIG_EFFECT = exports.SHRINK_EFFECT = exports.GROW_BIG_EFFECT = exports.GROW_EFFECT = exports.BLUR_EFFECT = exports.SLIDE_EFFECT = exports.FADE_EFFECT = exports.OBJECT_VALUE = exports.GENERAL_LOOP = exports.GENERAL_STOP_ACTION = exp
2988orts.GENERAL_START_ACTION = exports.GENERAL_CONTINUOUS_ACTION = exports.GENERAL_DISPLAY = exports.GENERAL_COMBO_CLASS = exports.STYLE_TEXT_COLOR = exports.STYLE_BORDER = exports.STYLE_BACKGROUND_COLOR = exports.STYLE_FILTER = exports.STYLE_BOX_SHADOW = exports.STYLE_SIZE = exports.STYLE_OPACITY = exports.TRANSFORM_SKEW = exports.TRANSFORM_ROTATE = exports.TRANSFORM_SCALE = exports.TRANSFORM_MOVE = void 0; 2989var TRANSFORM_MOVE = 'TRANSFORM_MOVE'; 2990exports.TRANSFORM_MOVE = TRANSFORM_MOVE; 2991var TRANSFORM_SCALE = 'TRANSFORM_SCALE'; 2992exports.TRANSFORM_SCALE = TRANSFORM_SCALE; 2993var TRANSFORM_ROTATE = 'TRANSFORM_ROTATE'; 2994exports.TRANSFORM_ROTATE = TRANSFORM_ROTATE; 2995var TRANSFORM_SKEW = 'TRANSFORM_SKEW'; 2996exports.TRANSFORM_SKEW = TRANSFORM_SKEW; 2997var STYLE_OPACITY = 'STYLE_OPACITY'; 2998exports.STYLE_OPACITY = STYLE_OPACITY; 2999var STYLE_SIZE = 'STYLE_SIZE'; 3000exports.STYLE_SIZE = STYLE_SIZE; 3001var STYLE_BOX_SHADOW = 'STYLE_BOX_SHADOW'; 3002exports.STYLE_BOX_SHADOW = STYLE_BOX_SHADOW; 3003var STYLE_FILTER = 'STYLE_FILTER'; 3004exports.STYLE_FILTER = STYLE_FILTER; 3005var STYLE_BACKGROUND_COLOR = 'STYLE_BACKGROUND_COLOR'; 3006exports.STYLE_BACKGROUND_COLOR = STYLE_BACKGROUND_COLOR; 3007var STYLE_BORDER = 'STYLE_BORDER'; 3008exports.STYLE_BORDER = STYLE_BORDER; 3009var STYLE_TEXT_COLOR = 'STYLE_TEXT_COLOR'; 3010exports.STYLE_TEXT_COLOR = STYLE_TEXT_COLOR; 3011var GENERAL_COMBO_CLASS = 'GENERAL_COMBO_CLASS'; 3012exports.GENERAL_COMBO_CLASS = GENERAL_COMBO_CLASS; 3013var GENERAL_DISPLAY = 'GENERAL_DISPLAY'; 3014exports.GENERAL_DISPLAY = GENERAL_DISPLAY; 3015var GENERAL_CONTINUOUS_ACTION = 'GENERAL_CONTINUOUS_ACTION'; 3016exports.GENERAL_CONTINUOUS_ACTION = GENERAL_CONTINUOUS_ACTION; 3017var GENERAL_START_ACTION = 'GENERAL_START_ACTION'; 3018exports.GENERAL_START_ACTION = GENERAL_START_ACTION; 3019var GENERAL_STOP_ACTION = 'GENERAL_STOP_ACTION'; 3020exports.GENERAL_STOP_ACTION = GENERAL_STOP_ACTION; 3021var GENERAL_LOOP = 'GENERAL_LOOP'; 3022exports.GENERAL_LOOP = GENERAL_LOOP; 3023var OBJECT_VALUE = 'OBJECT_VALUE'; 3024exports.OBJECT_VALUE = OBJECT_VALUE; 3025var FADE_EFFECT = 'FADE_EFFECT'; 3026exports.FADE_EFFECT = FADE_EFFECT; 3027var SLIDE_EFFECT = 'SLIDE_EFFECT'; 3028exports.SLIDE_EFFECT = SLIDE_EFFECT; 3029var BLUR_EFFECT = 'BLUR_EFFECT'; 3030exports.BLUR_EFFECT = BLUR_EFFECT; 3031var GROW_EFFECT = 'GROW_EFFECT'; 3032exports.GROW_EFFECT = GROW_EFFECT; 3033var GROW_BIG_EFFECT = 'GROW_BIG_EFFECT'; 3034exports.GROW_BIG_EFFECT = GROW_BIG_EFFECT; 3035var SHRINK_EFFECT = 'SHRINK_EFFECT'; 3036exports.SHRINK_EFFECT = SHRINK_EFFECT; 3037var SHRINK_BIG_EFFECT = 'SHRINK_BIG_EFFECT'; 3038exports.SHRINK_BIG_EFFECT = SHRINK_BIG_EFFECT; 3039var SPIN_EFFECT = 'SPIN_EFFECT'; 3040exports.SPIN_EFFECT = SPIN_EFFECT; 3041var FLY_EFFECT = 'FLY_EFFECT'; 3042exports.FLY_EFFECT = FLY_EFFECT; 3043var POP_EFFECT = 'POP_EFFECT'; 3044exports.POP_EFFECT = POP_EFFECT; 3045var FLIP_EFFECT = 'FLIP_EFFECT'; 3046exports.FLIP_EFFECT = FLIP_EFFECT; 3047var JIGGLE_EFFECT = 'JIGGLE_EFFECT'; 3048exports.JIGGLE_EFFECT = JIGGLE_EFFECT; 3049var PULSE_EFFECT = 'PULSE_EFFECT'; 3050exports.PULSE_EFFECT = PULSE_EFFECT; 3051var DROP_EFFECT = 'DROP_EFFECT'; 3052exports.DROP_EFFECT = DROP_EFFECT; 3053var BLINK_EFFECT = 'BLINK_EFFECT'; 3054exports.BLINK_EFFECT = BLINK_EFFECT; 3055var BOUNCE_EFFECT = 'BOUNCE_EFFECT'; 3056exports.BOUNCE_EFFECT = BOUNCE_EFFECT; 3057var FLIP_LEFT_TO_RIGHT_EFFECT = 'FLIP_LEFT_TO_RIGHT_EFFECT'; 3058exports.FLIP_LEFT_TO_RIGHT_EFFECT = FLIP_LEFT_TO_RIGHT_EFFECT; 3059var FLIP_RIGHT_TO_LEFT_EFFECT = 'FLIP_RIGHT_TO_LEFT_EFFECT'; 3060exports.FLIP_RIGHT_TO_LEFT_EFFECT = FLIP_RIGHT_TO_LEFT_EFFECT; 3061var RUBBER_BAND_EFFECT = 'RUBBER_BAND_EFFECT'; 3062exports.RUBBER_BAND_EFFECT = RUBBER_BAND_EFFECT; 3063var JELLO_EFFECT = 'JELLO_EFFECT'; 3064exports.JELLO_EFFECT = JELLO_EFFECT; 3065var PLUGIN_LOTTIE = 'PLUGIN_LOTTIE'; 3066exports.PLUGIN_LOTTIE = PLUGIN_LOTTIE; 3067 3068/***/ }), 3069/* 50 */ 3070/***/ (function(module, exports, __webpack_require__) { 3071 3072"use strict"; 3073 3074 3075Object.defineProperty(exports, "__esModule", { 3076 value: true 3077}); 3078exports.RENDER_PLUGIN = exports.RENDER_STYLE = exports.RENDER_GENERAL = exports.RENDER_TRANSFORM = exp
3078orts.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; 3079var IX2_ID_DELIMITER = '|'; 3080exports.IX2_ID_DELIMITER = IX2_ID_DELIMITER; 3081var WF_PAGE = 'data-wf-page'; 3082exports.WF_PAGE = WF_PAGE; 3083var W_MOD_JS = 'w-mod-js'; 3084exports.W_MOD_JS = W_MOD_JS; 3085var W_MOD_IX = 'w-mod-ix'; 3086exports.W_MOD_IX = W_MOD_IX; 3087var BOUNDARY_SELECTOR = '.w-dyn-item'; 3088exports.BOUNDARY_SELECTOR = BOUNDARY_SELECTOR; 3089var CONFIG_X_VALUE = 'xValue'; 3090exports.CONFIG_X_VALUE = CONFIG_X_VALUE; 3091var CONFIG_Y_VALUE = 'yValue'; 3092exports.CONFIG_Y_VALUE = CONFIG_Y_VALUE; 3093var CONFIG_Z_VALUE = 'zValue'; 3094exports.CONFIG_Z_VALUE = CONFIG_Z_VALUE; 3095var CONFIG_VALUE = 'value'; 3096exports.CONFIG_VALUE = CONFIG_VALUE; 3097var CONFIG_X_UNIT = 'xUnit'; 3098exports.CONFIG_X_UNIT = CONFIG_X_UNIT; 3099var CONFIG_Y_UNIT = 'yUnit'; 3100exports.CONFIG_Y_UNIT = CONFIG_Y_UNIT; 3101var CONFIG_Z_UNIT = 'zUnit'; 3102exports.CONFIG_Z_UNIT = CONFIG_Z_UNIT; 3103var CONFIG_UNIT = 'unit'; 3104exports.CONFIG_UNIT = CONFIG_UNIT; 3105var TRANSFORM = 'transform'; 3106exports.TRANSFORM = TRANSFORM; 3107var TRANSLATE_X = 'translateX'; 3108exports.TRANSLATE_X = TRANSLATE_X; 3109var TRANSLATE_Y = 'translateY'; 3110exports.TRANSLATE_Y = TRANSLATE_Y; 3111var TRANSLATE_Z = 'translateZ'; 3112exports.TRANSLATE_Z = TRANSLATE_Z; 3113var TRANSLATE_3D = 'translate3d'; 3114exports.TRANSLATE_3D = TRANSLATE_3D; 3115var SCALE_X = 'scaleX'; 3116exports.SCALE_X = SCALE_X; 3117var SCALE_Y = 'scaleY'; 3118exports.SCALE_Y = SCALE_Y; 3119var SCALE_Z = 'scaleZ'; 3120exports.SCALE_Z = SCALE_Z; 3121var SCALE_3D = 'scale3d'; 3122exports.SCALE_3D = SCALE_3D; 3123var ROTATE_X = 'rotateX'; 3124exports.ROTATE_X = ROTATE_X; 3125var ROTATE_Y = 'rotateY'; 3126exports.ROTATE_Y = ROTATE_Y; 3127var ROTATE_Z = 'rotateZ'; 3128exports.ROTATE_Z = ROTATE_Z; 3129var SKEW = 'skew'; 3130exports.SKEW = SKEW; 3131var SKEW_X = 'skewX'; 3132exports.SKEW_X = SKEW_X; 3133var SKEW_Y = 'skewY'; 3134exports.SKEW_Y = SKEW_Y; 3135var OPACITY = 'opacity'; 3136exports.OPACITY = OPACITY; 3137var FILTER = 'filter'; 3138exports.FILTER = FILTER; 3139var WIDTH = 'width'; 3140exports.WIDTH = WIDTH; 3141var HEIGHT = 'height'; 3142exports.HEIGHT = HEIGHT; 3143var BACKGROUND_COLOR = 'backgroundColor'; 3144exports.BACKGROUND_COLOR = BACKGROUND_COLOR; 3145var BACKGROUND = 'background'; 3146exports.BACKGROUND = BACKGROUND; 3147var BORDER_COLOR = 'borderColor'; 3148exports.BORDER_COLOR = BORDER_COLOR; 3149var COLOR = 'color'; 3150exports.COLOR = COLOR; 3151var DISPLAY = 'display'; 3152exports.DISPLAY = DISPLAY; 3153var FLEX = 'flex'; 3154exports.FLEX = FLEX; 3155var WILL_CHANGE = 'willChange'; 3156exports.WILL_CHANGE = WILL_CHANGE; 3157var AUTO = 'AUTO'; 3158exports.AUTO = AUTO; 3159var COMMA_DELIMITER = ','; 3160exports.COMMA_DELIMITER = COMMA_DELIMITER; 3161var COLON_DELIMITER = ':'; 3162exports.COLON_DELIMITER = COLON_DELIMITER; 3163var BAR_DELIMITER = '|'; 3164exports.BAR_DELIMITER = BAR_DELIMITER; 3165var CHILDREN = 'CHILDREN'; 3166exports.CHILDREN = CHILDREN; 3167var IMMEDIATE_CHILDREN = 'IMMEDIATE_CHILDREN'; 3168exports.IMMEDIATE_CHILDREN = IMMEDIATE_CHILDREN; 3169var SIBLINGS = 'SIBLINGS'; 3170exports.SIBLINGS = SIBLINGS; 3171var PARENT = 'PARENT'; 3172exports.PARENT = PARENT; 3173var PRESERVE_3D = 'preserve-3d'; 3174exports.PRESERVE_3D = PRESERVE_3D; 3175var HTML_ELEMENT = 'HTML_ELEMENT'; 3176exports.HTML_ELEMENT = HTML_ELEMENT; 3177var PLAIN_OBJECT = 'PLAIN_OBJECT'; 3178exports.PLAIN_OBJECT = PLAIN_OBJECT; 3179var ABSTRACT_NODE = 'ABSTRACT_NODE'; 3180exports.ABSTRACT_NODE = ABSTRACT_NODE; 3181var RENDER_TRANSFORM = 'RENDER_TRANSFORM'; 3182exports.RENDER_TRANSFORM = RENDER_TRANSFORM; 3183var RENDER_GENERAL = 'RENDER_GENERAL'; 3184exports.RENDER_GENERAL = RENDER_GENERAL; 3185var RENDER_STYLE = 'RENDER_STYLE'; 3186exports.RENDER_STYLE = RENDER_STYLE; 3187var RENDER_PLUGIN = 'RENDER_PLUGIN'; 3188exports.RENDER_PLUGIN = RENDER_PLUGIN; 3189 3190/***/ }), 3191/* 51 */ 3192/***/ (function(module, exports, __webpack_require__) { 3193 3194"use strict"; 3195 3196 3197var _interopRequireDefault = __webpack_require__(0); 3198 3199Object.defineProperty(exports, "__esModule", { 3200 value: true 3201}); 3202exports.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; 3203 3204var _objectSpread2 = _interopRequireDefault(__webpack_require__(26)); 3205 3206var _shared = __webpack_require__(3); 3207 3208var _shared$IX2EngineActi = _shared.IX2EngineActionTypes,
3209 IX2_RAW_DATA_IMPORTED = _shared$IX2EngineActi.IX2_RAW_DATA_IMPORTED, 3210 IX2_SESSION_INITIALIZED = _shared$IX2EngineActi.IX2_SESSION_INITIALIZED, 3211 IX2_SESSION_STARTED = _shared$IX2EngineActi.IX2_SESSION_STARTED, 3212 IX2_SESSION_STOPPED = _shared$IX2EngineActi.IX2_SESSION_STOPPED, 3213 IX2_PREVIEW_REQUESTED = _shared$IX2EngineActi.IX2_PREVIEW_REQUESTED, 3214 IX2_PLAYBACK_REQUESTED = _shared$IX2EngineActi.IX2_PLAYBACK_REQUESTED, 3215 IX2_STOP_REQUESTED = _shared$IX2EngineActi.IX2_STOP_REQUESTED, 3216 IX2_CLEAR_REQUESTED = _shared$IX2EngineActi.IX2_CLEAR_REQUESTED, 3217 IX2_EVENT_LISTENER_ADDED = _shared$IX2EngineActi.IX2_EVENT_LISTENER_ADDED, 3218 IX2_TEST_FRAME_RENDERED = _shared$IX2EngineActi.IX2_TEST_FRAME_RENDERED, 3219 IX2_EVENT_STATE_CHANGED = _shared$IX2EngineActi.IX2_EVENT_STATE_CHANGED, 3220 IX2_ANIMATION_FRAME_CHANGED = _shared$IX2EngineActi.IX2_ANIMATION_FRAME_CHANGED, 3221 IX2_PARAMETER_CHANGED = _shared$IX2EngineActi.IX2_PARAMETER_CHANGED, 3222 IX2_INSTANCE_ADDED = _shared$IX2EngineActi.IX2_INSTANCE_ADDED, 3223 IX2_INSTANCE_STARTED = _shared$IX2EngineActi.IX2_INSTANCE_STARTED, 3224 IX2_INSTANCE_REMOVED = _shared$IX2EngineActi.IX2_INSTANCE_REMOVED, 3225 IX2_ELEMENT_STATE_CHANGED = _shared$IX2EngineActi.IX2_ELEMENT_STATE_CHANGED, 3226 IX2_ACTION_LIST_PLAYBACK_CHANGED = _shared$IX2EngineActi.IX2_ACTION_LIST_PLAYBACK_CHANGED, 3227 IX2_VIEWPORT_WIDTH_CHANGED = _shared$IX2EngineActi.IX2_VIEWPORT_WIDTH_CHANGED, 3228 IX2_MEDIA_QUERIES_DEFINED = _shared$IX2EngineActi.IX2_MEDIA_QUERIES_DEFINED; 3229var GENERAL_START_ACTION = _shared.IX2EngineItemTypes.GENERAL_START_ACTION; 3230var reifyState = _shared.IX2VanillaUtils.reifyState; 3231 3232var rawDataImported = function rawDataImported(rawData) { 3233 return { 3234 type: IX2_RAW_DATA_IMPORTED, 3235 payload: (0, _objectSpread2["default"])({}, reifyState(rawData)) 3236 }; 3237}; 3238 3239exports.rawDataImported = rawDataImported; 3240 3241var sessionInitialized = function sessionInitialized(_ref) { 3242 var hasBoundaryNodes = _ref.hasBoundaryNodes; 3243 return { 3244 type: IX2_SESSION_INITIALIZED, 3245 payload: { 3246 hasBoundaryNodes: hasBoundaryNodes 3247 } 3248 }; 3249}; 3250 3251exports.sessionInitialized = sessionInitialized; 3252 3253var sessionStarted = function sessionStarted() { 3254 return { 3255 type: IX2_SESSION_STARTED, 3256 payload: {} 3257 }; 3258}; 3259 3260exports.sessionStarted = sessionStarted; 3261 3262var sessionStopped = function sessionStopped() { 3263 return { 3264 type: IX2_SESSION_STOPPED, 3265 payload: {} 3266 }; 3267}; 3268 3269exports.sessionStopped = sessionStopped; 3270 3271var previewRequested = function previewRequested(_ref2) { 3272 var rawData = _ref2.rawData; 3273 return { 3274 type: IX2_PREVIEW_REQUESTED, 3275 payload: { 3276 rawData: rawData 3277 } 3278 }; 3279}; 3280 3281exports.previewRequested = previewRequested; 3282 3283var playbackRequested = function playbackRequested(_ref3) { 3284 var _ref3$actionTypeId = _ref3.actionTypeId, 3285 actionTypeId = _ref3$actionTypeId === void 0 ? GENERAL_START_ACTION : _ref3$actionTypeId, 3286 actionListId = _ref3.actionListId, 3287 actionItemId = _ref3.actionItemId, 3288 eventId = _ref3.eventId, 3289 allowEvents = _ref3.allowEvents, 3290 immediate = _ref3.immediate, 3291 testManual = _ref3.testManual, 3292 verbose = _ref3.verbose, 3293 rawData = _ref3.rawData; 3294 return { 3295 type: IX2_PLAYBACK_REQUESTED, 3296 payload: { 3297 actionTypeId: actionTypeId, 3298 actionListId: actionListId, 3299 actionItemId: actionItemId, 3300 testManual: testManual, 3301 eventId: eventId, 3302 allowEvents: allowEvents, 3303 immediate: immediate, 3304 verbose: verbose, 3305 rawData: rawData 3306 } 3307 }; 3308}; 3309 3310exports.playbackRequested = playbackRequested; 3311 3312var stopRequested = function stopRequested(actionListId) { 3313 return { 3314 type: IX2_STOP_REQUESTED, 3315 payload: { 3316 actionListId: actionListId 3317 } 3318 }; 3319}; 3320 3321exports.stopRequested = stopRequested; 3322 3323var clearRequested = function clearRequested() { 3324 return { 3325 type: IX2_CLEAR_REQUESTED, 3326 payload: {} 3327 }; 3328}; 3329 3330exports.clearRequested = clearRequested; 3331 3332var eventListenerAdded = function eventListenerAdded(target, listenerParams) { 3333 return { 3334 type: IX2_EVENT_LISTENER_ADDED, 3335 payload: { 3336 target: target, 3337 listenerParams: listenerParams 3338 } 3339 }; 3340}; 3341 3342exports.eventListenerAdded = eventListenerAdded; 3343 3344var testFrameRendered = function testFrameRendered() { 3345 var step = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1; 3346 return { 3347 type: IX2_TEST_FRAME_RENDERED, 3348 payload: { 3349 step: step 3350 } 3351 }; 3352}; 3353 3354exports.testFrameRendered = testFrameRendered; 3355 3356var eventStateChanged = function eventStateChanged(stateKey, newState) { 3357 return { 3358 type: IX2_EVENT_STATE_CHANGED, 3359 payload: { 3360 stateKey: stateKey, 3361 newState: newState 3362 } 3363 }; 3364}; 3365 3366exports.eventStateChanged = eventStateChanged; 3367 3368var animationFrameChanged = function animationFrameChanged(now, parameters) { 3369 return { 3370 type: IX2_ANIMATION_FRAME_CHANGED, 3371 payload: { 3372 now: now, 3373 parameters: parameters 3374 } 3375 }; 3376}; 3377 3378exports.animationFrameChanged = animationFrameChanged; 3379 3380var parameterChanged = function parameterChanged(key, value) { 3381 return { 3382 type: IX2_PARAMETER_CHANGED, 3383 payload: { 3384 key: key, 3385 value: value 3386 } 3387 }; 3388}; 3389 3390exports.parameterChanged = parameterChanged; 3391 3392var instanceAdded = function instanceAdded(options) { 3393 return { 3394 type: IX2_INSTANCE_ADDED, 3395 payload: (0, _objectSpread2["default"])({}, options) 3396 }; 3397}; 3398 3399exports.instanceAdded = instanceAdded; 3400 3401var instanceStarted = function instanceStarted(instanceId, time) { 3402 return { 3403 type: IX2_INSTANCE_STARTED, 3404 payload: { 3405 instanceId: instanceId, 3406 time: time 3407 } 3408 }; 3409}; 3410 3411exports.instanceStarted = instanceStarted; 3412 3413var instanceRemoved = function instanceRemoved(instanceId) { 3414 return { 3415 type: IX2_INSTANCE_REMOVED, 3416 payload: { 3417 instanceId: instanceId 3418 } 3419 }; 3420}; 3421 3422exports.instanceRemoved = instanceRemoved; 3423 3424var elementStateChanged = function elementStateChanged(elementId, actionTypeId, current, actionItem) { 3425 return { 3426 type: IX2_ELEMENT_STATE_CHANGED, 3427 payload: { 3428 elementId: elementId, 3429 actionTypeId: actionTypeId, 3430 current: current, 3431 actionItem: actionItem 3432 } 3433 }; 3434}; 3435 3436exports.elementStateChanged = elementStateChanged; 3437 3438var actionListPlaybackChanged = function actionListPlaybackChanged(_ref4) { 3439 var actionListId = _ref4.actionListId, 3440 isPlaying = _ref4.isPlaying; 3441 return { 3442 type: IX2_ACTION_LIST_PLAYBACK_CHANGED, 3443 payload: { 3444 actionListId: actionListId, 3445 isPlaying: isPlaying 3446 } 3447 }; 3448}; 3449 3450exports.actionListPlaybackChanged = actionListPlaybackChanged; 3451 3452var viewportWidthChanged = function viewportWidthChanged(_ref5) { 3453 var width = _ref5.width, 3454 mediaQueries = _ref5.mediaQueries; 3455 return { 3456 type: IX2_VIEWPORT_WIDTH_CHANGED, 3457 payload: { 3458 width: width, 3459 mediaQueries: mediaQueries 3460 } 3461 }; 3462}; 3463 3464exports.viewportWidthChanged = viewportWidthChanged; 3465 3466var mediaQueriesDefined = function mediaQueriesDefined() { 3467 return { 3468 type: IX2_MEDIA_QUERIES_DEFINED, 3469 payload: {} 3470 }; 3471}; 3472 3473exports.mediaQueriesDefined = mediaQueriesDefined; 3474 3475/***/ }), 3476/* 52 */ 3477/***/ (function(module, exports, __webpack_require__) { 3478 3479var baseCreate = __webpack_require__(97), 3480 baseLodash = __webpack_require__(53); 3481 3482/** 3483 * The base constructor for creating `lodash` wrapper objects. 3484 * 3485 * @private 3486 * @param {*} value The value to wrap. 3487 * @param {boolean} [chainAll] Enable explicit method chain sequences. 3488 */ 3489function LodashWrapper(value, chainAll) { 3490 this.__wrapped__ = value; 3491 this.__actions__ = []; 3492 this.__chain__ = !!chainAll; 3493 this.__index__ = 0; 3494 this.__values__ = undefined; 3495} 3496
3497LodashWrapper.prototype = baseCreate(baseLodash.prototype); 3498LodashWrapper.prototype.constructor = LodashWrapper; 3499 3500module.exports = LodashWrapper; 3501 3502 3503/***/ }), 3504/* 53 */ 3505/***/ (function(module, exports) { 3506 3507/** 3508 * The function whose prototype chain sequence wrappers inherit from. 3509 * 3510 * @private 3511 */ 3512function baseLodash() { 3513 // No operation performed. 3514} 3515 3516module.exports = baseLodash; 3517 3518 3519/***/ }), 3520/* 54 */ 3521/***/ (function(module, exports, __webpack_require__) { 3522 3523var baseCreate = __webpack_require__(97), 3524 baseLodash = __webpack_require__(53); 3525 3526/** Used as references for the maximum length and index of an array. */ 3527var MAX_ARRAY_LENGTH = 4294967295; 3528 3529/** 3530 * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation. 3531 * 3532 * @private 3533 * @constructor 3534 * @param {*} value The value to wrap. 3535 */ 3536function LazyWrapper(value) { 3537 this.__wrapped__ = value; 3538 this.__actions__ = []; 3539 this.__dir__ = 1; 3540 this.__filtered__ = false; 3541 this.__iteratees__ = []; 3542 this.__takeCount__ = MAX_ARRAY_LENGTH; 3543 this.__views__ = []; 3544} 3545 3546// Ensure `LazyWrapper` is an instance of `baseLodash`. 3547LazyWrapper.prototype = baseCreate(baseLodash.prototype); 3548LazyWrapper.prototype.constructor = LazyWrapper; 3549 3550module.exports = LazyWrapper; 3551 3552 3553/***/ }), 3554/* 55 */ 3555/***/ (function(module, exports, __webpack_require__) { 3556 3557"use strict"; 3558 // @wf-will-never-add-flow-to-this-file 3559 3560/* eslint-disable */ 3561 3562/*! 3563 * tram.js v0.8.2-global 3564 * Cross-browser CSS3 transitions in JavaScript 3565 * https://github.com/bkwld/tram 3566 * MIT License 3567 */ 3568 3569/* prettier-ignore */ 3570 3571var _interopRequireDefault = __webpack_require__(0); 3572 3573var _typeof2 = _interopRequireDefault(__webpack_require__(15)); 3574 3575window.tram = function (a) { 3576 function b(a, b) { 3577 var c = new M.Bare(); 3578 return c.init(a, b); 3579 } 3580 3581 function c(a) { 3582 return a.replace(/[A-Z]/g, function (a) { 3583 return "-" + a.toLowerCase(); 3584 }); 3585 } 3586 3587 function d(a) { 3588 var b = parseInt(a.slice(1), 16), 3589 c = b >> 16 & 255, 3590 d = b >> 8 & 255, 3591 e = 255 & b; 3592 return [c, d, e]; 3593 } 3594 3595 function e(a, b, c) { 3596 return "#" + (1 << 24 | a << 16 | b << 8 | c).toString(16).slice(1); 3597 } 3598 3599 function f() {} 3600 3601 function g(a, b) { 3602 j("Type warning: Expected: [" + a + "] Got: [" + (0, _typeof2["default"])(b) + "] " + b); 3603 } 3604 3605 function h(a, b, c) { 3606 j("Units do not match [" + a + "]: " + b + ", " + c); 3607 } 3608 3609 function i(a, b, c) { 3610 if (void 0 !== b && (c = b), void 0 === a) return c; 3611 var d = c; 3612 return $.test(a) || !_.test(a) ? d = parseInt(a, 10) : _.test(a) && (d = 1e3 * parseFloat(a)), 0 > d && (d = 0), d === d ? d : c; 3613 } 3614 3615 function j(a) { 3616 U.debug && window && window.console.warn(a); 3617 } 3618 3619 function k(a) { 3620 for (var b = -1, c = a ? a.length : 0, d = []; ++b < c;) { 3621 var e = a[b]; 3622 e && d.push(e); 3623 } 3624 3625 return d; 3626 } 3627 3628 var l = function (a, b, c) { 3629 function d(a) { 3630 return "object" == (0, _typeof2["default"])(a); 3631 } 3632 3633 function e(a) { 3634 return "function" == typeof a; 3635 } 3636 3637 function f() {} 3638 3639 function g(h, i) { 3640 function j() { 3641 var a = new k(); 3642 return e(a.init) && a.init.apply(a, arguments), a; 3643 } 3644 3645 function k() {} 3646 3647 i === c && (i = h, h = Object), j.Bare = k; 3648 var l, 3649 m = f[a] = h[a], 3650 n = k[a] = j[a] = new f(); 3651 return n.constructor = j, j.mixin = function (b) { 3652 return k[a] = j[a] = g(j, b)[a], j; 3653 }, j.open = function (a) { 3654 if (l = {}, e(a) ? l = a.call(j, n, m, j, h) : d(a) && (l = a), d(l)) for (var c in l) { 3655 b.call(l, c) && (n[c] = l[c]); 3656 } 3657 return e(n.init) || (n.init = h), j; 3658 }, j.open(i); 3659 } 3660 3661 return g; 3662 }("prototype", {}.hasOwnProperty), 3663 m = { 3664 ease: ["ease", function (a, b, c, d) { 3665 var e = (a /= d) * a, 3666 f = e * a; 3667 return b + c * (-2.75 * f * e + 11 * e * e + -15.5 * f + 8 * e + .25 * a); 3668 }], 3669 "ease-in": ["ease-in", function (a, b, c, d) { 3670 var e = (a /= d) * a, 3671 f = e * a; 3672 return b + c * (-1 * f * e + 3 * e * e + -3 * f + 2 * e); 3673 }], 3674 "ease-out": ["ease-out", function (a, b, c, d) { 3675 var e = (a /= d) * a, 3676 f = e * a; 3677 return b + c * (.3 * f * e + -1.6 * e * e + 2.2 * f + -1.8 * e + 1.9 * a); 3678 }], 3679 "ease-in-out": ["ease-in-out", function (a, b, c, d) { 3680 var e = (a /= d) * a, 3681 f = e * a; 3682 return b + c * (2 * f * e + -5 * e * e + 2 * f + 2 * e); 3683 }], 3684 linear: ["linear", function (a, b, c, d) { 3685 return c * a / d + b; 3686 }], 3687 "ease-in-quad": ["cubic-bezier(0.550, 0.085, 0.680, 0.530)", function (a, b, c, d) { 3688 return c * (a /= d) * a + b; 3689 }], 3690 "ease-out-quad": ["cubic-bezier(0.250, 0.460, 0.450, 0.940)", function (a, b, c, d) { 3691 return -c * (a /= d) * (a - 2) + b; 3692 }], 3693 "ease-in-out-quad": ["cubic-bezier(0.455, 0.030, 0.515, 0.955)", function (a, b, c, d) { 3694 return (a /= d / 2) < 1 ? c / 2 * a * a + b : -c / 2 * (--a * (a - 2) - 1) + b; 3695 }], 3696 "ease-in-cubic": ["cubic-bezier(0.550, 0.055, 0.675, 0.190)", function (a, b, c, d) { 3697 return c * (a /= d) * a * a + b; 3698 }], 3699 "ease-out-cubic": ["cubic-bezier(0.215, 0.610, 0.355, 1)", function (a, b, c, d) { 3700 return c * ((a = a / d - 1) * a * a + 1) + b; 3701 }], 3702 "ease-in-out-cubic": ["cubic-bezier(0.645, 0.045, 0.355, 1)", function (a, b, c, d) { 3703 return (a /= d / 2) < 1 ? c / 2 * a * a * a + b : c / 2 * ((a -= 2) * a * a + 2) + b; 3704 }], 3705 "ease-in-quart": ["cubic-bezier(0.895, 0.030, 0.685, 0.220)", function (a, b, c, d) { 3706 return c * (a /= d) * a * a * a + b; 3707 }], 3708 "ease-out-quart": ["cubic-bezier(0.165, 0.840, 0.440, 1)", function (a, b, c, d) { 3709 return -c * ((a = a / d - 1) * a * a * a - 1) + b; 3710 }], 3711 "ease-in-out-quart": ["cubic-bezier(0.770, 0, 0.175, 1)", function (a, b, c, d) { 3712 return (a /= d / 2) < 1 ? c / 2 * a * a * a * a + b : -c / 2 * ((a -= 2) * a * a * a - 2) + b; 3713 }], 3714 "ease-in-quint": ["cubic-bezier(0.755, 0.050, 0.855, 0.060)", function (a, b, c, d) { 3715 return c * (a /= d) * a * a * a * a + b; 3716 }], 3717 "ease-out-quint": ["cubic-bezier(0.230, 1, 0.320, 1)", function (a, b, c, d) { 3718 return c * ((a = a / d - 1) * a * a * a * a + 1) + b; 3719 }], 3720 "ease-in-out-quint": ["cubic-bezier(0.860, 0, 0.070, 1)", function (a, b, c, d) { 3721 return (a /= d / 2) < 1 ? c / 2 * a * a * a * a * a + b : c / 2 * ((a -= 2) * a * a * a * a + 2) + b; 3722 }], 3723 "ease-in-sine": ["cubic-bezier(0.470, 0, 0.745, 0.715)", function (a, b, c, d) { 3724 return -c * Math.cos(a / d * (Math.PI / 2)) + c + b; 3725 }], 3726 "ease-out-sine": ["cubic-bezier(0.390, 0.575, 0.565, 1)", function (a, b, c, d) { 3727 return c * Math.sin(a / d * (Math.PI / 2)) + b; 3728 }], 3729 "ease-in-out-sine": ["cubic-bezier(0.445, 0.050, 0.550, 0.950)", function (a, b, c, d) { 3730 return -c / 2 * (Math.cos(Math.PI * a / d) - 1) + b; 3731 }], 3732 "ease-in-expo": ["cubic-bezier(0.950, 0.050, 0.795, 0.035)", function (a, b, c, d) { 3733 return 0 === a ? b : c * Math.pow(2, 10 * (a / d - 1)) + b; 3734 }], 3735 "ease-out-expo": ["cubic-bezier(0.190, 1, 0.220, 1)", function (a, b, c, d) { 3736 return a === d ? b + c : c * (-Math.pow(2, -10 * a / d) + 1) + b; 3737 }], 3738 "ease-in-out-expo": ["cubic-bezier(1, 0, 0, 1)", function (a, b, c, d) { 3739 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; 3740 }], 3741 "ease-in-circ": ["cubic-bezier(0.600, 0.040, 0.980, 0.335)", function (a, b, c, d) { 3742 return -c * (Math.sqrt(1 - (a /= d) * a) - 1) + b; 3743 }], 3744 "ease-out-circ": ["cubic-bezier(0.075, 0.820, 0.165, 1)", function (a, b, c, d) { 3745 return c * Math.sqrt(1 - (a = a / d - 1) * a) + b; 3746 }], 3747 "ease-in-out-circ": ["cubic-bezier(0.785, 0.135, 0.150, 0.860)", function (a, b, c, d) { 3748 return (a /= d / 2) < 1 ? -c / 2 * (Math.sqrt(1 - a * a) - 1) + b : c / 2 * (Math.sqrt(1 - (a -= 2) * a) + 1) + b; 3749 }], 3750 "ease-in-back": ["cubic-bezier(0.600, -0.280, 0.735, 0.045)", function (a, b, c, d, e) { 3751 return void 0 === e && (e = 1.70158), c * (a /= d) * a * ((e + 1) * a - e) + b; 3752 }], 3753 "ease-out-back": ["cubic-bezier(0.175, 0.885, 0.320, 1.275)", function (a, b, c, d, e) { 3754 return void 0 === e && (e = 1.70158), c * ((a = a / d - 1) * a * ((e + 1) * a + e) + 1) + b; 3755 }], 3756 "ease-in-out-back": ["cubic-bezier(0.680, -0.550, 0.265, 1.550)", function (a, b, c, d, e) { 3757 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; 3758 }] 3759 }, 3760 n = { 3761 "ease-in-back": "cubic-bezier(0.600, 0, 0.735, 0.045)", 3762 "ease-out-back": "cubic-bezier(0.175, 0.885, 0.320, 1)", 3763 "ease-in-out-back": "cubic-bezier(0.680, 0, 0.265, 1)" 3764 }, 3765 o = document, 3766 p = window, 3767 q = "bkwld-tram", 3768 r = /[\-\.0-9]/g, 3769 s = /[A-Z]/, 3770 t = "number", 3771 u = /^(rgb|#)/, 3772 v = /(em|cm|mm|in|pt|pc|px)$/, 3773 w = /(em|cm|mm|in|pt|pc|px|%)$/, 3774 x = /(deg|rad|turn)$/, 3775 y = "unitless", 3776 z = /(all|none) 0s ease 0s/, 3777 A = /^(width|height)$/, 3778 B = " ", 3779 C = o.createElement("a"), 3780 D = ["Webkit", "Moz", "O", "ms"], 3781 E = ["-webkit-", "-moz-", "-o-", "-ms-"], 3782 F = function F(a) { 3783 if (a in C.style) return { 3784 dom: a, 3785 css: a 3786 }; 3787 var b, 3788 c, 3789 d = "", 3790 e = a.split("-"); 3791 3792 for (b = 0; b < e.length; b++) { 3793 d += e[b].charAt(0).toUpperCase() + e[b].slice(1); 3794 } 3795 3796 for (b = 0; b < D.length; b++) { 3797 if (c = D[b] + d, c in C.style) return { 3798 dom: c, 3799 css: E[b] + a 3800 }; 3801 } 3802 }, 3803 G = b.support = { 3804 bind: Function.prototype.bind, 3805 transform: F("transform"), 3806 transition: F("transition"), 3807 backface: F("backface-visibility"), 3808 timing: F("transition-timing-function") 3809 }; 3810 3811 if (G.transition) { 3812 var H = G.timing.dom; 3813 if (C.style[H] = m["ease-in-back"][0], !C.style[H]) for (var I in n) { 3814 m[I][0] = n[I]; 3815 } 3816 } 3817 3818 var J = b.frame = function () { 3819 var a = p.requestAnimationFrame || p.webkitRequestAnimationFrame || p.mozRequestAnimationFrame || p.oRequestAnimationFrame || p.msRequestAnimationFrame; 3820 return a && G.bind ? a.bind(p) : function (a) { 3821 p.setTimeout(a, 16); 3822 }; 3823 }(), 3824 K = b.now = function () { 3825 var a = p.performance, 3826 b = a && (a.now || a.webkitNow || a.msNow || a.mozNow); 3827 return b && G.bind ? b.bind(a) : Date.now || function () { 3828 return +new Date(); 3829 }; 3830 }(), 3831 L = l(function (b) { 3832 function d(a, b) { 3833 var c = k(("" + a).split(B)), 3834 d = c[0]; 3835 b = b || {}; 3836 var e = Y[d]; 3837 if (!e) return j("Unsupported property: " + d); 3838 3839 if (!b.weak || !this.props[d]) { 3840 var f = e[0], 3841 g = this.props[d]; 3842 return g || (g = this.props[d] = new f.Bare()), g.init(this.$el, c, e, b), g; 3843 } 3844 } 3845 3846 function e(a, b, c) { 3847 if (a) { 3848 var e = (0, _typeof2["default"])(a); 3849 if (b || (this.timer && this.timer.destroy(), this.queue = [], this.active = !1), "number" == e && b) return this.timer = new S({ 3850 duration: a, 3851 context: this, 3852 complete: h 3853 }), void (this.active = !0); 3854 3855 if ("string" == e && b) { 3856 switch (a) { 3857 case "hide": 3858 o.call(this); 3859 break; 3860 3861 case "stop": 3862 l.call(this); 3863 break; 3864 3865 case "redraw": 3866 p.call(this); 3867 break; 3868 3869 default: 3870 d.call(this, a, c && c[1]); 3871 } 3872 3873 return h.call(this); 3874 } 3875 3876 if ("function" == e) return void a.call(this, this); 3877 3878 if ("object" == e) { 3879 var f = 0; 3880 u.call(this, a, function (a, b) { 3881 a.span > f && (f = a.span), a.stop(), a.animate(b); 3882 }, function (a) { 3883 "wait" in a && (f = i(a.wait, 0)); 3884 }), t.call(this), f > 0 && (this.timer = new S({ 3885 duration: f, 3886 context: this 3887 }), this.active = !0, b && (this.timer.complete = h)); 3888 var g = this, 3889 j = !1, 3890 k = {}; 3891 J(function () { 3892 u.call(g, a, function (a) { 3893 a.active && (j = !0, k[a.name] = a.nextStyle); 3894 }), j && g.$el.css(k); 3895 }); 3896 } 3897 } 3898 } 3899 3900 function f(a) { 3901 a = i(a, 0), this.active ? this.queue.push({ 3902 options: a 3903 }) : (this.timer = new S({ 3904 duration: a, 3905 context: this, 3906 complete: h 3907 }), this.active = !0); 3908 } 3909
3910 function g(a) { 3911 return this.active ? (this.queue.push({ 3912 options: a, 3913 args: arguments 3914 }), void (this.timer.complete = h)) : j("No active transition timer. Use start() or wait() before then()."); 3915 } 3916 3917 function h() { 3918 if (this.timer && this.timer.destroy(), this.active = !1, this.queue.length) { 3919 var a = this.queue.shift(); 3920 e.call(this, a.options, !0, a.args); 3921 } 3922 } 3923 3924 function l(a) { 3925 this.timer && this.timer.destroy(), this.queue = [], this.active = !1; 3926 var b; 3927 "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); 3928 } 3929 3930 function m(a) { 3931 l.call(this, a), u.call(this, a, w, x); 3932 } 3933 3934 function n(a) { 3935 "string" != typeof a && (a = "block"), this.el.style.display = a; 3936 } 3937 3938 function o() { 3939 l.call(this), this.el.style.display = "none"; 3940 } 3941 3942 function p() { 3943 this.el.offsetHeight; 3944 } 3945 3946 function r() { 3947 l.call(this), a.removeData(this.el, q), this.$el = this.el = null; 3948 } 3949 3950 function t() { 3951 var a, 3952 b, 3953 c = []; 3954 this.upstream && c.push(this.upstream); 3955 3956 for (a in this.props) { 3957 b = this.props[a], b.active && c.push(b.string); 3958 } 3959 3960 c = c.join(","), this.style !== c && (this.style = c, this.el.style[G.transition.dom] = c); 3961 } 3962 3963 function u(a, b, e) { 3964 var f, 3965 g, 3966 h, 3967 i, 3968 j = b !== v, 3969 k = {}; 3970 3971 for (f in a) { 3972 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)); 3973 } 3974 3975 for (f in k) { 3976 if (h = k[f], g = this.props[f], !g) { 3977 if (!j) continue; 3978 g = d.call(this, f); 3979 } 3980 3981 b.call(this, g, h); 3982 } 3983 3984 e && i && e.call(this, i); 3985 } 3986 3987 function v(a) { 3988 a.stop(); 3989 } 3990 3991 function w(a, b) { 3992 a.set(b); 3993 } 3994 3995 function x(a) { 3996 this.$el.css(a); 3997 } 3998 3999 function y(a, c) { 4000 b[a] = function () { 4001 return this.children ? A.call(this, c, arguments) : (this.el && c.apply(this, arguments), this); 4002 }; 4003 } 4004 4005 function A(a, b) { 4006 var c, 4007 d = this.children.length; 4008 4009 for (c = 0; d > c; c++) { 4010 a.apply(this.children[c], b); 4011 } 4012 4013 return this; 4014 } 4015 4016 b.init = function (b) { 4017 if (this.$el = a(b), this.el = this.$el[0], this.props = {}, this.queue = [], this.style = "", this.active = !1, U.keepInherited && !U.fallback) { 4018 var c = W(this.el, "transition"); 4019 c && !z.test(c) && (this.upstream = c); 4020 } 4021 4022 G.backface && U.hideBackface && V(this.el, G.backface.css, "hidden"); 4023 }, 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); 4024 }), 4025 M = l(L, function (b) { 4026 function c(b, c) { 4027 var d = a.data(b, q) || a.data(b, q, new L.Bare()); 4028 return d.el || d.init(b), c ? d.start(c) : d; 4029 } 4030 4031 b.init = function (b, d) { 4032 var e = a(b); 4033 if (!e.length) return this; 4034 if (1 === e.length) return c(e[0], d); 4035 var f = []; 4036 return e.each(function (a, b) { 4037 f.push(c(b, d)); 4038 }), this.children = f, this; 4039 }; 4040 }), 4041 N = l(function (a) { 4042 function b() { 4043 var a = this.get(); 4044 this.update("auto"); 4045 var b = this.get(); 4046 return this.update(a), b; 4047 } 4048 4049 function c(a, b, c) { 4050 return void 0 !== b && (c = b), a in m ? a : c; 4051 } 4052 4053 function d(a) { 4054 var b = /rgba?\((\d+),\s*(\d+),\s*(\d+)/.exec(a); 4055 return (b ? e(b[1], b[2], b[3]) : a).replace(/#(\w)(\w)(\w)$/, "#$1$1$2$2$3$3"); 4056 } 4057 4058 var f = { 4059 duration: 500, 4060 ease: "ease", 4061 delay: 0 4062 }; 4063 a.init = function (a, b, d, e) { 4064 this.$el = a, this.el = a[0]; 4065 var g = b[0]; 4066 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" : "")); 4067 }, a.set = function (a) { 4068 a = this.convert(a, this.type), this.update(a), this.redraw(); 4069 }, a.transition = function (a) { 4070 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; 4071 }, a.fallback = function (a) { 4072 var c = this.el.style[this.name] || this.convert(this.get(), this.type); 4073 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({ 4074 from: c, 4075 to: a, 4076 duration: this.duration, 4077 delay: this.delay, 4078 ease: this.ease, 4079 update: this.update, 4080 context: this 4081 }); 4082 }, a.get = function () { 4083 return W(this.el, this.name); 4084 }, a.update = function (a) { 4085 V(this.el, this.name, a); 4086 }, a.stop = function () { 4087 (this.active || this.nextStyle) && (this.active = !1, this.nextStyle = null, V(this.el, this.name, this.get())); 4088 var a = this.tween; 4089 a && a.context && a.destroy(); 4090 }, a.convert = function (a, b) { 4091 if ("auto" == a && this.auto) return a; 4092 var c, 4093 e = "number" == typeof a, 4094 f = "string" == typeof a; 4095 4096 switch (b) { 4097 case t: 4098 if (e) return a; 4099 if (f && "" === a.replace(r, "")) return +a; 4100 c = "number(unitless)"; 4101 break; 4102 4103 case u: 4104 if (f) { 4105 if ("" === a && this.original) return this.original; 4106 if (b.test(a)) return "#" == a.charAt(0) && 7 == a.length ? a : d(a); 4107 } 4108 4109 c = "hex or rgb string"; 4110 break; 4111 4112 case v: 4113 if (e) return a + this.unit; 4114 if (f && b.test(a)) return a; 4115 c = "number(px) or string(unit)"; 4116 break; 4117 4118 case w: 4119 if (e) return a + this.unit; 4120 if (f && b.test(a)) return a; 4121 c = "number(px) or string(unit or %)"; 4122 break; 4123 4124 case x: 4125 if (e) return a + this.angle; 4126 if (f && b.test(a)) return a; 4127 c = "number(deg) or string(angle)"; 4128 break; 4129 4130 case y: 4131 if (e) return a; 4132 if (f && w.test(a)) return a; 4133 c = "number(unitless) or string(unit or %)"; 4134 } 4135 4136 return g(c, a), a; 4137 }, a.redraw = function () { 4138 this.el.offsetHeight; 4139 }; 4140 }), 4141 O = l(N, function (a, b) { 4142 a.init = function () {
4143 b.init.apply(this, arguments), this.original || (this.original = this.convert(this.get(), u)); 4144 }; 4145 }), 4146 P = l(N, function (a, b) { 4147 a.init = function () { 4148 b.init.apply(this, arguments), this.animate = this.fallback; 4149 }, a.get = function () { 4150 return this.$el[this.name](); 4151 }, a.update = function (a) { 4152 this.$el[this.name](a); 4153 }; 4154 }), 4155 Q = l(N, function (a, b) { 4156 function c(a, b) { 4157 var c, d, e, f, g; 4158 4159 for (c in a) { 4160 f = Z[c], e = f[0], d = f[1] || c, g = this.convert(a[c], e), b.call(this, d, g, e); 4161 } 4162 } 4163 4164 a.init = function () { 4165 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())); 4166 }, a.set = function (a) { 4167 c.call(this, a, function (a, b) { 4168 this.current[a] = b; 4169 }), V(this.el, this.name, this.style(this.current)), this.redraw(); 4170 }, a.transition = function (a) { 4171 var b = this.values(a); 4172 this.tween = new T({ 4173 current: this.current, 4174 values: b, 4175 duration: this.duration, 4176 delay: this.delay, 4177 ease: this.ease 4178 }); 4179 var c, 4180 d = {}; 4181 4182 for (c in this.current) { 4183 d[c] = c in b ? b[c] : this.current[c]; 4184 } 4185 4186 this.active = !0, this.nextStyle = this.style(d); 4187 }, a.fallback = function (a) { 4188 var b = this.values(a); 4189 this.tween = new T({ 4190 current: this.current, 4191 values: b, 4192 duration: this.duration, 4193 delay: this.delay, 4194 ease: this.ease, 4195 update: this.update, 4196 context: this 4197 }); 4198 }, a.update = function () { 4199 V(this.el, this.name, this.style(this.current)); 4200 }, a.style = function (a) { 4201 var b, 4202 c = ""; 4203 4204 for (b in a) { 4205 c += b + "(" + a[b] + ") "; 4206 } 4207 4208 return c; 4209 }, a.values = function (a) { 4210 var b, 4211 d = {}; 4212 return c.call(this, a, function (a, c, e) { 4213 d[a] = c, void 0 === this.current[a] && (b = 0, ~a.indexOf("scale") && (b = 1), this.current[a] = this.convert(b, e)); 4214 }), d; 4215 }; 4216 }), 4217 R = l(function (b) { 4218 function c(a) { 4219 1 === n.push(a) && J(g); 4220 } 4221 4222 function g() { 4223 var a, 4224 b, 4225 c, 4226 d = n.length; 4227 if (d) for (J(g), b = K(), a = d; a--;) { 4228 c = n[a], c && c.render(b); 4229 } 4230 } 4231 4232 function i(b) { 4233 var c, 4234 d = a.inArray(b, n); 4235 d >= 0 && (c = n.slice(d + 1), n.length = d, c.length && (n = n.concat(c))); 4236 } 4237 4238 function j(a) { 4239 return Math.round(a * o) / o; 4240 } 4241 4242 function k(a, b, c) { 4243 return e(a[0] + c * (b[0] - a[0]), a[1] + c * (b[1] - a[1]), a[2] + c * (b[2] - a[2])); 4244 } 4245 4246 var l = { 4247 ease: m.ease[1], 4248 from: 0, 4249 to: 1 4250 }; 4251 b.init = function (a) { 4252 this.duration = a.duration || 0, this.delay = a.delay || 0; 4253 var b = a.ease || l.ease; 4254 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; 4255 var c = a.from, 4256 d = a.to; 4257 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(); 4258 }, b.play = function () { 4259 this.active || (this.start || (this.start = K()), this.active = !0, c(this)); 4260 }, b.stop = function () { 4261 this.active && (this.active = !1, i(this)); 4262 }, b.render = function (a) { 4263 var b, 4264 c = a - this.start; 4265 4266 if (this.delay) { 4267 if (c <= this.delay) return; 4268 c -= this.delay; 4269 } 4270 4271 if (c < this.duration) { 4272 var d = this.ease(c, 0, 1, this.duration); 4273 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); 4274 } 4275 4276 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(); 4277 }, b.format = function (a, b) { 4278 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); 4279 4280 if (!this.unit) { 4281 var c = b.replace(r, ""), 4282 e = a.replace(r, ""); 4283 c !== e && h("tween", b, a), this.unit = c; 4284 } 4285 4286 b = parseFloat(b), a = parseFloat(a), this.begin = this.value = b, this.change = a - b; 4287 }, b.destroy = function () { 4288 this.stop(), this.context = null, this.ease = this.update = this.complete = f; 4289 }; 4290 var n = [], 4291 o = 1e3; 4292 }),
4293 S = l(R, function (a) { 4294 a.init = function (a) { 4295 this.duration = a.duration || 0, this.complete = a.complete || f, this.context = a.context, this.play(); 4296 }, a.render = function (a) { 4297 var b = a - this.start; 4298 b < this.duration || (this.complete.call(this.context), this.destroy()); 4299 }; 4300 }), 4301 T = l(R, function (a, b) { 4302 a.init = function (a) { 4303 this.context = a.context, this.update = a.update, this.tweens = [], this.current = a.current; 4304 var b, c; 4305 4306 for (b in a.values) { 4307 c = a.values[b], this.current[b] !== c && this.tweens.push(new R({ 4308 name: b, 4309 from: this.current[b], 4310 to: c, 4311 duration: a.duration, 4312 delay: a.delay, 4313 ease: a.ease, 4314 autoplay: !1 4315 })); 4316 } 4317 4318 this.play(); 4319 }, a.render = function (a) { 4320 var b, 4321 c, 4322 d = this.tweens.length, 4323 e = !1; 4324 4325 for (b = d; b--;) { 4326 c = this.tweens[b], c.context && (c.render(a), this.current[c.name] = c.value, e = !0); 4327 } 4328 4329 return e ? void (this.update && this.update.call(this.context)) : this.destroy(); 4330 }, a.destroy = function () { 4331 if (b.destroy.call(this), this.tweens) { 4332 var a, 4333 c = this.tweens.length; 4334 4335 for (a = c; a--;) { 4336 this.tweens[a].destroy(); 4337 } 4338 4339 this.tweens = null, this.current = null; 4340 } 4341 }; 4342 }), 4343 U = b.config = { 4344 debug: !1, 4345 defaultUnit: "px", 4346 defaultAngle: "deg", 4347 keepInherited: !1, 4348 hideBackface: !1, 4349 perspective: "", 4350 fallback: !G.transition, 4351 agentTests: [] 4352 }; 4353 4354 b.fallback = function (a) { 4355 if (!G.transition) return U.fallback = !0; 4356 U.agentTests.push("(" + a + ")"); 4357 var b = new RegExp(U.agentTests.join("|"), "i"); 4358 U.fallback = b.test(navigator.userAgent); 4359 }, b.fallback("6.0.[2-5] Safari"), b.tween = function (a) { 4360 return new R(a); 4361 }, b.delay = function (a, b, c) { 4362 return new S({ 4363 complete: b, 4364 duration: a, 4365 context: c 4366 }); 4367 }, a.fn.tram = function (a) { 4368 return b.call(null, this, a); 4369 }; 4370 var V = a.style, 4371 W = a.css, 4372 X = { 4373 transform: G.transform && G.transform.css 4374 }, 4375 Y = { 4376 color: [O, u], 4377 background: [O, u, "background-color"], 4378 "outline-color": [O, u], 4379 "border-color": [O, u], 4380 "border-top-color": [O, u], 4381 "border-right-color": [O, u], 4382 "border-bottom-color": [O, u], 4383 "border-left-color": [O, u], 4384 "border-width": [N, v], 4385 "border-top-width": [N, v], 4386 "border-right-width": [N, v], 4387 "border-bottom-width": [N, v], 4388 "border-left-width": [N, v], 4389 "border-spacing": [N, v], 4390 "letter-spacing": [N, v], 4391 margin: [N, v], 4392 "margin-top": [N, v], 4393 "margin-right": [N, v], 4394 "margin-bottom": [N, v], 4395 "margin-left": [N, v], 4396 padding: [N, v], 4397 "padding-top": [N, v], 4398 "padding-right": [N, v], 4399 "padding-bottom": [N, v], 4400 "padding-left": [N, v], 4401 "outline-width": [N, v], 4402 opacity: [N, t], 4403 top: [N, w], 4404 right: [N, w], 4405 bottom: [N, w], 4406 left: [N, w], 4407 "font-size": [N, w], 4408 "text-indent": [N, w], 4409 "word-spacing": [N, w], 4410 width: [N, w], 4411 "min-width": [N, w], 4412 "max-width": [N, w], 4413 height: [N, w], 4414 "min-height": [N, w], 4415 "max-height": [N, w], 4416 "line-height": [N, y], 4417 "scroll-top": [P, t, "scrollTop"], 4418 "scroll-left": [P, t, "scrollLeft"] 4419 }, 4420 Z = {}; 4421 G.transform && (Y.transform = [Q], Z = { 4422 x: [w, "translateX"], 4423 y: [w, "translateY"], 4424 rotate: [x], 4425 rotateX: [x], 4426 rotateY: [x], 4427 scale: [t], 4428 scaleX: [t], 4429 scaleY: [t], 4430 skew: [x], 4431 skewX: [x], 4432 skewY: [x] 4433 }), G.transform && G.backface && (Z.z = [w, "translateZ"], Z.rotateZ = [x], Z.scaleZ = [t], Z.perspective = [v]); 4434 var $ = /ms/, 4435 _ = /s|\./; 4436 return a.tram = b; 4437}(window.jQuery); 4438 4439/***/ }), 4440/* 56 */ 4441/***/ (function(module, __webpack_exports__, __webpack_require__) { 4442 4443"use strict"; 4444__webpack_require__.r(__webpack_exports__); 4445/* harmony import */ var _createStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(29); 4446/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "createStore", function() { return _createStore__WEBPACK_IMPORTED_MODULE_0__["default"]; }); 4447 4448/* harmony import */ var _combineReducers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(59); 4449/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineReducers", function() { return _combineReducers__WEBPACK_IMPORTED_MODULE_1__["default"]; }); 4450 4451/* harmony import */ var _bindActionCreators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(61); 4452/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bindActionCreators", function() { return _bindActionCreators__WEBPACK_IMPORTED_MODULE_2__["default"]; }); 4453 4454/* harmony import */ var _applyMiddleware__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(62); 4455/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "applyMiddleware", function() { return _applyMiddleware__WEBPACK_IMPORTED_MODULE_3__["default"]; }); 4456 4457/* harmony import */ var _compose__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(31); 4458/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "compose", function() { return _compose__WEBPACK_IMPORTED_MODULE_4__["default"]; }); 4459 4460/* harmony import */ var _utils_warning__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(60); 4461 4462 4463 4464 4465 4466 4467 4468/* 4469* This is a dummy function to check if the function name has been altered by minification. 4470* If the function has been minified and NODE_ENV !== 'production', warn the user. 4471*/ 4472function isCrushed() {} 4473 4474if (false) {} 4475 4476 4477 4478/***/ }), 4479/* 57 */ 4480/***/ (function(module, __webpack_exports__, __webpack_require__) { 4481 4482"use strict"; 4483__webpack_require__.r(__webpack_exports__); 4484/* harmony import */ var _baseGetTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(106); 4485/* harmony import */ var _getPrototype_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(111); 4486/* harmony import */ var _isObjectLike_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(113); 4487 4488 4489 4490 4491/** `Object#toString` result references. */ 4492var objectTag = '[object Object]'; 4493 4494/** Used for built-in method references. */ 4495var funcProto = Function.prototype, 4496 objectProto = Object.prototype; 4497 4498/** Used to resolve the decompiled source of functions. */ 4499var funcToString = funcProto.toString; 4500 4501/** Used to check objects for own properties. */ 4502var hasOwnProperty = objectProto.hasOwnProperty; 4503 4504/** Used to infer the `Object` constructor. */
4505var objectCtorString = funcToString.call(Object); 4506 4507/** 4508 * Checks if `value` is a plain object, that is, an object created by the 4509 * `Object` constructor or one with a `[[Prototype]]` of `null`. 4510 * 4511 * @static 4512 * @memberOf _ 4513 * @since 0.8.0 4514 * @category Lang 4515 * @param {*} value The value to check. 4516 * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. 4517 * @example 4518 * 4519 * function Foo() { 4520 * this.a = 1; 4521 * } 4522 * 4523 * _.isPlainObject(new Foo); 4524 * // => false 4525 * 4526 * _.isPlainObject([1, 2, 3]); 4527 * // => false 4528 * 4529 * _.isPlainObject({ 'x': 0, 'y': 0 }); 4530 * // => true 4531 * 4532 * _.isPlainObject(Object.create(null)); 4533 * // => true 4534 */ 4535function isPlainObject(value) { 4536 if (!Object(_isObjectLike_js__WEBPACK_IMPORTED_MODULE_2__["default"])(value) || Object(_baseGetTag_js__WEBPACK_IMPORTED_MODULE_0__["default"])(value) != objectTag) { 4537 return false; 4538 } 4539 var proto = Object(_getPrototype_js__WEBPACK_IMPORTED_MODULE_1__["default"])(value); 4540 if (proto === null) { 4541 return true; 4542 } 4543 var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; 4544 return typeof Ctor == 'function' && Ctor instanceof Ctor && 4545 funcToString.call(Ctor) == objectCtorString; 4546} 4547 4548/* harmony default export */ __webpack_exports__["default"] = (isPlainObject); 4549 4550 4551/***/ }), 4552/* 58 */ 4553/***/ (function(module, __webpack_exports__, __webpack_require__) { 4554 4555"use strict"; 4556__webpack_require__.r(__webpack_exports__); 4557/* harmony import */ var _root_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(107); 4558 4559 4560/** Built-in value references. */ 4561var Symbol = _root_js__WEBPACK_IMPORTED_MODULE_0__["default"].Symbol; 4562 4563/* harmony default export */ __webpack_exports__["default"] = (Symbol); 4564 4565 4566/***/ }), 4567/* 59 */ 4568/***/ (function(module, __webpack_exports__, __webpack_require__) { 4569 4570"use strict"; 4571__webpack_require__.r(__webpack_exports__); 4572/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return combineReducers; }); 4573/* harmony import */ var _createStore__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(29); 4574/* harmony import */ var lodash_es_isPlainObject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(57); 4575/* harmony import */ var _utils_warning__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(60); 4576 4577 4578 4579 4580function getUndefinedStateErrorMessage(key, action) { 4581 var actionType = action && action.type; 4582 var actionName = actionType && '"' + actionType.toString() + '"' || 'an action'; 4583 4584 return 'Given action ' + actionName + ', reducer "' + key + '" returned undefined. ' + 'To ignore an action, you must explicitly return the previous state.'; 4585} 4586 4587function getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unex
4587pectedKeyCache) { 4588 var reducerKeys = Object.keys(reducers); 4589 var argumentName = action && action.type === _createStore__WEBPACK_IMPORTED_MODULE_0__["ActionTypes"].INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer'; 4590 4591 if (reducerKeys.length === 0) { 4592 return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.'; 4593 } 4594 4595 if (!Object(lodash_es_isPlainObject__WEBPACK_IMPORTED_MODULE_1__["default"])(inputState)) { 4596 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('", "') + '"'); 4597 } 4598 4599 var unexpectedKeys = Object.keys(inputState).filter(function (key) { 4600 return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key]; 4601 }); 4602 4603 unexpectedKeys.forEach(function (key) { 4604 unexpectedKeyCache[key] = true; 4605 }); 4606 4607 if (unexpectedKeys.length > 0) { 4608 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.'); 4609 } 4610} 4611 4612function assertReducerSanity(reducers) { 4613 Object.keys(reducers).forEach(function (key) { 4614 var reducer = reducers[key]; 4615 var initialState = reducer(undefined, { type: _createStore__WEBPACK_IMPORTED_MODULE_0__["ActionTypes"].INIT }); 4616 4617 if (typeof initialState === 'undefined') { 4618 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.'); 4619 } 4620 4621 var type = '@@redux/PROBE_UNKNOWN_ACTION_' + Math.random().toString(36).substring(7).split('').join('.'); 4622 if (typeof reducer(undefined, { type: type }) === 'undefined') { 4623 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.'); 4624 } 4625 }); 4626} 4627 4628/** 4629 * Turns an object whose values are different reducer functions, into a single 4630 * reducer function. It will call every child reducer, and gather their results 4631 * into a single state object, whose keys correspond to the keys of the passed 4632 * reducer functions. 4633 * 4634 * @param {Object} reducers An object whose values correspond to different 4635 * reducer functions that need to be combined into one. One handy way to obtain 4636 * it is to use ES6 `import * as reducers` syntax. The reducers may never return 4637 * undefined for any action. Instead, they should return their initial state 4638 * if the state passed to them was undefined, and the current state for any 4639 * unrecognized action. 4640 * 4641 * @returns {Function} A reducer function that invokes every reducer inside the 4642 * passed object, and builds a state object with the same shape. 4643 */ 4644function combineReducers(reducers) { 4645 var reducerKeys = Object.keys(reducers); 4646 var finalReducers = {}; 4647 for (var i = 0; i < reducerKeys.length; i++) { 4648 var key = reducerKeys[i]; 4649 4650 if (false) {} 4651 4652 if (typeof reducers[key] === 'function') { 4653 finalReducers[key] = reducers[key]; 4654 } 4655 } 4656 var finalReducerKeys = Object.keys(finalReducers); 4657 4658 if (false) { var unexpectedKeyCache; } 4659 4660 var sanityError; 4661 try { 4662 assertReducerSanity(finalReducers); 4663 } catch (e) { 4664 sanityError = e; 4665 } 4666 4667 return function combination() { 4668 var state = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; 4669 var action = arguments[1]; 4670 4671 if (sanityError) { 4672 throw sanityError; 4673 } 4674 4675 if (false) { var warningMessage; } 4676 4677 var hasChanged = false;
4678 var nextState = {}; 4679 for (var i = 0; i < finalReducerKeys.length; i++) { 4680 var key = finalReducerKeys[i]; 4681 var reducer = finalReducers[key]; 4682 var previousStateForKey = state[key]; 4683 var nextStateForKey = reducer(previousStateForKey, action); 4684 if (typeof nextStateForKey === 'undefined') { 4685 var errorMessage = getUndefinedStateErrorMessage(key, action); 4686 throw new Error(errorMessage); 4687 } 4688 nextState[key] = nextStateForKey; 4689 hasChanged = hasChanged || nextStateForKey !== previousStateForKey; 4690 } 4691 return hasChanged ? nextState : state; 4692 }; 4693} 4694 4695/***/ }), 4696/* 60 */ 4697/***/ (function(module, __webpack_exports__, __webpack_require__) { 4698 4699"use strict"; 4700__webpack_require__.r(__webpack_exports__); 4701/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return warning; }); 4702/** 4703 * Prints a warning in the console if it exists. 4704 * 4705 * @param {String} message The warning message. 4706 * @returns {void} 4707 */ 4708function warning(message) { 4709 /* eslint-disable no-console */ 4710 if (typeof console !== 'undefined' && typeof console.error === 'function') { 4711 console.error(message); 4712 } 4713 /* eslint-enable no-console */ 4714 try { 4715 // This error was thrown as a convenience so that if you enable 4716 // "break on all exceptions" in your console, 4717 // it would pause the execution at this line. 4718 throw new Error(message); 4719 /* eslint-disable no-empty */ 4720 } catch (e) {} 4721 /* eslint-enable no-empty */ 4722} 4723 4724/***/ }), 4725/* 61 */ 4726/***/ (function(module, __webpack_exports__, __webpack_require__) { 4727 4728"use strict"; 4729__webpack_require__.r(__webpack_exports__); 4730/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return bindActionCreators; }); 4731function bindActionCreator(actionCreator, dispatch) { 4732 return function () { 4733 return dispatch(actionCreator.apply(undefined, arguments)); 4734 }; 4735} 4736 4737/** 4738 * Turns an object whose values are action creators, into an object with the 4739 * same keys, but with every function wrapped into a `dispatch` call so they 4740 * may be invoked directly. This is just a convenience method, as you can call 4741 * `store.dispatch(MyActionCreators.doSomething())` yourself just fine. 4742 * 4743 * For convenience, you can also pass a single function as the first argument, 4744 * and get a function in return. 4745 * 4746 * @param {Function|Object} actionCreators An object whose values are action 4747 * creator functions. One handy way to obtain it is to use ES6 `import * as` 4748 * syntax. You may also pass a single function. 4749 * 4750 * @param {Function} dispatch The `dispatch` function available on your Redux 4751 * store. 4752 * 4753 * @returns {Function|Object} The object mimicking the original object, but with 4754 * every action creator wrapped into the `dispatch` call. If you passed a 4755 * function as `actionCreators`, the return value will also be a single 4756 * function. 4757 */ 4758function bindActionCreators(actionCreators, dispatch) { 4759 if (typeof actionCreators === 'function') { 4760 return bindActionCreator(actionCreators, dispatch); 4761 } 4762 4763 if (typeof actionCreators !== 'object' || actionCreators === null) { 4764 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"?'); 4765 } 4766 4767 var keys = Object.keys(actionCreators); 4768 var boundActionCreators = {}; 4769 for (var i = 0; i < keys.length; i++) { 4770 var key = keys[i]; 4771 var actionCreator = actionCreators[key]; 4772 if (typeof actionCreator === 'function') { 4773 boundActionCreators[key] = bindActionCreator(actionCreator, dispatch); 4774 } 4775 } 4776 return boundActionCreators; 4777} 4778 4779/***/ }), 4780/* 62 */ 4781/***/ (function(module, __webpack_exports__, __webpack_require__) { 4782 4783"use strict"; 4784__webpack_require__.r(__webpack_exports__); 4785/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return applyMiddleware; }); 4786/* harmony import */ var _compose__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(31); 4787var _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; }; 4788 4789 4790 4791/** 4792 * Creates a store enhancer that applies middleware to the dispatch method 4793 * of the Redux store. This is handy for a variety of tasks, such as expressing 4794 * asynchronous actions in a concise manner, or logging every action payload. 4795 * 4796 * See `redux-thunk` package as an example of the Redux middleware. 4797 * 4798 * Because middleware is potentially asynchronous, this should be the first 4799 * store enhancer in the composition chain. 4800 *
4801 * Note that each middleware will be given the `dispatch` and `getState` functions 4802 * as named arguments. 4803 * 4804 * @param {...Function} middlewares The middleware chain to be applied. 4805 * @returns {Function} A store enhancer applying the middleware. 4806 */ 4807function applyMiddleware() { 4808 for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) { 4809 middlewares[_key] = arguments[_key]; 4810 } 4811 4812 return function (createStore) { 4813 return function (reducer, preloadedState, enhancer) { 4814 var store = createStore(reducer, preloadedState, enhancer); 4815 var _dispatch = store.dispatch; 4816 var chain = []; 4817 4818 var middlewareAPI = { 4819 getState: store.getState, 4820 dispatch: function dispatch(action) { 4821 return _dispatch(action); 4822 } 4823 }; 4824 chain = middlewares.map(function (middleware) { 4825 return middleware(middlewareAPI); 4826 }); 4827 _dispatch = _compose__WEBPACK_IMPORTED_MODULE_0__["default"].apply(undefined, chain)(store.dispatch); 4828 4829 return _extends({}, store, { 4830 dispatch: _dispatch 4831 }); 4832 }; 4833 }; 4834} 4835 4836/***/ }), 4837/* 63 */ 4838/***/ (function(module, exports, __webpack_require__) { 4839 4840var createFind = __webpack_require__(64), 4841 findIndex = __webpack_require__(182); 4842 4843/** 4844 * Iterates over elements of `collection`, returning the first element 4845 * `predicate` returns truthy for. The predicate is invoked with three 4846 * arguments: (value, index|key, collection). 4847 * 4848 * @static 4849 * @memberOf _ 4850 * @since 0.1.0 4851 * @category Collection 4852 * @param {Array|Object} collection The collection to inspect. 4853 * @param {Function} [predicate=_.identity] The function invoked per iteration. 4854 * @param {number} [fromIndex=0] The index to search from. 4855 * @returns {*} Returns the matched element, else `undefined`. 4856 * @example 4857 * 4858 * var users = [ 4859 * { 'user': 'barney', 'age': 36, 'active': true }, 4860 * { 'user': 'fred', 'age': 40, 'active': false }, 4861 * { 'user': 'pebbles', 'age': 1, 'active': true } 4862 * ]; 4863 * 4864 * _.find(users, function(o) { return o.age < 40; }); 4865 * // => object for 'barney' 4866 * 4867 * // The `_.matches` iteratee shorthand. 4868 * _.find(users, { 'age': 1, 'active': true }); 4869 * // => object for 'pebbles' 4870 * 4871 * // The `_.matchesProperty` iteratee shorthand. 4872 * _.find(users, ['active', false]); 4873 * // => object for 'fred' 4874 * 4875 * // The `_.property` iteratee shorthand. 4876 * _.find(users, 'active'); 4877 * // => object for 'barney' 4878 */ 4879var find = createFind(findIndex); 4880 4881module.exports = find; 4882 4883 4884/***/ }), 4885/* 64 */ 4886/***/ (function(module, exports, __webpack_require__) { 4887 4888var baseIteratee = __webpack_require__(6), 4889 isArrayLike = __webpack_require__(10), 4890 keys = __webpack_require__(21); 4891 4892/** 4893 * Creates a `_.find` or `_.findLast` function. 4894 * 4895 * @private 4896 * @param {Function} findIndexFunc The function to find the collection index. 4897 * @returns {Function} Returns the new find function. 4898 */ 4899function createFind(findIndexFunc) { 4900 return function(collection, predicate, fromIndex) { 4901 var iterable = Object(collection); 4902 if (!isArrayLike(collection)) { 4903 var iteratee = baseIteratee(predicate, 3); 4904 collection = keys(collection); 4905 predicate = function(key) { return iteratee(iterable[key], key, iterable); }; 4906 } 4907 var index = findIndexFunc(collection, predicate, fromIndex); 4908 return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined; 4909 }; 4910} 4911 4912module.exports = createFind; 4913 4914 4915/***/ }), 4916/* 65 */ 4917/***/ (function(module, exports, __webpack_require__) { 4918 4919var ListCache = __webpack_require__(17), 4920 stackClear = __webpack_require__(126), 4921 stackDelete = __webpack_require__(127), 4922 stackGet = __webpack_require__(128), 4923 stackHas = __webpack_require__(129), 4924 stackSet = __webpack_require__(130); 4925 4926/** 4927 * Creates a stack cache object to store key-value pairs. 4928 * 4929 * @private 4930 * @constructor 4931 * @param {Array} [entries] The key-value pairs to cache. 4932 */ 4933function Stack(entries) { 4934 var data = this.__data__ = new ListCache(entries); 4935 this.size = data.size; 4936} 4937 4938// Add methods to `Stack`. 4939Stack.prototype.clear = stackClear; 4940Stack.prototype['delete'] = stackDelete; 4941Stack.prototype.get = stackGet;
vendor: 3,423 bytes, lines 4942-5074
4942Stack.prototype.has = stackHas; 4943Stack.prototype.set = stackSet; 4944 4945module.exports = Stack; 4946 4947 4948/***/ }), 4949/* 66 */ 4950/***/ (function(module, exports, __webpack_require__) { 4951 4952var baseGetTag = __webpack_require__(9), 4953 isObject = __webpack_require__(5); 4954 4955/** `Object#toString` result references. */ 4956var asyncTag = '[object AsyncFunction]', 4957 funcTag = '[object Function]', 4958 genTag = '[object GeneratorFunction]', 4959 proxyTag = '[object Proxy]'; 4960 4961/** 4962 * Checks if `value` is classified as a `Function` object. 4963 * 4964 * @static 4965 * @memberOf _ 4966 * @since 0.1.0 4967 * @category Lang 4968 * @param {*} value The value to check. 4969 * @returns {boolean} Returns `true` if `value` is a function, else `false`. 4970 * @example 4971 * 4972 * _.isFunction(_); 4973 * // => true 4974 * 4975 * _.isFunction(/abc/); 4976 * // => false 4977 */ 4978function isFunction(value) { 4979 if (!isObject(value)) { 4980 return false; 4981 } 4982 // The use of `Object#toString` avoids issues with the `typeof` operator 4983 // in Safari 9 which returns 'object' for typed arrays and other constructors. 4984 var tag = baseGetTag(value); 4985 return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; 4986} 4987 4988module.exports = isFunction; 4989 4990 4991/***/ }), 4992/* 67 */ 4993/***/ (function(module, exports, __webpack_require__) { 4994 4995/* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */ 4996var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; 4997 4998module.exports = freeGlobal; 4999 5000/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(30))) 5001 5002/***/ }), 5003/* 68 */ 5004/***/ (function(module, exports) { 5005 5006/** Used for built-in method references. */ 5007var funcProto = Function.prototype; 5008 5009/** Used to resolve the decompiled source of functions. */ 5010var funcToString = funcProto.toString; 5011 5012/** 5013 * Converts `func` to its source code. 5014 * 5015 * @private 5016 * @param {Function} func The function to convert. 5017 * @returns {string} Returns the source code. 5018 */ 5019function toSource(func) { 5020 if (func != null) { 5021 try { 5022 return funcToString.call(func); 5023 } catch (e) {} 5024 try { 5025 return (func + ''); 5026 } catch (e) {} 5027 } 5028 return ''; 5029} 5030 5031module.exports = toSource; 5032 5033 5034/***/ }), 5035/* 69 */ 5036/***/ (function(module, exports, __webpack_require__) { 5037 5038var baseIsEqualDeep = __webpack_require__(149), 5039 isObjectLike = __webpack_require__(8); 5040 5041/** 5042 * The base implementation of `_.isEqual` which supports partial comparisons 5043 * and tracks traversed objects. 5044 * 5045 * @private 5046 * @param {*} value The value to compare. 5047 * @param {*} other The other value to compare. 5048 * @param {boolean} bitmask The bitmask flags. 5049 * 1 - Unordered comparison 5050 * 2 - Partial comparison 5051 * @param {Function} [customizer] The function to customize comparisons. 5052 * @param {Object} [stack] Tracks traversed `value` and `other` objects. 5053 * @returns {boolean} Returns `true` if the values are equivalent, else `false`. 5054 */ 5055function baseIsEqual(value, other, bitmask, customizer, stack) { 5056 if (value === other) { 5057 return true; 5058 } 5059 if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) { 5060 return value !== value && other !== other; 5061 } 5062 return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); 5063} 5064 5065module.exports = baseIsEqual; 5066 5067 5068/***/ }), 5069/* 70 */ 5070/***/ (function(module, exports, __webpack_require__) { 5071 5072var SetCache = __webpack_require__(150), 5073 arraySome = __webpack_require__(153), 5074 cacheHas = __webpack_require__(154
vendor: 2,480 bytes, lines 5074-5155
5074); 5075 5076/** Used to compose bitmasks for value comparisons. */ 5077var COMPARE_PARTIAL_FLAG = 1, 5078 COMPARE_UNORDERED_FLAG = 2; 5079 5080/** 5081 * A specialized version of `baseIsEqualDeep` for arrays with support for 5082 * partial deep comparisons. 5083 * 5084 * @private 5085 * @param {Array} array The array to compare. 5086 * @param {Array} other The other array to compare. 5087 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. 5088 * @param {Function} customizer The function to customize comparisons. 5089 * @param {Function} equalFunc The function to determine equivalents of values. 5090 * @param {Object} stack Tracks traversed `array` and `other` objects. 5091 * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. 5092 */ 5093function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { 5094 var isPartial = bitmask & COMPARE_PARTIAL_FLAG, 5095 arrLength = array.length, 5096 othLength = other.length; 5097 5098 if (arrLength != othLength && !(isPartial && othLength > arrLength)) { 5099 return false; 5100 } 5101 // Assume cyclic values are equal. 5102 var stacked = stack.get(array); 5103 if (stacked && stack.get(other)) { 5104 return stacked == other; 5105 } 5106 var index = -1, 5107 result = true, 5108 seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined; 5109 5110 stack.set(array, other); 5111 stack.set(other, array); 5112 5113 // Ignore non-index properties. 5114 while (++index < arrLength) { 5115 var arrValue = array[index], 5116 othValue = other[index]; 5117 5118 if (customizer) { 5119 var compared = isPartial 5120 ? customizer(othValue, arrValue, index, other, array, stack) 5121 : customizer(arrValue, othValue, index, array, other, stack); 5122 } 5123 if (compared !== undefined) { 5124 if (compared) { 5125 continue; 5126 } 5127 result = false; 5128 break; 5129 } 5130 // Recursively compare arrays (susceptible to call stack limits). 5131 if (seen) { 5132 if (!arraySome(other, function(othValue, othIndex) { 5133 if (!cacheHas(seen, othIndex) && 5134 (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { 5135 return seen.push(othIndex); 5136 } 5137 })) { 5138 result = false; 5139 break; 5140 } 5141 } else if (!( 5142 arrValue === othValue || 5143 equalFunc(arrValue, othValue, bitmask, customizer, stack) 5144 )) { 5145 result = false; 5146 break; 5147 } 5148 } 5149 stack['delete'](array); 5150 stack['delete'](other); 5151 return result; 5152} 5153 5154module.exports = equalArrays; 5155
vendor: 3,125 bytes, lines 5156-5275
5156 5157/***/ }), 5158/* 71 */ 5159/***/ (function(module, exports, __webpack_require__) { 5160 5161var arrayPush = __webpack_require__(36), 5162 isArray = __webpack_require__(1); 5163 5164/** 5165 * The base implementation of `getAllKeys` and `getAllKeysIn` which uses 5166 * `keysFunc` and `symbolsFunc` to get the enumerable property names and 5167 * symbols of `object`. 5168 * 5169 * @private 5170 * @param {Object} object The object to query. 5171 * @param {Function} keysFunc The function to get the keys of `object`. 5172 * @param {Function} symbolsFunc The function to get the symbols of `object`. 5173 * @returns {Array} Returns the array of property names and symbols. 5174 */ 5175function baseGetAllKeys(object, keysFunc, symbolsFunc) { 5176 var result = keysFunc(object); 5177 return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); 5178} 5179 5180module.exports = baseGetAllKeys; 5181 5182 5183/***/ }), 5184/* 72 */ 5185/***/ (function(module, exports, __webpack_require__) { 5186 5187var arrayFilter = __webpack_require__(161), 5188 stubArray = __webpack_require__(73); 5189 5190/** Used for built-in method references. */ 5191var objectProto = Object.prototype; 5192 5193/** Built-in value references. */ 5194var propertyIsEnumerable = objectProto.propertyIsEnumerable; 5195 5196/* Built-in method references for those with the same name as other `lodash` methods. */ 5197var nativeGetSymbols = Object.getOwnPropertySymbols; 5198 5199/** 5200 * Creates an array of the own enumerable symbols of `object`. 5201 * 5202 * @private 5203 * @param {Object} object The object to query. 5204 * @returns {Array} Returns the array of symbols. 5205 */ 5206var getSymbols = !nativeGetSymbols ? stubArray : function(object) { 5207 if (object == null) { 5208 return []; 5209 } 5210 object = Object(object); 5211 return arrayFilter(nativeGetSymbols(object), function(symbol) { 5212 return propertyIsEnumerable.call(object, symbol); 5213 }); 5214}; 5215 5216module.exports = getSymbols; 5217 5218 5219/***/ }), 5220/* 73 */ 5221/***/ (function(module, exports) { 5222 5223/** 5224 * This method returns a new empty array. 5225 * 5226 * @static 5227 * @memberOf _ 5228 * @since 4.13.0 5229 * @category Util 5230 * @returns {Array} Returns the new empty array. 5231 * @example 5232 * 5233 * var arrays = _.times(2, _.stubArray); 5234 * 5235 * console.log(arrays); 5236 * // => [[], []] 5237 * 5238 * console.log(arrays[0] === arrays[1]); 5239 * // => false 5240 */ 5241function stubArray() { 5242 return []; 5243} 5244 5245module.exports = stubArray; 5246 5247 5248/***/ }), 5249/* 74 */ 5250/***/ (function(module, exports, __webpack_require__) { 5251 5252var baseTimes = __webpack_require__(162), 5253 isArguments = __webpack_require__(22), 5254 isArray = __webpack_require__(1), 5255 isBuffer = __webpack_require__(37), 5256 isIndex = __webpack_require__(38), 5257 isTypedArray = __webpack_require__(39); 5258 5259/** Used for built-in method references. */ 5260var objectProto = Object.prototype; 5261 5262/** Used to check objects for own properties. */ 5263var hasOwnProperty = objectProto.hasOwnProperty; 5264 5265/** 5266 * Creates an array of the enumerable property names of the array-like `value`. 5267 * 5268 * @private 5269 * @param {*} value The value to query. 5270 * @param {boolean} inherited Specify returning inherited property names. 5271 * @returns {Array} Returns the array of property names. 5272 */ 5273function arrayLikeKeys(value, inherited) { 5274 var isArr = isArray(value), 5275 isArg = !isArr && isArguments(value),
vendor: 4,920 bytes, lines 5276-5475
5276 isBuff = !isArr && !isArg && isBuffer(value), 5277 isType = !isArr && !isArg && !isBuff && isTypedArray(value), 5278 skipIndexes = isArr || isArg || isBuff || isType, 5279 result = skipIndexes ? baseTimes(value.length, String) : [], 5280 length = result.length; 5281 5282 for (var key in value) { 5283 if ((inherited || hasOwnProperty.call(value, key)) && 5284 !(skipIndexes && ( 5285 // Safari 9 has enumerable `arguments.length` in strict mode. 5286 key == 'length' || 5287 // Node.js 0.10 has enumerable non-index properties on buffers. 5288 (isBuff && (key == 'offset' || key == 'parent')) || 5289 // PhantomJS 2 has enumerable non-index properties on typed arrays. 5290 (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || 5291 // Skip index properties. 5292 isIndex(key, length) 5293 ))) { 5294 result.push(key); 5295 } 5296 } 5297 return result; 5298} 5299 5300module.exports = arrayLikeKeys; 5301 5302 5303/***/ }), 5304/* 75 */ 5305/***/ (function(module, exports) { 5306 5307module.exports = function(module) { 5308 if (!module.webpackPolyfill) { 5309 module.deprecate = function() {}; 5310 module.paths = []; 5311 // module.parent = undefined by default 5312 if (!module.children) module.children = []; 5313 Object.defineProperty(module, "loaded", { 5314 enumerable: true, 5315 get: function() { 5316 return module.l; 5317 } 5318 }); 5319 Object.defineProperty(module, "id", { 5320 enumerable: true, 5321 get: function() { 5322 return module.i; 5323 } 5324 }); 5325 module.webpackPolyfill = 1; 5326 } 5327 return module; 5328}; 5329 5330 5331/***/ }), 5332/* 76 */ 5333/***/ (function(module, exports) { 5334 5335/** 5336 * Creates a unary function that invokes `func` with its argument transformed. 5337 * 5338 * @private 5339 * @param {Function} func The function to wrap. 5340 * @param {Function} transform The argument transform. 5341 * @returns {Function} Returns the new function. 5342 */ 5343function overArg(func, transform) { 5344 return function(arg) { 5345 return func(transform(arg)); 5346 }; 5347} 5348 5349module.exports = overArg; 5350 5351 5352/***/ }), 5353/* 77 */ 5354/***/ (function(module, exports, __webpack_require__) { 5355 5356var getNative = __webpack_require__(7), 5357 root = __webpack_require__(4); 5358 5359/* Built-in method references that are verified to be native. */ 5360var WeakMap = getNative(root, 'WeakMap'); 5361 5362module.exports = WeakMap; 5363 5364 5365/***/ }), 5366/* 78 */ 5367/***/ (function(module, exports, __webpack_require__) { 5368 5369var isObject = __webpack_require__(5); 5370 5371/** 5372 * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. 5373 * 5374 * @private 5375 * @param {*} value The value to check. 5376 * @returns {boolean} Returns `true` if `value` if suitable for strict 5377 * equality comparisons, else `false`. 5378 */ 5379function isStrictComparable(value) { 5380 return value === value && !isObject(value); 5381} 5382 5383module.exports = isStrictComparable; 5384 5385 5386/***/ }), 5387/* 79 */ 5388/***/ (function(module, exports) { 5389 5390/** 5391 * A specialized version of `matchesProperty` for source values suitable 5392 * for strict equality comparisons, i.e. `===`. 5393 * 5394 * @private 5395 * @param {string} key The key of the property to get. 5396 * @param {*} srcValue The value to match. 5397 * @returns {Function} Returns the new spec function. 5398 */ 5399function matchesStrictComparable(key, srcValue) { 5400 return function(object) { 5401 if (object == null) { 5402 return false; 5403 } 5404 return object[key] === srcValue && 5405 (srcValue !== undefined || (key in Object(object))); 5406 }; 5407} 5408 5409module.exports = matchesStrictComparable; 5410 5411 5412/***/ }), 5413/* 80 */ 5414/***/ (function(module, exports, __webpack_require__) { 5415 5416var baseToString = __webpack_require__(81); 5417 5418/** 5419 * Converts `value` to a string. An empty string is returned for `null` 5420 * and `undefined` values. The sign of `-0` is preserved. 5421 * 5422 * @static 5423 * @memberOf _ 5424 * @since 4.0.0 5425 * @category Lang 5426 * @param {*} value The value to convert. 5427 * @returns {string} Returns the converted string. 5428 * @example 5429 * 5430 * _.toString(null); 5431 * // => '' 5432 * 5433 * _.toString(-0); 5434 * // => '-0' 5435 * 5436 * _.toString([1, 2, 3]); 5437 * // => '1,2,3' 5438 */ 5439function toString(value) { 5440 return value == null ? '' : baseToString(value); 5441} 5442 5443module.exports = toString; 5444 5445 5446/***/ }), 5447/* 81 */ 5448/***/ (function(module, exports, __webpack_require__) { 5449 5450var Symbol = __webpack_require__(11), 5451 arrayMap = __webpack_require__(82), 5452 isArray = __webpack_require__(1), 5453 isSymbol = __webpack_require__(25); 5454 5455/** Used as references for various `Number` constants. */ 5456var INFINITY = 1 / 0; 5457 5458/** Used to convert symbols to primitives and strings. */ 5459var symbolProto = Symbol ? Symbol.prototype : undefined, 5460 symbolToString = symbolProto ? symbolProto.toString : undefined; 5461 5462/** 5463 * The base implementation of `_.toString` which doesn't convert nullish 5464 * values to empty strings. 5465 * 5466 * @private 5467 * @param {*} value The value to process. 5468 * @returns {string} Returns the string. 5469 */ 5470function baseToString(value) { 5471 // Exit early for strings to avoid a performance hit in some environments. 5472 if (typeof value == 'string') { 5473 return value; 5474 } 5475 if (isArray(value)) {
5476 // Recursively convert values (susceptible to call stack limits). 5477 return arrayMap(value, baseToString) + ''; 5478 } 5479 if (isSymbol(value)) { 5480 return symbolToString ? symbolToString.call(value) : ''; 5481 } 5482 var result = (value + ''); 5483 return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; 5484} 5485 5486module.exports = baseToString; 5487 5488 5489/***/ }), 5490/* 82 */ 5491/***/ (function(module, exports) { 5492 5493/** 5494 * A specialized version of `_.map` for arrays without support for iteratee 5495 * shorthands. 5496 * 5497 * @private 5498 * @param {Array} [array] The array to iterate over. 5499 * @param {Function} iteratee The function invoked per iteration. 5500 * @returns {Array} Returns the new mapped array. 5501 */ 5502function arrayMap(array, iteratee) { 5503 var index = -1, 5504 length = array == null ? 0 : array.length, 5505 result = Array(length); 5506 5507 while (++index < length) { 5508 result[index] = iteratee(array[index], index, array); 5509 } 5510 return result; 5511} 5512 5513module.exports = arrayMap; 5514 5515 5516/***/ }), 5517/* 83 */ 5518/***/ (function(module, exports) { 5519 5520/** 5521 * The base implementation of `_.property` without support for deep paths. 5522 * 5523 * @private 5524 * @param {string} key The key of the property to get. 5525 * @returns {Function} Returns the new accessor function. 5526 */ 5527function baseProperty(key) { 5528 return function(object) { 5529 return object == null ? undefined : object[key]; 5530 }; 5531} 5532 5533module.exports = baseProperty; 5534 5535 5536/***/ }), 5537/* 84 */ 5538/***/ (function(module, exports) { 5539 5540/** 5541 * The base implementation of `_.findIndex` and `_.findLastIndex` without 5542 * support for iteratee shorthands. 5543 * 5544 * @private 5545 * @param {Array} array The array to inspect. 5546 * @param {Function} predicate The function invoked per iteration. 5547 * @param {number} fromIndex The index to search from. 5548 * @param {boolean} [fromRight] Specify iterating from right to left. 5549 * @returns {number} Returns the index of the matched value, else `-1`. 5550 */ 5551function baseFindIndex(array, predicate, fromIndex, fromRight) { 5552 var length = array.length, 5553 index = fromIndex + (fromRight ? 1 : -1); 5554 5555 while ((fromRight ? index-- : ++index < length)) { 5556 if (predicate(array[index], index, array)) { 5557 return index; 5558 } 5559 } 5560 return -1; 5561} 5562 5563module.exports = baseFindIndex; 5564 5565 5566/***/ }), 5567/* 85 */ 5568/***/ (function(module, exports, __webpack_require__) { 5569 5570"use strict"; 5571 5572 5573var _interopRequireDefault = __webpack_require__(0); 5574 5575Object.defineProperty(exports, "__esModule", { 5576 value: true 5577}); 5578exports.inQuad = inQuad; 5579exports.outQuad = outQuad; 5580exports.inOutQuad = inOutQuad; 5581exports.inCubic = inCubic; 5582exports.outCubic = outCubic; 5583exports.inOutCubic = inOutCubic; 5584exports.inQuart = inQuart; 5585exports.outQuart = outQuart; 5586exports.inOutQuart = inOutQuart; 5587exports.inQuint = inQuint; 5588exports.outQuint = outQuint; 5589exports.inOutQuint = inOutQuint; 5590exports.inSine = inSine; 5591exports.outSine = outSine; 5592exports.inOutSine = inOutSine; 5593exports.inExpo = inExpo; 5594exports.outExpo = outExpo; 5595exports.inOutExpo = inOutExpo; 5596exports.inCirc = inCirc; 5597exports.outCirc = outCirc; 5598exports.inOutCirc = inOutCirc; 5599exports.outBounce = outBounce; 5600exports.inBack = inBack; 5601exports.outBack = outBack; 5602exports.inOutBack = inOutBack; 5603exports.inElastic = inElastic; 5604exports.outElastic = outElastic; 5605exports.inOutElastic = inOutElastic; 5606exports.swingFromTo = swingFromTo; 5607exports.swingFrom = swingFrom; 5608exports.swingTo = swingTo; 5609exports.bounce = bounce; 5610exports.bouncePast = bouncePast; 5611exports.easeInOut = exports.easeOut = exports.easeIn = exports.ease = void 0; 5612 5613var _bezierEasing = _interopRequireDefault(__webpack_require__(184)); // Easing functions adapted from Thomas Fuchs & Jeremy Kahn 5614// Easing Equations (c) 2003 Robert Penner, BSD license 5615// https://raw.github.com/danro/easing-js/master/LICENSE 5616 5617 5618var magicSwing = 1.70158; 5619var ease = (0, _bezierEasing["default"])(0.25, 0.1, 0.25, 1.0); 5620exports.ease = ease; 5621var easeIn = (0, _bezierEasing["default"])(0.42, 0.0, 1.0, 1.0); 5622exports.easeIn = easeIn; 5623var easeOut = (0, _bezierEasing["default"])(0.0, 0.0, 0.58, 1.0); 5624exports.easeOut = easeOut; 5625var easeInOut = (0, _bezierEasing["default"])(0.42, 0.0, 0.58, 1.0); 5626exports.easeInOut = easeInOut; 5627 5628function inQuad(pos) { 5629 return Math.pow(pos, 2); 5630} 5631 5632function outQuad(pos) { 5633 return -(Math.pow(pos - 1, 2) - 1); 5634} 5635 5636function inOutQuad(pos) { 5637 if ((pos /= 0.5) < 1) { 5638 return 0.5 * Math.pow(pos, 2); 5639 } 5640 5641 return -0.5 * ((pos -= 2) * pos - 2); 5642} 5643 5644function inCubic(pos) { 5645 return Math.pow(pos, 3); 5646} 5647
5648function outCubic(pos) { 5649 return Math.pow(pos - 1, 3) + 1; 5650} 5651 5652function inOutCubic(pos) { 5653 if ((pos /= 0.5) < 1) { 5654 return 0.5 * Math.pow(pos, 3); 5655 } 5656 5657 return 0.5 * (Math.pow(pos - 2, 3) + 2); 5658} 5659 5660function inQuart(pos) { 5661 return Math.pow(pos, 4); 5662} 5663 5664function outQuart(pos) { 5665 return -(Math.pow(pos - 1, 4) - 1); 5666} 5667 5668function inOutQuart(pos) { 5669 if ((pos /= 0.5) < 1) { 5670 return 0.5 * Math.pow(pos, 4); 5671 } 5672 5673 return -0.5 * ((pos -= 2) * Math.pow(pos, 3) - 2); 5674} 5675 5676function inQuint(pos) { 5677 return Math.pow(pos, 5); 5678} 5679 5680function outQuint(pos) { 5681 return Math.pow(pos - 1, 5) + 1; 5682} 5683 5684function inOutQuint(pos) { 5685 if ((pos /= 0.5) < 1) { 5686 return 0.5 * Math.pow(pos, 5); 5687 } 5688 5689 return 0.5 * (Math.pow(pos - 2, 5) + 2); 5690} 5691 5692function inSine(pos) { 5693 return -Math.cos(pos * (Math.PI / 2)) + 1; 5694} 5695 5696function outSine(pos) { 5697 return Math.sin(pos * (Math.PI / 2)); 5698} 5699 5700function inOutSine(pos) { 5701 return -0.5 * (Math.cos(Math.PI * pos) - 1); 5702} 5703 5704function inExpo(pos) { 5705 return pos === 0 ? 0 : Math.pow(2, 10 * (pos - 1)); 5706} 5707 5708function outExpo(pos) { 5709 return pos === 1 ? 1 : -Math.pow(2, -10 * pos) + 1; 5710} 5711 5712function inOutExpo(pos) { 5713 if (pos === 0) { 5714 return 0; 5715 } 5716 5717 if (pos === 1) { 5718 return 1; 5719 } 5720 5721 if ((pos /= 0.5) < 1) { 5722 return 0.5 * Math.pow(2, 10 * (pos - 1)); 5723 } 5724 5725 return 0.5 * (-Math.pow(2, -10 * --pos) + 2); 5726} 5727 5728function inCirc(pos) { 5729 return -(Math.sqrt(1 - pos * pos) - 1); 5730} 5731 5732function outCirc(pos) { 5733 return Math.sqrt(1 - Math.pow(pos - 1, 2)); 5734} 5735 5736function inOutCirc(pos) { 5737 if ((pos /= 0.5) < 1) { 5738 return -0.5 * (Math.sqrt(1 - pos * pos) - 1); 5739 } 5740 5741 return 0.5 * (Math.sqrt(1 - (pos -= 2) * pos) + 1); 5742} 5743 5744function outBounce(pos) { 5745 if (pos < 1 / 2.75) { 5746 return 7.5625 * pos * pos; 5747 } else if (pos < 2 / 2.75) { 5748 return 7.5625 * (pos -= 1.5 / 2.75) * pos + 0.75; 5749 } else if (pos < 2.5 / 2.75) { 5750 return 7.5625 * (pos -= 2.25 / 2.75) * pos + 0.9375; 5751 } else { 5752 return 7.5625 * (pos -= 2.625 / 2.75) * pos + 0.984375; 5753 } 5754} 5755 5756function inBack(pos) { 5757 var s = magicSwing; 5758 return pos * pos * ((s + 1) * pos - s); 5759} 5760 5761function outBack(pos) { 5762 var s = magicSwing; 5763 return (pos -= 1) * pos * ((s + 1) * pos + s) + 1; 5764} 5765 5766function inOutBack(pos) { 5767 var s = magicSwing; 5768 5769 if ((pos /= 0.5) < 1) { 5770 return 0.5 * (pos * pos * (((s *= 1.525) + 1) * pos - s)); 5771 } 5772 5773 return 0.5 * ((pos -= 2) * pos * (((s *= 1.525) + 1) * pos + s) + 2); 5774} 5775 5776function inElastic(pos) { 5777 var s = magicSwing; 5778 var p = 0; 5779 var a = 1; 5780 5781 if (pos === 0) { 5782 return 0; 5783 } 5784 5785 if (pos === 1) { 5786 return 1; 5787 } 5788 5789 if (!p) { 5790 p = 0.3; 5791 } 5792 5793 if (a < 1) { 5794 a = 1; 5795 s = p / 4; 5796 } else { 5797 s = p / (2 * Math.PI) * Math.asin(1 / a); 5798 } 5799 5800 return -(a * Math.pow(2, 10 * (pos -= 1)) * Math.sin((pos - s) * (2 * Math.PI) / p)); 5801} 5802 5803function outElastic(pos) { 5804 var s = magicSwing; 5805 var p = 0; 5806 var a = 1; 5807 5808 if (pos === 0) { 5809 return 0; 5810 } 5811 5812 if (pos === 1) { 5813 return 1; 5814 } 5815 5816 if (!p) { 5817 p = 0.3; 5818 } 5819 5820 if (a < 1) { 5821 a = 1; 5822 s = p / 4; 5823 } else { 5824 s = p / (2 * Math.PI) * Math.asin(1 / a); 5825 } 5826 5827 return a * Math.pow(2, -10 * pos) * Math.sin((pos - s) * (2 * Math.PI) / p) + 1; 5828} 5829 5830function inOutElastic(pos) { 5831 var s = magicSwing; 5832 var p = 0; 5833 var a = 1; 5834 5835 if (pos === 0) { 5836 return 0; 5837 } 5838 5839 if ((pos /= 1 / 2) === 2) { 5840 return 1; 5841 } 5842 5843 if (!p) { 5844 p = 0.3 * 1.5; 5845 } 5846 5847 if (a < 1) { 5848 a = 1; 5849 s = p / 4; 5850 } else { 5851 s = p / (2 * Math.PI) * Math.asin(1 / a); 5852 } 5853 5854 if (pos < 1) { 5855 return -0.5 * (a * Math.pow(2, 10 * (pos -= 1)) * Math.sin((pos - s) * (2 * Math.PI) / p)); 5856 } 5857 5858 return a * Math.pow(2, -10 * (pos -= 1)) * Math.sin((pos - s) * (2 * Math.PI) / p) * 0.5 + 1; 5859} 5860 5861function swingFromTo(pos) { 5862 var s = magicSwing; 5863 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); 5864} 5865 5866function swingFrom(pos) { 5867 var s = magicSwing; 5868 return pos * pos * ((s + 1) * pos - s); 5869} 5870 5871function swingTo(pos) { 5872 var s = magicSwing; 5873 return (pos -= 1) * pos * ((s + 1) * pos + s) + 1; 5874} 5875 5876function bounce(pos) { 5877 if (pos < 1 / 2.75) { 5878 return 7.5625 * pos * pos; 5879 } else if (pos < 2 / 2.75) { 5880 return 7.5625 * (pos -= 1.5 / 2.75) * pos + 0.75; 5881 } else if (pos < 2.5 / 2.75) { 5882 return 7.5625 * (pos -= 2.25 / 2.75) * pos + 0.9375; 5883 } else { 5884 return 7.5625 * (pos -= 2.625 / 2.75) * pos + 0.984375; 5885 } 5886} 5887 5888function bouncePast(pos) { 5889 if (pos < 1 / 2.75) { 5890 return 7.5625 * pos * pos; 5891 } else if (pos < 2 / 2.75) { 5892 return 2 - (7.5625 * (pos -= 1.5 / 2.75) * pos + 0.75); 5893 } else if (pos < 2.5 / 2.75) { 5894 return 2 - (7.5625 * (pos -= 2.25 / 2.75) * pos + 0.9375); 5895 } else { 5896 return 2 - (7.5625 * (pos -= 2.625 / 2.75) * pos + 0.984375); 5897 } 5898} 5899 5900/***/ }), 5901/* 86 */ 5902/***/ (function(module, exports, __webpack_require__) { 5903 5904"use strict"; 5905 5906 5907var _interopRequireWildcard = __webpack_require__(16); 5908 5909Object.defineProperty(exports, "__esModule", { 5910 value: true 5911}); 5912exports.optimizeFloat = optimizeFloat; 5913exports.applyEasing = applyEasing; 5914 5915var easings = _interopRequireWildcard(__webpack_require__(85)); 5916 5917function optimizeFloat(value) { 5918 var digits = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5; 5919 var base = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 10; 5920 var pow = Math.pow(base, digits); 5921 5922 var _float = Number(Math.round(value * pow) / pow); 5923 5924 return Math.abs(_float) > 0.0001 ? _float : 0; 5925} 5926 5927function applyEasing(easing, position) { 5928 if (position === 0) { 5929 return 0; 5930 } 5931 5932 if (position === 1) { 5933 return 1; 5934 } 5935 5936 return optimizeFloat(position > 0 && easing && easings[easing] ? easings[easing](position) : position); 5937} 5938 5939/***/ }), 5940/* 87 */ 5941/***/ (function(module, exports, __webpack_require__) { 5942 5943"use strict"; 5944 5945 5946Object.defineProperty(exports, "__esModule", { 5947 value: true 5948});
5949exports.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; 5950var IX2_RAW_DATA_IMPORTED = 'IX2_RAW_DATA_IMPORTED'; 5951exports.IX2_RAW_DATA_IMPORTED = IX2_RAW_DATA_IMPORTED; 5952var IX2_SESSION_INITIALIZED = 'IX2_SESSION_INITIALIZED'; 5953exports.IX2_SESSION_INITIALIZED = IX2_SESSION_INITIALIZED; 5954var IX2_SESSION_STARTED = 'IX2_SESSION_STARTED'; 5955exports.IX2_SESSION_STARTED = IX2_SESSION_STARTED; 5956var IX2_SESSION_STOPPED = 'IX2_SESSION_STOPPED'; 5957exports.IX2_SESSION_STOPPED = IX2_SESSION_STOPPED; 5958var IX2_PREVIEW_REQUESTED = 'IX2_PREVIEW_REQUESTED'; 5959exports.IX2_PREVIEW_REQUESTED = IX2_PREVIEW_REQUESTED; 5960var IX2_PLAYBACK_REQUESTED = 'IX2_PLAYBACK_REQUESTED'; 5961exports.IX2_PLAYBACK_REQUESTED = IX2_PLAYBACK_REQUESTED; 5962var IX2_STOP_REQUESTED = 'IX2_STOP_REQUESTED'; 5963exports.IX2_STOP_REQUESTED = IX2_STOP_REQUESTED; 5964var IX2_CLEAR_REQUESTED = 'IX2_CLEAR_REQUESTED'; 5965exports.IX2_CLEAR_REQUESTED = IX2_CLEAR_REQUESTED; 5966var IX2_EVENT_LISTENER_ADDED = 'IX2_EVENT_LISTENER_ADDED'; 5967exports.IX2_EVENT_LISTENER_ADDED = IX2_EVENT_LISTENER_ADDED; 5968var IX2_EVENT_STATE_CHANGED = 'IX2_EVENT_STATE_CHANGED'; 5969exports.IX2_EVENT_STATE_CHANGED = IX2_EVENT_STATE_CHANGED; 5970var IX2_ANIMATION_FRAME_CHANGED = 'IX2_ANIMATION_FRAME_CHANGED'; 5971exports.IX2_ANIMATION_FRAME_CHANGED = IX2_ANIMATION_FRAME_CHANGED; 5972var IX2_PARAMETER_CHANGED = 'IX2_PARAMETER_CHANGED'; 5973exports.IX2_PARAMETER_CHANGED = IX2_PARAMETER_CHANGED; 5974var IX2_INSTANCE_ADDED = 'IX2_INSTANCE_ADDED'; 5975exports.IX2_INSTANCE_ADDED = IX2_INSTANCE_ADDED; 5976var IX2_INSTANCE_STARTED = 'IX2_INSTANCE_STARTED'; 5977exports.IX2_INSTANCE_STARTED = IX2_INSTANCE_STARTED; 5978var IX2_INSTANCE_REMOVED = 'IX2_INSTANCE_REMOVED'; 5979exports.IX2_INSTANCE_REMOVED = IX2_INSTANCE_REMOVED; 5980var IX2_ELEMENT_STATE_CHANGED = 'IX2_ELEMENT_STATE_CHANGED'; 5981exports.IX2_ELEMENT_STATE_CHANGED = IX2_ELEMENT_STATE_CHANGED; 5982var IX2_ACTION_LIST_PLAYBACK_CHANGED = 'IX2_ACTION_LIST_PLAYBACK_CHANGED'; 5983exports.IX2_ACTION_LIST_PLAYBACK_CHANGED = IX2_ACTION_LIST_PLAYBACK_CHANGED; 5984var IX2_VIEWPORT_WIDTH_CHANGED = 'IX2_VIEWPORT_WIDTH_CHANGED'; 5985exports.IX2_VIEWPORT_WIDTH_CHANGED = IX2_VIEWPORT_WIDTH_CHANGED; 5986var IX2_MEDIA_QUERIES_DEFINED = 'IX2_MEDIA_QUERIES_DEFINED'; 5987exports.IX2_MEDIA_QUERIES_DEFINED = IX2_MEDIA_QUERIES_DEFINED; 5988var IX2_TEST_FRAME_RENDERED = 'IX2_TEST_FRAME_RENDERED'; 5989exports.IX2_TEST_FRAME_RENDERED = IX2_TEST_FRAME_RENDERED; 5990 5991/***/ }), 5992/* 88 */ 5993/***/ (function(module, exports, __webpack_require__) { 5994 5995"use strict"; 5996 5997 5998Object.defineProperty(exports, "__esModule", { 5999 value: true 6000}); 6001exports.ECOMMERCE_CART_CLOSE = exports.ECOMMERCE_CART_OPEN = exports.PAGE = exports.VIEWPORT = exports.ELEMENT = exports.PAGE_SCROLL = exports.PAGE_SCROLL_DOWN = exports.PAGE_SCROLL_UP = exports.PAGE_FINISH = exports.PAGE_START = exports.COMPONENT_INACTIVE = exports.COMPONENT_ACTIVE = exports.DROPDOWN_CLOSE = exports.DROPDOWN_OPEN = exports.SLIDER_INACTIVE = exports.SLIDER_ACTIVE = exports.NAVBAR_CLOSE = exports.NAVBAR_OPEN = exports.TAB_INACTIVE = exports.TAB_ACTIVE = exports.SCROLLING_IN_VIEW = exports.SCROLL_OUT_OF_VIEW = exports.SCROLL_INTO_VIEW = exports.MOUSE_MOVE = exports.MOUSE_OUT = exports.MOUSE_OVER = exports.MOUSE_UP = exports.MOUSE_DOWN = exports.MOUSE_SECOND_CLICK = exports.MOUSE_CLICK = void 0; 6002var MOUSE_CLICK = 'MOUSE_CLICK'; 6003exports.MOUSE_CLICK = MOUSE_CLICK; 6004var MOUSE_SECOND_CLICK = 'MOUSE_SECOND_CLICK'; 6005exports.MOUSE_SECOND_CLICK = MOUSE_SECOND_CLICK; 6006var MOUSE_DOWN = 'MOUSE_DOWN'; 6007exports.MOUSE_DOWN = MOUSE_DOWN; 6008var MOUSE_UP = 'MOUSE_UP'; 6009exports.MOUSE_UP = MOUSE_UP; 6010var MOUSE_OVER = 'MOUSE_OVER'; 6011exports.MOUSE_OVER = MOUSE_OVER; 6012var MOUSE_OUT = 'MOUSE_OUT'; 6013exports.MOUSE_OUT = MOUSE_OUT; 6014var MOUSE_MOVE = 'MOUSE_MOVE'; 6015exports.MOUSE_MOVE = MOUSE_MOVE; 6016var SCROLL_INTO_VIEW = 'SCROLL_INTO_VIEW'; 6017exports.SCROLL_INTO_VIEW = SCROLL_INTO_VIEW;
6018var SCROLL_OUT_OF_VIEW = 'SCROLL_OUT_OF_VIEW'; 6019exports.SCROLL_OUT_OF_VIEW = SCROLL_OUT_OF_VIEW; 6020var SCROLLING_IN_VIEW = 'SCROLLING_IN_VIEW'; 6021exports.SCROLLING_IN_VIEW = SCROLLING_IN_VIEW; 6022var TAB_ACTIVE = 'TAB_ACTIVE'; 6023exports.TAB_ACTIVE = TAB_ACTIVE; 6024var TAB_INACTIVE = 'TAB_INACTIVE'; 6025exports.TAB_INACTIVE = TAB_INACTIVE; 6026var NAVBAR_OPEN = 'NAVBAR_OPEN'; 6027exports.NAVBAR_OPEN = NAVBAR_OPEN; 6028var NAVBAR_CLOSE = 'NAVBAR_CLOSE'; 6029exports.NAVBAR_CLOSE = NAVBAR_CLOSE; 6030var SLIDER_ACTIVE = 'SLIDER_ACTIVE'; 6031exports.SLIDER_ACTIVE = SLIDER_ACTIVE; 6032var SLIDER_INACTIVE = 'SLIDER_INACTIVE'; 6033exports.SLIDER_INACTIVE = SLIDER_INACTIVE; 6034var DROPDOWN_OPEN = 'DROPDOWN_OPEN'; 6035exports.DROPDOWN_OPEN = DROPDOWN_OPEN; 6036var DROPDOWN_CLOSE = 'DROPDOWN_CLOSE'; 6037exports.DROPDOWN_CLOSE = DROPDOWN_CLOSE; 6038var COMPONENT_ACTIVE = 'COMPONENT_ACTIVE'; 6039exports.COMPONENT_ACTIVE = COMPONENT_ACTIVE; 6040var COMPONENT_INACTIVE = 'COMPONENT_INACTIVE'; 6041exports.COMPONENT_INACTIVE = COMPONENT_INACTIVE; 6042var PAGE_START = 'PAGE_START'; 6043exports.PAGE_START = PAGE_START; 6044var PAGE_FINISH = 'PAGE_FINISH'; 6045exports.PAGE_FINISH = PAGE_FINISH; 6046var PAGE_SCROLL_UP = 'PAGE_SCROLL_UP'; 6047exports.PAGE_SCROLL_UP = PAGE_SCROLL_UP; 6048var PAGE_SCROLL_DOWN = 'PAGE_SCROLL_DOWN'; 6049exports.PAGE_SCROLL_DOWN = PAGE_SCROLL_DOWN; 6050var PAGE_SCROLL = 'PAGE_SCROLL'; 6051exports.PAGE_SCROLL = PAGE_SCROLL; 6052var ELEMENT = 'ELEMENT'; 6053exports.ELEMENT = ELEMENT; 6054var VIEWPORT = 'VIEWPORT'; 6055exports.VIEWPORT = VIEWPORT; 6056var PAGE = 'PAGE'; 6057exports.PAGE = PAGE; 6058var ECOMMERCE_CART_OPEN = 'ECOMMERCE_CART_OPEN'; 6059exports.ECOMMERCE_CART_OPEN = ECOMMERCE_CART_OPEN; 6060var ECOMMERCE_CART_CLOSE = 'ECOMMERCE_CART_CLOSE'; 6061exports.ECOMMERCE_CART_CLOSE = ECOMMERCE_CART_CLOSE; 6062 6063/***/ }), 6064/* 89 */ 6065/***/ (function(module, exports, __webpack_require__) { 6066 6067"use strict"; 6068 6069 6070var _interopRequireDefault = __webpack_require__(0); 6071 6072var _defineProperty2 = _interopRequireDefault(__webpack_require__(14)); 6073 6074Object.defineProperty(exports, "__esModule", { 6075 value: true 6076}); 6077exports.isPluginType = isPluginType; 6078exports.clearPlugin = exports.renderPlugin = exports.createPluginInstance = exports.getPluginDestination = exports.getPluginOrigin = exports.getPluginConfig = void 0; 6079 6080var _IX2LottieUtils = __webpack_require__(186); 6081 6082var _IX2EngineItemTypes = __webpack_require__(49); 6083 6084var _IX2BrowserSupport = __webpack_require__(32); // eslint-disable-next-line webflow/module-top-level-imports, webflow/packages-must-be-defined 6085 6086 6087var pluginMethodMap = (0, _defineProperty2["default"])({}, _IX2EngineItemTypes.PLUGIN_LOTTIE, { 6088 getConfig: _IX2LottieUtils.getPluginConfig, 6089 getOrigin: _IX2LottieUtils.getPluginOrigin, 6090 getDestination: _IX2LottieUtils.getPluginDestination, 6091 createInstance: _IX2LottieUtils.createPluginInstance, 6092 render: _IX2LottieUtils.renderPlugin, 6093 clear: _IX2LottieUtils.clearPlugin 6094}); 6095 6096function isPluginType(actionTypeId) { 6097 return actionTypeId === _IX2EngineItemTypes.PLUGIN_LOTTIE; 6098} 6099 6100var pluginMethod = function pluginMethod(methodName) { 6101 return function (actionTypeId) { 6102 if (!_IX2BrowserSupport.IS_BROWSER_ENV) { 6103 // IX2 plugins require browser libs for now 6104 return function () { 6105 return null; 6106 }; 6107 } 6108 6109 var plugin = pluginMethodMap[actionTypeId]; 6110 6111 if (!plugin) { 6112 throw new Error("IX2 no plugin configured for: ".concat(actionTypeId)); 6113 } 6114 6115 var method = plugin[methodName]; 6116 6117 if (!method) { 6118 throw new Error("IX2 invalid plugin method: ".concat(methodName)); 6119 } 6120 6121 return method; 6122 }; 6123}; 6124 6125var getPluginConfig = pluginMethod('getConfig'); 6126exports.getPluginConfig = getPluginConfig; 6127var getPluginOrigin = pluginMethod('getOrigin'); 6128exports.getPluginOrigin = getPluginOrigin; 6129var getPluginDestination = pluginMethod('getDestination'); 6130exports.getPluginDestination = getPluginDestination; 6131var createPluginInstance = pluginMethod('createInstance'); 6132exports.createPluginInstance = createPluginInstance; 6133var renderPlugin = pluginMethod('render'); 6134exports.renderPlugin = renderPlugin; 6135var clearPlugin = pluginMethod('clear'); 6136exports.clearPlugin = clearPlugin; 6137 6138/***/ }), 6139/* 90 */ 6140/***/ (function(module, exports, __webpack_require__) { 6141 6142var baseForOwn = __webpack_require__(91), 6143 createBaseEach = __webpack_require__(193); 6144 6145/** 6146 * The base implementation of `_.forEach` without support for iteratee shorthands. 6147 * 6148 * @private 6149 * @param {Array|Object} collection The collection to iterate over. 6150 * @param {Function} iteratee The function invoked per iteration. 6151 * @returns {Array|Object} Returns `collection`. 6152 */ 6153var baseEach = createBaseEach(baseForOwn); 6154 6155module.exports = baseEach; 6156 6157 6158/***/ }), 6159/* 91 */ 6160/***/ (function(module, exports, __webpack_require__) { 6161 6162var baseFor = __webpack_require__(191), 6163 keys = __webpack_require__(21); 6164 6165/** 6166 * The base implementation of `_.forOwn` without support for iteratee shorthands. 6167 * 6168 * @private 6169 * @param {Object} object The object to iterate over. 6170 * @param {Function} iteratee The function invoked per iteration. 6171 * @returns {Object} Returns `object`. 6172 */ 6173function baseForOwn(object, iteratee) { 6174 return object && baseFor(object, iteratee, keys); 6175} 6176 6177module.exports = baseForOwn; 6178 6179 6180/***/ }), 6181/* 92 */ 6182/***/ (function(module, exports, __webpack_require__) { 6183 6184"use strict"; 6185 6186 6187exports.__esModule = true; 6188 6189var _shallowEqual = __webpack_require__(197); 6190 6191var _shallowEqual2 = _interopRequireDefault(_shallowEqual); 6192 6193function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 6194 6195exports.default = _shallowEqual2.default; 6196 6197/***/ }), 6198/* 93 */ 6199/***/ (function(module, exports, __webpack_require__) { 6200 6201"use strict"; 6202 6203 6204var _interopRequireDefault2 = __webpack_require__(0); 6205 6206var _toConsumableArray2 = _interopRequireDefault2(__webpack_require__(202)); 6207 6208var _interopRequireWildcard = __webpack_require__(16); 6209 6210var _interopRequireDefault = __webpack_require__(0); 6211 6212Object.defineProperty(exports, "__esModule", { 6213 value: true 6214}); 6215exports.observeRequests = observeRequests; 6216exports.startEngine = startEngine; 6217exports.stopEngine = stopEngine; 6218exports.stopAllActionGroups = stopAllActionGroups; 6219exports.stopActionGroup = stopActionGroup; 6220exports.startActionGroup = startActionGroup; 6221 6222var _objectSpread2 = _interopRequireDefault(__webpack_require__(26)); 6223 6224var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(206)); 6225 6226var _find = _interopRequireDefault(__webpack_require__(63)); 6227 6228var _get = _interopRequireDefault(__webpack_require__(23)); 6229 6230var _size = _interopRequireDefault(__webpack_require__(208)); 6231 6232var _omitBy = _interopRequireDefault(__webpack_require__(214)); 6233 6234var _isEmpty = _interopRequireDefault(__webpack_require__(226)); 6235 6236var _mapValues = _interopRequireDefault(__webpack_require__(227)); 6237
6238var _forEach = _interopRequireDefault(__webpack_require__(228)); 6239 6240var _endsWith = _interopRequireDefault(__webpack_require__(231)); 6241 6242var _throttle = _interopRequireDefault(__webpack_require__(232)); 6243 6244var _shallowEqual = _interopRequireDefault(__webpack_require__(92)); 6245 6246var _shared = __webpack_require__(3); 6247 6248var _IX2EngineActions = __webpack_require__(51); 6249 6250var elementApi = _interopRequireWildcard(__webpack_require__(235)); 6251 6252var _IX2VanillaEvents = _interopRequireDefault(__webpack_require__(236)); 6253/* eslint-env browser */ 6254 6255 6256var _shared$IX2EngineEven = _shared.IX2EngineEventTypes, 6257 MOUSE_CLICK = _shared$IX2EngineEven.MOUSE_CLICK, 6258 MOUSE_SECOND_CLICK = _shared$IX2EngineEven.MOUSE_SECOND_CLICK; 6259var _shared$IX2EngineCons = _shared.IX2EngineConstants, 6260 COLON_DELIMITER = _shared$IX2EngineCons.COLON_DELIMITER, 6261 BOUNDARY_SELECTOR = _shared$IX2EngineCons.BOUNDARY_SELECTOR, 6262 HTML_ELEMENT = _shared$IX2EngineCons.HTML_ELEMENT, 6263 RENDER_GENERAL = _shared$IX2EngineCons.RENDER_GENERAL, 6264 W_MOD_IX = _shared$IX2EngineCons.W_MOD_IX; 6265var _shared$IX2EngineItem = _shared.IX2EngineItemTypes, 6266 GENERAL_START_ACTION = _shared$IX2EngineItem.GENERAL_START_ACTION, 6267 GENERAL_CONTINUOUS_ACTION = _shared$IX2EngineItem.GENERAL_CONTINUOUS_ACTION; 6268var _shared$IX2VanillaUti = _shared.IX2VanillaUtils, 6269 getAffectedElements = _shared$IX2VanillaUti.getAffectedElements, 6270 getElementId = _shared$IX2VanillaUti.getElementId, 6271 getDestinationValues = _shared$IX2VanillaUti.getDestinationValues, 6272 observeStore = _shared$IX2VanillaUti.observeStore, 6273 getInstanceId = _shared$IX2VanillaUti.getInstanceId, 6274 renderHTMLElement = _shared$IX2VanillaUti.renderHTMLElement, 6275 clearAllStyles = _shared$IX2VanillaUti.clearAllStyles, 6276 getMaxDurationItemIndex = _shared$IX2VanillaUti.getMaxDurationItemIndex, 6277 getComputedStyle = _shared$IX2VanillaUti.getComputedStyle, 6278 getInstanceOrigin = _shared$IX2VanillaUti.getInstanceOrigin, 6279 reduceListToGroup = _shared$IX2VanillaUti.reduceListToGroup, 6280 shouldNamespaceEventParameter = _shared$IX2VanillaUti.shouldNamespaceEventParameter, 6281 getNamespacedParameterId = _shared$IX2VanillaUti.getNamespacedParameterId, 6282 shouldAllowMediaQuery = _shared$IX2VanillaUti.shouldAllowMediaQuery, 6283 cleanupHTMLElement = _shared$IX2VanillaUti.cleanupHTMLElement, 6284 stringifyTarget = _shared$IX2VanillaUti.stringifyTarget, 6285 mediaQueriesEqual = _shared$IX2VanillaUti.mediaQueriesEqual; 6286var _shared$IX2VanillaPlu = _shared.IX2VanillaPlugins, 6287 isPluginType = _shared$IX2VanillaPlu.isPluginType, 6288 createPluginInstance = _shared$IX2VanillaPlu.createPluginInstance; 6289var ua = navigator.userAgent; 6290var IS_MOBILE_SAFARI = ua.match(/iPad/i) || ua.match(/iPhone/); // Keep throttled events at ~80fps to reduce reflows while maintaining render accuracy 6291 6292var THROTTLED_EVENT_WAIT = 12; 6293 6294function observeRequests(store) { 6295 observeStore({ 6296 store: store, 6297 select: function select(_ref) { 6298 var ixRequest = _ref.ixRequest; 6299 return ixRequest.preview; 6300 }, 6301 onChange: handlePreviewRequest 6302 }); 6303 observeStore({ 6304 store: store, 6305 select: function select(_ref2) { 6306 var ixRequest = _ref2.ixRequest; 6307 return ixRequest.playback; 6308 }, 6309 onChange: handlePlaybackRequest 6310 }); 6311 observeStore({ 6312 store: store, 6313 select: function select(_ref3) { 6314 var ixRequest = _ref3.ixRequest; 6315 return ixRequest.stop; 6316 }, 6317 onChange: handleStopRequest 6318 }); 6319 observeStore({ 6320 store: store, 6321 select: function select(_ref4) { 6322 var ixRequest = _ref4.ixRequest; 6323 return ixRequest.clear; 6324 }, 6325 onChange: handleClearRequest 6326 }); 6327} 6328 6329function observeMediaQueryChange(store) { 6330 observeStore({ 6331 store: store, 6332 select: function select(_ref5) { 6333 var ixSession = _ref5.ixSession; 6334 return ixSession.mediaQueryKey; 6335 }, 6336 onChange: function onChange() { 6337 stopEngine(store); 6338 clearAllStyles({ 6339 store: store, 6340 elementApi: elementApi 6341 }); 6342 startEngine({ 6343 store: store, 6344 allowEvents: true 6345 }); 6346 dispatchPageUpdateEvent(); 6347 } 6348 }); 6349} 6350 6351function observeOneRenderTick(store, onTick) { 6352 var unsubscribe = observeStore({ 6353 store: store, 6354 select: function select(_ref6) { 6355 var ixSession = _ref6.ixSession; 6356 return ixSession.tick; 6357 }, 6358 onChange: function onChange(tick) { 6359 onTick(tick); 6360 unsubscribe(); 6361 } 6362 }); 6363} 6364 6365function handlePreviewRequest(_ref7, store) { 6366 var rawData = _ref7.rawData; 6367 startEngine({ 6368 store: store, 6369 rawData: rawData, 6370 allowEvents: true 6371 }); 6372 dispatchPageUpdateEvent(); 6373} 6374 6375function dispatchPageUpdateEvent() { 6376 document.dispatchEvent(new CustomEvent('IX2_PAGE_UPDATE')); 6377} 6378 6379function isQuickEffect(id) { 6380 return id && (0, _endsWith["default"])(id, '_EFFECT'); 6381} 6382 6383function handlePlaybackRequest(playback, store) { 6384 var actionTypeId = playback.actionTypeId, 6385 actionListId = playback.actionListId, 6386 actionItemId = playback.actionItemId, 6387 eventId = playback.eventId, 6388 allowEvents = playback.allowEvents, 6389 immediate = playback.immediate, 6390 testManual = playback.testManual, 6391 _playback$verbose = playback.verbose, 6392 verbose = _playback$verbose === void 0 ? true : _playback$verbose; 6393 var rawData = playback.rawData; 6394 6395 if (actionListId && actionItemId && rawData && immediate) { 6396 rawData = reduceListToGroup({ 6397 actionListId: actionListId, 6398 actionItemId: actionItemId, 6399 rawData: rawData 6400 }); 6401 } 6402 6403 startEngine({ 6404 store: store, 6405 rawData: rawData, 6406 allowEvents: allowEvents, 6407 testManual: testManual 6408 }); 6409 6410 if (actionListId && actionTypeId === GENERAL_START_ACTION || isQuickEffect(actionTypeId)) { 6411 stopActionGroup({ 6412 store: store, 6413 actionListId: actionListId 6414 }); 6415 renderInitialGroup({ 6416 store: store, 6417 actionListId: actionListId, 6418 eventId: eventId 6419 }); 6420 var started = startActionGroup({ 6421 store: store, 6422 eventId: eventId, 6423 actionListId: actionListId, 6424 immediate: immediate,
6425 verbose: verbose 6426 }); 6427 6428 if (verbose && started) { 6429 store.dispatch((0, _IX2EngineActions.actionListPlaybackChanged)({ 6430 actionListId: actionListId, 6431 isPlaying: !immediate 6432 })); 6433 } 6434 } 6435} 6436 6437function handleStopRequest(_ref8, store) { 6438 var actionListId = _ref8.actionListId; 6439 6440 if (actionListId) { 6441 stopActionGroup({ 6442 store: store, 6443 actionListId: actionListId 6444 }); 6445 } else { 6446 stopAllActionGroups({ 6447 store: store 6448 }); 6449 } 6450 6451 stopEngine(store); 6452} 6453 6454function handleClearRequest(state, store) { 6455 stopEngine(store); 6456 clearAllStyles({ 6457 store: store, 6458 elementApi: elementApi 6459 }); 6460} 6461 6462function startEngine(_ref9) { 6463 var store = _ref9.store, 6464 rawData = _ref9.rawData, 6465 allowEvents = _ref9.allowEvents, 6466 testManual = _ref9.testManual; 6467 6468 var _store$getState = store.getState(), 6469 ixSession = _store$getState.ixSession; 6470 6471 if (rawData) { 6472 store.dispatch((0, _IX2EngineActions.rawDataImported)(rawData)); 6473 } 6474 6475 if (!ixSession.active) { 6476 store.dispatch((0, _IX2EngineActions.sessionInitialized)({ 6477 hasBoundaryNodes: Boolean(document.querySelector(BOUNDARY_SELECTOR)) 6478 })); 6479 6480 if (allowEvents) { 6481 bindEvents(store); 6482 addDocumentClass(); 6483 6484 if (store.getState().ixSession.hasDefinedMediaQueries) { 6485 observeMediaQueryChange(store); 6486 } 6487 } 6488 6489 store.dispatch((0, _IX2EngineActions.sessionStarted)()); 6490 startRenderLoop(store, testManual); 6491 } 6492} 6493 6494function addDocumentClass() { 6495 var _document = document, 6496 documentElement = _document.documentElement; 6497 6498 if (documentElement.className.indexOf(W_MOD_IX) === -1) { 6499 documentElement.className += " ".concat(W_MOD_IX); 6500 } 6501} 6502 6503function startRenderLoop(store, testManual) { 6504 var handleFrame = function handleFrame(now) { 6505 var _store$getState2 = store.getState(), 6506 ixSession = _store$getState2.ixSession, 6507 ixParameters = _store$getState2.ixParameters; 6508 6509 if (ixSession.active) { 6510 store.dispatch((0, _IX2EngineActions.animationFrameChanged)(now, ixParameters)); 6511 6512 if (testManual) { 6513 observeOneRenderTick(store, handleFrame); 6514 } else { 6515 requestAnimationFrame(handleFrame); 6516 } 6517 } 6518 }; 6519 6520 handleFrame(window.performance.now()); 6521} 6522 6523function stopEngine(store) { 6524 var _store$getState3 = store.getState(), 6525 ixSession = _store$getState3.ixSession; 6526 6527 if (ixSession.active) { 6528 var eventListeners = ixSession.eventListeners; 6529 eventListeners.forEach(clearEventListener); 6530 store.dispatch((0, _IX2EngineActions.sessionStopped)()); 6531 } 6532} 6533 6534function clearEventListener(_ref10) { 6535 var target = _ref10.target, 6536 listenerParams = _ref10.listenerParams; 6537 target.removeEventListener.apply(target, listenerParams); 6538} 6539 6540function createGroupInstances(_ref11) { 6541 var store = _ref11.store, 6542 eventStateKey = _ref11.eventStateKey, 6543 eventTarget = _ref11.eventTarget, 6544 eventId = _ref11.eventId, 6545 eventConfig = _ref11.eventConfig, 6546 actionListId = _ref11.actionListId, 6547 parameterGroup = _ref11.parameterGroup, 6548 smoothing = _ref11.smoothing, 6549 restingValue = _ref11.restingValue; 6550 6551 var _store$getState4 = store.getState(), 6552 ixData = _store$getState4.ixData, 6553 ixSession = _store$getState4.ixSession; 6554 6555 var events = ixData.events; 6556 var event = events[eventId]; 6557 var eventTypeId = event.eventTypeId; 6558 var targetCache = {}; 6559 var instanceActionGroups = {}; 6560 var instanceConfigs = []; 6561 var continuousActionGroups = parameterGroup.continuousActionGroups; 6562 var parameterId = parameterGroup.id; 6563 6564 if (shouldNamespaceEventParameter(eventTypeId, eventConfig)) { 6565 parameterId = getNamespacedParameterId(eventStateKey, parameterId); 6566 } // Limit affected elements when event target is within a boundary node 6567 6568 6569 var eventElementRoot = ixSession.hasBoundaryNodes && eventTarget ? elementApi.getClosestElement(eventTarget, BOUNDARY_SELECTOR) : null; 6570 continuousActionGroups.forEach(function (actionGroup) { 6571 var keyframe = actionGroup.keyframe, 6572 actionItems = actionGroup.actionItems; 6573 actionItems.forEach(function (actionItem) { 6574 var actionTypeId = actionItem.actionTypeId; 6575 var target = actionItem.config.target; 6576 6577 if (!target) { 6578 return; 6579 } 6580 6581 var elementRoot = target.boundaryMode ? eventElementRoot : null; 6582 var key = stringifyTarget(target) + COLON_DELIMITER + actionTypeId; 6583 instanceActionGroups[key] = appendActionItem(instanceActionGroups[key], keyframe, actionItem); 6584 6585 if (!targetCache[key]) { 6586 targetCache[key] = true; 6587 var config = actionItem.config; 6588 getAffectedElements({ 6589 config: config, 6590 event: event, 6591 eventTarget: eventTarget, 6592 elementRoot: elementRoot, 6593 elementApi: elementApi 6594 }
6594).forEach(function (element) { 6595 instanceConfigs.push({ 6596 element: element, 6597 key: key 6598 }); 6599 }); 6600 } 6601 }); 6602 }); 6603 instanceConfigs.forEach(function (_ref12) { 6604 var element = _ref12.element, 6605 key = _ref12.key; 6606 var actionGroups = instanceActionGroups[key]; 6607 var actionItem = (0, _get["default"])(actionGroups, "[0].actionItems[0]", {}); 6608 var actionTypeId = actionItem.actionTypeId; 6609 var pluginInstance = isPluginType(actionTypeId) ? createPluginInstance(actionTypeId)(element, actionItem) : null; 6610 var destination = getDestinationValues({ 6611 element: element, 6612 actionItem: actionItem, 6613 elementApi: elementApi 6614 }, pluginInstance); 6615 createInstance({ 6616 store: store, 6617 element: element, 6618 eventId: eventId, 6619 actionListId: actionListId, 6620 actionItem: actionItem, 6621 destination: destination, 6622 continuous: true, 6623 parameterId: parameterId, 6624 actionGroups: actionGroups, 6625 smoothing: smoothing, 6626 restingValue: restingValue, 6627 pluginInstance: pluginInstance 6628 }); 6629 }); 6630} 6631 6632function appendActionItem() { 6633 var actionGroups = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; 6634 var keyframe = arguments.length > 1 ? arguments[1] : undefined; 6635 var actionItem = arguments.length > 2 ? arguments[2] : undefined; 6636 var newActionGroups = (0, _toConsumableArray2["default"])(actionGroups); 6637 var groupIndex; 6638 newActionGroups.some(function (group, index) { 6639 if (group.keyframe === keyframe) { 6640 groupIndex = index; 6641 return true; 6642 } 6643 6644 return false; 6645 }); 6646 6647 if (groupIndex == null) { 6648 groupIndex = newActionGroups.length; 6649 newActionGroups.push({ 6650 keyframe: keyframe, 6651 actionItems: [] 6652 }); 6653 } 6654 6655 newActionGroups[groupIndex].actionItems.push(actionItem); 6656 return newActionGroups; 6657} 6658 6659function bindEvents(store) { 6660 var _store$getState5 = store.getState(), 6661 ixData = _store$getState5.ixData; 6662 6663 var eventTypeMap = ixData.eventTypeMap; 6664 updateViewportWidth(store); 6665 (0, _forEach["default"])(eventTypeMap, function (events, key) { 6666 var logic = _IX2VanillaEvents["default"][key]; 6667 6668 if (!logic) { 6669 console.warn("IX2 event type not configured: ".concat(key)); 6670 return; 6671 } 6672 6673 bindEventType({ 6674 logic: logic, 6675 store: store, 6676 events: events 6677 }); 6678 }); 6679 6680 var _store$getState6 = store.getState(), 6681 ixSession = _store$getState6.ixSession; 6682 6683 if (ixSession.eventListeners.length) { 6684 bindResizeEvents(store); 6685 } 6686} 6687 6688var WINDOW_RESIZE_EVENTS = ['resize', 'orientationchange']; 6689 6690function bindResizeEvents(store) { 6691 var handleResize = function handleResize() { 6692 updateViewportWidth(store); 6693 }; 6694 6695 WINDOW_RESIZE_EVENTS.forEach(function (type) { 6696 window.addEventListener(type, handleResize); 6697 store.dispatch((0, _IX2EngineActions.eventListenerAdded)(window, [type, handleResize])); 6698 }); 6699 handleResize(); 6700} 6701 6702function updateViewportWidth(store) { 6703 var _store$getState7 = store.getState(), 6704 ixSession = _store$getState7.ixSession, 6705 ixData = _store$getState7.ixData; 6706 6707 var width = window.innerWidth; 6708 6709 if (width !== ixSession.viewportWidth) { 6710 var mediaQueries = ixData.mediaQueries; 6711 store.dispatch((0, _IX2EngineActions.viewportWidthChanged)({ 6712 width: width, 6713 mediaQueries: mediaQueries 6714 })); 6715 } 6716} 6717 6718var mapFoundValues = function mapFoundValues(object, iteratee) { 6719 return (0, _omitBy["default"])((0, _mapValues["default"])(object, iteratee), _isEmpty["default"]); 6720}; 6721 6722var forEachEventTarget = function forEachEventTarget(eventTargets, eventCallback) { 6723 (0, _forEach["default"])(eventTargets, function (elements, eventId) { 6724 elements.forEach(function (element, index) { 6725 var eventStateKey = eventId + COLON_DELIMITER + index; 6726 eventCallback(element, eventId, eventStateKey); 6727 }); 6728 }); 6729}; 6730 6731var getAffectedForEvent = function getAffectedForEvent(event) { 6732 var config = { 6733 target: event.target 6734 }; 6735 return getAffectedElements({ 6736 config: config, 6737 elementApi: elementApi 6738 }); 6739}; 6740 6741function bindEventType(_ref13) { 6742 var logic = _ref13.logic, 6743 store = _ref13.store, 6744 events = _ref13.events; 6745 injectBehaviorCSSFixes(events); 6746 var eventTypes = logic.types, 6747 eventHandler = logic.handler; 6748 6749 var _store$getState8 = store.getState(), 6750 ixData = _store$getState8.ixData; 6751 6752 var actionLists = ixData.actionLists; 6753 var eventTargets = mapFoundValues(events, getAffectedForEvent); 6754 6755 if (!(0, _size["default"])(eventTargets)) { 6756 return; 6757 } 6758
6759 (0, _forEach["default"])(eventTargets, function (elements, key) { 6760 var event = events[key]; 6761 var eventAction = event.action, 6762 eventId = event.id, 6763 _event$mediaQueries = event.mediaQueries, 6764 mediaQueries = _event$mediaQueries === void 0 ? ixData.mediaQueryKeys : _event$mediaQueries; 6765 var actionListId = eventAction.config.actionListId; 6766 6767 if (!mediaQueriesEqual(mediaQueries, ixData.mediaQueryKeys)) { 6768 store.dispatch((0, _IX2EngineActions.mediaQueriesDefined)()); 6769 } 6770 6771 if (eventAction.actionTypeId === GENERAL_CONTINUOUS_ACTION) { 6772 var configs = Array.isArray(event.config) ? event.config : [event.config]; 6773 configs.forEach(function (eventConfig) { 6774 var continuousParameterGroupId = eventConfig.continuousParameterGroupId; 6775 var paramGroups = (0, _get["default"])(actionLists, "".concat(actionListId, ".continuousParameterGroups"), []); 6776 var parameterGroup = (0, _find["default"])(paramGroups, function (_ref14) { 6777 var id = _ref14.id; 6778 return id === continuousParameterGroupId; 6779 }); 6780 var smoothing = (eventConfig.smoothing || 0) / 100; 6781 var restingValue = (eventConfig.restingState || 0) / 100; 6782 6783 if (!parameterGroup) { 6784 return; 6785 } 6786 6787 elements.forEach(function (eventTarget, index) { 6788 var eventStateKey = eventId + COLON_DELIMITER + index; 6789 createGroupInstances({ 6790 store: store, 6791 eventStateKey: eventStateKey, 6792 eventTarget: eventTarget, 6793 eventId: eventId, 6794 eventConfig: eventConfig, 6795 actionListId: actionListId, 6796 parameterGroup: parameterGroup, 6797 smoothing: smoothing, 6798 restingValue: restingValue 6799 }); 6800 }); 6801 }); 6802 } 6803 6804 if (eventAction.actionTypeId === GENERAL_START_ACTION || isQuickEffect(eventAction.actionTypeId)) { 6805 renderInitialGroup({ 6806 store: store, 6807 actionListId: actionListId, 6808 eventId: eventId 6809 }); 6810 } 6811 }); 6812 6813 var handleEvent = function handleEvent(nativeEvent) { 6814 var _store$getState9 = store.getState(), 6815 ixSession = _store$getState9.ixSession; 6816 6817 forEachEventTarget(eventTargets, function (element, eventId, eventStateKey) { 6818 var event = events[eventId]; 6819 var oldState = ixSession.eventState[eventStateKey]; 6820 var eventAction = event.action, 6821 _event$mediaQueries2 = event.mediaQueries, 6822 mediaQueries = _event$mediaQueries2 === void 0 ? ixData.mediaQueryKeys : _event$mediaQueries2; // Bypass event handler if current media query is not listed in event config 6823 6824 if (!shouldAllowMediaQuery(mediaQueries, ixSession.mediaQueryKey)) { 6825 return; 6826 } 6827 6828 var handleEventWithConfig = function handleEventWithConfig() { 6829 var eventConfig = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; 6830 var newState = eventHandler({ 6831 store: store, 6832 element: element, 6833 event: event, 6834 eventConfig: eventConfig, 6835 nativeEvent: nativeEvent, 6836 eventStateKey: eventStateKey 6837 }, oldState); 6838 6839 if (!(0, _shallowEqual["default"])(newState, oldState)) { 6840 store.dispatch((0, _IX2EngineActions.eventStateChanged)(eventStateKey, newState)); 6841 } 6842 }; 6843 6844 if (eventAction.actionTypeId === GENERAL_CONTINUOUS_ACTION) { 6845 var configs = Array.isArray(event.config) ? event.config : [event.config]; 6846 configs.forEach(handleEventWithConfig); 6847 } else { 6848 handleEventWithConfig(); 6849 } 6850 }); 6851 }; 6852 6853 var handleEventThrottled = (0, _throttle["default"])(handleEvent, THROTTLED_EVENT_WAIT); 6854 6855 var addListeners = function addListeners(_ref15) { 6856 var _ref15$target = _ref15.target, 6857 target = _ref15$target === void 0 ? document : _ref15$target, 6858 types = _ref15.types, 6859 shouldThrottle = _ref15.throttle;
6860 types.split(' ').filter(Boolean).forEach(function (type) { 6861 var handlerFunc = shouldThrottle ? handleEventThrottled : handleEvent; 6862 target.addEventListener(type, handlerFunc); 6863 store.dispatch((0, _IX2EngineActions.eventListenerAdded)(target, [type, handlerFunc])); 6864 }); 6865 }; 6866 6867 if (Array.isArray(eventTypes)) { 6868 eventTypes.forEach(addListeners); 6869 } else if (typeof eventTypes === 'string') { 6870 addListeners(logic); 6871 } 6872} 6873/** 6874 * Injects CSS into the document to fix behavior issues across 6875 * different devices. 6876 */ 6877 6878 6879function injectBehaviorCSSFixes(events) { 6880 if (!IS_MOBILE_SAFARI) { 6881 return; 6882 } 6883 6884 var injectedSelectors = {}; 6885 var cssText = ''; 6886 6887 for (var eventId in events) { 6888 var _events$eventId = events[eventId], 6889 eventTypeId = _events$eventId.eventTypeId, 6890 target = _events$eventId.target; 6891 var selector = elementApi.getQuerySelector(target); 6892 6893 if (injectedSelectors[selector]) { 6894 continue; 6895 } // add a "cursor: pointer" style rule to ensure that CLICK events get fired for IOS devices 6896 6897 6898 if (eventTypeId === MOUSE_CLICK || eventTypeId === MOUSE_SECOND_CLICK) { 6899 injectedSelectors[selector] = true; 6900 cssText += selector + '{' + 'cursor: pointer;' + 'touch-action: manipulation;' + '}'; 6901 } 6902 } 6903 6904 if (cssText) { 6905 var style = document.createElement('style'); 6906 style.textContent = cssText; 6907 document.body.appendChild(style); 6908 } 6909} 6910 6911function renderInitialGroup(_ref16) { 6912 var store = _ref16.store, 6913 actionListId = _ref16.actionListId, 6914 eventId = _ref16.eventId; 6915 6916 var _store$getState10 = store.getState(), 6917 ixData = _store$getState10.ixData, 6918 ixSession = _store$getState10.ixSession; 6919 6920 var actionLists = ixData.actionLists, 6921 events = ixData.events; 6922 var event = events[eventId]; 6923 var actionList = actionLists[actionListId]; 6924 6925 if (actionList && actionList.useFirstGroupAsInitialState) { 6926 var initialStateItems = (0, _get["default"])(actionList, 'actionItemGroups[0].actionItems', []); // Bypass initial state render if current media query is not listed in event config 6927 6928 var mediaQueries = (0, _get["default"])(event, 'mediaQueries', ixData.mediaQueryKeys); 6929 6930 if (!shouldAllowMediaQuery(mediaQueries, ixSession.mediaQueryKey)) { 6931 return; 6932 } 6933 6934 initialStateItems.forEach(function (actionItem) { 6935 var config = actionItem.config, 6936 actionTypeId = actionItem.actionTypeId; 6937 var itemElements = getAffectedElements({ 6938 config: config, 6939 event: event, 6940 elementApi: elementApi 6941 }); 6942 var shouldUsePlugin = isPluginType(actionTypeId); 6943 itemElements.forEach(function (element) { 6944 var pluginInstance = shouldUsePlugin ? createPluginInstance(actionTypeId)(element, actionItem) : null; 6945 createInstance({ 6946 destination: getDestinationValues({ 6947 element: element, 6948 actionItem: actionItem, 6949 elementApi: elementApi 6950 }, pluginInstance), 6951 immediate: true, 6952 store: store, 6953 element: element, 6954 eventId: eventId, 6955 actionItem: actionItem, 6956 actionListId: actionListId, 6957 pluginInstance: pluginInstance 6958 }); 6959 }); 6960 }); 6961 } 6962} 6963 6964function stopAllActionGroups(_ref17) { 6965 var store = _ref17.store; 6966 6967 var _store$getState11 = store.getState(), 6968 ixInstances = _store$getState11.ixInstances; 6969 6970 (0, _forEach["default"])(ixInstances, function (instance) { 6971 if (!instance.continuous) { 6972 var actionListId = instance.actionListId, 6973 verbose = instance.verbose; 6974 removeInstance(instance, store); 6975 6976 if (verbose) { 6977 store.dispatch((0, _IX2EngineActions.actionListPlaybackChanged)({ 6978 actionListId: actionListId, 6979 isPlaying: false 6980 })); 6981 } 6982 } 6983 }); 6984} 6985 6986function stopActionGroup(_ref18) { 6987 var store = _ref18.store, 6988 eventId = _ref18.eventId, 6989 eventTarget = _ref18.eventTarget, 6990 eventStateKey = _ref18.eventStateKey, 6991 actionListId = _ref18.actionListId; 6992 6993 var _store$getState12 = store.getState(), 6994 ixInstances = _store$getState12.ixInstances, 6995 ixSession = _store$getState12.ixSession; // Check for element boundary before stopping engine instances 6996 6997 6998 var eventElementRoot = ixSession.hasBoundaryNodes && eventTarget ? elementApi.getClosestElement(eventTarget, BOUNDARY_SELECTOR) : null;
6999 (0, _forEach["default"])(ixInstances, function (instance) { 7000 var boundaryMode = (0, _get["default"])(instance, 'actionItem.config.target.boundaryMode'); // Validate event key if eventStateKey was provided, otherwise default to true 7001 7002 var validEventKey = eventStateKey ? instance.eventStateKey === eventStateKey : true; // Remove engine instances that match the required ids 7003 7004 if (instance.actionListId === actionListId && instance.eventId === eventId && validEventKey) { 7005 // Avoid removal when root boundary does not contain instance element 7006 if (eventElementRoot && boundaryMode && !elementApi.elementContains(eventElementRoot, instance.element)) { 7007 return; 7008 } 7009 7010 removeInstance(instance, store); 7011 7012 if (instance.verbose) { 7013 store.dispatch((0, _IX2EngineActions.actionListPlaybackChanged)({ 7014 actionListId: actionListId, 7015 isPlaying: false 7016 })); 7017 } 7018 } 7019 }); 7020} 7021 7022function startActionGroup(_ref19) { 7023 var store = _ref19.store, 7024 eventId = _ref19.eventId, 7025 eventTarget = _ref19.eventTarget, 7026 eventStateKey = _ref19.eventStateKey, 7027 actionListId = _ref19.actionListId, 7028 _ref19$groupIndex = _ref19.groupIndex, 7029 groupIndex = _ref19$groupIndex === void 0 ? 0 : _ref19$groupIndex, 7030 immediate = _ref19.immediate, 7031 verbose = _ref19.verbose; 7032 7033 var _store$getState13 = store.getState(), 7034 ixData = _store$getState13.ixData, 7035 ixSession = _store$getState13.ixSession; 7036 7037 var events = ixData.events; 7038 var event = events[eventId] || {}; 7039 var _event$mediaQueries3 = event.mediaQueries, 7040 mediaQueries = _event$mediaQueries3 === void 0 ? ixData.mediaQueryKeys : _event$mediaQueries3; 7041 var actionList = (0, _get["default"])(ixData, "actionLists.".concat(actionListId), {}); 7042 var actionItemGroups = actionList.actionItemGroups, 7043 useFirstGroupAsInitialState = actionList.useFirstGroupAsInitialState; // Reset to first group when event loop is configured 7044 7045 if (groupIndex >= actionItemGroups.length && (0, _get["default"])(event, 'config.loop')) { 7046 groupIndex = 0; 7047 } // Skip initial state group during action list playback, as it should already be applied 7048 7049 7050 if (groupIndex === 0 && useFirstGroupAsInitialState) { 7051 groupIndex++; 7052 } // Identify first animated group and apply the initial QuickEffect delay 7053 7054 7055 var isFirstGroup = groupIndex === 0 || groupIndex === 1 && useFirstGroupAsInitialState; 7056 var instanceDelay = isFirstGroup && isQuickEffect(event.action && event.action.actionTypeId) ? event.config.delay : undefined; // Abort playback if no action items exist at group index 7057 7058 var actionItems = (0, _get["default"])(actionItemGroups, [groupIndex, 'actionItems'], []); 7059 7060 if (!actionItems.length) { 7061 return false; 7062 } // Abort playback if current media query is not listed in event config 7063 7064 7065 if (!shouldAllowMediaQuery(mediaQueries, ixSession.mediaQueryKey)) { 7066 return false; 7067 } // Limit affected elements when event target is within a boundary node 7068 7069 7070 var eventElementRoot = ixSession.hasBoundaryNodes && eventTarget ? elementApi.getClosestElement(eventTarget, BOUNDARY_SELECTOR) : null; 7071 var carrierIndex = getMaxDurationItemIndex(actionItems); 7072 var groupStartResult = false;
7073 actionItems.forEach(function (actionItem, actionIndex) { 7074 var config = actionItem.config, 7075 actionTypeId = actionItem.actionTypeId; 7076 var shouldUsePlugin = isPluginType(actionTypeId); 7077 var target = config.target; 7078 7079 if (!target) { 7080 return; 7081 } 7082 7083 var elementRoot = target.boundaryMode ? eventElementRoot : null; 7084 var elements = getAffectedElements({ 7085 config: config, 7086 event: event, 7087 eventTarget: eventTarget, 7088 elementRoot: elementRoot, 7089 elementApi: elementApi 7090 }); 7091 elements.forEach(function (element, elementIndex) { 7092 var pluginInstance = shouldUsePlugin ? createPluginInstance(actionTypeId)(element, actionItem) : null; 7093 groupStartResult = true; 7094 var isCarrier = carrierIndex === actionIndex && elementIndex === 0; 7095 var computedStyle = getComputedStyle({ 7096 element: element, 7097 actionItem: actionItem 7098 }); 7099 var destination = getDestinationValues({ 7100 element: element, 7101 actionItem: actionItem, 7102 elementApi: elementApi 7103 }, pluginInstance); 7104 createInstance({ 7105 store: store, 7106 element: element, 7107 actionItem: actionItem, 7108 eventId: eventId, 7109 eventTarget: eventTarget, 7110 eventStateKey: eventStateKey, 7111 actionListId: actionListId, 7112 groupIndex: groupIndex, 7113 isCarrier: isCarrier, 7114 computedStyle: computedStyle, 7115 destination: destination, 7116 immediate: immediate, 7117 verbose: verbose, 7118 pluginInstance: pluginInstance, 7119 instanceDelay: instanceDelay 7120 }); 7121 }); 7122 }); 7123 return groupStartResult; 7124} 7125 7126function createInstance(options) { 7127 var store = options.store, 7128 computedStyle = options.computedStyle, 7129 rest = (0, _objectWithoutProperties2["default"])(options, ["store", "computedStyle"]); 7130 var autoStart = !rest.continuous; 7131 var element = rest.element, 7132 actionItem = rest.actionItem, 7133 immediate = rest.immediate, 7134 pluginInstance = rest.pluginInstance; 7135 var instanceId = getInstanceId(); 7136 7137 var _store$getState14 = store.getState(), 7138 ixElements = _store$getState14.ixElements, 7139 ixSession = _store$getState14.ixSession; 7140 7141 var elementId = getElementId(ixElements, element); 7142 7143 var _ref20 = ixElements[elementId] || {}, 7144 refState = _ref20.refState; 7145 7146 var refType = elementApi.getRefType(element); 7147 var origin = getInstanceOrigin(element, refState, computedStyle, actionItem, elementApi, pluginInstance); 7148 store.dispatch((0, _IX2EngineActions.instanceAdded)((0, _objectSpread2["default"])({ 7149 instanceId: instanceId, 7150 elementId: elementId, 7151 origin: origin, 7152 refType: refType 7153 }, rest))); 7154 dispatchCustomEvent(document.body, 'ix2-animation-started', instanceId); 7155 7156 if (immediate) { 7157 renderImmediateInstance(store, instanceId); 7158 return; 7159 } 7160 7161 observeStore({ 7162 store: store, 7163 select: function select(_ref21) { 7164 var ixInstances = _ref21.ixInstances; 7165 return ixInstances[instanceId]; 7166 }, 7167 onChange: handleInstanceChange 7168 }); 7169 7170 if (autoStart) { 7171 store.dispatch((0, _IX2EngineActions.instanceStarted)(instanceId, ixSession.tick)); 7172 } 7173} 7174 7175function removeInstance(instance, store) { 7176 dispatchCustomEvent(document.body, 'ix2-animation-stopping', { 7177 instanceId: instance.id, 7178 state: store.getState() 7179 }); 7180 var elementId = instance.elementId, 7181 actionItem = instance.actionItem; 7182 7183 var _store$getState15 = store.getState(), 7184 ixElements = _store$getState15.ixElements; 7185 7186 var _ref22 = ixElements[elementId] || {}, 7187 ref = _ref22.ref, 7188 refType = _ref22.refType; 7189 7190 if (refType === HTML_ELEMENT) { 7191 cleanupHTMLElement(ref, actionItem, elementApi); 7192 } 7193 7194 store.dispatch((0, _IX2EngineActions.instanceRemoved)(instance.id)); 7195} 7196 7197function dispatchCustomEvent(element, eventName, detail) { 7198 var event = document.createEvent('CustomEvent'); 7199 event.initCustomEvent(eventName, true, true, detail); 7200 element.dispatchEvent(event); 7201} 7202 7203function renderImmediateInstance(store, instanceId) { 7204 var _store$getState16 = store.getState(), 7205 ixParameters = _store$getState16.ixParameters; 7206 7207 store.dispatch((0, _IX2EngineActions.instanceStarted)(instanceId, 0)); 7208 store.dispatch((0, _IX2EngineActions.animationFrameChanged)(performance.now(), ixParameters)); 7209 7210 var _store$getState17 = store.getState(), 7211 ixInstances = _store$getState17.ixInstances; 7212 7213 handleInstanceChange(ixInstances[instanceId], store); 7214} 7215 7216function handleInstanceChange(instance, store) { 7217 var active = instance.active, 7218 continuous = instance.continuous, 7219 complete = instance.complete, 7220 elementId = instance.elementId, 7221 actionItem = instance.actionItem, 7222 actionTypeId = instance.actionTypeId, 7223 renderType = instance.renderType, 7224 current = instance.current, 7225 groupIndex = instance.groupIndex, 7226 eventId = instance.eventId, 7227 eventTarget = instance.eventTarget, 7228 eventStateKey = instance.eventStateKey, 7229 actionListId = instance.actionListId, 7230 isCarrier = instance.isCarrier, 7231 styleProp = instance.styleProp, 7232 verbose = instance.verbose, 7233 pluginInstance = instance.pluginInstance; // Bypass render if current media query is not listed in event config 7234 7235 var _store$getState18 = store.getState(), 7236 ixData = _store$getState18.ixData, 7237 ixSession = _store$getState18.ixSession; 7238 7239 var events = ixData.events; 7240 var event = events[eventId] || {}; 7241 var _event$mediaQueries4 = event.mediaQueries, 7242 mediaQueries = _event$mediaQueries4 === void 0 ? ixData.mediaQueryKeys : _event$mediaQueries4; 7243 7244 if (!shouldAllowMediaQuery(mediaQueries, ixSession.mediaQueryKey)) { 7245 return; 7246 } 7247 7248 if (continuous || active || complete) { 7249 if (current || renderType === RENDER_GENERAL && complete) { 7250 // Render current values to ref state and grab latest 7251 store.dispatch((0, _IX2EngineActions.elementStateChanged)(elementId, actionTypeId, current, actionItem)); 7252 7253 var _store$getState19 = store.getState(), 7254 ixElements = _store$getState19.ixElements; 7255 7256 var _ref23 = ixElements[elementId] || {}, 7257 ref = _ref23.ref, 7258 refType = _ref23.refType, 7259 refState = _ref23.refState; 7260 7261 var actionState = refState && refState[actionTypeId]; // Choose render based on ref type 7262 7263 switch (refType) { 7264 case HTML_ELEMENT: 7265 { 7266 renderHTMLElement(ref, refState, actionState, eventId, actionItem, styleProp, elementApi, renderType, pluginInstance); 7267 break; 7268 } 7269 } 7270 } 7271 7272 if (complete) { 7273 if (isCarrier) { 7274 var started = startActionGroup({ 7275 store: store, 7276 eventId: eventId, 7277 eventTarget: eventTarget, 7278 eventStateKey: eventStateKey, 7279 actionListId: actionListId, 7280 groupIndex: groupIndex + 1,
7281 verbose: verbose 7282 }); 7283 7284 if (verbose && !started) { 7285 store.dispatch((0, _IX2EngineActions.actionListPlaybackChanged)({ 7286 actionListId: actionListId, 7287 isPlaying: false 7288 })); 7289 } 7290 } 7291 7292 removeInstance(instance, store); 7293 } 7294 } 7295} 7296 7297/***/ }), 7298/* 94 */ 7299/***/ (function(module, exports, __webpack_require__) { 7300 7301var defineProperty = __webpack_require__(95); 7302 7303/** 7304 * The base implementation of `assignValue` and `assignMergeValue` without 7305 * value checks. 7306 * 7307 * @private 7308 * @param {Object} object The object to modify. 7309 * @param {string} key The key of the property to assign. 7310 * @param {*} value The value to assign. 7311 */ 7312function baseAssignValue(object, key, value) { 7313 if (key == '__proto__' && defineProperty) { 7314 defineProperty(object, key, { 7315 'configurable': true, 7316 'enumerable': true, 7317 'value': value, 7318 'writable': true 7319 }); 7320 } else { 7321 object[key] = value; 7322 } 7323} 7324 7325module.exports = baseAssignValue; 7326 7327 7328/***/ }), 7329/* 95 */ 7330/***/ (function(module, exports, __webpack_require__) { 7331 7332var getNative = __webpack_require__(7); 7333 7334var defineProperty = (function() { 7335 try { 7336 var func = getNative(Object, 'defineProperty'); 7337 func({}, '', {}); 7338 return func; 7339 } catch (e) {} 7340}()); 7341 7342module.exports = defineProperty; 7343 7344 7345/***/ }), 7346/* 96 */ 7347/***/ (function(module, exports) { 7348 7349/** 7350 * The base implementation of `_.clamp` which doesn't coerce arguments. 7351 * 7352 * @private 7353 * @param {number} number The number to clamp. 7354 * @param {number} [lower] The lower bound. 7355 * @param {number} upper The upper bound. 7356 * @returns {number} Returns the clamped number. 7357 */ 7358function baseClamp(number, lower, upper) { 7359 if (number === number) { 7360 if (upper !== undefined) { 7361 number = number <= upper ? number : upper; 7362 } 7363 if (lower !== undefined) { 7364 number = number >= lower ? number : lower; 7365 } 7366 } 7367 return number; 7368} 7369 7370module.exports = baseClamp; 7371 7372 7373/***/ }), 7374/* 97 */ 7375/***/ (function(module, exports, __webpack_require__) { 7376 7377var isObject = __webpack_require__(5); 7378 7379/** Built-in value references. */ 7380var objectCreate = Object.create; 7381 7382/** 7383 * The base implementation of `_.create` without support for assigning 7384 * properties to the created object. 7385 * 7386 * @private 7387 * @param {Object} proto The object to inherit from. 7388 * @returns {Object} Returns the new object. 7389 */ 7390var baseCreate = (function() { 7391 function object() {} 7392 return function(proto) { 7393 if (!isObject(proto)) { 7394 return {}; 7395 } 7396 if (objectCreate) { 7397 return objectCreate(proto); 7398 } 7399 object.prototype = proto; 7400 var result = new object; 7401 object.prototype = undefined; 7402 return result; 7403 }; 7404}()); 7405 7406module.exports = baseCreate; 7407 7408 7409/***/ }), 7410/* 98 */ 7411/***/ (function(module, exports, __webpack_require__) { 7412 7413var metaMap = __webpack_require__(249), 7414 noop = __webpack_require__(250); 7415 7416/** 7417 * Gets metadata for `func`. 7418 * 7419 * @private 7420 * @param {Function} func The function to query. 7421 * @returns {*} Returns the metadata for `func`. 7422 */ 7423var getData = !metaMap ? noop : function(func) { 7424 return metaMap.get(func); 7425}; 7426 7427module.exports = getData; 7428 7429 7430/***/ }), 7431/* 99 */ 7432/***/ (function(module, exports, __webpack_require__) { 7433 7434var realNames = __webpack_require__(251); 7435 7436/** Used for built-in method references. */ 7437var objectProto = Object.prototype; 7438 7439/** Used to check objects for own properties. */ 7440var hasOwnProperty = objectProto.hasOwnProperty; 7441 7442/** 7443 * Gets the name of `func`. 7444 * 7445 * @private 7446 * @param {Function} func The function to query. 7447 * @returns {string} Returns the function name. 7448 */ 7449function getFuncName(func) { 7450 var result = (func.name + ''), 7451 array = realNames[result], 7452 length = hasOwnProperty.call(realNames, result) ? array.length : 0; 7453 7454 while (length--) { 7455 var data = array[length], 7456 otherFunc = data.func; 7457 if (otherFunc == null || otherFunc == func) { 7458 return data.name; 7459 } 7460 } 7461 return result; 7462} 7463 7464module.exports = getFuncName; 7465 7466 7467/***/ }), 7468/* 100 */ 7469/***/ (function(module, exports, __webpack_require__) { 7470 7471__webpack_require__(101); 7472__webpack_require__(27); 7473__webpack_require__(103); 7474__webpack_require__(28); 7475__webpack_require__(104); 7476__webpack_require__(257); 7477__webpack_require__(258); 7478__webpack_require__(259); 7479__webpack_require__(260); 7480__webpack_require__(261); 7481__webpack_require__(262); 7482module.exports = __webpack_require__(263); 7483 7484 7485/***/ }), 7486/* 101 */ 7487/***/ (function(module, exports, __webpack_require__) { 7488 7489"use strict"; 7490 // @wf-will-never-add-flow-to-this-file 7491 7492/* eslint-disable */ 7493 7494/** 7495 * Webflow: Brand pages on the subdomain 7496 */ 7497 7498var Webflow = __webpack_require__(2); 7499 7500Webflow.define('brand', module.exports = function ($) { 7501 var api = {}; 7502 var doc = document; 7503 var $html = $('html'); 7504 var $body = $('body'); 7505 var namespace = '.w-webflow-badge'; 7506 var location = window.location; 7507 var isPhantom = /PhantomJS/i.test(navigator.userAgent); 7508 var fullScreenEvents = 'fullscreenchange webkitfullscreenchange mozfullscreenchange msfullscreenchange'; 7509 var brandElement; // ----------------------------------- 7510 // Module methods 7511 7512 api.ready = function () { 7513 var shouldBrand = $html.attr('data-wf-status'); 7514 var publishedDomain = $html.attr('data-wf-domain') || ''; 7515 7516 if (/\.webflow\.io$/i.test(publishedDomain) && location.hostname !== publishedDomain) { 7517 shouldBrand = true; 7518 } 7519 7520 if (shouldBrand && !isPhantom) { 7521 brandElement = brandElement || createBadge(); 7522 ensureBrand(); 7523 setTimeout(ensureBrand, 500); 7524 $(doc).off(fullScreenEvents, onFullScreenChange).on(fullScreenEvents, onFullScreenChange); 7525 } 7526 }; 7527 7528 function onFullScreenChange() { 7529 var fullScreen = doc.fullScreen || doc.mozFullScreen || doc.webkitIsFullScreen || doc.msFullscreenElement || Boolean(doc.webkitFullscreenElement);
7530 $(brandElement).attr('style', fullScreen ? 'display: none !important;' : ''); 7531 } 7532 7533 function createBadge() { 7534 var $brand = $('<a class="w-webflow-badge"></a>').attr('href', 'https://webflow.com?utm_campaign=brandjs'); 7535 var $logoArt = $('<img>').attr('src', 'https://d3e54v103j8qbb.cloudfront.net/img/webflow-badge-icon.f67cd735e3.svg').attr('alt', '').css({ 7536 marginRight: '8px', 7537 width: '16px' 7538 }); 7539 var $logoText = $('<img>').attr('src', 'https://d1otoma47x30pg.cloudfront.net/img/webflow-badge-text.6faa6a38cd.svg').attr('alt', 'Made in Webflow'); 7540 $brand.append($logoArt, $logoText); 7541 return $brand[0]; 7542 } 7543 7544 function ensureBrand() { 7545 var found = $body.children(namespace); 7546 var match = found.length && found.get(0) === brandElement; 7547 var inEditor = Webflow.env('editor'); 7548 7549 if (match) { 7550 // Remove brand when Editor is active 7551 if (inEditor) { 7552 found.remove(); 7553 } // Exit early, brand is in place 7554 7555 7556 return; 7557 } // Remove any invalid brand elements 7558 7559 7560 if (found.length) { 7561 found.remove(); 7562 } // Append the brand (unless Editor is active) 7563 7564 7565 if (!inEditor) { 7566 $body.append(brandElement); 7567 } 7568 } // Export module 7569 7570 7571 return api; 7572}); 7573 7574/***/ }), 7575/* 102 */ 7576/***/ (function(module, exports, __webpack_require__) { 7577 7578"use strict"; 7579 // @wf-will-never-add-flow-to-this-file 7580 7581/* eslint-disable */ 7582// Include tram for frame-throttling 7583 7584var $ = window.$; 7585var tram = __webpack_require__(55) && $.tram; 7586/*eslint-disable */ 7587 7588/*! 7589 * Webflow._ (aka) Underscore.js 1.6.0 (custom build) 7590 * _.each 7591 * _.map 7592 * _.find 7593 * _.filter 7594 * _.any 7595 * _.contains 7596 * _.delay 7597 * _.defer 7598 * _.throttle (webflow) 7599 * _.debounce 7600 * _.keys 7601 * _.has 7602 * _.now 7603 * 7604 * http://underscorejs.org 7605 * (c) 2009-2013 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors 7606 * Underscore may be freely distributed under the MIT license. 7607 * @license MIT 7608 */ 7609 7610module.exports = function () { 7611 var _ = {}; // Current version. 7612 7613 _.VERSION = '1.6.0-Webflow'; // Establish the object that gets returned to break out of a loop iteration. 7614 7615 var breaker = {}; // Save bytes in the minified (but not gzipped) version: 7616 7617 var ArrayProto = Array.prototype, 7618 ObjProto = Object.prototype, 7619 FuncProto = Function.prototype; // Create quick reference variables for speed access to core prototypes. 7620 7621 var push = ArrayProto.push, 7622 slice = ArrayProto.slice, 7623 concat = ArrayProto.concat, 7624 toString = ObjProto.toString, 7625 hasOwnProperty = ObjProto.hasOwnProperty; // All **ECMAScript 5** native function implementations that we hope to use 7626 // are declared here. 7627 7628 var nativeForEach = ArrayProto.forEach, 7629 nativeMap = ArrayProto.map, 7630 nativeReduce = ArrayProto.reduce, 7631 nativeReduceRight = ArrayProto.reduceRight, 7632 nativeFilter = ArrayProto.filter, 7633 nativeEvery = ArrayProto.every, 7634 nativeSome = ArrayProto.some, 7635 nativeIndexOf = ArrayProto.indexOf, 7636 nativeLastIndexOf = ArrayProto.lastIndexOf, 7637 nativeIsArray = Array.isArray, 7638 nativeKeys = Object.keys, 7639 nativeBind = FuncProto.bind; // Collection Functions 7640 // -------------------- 7641 // The cornerstone, an `each` implementation, aka `forEach`. 7642 // Handles objects with the built-in `forEach`, arrays, and raw objects. 7643 // Delegates to **ECMAScript 5**'s native `forEach` if available. 7644 7645 var each = _.each = _.forEach = function (obj, iterator, context) { 7646 /* jshint shadow:true */ 7647 if (obj == null) return obj; 7648 7649 if (nativeForEach && obj.forEach === nativeForEach) { 7650 obj.forEach(iterator, context); 7651 } else if (obj.length === +obj.length) { 7652 for (var i = 0, length = obj.length; i < length; i++) { 7653 if (iterator.call(context, obj[i], i, obj) === breaker) return; 7654 } 7655 } else { 7656 var keys = _.keys(obj); 7657 7658 for (var i = 0, length = keys.length; i < length; i++) { 7659 if (iterator.call(context, obj[keys[i]], keys[i], obj) === breaker) return; 7660 } 7661 } 7662 7663 return obj; 7664 }; // Return the results of applying the iterator to each element. 7665 // Delegates to **ECMAScript 5**'s native `map` if available. 7666 7667 7668 _.map = _.collect = function (obj, iterator, context) { 7669 var results = []; 7670 if (obj == null) return results; 7671 if (nativeMap && obj.map === nativeMap) return obj.map(iterator, context); 7672 each(obj, function (value, index, list) { 7673 results.push(iterator.call(context, value, index, list)); 7674 }); 7675 return results; 7676 }; // Return the first value which passes a truth test. Aliased as `detect`. 7677 7678 7679 _.find = _.detect = function (obj, predicate, context) { 7680 var result; 7681 any(obj, function (value, index, list) { 7682 if (predicate.call(context, value, index, list)) { 7683 result = value; 7684 return true; 7685 } 7686 }); 7687 return result; 7688 }; // Return all the elements that pass a truth test. 7689 // Delegates to **ECMAScript 5**'s native `filter` if available. 7690 // Aliased as `select`. 7691 7692 7693 _.filter = _.select = function (obj, predicate, context) { 7694 var results = []; 7695 if (obj == null) return results; 7696 if (nativeFilter && obj.filter === nativeFilter) return obj.filter(predicate, context); 7697 each(obj, function (value, index, list) { 7698 if (predicate.call(context, value, index, list)) results.push(value); 7699 }); 7700 return results; 7701 }; // Determine if at least one element in the object matches a truth test. 7702 // Delegates to **ECMAScript 5**'s native `some` if available. 7703 // Aliased as `any`. 7704 7705 7706 var any = _.some = _.any = function (obj, predicate, context) { 7707 predicate || (predicate = _.identity); 7708 var result = false;
7709 if (obj == null) return result; 7710 if (nativeSome && obj.some === nativeSome) return obj.some(predicate, context); 7711 each(obj, function (value, index, list) { 7712 if (result || (result = predicate.call(context, value, index, list))) return breaker; 7713 }); 7714 return !!result; 7715 }; // Determine if the array or object contains a given value (using `===`). 7716 // Aliased as `include`. 7717 7718 7719 _.contains = _.include = function (obj, target) { 7720 if (obj == null) return false; 7721 if (nativeIndexOf && obj.indexOf === nativeIndexOf) return obj.indexOf(target) != -1; 7722 return any(obj, function (value) { 7723 return value === target; 7724 }); 7725 }; // Function (ahem) Functions 7726 // -------------------- 7727 // Delays a function for the given number of milliseconds, and then calls 7728 // it with the arguments supplied. 7729 7730 7731 _.delay = function (func, wait) { 7732 var args = slice.call(arguments, 2); 7733 return setTimeout(function () { 7734 return func.apply(null, args); 7735 }, wait); 7736 }; // Defers a function, scheduling it to run after the current call stack has 7737 // cleared. 7738 7739 7740 _.defer = function (func) { 7741 return _.delay.apply(_, [func, 1].concat(slice.call(arguments, 1))); 7742 }; // Returns a function, that, when invoked, will only be triggered once every 7743 // browser animation frame - using tram's requestAnimationFrame polyfill. 7744 7745 7746 _.throttle = function (func) { 7747 var wait, args, context; 7748 return function () { 7749 if (wait) return; 7750 wait = true; 7751 args = arguments; 7752 context = this; 7753 tram.frame(function () { 7754 wait = false; 7755 func.apply(context, args); 7756 }); 7757 }; 7758 }; // Returns a function, that, as long as it continues to be invoked, will not 7759 // be triggered. The function will be called after it stops being called for 7760 // N milliseconds. If `immediate` is passed, trigger the function on the 7761 // leading edge, instead of the trailing. 7762 7763 7764 _.debounce = function (func, wait, immediate) { 7765 var timeout, args, context, timestamp, result; 7766 7767 var later = function later() { 7768 var last = _.now() - timestamp; 7769 7770 if (last < wait) { 7771 timeout = setTimeout(later, wait - last); 7772 } else { 7773 timeout = null; 7774 7775 if (!immediate) { 7776 result = func.apply(context, args); 7777 context = args = null; 7778 } 7779 } 7780 }; 7781 7782 return function () { 7783 context = this; 7784 args = arguments; 7785 timestamp = _.now(); 7786 var callNow = immediate && !timeout; 7787 7788 if (!timeout) { 7789 timeout = setTimeout(later, wait); 7790 } 7791 7792 if (callNow) { 7793 result = func.apply(context, args); 7794 context = args = null; 7795 } 7796 7797 return result; 7798 }; 7799 }; // Object Functions 7800 // ---------------- 7801 // Fill in a given object with default properties. 7802 7803 7804 _.defaults = function (obj) { 7805 if (!_.isObject(obj)) return obj; 7806 7807 for (var i = 1, length = arguments.length; i < length; i++) { 7808 var source = arguments[i]; 7809 7810 for (var prop in source) { 7811 if (obj[prop] === void 0) obj[prop] = source[prop]; 7812 } 7813 } 7814 7815 return obj; 7816 }; // Retrieve the names of an object's properties. 7817 // Delegates to **ECMAScript 5**'s native `Object.keys` 7818 7819 7820 _.keys = function (obj) { 7821 if (!_.isObject(obj)) return []; 7822 if (nativeKeys) return nativeKeys(obj); 7823 var keys = []; 7824 7825 for (var key in obj) { 7826 if (_.has(obj, key)) keys.push(key); 7827 } 7828 7829 return keys; 7830 }; // Shortcut function for checking if an object has a given property directly 7831 // on itself (in other words, not on a prototype). 7832 7833 7834 _.has = function (obj, key) { 7835 return hasOwnProperty.call(obj, key); 7836 }; // Is a given variable an object? 7837 7838 7839 _.isObject = function (obj) { 7840 return obj === Object(obj); 7841 }; // Utility Functions 7842 // ----------------- 7843 // A (possibly faster) way to get the current timestamp as an integer. 7844 7845 7846 _.now = Date.now || function () { 7847 return new Date().getTime(); 7848 }; // By default, Underscore uses ERB-style template delimiters, change the 7849 // following template settings to use alternative delimiters. 7850 7851 7852 _.templateSettings = { 7853 evaluate: /<%([\s\S]+?)%>/g, 7854 interpolate: /<%=([\s\S]+?)%>/g, 7855 escape: /<%-([\s\S]+?)%>/g 7856 }; // When customizing `templateSettings`, if you don't want to define an 7857 // interpolation, evaluation or escaping regex, we need one that is 7858 // guaranteed not to match. 7859 7860 var noMatch = /(.)^/; // Certain characters need to be escaped so that they can be put into a 7861 // string literal. 7862 7863 var escapes = { 7864 "'": "'", 7865 '\\': '\\', 7866 '\r': 'r', 7867 '\n': 'n', 7868 "\u2028": 'u2028', 7869 "\u2029": 'u2029' 7870 }; 7871 var escaper = /\\|'|\r|\n|\u2028|\u2029/g; 7872 7873 var escapeChar = function escapeChar(match) { 7874 return '\\' + escapes[match]; 7875 }; // JavaScript micro-templating, similar to John Resig's implementation. 7876 // Underscore templating handles arbitrary delimiters, preserves whitespace, 7877 // and correctly escapes quotes within interpolated code. 7878 // NB: `oldSettings` only exists for backwards compatibility. 7879 7880 7881 _.template = function (text, settings, oldSettings) { 7882 if (!settings && oldSettings) settings = oldSettings; 7883 settings = _.defaults({}, settings, _.templateSettings); // Combine delimiters into one regular expression via alternation. 7884 7885 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. 7886 7887 var index = 0; 7888 var source = "__p+='"; 7889 text.replace(matcher, function (match, escape, interpolate, evaluate, offset) { 7890 source += text.slice(index, offset).replace(escaper, escapeChar); 7891 index = offset + match.length; 7892 7893 if (escape) { 7894 source += "'+\n((__t=(" + escape + "))==null?'':_.escape(__t))+\n'"; 7895 } else if (interpolate) { 7896 source += "'+\n((__t=(" + interpolate + "))==null?'':__t)+\n'";
7897 } else if (evaluate) { 7898 source += "';\n" + evaluate + "\n__p+='"; 7899 } // Adobe VMs need the match returned to produce the correct offest. 7900 7901 7902 return match; 7903 }); 7904 source += "';\n"; // If a variable is not specified, place data values in local scope. 7905 7906 if (!settings.variable) source = 'with(obj||{}){\n' + source + '}\n'; 7907 source = "var __t,__p='',__j=Array.prototype.join," + "print=function(){__p+=__j.call(arguments,'');};\n" + source + 'return __p;\n'; 7908 7909 try { 7910 var render = new Function(settings.variable || 'obj', '_', source); 7911 } catch (e) { 7912 e.source = source; 7913 throw e; 7914 } 7915 7916 var template = function template(data) { 7917 return render.call(this, data, _); 7918 }; // Provide the compiled source as a convenience for precompilation. 7919 7920 7921 var argument = settings.variable || 'obj'; 7922 template.source = 'function(' + argument + '){\n' + source + '}'; 7923 return template; 7924 }; // Export underscore 7925 7926 7927 return _; 7928}(); 7929/* eslint-enable */ 7930 7931/***/ }), 7932/* 103 */ 7933/***/ (function(module, exports, __webpack_require__) { 7934 7935"use strict"; 7936 // @wf-will-never-add-flow-to-this-file 7937 7938/* eslint-disable */ 7939 7940/** 7941 * Webflow: Interactions 7942 */ 7943 7944var Webflow = __webpack_require__(2); 7945 7946var IXEvents = __webpack_require__(27); 7947 7948Webflow.define('ix', module.exports = function ($, _) { 7949 var api = {}; 7950 var designer; 7951 var $win = $(window); 7952 var namespace = '.w-ix'; 7953 var tram = $.tram; 7954 var env = Webflow.env; 7955 var inApp = env(); 7956 var emptyFix = env.chrome && env.chrome < 35; 7957 var transNone = 'none 0s ease 0s'; 7958 var $subs = $(); 7959 var config = {}; 7960 var anchors = []; 7961 var loads = []; 7962 var readys = []; 7963 var destroyed; 7964 var readyDelay = 1; // Component types and proxy selectors 7965 7966 var components = { 7967 tabs: '.w-tab-link, .w-tab-pane', 7968 dropdown: '.w-dropdown', 7969 slider: '.w-slide', 7970 navbar: '.w-nav' 7971 }; // ----------------------------------- 7972 // Module methods 7973 7974 api.init = function (list) { 7975 setTimeout(function () { 7976 configure(list); 7977 }, 1); 7978 }; 7979 7980 api.preview = function () { 7981 designer = false;
7982 readyDelay = 100; 7983 setTimeout(function () { 7984 configure(window.__wf_ix); 7985 }, 1); 7986 }; 7987 7988 api.design = function () { 7989 designer = true; 7990 api.destroy(); 7991 }; 7992 7993 api.destroy = function () { 7994 destroyed = true; 7995 $subs.each(teardown); 7996 Webflow.scroll.off(scroll); 7997 IXEvents.async(); 7998 anchors = []; 7999 loads = []; 8000 readys = []; 8001 }; 8002 8003 api.ready = function () { 8004 // Redirect IX init while in design/preview modes 8005 if (inApp) { 8006 return env('design') ? api.design() : api.preview(); 8007 } // Ready should only be used after destroy, as a way to re-init 8008 8009 8010 if (config && destroyed) { 8011 destroyed = false; 8012 init(); 8013 } 8014 }; 8015 8016 api.run = run; 8017 api.style = inApp ? styleApp : stylePub; // ----------------------------------- 8018 // Private methods 8019 8020 function configure(list) { 8021 if (!list) { 8022 return; 8023 } // Map all interactions by slug 8024 8025 8026 config = {}; 8027 8028 _.each(list, function (item) { 8029 config[item.slug] = item.value; 8030 }); // Init ix after config 8031 8032 8033 init(); 8034 } 8035 8036 function init() { 8037 initIX1Engine(); // Need init IXEvents regardless if IX1 events exist since 8038 // IXEvents _also_ dispatch IX2 events. 8039 // Trigger queued events, must happen after init 8040 8041 IXEvents.init(); // Trigger a redraw to ensure all IX intros play 8042 8043 Webflow.redraw.up(); 8044 } 8045 8046 function initIX1Engine() { 8047 // Build each element's interaction keying from data attribute 8048 var els = $('[data-ix]'); 8049 8050 if (!els.length) { 8051 return; 8052 } 8053 8054 els.each(teardown); 8055 els.each(build); // Listen for scroll events if any anchors exist 8056 8057 if (anchors.length) { 8058 Webflow.scroll.on(scroll); 8059 setTimeout(scroll, 1); 8060 } // Handle loads or readys if they exist 8061 8062 8063 if (loads.length) { 8064 Webflow.load(runLoads); 8065 } 8066 8067 if (readys.length) { 8068 setTimeout(runReadys, readyDelay); 8069 } 8070 } 8071 8072 function build(i, el) { 8073 var $el = $(el); 8074 var id = $el.attr('data-ix'); 8075 var ix = config[id]; 8076 8077 if (!ix) { 8078 return; 8079 } 8080 8081 var triggers = ix.triggers; 8082 8083 if (!triggers) { 8084 return; 8085 } // Set styles immediately to provide tram with starting transform values 8086 8087 8088 api.style($el, ix.style); 8089 8090 _.each(triggers, function (trigger) { 8091 var state = {}; 8092 var type = trigger.type; 8093 var stepsB = trigger.stepsB && trigger.stepsB.length; 8094 8095 function runA() { 8096 run(trigger, $el, { 8097 group: 'A' 8098 }); 8099 } 8100 8101 function runB() { 8102 run(trigger, $el, { 8103 group: 'B' 8104 }); 8105 } 8106 8107 if (type === 'load') { 8108 trigger.preload && !inApp ? loads.push(runA) : readys.push(runA); 8109 return; 8110 } 8111 8112 if (type === 'click') { 8113 $el.on('click' + namespace, function (evt) { 8114 // Avoid late clicks on touch devices 8115 if (!Webflow.validClick(evt.currentTarget)) { 8116 return; 8117 } // Prevent default on empty hash urls 8118 8119 8120 if ($el.attr('href') === '#') { 8121 evt.preventDefault(); 8122 } 8123 8124 run(trigger, $el, { 8125 group: state.clicked ? 'B' : 'A' 8126 }); 8127 8128 if (stepsB) { 8129 state.clicked = !state.clicked; 8130 } 8131 }); 8132 $subs = $subs.add($el); 8133 return; 8134 } 8135 8136 if (type === 'hover') { 8137 $el.on('mouseenter' + namespace, runA); 8138 $el.on('mouseleave' + namespace, runB); 8139 $subs = $subs.add($el); 8140 return; 8141 } 8142 8143 if (type === 'scroll') { 8144 anchors.push({ 8145 el: $el, 8146 trigger: trigger, 8147 state: { 8148 active: false 8149 }, 8150 offsetTop: convert(trigger.offsetTop), 8151 offsetBot: convert(trigger.offsetBot) 8152 }); 8153 return; 8154 } // Check for a proxy component selector 8155 // type == [tabs, dropdown, slider, navbar] 8156 8157 8158 var proxy = components[type]; 8159 8160 if (proxy) { 8161 var $proxy = $el.closest(proxy); 8162 $proxy.on(IXEvents.types.INTRO, runA).on(IXEvents.types.OUTRO, runB); 8163 $subs = $subs.add($proxy); 8164 return; 8165 } 8166 }); 8167 } 8168 8169 function convert(offset) { 8170 if (!offset) { 8171 return 0; 8172 } 8173 8174 offset = String(offset); 8175 var result = parseInt(offset, 10); 8176 8177 if (result !== result) { 8178 return 0; 8179 } 8180 8181 if (offset.indexOf('%') > 0) { 8182 result /= 100; 8183 8184 if (result >= 1) { 8185 result = 0.999; 8186 } 8187 } 8188 8189 return result; 8190 } 8191 8192 function teardown(i, el) { 8193 $(el).off(namespace); 8194 } 8195 8196 function scroll() { 8197 var viewTop = $win.scrollTop(); 8198 var viewHeight = $win.height(); // Check each anchor for a valid scroll trigger 8199 8200 var count = anchors.length; 8201 8202 for (var i = 0; i < count; i++) { 8203 var anchor = anchors[i]; 8204 var $el = anchor.el; 8205 var trigger = anchor.trigger; 8206 var stepsB = trigger.stepsB && trigger.stepsB.length; 8207 var state = anchor.state; 8208 var top = $el.offset().top; 8209 var height = $el.outerHeight(); 8210 var offsetTop = anchor.offsetTop; 8211 var offsetBot = anchor.offsetBot; 8212 8213 if (offsetTop < 1 && offsetTop > 0) { 8214 offsetTop *= viewHeight; 8215 } 8216 8217 if (offsetBot < 1 && offsetBot > 0) { 8218 offsetBot *= viewHeight; 8219 } 8220 8221 var active = top + height - offsetTop >= viewTop && top + offsetBot <= viewTop + viewHeight; 8222 8223 if (active === state.active) { 8224 continue; 8225 } 8226 8227 if (active === false && !stepsB) { 8228 continue; 8229 } 8230 8231 state.active = active; 8232 run(trigger, $el, { 8233 group: active ? 'A' : 'B' 8234 }); 8235 } 8236 } 8237 8238 function runLoads() { 8239 var count = loads.length; 8240 8241 for (var i = 0; i < count; i++) { 8242 loads[i](); 8243 } 8244 } 8245 8246 function runReadys() { 8247 var count = readys.length; 8248 8249 for (var i = 0; i < count; i++) { 8250 readys[i](); 8251 } 8252 } 8253 8254 function run(trigger, $el, opts, replay) { 8255 opts = opts || {}; 8256 var done = opts.done; 8257 var preserve3d = trigger.preserve3d;
8257 // Do not run in designer unless forced 8258 8259 if (designer && !opts.force) { 8260 return; 8261 } // Operate on a set of grouped steps 8262 8263 8264 var group = opts.group || 'A'; 8265 var loop = trigger['loop' + group]; 8266 var steps = trigger['steps' + group]; 8267 8268 if (!steps || !steps.length) { 8269 return; 8270 } 8271 8272 if (steps.length < 2) { 8273 loop = false; 8274 } // One-time init before any loops 8275 8276 8277 if (!replay) { 8278 // Find selector within element descendants, siblings, or query whole document 8279 var selector = trigger.selector; 8280 8281 if (selector) { 8282 if (trigger.descend) { 8283 $el = $el.find(selector); 8284 } else if (trigger.siblings) { 8285 $el = $el.siblings(selector); 8286 } else { 8287 $el = $(selector); 8288 } 8289 8290 if (inApp) { 8291 $el.attr('data-ix-affect', 1); 8292 } 8293 } // Apply empty fix for certain Chrome versions 8294 8295 8296 if (emptyFix) { 8297 $el.addClass('w-ix-emptyfix'); 8298 } // Set preserve3d for triggers with 3d transforms 8299 8300 8301 if (preserve3d) { 8302 $el.css('transform-style', 'preserve-3d'); 8303 } 8304 } 8305 8306 var _tram = tram($el); // Add steps 8307 8308 8309 var meta = { 8310 omit3d: !preserve3d 8311 }; 8312 8313 for (var i = 0; i < steps.length; i++) { 8314 addStep(_tram, steps[i], meta); 8315 } 8316 8317 function fin() { 8318 // Run trigger again if looped 8319 if (loop) { 8320 return run(trigger, $el, opts, true); 8321 } // Reset any 'auto' values 8322 8323 8324 if (meta.width === 'auto') { 8325 _tram.set({ 8326 width: 'auto' 8327 }); 8328 } 8329 8330 if (meta.height === 'auto') { 8331 _tram.set({ 8332 height: 'auto' 8333 }); 8334 } // Run callback 8335 8336 8337 done && done(); 8338 } // Add final step to queue if tram has started 8339 8340 8341 meta.start ? _tram.then(fin) : fin(); 8342 } 8343 8344 function addStep(_tram, step, meta) { 8345 var addMethod = 'add'; 8346 var startMethod = 'start'; // Once the transition has started, we will always use then() to add to the queue. 8347 8348 if (meta.start) { 8349 addMethod = startMethod = 'then'; 8350 } // Parse transitions string on the current step 8351 8352 8353 var transitions = step.transition; 8354 8355 if (transitions) { 8356 transitions = transitions.split(','); 8357 8358 for (var i = 0; i < transitions.length; i++) { 8359 var transition = transitions[i]; 8360 8361 _tram[addMethod](transition); 8362 } 8363 } // Build a clean object to pass to the tram method 8364 8365 8366 var clean = tramify(step, meta) || {}; // Store last width and height values 8367 8368 if (clean.width != null) { 8369 meta.width = clean.width; 8370 } 8371 8372 if (clean.height != null) { 8373 meta.height = clean.height; 8374 } // When transitions are not present, set values immediately and continue queue. 8375 8376 8377 if (transitions == null) { 8378 // If we have started, wrap set() in then() and reset queue 8379 if (meta.start) { 8380 _tram.then(function () { 8381 var queue = this.queue; 8382 this.set(clean); 8383 8384 if (clean.display) { 8385 _tram.redraw(); 8386 8387 Webflow.redraw.up(); 8388 } 8389 8390 this.queue = queue; 8391 this.next(); 8392 }); 8393 } else { 8394 _tram.set(clean); // Always redraw after setting display 8395 8396 8397 if (clean.display) { 8398 _tram.redraw(); 8399 8400 Webflow.redraw.up(); 8401 } 8402 } // Use the wait() method to kick off queue in absence of transitions. 8403 8404 8405 var wait = clean.wait; 8406 8407 if (wait != null) { 8408 _tram.wait(wait); 8409 8410 meta.start = true; 8411 } // Otherwise, when transitions are present 8412 8413 } else { 8414 // If display is present, handle it separately 8415 if (clean.display) { 8416 var display = clean.display; 8417 delete clean.display; // If we've already started, we need to wrap it in a then() 8418 8419 if (meta.start) { 8420 _tram.then(function () { 8421 var queue = this.queue; 8422 this.set({ 8423 display: display 8424 }).redraw(); 8425 Webflow.redraw.up(); 8426 this.queue = queue; 8427 this.next(); 8428 }); 8429 } else { 8430 _tram.set({ 8431 display: display 8432 }).redraw(); 8433 8434 Webflow.redraw.up(); 8435 } 8436 } // Otherwise, start a transition using the current start method. 8437 8438 8439 _tram[startMethod](clean); 8440 8441 meta.start = true; 8442 } 8443 } // (In app) Set styles immediately and manage upstream transition 8444 8445
8446 function styleApp(el, data) { 8447 var _tram = tram(el); // Exit early when data is empty to avoid clearing upstream 8448 8449 8450 if ($.isEmptyObject(data)) { 8451 return; 8452 } // Get computed transition value 8453 8454 8455 el.css('transition', ''); 8456 var computed = el.css('transition'); // If computed is set to none, clear upstream 8457 8458 if (computed === transNone) { 8459 computed = _tram.upstream = null; 8460 } // Set upstream transition to none temporarily 8461 8462 8463 _tram.upstream = transNone; // Set values immediately 8464 8465 _tram.set(tramify(data)); // Only restore upstream in preview mode 8466 8467 8468 _tram.upstream = computed; 8469 } // (Published) Set styles immediately on specified jquery element 8470 8471 8472 function stylePub(el, data) { 8473 tram(el).set(tramify(data)); 8474 } // Build a clean object for tram 8475 8476 8477 function tramify(obj, meta) { 8478 var omit3d = meta && meta.omit3d; 8479 var result = {}; 8480 var found = false; 8481 8482 for (var key in obj) { 8483 if (key === 'transition') { 8484 continue; 8485 } 8486 8487 if (key === 'keysort') { 8488 continue; 8489 } 8490 8491 if (omit3d) { 8492 if (key === 'z' || key === 'rotateX' || key === 'rotateY' || key === 'scaleZ') { 8493 continue; 8494 } 8495 } 8496 8497 result[key] = obj[key]; 8498 found = true; 8499 } // If empty, return null for tram.set/stop compliance 8500 8501 8502 return found ? result : null; 8503 } // Export module 8504 8505 8506 return api; 8507}); 8508 8509/***/ }), 8510/* 104 */ 8511/***/ (function(module, exports, __webpack_require__) { 8512 8513"use strict"; 8514 // @wf-will-never-add-flow-to-this-file 8515 8516/* eslint-disable */ 8517 8518/** 8519 * Webflow: Interactions 2 8520 */ 8521 8522var Webflow = __webpack_require__(2); 8523 8524var ix2 = __webpack_require__(105); 8525 8526ix2.setEnv(Webflow.env); 8527Webflow.define('ix2', module.exports = function () { 8528 return ix2; 8529}); 8530 8531/***/ }), 8532/* 105 */ 8533/***/ (function(module, exports, __webpack_require__) { 8534 8535"use strict"; 8536 8537 8538var _interopRequireWildcard = __webpack_require__(16); 8539 8540var _interopRequireDefault = __webpack_require__(0); 8541 8542Object.defineProperty(exports, "__esModule", { 8543 value: true 8544}); 8545exports.setEnv = setEnv; 8546exports.init = init; 8547exports.destroy = destroy; 8548exports.actions = exports.store = void 0; 8549 8550var _redux = __webpack_require__(56); 8551 8552var _IX2Reducer = _interopRequireDefault(__webpack_require__(117)); 8553 8554var _IX2VanillaEngine = __webpack_require__(93); 8555 8556var actions = _interopRequireWildcard(__webpack_require__(51)); 8557 8558exports.actions = actions; 8559var store = (0, _redux.createStore)(_IX2Reducer["default"]); 8560exports.store = store; 8561 8562function setEnv(env) { 8563 if (env()) { 8564 (0, _IX2VanillaEngine.observeRequests)(store); 8565 } 8566} 8567 8568function init(rawData) { 8569 destroy(); 8570 (0, _IX2VanillaEngine.startEngine)({ 8571 store: store, 8572 rawData: rawData, 8573 allowEvents: true 8574 }); 8575} 8576 8577function destroy() { 8578 (0, _IX2VanillaEngine.stopEngine)(store); 8579} 8580 8581/***/ }), 8582/* 106 */ 8583/***/ (function(module, __webpack_exports__, __webpack_require__) { 8584 8585"use strict"; 8586__webpack_require__.r(__webpack_exports__); 8587/* harmony import */ var _Symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(58); 8588/* harmony import */ var _getRawTag_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(109); 8589/* harmony import */ var _objectToString_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(110); 8590 8591 8592 8593 8594/** `Object#toString` result references. */ 8595var nullTag = '[object Null]', 8596 undefinedTag = '[object Undefined]'; 8597 8598/** Built-in value references. */ 8599var symToStringTag = _Symbol_js__WEBPACK_IMPORTED_MODULE_0__["default"] ? _Symbol_js__WEBPACK_IMPORTED_MODULE_0__["default"].toStringTag : undefined; 8600 8601/** 8602 * The base implementation of `getTag` without fallbacks for buggy environments. 8603 * 8604 * @private 8605 * @param {*} value The value to query. 8606 * @returns {string} Returns the `toStringTag`. 8607 */ 8608function baseGetTag(value) { 8609 if (value == null) { 8610 return value === undefined ? undefinedTag : nullTag; 8611 } 8612 return (symToStringTag && symToStringTag in Object(value)) 8613 ? Object(_getRawTag_js__WEBPACK_IMPORTED_MODULE_1__["default"])(value) 8614 : Object(_objectToString_js__WEBPACK_IMPORTED_MODULE_2__["default"])(value); 8615} 8616 8617/* harmony default export */ __webpack_exports__["default"] = (baseGetTag); 8618 8619 8620/***/ }), 8621/* 107 */ 8622/***/ (function(module, __webpack_exports__, __webpack_require__) { 8623 8624"use strict"; 8625__webpack_require__.r(__webpack_exports__); 8626/* harmony import */ var _freeGlobal_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(108); 8627 8628
8629/** Detect free variable `self`. */ 8630var freeSelf = typeof self == 'object' && self && self.Object === Object && self; 8631 8632/** Used as a reference to the global object. */ 8633var root = _freeGlobal_js__WEBPACK_IMPORTED_MODULE_0__["default"] || freeSelf || Function('return this')(); 8634 8635/* harmony default export */ __webpack_exports__["default"] = (root); 8636 8637 8638/***/ }), 8639/* 108 */ 8640/***/ (function(module, __webpack_exports__, __webpack_require__) { 8641 8642"use strict"; 8643__webpack_require__.r(__webpack_exports__); 8644/* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */ 8645var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; 8646 8647/* harmony default export */ __webpack_exports__["default"] = (freeGlobal); 8648 8649/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(30))) 8650 8651/***/ }), 8652/* 109 */ 8653/***/ (function(module, __webpack_exports__, __webpack_require__) { 8654 8655"use strict"; 8656__webpack_require__.r(__webpack_exports__); 8657/* harmony import */ var _Symbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(58); 8658 8659 8660/** Used for built-in method references. */ 8661var objectProto = Object.prototype; 8662 8663/** Used to check objects for own properties. */ 8664var hasOwnProperty = objectProto.hasOwnProperty; 8665 8666/** 8667 * Used to resolve the 8668 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) 8669 * of values. 8670 */ 8671var nativeObjectToString = objectProto.toString; 8672 8673/** Built-in value references. */ 8674var symToStringTag = _Symbol_js__WEBPACK_IMPORTED_MODULE_0__["default"] ? _Symbol_js__WEBPACK_IMPORTED_MODULE_0__["default"].toStringTag : undefined; 8675 8676/** 8677 * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. 8678 * 8679 * @private 8680 * @param {*} value The value to query. 8681 * @returns {string} Returns the raw `toStringTag`. 8682 */ 8683function getRawTag(value) { 8684 var isOwn = hasOwnProperty.call(value, symToStringTag), 8685 tag = value[symToStringTag]; 8686 8687 try { 8688 value[symToStringTag] = undefined; 8689 var unmasked = true; 8690 } catch (e) {} 8691 8692 var result = nativeObjectToString.call(value); 8693 if (unmasked) { 8694 if (isOwn) { 8695 value[symToStringTag] = tag; 8696 } else { 8697 delete value[symToStringTag]; 8698 } 8699 } 8700 return result; 8701} 8702 8703/* harmony default export */ __webpack_exports__["default"] = (getRawTag); 8704 8705 8706/***/ }), 8707/* 110 */ 8708/***/ (function(module, __webpack_exports__, __webpack_require__) { 8709 8710"use strict"; 8711__webpack_require__.r(__webpack_exports__); 8712/** Used for built-in method references. */ 8713var objectProto = Object.prototype; 8714 8715/** 8716 * Used to resolve the 8717 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) 8718 * of values. 8719 */ 8720var nativeObjectToString = objectProto.toString; 8721 8722/** 8723 * Converts `value` to a string using `Object.prototype.toString`. 8724 * 8725 * @private 8726 * @param {*} value The value to convert. 8727 * @returns {string} Returns the converted string. 8728 */ 8729function objectToString(value) { 8730 return nativeObjectToString.call(value); 8731} 8732 8733/* harmony default export */ __webpack_exports__["default"] = (objectToString); 8734 8735 8736/***/ }), 8737/* 111 */ 8738/***/ (function(module, __webpack_exports__, __webpack_require__) { 8739 8740"use strict"; 8741__webpack_require__.r(__webpack_exports__); 8742/* harmony import */ var _overArg_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(112); 8743 8744 8745/** Built-in value references. */ 8746var getPrototype = Object(_overArg_js__WEBPACK_IMPORTED_MODULE_0__["default"])(Object.getPrototypeOf, Object); 8747 8748/* harmony default export */ __webpack_exports__["default"] = (getPrototype); 8749 8750 8751/***/ }), 8752/* 112 */ 8753/***/ (function(module, __webpack_exports__, __webpack_require__) { 8754 8755"use strict"; 8756__webpack_require__.r(__webpack_exports__); 8757/** 8758 * Creates a unary function that invokes `func` with its argument transformed. 8759 * 8760 * @private 8761 * @param {Function} func The function to wrap. 8762 * @param {Function} transform The argument transform. 8763 * @returns {Function} Returns the new function. 8764 */ 8765function overArg(func, transform) { 8766 return function(arg) { 8767 return func(transform(arg)); 8768 }; 8769} 8770 8771/* harmony default export */ __webpack_exports__["default"] = (overArg); 8772 8773
8774/***/ }), 8775/* 113 */ 8776/***/ (function(module, __webpack_exports__, __webpack_require__) { 8777 8778"use strict"; 8779__webpack_require__.r(__webpack_exports__); 8780/** 8781 * Checks if `value` is object-like. A value is object-like if it's not `null` 8782 * and has a `typeof` result of "object". 8783 * 8784 * @static 8785 * @memberOf _ 8786 * @since 4.0.0 8787 * @category Lang 8788 * @param {*} value The value to check. 8789 * @returns {boolean} Returns `true` if `value` is object-like, else `false`. 8790 * @example 8791 * 8792 * _.isObjectLike({}); 8793 * // => true 8794 * 8795 * _.isObjectLike([1, 2, 3]); 8796 * // => true 8797 * 8798 * _.isObjectLike(_.noop); 8799 * // => false 8800 * 8801 * _.isObjectLike(null); 8802 * // => false 8803 */ 8804function isObjectLike(value) { 8805 return value != null && typeof value == 'object'; 8806} 8807 8808/* harmony default export */ __webpack_exports__["default"] = (isObjectLike); 8809 8810 8811/***/ }), 8812/* 114 */ 8813/***/ (function(module, __webpack_exports__, __webpack_require__) { 8814 8815"use strict"; 8816__webpack_require__.r(__webpack_exports__); 8817/* WEBPACK VAR INJECTION */(function(global, module) {/* harmony import */ var _ponyfill_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(116); 8818/* global window */ 8819 8820 8821var root; 8822 8823if (typeof self !== 'undefined') { 8824 root = self; 8825} else if (typeof window !== 'undefined') { 8826 root = window; 8827} else if (typeof global !== 'undefined') { 8828 root = global; 8829} else if (true) { 8830 root = module; 8831} else {} 8832 8833var result = Object(_ponyfill_js__WEBPACK_IMPORTED_MODULE_0__["default"])(root); 8834/* harmony default export */ __webpack_exports__["default"] = (result); 8835 8836/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(30), __webpack_require__(115)(module))) 8837 8838/***/ }), 8839/* 115 */ 8840/***/ (function(module, exports) { 8841 8842module.exports = function(originalModule) { 8843 if (!originalModule.webpackPolyfill) { 8844 var module = Object.create(originalModule); 8845 // module.parent = undefined by default 8846 if (!module.children) module.children = []; 8847 Object.defineProperty(module, "loaded", { 8848 enumerable: true, 8849 get: function() { 8850 return module.l; 8851 } 8852 }); 8853 Object.defineProperty(module, "id", { 8854 enumerable: true, 8855 get: function() { 8856 return module.i; 8857 } 8858 }); 8859 Object.defineProperty(module, "exports", { 8860 enumerable: true 8861 }); 8862 module.webpackPolyfill = 1; 8863 } 8864 return module; 8865}; 8866 8867 8868/***/ }), 8869/* 116 */ 8870/***/ (function(module, __webpack_exports__, __webpack_require__) { 8871 8872"use strict"; 8873__webpack_require__.r(__webpack_exports__); 8874/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return symbolObservablePonyfill; }); 8875function symbolObservablePonyfill(root) { 8876 var result; 8877 var Symbol = root.Symbol; 8878 8879 if (typeof Symbol === 'function') { 8880 if (Symbol.observable) { 8881 result = Symbol.observable; 8882 } else { 8883 result = Symbol('observable'); 8884 Symbol.observable = result; 8885 } 8886 } else { 8887 result = '@@observable'; 8888 } 8889 8890 return result; 8891}; 8892 8893 8894/***/ }), 8895/* 117 */ 8896/***/ (function(module, exports, __webpack_require__) { 8897 8898"use strict"; 8899 8900 8901Object.defineProperty(exports, "__esModule", { 8902 value: true 8903}); 8904exports["default"] = void 0; 8905 8906var _redux = __webpack_require__(56); 8907 8908var _IX2DataReducer = __webpack_require__(118); 8909 8910var _IX2RequestReducer = __webpack_require__(198); 8911 8912var _IX2SessionReducer = __webpack_require__(199); 8913 8914var _shared = __webpack_require__(3); 8915 8916var _IX2InstancesReducer = __webpack_require__(200); 8917 8918var _IX2ParametersReducer = __webpack_require__(201); 8919 8920var ixElements = _shared.IX2ElementsReducer.ixElements; 8921 8922var _default = (0, _redux.combineReducers)({ 8923 ixData: _IX2DataReducer.ixData, 8924 ixRequest: _IX2RequestReducer.ixRequest, 8925 ixSession: _IX2SessionReducer.ixSession, 8926 ixElements: ixElements, 8927 ixInstances: _IX2InstancesReducer.ixInstances, 8928 ixParameters: _IX2ParametersReducer.ixParameters 8929}); 8930 8931exports["default"] = _default; 8932 8933/***/ }), 8934/* 118 */ 8935/***/ (function(module, exports, __webpack_require__) { 8936 8937"use strict"; 8938 8939 8940Object.defineProperty(exports, "__esModule", { 8941 value: true 8942}); 8943exports.ixData = void 0; 8944 8945var _shared = __webpack_require__(3); 8946 8947var IX2_RAW_DATA_IMPORTED = _shared.IX2EngineActionTypes.IX2_RAW_DATA_IMPORTED; 8948 8949var ixData = function ixData() { 8950 var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Object.freeze({}); 8951 var action = arguments.length > 1 ? arguments[1] : undefined; 8952 8953 switch (action.type) {
vendor: 5,791 bytes, lines 8954-9216
8954 case IX2_RAW_DATA_IMPORTED: 8955 { 8956 return action.payload.ixData || Object.freeze({}); 8957 } 8958 8959 default: 8960 { 8961 return state; 8962 } 8963 } 8964}; 8965 8966exports.ixData = ixData; 8967 8968/***/ }), 8969/* 119 */ 8970/***/ (function(module, exports, __webpack_require__) { 8971 8972var baseIsMatch = __webpack_require__(120), 8973 getMatchData = __webpack_require__(172), 8974 matchesStrictComparable = __webpack_require__(79); 8975 8976/** 8977 * The base implementation of `_.matches` which doesn't clone `source`. 8978 * 8979 * @private 8980 * @param {Object} source The object of property values to match. 8981 * @returns {Function} Returns the new spec function. 8982 */ 8983function baseMatches(source) { 8984 var matchData = getMatchData(source); 8985 if (matchData.length == 1 && matchData[0][2]) { 8986 return matchesStrictComparable(matchData[0][0], matchData[0][1]); 8987 } 8988 return function(object) { 8989 return object === source || baseIsMatch(object, source, matchData); 8990 }; 8991} 8992 8993module.exports = baseMatches; 8994 8995 8996/***/ }), 8997/* 120 */ 8998/***/ (function(module, exports, __webpack_require__) { 8999 9000var Stack = __webpack_require__(65), 9001 baseIsEqual = __webpack_require__(69); 9002 9003/** Used to compose bitmasks for value comparisons. */ 9004var COMPARE_PARTIAL_FLAG = 1, 9005 COMPARE_UNORDERED_FLAG = 2; 9006 9007/** 9008 * The base implementation of `_.isMatch` without support for iteratee shorthands. 9009 * 9010 * @private 9011 * @param {Object} object The object to inspect. 9012 * @param {Object} source The object of property values to match. 9013 * @param {Array} matchData The property names, values, and compare flags to match. 9014 * @param {Function} [customizer] The function to customize comparisons. 9015 * @returns {boolean} Returns `true` if `object` is a match, else `false`. 9016 */ 9017function baseIsMatch(object, source, matchData, customizer) { 9018 var index = matchData.length, 9019 length = index, 9020 noCustomizer = !customizer; 9021 9022 if (object == null) { 9023 return !length; 9024 } 9025 object = Object(object); 9026 while (index--) { 9027 var data = matchData[index]; 9028 if ((noCustomizer && data[2]) 9029 ? data[1] !== object[data[0]] 9030 : !(data[0] in object) 9031 ) { 9032 return false; 9033 } 9034 } 9035 while (++index < length) { 9036 data = matchData[index]; 9037 var key = data[0], 9038 objValue = object[key], 9039 srcValue = data[1]; 9040 9041 if (noCustomizer && data[2]) { 9042 if (objValue === undefined && !(key in object)) { 9043 return false; 9044 } 9045 } else { 9046 var stack = new Stack; 9047 if (customizer) { 9048 var result = customizer(objValue, srcValue, key, object, source, stack); 9049 } 9050 if (!(result === undefined 9051 ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) 9052 : result 9053 )) { 9054 return false; 9055 } 9056 } 9057 } 9058 return true; 9059} 9060 9061module.exports = baseIsMatch; 9062 9063 9064/***/ }), 9065/* 121 */ 9066/***/ (function(module, exports) { 9067 9068/** 9069 * Removes all key-value entries from the list cache. 9070 * 9071 * @private 9072 * @name clear 9073 * @memberOf ListCache 9074 */ 9075function listCacheClear() { 9076 this.__data__ = []; 9077 this.size = 0; 9078} 9079 9080module.exports = listCacheClear; 9081 9082 9083/***/ }), 9084/* 122 */ 9085/***/ (function(module, exports, __webpack_require__) { 9086 9087var assocIndexOf = __webpack_require__(18); 9088 9089/** Used for built-in method references. */ 9090var arrayProto = Array.prototype; 9091 9092/** Built-in value references. */ 9093var splice = arrayProto.splice; 9094 9095/** 9096 * Removes `key` and its value from the list cache. 9097 * 9098 * @private 9099 * @name delete 9100 * @memberOf ListCache 9101 * @param {string} key The key of the value to remove. 9102 * @returns {boolean} Returns `true` if the entry was removed, else `false`. 9103 */ 9104function listCacheDelete(key) { 9105 var data = this.__data__, 9106 index = assocIndexOf(data, key); 9107 9108 if (index < 0) { 9109 return false; 9110 } 9111 var lastIndex = data.length - 1; 9112 if (index == lastIndex) { 9113 data.pop(); 9114 } else { 9115 splice.call(data, index, 1); 9116 } 9117 --this.size; 9118 return true; 9119} 9120 9121module.exports = listCacheDelete; 9122 9123 9124/***/ }), 9125/* 123 */ 9126/***/ (function(module, exports, __webpack_require__) { 9127 9128var assocIndexOf = __webpack_require__(18); 9129 9130/** 9131 * Gets the list cache value for `key`. 9132 * 9133 * @private 9134 * @name get 9135 * @memberOf ListCache 9136 * @param {string} key The key of the value to get. 9137 * @returns {*} Returns the entry value. 9138 */ 9139function listCacheGet(key) { 9140 var data = this.__data__, 9141 index = assocIndexOf(data, key); 9142 9143 return index < 0 ? undefined : data[index][1]; 9144} 9145 9146module.exports = listCacheGet; 9147 9148 9149/***/ }), 9150/* 124 */ 9151/***/ (function(module, exports, __webpack_require__) { 9152 9153var assocIndexOf = __webpack_require__(18); 9154 9155/** 9156 * Checks if a list cache value for `key` exists. 9157 * 9158 * @private 9159 * @name has 9160 * @memberOf ListCache 9161 * @param {string} key The key of the entry to check. 9162 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. 9163 */ 9164function listCacheHas(key) { 9165 return assocIndexOf(this.__data__, key) > -1; 9166} 9167 9168module.exports = listCacheHas; 9169 9170 9171/***/ }), 9172/* 125 */ 9173/***/ (function(module, exports, __webpack_require__) { 9174 9175var assocIndexOf = __webpack_require__(18); 9176 9177/** 9178 * Sets the list cache `key` to `value`. 9179 * 9180 * @private 9181 * @name set 9182 * @memberOf ListCache 9183 * @param {string} key The key of the value to set. 9184 * @param {*} value The value to set. 9185 * @returns {Object} Returns the list cache instance. 9186 */ 9187function listCacheSet(key, value) { 9188 var data = this.__data__, 9189 index = assocIndexOf(data, key); 9190 9191 if (index < 0) { 9192 ++this.size; 9193 data.push([key, value]); 9194 } else { 9195 data[index][1] = value; 9196 } 9197 return this; 9198} 9199 9200module.exports = listCacheSet; 9201 9202 9203/***/ }), 9204/* 126 */ 9205/***/ (function(module, exports, __webpack_require__) { 9206 9207var ListCache = __webpack_require__(17); 9208 9209/** 9210 * Removes all key-value entries from the stack. 9211 * 9212 * @private 9213 * @name clear 9214 * @memberOf Stack 9215 */ 9216function stackClear() {
vendor: 8,503 bytes, lines 9217-9605
9217 this.__data__ = new ListCache; 9218 this.size = 0; 9219} 9220 9221module.exports = stackClear; 9222 9223 9224/***/ }), 9225/* 127 */ 9226/***/ (function(module, exports) { 9227 9228/** 9229 * Removes `key` and its value from the stack. 9230 * 9231 * @private 9232 * @name delete 9233 * @memberOf Stack 9234 * @param {string} key The key of the value to remove. 9235 * @returns {boolean} Returns `true` if the entry was removed, else `false`. 9236 */ 9237function stackDelete(key) { 9238 var data = this.__data__, 9239 result = data['delete'](key); 9240 9241 this.size = data.size; 9242 return result; 9243} 9244 9245module.exports = stackDelete; 9246 9247 9248/***/ }), 9249/* 128 */ 9250/***/ (function(module, exports) { 9251 9252/** 9253 * Gets the stack value for `key`. 9254 * 9255 * @private 9256 * @name get 9257 * @memberOf Stack 9258 * @param {string} key The key of the value to get. 9259 * @returns {*} Returns the entry value. 9260 */ 9261function stackGet(key) { 9262 return this.__data__.get(key); 9263} 9264 9265module.exports = stackGet; 9266 9267 9268/***/ }), 9269/* 129 */ 9270/***/ (function(module, exports) { 9271 9272/** 9273 * Checks if a stack value for `key` exists. 9274 * 9275 * @private 9276 * @name has 9277 * @memberOf Stack 9278 * @param {string} key The key of the entry to check. 9279 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. 9280 */ 9281function stackHas(key) { 9282 return this.__data__.has(key); 9283} 9284 9285module.exports = stackHas; 9286 9287 9288/***/ }), 9289/* 130 */ 9290/***/ (function(module, exports, __webpack_require__) { 9291 9292var ListCache = __webpack_require__(17), 9293 Map = __webpack_require__(34), 9294 MapCache = __webpack_require__(35); 9295 9296/** Used as the size to enable large array optimizations. */ 9297var LARGE_ARRAY_SIZE = 200; 9298 9299/** 9300 * Sets the stack `key` to `value`. 9301 * 9302 * @private 9303 * @name set 9304 * @memberOf Stack 9305 * @param {string} key The key of the value to set. 9306 * @param {*} value The value to set. 9307 * @returns {Object} Returns the stack cache instance. 9308 */ 9309function stackSet(key, value) { 9310 var data = this.__data__; 9311 if (data instanceof ListCache) { 9312 var pairs = data.__data__; 9313 if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { 9314 pairs.push([key, value]); 9315 this.size = ++data.size; 9316 return this; 9317 } 9318 data = this.__data__ = new MapCache(pairs); 9319 } 9320 data.set(key, value); 9321 this.size = data.size; 9322 return this; 9323} 9324 9325module.exports = stackSet; 9326 9327 9328/***/ }), 9329/* 131 */ 9330/***/ (function(module, exports, __webpack_require__) { 9331 9332var isFunction = __webpack_require__(66), 9333 isMasked = __webpack_require__(134), 9334 isObject = __webpack_require__(5), 9335 toSource = __webpack_require__(68); 9336 9337/** 9338 * Used to match `RegExp` 9339 * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). 9340 */ 9341var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; 9342 9343/** Used to detect host constructors (Safari). */ 9344var reIsHostCtor = /^\[object .+?Constructor\]$/; 9345 9346/** Used for built-in method references. */ 9347var funcProto = Function.prototype, 9348 objectProto = Object.prototype; 9349 9350/** Used to resolve the decompiled source of functions. */ 9351var funcToString = funcProto.toString; 9352 9353/** Used to check objects for own properties. */ 9354var hasOwnProperty = objectProto.hasOwnProperty; 9355 9356/** Used to detect if a method is native. */ 9357var reIsNative = RegExp('^' + 9358 funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') 9359 .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' 9360); 9361 9362/** 9363 * The base implementation of `_.isNative` without bad shim checks. 9364 * 9365 * @private 9366 * @param {*} value The value to check. 9367 * @returns {boolean} Returns `true` if `value` is a native function, 9368 * else `false`. 9369 */ 9370function baseIsNative(value) { 9371 if (!isObject(value) || isMasked(value)) { 9372 return false; 9373 } 9374 var pattern = isFunction(value) ? reIsNative : reIsHostCtor; 9375 return pattern.test(toSource(value)); 9376} 9377 9378module.exports = baseIsNative; 9379 9380 9381/***/ }), 9382/* 132 */ 9383/***/ (function(module, exports, __webpack_require__) { 9384 9385var Symbol = __webpack_require__(11); 9386 9387/** Used for built-in method references. */ 9388var objectProto = Object.prototype; 9389 9390/** Used to check objects for own properties. */ 9391var hasOwnProperty = objectProto.hasOwnProperty; 9392 9393/** 9394 * Used to resolve the 9395 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) 9396 * of values. 9397 */ 9398var nativeObjectToString = objectProto.toString; 9399 9400/** Built-in value references. */ 9401var symToStringTag = Symbol ? Symbol.toStringTag : undefined; 9402 9403/** 9404 * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. 9405 * 9406 * @private 9407 * @param {*} value The value to query. 9408 * @returns {string} Returns the raw `toStringTag`. 9409 */ 9410function getRawTag(value) { 9411 var isOwn = hasOwnProperty.call(value, symToStringTag), 9412 tag = value[symToStringTag]; 9413 9414 try { 9415 value[symToStringTag] = undefined; 9416 var unmasked = true; 9417 } catch (e) {} 9418 9419 var result = nativeObjectToString.call(value); 9420 if (unmasked) { 9421 if (isOwn) { 9422 value[symToStringTag] = tag; 9423 } else { 9424 delete value[symToStringTag]; 9425 } 9426 } 9427 return result; 9428} 9429 9430module.exports = getRawTag; 9431 9432 9433/***/ }), 9434/* 133 */ 9435/***/ (function(module, exports) { 9436 9437/** Used for built-in method references. */ 9438var objectProto = Object.prototype; 9439 9440/** 9441 * Used to resolve the 9442 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) 9443 * of values. 9444 */ 9445var nativeObjectToString = objectProto.toString; 9446 9447/** 9448 * Converts `value` to a string using `Object.prototype.toString`. 9449 * 9450 * @private 9451 * @param {*} value The value to convert. 9452 * @returns {string} Returns the converted string. 9453 */ 9454function objectToString(value) { 9455 return nativeObjectToString.call(value); 9456} 9457 9458module.exports = objectToString; 9459 9460 9461/***/ }), 9462/* 134 */ 9463/***/ (function(module, exports, __webpack_require__) { 9464 9465var coreJsData = __webpack_require__(135); 9466 9467/** Used to detect methods masquerading as native. */ 9468var maskSrcKey = (function() { 9469 var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); 9470 return uid ? ('Symbol(src)_1.' + uid) : ''; 9471}()); 9472 9473/** 9474 * Checks if `func` has its source masked. 9475 * 9476 * @private 9477 * @param {Function} func The function to check. 9478 * @returns {boolean} Returns `true` if `func` is masked, else `false`. 9479 */ 9480function isMasked(func) { 9481 return !!maskSrcKey && (maskSrcKey in func); 9482} 9483 9484module.exports = isMasked; 9485 9486 9487/***/ }), 9488/* 135 */ 9489/***/ (function(module, exports, __webpack_require__) { 9490 9491var root = __webpack_require__(4); 9492 9493/** Used to detect overreaching core-js shims. */ 9494var coreJsData = root['__core-js_shared__']; 9495 9496module.exports = coreJsData; 9497 9498 9499/***/ }), 9500/* 136 */ 9501/***/ (function(module, exports) { 9502 9503/** 9504 * Gets the value at `key` of `object`. 9505 * 9506 * @private 9507 * @param {Object} [object] The object to query. 9508 * @param {string} key The key of the property to get. 9509 * @returns {*} Returns the property value. 9510 */ 9511function getValue(object, key) { 9512 return object == null ? undefined : object[key]; 9513} 9514 9515module.exports = getValue; 9516 9517 9518/***/ }), 9519/* 137 */ 9520/***/ (function(module, exports, __webpack_require__) { 9521 9522var Hash = __webpack_require__(138), 9523 ListCache = __webpack_require__(17), 9524 Map = __webpack_require__(34); 9525 9526/** 9527 * Removes all key-value entries from the map. 9528 * 9529 * @private 9530 * @name clear 9531 * @memberOf MapCache 9532 */ 9533function mapCacheClear() { 9534 this.size = 0; 9535 this.__data__ = { 9536 'hash': new Hash, 9537 'map': new (Map || ListCache), 9538 'string': new Hash 9539 }; 9540} 9541 9542module.exports = mapCacheClear; 9543 9544 9545/***/ }), 9546/* 138 */ 9547/***/ (function(module, exports, __webpack_require__) { 9548 9549var hashClear = __webpack_require__(139), 9550 hashDelete = __webpack_require__(140), 9551 hashGet = __webpack_require__(141), 9552 hashHas = __webpack_require__(142), 9553 hashSet = __webpack_require__(143); 9554 9555/** 9556 * Creates a hash object. 9557 * 9558 * @private 9559 * @constructor 9560 * @param {Array} [entries] The key-value pairs to cache. 9561 */ 9562function Hash(entries) { 9563 var index = -1, 9564 length = entries == null ? 0 : entries.length; 9565 9566 this.clear(); 9567 while (++index < length) { 9568 var entry = entries[index]; 9569 this.set(entry[0], entry[1]); 9570 } 9571} 9572 9573// Add methods to `Hash`. 9574Hash.prototype.clear = hashClear; 9575Hash.prototype['delete'] = hashDelete; 9576Hash.prototype.get = hashGet; 9577Hash.prototype.has = hashHas; 9578Hash.prototype.set = hashSet; 9579 9580module.exports = Hash; 9581 9582 9583/***/ }), 9584/* 139 */ 9585/***/ (function(module, exports, __webpack_require__) { 9586 9587var nativeCreate = __webpack_require__(19); 9588 9589/** 9590 * Removes all key-value entries from the hash. 9591 * 9592 * @private 9593 * @name clear 9594 * @memberOf Hash 9595 */ 9596function hashClear() { 9597 this.__data__ = nativeCreate ? nativeCreate(null) : {}; 9598 this.size = 0; 9599} 9600 9601module.exports = hashClear; 9602 9603 9604/***/ }), 9605/* 140 */
vendor: 17,076 bytes, lines 9606-10267
9606/***/ (function(module, exports) { 9607 9608/** 9609 * Removes `key` and its value from the hash. 9610 * 9611 * @private 9612 * @name delete 9613 * @memberOf Hash 9614 * @param {Object} hash The hash to modify. 9615 * @param {string} key The key of the value to remove. 9616 * @returns {boolean} Returns `true` if the entry was removed, else `false`. 9617 */ 9618function hashDelete(key) { 9619 var result = this.has(key) && delete this.__data__[key]; 9620 this.size -= result ? 1 : 0; 9621 return result; 9622} 9623 9624module.exports = hashDelete; 9625 9626 9627/***/ }), 9628/* 141 */ 9629/***/ (function(module, exports, __webpack_require__) { 9630 9631var nativeCreate = __webpack_require__(19); 9632 9633/** Used to stand-in for `undefined` hash values. */ 9634var HASH_UNDEFINED = '__lodash_hash_undefined__'; 9635 9636/** Used for built-in method references. */ 9637var objectProto = Object.prototype; 9638 9639/** Used to check objects for own properties. */ 9640var hasOwnProperty = objectProto.hasOwnProperty; 9641 9642/** 9643 * Gets the hash value for `key`. 9644 * 9645 * @private 9646 * @name get 9647 * @memberOf Hash 9648 * @param {string} key The key of the value to get. 9649 * @returns {*} Returns the entry value. 9650 */ 9651function hashGet(key) { 9652 var data = this.__data__; 9653 if (nativeCreate) { 9654 var result = data[key]; 9655 return result === HASH_UNDEFINED ? undefined : result; 9656 } 9657 return hasOwnProperty.call(data, key) ? data[key] : undefined; 9658} 9659 9660module.exports = hashGet; 9661 9662 9663/***/ }), 9664/* 142 */ 9665/***/ (function(module, exports, __webpack_require__) { 9666 9667var nativeCreate = __webpack_require__(19); 9668 9669/** Used for built-in method references. */ 9670var objectProto = Object.prototype; 9671 9672/** Used to check objects for own properties. */ 9673var hasOwnProperty = objectProto.hasOwnProperty; 9674 9675/** 9676 * Checks if a hash value for `key` exists. 9677 * 9678 * @private 9679 * @name has 9680 * @memberOf Hash 9681 * @param {string} key The key of the entry to check. 9682 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. 9683 */ 9684function hashHas(key) { 9685 var data = this.__data__; 9686 return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key); 9687} 9688 9689module.exports = hashHas; 9690 9691 9692/***/ }), 9693/* 143 */ 9694/***/ (function(module, exports, __webpack_require__) { 9695 9696var nativeCreate = __webpack_require__(19); 9697 9698/** Used to stand-in for `undefined` hash values. */ 9699var HASH_UNDEFINED = '__lodash_hash_undefined__'; 9700 9701/** 9702 * Sets the hash `key` to `value`. 9703 * 9704 * @private 9705 * @name set 9706 * @memberOf Hash 9707 * @param {string} key The key of the value to set. 9708 * @param {*} value The value to set. 9709 * @returns {Object} Returns the hash instance. 9710 */ 9711function hashSet(key, value) { 9712 var data = this.__data__; 9713 this.size += this.has(key) ? 0 : 1; 9714 data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; 9715 return this; 9716} 9717 9718module.exports = hashSet; 9719 9720 9721/***/ }), 9722/* 144 */ 9723/***/ (function(module, exports, __webpack_require__) { 9724 9725var getMapData = __webpack_require__(20); 9726 9727/** 9728 * Removes `key` and its value from the map. 9729 * 9730 * @private 9731 * @name delete 9732 * @memberOf MapCache 9733 * @param {string} key The key of the value to remove. 9734 * @returns {boolean} Returns `true` if the entry was removed, else `false`. 9735 */ 9736function mapCacheDelete(key) { 9737 var result = getMapData(this, key)['delete'](key); 9738 this.size -= result ? 1 : 0; 9739 return result; 9740} 9741 9742module.exports = mapCacheDelete; 9743 9744 9745/***/ }), 9746/* 145 */ 9747/***/ (function(module, exports) { 9748 9749/** 9750 * Checks if `value` is suitable for use as unique object key. 9751 * 9752 * @private 9753 * @param {*} value The value to check. 9754 * @returns {boolean} Returns `true` if `value` is suitable, else `false`. 9755 */ 9756function isKeyable(value) { 9757 var type = typeof value; 9758 return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') 9759 ? (value !== '__proto__') 9760 : (value === null); 9761} 9762 9763module.exports = isKeyable; 9764 9765 9766/***/ }), 9767/* 146 */ 9768/***/ (function(module, exports, __webpack_require__) { 9769 9770var getMapData = __webpack_require__(20); 9771 9772/** 9773 * Gets the map value for `key`. 9774 * 9775 * @private 9776 * @name get 9777 * @memberOf MapCache 9778 * @param {string} key The key of the value to get. 9779 * @returns {*} Returns the entry value. 9780 */ 9781function mapCacheGet(key) { 9782 return getMapData(this, key).get(key); 9783} 9784 9785module.exports = mapCacheGet; 9786 9787 9788/***/ }), 9789/* 147 */ 9790/***/ (function(module, exports, __webpack_require__) { 9791 9792var getMapData = __webpack_require__(20); 9793 9794/** 9795 * Checks if a map value for `key` exists. 9796 * 9797 * @private 9798 * @name has 9799 * @memberOf MapCache 9800 * @param {string} key The key of the entry to check. 9801 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. 9802 */ 9803function mapCacheHas(key) { 9804 return getMapData(this, key).has(key); 9805} 9806 9807module.exports = mapCacheHas; 9808 9809 9810/***/ }), 9811/* 148 */ 9812/***/ (function(module, exports, __webpack_require__) { 9813 9814var getMapData = __webpack_require__(20); 9815 9816/** 9817 * Sets the map `key` to `value`. 9818 * 9819 * @private 9820 * @name set 9821 * @memberOf MapCache 9822 * @param {string} key The key of the value to set. 9823 * @param {*} value The value to set. 9824 * @returns {Object} Returns the map cache instance. 9825 */ 9826function mapCacheSet(key, value) { 9827 var data = getMapData(this, key), 9828 size = data.size; 9829 9830 data.set(key, value); 9831 this.size += data.size == size ? 0 : 1; 9832 return this; 9833} 9834 9835module.exports = mapCacheSet; 9836 9837 9838/***/ }), 9839/* 149 */ 9840/***/ (function(module, exports, __webpack_require__) { 9841 9842var Stack = __webpack_require__(65), 9843 equalArrays = __webpack_require__(70), 9844 equalByTag = __webpack_require__(155), 9845 equalObjects = __webpack_require__(159), 9846 getTag = __webpack_require__(43), 9847 isArray = __webpack_require__(1), 9848 isBuffer = __webpack_require__(37), 9849 isTypedArray = __webpack_require__(39); 9850 9851/** Used to compose bitmasks for value comparisons. */ 9852var COMPARE_PARTIAL_FLAG = 1; 9853 9854/** `Object#toString` result references. */ 9855var argsTag = '[object Arguments]', 9856 arrayTag = '[object Array]', 9857 objectTag = '[object Object]'; 9858 9859/** Used for built-in method references. */ 9860var objectProto = Object.prototype; 9861 9862/** Used to check objects for own properties. */ 9863var hasOwnProperty = objectProto.hasOwnProperty; 9864 9865/** 9866 * A specialized version of `baseIsEqual` for arrays and objects which performs 9867 * deep comparisons and tracks traversed objects enabling objects with circular 9868 * references to be compared. 9869 * 9870 * @private 9871 * @param {Object} object The object to compare. 9872 * @param {Object} other The other object to compare. 9873 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. 9874 * @param {Function} customizer The function to customize comparisons. 9875 * @param {Function} equalFunc The function to determine equivalents of values. 9876 * @param {Object} [stack] Tracks traversed `object` and `other` objects. 9877 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. 9878 */ 9879function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { 9880 var objIsArr = isArray(object), 9881 othIsArr = isArray(other), 9882 objTag = objIsArr ? arrayTag : getTag(object), 9883 othTag = othIsArr ? arrayTag : getTag(other); 9884 9885 objTag = objTag == argsTag ? objectTag : objTag; 9886 othTag = othTag == argsTag ? objectTag : othTag; 9887 9888 var objIsObj = objTag == objectTag, 9889 othIsObj = othTag == objectTag, 9890 isSameTag = objTag == othTag; 9891 9892 if (isSameTag && isBuffer(object)) { 9893 if (!isBuffer(other)) { 9894 return false; 9895 } 9896 objIsArr = true; 9897 objIsObj = false; 9898 } 9899 if (isSameTag && !objIsObj) { 9900 stack || (stack = new Stack); 9901 return (objIsArr || isTypedArray(object)) 9902 ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) 9903 : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); 9904 } 9905 if (!(bitmask & COMPARE_PARTIAL_FLAG)) { 9906 var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), 9907 othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); 9908 9909 if (objIsWrapped || othIsWrapped) { 9910 var objUnwrapped = objIsWrapped ? object.value() : object, 9911 othUnwrapped = othIsWrapped ? other.value() : other; 9912 9913 stack || (stack = new Stack); 9914 return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); 9915 } 9916 } 9917 if (!isSameTag) { 9918 return false; 9919 } 9920 stack || (stack = new Stack); 9921 return equalObjects(object, other, bitmask, customizer, equalFunc, stack); 9922} 9923 9924module.exports = baseIsEqualDeep; 9925 9926 9927/***/ }), 9928/* 150 */ 9929/***/ (function(module, exports, __webpack_require__) { 9930 9931var MapCache = __webpack_require__(35), 9932 setCacheAdd = __webpack_require__(151), 9933 setCacheHas = __webpack_require__(152); 9934 9935/** 9936 * 9937 * Creates an array cache object to store unique values. 9938 * 9939 * @private 9940 * @constructor 9941 * @param {Array} [values] The values to cache. 9942 */ 9943function SetCache(values) { 9944 var index = -1, 9945 length = values == null ? 0 : values.length; 9946 9947 this.__data__ = new MapCache; 9948 while (++index < length) { 9949 this.add(values[index]); 9950 } 9951} 9952 9953// Add methods to `SetCache`. 9954SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; 9955SetCache.prototype.has = setCacheHas; 9956 9957module.exports = SetCache; 9958 9959 9960/***/ }), 9961/* 151 */ 9962/***/ (function(module, exports) { 9963 9964/** Used to stand-in for `undefined` hash values. */ 9965var HASH_UNDEFINED = '__lodash_hash_undefined__'; 9966 9967/** 9968 * Adds `value` to the array cache. 9969 * 9970 * @private 9971 * @name add 9972 * @memberOf SetCache 9973 * @alias push 9974 * @param {*} value The value to cache. 9975 * @returns {Object} Returns the cache instance. 9976 */ 9977function setCacheAdd(value) { 9978 this.__data__.set(value, HASH_UNDEFINED); 9979 return this; 9980} 9981 9982module.exports = setCacheAdd; 9983 9984 9985/***/ }), 9986/* 152 */ 9987/***/ (function(module, exports) { 9988 9989/** 9990 * Checks if `value` is in the array cache. 9991 * 9992 * @private 9993 * @name has 9994 * @memberOf SetCache 9995 * @param {*} value The value to search for. 9996 * @returns {number} Returns `true` if `value` is found, else `false`. 9997 */ 9998function setCacheHas(value) { 9999 return this.__data__.has(value); 10000} 10001 10002module.exports = setCacheHas; 10003 10004 10005/***/ }), 10006/* 153 */ 10007/***/ (function(module, exports) { 10008 10009/** 10010 * A specialized version of `_.some` for arrays without support for iteratee 10011 * shorthands. 10012 * 10013 * @private 10014 * @param {Array} [array] The array to iterate over. 10015 * @param {Function} predicate The function invoked per iteration. 10016 * @returns {boolean} Returns `true` if any element passes the predicate check, 10017 * else `false`. 10018 */ 10019function arraySome(array, predicate) { 10020 var index = -1, 10021 length = array == null ? 0 : array.length; 10022 10023 while (++index < length) { 10024 if (predicate(array[index], index, array)) { 10025 return true; 10026 } 10027 } 10028 return false; 10029} 10030 10031module.exports = arraySome; 10032 10033 10034/***/ }), 10035/* 154 */ 10036/***/ (function(module, exports) { 10037 10038/** 10039 * Checks if a `cache` value for `key` exists. 10040 * 10041 * @private 10042 * @param {Object} cache The cache to query. 10043 * @param {string} key The key of the entry to check. 10044 * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. 10045 */ 10046function cacheHas(cache, key) { 10047 return cache.has(key); 10048} 10049 10050module.exports = cacheHas; 10051 10052 10053/***/ }), 10054/* 155 */ 10055/***/ (function(module, exports, __webpack_require__) { 10056 10057var Symbol = __webpack_require__(11), 10058 Uint8Array = __webpack_require__(156), 10059 eq = __webpack_require__(33), 10060 equalArrays = __webpack_require__(70), 10061 mapToArray = __webpack_require__(157), 10062 setToArray = __webpack_require__(158); 10063 10064/** Used to compose bitmasks for value comparisons. */ 10065var COMPARE_PARTIAL_FLAG = 1, 10066 COMPARE_UNORDERED_FLAG = 2; 10067 10068/** `Object#toString` result references. */ 10069var boolTag = '[object Boolean]', 10070 dateTag = '[object Date]', 10071 errorTag = '[object Error]', 10072 mapTag = '[object Map]', 10073 numberTag = '[object Number]', 10074 regexpTag = '[object RegExp]', 10075 setTag = '[object Set]', 10076 stringTag = '[object String]', 10077 symbolTag = '[object Symbol]'; 10078 10079var arrayBufferTag = '[object ArrayBuffer]', 10080 dataViewTag = '[object DataView]'; 10081 10082/** Used to convert symbols to primitives and strings. */ 10083var symbolProto = Symbol ? Symbol.prototype : undefined, 10084 symbolValueOf = symbolProto ? symbolProto.valueOf : undefined; 10085 10086/** 10087 * A specialized version of `baseIsEqualDeep` for comparing objects of 10088 * the same `toStringTag`. 10089 * 10090 * **Note:** This function only supports comparing values with tags of 10091 * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. 10092 * 10093 * @private 10094 * @param {Object} object The object to compare. 10095 * @param {Object} other The other object to compare. 10096 * @param {string} tag The `toStringTag` of the objects to compare. 10097 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. 10098 * @param {Function} customizer The function to customize comparisons. 10099 * @param {Function} equalFunc The function to determine equivalents of values. 10100 * @param {Object} stack Tracks traversed `object` and `other` objects. 10101 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. 10102 */ 10103function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { 10104 switch (tag) { 10105 case dataViewTag: 10106 if ((object.byteLength != other.byteLength) || 10107 (object.byteOffset != other.byteOffset)) { 10108 return false; 10109 } 10110 object = object.buffer; 10111 other = other.buffer; 10112 10113 case arrayBufferTag: 10114 if ((object.byteLength != other.byteLength) || 10115 !equalFunc(new Uint8Array(object), new Uint8Array(other))) { 10116 return false; 10117 } 10118 return true; 10119 10120 case boolTag: 10121 case dateTag: 10122 case numberTag: 10123 // Coerce booleans to `1` or `0` and dates to milliseconds. 10124 // Invalid dates are coerced to `NaN`. 10125 return eq(+object, +other); 10126 10127 case errorTag: 10128 return object.name == other.name && object.message == other.message; 10129 10130 case regexpTag: 10131 case stringTag: 10132 // Coerce regexes to strings and treat strings, primitives and objects, 10133 // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring 10134 // for more details. 10135 return object == (other + ''); 10136 10137 case mapTag: 10138 var convert = mapToArray; 10139 10140 case setTag: 10141 var isPartial = bitmask & COMPARE_PARTIAL_FLAG; 10142 convert || (convert = setToArray); 10143 10144 if (object.size != other.size && !isPartial) { 10145 return false; 10146 } 10147 // Assume cyclic values are equal. 10148 var stacked = stack.get(object); 10149 if (stacked) { 10150 return stacked == other; 10151 } 10152 bitmask |= COMPARE_UNORDERED_FLAG; 10153 10154 // Recursively compare objects (susceptible to call stack limits). 10155 stack.set(object, other); 10156 var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); 10157 stack['delete'](object); 10158 return result; 10159 10160 case symbolTag: 10161 if (symbolValueOf) { 10162 return symbolValueOf.call(object) == symbolValueOf.call(other); 10163 } 10164 } 10165 return false; 10166} 10167 10168module.exports = equalByTag; 10169 10170 10171/***/ }), 10172/* 156 */ 10173/***/ (function(module, exports, __webpack_require__) { 10174 10175var root = __webpack_require__(4); 10176 10177/** Built-in value references. */ 10178var Uint8Array = root.Uint8Array; 10179 10180module.exports = Uint8Array; 10181 10182 10183/***/ }), 10184/* 157 */ 10185/***/ (function(module, exports) { 10186 10187/** 10188 * Converts `map` to its key-value pairs. 10189 * 10190 * @private 10191 * @param {Object} map The map to convert. 10192 * @returns {Array} Returns the key-value pairs. 10193 */ 10194function mapToArray(map) { 10195 var index = -1, 10196 result = Array(map.size); 10197 10198 map.forEach(function(value, key) { 10199 result[++index] = [key, value]; 10200 }); 10201 return result; 10202} 10203 10204module.exports = mapToArray; 10205 10206 10207/***/ }), 10208/* 158 */ 10209/***/ (function(module, exports) { 10210 10211/** 10212 * Converts `set` to an array of its values. 10213 * 10214 * @private 10215 * @param {Object} set The set to convert. 10216 * @returns {Array} Returns the values. 10217 */ 10218function setToArray(set) { 10219 var index = -1, 10220 result = Array(set.size); 10221 10222 set.forEach(function(value) { 10223 result[++index] = value; 10224 }); 10225 return result; 10226} 10227 10228module.exports = setToArray; 10229 10230 10231/***/ }), 10232/* 159 */ 10233/***/ (function(module, exports, __webpack_require__) { 10234 10235var getAllKeys = __webpack_require__(160); 10236 10237/** Used to compose bitmasks for value comparisons. */ 10238var COMPARE_PARTIAL_FLAG = 1; 10239 10240/** Used for built-in method references. */ 10241var objectProto = Object.prototype; 10242 10243/** Used to check objects for own properties. */ 10244var hasOwnProperty = objectProto.hasOwnProperty; 10245 10246/** 10247 * A specialized version of `baseIsEqualDeep` for objects with support for 10248 * partial deep comparisons. 10249 * 10250 * @private 10251 * @param {Object} object The object to compare. 10252 * @param {Object} other The other object to compare. 10253 * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. 10254 * @param {Function} customizer The function to customize comparisons. 10255 * @param {Function} equalFunc The function to determine equivalents of values. 10256 * @param {Object} stack Tracks traversed `object` and `other` objects. 10257 * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. 10258 */ 10259function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { 10260 var isPartial = bitmask & COMPARE_PARTIAL_FLAG, 10261 objProps = getAllKeys(object), 10262 objLength = objProps.length, 10263 othProps = getAllKeys(other), 10264 othLength = othProps.length; 10265 10266 if (objLength != othLength && !isPartial) { 10267 return false;
vendor: 1,526 bytes, lines 10268-10315
10268 } 10269 var index = objLength; 10270 while (index--) { 10271 var key = objProps[index]; 10272 if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { 10273 return false; 10274 } 10275 } 10276 // Assume cyclic values are equal. 10277 var stacked = stack.get(object); 10278 if (stacked && stack.get(other)) { 10279 return stacked == other; 10280 } 10281 var result = true; 10282 stack.set(object, other); 10283 stack.set(other, object); 10284 10285 var skipCtor = isPartial; 10286 while (++index < objLength) { 10287 key = objProps[index]; 10288 var objValue = object[key], 10289 othValue = other[key]; 10290 10291 if (customizer) { 10292 var compared = isPartial 10293 ? customizer(othValue, objValue, key, other, object, stack) 10294 : customizer(objValue, othValue, key, object, other, stack); 10295 } 10296 // Recursively compare objects (susceptible to call stack limits). 10297 if (!(compared === undefined 10298 ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) 10299 : compared 10300 )) { 10301 result = false; 10302 break; 10303 } 10304 skipCtor || (skipCtor = key == 'constructor'); 10305 } 10306 if (result && !skipCtor) { 10307 var objCtor = object.constructor, 10308 othCtor = other.constructor; 10309 10310 // Non `Object` object instances with different constructors are not equal. 10311 if (objCtor != othCtor && 10312 ('constructor' in object && 'constructor' in other) && 10313 !(typeof objCtor == 'function' && objCtor instanceof objCtor && 10314 typeof othCtor == 'function' && othCtor instanceof othCtor)) { 10315 result = false;
vendor: 4,397 bytes, lines 10316-10496
10316 } 10317 } 10318 stack['delete'](object); 10319 stack['delete'](other); 10320 return result; 10321} 10322 10323module.exports = equalObjects; 10324 10325 10326/***/ }), 10327/* 160 */ 10328/***/ (function(module, exports, __webpack_require__) { 10329 10330var baseGetAllKeys = __webpack_require__(71), 10331 getSymbols = __webpack_require__(72), 10332 keys = __webpack_require__(21); 10333 10334/** 10335 * Creates an array of own enumerable property names and symbols of `object`. 10336 * 10337 * @private 10338 * @param {Object} object The object to query. 10339 * @returns {Array} Returns the array of property names and symbols. 10340 */ 10341function getAllKeys(object) { 10342 return baseGetAllKeys(object, keys, getSymbols); 10343} 10344 10345module.exports = getAllKeys; 10346 10347 10348/***/ }), 10349/* 161 */ 10350/***/ (function(module, exports) { 10351 10352/** 10353 * A specialized version of `_.filter` for arrays without support for 10354 * iteratee shorthands. 10355 * 10356 * @private 10357 * @param {Array} [array] The array to iterate over. 10358 * @param {Function} predicate The function invoked per iteration. 10359 * @returns {Array} Returns the new filtered array. 10360 */ 10361function arrayFilter(array, predicate) { 10362 var index = -1, 10363 length = array == null ? 0 : array.length, 10364 resIndex = 0, 10365 result = []; 10366 10367 while (++index < length) { 10368 var value = array[index]; 10369 if (predicate(value, index, array)) { 10370 result[resIndex++] = value; 10371 } 10372 } 10373 return result; 10374} 10375 10376module.exports = arrayFilter; 10377 10378 10379/***/ }), 10380/* 162 */ 10381/***/ (function(module, exports) { 10382 10383/** 10384 * The base implementation of `_.times` without support for iteratee shorthands 10385 * or max array length checks. 10386 * 10387 * @private 10388 * @param {number} n The number of times to invoke `iteratee`. 10389 * @param {Function} iteratee The function invoked per iteration. 10390 * @returns {Array} Returns the array of results. 10391 */ 10392function baseTimes(n, iteratee) { 10393 var index = -1, 10394 result = Array(n); 10395 10396 while (++index < n) { 10397 result[index] = iteratee(index); 10398 } 10399 return result; 10400} 10401 10402module.exports = baseTimes; 10403 10404 10405/***/ }), 10406/* 163 */ 10407/***/ (function(module, exports, __webpack_require__) { 10408 10409var baseGetTag = __webpack_require__(9), 10410 isObjectLike = __webpack_require__(8); 10411 10412/** `Object#toString` result references. */ 10413var argsTag = '[object Arguments]'; 10414 10415/** 10416 * The base implementation of `_.isArguments`. 10417 * 10418 * @private 10419 * @param {*} value The value to check. 10420 * @returns {boolean} Returns `true` if `value` is an `arguments` object, 10421 */ 10422function baseIsArguments(value) { 10423 return isObjectLike(value) && baseGetTag(value) == argsTag; 10424} 10425 10426module.exports = baseIsArguments; 10427 10428 10429/***/ }), 10430/* 164 */ 10431/***/ (function(module, exports) { 10432 10433/** 10434 * This method returns `false`. 10435 * 10436 * @static 10437 * @memberOf _ 10438 * @since 4.13.0 10439 * @category Util 10440 * @returns {boolean} Returns `false`. 10441 * @example 10442 * 10443 * _.times(2, _.stubFalse); 10444 * // => [false, false] 10445 */ 10446function stubFalse() { 10447 return false; 10448} 10449 10450module.exports = stubFalse; 10451 10452 10453/***/ }), 10454/* 165 */ 10455/***/ (function(module, exports, __webpack_require__) { 10456 10457var baseGetTag = __webpack_require__(9), 10458 isLength = __webpack_require__(40), 10459 isObjectLike = __webpack_require__(8); 10460 10461/** `Object#toString` result references. */ 10462var argsTag = '[object Arguments]', 10463 arrayTag = '[object Array]', 10464 boolTag = '[object Boolean]', 10465 dateTag = '[object Date]', 10466 errorTag = '[object Error]', 10467 funcTag = '[object Function]', 10468 mapTag = '[object Map]', 10469 numberTag = '[object Number]', 10470 objectTag = '[object Object]', 10471 regexpTag = '[object RegExp]', 10472 setTag = '[object Set]', 10473 stringTag = '[object String]', 10474 weakMapTag = '[object WeakMap]'; 10475 10476var arrayBufferTag = '[object ArrayBuffer]', 10477 dataViewTag = '[object DataView]', 10478 float32Tag = '[object Float32Array]', 10479 float64Tag = '[object Float64Array]', 10480 int8Tag = '[object Int8Array]', 10481 int16Tag = '[object Int16Array]', 10482 int32Tag = '[object Int32Array]', 10483 uint8Tag = '[object Uint8Array]', 10484 uint8ClampedTag = '[object Uint8ClampedArray]', 10485 uint16Tag = '[object Uint16Array]', 10486 uint32Tag = '[object Uint32Array]'; 10487 10488/** Used to identify `toStringTag` values of typed arrays. */ 10489var typedArrayTags = {}; 10490typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = 10491typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = 10492typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = 10493typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = 10494typedArrayTags[uint32Tag] = true; 10495typedArrayTags[argsTag] = typedArrayTags[arrayTag] = 10496typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
vendor: 10,053 bytes, lines 10497-10881
10497typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = 10498typedArrayTags[errorTag] = typedArrayTags[funcTag] = 10499typedArrayTags[mapTag] = typedArrayTags[numberTag] = 10500typedArrayTags[objectTag] = typedArrayTags[regexpTag] = 10501typedArrayTags[setTag] = typedArrayTags[stringTag] = 10502typedArrayTags[weakMapTag] = false; 10503 10504/** 10505 * The base implementation of `_.isTypedArray` without Node.js optimizations. 10506 * 10507 * @private 10508 * @param {*} value The value to check. 10509 * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. 10510 */ 10511function baseIsTypedArray(value) { 10512 return isObjectLike(value) && 10513 isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; 10514} 10515 10516module.exports = baseIsTypedArray; 10517 10518 10519/***/ }), 10520/* 166 */ 10521/***/ (function(module, exports) { 10522 10523/** 10524 * The base implementation of `_.unary` without support for storing metadata. 10525 * 10526 * @private 10527 * @param {Function} func The function to cap arguments for. 10528 * @returns {Function} Returns the new capped function. 10529 */ 10530function baseUnary(func) { 10531 return function(value) { 10532 return func(value); 10533 }; 10534} 10535 10536module.exports = baseUnary; 10537 10538 10539/***/ }), 10540/* 167 */ 10541/***/ (function(module, exports, __webpack_require__) { 10542 10543/* WEBPACK VAR INJECTION */(function(module) {var freeGlobal = __webpack_require__(67); 10544 10545/** Detect free variable `exports`. */ 10546var freeExports = true && exports && !exports.nodeType && exports; 10547 10548/** Detect free variable `module`. */ 10549var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; 10550 10551/** Detect the popular CommonJS extension `module.exports`. */ 10552var moduleExports = freeModule && freeModule.exports === freeExports; 10553 10554/** Detect free variable `process` from Node.js. */ 10555var freeProcess = moduleExports && freeGlobal.process; 10556 10557/** Used to access faster Node.js helpers. */ 10558var nodeUtil = (function() { 10559 try { 10560 // Use `util.types` for Node.js 10+. 10561 var types = freeModule && freeModule.require && freeModule.require('util').types; 10562 10563 if (types) { 10564 return types; 10565 } 10566 10567 // Legacy `process.binding('util')` for Node.js < 10. 10568 return freeProcess && freeProcess.binding && freeProcess.binding('util'); 10569 } catch (e) {} 10570}()); 10571 10572module.exports = nodeUtil; 10573 10574/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(75)(module))) 10575 10576/***/ }), 10577/* 168 */ 10578/***/ (function(module, exports, __webpack_require__) { 10579 10580var overArg = __webpack_require__(76); 10581 10582/* Built-in method references for those with the same name as other `lodash` methods. */ 10583var nativeKeys = overArg(Object.keys, Object); 10584 10585module.exports = nativeKeys; 10586 10587 10588/***/ }), 10589/* 169 */ 10590/***/ (function(module, exports, __webpack_require__) { 10591 10592var getNative = __webpack_require__(7), 10593 root = __webpack_require__(4); 10594 10595/* Built-in method references that are verified to be native. */ 10596var DataView = getNative(root, 'DataView'); 10597 10598module.exports = DataView; 10599 10600 10601/***/ }), 10602/* 170 */ 10603/***/ (function(module, exports, __webpack_require__) { 10604 10605var getNative = __webpack_require__(7), 10606 root = __webpack_require__(4); 10607 10608/* Built-in method references that are verified to be native. */ 10609var Promise = getNative(root, 'Promise'); 10610 10611module.exports = Promise; 10612 10613 10614/***/ }), 10615/* 171 */ 10616/***/ (function(module, exports, __webpack_require__) { 10617 10618var getNative = __webpack_require__(7), 10619 root = __webpack_require__(4); 10620 10621/* Built-in method references that are verified to be native. */ 10622var Set = getNative(root, 'Set'); 10623 10624module.exports = Set; 10625 10626 10627/***/ }), 10628/* 172 */ 10629/***/ (function(module, exports, __webpack_require__) { 10630 10631var isStrictComparable = __webpack_require__(78), 10632 keys = __webpack_require__(21); 10633 10634/** 10635 * Gets the property names, values, and compare flags of `object`. 10636 * 10637 * @private 10638 * @param {Object} object The object to query. 10639 * @returns {Array} Returns the match data of `object`. 10640 */ 10641function getMatchData(object) { 10642 var result = keys(object), 10643 length = result.length; 10644 10645 while (length--) { 10646 var key = result[length], 10647 value = object[key]; 10648 10649 result[length] = [key, value, isStrictComparable(value)]; 10650 } 10651 return result; 10652} 10653 10654module.exports = getMatchData; 10655 10656 10657/***/ }), 10658/* 173 */ 10659/***/ (function(module, exports, __webpack_require__) { 10660 10661var baseIsEqual = __webpack_require__(69), 10662 get = __webpack_require__(23), 10663 hasIn = __webpack_require__(177), 10664 isKey = __webpack_require__(45), 10665 isStrictComparable = __webpack_require__(78), 10666 matchesStrictComparable = __webpack_require__(79), 10667 toKey = __webpack_require__(12); 10668 10669/** Used to compose bitmasks for value comparisons. */ 10670var COMPARE_PARTIAL_FLAG = 1, 10671 COMPARE_UNORDERED_FLAG = 2; 10672 10673/** 10674 * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. 10675 * 10676 * @private 10677 * @param {string} path The path of the property to get. 10678 * @param {*} srcValue The value to match. 10679 * @returns {Function} Returns the new spec function. 10680 */ 10681function baseMatchesProperty(path, srcValue) { 10682 if (isKey(path) && isStrictComparable(srcValue)) { 10683 return matchesStrictComparable(toKey(path), srcValue); 10684 } 10685 return function(object) { 10686 var objValue = get(object, path); 10687 return (objValue === undefined && objValue === srcValue) 10688 ? hasIn(object, path) 10689 : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); 10690 }; 10691} 10692 10693module.exports = baseMatchesProperty; 10694 10695 10696/***/ }), 10697/* 174 */ 10698/***/ (function(module, exports, __webpack_require__) { 10699 10700var memoizeCapped = __webpack_require__(175); 10701 10702/** Used to match property names within property paths. */ 10703var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; 10704 10705/** Used to match backslashes in property paths. */ 10706var reEscapeChar = /\\(\\)?/g; 10707 10708/** 10709 * Converts `string` to a property path array. 10710 * 10711 * @private 10712 * @param {string} string The string to convert. 10713 * @returns {Array} Returns the property path array. 10714 */ 10715var stringToPath = memoizeCapped(function(string) { 10716 var result = []; 10717 if (string.charCodeAt(0) === 46 /* . */) { 10718 result.push(''); 10719 } 10720 string.replace(rePropName, function(match, number, quote, subString) { 10721 result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match)); 10722 }); 10723 return result; 10724}); 10725 10726module.exports = stringToPath; 10727 10728 10729/***/ }), 10730/* 175 */ 10731/***/ (function(module, exports, __webpack_require__) { 10732 10733var memoize = __webpack_require__(176); 10734 10735/** Used as the maximum memoize cache size. */ 10736var MAX_MEMOIZE_SIZE = 500; 10737 10738/** 10739 * A specialized version of `_.memoize` which clears the memoized function's 10740 * cache when it exceeds `MAX_MEMOIZE_SIZE`. 10741 * 10742 * @private 10743 * @param {Function} func The function to have its output memoized. 10744 * @returns {Function} Returns the new memoized function. 10745 */ 10746function memoizeCapped(func) { 10747 var result = memoize(func, function(key) { 10748 if (cache.size === MAX_MEMOIZE_SIZE) { 10749 cache.clear(); 10750 } 10751 return key; 10752 }); 10753 10754 var cache = result.cache; 10755 return result; 10756} 10757 10758module.exports = memoizeCapped; 10759 10760 10761/***/ }), 10762/* 176 */ 10763/***/ (function(module, exports, __webpack_require__) { 10764 10765var MapCache = __webpack_require__(35); 10766 10767/** Error message constants. */ 10768var FUNC_ERROR_TEXT = 'Expected a function'; 10769 10770/** 10771 * Creates a function that memoizes the result of `func`. If `resolver` is 10772 * provided, it determines the cache key for storing the result based on the 10773 * arguments provided to the memoized function. By default, the first argument 10774 * provided to the memoized function is used as the map cache key. The `func` 10775 * is invoked with the `this` binding of the memoized function. 10776 * 10777 * **Note:** The cache is exposed as the `cache` property on the memoized 10778 * function. Its creation may be customized by replacing the `_.memoize.Cache` 10779 * constructor with one whose instances implement the 10780 * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) 10781 * method interface of `clear`, `delete`, `get`, `has`, and `set`. 10782 * 10783 * @static 10784 * @memberOf _ 10785 * @since 0.1.0 10786 * @category Function 10787 * @param {Function} func The function to have its output memoized. 10788 * @param {Function} [resolver] The function to resolve the cache key. 10789 * @returns {Function} Returns the new memoized function. 10790 * @example 10791 * 10792 * var object = { 'a': 1, 'b': 2 }; 10793 * var other = { 'c': 3, 'd': 4 }; 10794 * 10795 * var values = _.memoize(_.values); 10796 * values(object); 10797 * // => [1, 2] 10798 * 10799 * values(other); 10800 * // => [3, 4] 10801 * 10802 * object.a = 2; 10803 * values(object); 10804 * // => [1, 2] 10805 * 10806 * // Modify the result cache. 10807 * values.cache.set(object, ['a', 'b']); 10808 * values(object); 10809 * // => ['a', 'b'] 10810 * 10811 * // Replace `_.memoize.Cache`. 10812 * _.memoize.Cache = WeakMap; 10813 */ 10814function memoize(func, resolver) { 10815 if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) { 10816 throw new TypeError(FUNC_ERROR_TEXT); 10817 } 10818 var memoized = function() { 10819 var args = arguments, 10820 key = resolver ? resolver.apply(this, args) : args[0], 10821 cache = memoized.cache; 10822 10823 if (cache.has(key)) { 10824 return cache.get(key); 10825 } 10826 var result = func.apply(this, args); 10827 memoized.cache = cache.set(key, result) || cache; 10828 return result; 10829 }; 10830 memoized.cache = new (memoize.Cache || MapCache); 10831 return memoized; 10832} 10833 10834// Expose `MapCache`. 10835memoize.Cache = MapCache; 10836 10837module.exports = memoize; 10838 10839 10840/***/ }), 10841/* 177 */ 10842/***/ (function(module, exports, __webpack_require__) { 10843 10844var baseHasIn = __webpack_require__(178), 10845 hasPath = __webpack_require__(179); 10846 10847/** 10848 * Checks if `path` is a direct or inherited property of `object`. 10849 * 10850 * @static 10851 * @memberOf _ 10852 * @since 4.0.0 10853 * @category Object 10854 * @param {Object} object The object to query. 10855 * @param {Array|string} path The path to check. 10856 * @returns {boolean} Returns `true` if `path` exists, else `false`. 10857 * @example 10858 * 10859 * var object = _.create({ 'a': _.create({ 'b': 2 }) }); 10860 * 10861 * _.hasIn(object, 'a'); 10862 * // => true 10863 * 10864 * _.hasIn(object, 'a.b'); 10865 * // => true 10866 * 10867 * _.hasIn(object, ['a', 'b']); 10868 * // => true 10869 * 10870 * _.hasIn(object, 'b'); 10871 * // => false 10872 */ 10873function hasIn(object, path) { 10874 return object != null && hasPath(object, path, baseHasIn); 10875} 10876 10877module.exports = hasIn; 10878 10879 10880/***/ }), 10881/* 178 */
10882/***/ (function(module, exports) { 10883 10884/** 10885 * The base implementation of `_.hasIn` without support for deep paths. 10886 * 10887 * @private 10888 * @param {Object} [object] The object to query. 10889 * @param {Array|string} key The key to check. 10890 * @returns {boolean} Returns `true` if `key` exists, else `false`. 10891 */ 10892function baseHasIn(object, key) { 10893 return object != null && key in Object(object); 10894} 10895 10896module.exports = baseHasIn; 10897 10898 10899/***/ }), 10900/* 179 */ 10901/***/ (function(module, exports, __webpack_require__) { 10902 10903var castPath = __webpack_require__(24), 10904 isArguments = __webpack_require__(22), 10905 isArray = __webpack_require__(1), 10906 isIndex = __webpack_require__(38), 10907 isLength = __webpack_require__(40), 10908 toKey = __webpack_require__(12); 10909 10910/** 10911 * Checks if `path` exists on `object`. 10912 * 10913 * @private 10914 * @param {Object} object The object to query. 10915 * @param {Array|string} path The path to check. 10916 * @param {Function} hasFunc The function to check properties. 10917 * @returns {boolean} Returns `true` if `path` exists, else `false`. 10918 */ 10919function hasPath(object, path, hasFunc) { 10920 path = castPath(path, object); 10921 10922 var index = -1, 10923 length = path.length, 10924 result = false;
vendor: 4,462 bytes, lines 10925-11114
10925 10926 while (++index < length) { 10927 var key = toKey(path[index]); 10928 if (!(result = object != null && hasFunc(object, key))) { 10929 break; 10930 } 10931 object = object[key]; 10932 } 10933 if (result || ++index != length) { 10934 return result; 10935 } 10936 length = object == null ? 0 : object.length; 10937 return !!length && isLength(length) && isIndex(key, length) && 10938 (isArray(object) || isArguments(object)); 10939} 10940 10941module.exports = hasPath; 10942 10943 10944/***/ }), 10945/* 180 */ 10946/***/ (function(module, exports, __webpack_require__) { 10947 10948var baseProperty = __webpack_require__(83), 10949 basePropertyDeep = __webpack_require__(181), 10950 isKey = __webpack_require__(45), 10951 toKey = __webpack_require__(12); 10952 10953/** 10954 * Creates a function that returns the value at `path` of a given object. 10955 * 10956 * @static 10957 * @memberOf _ 10958 * @since 2.4.0 10959 * @category Util 10960 * @param {Array|string} path The path of the property to get. 10961 * @returns {Function} Returns the new accessor function. 10962 * @example 10963 * 10964 * var objects = [ 10965 * { 'a': { 'b': 2 } }, 10966 * { 'a': { 'b': 1 } } 10967 * ]; 10968 * 10969 * _.map(objects, _.property('a.b')); 10970 * // => [2, 1] 10971 * 10972 * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b'); 10973 * // => [1, 2] 10974 */ 10975function property(path) { 10976 return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path); 10977} 10978 10979module.exports = property; 10980 10981 10982/***/ }), 10983/* 181 */ 10984/***/ (function(module, exports, __webpack_require__) { 10985 10986var baseGet = __webpack_require__(44); 10987 10988/** 10989 * A specialized version of `baseProperty` which supports deep paths. 10990 * 10991 * @private 10992 * @param {Array|string} path The path of the property to get. 10993 * @returns {Function} Returns the new accessor function. 10994 */ 10995function basePropertyDeep(path) { 10996 return function(object) { 10997 return baseGet(object, path); 10998 }; 10999} 11000 11001module.exports = basePropertyDeep; 11002 11003 11004/***/ }), 11005/* 182 */ 11006/***/ (function(module, exports, __webpack_require__) { 11007 11008var baseFindIndex = __webpack_require__(84), 11009 baseIteratee = __webpack_require__(6), 11010 toInteger = __webpack_require__(47); 11011 11012/* Built-in method references for those with the same name as other `lodash` methods. */ 11013var nativeMax = Math.max; 11014 11015/** 11016 * This method is like `_.find` except that it returns the index of the first 11017 * element `predicate` returns truthy for instead of the element itself. 11018 * 11019 * @static 11020 * @memberOf _ 11021 * @since 1.1.0 11022 * @category Array 11023 * @param {Array} array The array to inspect. 11024 * @param {Function} [predicate=_.identity] The function invoked per iteration. 11025 * @param {number} [fromIndex=0] The index to search from. 11026 * @returns {number} Returns the index of the found element, else `-1`. 11027 * @example 11028 * 11029 * var users = [ 11030 * { 'user': 'barney', 'active': false }, 11031 * { 'user': 'fred', 'active': false }, 11032 * { 'user': 'pebbles', 'active': true } 11033 * ]; 11034 * 11035 * _.findIndex(users, function(o) { return o.user == 'barney'; }); 11036 * // => 0 11037 * 11038 * // The `_.matches` iteratee shorthand. 11039 * _.findIndex(users, { 'user': 'fred', 'active': false }); 11040 * // => 1 11041 * 11042 * // The `_.matchesProperty` iteratee shorthand. 11043 * _.findIndex(users, ['active', false]); 11044 * // => 0 11045 * 11046 * // The `_.property` iteratee shorthand. 11047 * _.findIndex(users, 'active'); 11048 * // => 2 11049 */ 11050function findIndex(array, predicate, fromIndex) { 11051 var length = array == null ? 0 : array.length; 11052 if (!length) { 11053 return -1; 11054 } 11055 var index = fromIndex == null ? 0 : toInteger(fromIndex); 11056 if (index < 0) { 11057 index = nativeMax(length + index, 0); 11058 } 11059 return baseFindIndex(array, baseIteratee(predicate, 3), index); 11060} 11061 11062module.exports = findIndex; 11063 11064 11065/***/ }), 11066/* 183 */ 11067/***/ (function(module, exports, __webpack_require__) { 11068 11069var toNumber = __webpack_require__(48); 11070 11071/** Used as references for various `Number` constants. */ 11072var INFINITY = 1 / 0, 11073 MAX_INTEGER = 1.7976931348623157e+308; 11074 11075/** 11076 * Converts `value` to a finite number. 11077 * 11078 * @static 11079 * @memberOf _ 11080 * @since 4.12.0 11081 * @category Lang 11082 * @param {*} value The value to convert. 11083 * @returns {number} Returns the converted number. 11084 * @example 11085 * 11086 * _.toFinite(3.2); 11087 * // => 3.2 11088 * 11089 * _.toFinite(Number.MIN_VALUE); 11090 * // => 5e-324 11091 * 11092 * _.toFinite(Infinity); 11093 * // => 1.7976931348623157e+308 11094 * 11095 * _.toFinite('3.2'); 11096 * // => 3.2 11097 */ 11098function toFinite(value) { 11099 if (!value) { 11100 return value === 0 ? value : 0; 11101 } 11102 value = toNumber(value); 11103 if (value === INFINITY || value === -INFINITY) { 11104 var sign = (value < 0 ? -1 : 1); 11105 return sign * MAX_INTEGER; 11106 } 11107 return value === value ? value : 0; 11108} 11109 11110module.exports = toFinite; 11111 11112 11113/***/ }), 11114/* 184 */
11115/***/ (function(module, exports) { 11116 11117/** 11118 * https://github.com/gre/bezier-easing 11119 * BezierEasing - use bezier curve for transition easing function 11120 * by Gaëtan Renaudeau 2014 - 2015 â MIT License 11121 */ 11122 11123// These values are established by empiricism with tests (tradeoff: performance VS precision) 11124var NEWTON_ITERATIONS = 4; 11125var NEWTON_MIN_SLOPE = 0.001; 11126var SUBDIVISION_PRECISION = 0.0000001; 11127var SUBDIVISION_MAX_ITERATIONS = 10; 11128 11129var kSplineTableSize = 11; 11130var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0); 11131 11132var float32ArraySupported = typeof Float32Array === 'function'; 11133 11134function A (aA1, aA2) { return 1.0 - 3.0 * aA2 + 3.0 * aA1; } 11135function B (aA1, aA2) { return 3.0 * aA2 - 6.0 * aA1; } 11136function C (aA1) { return 3.0 * aA1; } 11137 11138// Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2. 11139function calcBezier (aT, aA1, aA2) { return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT; } 11140 11141// Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2. 11142function getSlope (aT, aA1, aA2) { return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1); } 11143 11144function binarySubdivide (aX, aA, aB, mX1, mX2) { 11145 var currentX, currentT, i = 0; 11146 do { 11147 currentT = aA + (aB - aA) / 2.0; 11148 currentX = calcBezier(currentT, mX1, mX2) - aX; 11149 if (currentX > 0.0) { 11150 aB = currentT; 11151 } else { 11152 aA = currentT; 11153 } 11154 } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS); 11155 return currentT; 11156} 11157 11158function newtonRaphsonIterate (aX, aGuessT, mX1, mX2) { 11159 for (var i = 0; i < NEWTON_ITERATIONS; ++i) { 11160 var currentSlope = getSlope(aGuessT, mX1, mX2); 11161 if (currentSlope === 0.0) { 11162 return aGuessT; 11163 } 11164 var currentX = calcBezier(aGuessT, mX1, mX2) - aX; 11165 aGuessT -= currentX / currentSlope; 11166 } 11167 return aGuessT; 11168} 11169 11170module.exports = function bezier (mX1, mY1, mX2, mY2) { 11171 if (!(0 <= mX1 && mX1 <= 1 && 0 <= mX2 && mX2 <= 1)) { 11172 throw new Error('bezier x values must be in [0, 1] range'); 11173 } 11174 11175 // Precompute samples table 11176 var sampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize); 11177 if (mX1 !== mY1 || mX2 !== mY2) { 11178 for (var i = 0; i < kSplineTableSize; ++i) { 11179 sampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2); 11180 } 11181 } 11182 11183 function getTForX (aX) { 11184 var intervalStart = 0.0; 11185 var currentSample = 1; 11186 var lastSample = kSplineTableSize - 1; 11187 11188 for (; currentSample !== lastSample && sampleValues[currentSample] <= aX; ++currentSample) { 11189 intervalStart += kSampleStepSize; 11190 } 11191 --currentSample; 11192 11193 // Interpolate to provide an initial guess for t 11194 var dist = (aX - sampleValues[currentSample]) / (sampleValues[currentSample + 1] - sampleValues[currentSample]); 11195 var guessForT = intervalStart + dist * kSampleStepSize; 11196 11197 var initialSlope = getSlope(guessForT, mX1, mX2); 11198 if (initialSlope >= NEWTON_MIN_SLOPE) { 11199 return newtonRaphsonIterate(aX, guessForT, mX1, mX2); 11200 } else if (initialSlope === 0.0) { 11201 return guessForT; 11202 } else { 11203 return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2); 11204 } 11205 } 11206 11207 return function BezierEasing (x) { 11208 if (mX1 === mY1 && mX2 === mY2) { 11209 return x; // linear 11210 } 11211 // Because JavaScript number are imprecise, we should guarantee the extremes are right. 11212 if (x === 0) { 11213 return 0; 11214 } 11215 if (x === 1) { 11216 return 1; 11217 } 11218 return calcBezier(getTForX(x), mY1, mY2); 11219 }; 11220}; 11221 11222 11223/***/ }), 11224/* 185 */ 11225/***/ (function(module, exports, __webpack_require__) { 11226 11227"use strict"; 11228 11229 11230Object.defineProperty(exports, "__esModule", { 11231 value: true 11232}); 11233exports.createElementState = createElementState; 11234exports.mergeActionState = mergeActionState; 11235exports.ixElements = void 0; 11236 11237var _timm = __webpack_require__(13); 11238 11239var _IX2EngineConstants = __webpack_require__(50); 11240 11241var _IX2EngineActionTypes = __webpack_require__(87); 11242 11243var initialState = {}; 11244var refState = 'refState'; 11245 11246var ixElements = function ixElements() { 11247 var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState; 11248 var action = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; 11249 11250 switch (action.type) { 11251 case _IX2EngineActionTypes.IX2_SESSION_STOPPED: 11252 { 11253 return initialState; 11254 } 11255 11256 case _IX2EngineActionTypes.IX2_INSTANCE_ADDED: 11257 { 11258 var _action$payload = action.payload, 11259 elementId = _action$payload.elementId, 11260 ref = _action$payload.element, 11261 origin = _action$payload.origin, 11262 actionItem = _action$payload.actionItem, 11263 refType = _action$payload.refType; 11264 var actionTypeId = actionItem.actionTypeId; 11265 var newState = state; // Create new ref entry if it doesn't exist 11266 11267 if ((0, _timm.getIn)(newState, [elementId, ref]) !== ref) { 11268 newState = createElementState(newState, ref, refType, elementId, actionItem); 11269 } // Merge origin values into ref state 11270 11271 11272 return mergeActionState(newState, elementId, actionTypeId, origin, actionItem); 11273 } 11274 11275 case _IX2EngineActionTypes.IX2_ELEMENT_STATE_CHANGED: 11276 { 11277 var _action$payload2 = action.payload, 11278 _elementId = _action$payload2.elementId, 11279 _actionTypeId = _action$payload2.actionTypeId, 11280 current = _action$payload2.current, 11281 _actionItem = _action$payload2.actionItem; 11282 return mergeActionState(state, _elementId, _actionTypeId, current, _actionItem); 11283 } 11284 11285 default: 11286 { 11287 return state; 11288 } 11289 } 11290}; 11291 11292exports.ixElements = ixElements; 11293 11294function createElementState(state, ref, refType, elementId, actionItem) { 11295 var refId = refType === _IX2EngineConstants.PLAIN_OBJECT ? (0, _timm.getIn)(actionItem, ['config', 'target', 'objectId']) : null; 11296 return (0, _timm.mergeIn)(state, [elementId], { 11297 id: elementId, 11298 ref: ref, 11299 refId: refId, 11300 refType: refType 11301 }); 11302} 11303 11304function mergeActionState(state, elementId, actionTypeId, actionState, // FIXME: weak type is used 11305actionItem) { 11306 var units = pickUnits(actionItem); 11307 var mergePath = [elementId, refState, actionTypeId]; 11308 return (0, _timm.mergeIn)(state, mergePath, actionState, units); 11309} 11310 11311var valueUnitPairs = [[_IX2EngineConstants.CONFIG_X_VALUE, _IX2EngineConstants.CONFIG_X_UNIT], [_IX2EngineConstants.CONFIG_Y_VALUE, _IX2EngineConstants.CONFIG_Y_UNIT], [_IX2EngineConstants.CONFIG_Z_VALUE, _IX2EngineConstants.CONFIG_Z_UNIT], [_IX2EngineConstants.CONFIG_VALUE, _IX2EngineConstants.CONFIG_UNIT]]; // FIXME: weak type is used 11312// eslint-disable-next-line flowtype/no-weak-types 11313 11314function pickUnits(actionItem) { 11315 var config = actionItem.config; 11316 return valueUnitPairs.reduce(function (result, pair) { 11317 var valueKey = pair[0]; 11318 var unitKey = pair[1]; 11319 var configValue = config[valueKey]; 11320 var configUnit = config[unitKey]; 11321 11322 if (configValue != null && configUnit != null) { 11323 result[unitKey] = configUnit; 11324 } 11325 11326 return result; 11327 }, {}); 11328} 11329 11330/***/ }), 11331/* 186 */ 11332/***/ (function(module, exports, __webpack_require__) { 11333 11334"use strict"; 11335 11336 11337Object.defineProperty(exports, "__esModule", { 11338 value: true 11339}); 11340exports.clearPlugin = exports.renderPlugin = exports.createPluginInstance = exports.getPluginDestination = exports.getPluginOrigin = exports.getPluginConfig = void 0; 11341/* eslint-env browser */ 11342 11343var getPluginConfig = function getPluginConfig(actionItemConfig) { 11344 return actionItemConfig.value; 11345}; 11346 11347exports.getPluginConfig = getPluginConfig; 11348 11349var getPluginOrigin = function getPluginOrigin(refState) { 11350 return refState || { 11351 value: 0 11352 }; 11353}; 11354 11355exports.getPluginOrigin = getPluginOrigin; 11356 11357var getPluginDestination = function getPluginDestination(actionItemConfig) { 11358 return { 11359 value: actionItemConfig.value 11360 }; 11361}; 11362 11363exports.getPluginDestination = getPluginDestination; 11364 11365var createPluginInstance = function createPluginInstance(element) { 11366 var instance = window.Webflow.require('lottie').createInstance(element); 11367 11368 instance.pause(); 11369 instance.setSubframe(true); 11370 return instance; 11371}; 11372 11373exports.createPluginInstance = createPluginInstance; 11374 11375var renderPlugin = function renderPlugin(pluginInstance, refState, actionItem) { 11376 if (!pluginInstance) { 11377 return; 11378 } 11379 11380 var percent = refState[actionItem.actionTypeId].value / 100;
11381 pluginInstance.setCurrentRawFrameValue(pluginInstance.totalFrames * percent); 11382}; 11383 11384exports.renderPlugin = renderPlugin; 11385 11386var clearPlugin = function clearPlugin(element) { 11387 var instance = window.Webflow.require('lottie').createInstance(element); 11388 11389 instance.stop(); 11390}; 11391 11392exports.clearPlugin = clearPlugin; 11393 11394/***/ }), 11395/* 187 */ 11396/***/ (function(module, exports, __webpack_require__) { 11397 11398"use strict"; 11399 11400 11401var _interopRequireDefault2 = __webpack_require__(0); 11402 11403var _typeof2 = _interopRequireDefault2(__webpack_require__(15)); 11404 11405var _defineProperty2 = _interopRequireDefault2(__webpack_require__(14)); 11406 11407var _Object$freeze, _Object$freeze2, _transformDefaults; 11408 11409var _interopRequireDefault = __webpack_require__(0); 11410 11411Object.defineProperty(exports, "__esModule", { 11412 value: true 11413}); 11414exports.getInstanceId = getInstanceId; 11415exports.getElementId = getElementId; 11416exports.reifyState = reifyState; 11417exports.observeStore = observeStore; 11418exports.getAffectedElements = getAffectedElements; 11419exports.getComputedStyle = getComputedStyle; 11420exports.getInstanceOrigin = getInstanceOrigin; 11421exports.getDestinationValues = getDestinationValues; 11422exports.getRenderType = getRenderType; 11423exports.getStyleProp = getStyleProp; 11424exports.renderHTMLElement = renderHTMLElement; 11425exports.clearAllStyles = clearAllStyles; 11426exports.cleanupHTMLElement = cleanupHTMLElement; 11427exports.getMaxDurationItemIndex = getMaxDurationItemIndex; 11428exports.getActionListProgress = getActionListProgress; 11429exports.reduceListToGroup = reduceListToGroup; 11430exports.shouldNamespaceEventParameter = shouldNamespaceEventParameter; 11431exports.getNamespacedParameterId = getNamespacedParameterId; 11432exports.shouldAllowMediaQuery = shouldAllowMediaQuery; 11433exports.mediaQueriesEqual = mediaQueriesEqual; 11434exports.stringifyTarget = stringifyTarget; 11435exports.getItemConfigByKey = void 0; 11436 11437var _defaultTo = _interopRequireDefault(__webpack_require__(188)); 11438 11439var _reduce = _interopRequireDefault(__webpack_require__(189)); 11440 11441var _findLast = _interopRequireDefault(__webpack_require__(195)); 11442 11443var _get = _interopRequireDefault(__webpack_require__(23)); 11444 11445var _timm = __webpack_require__(13); 11446 11447var _shallowEqual = _interopRequireDefault(__webpack_require__(92)); 11448 11449var _IX2EasingUtils = __webpack_require__(86); 11450 11451var _IX2VanillaPlugins = __webpack_require__(89); 11452 11453var _IX2EngineConstants = __webpack_require__(50); 11454 11455var _IX2EngineEventTypes = __webpack_require__(88); 11456 11457var _IX2EngineItemTypes = __webpack_require__(49); 11458 11459var _IX2BrowserSupport = __webpack_require__(32); 11460/* eslint-env browser */ 11461 11462 11463var trim = function trim(v) { 11464 return v.trim(); 11465}; 11466 11467var colorStyleProps = Object.freeze((_Object$freeze = {}, (0, _defineProperty2["default"])(_Object$freeze, _IX2EngineItemTypes.STYLE_BACKGROUND_COLOR, _IX2EngineConstants.BACKGROUND_COLOR), (0, _defineProperty2["default"])(_Object$freeze, _IX2EngineItemTypes.STYLE_BORDER, _IX2EngineConstants.BORDER_COLOR), (0, _defineProperty2["default"])(_Object$freeze, _IX2EngineItemTypes.STYLE_TEXT_COLOR, _IX2EngineConstants.COLOR), _Object$freeze)); 11468var willChangeProps = Object.freeze((_Object$freeze2 = {}, (0, _defineProperty2["default"])(_Object$freeze2, _IX2BrowserSupport.TRANSFORM_PREFIXED, _IX2EngineConstants.TRANSFORM), (0, _defineProperty2["default"])(_Object$freeze2, _IX2EngineConstants.BACKGROUND_COLOR, _IX2EngineConstants.BACKGROUND), (0, _defineProperty2["default"])(_Object$freeze2, _IX2EngineConstants.OPACITY, _IX2EngineConstants.OPACITY), (0, _defineProperty2["default"])(_Object$freeze2, _IX2EngineConstants.FILTER, _IX2EngineConstants.FILTER), (0, _defineProperty2["default"])(_Object$freeze2, _IX2EngineConstants.WIDTH, _IX2EngineConstants.WIDTH), (0, _defineProperty2["default"])(_Object$freeze2, _IX2EngineConstants.HEIGHT, _IX2EngineConstants.HEIGHT), _Object$freeze2)); 11469var objectCache = {}; 11470var instanceCount = 1; 11471 11472function getInstanceId() { 11473 return 'i' + instanceCount++; 11474} 11475 11476var elementCount = 1; 11477 11478function getElementId(ixElements, ref) { 11479 // TODO: optimize element lookup 11480 for (var key in ixElements) { 11481 var ixEl = ixElements[key]; 11482 11483 if (ixEl && ixEl.ref === ref) { 11484 return ixEl.id; 11485 } 11486 } 11487 11488 return 'e' + elementCount++; 11489} 11490 11491function reifyState() { 11492 var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, 11493 events = _ref.events, 11494 actionLists = _ref.actionLists, 11495 site = _ref.site; 11496 11497 var eventTypeMap = (0, _reduce["default"])(events, function (result, event) { 11498 var eventTypeId = event.eventTypeId; 11499 11500 if (!result[eventTypeId]) { 11501 result[eventTypeId] = {}; 11502 } 11503 11504 result[eventTypeId][event.id] = event; 11505 return result; 11506 }, {}); 11507 var mediaQueries = site && site.mediaQueries; 11508 var mediaQueryKeys = []; 11509 11510 if (mediaQueries) { 11511 mediaQueryKeys = mediaQueries.map(function (mq) { 11512 return mq.key; 11513 }); 11514 } else { 11515 mediaQueries = []; 11516 console.warn("IX2 missing mediaQueries in site data"); 11517 } 11518 11519 return { 11520 ixData: { 11521 events: events, 11522 actionLists: actionLists, 11523 eventTypeMap: eventTypeMap, 11524 mediaQueries: mediaQueries, 11525 mediaQueryKeys: mediaQueryKeys 11526 } 11527 }; 11528} 11529 11530var strictEqual = function strictEqual(a, b) { 11531 return a === b; 11532}; 11533 11534function observeStore(_ref2) { 11535 var store = _ref2.store, 11536 select = _ref2.select, 11537 onChange = _ref2.onChange, 11538 _ref2$comparator = _ref2.comparator, 11539 comparator = _ref2$comparator === void 0 ? strictEqual : _ref2$comparator; 11540 var getState = store.getState, 11541 subscribe = store.subscribe; 11542 var unsubscribe = subscribe(handleChange); 11543 var currentState = select(getState()); 11544 11545 function handleChange() { 11546 var nextState = select(getState()); 11547 11548 if (nextState == null) { 11549 unsubscribe(); 11550 return; 11551 } 11552 11553 if (!comparator(nextState, currentState)) { 11554 currentState = nextState; 11555 onChange(currentState, store); 11556 } 11557 } 11558 11559 return unsubscribe; 11560} 11561 11562function normalizeTarget(target) { 11563 var type = (0, _typeof2["default"])(target); 11564 11565 if (type === 'string') { 11566 return { 11567 id: target 11568 }; 11569 } else if (target != null && type === 'object') { 11570 var id = target.id, 11571 objectId = target.objectId, 11572 selector = target.selector, 11573 selectorGuids = target.selectorGuids, 11574 appliesTo = target.appliesTo, 11575 useEventTarget = target.useEventTarget; 11576 return { 11577 id: id, 11578 objectId: objectId, 11579 selector: selector, 11580 selectorGuids: selectorGuids, 11581 appliesTo: appliesTo, 11582 useEventTarget: useEventTarget 11583 }; 11584 } 11585 11586 return {}; 11587} 11588 11589function getAffectedElements(_ref3) { 11590 var config = _ref3.config, 11591 event = _ref3.event, 11592 eventTarget = _ref3.eventTarget, 11593 elementRoot = _ref3.elementRoot, 11594 elementApi = _ref3.elementApi; 11595 11596 if (!elementApi) { 11597 throw new Error('IX2 missing elementApi'); 11598 } 11599 11600 var getValidDocument = elementApi.getValidDocument, 11601 getQuerySelector = elementApi.getQuerySelector, 11602 queryDocument = elementApi.queryDocument, 11603 getChildElements = elementApi.getChildElements,
11604 getSiblingElements = elementApi.getSiblingElements, 11605 matchSelector = elementApi.matchSelector, 11606 elementContains = elementApi.elementContains, 11607 isSiblingNode = elementApi.isSiblingNode; 11608 var target = config.target; 11609 11610 if (!target) { 11611 return []; 11612 } 11613 11614 var _normalizeTarget = normalizeTarget(target), 11615 id = _normalizeTarget.id, 11616 objectId = _normalizeTarget.objectId, 11617 selector = _normalizeTarget.selector, 11618 selectorGuids = _normalizeTarget.selectorGuids, 11619 appliesTo = _normalizeTarget.appliesTo, 11620 useEventTarget = _normalizeTarget.useEventTarget; 11621 11622 if (objectId) { 11623 var ref = objectCache[objectId] || (objectCache[objectId] = {}); 11624 return [ref]; 11625 } 11626 11627 if (appliesTo === _IX2EngineEventTypes.PAGE) { 11628 var doc = getValidDocument(id); 11629 return doc ? [doc] : []; 11630 } 11631 11632 var overrides = (0, _get["default"])(event, 'action.config.affectedElements', {}); 11633 var override = overrides[id || selector] || {}; 11634 var validOverride = Boolean(override.id || override.selector); 11635 var limitAffectedElements; 11636 var baseSelector; 11637 var finalSelector; 11638 var eventTargetSelector = event && getQuerySelector(normalizeTarget(event.target)); 11639 11640 if (validOverride) { 11641 limitAffectedElements = override.limitAffectedElements; 11642 baseSelector = eventTargetSelector; 11643 finalSelector = getQuerySelector(override); 11644 } else { 11645 // pass in selectorGuids as well for server-side rendering. 11646 baseSelector = finalSelector = getQuerySelector({ 11647 id: id, 11648 selector: selector, 11649 selectorGuids: selectorGuids 11650 }); 11651 } 11652 11653 if (event && useEventTarget) { 11654 // eventTarget is not defined when this function is called in a clear request, so find 11655 // all target elements associated with the event data, and return affected elements. 11656 var eventTargets = eventTarget && (finalSelector || useEventTarget === true) ? [eventTarget] : queryDocument(eventTargetSelector); 11657 11658 if (finalSelector) { 11659 if (useEventTarget === _IX2EngineConstants.PARENT) { 11660 return queryDocument(finalSelector).filter(function (parentElement) { 11661 return eventTargets.some(function (targetElement) { 11662 return elementContains(parentElement, targetElement); 11663 }); 11664 }); 11665 } 11666 11667 if (useEventTarget === _IX2EngineConstants.CHILDREN) { 11668 return queryDocument(finalSelector).filter(function (childElement) { 11669 return eventTargets.some(function (targetElement) { 11670 return elementContains(targetElement, childElement); 11671 }); 11672 }); 11673 } 11674 11675 if (useEventTarget === _IX2EngineConstants.SIBLINGS) { 11676 return queryDocument(finalSelector).filter(function (siblingElement) { 11677 return eventTargets.some(function (targetElement) { 11678 return isSiblingNode(targetElement, siblingElement); 11679 }); 11680 }); 11681 } 11682 } 11683 11684 return eventTargets; 11685 } 11686 11687 if (baseSelector == null || finalSelector == null) { 11688 return []; 11689 } 11690 11691 if (_IX2BrowserSupport.IS_BROWSER_ENV && elementRoot) { 11692 return queryDocument(finalSelector).filter(function (element) { 11693 return elementRoot.contains(element); 11694 }); 11695 } 11696 11697 if (limitAffectedElements === _IX2EngineConstants.CHILDREN) { 11698 return queryDocument(baseSelector, finalSelector); 11699 } else if (limitAffectedElements === _IX2EngineConstants.IMMEDIATE_CHILDREN) { 11700 return getChildElements(queryDocument(baseSelector)).filter(matchSelector(finalSelector)); 11701 } else if (limitAffectedElements === _IX2EngineConstants.SIBLINGS) { 11702 return getSiblingElements(queryDocument(baseSelector)).filter(matchSelector(finalSelector)); 11703 } else { 11704 return queryDocument(finalSelector); 11705 } 11706} 11707 11708function getComputedStyle(_ref4) { 11709 var element = _ref4.element, 11710 actionItem = _ref4.actionItem; 11711 11712 if (!_IX2BrowserSupport.IS_BROWSER_ENV) { 11713 return {}; 11714 } 11715 11716 var actionTypeId = actionItem.actionTypeId; 11717 11718 switch (actionTypeId) { 11719 case _IX2EngineItemTypes.STYLE_SIZE: 11720 case _IX2EngineItemTypes.STYLE_BACKGROUND_COLOR: 11721 case _IX2EngineItemTypes.STYLE_BORDER: 11722 case _IX2EngineItemTypes.STYLE_TEXT_COLOR: 11723 case _IX2EngineItemTypes.GENERAL_DISPLAY: 11724 return window.getComputedStyle(element); 11725 11726 default: 11727 return {}; 11728 } 11729} 11730 11731var pxValueRegex = /px/; 11732 11733var getFilterDefaults = function getFilterDefaults(actionState, filters) { 11734 return filters.reduce(function (result, filter) { 11735 if (result[filter.type] == null) { 11736 result[filter.type] = filterDefaults[filter.type]; 11737 } 11738 11739 return result; 11740 }, actionState || {}); 11741}; 11742 11743function getInstanceOrigin(element) { 11744 var refState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; 11745 var computedStyle = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; 11746 var actionItem = arguments.length > 3 ? arguments[3] : undefined; 11747 var elementApi = arguments.length > 4 ? arguments[4] : undefined;
11748 var getStyle = elementApi.getStyle; 11749 var actionTypeId = actionItem.actionTypeId, 11750 config = actionItem.config; 11751 11752 if ((0, _IX2VanillaPlugins.isPluginType)(actionTypeId)) { 11753 return (0, _IX2VanillaPlugins.getPluginOrigin)(actionTypeId)(refState[actionTypeId]); 11754 } 11755 11756 switch (actionTypeId) { 11757 case _IX2EngineItemTypes.TRANSFORM_MOVE: 11758 case _IX2EngineItemTypes.TRANSFORM_SCALE: 11759 case _IX2EngineItemTypes.TRANSFORM_ROTATE: 11760 case _IX2EngineItemTypes.TRANSFORM_SKEW: 11761 return refState[actionTypeId] || transformDefaults[actionTypeId]; 11762 11763 case _IX2EngineItemTypes.STYLE_FILTER: 11764 return getFilterDefaults(refState[actionTypeId], actionItem.config.filters); 11765 11766 case _IX2EngineItemTypes.STYLE_OPACITY: 11767 return { 11768 value: (0, _defaultTo["default"])(parseFloat(getStyle(element, _IX2EngineConstants.OPACITY)), 1.0) 11769 }; 11770 11771 case _IX2EngineItemTypes.STYLE_SIZE: 11772 { 11773 var inlineWidth = getStyle(element, _IX2EngineConstants.WIDTH); 11774 var inlineHeight = getStyle(element, _IX2EngineConstants.HEIGHT); 11775 var widthValue; 11776 var heightValue; // When destination unit is 'AUTO', ensure origin values are in px 11777 11778 if (config.widthUnit === _IX2EngineConstants.AUTO) { 11779 widthValue = pxValueRegex.test(inlineWidth) ? parseFloat(inlineWidth) : parseFloat(computedStyle.width); 11780 } else { 11781 widthValue = (0, _defaultTo["default"])(parseFloat(inlineWidth), parseFloat(computedStyle.width)); 11782 } 11783 11784 if (config.heightUnit === _IX2EngineConstants.AUTO) { 11785 heightValue = pxValueRegex.test(inlineHeight) ? parseFloat(inlineHeight) : parseFloat(computedStyle.height); 11786 } else { 11787 heightValue = (0, _defaultTo["default"])(parseFloat(inlineHeight), parseFloat(computedStyle.height)); 11788 } 11789 11790 return { 11791 widthValue: widthValue, 11792 heightValue: heightValue 11793 }; 11794 } 11795 11796 case _IX2EngineItemTypes.STYLE_BACKGROUND_COLOR: 11797 case _IX2EngineItemTypes.STYLE_BORDER: 11798 case _IX2EngineItemTypes.STYLE_TEXT_COLOR: 11799 return parseColor({ 11800 element: element, 11801 actionTypeId: actionTypeId, 11802 computedStyle: computedStyle, 11803 getStyle: getStyle 11804 }); 11805 11806 case _IX2EngineItemTypes.GENERAL_DISPLAY: 11807 return { 11808 value: (0, _defaultTo["default"])(getStyle(element, _IX2EngineConstants.DISPLAY), computedStyle.display) 11809 }; 11810 11811 case _IX2EngineItemTypes.OBJECT_VALUE: 11812 return refState[actionTypeId] || { 11813 value: 0 11814 }; 11815 11816 default: 11817 return; 11818 } 11819} 11820 11821var reduceFilters = function reduceFilters(result, filter) { 11822 if (filter) { 11823 result[filter.type] = filter.value || 0; 11824 } 11825 11826 return result; 11827}; 11828 11829var getItemConfigByKey = function getItemConfigByKey(actionTypeId, key, config) { 11830 if ((0, _IX2VanillaPlugins.isPluginType)(actionTypeId)) { 11831 return (0, _IX2VanillaPlugins.getPluginConfig)(actionTypeId)(config, key); 11832 } 11833 11834 switch (actionTypeId) { 11835 case _IX2EngineItemTypes.STYLE_FILTER: 11836 { 11837 var filter = (0, _findLast["default"])(config.filters, function (_ref5) { 11838 var type = _ref5.type; 11839 return type === key; 11840 }); 11841 return filter ? filter.value : 0; 11842 } 11843 11844 default: 11845 return config[key]; 11846 } 11847}; 11848 11849exports.getItemConfigByKey = getItemConfigByKey; 11850 11851function getDestinationValues(_ref6) { 11852 var element = _ref6.element, 11853 actionItem = _ref6.actionItem, 11854 elementApi = _ref6.elementApi; 11855 var actionTypeId = actionItem.actionTypeId; 11856 11857 if ((0, _IX2VanillaPlugins.isPluginType)(actionTypeId)) { 11858 return (0, _IX2VanillaPlugins.getPluginDestination)(actionTypeId)(actionItem.config); 11859 } 11860 11861 switch (actionTypeId) { 11862 case _IX2EngineItemTypes.TRANSFORM_MOVE: 11863 case _IX2EngineItemTypes.TRANSFORM_SCALE: 11864 case _IX2EngineItemTypes.TRANSFORM_ROTATE: 11865 case _IX2EngineItemTypes.TRANSFORM_SKEW: 11866 { 11867 var _actionItem$config = actionItem.config, 11868 xValue = _actionItem$config.xValue, 11869 yValue = _actionItem$config.yValue, 11870 zValue = _actionItem$config.zValue; 11871 return { 11872 xValue: xValue, 11873 yValue: yValue, 11874 zValue: zValue 11875 }; 11876 } 11877 11878 case _IX2EngineItemTypes.STYLE_SIZE: 11879 {
11880 var getStyle = elementApi.getStyle, 11881 setStyle = elementApi.setStyle, 11882 getProperty = elementApi.getProperty; 11883 var _actionItem$config2 = actionItem.config, 11884 widthUnit = _actionItem$config2.widthUnit, 11885 heightUnit = _actionItem$config2.heightUnit; 11886 var _actionItem$config3 = actionItem.config, 11887 widthValue = _actionItem$config3.widthValue, 11888 heightValue = _actionItem$config3.heightValue; 11889 11890 if (!_IX2BrowserSupport.IS_BROWSER_ENV) { 11891 return { 11892 widthValue: widthValue, 11893 heightValue: heightValue 11894 }; 11895 } 11896 11897 if (widthUnit === _IX2EngineConstants.AUTO) { 11898 var temp = getStyle(element, _IX2EngineConstants.WIDTH); 11899 setStyle(element, _IX2EngineConstants.WIDTH, ''); 11900 widthValue = getProperty(element, 'offsetWidth'); 11901 setStyle(element, _IX2EngineConstants.WIDTH, temp); 11902 } 11903 11904 if (heightUnit === _IX2EngineConstants.AUTO) { 11905 var _temp = getStyle(element, _IX2EngineConstants.HEIGHT); 11906 11907 setStyle(element, _IX2EngineConstants.HEIGHT, ''); 11908 heightValue = getProperty(element, 'offsetHeight'); 11909 setStyle(element, _IX2EngineConstants.HEIGHT, _temp); 11910 } 11911 11912 return { 11913 widthValue: widthValue, 11914 heightValue: heightValue 11915 }; 11916 } 11917 11918 case _IX2EngineItemTypes.STYLE_BACKGROUND_COLOR: 11919 case _IX2EngineItemTypes.STYLE_BORDER: 11920 case _IX2EngineItemTypes.STYLE_TEXT_COLOR: 11921 { 11922 var _actionItem$config4 = actionItem.config, 11923 rValue = _actionItem$config4.rValue, 11924 gValue = _actionItem$config4.gValue, 11925 bValue = _actionItem$config4.bValue, 11926 aValue = _actionItem$config4.aValue; 11927 return { 11928 rValue: rValue, 11929 gValue: gValue, 11930 bValue: bValue, 11931 aValue: aValue 11932 }; 11933 } 11934 11935 case _IX2EngineItemTypes.STYLE_FILTER: 11936 { 11937 return actionItem.config.filters.reduce(reduceFilters, {}); 11938 } 11939 11940 default: 11941 { 11942 var value = actionItem.config.value; 11943 return { 11944 value: value 11945 }; 11946 } 11947 } 11948} 11949 11950function getRenderType(actionTypeId) { 11951 if (/^TRANSFORM_/.test(actionTypeId)) { 11952 return _IX2EngineConstants.RENDER_TRANSFORM; 11953 } 11954 11955 if (/^STYLE_/.test(actionTypeId)) { 11956 return _IX2EngineConstants.RENDER_STYLE; 11957 } 11958 11959 if (/^GENERAL_/.test(actionTypeId)) { 11960 return _IX2EngineConstants.RENDER_GENERAL; 11961 } 11962 11963 if (/^PLUGIN_/.test(actionTypeId)) { 11964 return _IX2EngineConstants.RENDER_PLUGIN; 11965 } 11966} 11967 11968function getStyleProp(renderType, actionTypeId) { 11969 return renderType === _IX2EngineConstants.RENDER_STYLE ? actionTypeId.replace('STYLE_', '').toLowerCase() : null; 11970} 11971 11972function renderHTMLElement(element, refState, actionState, eventId, actionItem, styleProp, elementApi, renderType, pluginInstance) { 11973 switch (renderType) { 11974 case _IX2EngineConstants.RENDER_TRANSFORM: 11975 { 11976 return renderTransform(element, refState, actionState, actionItem, elementApi); 11977 } 11978 11979 case _IX2EngineConstants.RENDER_STYLE: 11980 { 11981 return renderStyle(element, refState, actionState, actionItem, styleProp, elementApi); 11982 } 11983 11984 case _IX2EngineConstants.RENDER_GENERAL: 11985 { 11986 return renderGeneral(element, actionItem, elementApi); 11987 } 11988 11989 case _IX2EngineConstants.RENDER_PLUGIN: 11990 { 11991 var actionTypeId = actionItem.actionTypeId; 11992 11993 if ((0, _IX2VanillaPlugins.isPluginType)(actionTypeId)) { 11994 return (0, _IX2VanillaPlugins.renderPlugin)(actionTypeId)(pluginInstance, refState, actionItem); 11995 } 11996 } 11997 } 11998} 11999 12000var transformDefaults = (_transformDefaults = {}, (0, _defineProperty2["default"])(_transformDefaults, _IX2EngineItemTypes.TRANSFORM_MOVE, Object.freeze({ 12001 xValue: 0, 12002 yValue: 0, 12003 zValue: 0 12004})), (0, _defineProperty2["default"])(_transformDefaults, _IX2EngineItemTypes.TRANSFORM_SCALE, Object.freeze({ 12005 xValue: 1, 12006 yValue: 1, 12007 zValue: 1 12008})), (0, _defineProperty2["default"])(_transformDefaults, _IX2EngineItemTypes.TRANSFORM_ROTATE, Object.freeze({ 12009 xValue: 0, 12010 yValue: 0, 12011 zValue: 0 12012})), (0, _defineProperty2["default"])(_transformDefaults, _IX2EngineItemTypes.TRANSFORM_SKEW, Object.freeze({ 12013 xValue: 0, 12014 yValue: 0 12015})), _transformDefaults); 12016var filterDefaults = Object.freeze({ 12017 blur: 0, 12018 'hue-rotate': 0, 12019 invert: 0, 12020 grayscale: 0, 12021 saturate: 100, 12022 sepia: 0, 12023 contrast: 100, 12024 brightness: 100 12025}); 12026 12027var getFilterUnit = function getFilterUnit(filterType, actionItemConfig) { 12028 var filter = (0, _findLast["default"])(actionItemConfig.filters, function (_ref7) { 12029 var type = _ref7.type; 12030 return type === filterType; 12031 }); 12032 12033 if (filter && filter.unit) { 12034 return filter.unit; 12035 } 12036 12037 switch (filterType) { 12038 case 'blur': 12039 return 'px'; 12040 12041 case 'hue-rotate': 12042 return 'deg'; 12043 12044 default: 12045 return '%'; 12046 } 12047}; 12048 12049var transformKeys = Object.keys(transformDefaults); 12050 12051function renderTransform(element, refState, actionState, actionItem, elementApi) { 12052 var newTransform = transformKeys.map(function (actionTypeId) { 12053 var defaults = transformDefaults[actionTypeId]; 12054 12055 var _ref8 = refState[actionTypeId] || {}, 12056 _ref8$xValue = _ref8.xValue, 12057 xValue = _ref8$xValue === void 0 ? defaults.xValue : _ref8$xValue, 12058 _ref8$yValue = _ref8.yValue, 12059 yValue = _ref8$yValue === void 0 ? defaults.yValue : _ref8$yValue, 12060 _ref8$zValue = _ref8.zValue, 12061 zValue = _ref8$zValue === void 0 ? defaults.zValue : _ref8$zValue, 12062 _ref8$xUnit = _ref8.xUnit, 12063 xUnit = _ref8$xUnit === void 0 ? '' : _ref8$xUnit, 12064 _ref8$yUnit = _ref8.yUnit, 12065 yUnit = _ref8$yUnit === void 0 ? '' : _ref8$yUnit, 12066 _ref8$zUnit = _ref8.zUnit, 12067 zUnit = _ref8$zUnit === void 0 ? '' : _ref8$zUnit; 12068 12069 switch (actionTypeId) { 12070 case _IX2EngineItemTypes.TRANSFORM_MOVE: 12071 return "".concat(_IX2EngineConstants.TRANSLATE_3D, "(").concat(xValue).concat(xUnit, ", ").concat(yValue).concat(yUnit, ", ").concat(zValue).concat(zUnit, ")"); 12072 12073 case _IX2EngineItemTypes.TRANSFORM_SCALE: 12074 return "".concat(_IX2EngineConstants.SCALE_3D, "(").concat(xValue).concat(xUnit, ", ").concat(yValue).concat(yUnit, ", ").concat(zValue).concat(zUnit, ")"); 12075 12076 case _IX2EngineItemTypes.TRANSFORM_ROTATE: 12077 return "".concat(_IX2EngineConstants.ROTATE_X, "(").concat(xValue).concat(xUnit, ") ").concat(_IX2EngineConstants.ROTATE_Y, "(").concat(yValue).concat(yUnit, ") ").concat(_IX2EngineConstants.ROTATE_Z, "(").concat(zValue).concat(zUnit, ")"); 12078 12079 case _IX2EngineItemTypes.TRANSFORM_SKEW: 12080 return "".concat(_IX2EngineConstants.SKEW, "(").concat(xValue).concat(xUnit, ", ").concat(yValue).concat(yUnit, ")"); 12081 12082 default: 12083 return ''; 12084 } 12085 }).join(' '); 12086 var setStyle = elementApi.setStyle; 12087 addWillChange(element, _IX2BrowserSupport.TRANSFORM_PREFIXED, elementApi); 12088 setStyle(element, _IX2BrowserSupport.TRANSFORM_PREFIXED, newTransform); // Set transform-style: preserve-3d 12089 12090 if (hasDefined3dTransform(actionItem, actionState)) { 12091 setStyle(element, _IX2BrowserSupport.TRANSFORM_STYLE_PREFIXED, _IX2EngineConstants.PRESERVE_3D); 12092 } 12093} 12094 12095function renderFilter(element, actionState, actionItemConfig, elementApi) { 12096 var filterValue = (0, _reduce["default"])(actionState, function (result, value, type) { 12097 return "".concat(result, " ").concat(type, "(").concat(value).concat(getFilterUnit(type, actionItemConfig), ")"); 12098 }, ''); 12099 var setStyle = elementApi.setStyle; 12100 addWillChange(element, _IX2EngineConstants.FILTER, elementApi); 12101 setStyle(element, _IX2EngineConstants.FILTER, filterValue); 12102} 12103 12104function hasDefined3dTransform(_ref9, _ref10) { 12105 var actionTypeId = _ref9.actionTypeId; 12106 var xValue = _ref10.xValue, 12107 yValue = _ref10.yValue, 12108 zValue = _ref10.zValue; 12109 // TRANSLATE_Z 12110 return actionTypeId === _IX2EngineItemTypes.TRANSFORM_MOVE && zValue !== undefined || // SCALE_Z 12111 actionTypeId === _IX2EngineItemTypes.TRANSFORM_SCALE && zValue !== undefined || // ROTATE_X or ROTATE_Y 12112 actionTypeId === _IX2EngineItemTypes.TRANSFORM_ROTATE && (xValue !== undefined || yValue !== undefined); 12113} 12114 12115var paramCapture = '\\(([^)]+)\\)'; 12116var rgbValidRegex = /^rgb/; 12117var rgbMatchRegex = RegExp("rgba?".concat(paramCapture)); 12118 12119function getFirstMatch(regex, value) { 12120 var match = regex.exec(value); 12121 return match ? match[1] : ''; 12122} 12123 12124function parseColor(_ref11) { 12125 var element = _ref11.element, 12126 actionTypeId = _ref11.actionTypeId, 12127 computedStyle = _ref11.computedStyle, 12128 getStyle = _ref11.getStyle; 12129 var prop = colorStyleProps[actionTypeId]; 12130 var inlineValue = getStyle(element, prop); 12131 var value = rgbValidRegex.test(inlineValue) ? inlineValue : computedStyle[prop]; 12132 var matches = getFirstMatch(rgbMatchRegex, value).split(_IX2EngineConstants.COMMA_DELIMITER); 12133 return { 12134 rValue: (0, _defaultTo["default"])(parseInt(matches[0], 10), 255), 12135 gValue: (0, _defaultTo["default"])(parseInt(matches[1], 10), 255), 12136 bValue: (0, _defaultTo["default"])(parseInt(matches[2], 10), 255), 12137 aValue: (0, _defaultTo["default"])(parseFloat(matches[3]), 1) 12138 }; 12139} 12140
12141function renderStyle(element, refState, actionState, actionItem, styleProp, elementApi) { 12142 var setStyle = elementApi.setStyle; 12143 var actionTypeId = actionItem.actionTypeId, 12144 config = actionItem.config; 12145 12146 switch (actionTypeId) { 12147 case _IX2EngineItemTypes.STYLE_SIZE: 12148 { 12149 var _actionItem$config5 = actionItem.config, 12150 _actionItem$config5$w = _actionItem$config5.widthUnit, 12151 widthUnit = _actionItem$config5$w === void 0 ? '' : _actionItem$config5$w, 12152 _actionItem$config5$h = _actionItem$config5.heightUnit, 12153 heightUnit = _actionItem$config5$h === void 0 ? '' : _actionItem$config5$h; 12154 var widthValue = actionState.widthValue, 12155 heightValue = actionState.heightValue; 12156 12157 if (widthValue !== undefined) { 12158 if (widthUnit === _IX2EngineConstants.AUTO) { 12159 widthUnit = 'px'; 12160 } 12161 12162 addWillChange(element, _IX2EngineConstants.WIDTH, elementApi); 12163 setStyle(element, _IX2EngineConstants.WIDTH, widthValue + widthUnit); 12164 } 12165 12166 if (heightValue !== undefined) { 12167 if (heightUnit === _IX2EngineConstants.AUTO) { 12168 heightUnit = 'px'; 12169 } 12170 12171 addWillChange(element, _IX2EngineConstants.HEIGHT, elementApi); 12172 setStyle(element, _IX2EngineConstants.HEIGHT, heightValue + heightUnit); 12173 } 12174 12175 break; 12176 } 12177 12178 case _IX2EngineItemTypes.STYLE_FILTER: 12179 { 12180 renderFilter(element, actionState, config, elementApi); 12181 break; 12182 } 12183 12184 case _IX2EngineItemTypes.STYLE_BACKGROUND_COLOR: 12185 case _IX2EngineItemTypes.STYLE_BORDER: 12186 case _IX2EngineItemTypes.STYLE_TEXT_COLOR: 12187 { 12188 var prop = colorStyleProps[actionTypeId]; 12189 var rValue = Math.round(actionState.rValue); 12190 var gValue = Math.round(actionState.gValue); 12191 var bValue = Math.round(actionState.bValue); 12192 var aValue = actionState.aValue; 12193 addWillChange(element, prop, elementApi); 12194 setStyle(element, prop, aValue >= 1 ? "rgb(".concat(rValue, ",").concat(gValue, ",").concat(bValue, ")") : "rgba(".concat(rValue, ",").concat(gValue, ",").concat(bValue, ",").concat(aValue, ")")); 12195 break; 12196 } 12197 12198 default: 12199 { 12200 var _config$unit = config.unit, 12201 unit = _config$unit === void 0 ? '' : _config$unit; 12202 addWillChange(element, styleProp, elementApi); 12203 setStyle(element, styleProp, actionState.value + unit); 12204 break; 12205 } 12206 } 12207} 12208 12209function renderGeneral(element, actionItem, elementApi) { 12210 var setStyle = elementApi.setStyle; 12211 12212 switch (actionItem.actionTypeId) { 12213 case _IX2EngineItemTypes.GENERAL_DISPLAY: 12214 { 12215 var value = actionItem.config.value; 12216 12217 if (value === _IX2EngineConstants.FLEX && _IX2BrowserSupport.IS_BROWSER_ENV) { 12218 setStyle(element, _IX2EngineConstants.DISPLAY, _IX2BrowserSupport.FLEX_PREFIXED); 12219 } else { 12220 setStyle(element, _IX2EngineConstants.DISPLAY, value); 12221 } 12222 12223 return; 12224 } 12225 } 12226} 12227 12228function addWillChange(element, prop, elementApi) { 12229 if (!_IX2BrowserSupport.IS_BROWSER_ENV) { 12230 return; 12231 } 12232 12233 var validProp = willChangeProps[prop]; 12234 12235 if (!validProp) { 12236 return; 12237 } 12238
12239 var getStyle = elementApi.getStyle, 12240 setStyle = elementApi.setStyle; 12241 var value = getStyle(element, _IX2EngineConstants.WILL_CHANGE); 12242 12243 if (!value) { 12244 setStyle(element, _IX2EngineConstants.WILL_CHANGE, validProp); 12245 return; 12246 } 12247 12248 var values = value.split(_IX2EngineConstants.COMMA_DELIMITER).map(trim); 12249 12250 if (values.indexOf(validProp) === -1) { 12251 setStyle(element, _IX2EngineConstants.WILL_CHANGE, values.concat(validProp).join(_IX2EngineConstants.COMMA_DELIMITER)); 12252 } 12253} 12254 12255function removeWillChange(element, prop, elementApi) { 12256 if (!_IX2BrowserSupport.IS_BROWSER_ENV) { 12257 return; 12258 } 12259 12260 var validProp = willChangeProps[prop]; 12261 12262 if (!validProp) { 12263 return; 12264 } 12265 12266 var getStyle = elementApi.getStyle, 12267 setStyle = elementApi.setStyle; 12268 var value = getStyle(element, _IX2EngineConstants.WILL_CHANGE); 12269 12270 if (!value || value.indexOf(validProp) === -1) { 12271 return; 12272 } 12273 12274 setStyle(element, _IX2EngineConstants.WILL_CHANGE, value.split(_IX2EngineConstants.COMMA_DELIMITER).map(trim).filter(function (v) { 12275 return v !== validProp; 12276 }).join(_IX2EngineConstants.COMMA_DELIMITER)); 12277} 12278 12279function clearAllStyles(_ref12) { 12280 var store = _ref12.store, 12281 elementApi = _ref12.elementApi; 12282 12283 var _store$getState = store.getState(), 12284 ixData = _store$getState.ixData; 12285 12286 var _ixData$events = ixData.events, 12287 events = _ixData$events === void 0 ? {} : _ixData$events, 12288 _ixData$actionLists = ixData.actionLists, 12289 actionLists = _ixData$actionLists === void 0 ? {} : _ixData$actionLists; 12290 Object.keys(events).forEach(function (eventId) { 12291 var event = events[eventId]; 12292 var config = event.action.config; 12293 var actionListId = config.actionListId; 12294 var actionList = actionLists[actionListId]; 12295 12296 if (actionList) { 12297 clearActionListStyles({ 12298 actionList: actionList, 12299 event: event, 12300 elementApi: elementApi 12301 }); 12302 } 12303 }); 12304 Object.keys(actionLists).forEach(function (actionListId) { 12305 clearActionListStyles({ 12306 actionList: actionLists[actionListId], 12307 elementApi: elementApi 12308 }); 12309 }); 12310} 12311 12312function clearActionListStyles(_ref13) { 12313 var _ref13$actionList = _ref13.actionList, 12314 actionList = _ref13$actionList === void 0 ? {} : _ref13$actionList, 12315 event = _ref13.event, 12316 elementApi = _ref13.elementApi; 12317 var actionItemGroups = actionList.actionItemGroups, 12318 continuousParameterGroups = actionList.continuousParameterGroups; 12319 actionItemGroups && actionItemGroups.forEach(function (actionGroup) { 12320 clearActionGroupStyles({ 12321 actionGroup: actionGroup, 12322 event: event, 12323 elementApi: elementApi 12324 }); 12325 }); 12326 continuousParameterGroups && continuousParameterGroups.forEach(function (paramGroup) { 12327 var continuousActionGroups = paramGroup.continuousActionGroups; 12328 continuousActionGroups.forEach(function (actionGroup) { 12329 clearActionGroupStyles({ 12330 actionGroup: actionGroup, 12331 event: event, 12332 elementApi: elementApi 12333 }); 12334 }); 12335 }); 12336} 12337 12338function clearActionGroupStyles(_ref14) { 12339 var actionGroup = _ref14.actionGroup, 12340 event = _ref14.event, 12341 elementApi = _ref14.elementApi; 12342 var actionItems = actionGroup.actionItems; 12343 actionItems.forEach(function (_ref15) { 12344 var actionTypeId = _ref15.actionTypeId, 12345 config = _ref15.config; 12346 var clearElement; 12347 12348 if ((0, _IX2VanillaPlugins.isPluginType)(actionTypeId)) { 12349 clearElement = (0, _IX2VanillaPlugins.clearPlugin)(actionTypeId); 12350 } else { 12351 clearElement = processElementByType({ 12352 effect: clearStyleProp, 12353 actionTypeId: actionTypeId, 12354 elementApi: elementApi 12355 }); 12356 } 12357 12358 getAffectedElements({ 12359 config: config, 12360 event: event, 12361 elementApi: elementApi 12362 }
12362).forEach(clearElement); 12363 }); 12364} 12365 12366function cleanupHTMLElement(element, actionItem, elementApi) { 12367 var setStyle = elementApi.setStyle, 12368 getStyle = elementApi.getStyle; 12369 var actionTypeId = actionItem.actionTypeId; 12370 12371 if (actionTypeId === _IX2EngineItemTypes.STYLE_SIZE) { 12372 var config = actionItem.config; 12373 12374 if (config.widthUnit === _IX2EngineConstants.AUTO) { 12375 setStyle(element, _IX2EngineConstants.WIDTH, ''); 12376 } 12377 12378 if (config.heightUnit === _IX2EngineConstants.AUTO) { 12379 setStyle(element, _IX2EngineConstants.HEIGHT, ''); 12380 } 12381 } 12382 12383 if (getStyle(element, _IX2EngineConstants.WILL_CHANGE)) { 12384 processElementByType({ 12385 effect: removeWillChange, 12386 actionTypeId: actionTypeId, 12387 elementApi: elementApi 12388 })(element); 12389 } 12390} 12391 12392var processElementByType = function processElementByType(_ref16) { 12393 var effect = _ref16.effect, 12394 actionTypeId = _ref16.actionTypeId, 12395 elementApi = _ref16.elementApi; 12396 return function (element) { 12397 switch (actionTypeId) { 12398 case _IX2EngineItemTypes.TRANSFORM_MOVE: 12399 case _IX2EngineItemTypes.TRANSFORM_SCALE: 12400 case _IX2EngineItemTypes.TRANSFORM_ROTATE: 12401 case _IX2EngineItemTypes.TRANSFORM_SKEW: 12402 effect(element, _IX2BrowserSupport.TRANSFORM_PREFIXED, elementApi); 12403 break; 12404 12405 case _IX2EngineItemTypes.STYLE_FILTER: 12406 effect(element, _IX2EngineConstants.FILTER, elementApi); 12407 break; 12408 12409 case _IX2EngineItemTypes.STYLE_OPACITY: 12410 effect(element, _IX2EngineConstants.OPACITY, elementApi); 12411 break; 12412 12413 case _IX2EngineItemTypes.STYLE_SIZE: 12414 effect(element, _IX2EngineConstants.WIDTH, elementApi); 12415 effect(element, _IX2EngineConstants.HEIGHT, elementApi); 12416 break; 12417 12418 case _IX2EngineItemTypes.STYLE_BACKGROUND_COLOR: 12419 case _IX2EngineItemTypes.STYLE_BORDER: 12420 case _IX2EngineItemTypes.STYLE_TEXT_COLOR: 12421 effect(element, colorStyleProps[actionTypeId], elementApi); 12422 break; 12423 12424 case _IX2EngineItemTypes.GENERAL_DISPLAY: 12425 effect(element, _IX2EngineConstants.DISPLAY, elementApi); 12426 break; 12427 } 12428 }; 12429}; 12430 12431function clearStyleProp(element, prop, elementApi) { 12432 var setStyle = elementApi.setStyle; 12433 removeWillChange(element, prop, elementApi); 12434 setStyle(element, prop, ''); // Clear transform-style: preserve-3d 12435 12436 if (prop === _IX2BrowserSupport.TRANSFORM_PREFIXED) { 12437 setStyle(element, _IX2BrowserSupport.TRANSFORM_STYLE_PREFIXED, ''); 12438 } 12439} 12440 12441function getMaxDurationItemIndex(actionItems) { 12442 var maxDuration = 0; 12443 var resultIndex = 0; 12444 actionItems.forEach(function (actionItem, index) { 12445 var config = actionItem.config; 12446 var total = config.delay + config.duration; 12447 12448 if (total >= maxDuration) { 12449 maxDuration = total; 12450 resultIndex = index; 12451 } 12452 }); 12453 return resultIndex; 12454} 12455 12456function getActionListProgress(actionList, instance) { 12457 var actionItemGroups = actionList.actionItemGroups, 12458 useFirstGroupAsInitialState = actionList.useFirstGroupAsInitialState; 12459 var instanceItem = instance.actionItem, 12460 _instance$verboseTime = instance.verboseTimeElapsed, 12461 verboseTimeElapsed = _instance$verboseTime === void 0 ? 0 : _instance$verboseTime; 12462 var totalDuration = 0; 12463 var elapsedDuration = 0; 12464 actionItemGroups.forEach(function (group, index) { 12465 if (useFirstGroupAsInitialState && index === 0) { 12466 return; 12467 } 12468 12469 var actionItems = group.actionItems; 12470 var carrierItem = actionItems[getMaxDurationItemIndex(actionItems)]; 12471 var config = carrierItem.config, 12472 actionTypeId = carrierItem.actionTypeId; 12473 12474 if (instanceItem.id === carrierItem.id) { 12475 elapsedDuration = totalDuration + verboseTimeElapsed; 12476 } 12477 12478 var duration = getRenderType(actionTypeId) === _IX2EngineConstants.RENDER_GENERAL ? 0 : config.duration; 12479 totalDuration += config.delay + duration; 12480 }); 12481 return totalDuration > 0 ? (0, _IX2EasingUtils.optimizeFloat)(elapsedDuration / totalDuration) : 0; 12482} 12483 12484function reduceListToGroup(_ref17) { 12485 var actionListId = _ref17.actionListId, 12486 actionItemId = _ref17.actionItemId, 12487 rawData = _ref17.rawData; 12488 var actionLists = rawData.actionLists; 12489 var actionList = actionLists[actionListId]; 12490 var actionItemGroups = actionList.actionItemGroups, 12491 continuousParameterGroups = actionList.continuousParameterGroups; 12492 var newActionItems = []; 12493 12494 var takeItemUntilMatch = function takeItemUntilMatch(actionItem) { 12495 newActionItems.push((0, _timm.mergeIn)(actionItem, ['config'], { 12496 delay: 0, 12497 duration: 0 12498 })); 12499 return actionItem.id === actionItemId; 12500 }; 12501 12502 actionItemGroups && actionItemGroups.some(function (_ref18) { 12503 var actionItems = _ref18.actionItems; 12504 return actionItems.some(takeItemUntilMatch); 12505 }); 12506 continuousParameterGroups && continuousParameterGroups.some(function (paramGroup) { 12507 var continuousActionGroups = paramGroup.continuousActionGroups; 12508 return continuousActionGroups.some(function (_ref19) { 12509 var actionItems = _ref19.actionItems; 12510 return actionItems.some(takeItemUntilMatch); 12511 }); 12512 }); 12513 return (0, _timm.setIn)(rawData, ['actionLists'], (0, _defineProperty2["default"])({}, actionListId, { 12514 id: actionListId, 12515 actionItemGroups: [{ 12516 actionItems: newActionItems 12517 }] 12518 })); 12519} 12520 12521function shouldNamespaceEventParameter(eventTypeId, _ref21) { 12522 var basedOn = _ref21.basedOn; 12523 return eventTypeId === _IX2EngineEventTypes.SCROLLING_IN_VIEW && (basedOn === _IX2EngineEventTypes.ELEMENT || basedOn == null) || eventTypeId === _IX2EngineEventTypes.MOUSE_MOVE && basedOn === _IX2EngineEventTypes.ELEMENT; 12524} 12525 12526function getNamespacedParameterId(eventStateKey, continuousParameterGroupId) { 12527 return eventStateKey + _IX2EngineConstants.COLON_DELIMITER + continuousParameterGroupId; 12528} 12529 12530function shouldAllowMediaQuery(mediaQueries, mediaQueryKey) { 12531 // During design mode, current media query key does not exist 12532 if (mediaQueryKey == null) { 12533 return true; 12534 } 12535 12536 return mediaQueries.indexOf(mediaQueryKey) !== -1; 12537} 12538 12539function mediaQueriesEqual(listA, listB) { 12540 return (0, _shallowEqual["default"])(listA && listA.sort(), listB && listB.sort()); 12541} 12542 12543function stringifyTarget(target) { 12544 if (typeof target === 'string') { 12545 return target; 12546 } 12547 12548 var _target$id = target.id, 12549 id = _target$id === void 0 ? '' : _target$id, 12550 _target$selector = target.selector, 12551 selector = _target$selector === void 0 ? '' : _target$selector, 12552 _target$useEventTarge = target.useEventTarget, 12553 useEventTarget = _target$useEventTarge === void 0 ? '' : _target$useEventTarge; 12554 return id + _IX2EngineConstants.BAR_DELIMITER + selector + _IX2EngineConstants.BAR_DELIMITER + useEventTarget; 12555} 12556 12557/***/ }), 12558/* 188 */
vendor: 5,733 bytes, lines 12559-12769
12559/***/ (function(module, exports) { 12560 12561/** 12562 * Checks `value` to determine whether a default value should be returned in 12563 * its place. The `defaultValue` is returned if `value` is `NaN`, `null`, 12564 * or `undefined`. 12565 * 12566 * @static 12567 * @memberOf _ 12568 * @since 4.14.0 12569 * @category Util 12570 * @param {*} value The value to check. 12571 * @param {*} defaultValue The default value. 12572 * @returns {*} Returns the resolved value. 12573 * @example 12574 * 12575 * _.defaultTo(1, 10); 12576 * // => 1 12577 * 12578 * _.defaultTo(undefined, 10); 12579 * // => 10 12580 */ 12581function defaultTo(value, defaultValue) { 12582 return (value == null || value !== value) ? defaultValue : value; 12583} 12584 12585module.exports = defaultTo; 12586 12587 12588/***/ }), 12589/* 189 */ 12590/***/ (function(module, exports, __webpack_require__) { 12591 12592var arrayReduce = __webpack_require__(190), 12593 baseEach = __webpack_require__(90), 12594 baseIteratee = __webpack_require__(6), 12595 baseReduce = __webpack_require__(194), 12596 isArray = __webpack_require__(1); 12597 12598/** 12599 * Reduces `collection` to a value which is the accumulated result of running 12600 * each element in `collection` thru `iteratee`, where each successive 12601 * invocation is supplied the return value of the previous. If `accumulator` 12602 * is not given, the first element of `collection` is used as the initial 12603 * value. The iteratee is invoked with four arguments: 12604 * (accumulator, value, index|key, collection). 12605 * 12606 * Many lodash methods are guarded to work as iteratees for methods like 12607 * `_.reduce`, `_.reduceRight`, and `_.transform`. 12608 * 12609 * The guarded methods are: 12610 * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`, 12611 * and `sortBy` 12612 * 12613 * @static 12614 * @memberOf _ 12615 * @since 0.1.0 12616 * @category Collection 12617 * @param {Array|Object} collection The collection to iterate over. 12618 * @param {Function} [iteratee=_.identity] The function invoked per iteration. 12619 * @param {*} [accumulator] The initial value. 12620 * @returns {*} Returns the accumulated value. 12621 * @see _.reduceRight 12622 * @example 12623 * 12624 * _.reduce([1, 2], function(sum, n) { 12625 * return sum + n; 12626 * }, 0); 12627 * // => 3 12628 * 12629 * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { 12630 * (result[value] || (result[value] = [])).push(key); 12631 * return result; 12632 * }, {}); 12633 * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed) 12634 */ 12635function reduce(collection, iteratee, accumulator) { 12636 var func = isArray(collection) ? arrayReduce : baseReduce, 12637 initAccum = arguments.length < 3; 12638 12639 return func(collection, baseIteratee(iteratee, 4), accumulator, initAccum, baseEach); 12640} 12641 12642module.exports = reduce; 12643 12644 12645/***/ }), 12646/* 190 */ 12647/***/ (function(module, exports) { 12648 12649/** 12650 * A specialized version of `_.reduce` for arrays without support for 12651 * iteratee shorthands. 12652 * 12653 * @private 12654 * @param {Array} [array] The array to iterate over. 12655 * @param {Function} iteratee The function invoked per iteration. 12656 * @param {*} [accumulator] The initial value. 12657 * @param {boolean} [initAccum] Specify using the first element of `array` as 12658 * the initial value. 12659 * @returns {*} Returns the accumulated value. 12660 */ 12661function arrayReduce(array, iteratee, accumulator, initAccum) { 12662 var index = -1, 12663 length = array == null ? 0 : array.length; 12664 12665 if (initAccum && length) { 12666 accumulator = array[++index]; 12667 } 12668 while (++index < length) { 12669 accumulator = iteratee(accumulator, array[index], index, array); 12670 } 12671 return accumulator; 12672} 12673 12674module.exports = arrayReduce; 12675 12676 12677/***/ }), 12678/* 191 */ 12679/***/ (function(module, exports, __webpack_require__) { 12680 12681var createBaseFor = __webpack_require__(192); 12682 12683/** 12684 * The base implementation of `baseForOwn` which iterates over `object` 12685 * properties returned by `keysFunc` and invokes `iteratee` for each property. 12686 * Iteratee functions may exit iteration early by explicitly returning `false`. 12687 * 12688 * @private 12689 * @param {Object} object The object to iterate over. 12690 * @param {Function} iteratee The function invoked per iteration. 12691 * @param {Function} keysFunc The function to get the keys of `object`. 12692 * @returns {Object} Returns `object`. 12693 */ 12694var baseFor = createBaseFor(); 12695 12696module.exports = baseFor; 12697 12698 12699/***/ }), 12700/* 192 */ 12701/***/ (function(module, exports) { 12702 12703/** 12704 * Creates a base function for methods like `_.forIn` and `_.forOwn`. 12705 * 12706 * @private 12707 * @param {boolean} [fromRight] Specify iterating from right to left. 12708 * @returns {Function} Returns the new base function. 12709 */ 12710function createBaseFor(fromRight) { 12711 return function(object, iteratee, keysFunc) { 12712 var index = -1, 12713 iterable = Object(object), 12714 props = keysFunc(object), 12715 length = props.length; 12716 12717 while (length--) { 12718 var key = props[fromRight ? length : ++index]; 12719 if (iteratee(iterable[key], key, iterable) === false) { 12720 break; 12721 } 12722 } 12723 return object; 12724 }; 12725} 12726 12727module.exports = createBaseFor; 12728 12729 12730/***/ }), 12731/* 193 */ 12732/***/ (function(module, exports, __webpack_require__) { 12733 12734var isArrayLike = __webpack_require__(10); 12735 12736/** 12737 * Creates a `baseEach` or `baseEachRight` function. 12738 * 12739 * @private 12740 * @param {Function} eachFunc The function to iterate over a collection. 12741 * @param {boolean} [fromRight] Specify iterating from right to left. 12742 * @returns {Function} Returns the new base function. 12743 */ 12744function createBaseEach(eachFunc, fromRight) { 12745 return function(collection, iteratee) { 12746 if (collection == null) { 12747 return collection; 12748 } 12749 if (!isArrayLike(collection)) { 12750 return eachFunc(collection, iteratee); 12751 } 12752 var length = collection.length, 12753 index = fromRight ? length : -1, 12754 iterable = Object(collection); 12755 12756 while ((fromRight ? index-- : ++index < length)) { 12757 if (iteratee(iterable[index], index, iterable) === false) { 12758 break; 12759 } 12760 } 12761 return collection; 12762 }; 12763} 12764 12765module.exports = createBaseEach; 12766 12767 12768/***/ }), 12769/* 194 */
vendor: 4,473 bytes, lines 12770-12931
12770/***/ (function(module, exports) { 12771 12772/** 12773 * The base implementation of `_.reduce` and `_.reduceRight`, without support 12774 * for iteratee shorthands, which iterates over `collection` using `eachFunc`. 12775 * 12776 * @private 12777 * @param {Array|Object} collection The collection to iterate over. 12778 * @param {Function} iteratee The function invoked per iteration. 12779 * @param {*} accumulator The initial value. 12780 * @param {boolean} initAccum Specify using the first or last element of 12781 * `collection` as the initial value. 12782 * @param {Function} eachFunc The function to iterate over `collection`. 12783 * @returns {*} Returns the accumulated value. 12784 */ 12785function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) { 12786 eachFunc(collection, function(value, index, collection) { 12787 accumulator = initAccum 12788 ? (initAccum = false, value) 12789 : iteratee(accumulator, value, index, collection); 12790 }); 12791 return accumulator; 12792} 12793 12794module.exports = baseReduce; 12795 12796 12797/***/ }), 12798/* 195 */ 12799/***/ (function(module, exports, __webpack_require__) { 12800 12801var createFind = __webpack_require__(64), 12802 findLastIndex = __webpack_require__(196); 12803 12804/** 12805 * This method is like `_.find` except that it iterates over elements of 12806 * `collection` from right to left. 12807 * 12808 * @static 12809 * @memberOf _ 12810 * @since 2.0.0 12811 * @category Collection 12812 * @param {Array|Object} collection The collection to inspect. 12813 * @param {Function} [predicate=_.identity] The function invoked per iteration. 12814 * @param {number} [fromIndex=collection.length-1] The index to search from. 12815 * @returns {*} Returns the matched element, else `undefined`. 12816 * @example 12817 * 12818 * _.findLast([1, 2, 3, 4], function(n) { 12819 * return n % 2 == 1; 12820 * }); 12821 * // => 3 12822 */ 12823var findLast = createFind(findLastIndex); 12824 12825module.exports = findLast; 12826 12827 12828/***/ }), 12829/* 196 */ 12830/***/ (function(module, exports, __webpack_require__) { 12831 12832var baseFindIndex = __webpack_require__(84), 12833 baseIteratee = __webpack_require__(6), 12834 toInteger = __webpack_require__(47); 12835 12836/* Built-in method references for those with the same name as other `lodash` methods. */ 12837var nativeMax = Math.max, 12838 nativeMin = Math.min; 12839 12840/** 12841 * This method is like `_.findIndex` except that it iterates over elements 12842 * of `collection` from right to left. 12843 * 12844 * @static 12845 * @memberOf _ 12846 * @since 2.0.0 12847 * @category Array 12848 * @param {Array} array The array to inspect. 12849 * @param {Function} [predicate=_.identity] The function invoked per iteration. 12850 * @param {number} [fromIndex=array.length-1] The index to search from. 12851 * @returns {number} Returns the index of the found element, else `-1`. 12852 * @example 12853 * 12854 * var users = [ 12855 * { 'user': 'barney', 'active': true }, 12856 * { 'user': 'fred', 'active': false }, 12857 * { 'user': 'pebbles', 'active': false } 12858 * ]; 12859 * 12860 * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; }); 12861 * // => 2 12862 * 12863 * // The `_.matches` iteratee shorthand. 12864 * _.findLastIndex(users, { 'user': 'barney', 'active': true }); 12865 * // => 0 12866 * 12867 * // The `_.matchesProperty` iteratee shorthand. 12868 * _.findLastIndex(users, ['active', false]); 12869 * // => 2 12870 * 12871 * // The `_.property` iteratee shorthand. 12872 * _.findLastIndex(users, 'active'); 12873 * // => 0 12874 */ 12875function findLastIndex(array, predicate, fromIndex) { 12876 var length = array == null ? 0 : array.length; 12877 if (!length) { 12878 return -1; 12879 } 12880 var index = length - 1; 12881 if (fromIndex !== undefined) { 12882 index = toInteger(fromIndex); 12883 index = fromIndex < 0 12884 ? nativeMax(length + index, 0) 12885 : nativeMin(index, length - 1); 12886 } 12887 return baseFindIndex(array, baseIteratee(predicate, 3), index, true); 12888} 12889 12890module.exports = findLastIndex; 12891 12892 12893/***/ }), 12894/* 197 */ 12895/***/ (function(module, exports, __webpack_require__) { 12896 12897"use strict"; 12898/** 12899 * Copyright (c) 2013-present, Facebook, Inc. 12900 * 12901 * This source code is licensed under the MIT license found in the 12902 * LICENSE file in the root directory of this source tree. 12903 * 12904 * @typechecks 12905 * 12906 */ 12907 12908/*eslint-disable no-self-compare */ 12909 12910 12911 12912var hasOwnProperty = Object.prototype.hasOwnProperty; 12913 12914/** 12915 * inlined Object.is polyfill to avoid requiring consumers ship their own 12916 * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is 12917 */ 12918function is(x, y) { 12919 // SameValue algorithm 12920 if (x === y) { 12921 // Steps 1-5, 7-10 12922 // Steps 6.b-6.e: +0 != -0 12923 // Added the nonzero y check to make Flow happy, but it is redundant 12924 return x !== 0 || y !== 0 || 1 / x === 1 / y; 12925 } else { 12926 // Step 6.a: NaN == NaN 12927 return x !== x && y !== y; 12928 } 12929} 12930 12931/**
12932 * Performs equality by iterating through keys on an object and returning false 12933 * when any key has values which are not strictly equal between the arguments. 12934 * Returns true when the values of all keys are strictly equal. 12935 */ 12936function shallowEqual(objA, objB) { 12937 if (is(objA, objB)) { 12938 return true; 12939 } 12940 12941 if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) { 12942 return false; 12943 } 12944 12945 var keysA = Object.keys(objA); 12946 var keysB = Object.keys(objB); 12947 12948 if (keysA.length !== keysB.length) { 12949 return false; 12950 } 12951 12952 // Test for A's keys different from B. 12953 for (var i = 0; i < keysA.length; i++) { 12954 if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) { 12955 return false; 12956 } 12957 } 12958 12959 return true; 12960} 12961 12962module.exports = shallowEqual; 12963 12964/***/ }), 12965/* 198 */ 12966/***/ (function(module, exports, __webpack_require__) { 12967 12968"use strict"; 12969 12970 12971var _interopRequireDefault2 = __webpack_require__(0); 12972 12973var _defineProperty2 = _interopRequireDefault2(__webpack_require__(14)); 12974 12975var _Object$create; 12976 12977var _interopRequireDefault = __webpack_require__(0); 12978 12979Object.defineProperty(exports, "__esModule", { 12980 value: true 12981}); 12982exports.ixRequest = void 0; 12983 12984var _objectSpread2 = _interopRequireDefault(__webpack_require__(26)); 12985 12986var _shared = __webpack_require__(3); 12987 12988var _timm = __webpack_require__(13); 12989 12990var _shared$IX2EngineActi = _shared.IX2EngineActionTypes, 12991 IX2_PREVIEW_REQUESTED = _shared$IX2EngineActi.IX2_PREVIEW_REQUESTED, 12992 IX2_PLAYBACK_REQUESTED = _shared$IX2EngineActi.IX2_PLAYBACK_REQUESTED, 12993 IX2_STOP_REQUESTED = _shared$IX2EngineActi.IX2_STOP_REQUESTED, 12994 IX2_CLEAR_REQUESTED = _shared$IX2EngineActi.IX2_CLEAR_REQUESTED; 12995var initialState = { 12996 preview: {}, 12997 playback: {}, 12998 stop: {}, 12999 clear: {} 13000}; 13001var stateKeys = Object.create(null, (_Object$create = {}, (0, _defineProperty2["default"])(_Object$create, IX2_PREVIEW_REQUESTED, { 13002 value: 'preview' 13003}), (0, _defineProperty2["default"])(_Object$create, IX2_PLAYBACK_REQUESTED, { 13004 value: 'playback' 13005}), (0, _defineProperty2["default"])(_Object$create, IX2_STOP_REQUESTED, { 13006 value: 'stop' 13007}), (0, _defineProperty2["default"])(_Object$create, IX2_CLEAR_REQUESTED, { 13008 value: 'clear' 13009}), _Object$create)); 13010 13011var ixRequest = function ixRequest() { 13012 var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState; 13013 var action = arguments.length > 1 ? arguments[1] : undefined; 13014 13015 if (action.type in stateKeys) { 13016 var key = [stateKeys[action.type]]; 13017 return (0, _timm.setIn)(state, [key], (0, _objectSpread2["default"])({}, action.payload)); 13018 } 13019 13020 return state; 13021}; 13022 13023exports.ixRequest = ixRequest; 13024 13025/***/ }), 13026/* 199 */ 13027/***/ (function(module, exports, __webpack_require__) { 13028 13029"use strict"; 13030 13031 13032Object.defineProperty(exports, "__esModule", { 13033 value: true 13034}); 13035exports.ixSession = void 0; 13036 13037var _shared = __webpack_require__(3); 13038 13039var _timm = __webpack_require__(13); 13040 13041var _shared$IX2EngineActi = _shared.IX2EngineActionTypes, 13042 IX2_SESSION_INITIALIZED = _shared$IX2EngineActi.IX2_SESSION_INITIALIZED, 13043 IX2_SESSION_STARTED = _shared$IX2EngineActi.IX2_SESSION_STARTED, 13044 IX2_TEST_FRAME_RENDERED = _shared$IX2EngineActi.IX2_TEST_FRAME_RENDERED, 13045 IX2_SESSION_STOPPED = _shared$IX2EngineActi.IX2_SESSION_STOPPED, 13046 IX2_EVENT_LISTENER_ADDED = _shared$IX2EngineActi.IX2_EVENT_LISTENER_ADDED, 13047 IX2_EVENT_STATE_CHANGED = _shared$IX2EngineActi.IX2_EVENT_STATE_CHANGED, 13048 IX2_ANIMATION_FRAME_CHANGED = _shared$IX2EngineActi.IX2_ANIMATION_FRAME_CHANGED, 13049 IX2_ACTION_LIST_PLAYBACK_CHANGED = _shared$IX2EngineActi.IX2_ACTION_LIST_PLAYBACK_CHANGED, 13050 IX2_VIEWPORT_WIDTH_CHANGED = _shared$IX2EngineActi.IX2_VIEWPORT_WIDTH_CHANGED, 13051 IX2_MEDIA_QUERIES_DEFINED = _shared$IX2EngineActi.IX2_MEDIA_QUERIES_DEFINED; 13052var initialState = { 13053 active: false, 13054 tick: 0, 13055 eventListeners: [], 13056 eventState: {}, 13057 playbackState: {}, 13058 viewportWidth: 0, 13059 mediaQueryKey: null, 13060 hasBoundaryNodes: false, 13061 hasDefinedMediaQueries: false 13062}; 13063var TEST_FRAME_STEPS_SIZE = 20; 13064 13065var ixSession = function ixSession() { 13066 var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState; 13067 var action = arguments.length > 1 ? arguments[1] : undefined; 13068 13069 switch (action.type) { 13070 case IX2_SESSION_INITIALIZED: 13071 { 13072 var hasBoundaryNodes = action.payload.hasBoundaryNodes; 13073 return (0, _timm.set)(state, 'hasBoundaryNodes', hasBoundaryNodes); 13074 } 13075 13076 case IX2_SESSION_STARTED: 13077 { 13078 return (0, _timm.set)(state, 'active', true); 13079 } 13080 13081 case IX2_TEST_FRAME_RENDERED: 13082 { 13083 var _action$payload$step = action.payload.step, 13084 step = _action$payload$step === void 0 ? TEST_FRAME_STEPS_SIZE : _action$payload$step; 13085 return (0, _timm.set)(state, 'tick', state.tick + step); 13086 } 13087 13088 case IX2_SESSION_STOPPED: 13089 { 13090 return initialState; 13091 } 13092 13093 case IX2_ANIMATION_FRAME_CHANGED: 13094 { 13095 var now = action.payload.now; 13096 return (0, _timm.set)(state, 'tick', now); 13097 } 13098 13099 case IX2_EVENT_LISTENER_ADDED: 13100 { 13101 var eventListeners = (0, _timm.addLast)(state.eventListeners, action.payload); 13102 return (0, _timm.set)(state, 'eventListeners', eventListeners); 13103 } 13104 13105 case IX2_EVENT_STATE_CHANGED: 13106 { 13107 var _action$payload = action.payload, 13108 stateKey = _action$payload.stateKey, 13109 newState = _action$payload.newState; 13110 return (0, _timm.setIn)(state, ['eventState', stateKey], newState); 13111 } 13112 13113 case IX2_ACTION_LIST_PLAYBACK_CHANGED: 13114 { 13115 var _action$payload2 = action.payload, 13116 actionListId = _action$payload2.actionListId, 13117 isPlaying = _action$payload2.isPlaying; 13118 return (0, _timm.setIn)(state, ['playbackState', actionListId], isPlaying); 13119 } 13120 13121 case IX2_VIEWPORT_WIDTH_CHANGED: 13122 { 13123 var _action$payload3 = action.payload, 13124 width = _action$payload3.width, 13125 mediaQueries = _action$payload3.mediaQueries; 13126 var mediaQueryCount = mediaQueries.length; 13127 var mediaQueryKey = null; 13128 13129 for (var i = 0; i < mediaQueryCount; i++) { 13130 var _mediaQueries$i = mediaQueries[i], 13131 key = _mediaQueries$i.key, 13132 min = _mediaQueries$i.min, 13133 max = _mediaQueries$i.max; 13134 13135 if (width >= min && width <= max) { 13136 mediaQueryKey = key; 13137 break; 13138 } 13139 } 13140 13141 return (0, _timm.merge)(state, { 13142 viewportWidth: width, 13143 mediaQueryKey: mediaQueryKey 13144 }); 13145 } 13146 13147 case IX2_MEDIA_QUERIES_DEFINED: 13148 { 13149 return (0, _timm.set)(state, 'hasDefinedMediaQueries', true); 13150 } 13151 13152 default: 13153 { 13154 return state; 13155 } 13156 } 13157}; 13158 13159exports.ixSession = ixSession; 13160 13161/***/ }), 13162/* 200 */ 13163/***/ (function(module, exports, __webpack_require__) { 13164 13165"use strict"; 13166 13167 13168Object.defineProperty(exports, "__esModule", { 13169 value: true 13170}); 13171exports.ixInstances = void 0; 13172 13173var _shared = __webpack_require__(3); 13174 13175var _timm = __webpack_require__(13); 13176/* eslint-env browser */ 13177 13178 13179var _shared$IX2EngineActi = _shared.IX2EngineActionTypes,
13180 IX2_RAW_DATA_IMPORTED = _shared$IX2EngineActi.IX2_RAW_DATA_IMPORTED, 13181 IX2_SESSION_STOPPED = _shared$IX2EngineActi.IX2_SESSION_STOPPED, 13182 IX2_INSTANCE_ADDED = _shared$IX2EngineActi.IX2_INSTANCE_ADDED, 13183 IX2_INSTANCE_STARTED = _shared$IX2EngineActi.IX2_INSTANCE_STARTED, 13184 IX2_INSTANCE_REMOVED = _shared$IX2EngineActi.IX2_INSTANCE_REMOVED, 13185 IX2_ANIMATION_FRAME_CHANGED = _shared$IX2EngineActi.IX2_ANIMATION_FRAME_CHANGED; 13186var _shared$IX2EasingUtil = _shared.IX2EasingUtils, 13187 optimizeFloat = _shared$IX2EasingUtil.optimizeFloat, 13188 applyEasing = _shared$IX2EasingUtil.applyEasing; 13189var RENDER_GENERAL = _shared.IX2EngineConstants.RENDER_GENERAL; 13190var _shared$IX2VanillaUti = _shared.IX2VanillaUtils, 13191 getItemConfigByKey = _shared$IX2VanillaUti.getItemConfigByKey, 13192 getRenderType = _shared$IX2VanillaUti.getRenderType, 13193 getStyleProp = _shared$IX2VanillaUti.getStyleProp; 13194 13195var continuousInstance = function continuousInstance(state, action) { 13196 var lastPosition = state.position, 13197 parameterId = state.parameterId, 13198 actionGroups = state.actionGroups, 13199 destinationKeys = state.destinationKeys, 13200 smoothing = state.smoothing, 13201 restingValue = state.restingValue, 13202 actionTypeId = state.actionTypeId; 13203 var parameters = action.payload.parameters; 13204 var velocity = Math.max(1 - smoothing, 0.01); 13205 var paramValue = parameters[parameterId]; 13206 13207 if (paramValue == null) { 13208 velocity = 1; 13209 paramValue = restingValue; 13210 } 13211 13212 var nextPosition = Math.max(paramValue, 0) || 0; 13213 var positionDiff = optimizeFloat(nextPosition - lastPosition); 13214 var position = optimizeFloat(lastPosition + positionDiff * velocity); 13215 var keyframePosition = position * 100; 13216 13217 if (position === lastPosition && state.current) { 13218 return state; 13219 } 13220 13221 var fromActionItem; 13222 var toActionItem; 13223 var positionOffset; 13224 var positionRange; 13225 13226 for (var i = 0, length = actionGroups.length; i < length; i++) { 13227 var _actionGroups$i = actionGroups[i], 13228 keyframe = _actionGroups$i.keyframe, 13229 actionItems = _actionGroups$i.actionItems; 13230 13231 if (i === 0) { 13232 fromActionItem = actionItems[0]; 13233 } 13234 13235 if (keyframePosition >= keyframe) { 13236 fromActionItem = actionItems[0]; 13237 var nextGroup = actionGroups[i + 1]; 13238 var hasNextItem = nextGroup && keyframePosition !== keyframe; 13239 toActionItem = hasNextItem ? nextGroup.actionItems[0] : null; 13240 13241 if (hasNextItem) { 13242 positionOffset = keyframe / 100; 13243 positionRange = (nextGroup.keyframe - keyframe) / 100; 13244 } 13245 } 13246 } 13247 13248 var current = {}; 13249 13250 if (fromActionItem && !toActionItem) { 13251 for (var _i = 0, _length = destinationKeys.length; _i < _length; _i++) { 13252 var key = destinationKeys[_i]; 13253 current[key] = getItemConfigByKey(actionTypeId, key, fromActionItem.config); 13254 } 13255 } else if (fromActionItem && toActionItem) { 13256 var localPosition = (position - positionOffset) / positionRange; 13257 var easing = fromActionItem.config.easing; 13258 var eased = applyEasing(easing, localPosition); 13259 13260 for (var _i2 = 0, _length2 = destinationKeys.length; _i2 < _length2; _i2++) { 13261 var _key = destinationKeys[_i2]; 13262 var fromVal = getItemConfigByKey(actionTypeId, _key, fromActionItem.config); 13263 var toVal = getItemConfigByKey(actionTypeId, _key, toActionItem.config); 13264 var diff = toVal - fromVal; 13265 var value = diff * eased + fromVal; 13266 current[_key] = value; 13267 } 13268 } 13269 13270 return (0, _timm.merge)(state, { 13271 position: position, 13272 current: current 13273 }); 13274}; 13275 13276var timedInstance = function timedInstance(state, action) { 13277 var _state = state, 13278 active = _state.active, 13279 origin = _state.origin, 13280 start = _state.start, 13281 immediate = _state.immediate, 13282 renderType = _state.renderType, 13283 verbose = _state.verbose, 13284 actionItem = _state.actionItem, 13285 destination = _state.destination, 13286 destinationKeys = _state.destinationKeys, 13287 instanceDelay = _state.instanceDelay; 13288 var easing = actionItem.config.easing; 13289 var _actionItem$config = actionItem.config, 13290 duration = _actionItem$config.duration,
13291 delay = _actionItem$config.delay; 13292 delay = instanceDelay != null ? instanceDelay : delay; 13293 13294 if (renderType === RENDER_GENERAL) { 13295 duration = 0; 13296 } else if (immediate) { 13297 duration = delay = 0; 13298 } 13299 13300 var now = action.payload.now; 13301 13302 if (active && origin) { 13303 var delta = now - (start + delay); 13304 13305 if (verbose) { 13306 var verboseDelta = now - start; 13307 var verboseDuration = duration + delay; 13308 var verbosePosition = optimizeFloat(Math.min(Math.max(0, verboseDelta / verboseDuration), 1)); 13309 state = (0, _timm.set)(state, 'verboseTimeElapsed', verboseDuration * verbosePosition); 13310 } 13311 13312 if (delta < 0) { 13313 return state; 13314 } 13315 13316 var position = optimizeFloat(Math.min(Math.max(0, delta / duration), 1)); 13317 var eased = applyEasing(easing, position); 13318 var newProps = {}; 13319 var current = null; 13320 13321 if (destinationKeys.length) { 13322 current = destinationKeys.reduce(function (result, key) { 13323 var destValue = destination[key]; 13324 var originVal = parseFloat(origin[key]) || 0; 13325 var diff = parseFloat(destValue) - originVal; 13326 var value = diff * eased + originVal; 13327 result[key] = value; 13328 return result; 13329 }, {}); 13330 } 13331 13332 newProps.current = current; 13333 newProps.position = position; 13334 13335 if (position === 1) { 13336 newProps.active = false; 13337 newProps.complete = true; 13338 } 13339 13340 return (0, _timm.merge)(state, newProps); 13341 } 13342 13343 return state; 13344}; 13345 13346var ixInstances = function ixInstances() { 13347 var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : Object.freeze({}); 13348 var action = arguments.length > 1 ? arguments[1] : undefined; 13349 13350 switch (action.type) { 13351 case IX2_RAW_DATA_IMPORTED: 13352 { 13353 return action.payload.ixInstances || Object.freeze({}); 13354 } 13355 13356 case IX2_SESSION_STOPPED: 13357 { 13358 return Object.freeze({}); 13359 } 13360 13361 case IX2_INSTANCE_ADDED: 13362 { 13363 var _action$payload = action.payload, 13364 instanceId = _action$payload.instanceId, 13365 elementId = _action$payload.elementId, 13366 actionItem = _action$payload.actionItem, 13367 eventId = _action$payload.eventId, 13368 eventTarget = _action$payload.eventTarget, 13369 eventStateKey = _action$payload.eventStateKey, 13370 actionListId = _action$payload.actionListId, 13371 groupIndex = _action$payload.groupIndex, 13372 isCarrier = _action$payload.isCarrier, 13373 origin = _action$payload.origin, 13374 destination = _action$payload.destination, 13375 immediate = _action$payload.immediate, 13376 verbose = _action$payload.verbose, 13377 continuous = _action$payload.continuous, 13378 parameterId = _action$payload.parameterId, 13379 actionGroups = _action$payload.actionGroups, 13380 smoothing = _action$payload.smoothing, 13381 restingValue = _action$payload.restingValue, 13382 pluginInstance = _action$payload.pluginInstance, 13383 instanceDelay = _action$payload.instanceDelay; 13384 var actionTypeId = actionItem.actionTypeId; 13385 var renderType = getRenderType(actionTypeId); 13386 var styleProp = getStyleProp(renderType, actionTypeId); 13387 var destinationKeys = Object.keys(destination).filter(function (key) { 13388 return destination[key] != null; 13389 }); 13390 return (0, _timm.set)(state, instanceId, { 13391 id: instanceId, 13392 elementId: elementId, 13393 active: false, 13394 position: 0, 13395 start: 0, 13396 origin: origin, 13397 destination: destination, 13398 destinationKeys: destinationKeys, 13399 immediate: immediate, 13400 verbose: verbose, 13401 current: null, 13402 actionItem: actionItem, 13403 actionTypeId: actionTypeId, 13404 eventId: eventId, 13405 eventTarget: eventTarget, 13406 eventStateKey: eventStateKey, 13407 actionListId: actionListId, 13408 groupIndex: groupIndex, 13409 renderType: renderType, 13410 isCarrier: isCarrier, 13411 styleProp: styleProp, 13412 continuous: continuous, 13413 parameterId: parameterId, 13414 actionGroups: actionGroups, 13415 smoothing: smoothing, 13416 restingValue: restingValue, 13417 pluginInstance: pluginInstance, 13418 instanceDelay: instanceDelay 13419 }); 13420 } 13421 13422 case IX2_INSTANCE_STARTED: 13423 { 13424 var _action$payload2 = action.payload, 13425 _instanceId = _action$payload2.instanceId, 13426 time = _action$payload2.time; 13427 return (0, _timm.mergeIn)(state, [_instanceId], { 13428 active: true, 13429 complete: false, 13430 start: time 13431 }); 13432 } 13433 13434 case IX2_INSTANCE_REMOVED: 13435 { 13436 var _instanceId2 = action.payload.instanceId; 13437 13438 if (!state[_instanceId2]) { 13439 return state; 13440 } 13441 13442 var newState = {}; 13443 var keys = Object.keys(state); 13444 var length = keys.length; 13445 13446 for (var i = 0; i < length; i++) { 13447 var key = keys[i]; 13448 13449 if (key !== _instanceId2) { 13450 newState[key] = state[key]; 13451 } 13452 } 13453 13454 return newState; 13455 } 13456 13457 case IX2_ANIMATION_FRAME_CHANGED: 13458 { 13459 var _newState = state; 13460 13461 var _keys = Object.keys(state); 13462 13463 var _length3 = _keys.length; 13464 13465 for (var _i3 = 0; _i3 < _length3; _i3++) { 13466 var _key2 = _keys[_i3]; 13467 var instance = state[_key2]; 13468 var reducer = instance.continuous ? continuousInstance : timedInstance; 13469 _newState = (0, _timm.set)(_newState, _key2, reducer(instance, action)); 13470 } 13471 13472 return _newState; 13473 } 13474 13475 default: 13476 { 13477 return state; 13478 } 13479 } 13480}; 13481 13482exports.ixInstances = ixInstances; 13483 13484/***/ }), 13485/* 201 */ 13486/***/ (function(module, exports, __webpack_require__) { 13487 13488"use strict"; 13489 13490 13491Object.defineProperty(exports, "__esModule", { 13492 value: true 13493}); 13494exports.ixParameters = void 0; 13495 13496var _shared = __webpack_require__(3); 13497 13498var _shared$IX2EngineActi = _shared.IX2EngineActionTypes,
13499 IX2_RAW_DATA_IMPORTED = _shared$IX2EngineActi.IX2_RAW_DATA_IMPORTED, 13500 IX2_SESSION_STOPPED = _shared$IX2EngineActi.IX2_SESSION_STOPPED, 13501 IX2_PARAMETER_CHANGED = _shared$IX2EngineActi.IX2_PARAMETER_CHANGED; // prettier-ignore 13502 13503var ixParameters = function ixParameters() { 13504 var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { 13505 /*mutable flat state*/ 13506 }; 13507 var action = arguments.length > 1 ? arguments[1] : undefined; 13508 13509 switch (action.type) { 13510 case IX2_RAW_DATA_IMPORTED: 13511 { 13512 return action.payload.ixParameters || { 13513 /*mutable flat state*/ 13514 }; 13515 } 13516 13517 case IX2_SESSION_STOPPED: 13518 { 13519 return { 13520 /*mutable flat state*/ 13521 }; 13522 } 13523 13524 case IX2_PARAMETER_CHANGED: 13525 { 13526 var _action$payload = action.payload, 13527 key = _action$payload.key, 13528 value = _action$payload.value; 13529 state[key] = value; 13530 return state; 13531 } 13532 13533 default: 13534 { 13535 return state; 13536 } 13537 } 13538}; 13539 13540exports.ixParameters = ixParameters; 13541 13542/***/ }), 13543/* 202 */ 13544/***/ (function(module, exports, __webpack_require__) { 13545 13546var arrayWithoutHoles = __webpack_require__(203); 13547 13548var iterableToArray = __webpack_require__(204); 13549 13550var nonIterableSpread = __webpack_require__(205); 13551 13552function _toConsumableArray(arr) { 13553 return arrayWithoutHoles(arr) || iterableToArray(arr) || nonIterableSpread(); 13554} 13555 13556module.exports = _toConsumableArray; 13557 13558/***/ }), 13559/* 203 */ 13560/***/ (function(module, exports) { 13561 13562function _arrayWithoutHoles(arr) { 13563 if (Array.isArray(arr)) { 13564 for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { 13565 arr2[i] = arr[i]; 13566 } 13567 13568 return arr2; 13569 } 13570} 13571 13572module.exports = _arrayWithoutHoles; 13573 13574/***/ }), 13575/* 204 */ 13576/***/ (function(module, exports) { 13577 13578function _iterableToArray(iter) { 13579 if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); 13580} 13581 13582module.exports = _iterableToArray; 13583 13584/***/ }), 13585/* 205 */ 13586/***/ (function(module, exports) { 13587 13588function _nonIterableSpread() { 13589 throw new TypeError("Invalid attempt to spread non-iterable instance"); 13590} 13591 13592module.exports = _nonIterableSpread; 13593 13594/***/ }), 13595/* 206 */ 13596/***/ (function(module, exports, __webpack_require__) { 13597 13598var objectWithoutPropertiesLoose = __webpack_require__(207); 13599 13600function _objectWithoutProperties(source, excluded) { 13601 if (source == null) return {}; 13602 var target = objectWithoutPropertiesLoose(source, excluded); 13603 var key, i; 13604 13605 if (Object.getOwnPropertySymbols) { 13606 var sourceSymbolKeys = Object.getOwnPropertySymbols(source); 13607 13608 for (i = 0; i < sourceSymbolKeys.length; i++) { 13609 key = sourceSymbolKeys[i]; 13610 if (excluded.indexOf(key) >= 0) continue; 13611 if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; 13612 target[key] = source[key]; 13613 } 13614 } 13615 13616 return target; 13617} 13618 13619module.exports = _objectWithoutProperties; 13620 13621/***/ }), 13622/* 207 */ 13623/***/ (function(module, exports) { 13624 13625function _objectWithoutPropertiesLoose(source, excluded) { 13626 if (source == null) return {}; 13627 var target = {}; 13628 var sourceKeys = Object.keys(source); 13629 var key, i; 13630 13631 for (i = 0; i < sourceKeys.length; i++) { 13632 key = sourceKeys[i]; 13633 if (excluded.indexOf(key) >= 0) continue; 13634 target[key] = source[key]; 13635 } 13636 13637 return target; 13638} 13639 13640module.exports = _objectWithoutPropertiesLoose; 13641 13642/***/ }), 13643/* 208 */ 13644/***/ (function(module, exports, __webpack_require__) { 13645 13646var baseKeys = __webpack_require__(41), 13647 getTag = __webpack_require__(43), 13648 isArrayLike = __webpack_require__(10), 13649 isString = __webpack_require__(209), 13650 stringSize = __webpack_require__(210); 13651 13652/** `Object#toString` result references. */ 13653var mapTag = '[object Map]', 13654 setTag = '[object Set]'; 13655 13656/** 13657 * Gets the size of `collection` by returning its length for array-like 13658 * values or the number of own enumerable string keyed properties for objects. 13659 * 13660 * @static 13661 * @memberOf _ 13662 * @since 0.1.0 13663 * @category Collection 13664 * @param {Array|Object|string} collection The collection to inspect. 13665 * @returns {number} Returns the collection size. 13666 * @example 13667 * 13668 * _.size([1, 2, 3]); 13669 * // => 3 13670 * 13671 * _.size({ 'a': 1, 'b': 2 }); 13672 * // => 2 13673 * 13674 * _.size('pebbles'); 13675 * // => 7 13676 */ 13677function size(collection) { 13678 if (collection == null) { 13679 return 0; 13680 } 13681 if (isArrayLike(collection)) { 13682 return isString(collection) ? stringSize(collection) : collection.length; 13683 } 13684 var tag = getTag(collection); 13685 if (tag == mapTag || tag == setTag) { 13686 return collection.size; 13687 } 13688 return baseKeys(collection).length; 13689} 13690 13691module.exports = size; 13692 13693 13694/***/ }), 13695/* 209 */ 13696/***/ (function(module, exports, __webpack_require__) { 13697 13698var baseGetTag = __webpack_require__(9), 13699 isArray = __webpack_require__(1), 13700 isObjectLike = __webpack_require__(8); 13701 13702/** `Object#toString` result references. */ 13703var stringTag = '[object String]'; 13704 13705/** 13706 * Checks if `value` is classified as a `String` primitive or object. 13707 * 13708 * @static 13709 * @since 0.1.0 13710 * @memberOf _ 13711 * @category Lang 13712 * @param {*} value The value to check. 13713 * @returns {boolean} Returns `true` if `value` is a string, else `false`. 13714 * @example 13715 * 13716 * _.isString('abc'); 13717 * // => true 13718 * 13719 * _.isString(1); 13720 * // => false 13721 */ 13722function isString(value) { 13723 return typeof value == 'string' || 13724 (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag); 13725} 13726 13727module.exports = isString; 13728 13729 13730/***/ }), 13731/* 210 */ 13732/***/ (function(module, exports, __webpack_require__) { 13733 13734var asciiSize = __webpack_require__(211), 13735 hasUnicode = __webpack_require__(212), 13736 unicodeSize = __webpack_require__(213); 13737 13738/** 13739 * Gets the number of symbols in `string`. 13740 * 13741 * @private 13742 * @param {string} string The string to inspect. 13743 * @returns {number} Returns the string size. 13744 */ 13745function stringSize(string) { 13746 return hasUnicode(string) 13747 ? unicodeSize(string) 13748 : asciiSize(string); 13749} 13750 13751module.exports = stringSize; 13752 13753 13754/***/ }), 13755/* 211 */ 13756/***/ (function(module, exports, __webpack_require__) { 13757 13758var baseProperty = __webpack_require__(83); 13759 13760/** 13761 * Gets the size of an ASCII `string`. 13762 * 13763 * @private 13764 * @param {string} string The string inspect. 13765 * @returns {number} Returns the string size. 13766 */ 13767var asciiSize = baseProperty('length'); 13768 13769module.exports = asciiSize; 13770 13771 13772/***/ }), 13773/* 212 */
vendor: 2,920 bytes, lines 13774-13863
13774/***/ (function(module, exports) { 13775 13776/** Used to compose unicode character classes. */ 13777var rsAstralRange = '\\ud800-\\udfff', 13778 rsComboMarksRange = '\\u0300-\\u036f', 13779 reComboHalfMarksRange = '\\ufe20-\\ufe2f', 13780 rsComboSymbolsRange = '\\u20d0-\\u20ff', 13781 rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, 13782 rsVarRange = '\\ufe0e\\ufe0f'; 13783 13784/** Used to compose unicode capture groups. */ 13785var rsZWJ = '\\u200d'; 13786 13787/** 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/). */ 13788var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']'); 13789 13790/** 13791 * Checks if `string` contains Unicode symbols. 13792 * 13793 * @private 13794 * @param {string} string The string to inspect. 13795 * @returns {boolean} Returns `true` if a symbol is found, else `false`. 13796 */ 13797function hasUnicode(string) { 13798 return reHasUnicode.test(string); 13799} 13800 13801module.exports = hasUnicode; 13802 13803 13804/***/ }), 13805/* 213 */ 13806/***/ (function(module, exports) { 13807 13808/** Used to compose unicode character classes. */ 13809var rsAstralRange = '\\ud800-\\udfff', 13810 rsComboMarksRange = '\\u0300-\\u036f', 13811 reComboHalfMarksRange = '\\ufe20-\\ufe2f', 13812 rsComboSymbolsRange = '\\u20d0-\\u20ff', 13813 rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, 13814 rsVarRange = '\\ufe0e\\ufe0f'; 13815 13816/** Used to compose unicode capture groups. */ 13817var rsAstral = '[' + rsAstralRange + ']', 13818 rsCombo = '[' + rsComboRange + ']', 13819 rsFitz = '\\ud83c[\\udffb-\\udfff]', 13820 rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', 13821 rsNonAstral = '[^' + rsAstralRange + ']', 13822 rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', 13823 rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', 13824 rsZWJ = '\\u200d'; 13825 13826/** Used to compose unicode regexes. */ 13827var reOptMod = rsModifier + '?', 13828 rsOptVar = '[' + rsVarRange + ']?', 13829 rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*', 13830 rsSeq = rsOptVar + reOptMod + rsOptJoin, 13831 rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')'; 13832 13833/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ 13834var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); 13835 13836/** 13837 * Gets the size of a Unicode `string`. 13838 * 13839 * @private 13840 * @param {string} string The string inspect. 13841 * @returns {number} Returns the string size. 13842 */ 13843function unicodeSize(string) { 13844 var result = reUnicode.lastIndex = 0; 13845 while (reUnicode.test(string)) { 13846 ++result; 13847 } 13848 return result; 13849} 13850 13851module.exports = unicodeSize; 13852 13853 13854/***/ }), 13855/* 214 */ 13856/***/ (function(module, exports, __webpack_require__) { 13857 13858var baseIteratee = __webpack_require__(6), 13859 negate = __webpack_require__(215), 13860 pickBy = __webpack_require__(216); 13861 13862/** 13863 * The opposite of `_.pickBy`;
13863 this method creates an object composed of 13864 * the own and inherited enumerable string keyed properties of `object` that 13865 * `predicate` doesn't return truthy for. The predicate is invoked with two 13866 * arguments: (value, key). 13867 * 13868 * @static 13869 * @memberOf _ 13870 * @since 4.0.0 13871 * @category Object 13872 * @param {Object} object The source object. 13873 * @param {Function} [predicate=_.identity] The function invoked per property. 13874 * @returns {Object} Returns the new object. 13875 * @example 13876 * 13877 * var object = { 'a': 1, 'b': '2', 'c': 3 }; 13878 * 13879 * _.omitBy(object, _.isNumber); 13880 * // => { 'b': '2' } 13881 */ 13882function omitBy(object, predicate) { 13883 return pickBy(object, negate(baseIteratee(predicate))); 13884} 13885 13886module.exports = omitBy; 13887 13888 13889/***/ }), 13890/* 215 */ 13891/***/ (function(module, exports) { 13892 13893/** Error message constants. */ 13894var FUNC_ERROR_TEXT = 'Expected a function'; 13895 13896/** 13897 * Creates a function that negates the result of the predicate `func`. The 13898 * `func` predicate is invoked with the `this` binding and arguments of the 13899 * created function. 13900 * 13901 * @static 13902 * @memberOf _ 13903 * @since 3.0.0 13904 * @category Function 13905 * @param {Function} predicate The predicate to negate. 13906 * @returns {Function} Returns the new negated function. 13907 * @example 13908 * 13909 * function isEven(n) { 13910 * return n % 2 == 0; 13911 * } 13912 * 13913 * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven)); 13914 * // => [1, 3, 5] 13915 */ 13916function negate(predicate) { 13917 if (typeof predicate != 'function') { 13918 throw new TypeError(FUNC_ERROR_TEXT); 13919 } 13920 return function() { 13921 var args = arguments; 13922 switch (args.length) { 13923 case 0: return !predicate.call(this); 13924 case 1: return !predicate.call(this, args[0]); 13925 case 2: return !predicate.call(this, args[0], args[1]); 13926 case 3: return !predicate.call(this, args[0], args[1], args[2]); 13927 } 13928 return !predicate.apply(this, args); 13929 }; 13930} 13931 13932module.exports = negate; 13933 13934 13935/***/ }), 13936/* 216 */ 13937/***/ (function(module, exports, __webpack_require__) { 13938 13939var arrayMap = __webpack_require__(82), 13940 baseIteratee = __webpack_require__(6), 13941 basePickBy = __webpack_require__(217), 13942 getAllKeysIn = __webpack_require__(220); 13943 13944/**
13945 * Creates an object composed of the `object` properties `predicate` returns 13946 * truthy for. The predicate is invoked with two arguments: (value, key). 13947 * 13948 * @static 13949 * @memberOf _ 13950 * @since 4.0.0 13951 * @category Object 13952 * @param {Object} object The source object. 13953 * @param {Function} [predicate=_.identity] The function invoked per property. 13954 * @returns {Object} Returns the new object. 13955 * @example 13956 * 13957 * var object = { 'a': 1, 'b': '2', 'c': 3 }; 13958 * 13959 * _.pickBy(object, _.isNumber); 13960 * // => { 'a': 1, 'c': 3 } 13961 */ 13962function pickBy(object, predicate) { 13963 if (object == null) { 13964 return {}; 13965 } 13966 var props = arrayMap(getAllKeysIn(object), function(prop) { 13967 return [prop]; 13968 }); 13969 predicate = baseIteratee(predicate); 13970 return basePickBy(object, props, function(value, path) { 13971 return predicate(value, path[0]); 13972 }); 13973} 13974 13975module.exports = pickBy; 13976 13977 13978/***/ }), 13979/* 217 */ 13980/***/ (function(module, exports, __webpack_require__) { 13981 13982var baseGet = __webpack_require__(44), 13983 baseSet = __webpack_require__(218), 13984 castPath = __webpack_require__(24); 13985 13986/** 13987 * The base implementation of `_.pickBy` without support for iteratee shorthands. 13988 * 13989 * @private 13990 * @param {Object} object The source object. 13991 * @param {string[]} paths The property paths to pick. 13992 * @param {Function} predicate The function invoked per property. 13993 * @returns {Object} Returns the new object. 13994 */ 13995function basePickBy(object, paths, predicate) { 13996 var index = -1, 13997 length = paths.length, 13998 result = {}; 13999 14000 while (++index < length) { 14001 var path = paths[index], 14002 value = baseGet(object, path); 14003 14004 if (predicate(value, path)) { 14005 baseSet(result, castPath(path, object), value); 14006 } 14007 } 14008 return result; 14009} 14010 14011module.exports = basePickBy; 14012 14013 14014/***/ }), 14015/* 218 */ 14016/***/ (function(module, exports, __webpack_require__) { 14017 14018var assignValue = __webpack_require__(219), 14019 castPath = __webpack_require__(24), 14020 isIndex = __webpack_require__(38), 14021 isObject = __webpack_require__(5), 14022 toKey = __webpack_require__(12); 14023 14024/** 14025 * The base implementation of `_.set`. 14026 * 14027 * @private 14028 * @param {Object} object The object to modify. 14029 * @param {Array|string} path The path of the property to set. 14030 * @param {*} value The value to set. 14031 * @param {Function} [customizer] The function to customize path creation. 14032 * @returns {Object} Returns `object`. 14033 */ 14034function baseSet(object, path, value, customizer) { 14035 if (!isObject(object)) { 14036 return object; 14037 } 14038 path = castPath(path, object); 14039 14040 var index = -1, 14041 length = path.length, 14042 lastIndex = length - 1, 14043 nested = object; 14044 14045 while (nested != null && ++index < length) { 14046 var key = toKey(path[index]), 14047 newValue = value; 14048 14049 if (index != lastIndex) { 14050 var objValue = nested[key]; 14051 newValue = customizer ? customizer(objValue, key, nested) : undefined; 14052 if (newValue === undefined) { 14053 newValue = isObject(objValue) 14054 ? objValue 14055 : (isIndex(path[index + 1]) ? [] : {}); 14056 } 14057 } 14058 assignValue(nested, key, newValue); 14059 nested = nested[key]; 14060 } 14061 return object; 14062} 14063 14064module.exports = baseSet; 14065 14066 14067/***/ }), 14068/* 219 */ 14069/***/ (function(module, exports, __webpack_require__) { 14070 14071var baseAssignValue = __webpack_require__(94), 14072 eq = __webpack_require__(33); 14073 14074/** Used for built-in method references. */ 14075var objectProto = Object.prototype; 14076 14077/** Used to check objects for own properties. */ 14078var hasOwnProperty = objectProto.hasOwnProperty; 14079 14080/** 14081 * Assigns `value` to `key` of `object` if the existing value is not equivalent 14082 * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) 14083 * for equality comparisons. 14084 * 14085 * @private 14086 * @param {Object} object The object to modify. 14087 * @param {string} key The key of the property to assign. 14088 * @param {*} value The value to assign. 14089 */ 14090function assignValue(object, key, value) { 14091 var objValue = object[key]; 14092 if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || 14093 (value === undefined && !(key in object))) { 14094 baseAssignValue(object, key, value); 14095 } 14096} 14097 14098module.exports = assignValue; 14099 14100 14101/***/ }), 14102/* 220 */ 14103/***/ (function(module, exports, __webpack_require__) { 14104 14105var baseGetAllKeys = __webpack_require__(71), 14106 getSymbolsIn = __webpack_require__(221), 14107 keysIn = __webpack_require__(223); 14108 14109/** 14110 * Creates an array of own and inherited enumerable property names and 14111 * symbols of `object`. 14112 * 14113 * @private 14114 * @param {Object} object The object to query. 14115 * @returns {Array} Returns the array of property names and symbols. 14116 */ 14117function getAllKeysIn(object) { 14118 return baseGetAllKeys(object, keysIn, getSymbolsIn); 14119} 14120 14121module.exports = getAllKeysIn; 14122 14123 14124/***/ }), 14125/* 221 */ 14126/***/ (function(module, exports, __webpack_require__) { 14127 14128var arrayPush = __webpack_require__(36), 14129 getPrototype = __webpack_require__(222), 14130 getSymbols = __webpack_require__(72), 14131 stubArray = __webpack_require__(73); 14132 14133/* Built-in method references for those with the same name as other `lodash` methods. */ 14134var nativeGetSymbols = Object.getOwnPropertySymbols; 14135 14136/** 14137 * Creates an array of the own and inherited enumerable symbols of `object`. 14138 * 14139 * @private 14140 * @param {Object} object The object to query. 14141 * @returns {Array} Returns the array of symbols. 14142 */ 14143var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) { 14144 var result = []; 14145 while (object) {
vendor: 9,224 bytes, lines 14146-14516
14146 arrayPush(result, getSymbols(object)); 14147 object = getPrototype(object); 14148 } 14149 return result; 14150}; 14151 14152module.exports = getSymbolsIn; 14153 14154 14155/***/ }), 14156/* 222 */ 14157/***/ (function(module, exports, __webpack_require__) { 14158 14159var overArg = __webpack_require__(76); 14160 14161/** Built-in value references. */ 14162var getPrototype = overArg(Object.getPrototypeOf, Object); 14163 14164module.exports = getPrototype; 14165 14166 14167/***/ }), 14168/* 223 */ 14169/***/ (function(module, exports, __webpack_require__) { 14170 14171var arrayLikeKeys = __webpack_require__(74), 14172 baseKeysIn = __webpack_require__(224), 14173 isArrayLike = __webpack_require__(10); 14174 14175/** 14176 * Creates an array of the own and inherited enumerable property names of `object`. 14177 * 14178 * **Note:** Non-object values are coerced to objects. 14179 * 14180 * @static 14181 * @memberOf _ 14182 * @since 3.0.0 14183 * @category Object 14184 * @param {Object} object The object to query. 14185 * @returns {Array} Returns the array of property names. 14186 * @example 14187 * 14188 * function Foo() { 14189 * this.a = 1; 14190 * this.b = 2; 14191 * } 14192 * 14193 * Foo.prototype.c = 3; 14194 * 14195 * _.keysIn(new Foo); 14196 * // => ['a', 'b', 'c'] (iteration order is not guaranteed) 14197 */ 14198function keysIn(object) { 14199 return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); 14200} 14201 14202module.exports = keysIn; 14203 14204 14205/***/ }), 14206/* 224 */ 14207/***/ (function(module, exports, __webpack_require__) { 14208 14209var isObject = __webpack_require__(5), 14210 isPrototype = __webpack_require__(42), 14211 nativeKeysIn = __webpack_require__(225); 14212 14213/** Used for built-in method references. */ 14214var objectProto = Object.prototype; 14215 14216/** Used to check objects for own properties. */ 14217var hasOwnProperty = objectProto.hasOwnProperty; 14218 14219/** 14220 * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. 14221 * 14222 * @private 14223 * @param {Object} object The object to query. 14224 * @returns {Array} Returns the array of property names. 14225 */ 14226function baseKeysIn(object) { 14227 if (!isObject(object)) { 14228 return nativeKeysIn(object); 14229 } 14230 var isProto = isPrototype(object), 14231 result = []; 14232 14233 for (var key in object) { 14234 if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { 14235 result.push(key); 14236 } 14237 } 14238 return result; 14239} 14240 14241module.exports = baseKeysIn; 14242 14243 14244/***/ }), 14245/* 225 */ 14246/***/ (function(module, exports) { 14247 14248/** 14249 * This function is like 14250 * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) 14251 * except that it includes inherited enumerable properties. 14252 * 14253 * @private 14254 * @param {Object} object The object to query. 14255 * @returns {Array} Returns the array of property names. 14256 */ 14257function nativeKeysIn(object) { 14258 var result = []; 14259 if (object != null) { 14260 for (var key in Object(object)) { 14261 result.push(key); 14262 } 14263 } 14264 return result; 14265} 14266 14267module.exports = nativeKeysIn; 14268 14269 14270/***/ }), 14271/* 226 */ 14272/***/ (function(module, exports, __webpack_require__) { 14273 14274var baseKeys = __webpack_require__(41), 14275 getTag = __webpack_require__(43), 14276 isArguments = __webpack_require__(22), 14277 isArray = __webpack_require__(1), 14278 isArrayLike = __webpack_require__(10), 14279 isBuffer = __webpack_require__(37), 14280 isPrototype = __webpack_require__(42), 14281 isTypedArray = __webpack_require__(39); 14282 14283/** `Object#toString` result references. */ 14284var mapTag = '[object Map]', 14285 setTag = '[object Set]'; 14286 14287/** Used for built-in method references. */ 14288var objectProto = Object.prototype; 14289 14290/** Used to check objects for own properties. */ 14291var hasOwnProperty = objectProto.hasOwnProperty; 14292 14293/** 14294 * Checks if `value` is an empty object, collection, map, or set. 14295 * 14296 * Objects are considered empty if they have no own enumerable string keyed 14297 * properties. 14298 * 14299 * Array-like values such as `arguments` objects, arrays, buffers, strings, or 14300 * jQuery-like collections are considered empty if they have a `length` of `0`. 14301 * Similarly, maps and sets are considered empty if they have a `size` of `0`. 14302 * 14303 * @static 14304 * @memberOf _ 14305 * @since 0.1.0 14306 * @category Lang 14307 * @param {*} value The value to check. 14308 * @returns {boolean} Returns `true` if `value` is empty, else `false`. 14309 * @example 14310 * 14311 * _.isEmpty(null); 14312 * // => true 14313 * 14314 * _.isEmpty(true); 14315 * // => true 14316 * 14317 * _.isEmpty(1); 14318 * // => true 14319 * 14320 * _.isEmpty([1, 2, 3]); 14321 * // => false 14322 * 14323 * _.isEmpty({ 'a': 1 }); 14324 * // => false 14325 */ 14326function isEmpty(value) { 14327 if (value == null) { 14328 return true; 14329 } 14330 if (isArrayLike(value) && 14331 (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' || 14332 isBuffer(value) || isTypedArray(value) || isArguments(value))) { 14333 return !value.length; 14334 } 14335 var tag = getTag(value); 14336 if (tag == mapTag || tag == setTag) { 14337 return !value.size; 14338 } 14339 if (isPrototype(value)) { 14340 return !baseKeys(value).length; 14341 } 14342 for (var key in value) { 14343 if (hasOwnProperty.call(value, key)) { 14344 return false; 14345 } 14346 } 14347 return true; 14348} 14349 14350module.exports = isEmpty; 14351 14352 14353/***/ }), 14354/* 227 */ 14355/***/ (function(module, exports, __webpack_require__) { 14356 14357var baseAssignValue = __webpack_require__(94), 14358 baseForOwn = __webpack_require__(91), 14359 baseIteratee = __webpack_require__(6); 14360 14361/** 14362 * Creates an object with the same keys as `object` and values generated 14363 * by running each own enumerable string keyed property of `object` thru 14364 * `iteratee`. The iteratee is invoked with three arguments: 14365 * (value, key, object). 14366 * 14367 * @static 14368 * @memberOf _ 14369 * @since 2.4.0 14370 * @category Object 14371 * @param {Object} object The object to iterate over. 14372 * @param {Function} [iteratee=_.identity] The function invoked per iteration. 14373 * @returns {Object} Returns the new mapped object. 14374 * @see _.mapKeys 14375 * @example 14376 * 14377 * var users = { 14378 * 'fred': { 'user': 'fred', 'age': 40 }, 14379 * 'pebbles': { 'user': 'pebbles', 'age': 1 } 14380 * }; 14381 * 14382 * _.mapValues(users, function(o) { return o.age; }); 14383 * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) 14384 * 14385 * // The `_.property` iteratee shorthand. 14386 * _.mapValues(users, 'age'); 14387 * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) 14388 */ 14389function mapValues(object, iteratee) { 14390 var result = {}; 14391 iteratee = baseIteratee(iteratee, 3); 14392 14393 baseForOwn(object, function(value, key, object) { 14394 baseAssignValue(result, key, iteratee(value, key, object)); 14395 }); 14396 return result; 14397} 14398 14399module.exports = mapValues; 14400 14401 14402/***/ }), 14403/* 228 */ 14404/***/ (function(module, exports, __webpack_require__) { 14405 14406var arrayEach = __webpack_require__(229), 14407 baseEach = __webpack_require__(90), 14408 castFunction = __webpack_require__(230), 14409 isArray = __webpack_require__(1); 14410 14411/** 14412 * Iterates over elements of `collection` and invokes `iteratee` for each element. 14413 * The iteratee is invoked with three arguments: (value, index|key, collection). 14414 * Iteratee functions may exit iteration early by explicitly returning `false`. 14415 * 14416 * **Note:** As with other "Collections" methods, objects with a "length" 14417 * property are iterated like arrays. To avoid this behavior use `_.forIn` 14418 * or `_.forOwn` for object iteration. 14419 * 14420 * @static 14421 * @memberOf _ 14422 * @since 0.1.0 14423 * @alias each 14424 * @category Collection 14425 * @param {Array|Object} collection The collection to iterate over. 14426 * @param {Function} [iteratee=_.identity] The function invoked per iteration. 14427 * @returns {Array|Object} Returns `collection`. 14428 * @see _.forEachRight 14429 * @example 14430 * 14431 * _.forEach([1, 2], function(value) { 14432 * console.log(value); 14433 * }); 14434 * // => Logs `1` then `2`. 14435 * 14436 * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) { 14437 * console.log(key); 14438 * }); 14439 * // => Logs 'a' then 'b' (iteration order is not guaranteed). 14440 */ 14441function forEach(collection, iteratee) { 14442 var func = isArray(collection) ? arrayEach : baseEach; 14443 return func(collection, castFunction(iteratee)); 14444} 14445 14446module.exports = forEach; 14447 14448 14449/***/ }), 14450/* 229 */ 14451/***/ (function(module, exports) { 14452 14453/** 14454 * A specialized version of `_.forEach` for arrays without support for 14455 * iteratee shorthands. 14456 * 14457 * @private 14458 * @param {Array} [array] The array to iterate over. 14459 * @param {Function} iteratee The function invoked per iteration. 14460 * @returns {Array} Returns `array`. 14461 */ 14462function arrayEach(array, iteratee) { 14463 var index = -1, 14464 length = array == null ? 0 : array.length; 14465 14466 while (++index < length) { 14467 if (iteratee(array[index], index, array) === false) { 14468 break; 14469 } 14470 } 14471 return array; 14472} 14473 14474module.exports = arrayEach; 14475 14476 14477/***/ }), 14478/* 230 */ 14479/***/ (function(module, exports, __webpack_require__) { 14480 14481var identity = __webpack_require__(46); 14482 14483/** 14484 * Casts `value` to `identity` if it's not a function. 14485 * 14486 * @private 14487 * @param {*} value The value to inspect. 14488 * @returns {Function} Returns cast function. 14489 */ 14490function castFunction(value) { 14491 return typeof value == 'function' ? value : identity; 14492} 14493 14494module.exports = castFunction; 14495 14496 14497/***/ }), 14498/* 231 */ 14499/***/ (function(module, exports, __webpack_require__) { 14500 14501var baseClamp = __webpack_require__(96), 14502 baseToString = __webpack_require__(81), 14503 toInteger = __webpack_require__(47), 14504 toString = __webpack_require__(80); 14505 14506/** 14507 * Checks if `string` ends with the given target string. 14508 * 14509 * @static 14510 * @memberOf _ 14511 * @since 3.0.0 14512 * @category String 14513 * @param {string} [string=''] The string to inspect. 14514 * @param {string} [target] The string to search for. 14515 * @param {number} [position=string.length] The position to search up to. 14516 * @returns {boolean}
14516 Returns `true` if `string` ends with `target`, 14517 * else `false`. 14518 * @example 14519 * 14520 * _.endsWith('abc', 'c'); 14521 * // => true 14522 * 14523 * _.endsWith('abc', 'b'); 14524 * // => false 14525 * 14526 * _.endsWith('abc', 'b', 2); 14527 * // => true 14528 */ 14529function endsWith(string, target, position) { 14530 string = toString(string); 14531 target = baseToString(target); 14532 14533 var length = string.length; 14534 position = position === undefined 14535 ? length 14536 : baseClamp(toInteger(position), 0, length); 14537 14538 var end = position; 14539 position -= target.length; 14540 return position >= 0 && string.slice(position, end) == target; 14541} 14542 14543module.exports = endsWith; 14544 14545 14546/***/ }), 14547/* 232 */ 14548/***/ (function(module, exports, __webpack_require__) { 14549 14550var debounce = __webpack_require__(233), 14551 isObject = __webpack_require__(5); 14552 14553/** Error message constants. */ 14554var FUNC_ERROR_TEXT = 'Expected a function'; 14555 14556/** 14557 * Creates a throttled function that only invokes `func` at most once per 14558 * every `wait` milliseconds. The throttled function comes with a `cancel` 14559 * method to cancel delayed `func` invocations and a `flush` method to 14560 * immediately invoke them. Provide `options` to indicate whether `func` 14561 * should be invoked on the leading and/or trailing edge of the `wait` 14562 * timeout. The `func` is invoked with the last arguments provided to the 14563 * throttled function. Subsequent calls to the throttled function return the 14564 * result of the last `func` invocation. 14565 * 14566 * **Note:** If `leading` and `trailing` options are `true`, `func` is 14567 * invoked on the trailing edge of the timeout only if the throttled function 14568 * is invoked more than once during the `wait` timeout. 14569 * 14570 * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred 14571 * until to the next tick, similar to `setTimeout` with a timeout of `0`. 14572 * 14573 * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) 14574 * for details over the differences between `_.throttle` and `_.debounce`. 14575 * 14576 * @static 14577 * @memberOf _ 14578 * @since 0.1.0 14579 * @category Function 14580 * @param {Function} func The function to throttle. 14581 * @param {number} [wait=0] The number of milliseconds to throttle invocations to. 14582 * @param {Object} [options={}] The options object. 14583 * @param {boolean} [options.leading=true] 14584 * Specify invoking on the leading edge of the timeout. 14585 * @param {boolean} [options.trailing=true] 14586 * Specify invoking on the trailing edge of the timeout. 14587 * @returns {Function} Returns the new throttled function. 14588 * @example 14589 * 14590 * // Avoid excessively updating the position while scrolling. 14591 * jQuery(window).on('scroll', _.throttle(updatePosition, 100)); 14592 * 14593 * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes. 14594 * var throttled = _.throttle(renewToken, 300000, { 'trailing': false }); 14595 * jQuery(element).on('click', throttled); 14596 * 14597 * // Cancel the trailing throttled invocation. 14598 * jQuery(window).on('popstate', throttled.cancel); 14599 */ 14600function throttle(func, wait, options) { 14601 var leading = true, 14602 trailing = true; 14603 14604 if (typeof func != 'function') { 14605 throw new TypeError(FUNC_ERROR_TEXT); 14606 } 14607 if (isObject(options)) { 14608 leading = 'leading' in options ? !!options.leading : leading; 14609 trailing = 'trailing' in options ? !!options.trailing : trailing; 14610 } 14611 return debounce(func, wait, { 14612 'leading': leading, 14613 'maxWait': wait, 14614 'trailing': trailing 14615 }); 14616} 14617 14618module.exports = throttle; 14619 14620 14621/***/ }), 14622/* 233 */ 14623/***/ (function(module, exports, __webpack_require__) { 14624 14625var isObject = __webpack_require__(5), 14626 now = __webpack_require__(234), 14627 toNumber = __webpack_require__(48); 14628 14629/** Error message constants. */ 14630var FUNC_ERROR_TEXT = 'Expected a function'; 14631 14632/* Built-in method references for those with the same name as other `lodash` methods. */ 14633var nativeMax = Math.max, 14634 nativeMin = Math.min; 14635 14636/** 14637 * Creates a debounced function that delays invoking `func` until after `wait` 14638 * milliseconds have elapsed since the last time the debounced function was 14639 * invoked. The debounced function comes with a `cancel` method to cancel 14640 * delayed `func` invocations and a `flush` method to immediately invoke them. 14641 * Provide `options` to indicate whether `func` should be invoked on the 14642 * leading and/or trailing edge of the `wait` timeout. The `func` is invoked 14643 * with the last arguments provided to the debounced function. Subsequent 14644 * calls to the debounced function return the result of the last `func` 14645 * invocation. 14646 * 14647 * **Note:** If `leading` and `trailing` options are `true`, `func` is 14648 * invoked on the trailing edge of the timeout only if the debounced function 14649 * is invoked more than once during the `wait` timeout. 14650 * 14651 * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred 14652 * until to the next tick, similar to `setTimeout` with a timeout of `0`. 14653 *
14654 * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) 14655 * for details over the differences between `_.debounce` and `_.throttle`. 14656 * 14657 * @static 14658 * @memberOf _ 14659 * @since 0.1.0 14660 * @category Function 14661 * @param {Function} func The function to debounce. 14662 * @param {number} [wait=0] The number of milliseconds to delay. 14663 * @param {Object} [options={}] The options object. 14664 * @param {boolean} [options.leading=false] 14665 * Specify invoking on the leading edge of the timeout. 14666 * @param {number} [options.maxWait] 14667 * The maximum time `func` is allowed to be delayed before it's invoked. 14668 * @param {boolean} [options.trailing=true] 14669 * Specify invoking on the trailing edge of the timeout. 14670 * @returns {Function} Returns the new debounced function. 14671 * @example 14672 * 14673 * // Avoid costly calculations while the window size is in flux. 14674 * jQuery(window).on('resize', _.debounce(calculateLayout, 150)); 14675 * 14676 * // Invoke `sendMail` when clicked, debouncing subsequent calls. 14677 * jQuery(element).on('click', _.debounce(sendMail, 300, { 14678 * 'leading': true, 14679 * 'trailing': false 14680 * })); 14681 * 14682 * // Ensure `batchLog` is invoked once after 1 second of debounced calls. 14683 * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 }); 14684 * var source = new EventSource('/stream'); 14685 * jQuery(source).on('message', debounced); 14686 * 14687 * // Cancel the trailing debounced invocation. 14688 * jQuery(window).on('popstate', debounced.cancel); 14689 */ 14690function debounce(func, wait, options) { 14691 var lastArgs, 14692 lastThis, 14693 maxWait, 14694 result, 14695 timerId, 14696 lastCallTime, 14697 lastInvokeTime = 0, 14698 leading = false, 14699 maxing = false, 14700 trailing = true; 14701 14702 if (typeof func != 'function') { 14703 throw new TypeError(FUNC_ERROR_TEXT); 14704 } 14705 wait = toNumber(wait) || 0; 14706 if (isObject(options)) { 14707 leading = !!options.leading; 14708 maxing = 'maxWait' in options; 14709 maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait; 14710 trailing = 'trailing' in options ? !!options.trailing : trailing; 14711 } 14712 14713 function invokeFunc(time) { 14714 var args = lastArgs, 14715 thisArg = lastThis; 14716 14717 lastArgs = lastThis = undefined; 14718 lastInvokeTime = time; 14719 result = func.apply(thisArg, args); 14720 return result; 14721 } 14722 14723 function leadingEdge(time) { 14724 // Reset any `maxWait` timer. 14725 lastInvokeTime = time; 14726 // Start the timer for the trailing edge. 14727 timerId = setTimeout(timerExpired, wait); 14728 // Invoke the leading edge. 14729 return leading ? invokeFunc(time) : result; 14730 } 14731 14732 function remainingWait(time) { 14733 var timeSinceLastCall = time - lastCallTime, 14734 timeSinceLastInvoke = time - lastInvokeTime, 14735 timeWaiting = wait - timeSinceLastCall; 14736 14737 return maxing 14738 ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) 14739 : timeWaiting; 14740 } 14741 14742 function shouldInvoke(time) { 14743 var timeSinceLastCall = time - lastCallTime, 14744 timeSinceLastInvoke = time - lastInvokeTime; 14745 14746 // Either this is the first call, activity has stopped and we're at the 14747 // trailing edge, the system time has gone backwards and we're treating 14748 // it as the trailing edge, or we've hit the `maxWait` limit. 14749 return (lastCallTime === undefined || (timeSinceLastCall >= wait) || 14750 (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait)); 14751 } 14752 14753 function timerExpired() { 14754 var time = now(); 14755 if (shouldInvoke(time)) { 14756 return trailingEdge(time); 14757 } 14758 // Restart the timer. 14759 timerId = setTimeout(timerExpired, remainingWait(time)); 14760 } 14761 14762 function trailingEdge(time) { 14763 timerId = undefined; 14764 14765 // Only invoke if we have `lastArgs` which means `func` has been 14766 // debounced at least once. 14767 if (trailing && lastArgs) { 14768 return invokeFunc(time); 14769 } 14770 lastArgs = lastThis = undefined; 14771 return result; 14772 } 14773 14774 function cancel() { 14775 if (timerId !== undefined) { 14776 clearTimeout(timerId); 14777 } 14778 lastInvokeTime = 0; 14779 lastArgs = lastCallTime = lastThis = timerId = undefined; 14780 } 14781 14782 function flush() { 14783 return timerId === undefined ? result : trailingEdge(now()); 14784 } 14785 14786 function debounced() { 14787 var time = now(), 14788 isInvoking = shouldInvoke(time); 14789 14790 lastArgs = arguments; 14791 lastThis = this; 14792 lastCallTime = time; 14793 14794 if (isInvoking) { 14795 if (timerId === undefined) { 14796 return leadingEdge(lastCallTime); 14797 } 14798 if (maxing) { 14799 // Handle invocations in a tight loop. 14800 timerId = setTimeout(timerExpired, wait); 14801 return invokeFunc(lastCallTime); 14802 } 14803 } 14804 if (timerId === undefined) { 14805 timerId = setTimeout(timerExpired, wait); 14806 } 14807 return result; 14808 } 14809 debounced.cancel = cancel; 14810 debounced.flush = flush; 14811 return debounced; 14812} 14813 14814module.exports = debounce; 14815 14816 14817/***/ }), 14818/* 234 */ 14819/***/ (function(module, exports, __webpack_require__) { 14820 14821var root = __webpack_require__(4); 14822 14823/** 14824 * Gets the timestamp of the number of milliseconds that have elapsed since 14825 * the Unix epoch (1 January 1970 00:00:00 UTC). 14826 * 14827 * @static 14828 * @memberOf _ 14829 * @since 2.4.0 14830 * @category Date 14831 * @returns {number} Returns the timestamp. 14832 * @example 14833 * 14834 * _.defer(function(stamp) { 14835 * console.log(_.now() - stamp); 14836 * }, _.now()); 14837 * // => Logs the number of milliseconds it took for the deferred invocation. 14838 */ 14839var now = function() { 14840 return root.Date.now(); 14841}; 14842 14843module.exports = now; 14844 14845 14846/***/ }), 14847/* 235 */ 14848/***/ (function(module, exports, __webpack_require__) { 14849 14850"use strict"; 14851 14852 14853var _interopRequireDefault = __webpack_require__(0); 14854 14855var _typeof2 = _interopRequireDefault(__webpack_require__(15)); 14856 14857Object.defineProperty(exports, "__esModule", { 14858 value: true 14859}); 14860exports.setStyle = setStyle; 14861exports.getStyle = getStyle; 14862exports.getProperty = getProperty; 14863exports.matchSelector = matchSelector; 14864exports.getQuerySelector = getQuerySelector; 14865exports.getValidDocument = getValidDocument; 14866exports.queryDocument = queryDocument; 14867exports.elementContains = elementContains;
14868exports.isSiblingNode = isSiblingNode; 14869exports.getChildElements = getChildElements; 14870exports.getSiblingElements = getSiblingElements; 14871exports.getRefType = getRefType; 14872exports.getClosestElement = void 0; 14873 14874var _shared = __webpack_require__(3); 14875/* eslint-env browser */ 14876 14877 14878var ELEMENT_MATCHES = _shared.IX2BrowserSupport.ELEMENT_MATCHES; 14879var _shared$IX2EngineCons = _shared.IX2EngineConstants, 14880 IX2_ID_DELIMITER = _shared$IX2EngineCons.IX2_ID_DELIMITER, 14881 HTML_ELEMENT = _shared$IX2EngineCons.HTML_ELEMENT, 14882 PLAIN_OBJECT = _shared$IX2EngineCons.PLAIN_OBJECT, 14883 WF_PAGE = _shared$IX2EngineCons.WF_PAGE; 14884 14885function setStyle(element, prop, value) { 14886 element.style[prop] = value; 14887} 14888 14889function getStyle(element, prop) { 14890 return element.style[prop]; 14891} 14892 14893function getProperty(element, prop) { 14894 return element[prop]; 14895} 14896 14897function matchSelector(selector) { 14898 return function (element) { 14899 return element[ELEMENT_MATCHES](selector); 14900 }; 14901} 14902 14903function getQuerySelector(_ref) { 14904 var id = _ref.id, 14905 selector = _ref.selector; 14906 14907 if (id) { 14908 var nodeId = id; 14909 14910 if (id.indexOf(IX2_ID_DELIMITER) !== -1) { 14911 var pair = id.split(IX2_ID_DELIMITER); 14912 var pageId = pair[0]; 14913 nodeId = pair[1]; // Short circuit query if we're on the wrong page 14914 14915 if (pageId !== document.documentElement.getAttribute(WF_PAGE)) { 14916 return null; 14917 } 14918 } 14919 14920 return "[data-w-id^=\"".concat(nodeId, "\"]"); 14921 } 14922 14923 return selector; 14924} 14925 14926function getValidDocument(pageId) { 14927 if (pageId == null || pageId === document.documentElement.getAttribute(WF_PAGE)) { 14928 return document; 14929 } 14930 14931 return null; 14932} 14933 14934function queryDocument(baseSelector, descendantSelector) { 14935 return Array.prototype.slice.call(document.querySelectorAll(descendantSelector ? baseSelector + ' ' + descendantSelector : baseSelector)); 14936} 14937 14938function elementContains(parent, child) { 14939 return parent.contains(child); 14940} 14941 14942function isSiblingNode(a, b) { 14943 return a !== b && a.parentNode === b.parentNode; 14944} 14945 14946function getChildElements() { 14947 var sourceElements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; 14948 var elements = []; 14949 14950 for (var i = 0, length = sourceElements.length; i < length; i++) { 14951 var children = sourceElements[i].children; 14952 var childCount = children.length; 14953 14954 if (!childCount) { 14955 continue; 14956 } 14957 14958 for (var j = 0; j < childCount; j++) { 14959 elements.push(children[j]); 14960 } 14961 } 14962 14963 return elements; 14964} 14965 14966function getSiblingElements() { 14967 var sourceElements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; 14968 var elements = []; 14969 var parentCache = []; 14970 14971 for (var i = 0, length = sourceElements.length; i < length; i++) { 14972 var parentNode = sourceElements[i].parentNode; 14973 14974 if (!parentNode || !parentNode.children || !parentNode.children.length) { 14975 continue; 14976 } 14977 14978 if (parentCache.indexOf(parentNode) !== -1) { 14979 continue; 14980 } 14981 14982 parentCache.push(parentNode); 14983 var el = parentNode.firstElementChild; 14984 14985 while (el != null) { 14986 if (sourceElements.indexOf(el) === -1) { 14987 elements.push(el); 14988 } 14989 14990 el = el.nextElementSibling; 14991 } 14992 } 14993 14994 return elements; 14995} // eslint complains about prettier's formatting 14996 14997/* eslint-disable indent */ 14998 14999 15000var getClosestElement = Element.prototype.closest ? function (element, selector) { 15001 if (!document.documentElement.contains(element)) { 15002 return null; 15003 } 15004 15005 return element.closest(selector); 15006} : function (element, selector) { 15007 if (!document.documentElement.contains(element)) { 15008 return null; 15009 } 15010 15011 var el = element; 15012 15013 do { 15014 if (el[ELEMENT_MATCHES] && el[ELEMENT_MATCHES](selector)) { 15015 return el; 15016 } 15017 15018 el = el.parentNode; 15019 } while (el != null); 15020 15021 return null; 15022}; 15023/* eslint-enable indent */ 15024 15025exports.getClosestElement = getClosestElement; 15026 15027function getRefType(ref) { 15028 if (ref != null && (0, _typeof2["default"])(ref) == 'object') { 15029 return ref instanceof Element ? HTML_ELEMENT : PLAIN_OBJECT; 15030 } 15031 15032 return null; 15033} 15034 15035/***/ }), 15036/* 236 */ 15037/***/ (function(module, exports, __webpack_require__) { 15038 15039"use strict"; 15040 15041 15042var _interopRequireDefault2 = __webpack_require__(0); 15043 15044var _defineProperty2 = _interopRequireDefault2(__webpack_require__(14)); 15045 15046var _typeof2 = _interopRequireDefault2(__webpack_require__(15)); 15047 15048var _default2; 15049 15050var _interopRequireDefault = __webpack_require__(0); 15051 15052Object.defineProperty(exports, "__esModule", { 15053 value: true 15054}); 15055exports["default"] = void 0; 15056 15057var _objectSpread2 = _interopRequireDefault(__webpack_require__(26)); 15058 15059var _flow = _interopRequireDefault(__webpack_require__(237)); 15060 15061var _get = _interopRequireDefault(__webpack_require__(23)); 15062 15063var _clamp = _interopRequireDefault(__webpack_require__(256)); 15064 15065var _IX2VanillaEngine = __webpack_require__(93); 15066 15067var _IX2EngineActions = __webpack_require__(51); 15068 15069var _shared = __webpack_require__(3); 15070/* eslint-env browser */ 15071 15072 15073var _shared$IX2EngineEven = _shared.IX2EngineEventTypes, 15074 MOUSE_CLICK = _shared$IX2EngineEven.MOUSE_CLICK, 15075 MOUSE_SECOND_CLICK = _shared$IX2EngineEven.MOUSE_SECOND_CLICK, 15076 MOUSE_DOWN = _shared$IX2EngineEven.MOUSE_DOWN, 15077 MOUSE_UP = _shared$IX2EngineEven.MOUSE_UP, 15078 MOUSE_OVER = _shared$IX2EngineEven.MOUSE_OVER, 15079 MOUSE_OUT = _shared$IX2EngineEven.MOUSE_OUT, 15080 DROPDOWN_CLOSE = _shared$IX2EngineEven.DROPDOWN_CLOSE, 15081 DROPDOWN_OPEN = _shared$IX2EngineEven.DROPDOWN_OPEN, 15082 SLIDER_ACTIVE = _shared$IX2EngineEven.SLIDER_ACTIVE, 15083 SLIDER_INACTIVE = _shared$IX2EngineEven.SLIDER_INACTIVE, 15084 TAB_ACTIVE = _shared$IX2EngineEven.TAB_ACTIVE, 15085 TAB_INACTIVE = _shared$IX2EngineEven.TAB_INACTIVE, 15086 NAVBAR_CLOSE = _shared$IX2EngineEven.NAVBAR_CLOSE, 15087 NAVBAR_OPEN = _shared$IX2EngineEven.NAVBAR_OPEN, 15088 MOUSE_MOVE = _shared$IX2EngineEven.MOUSE_MOVE, 15089 PAGE_SCROLL_DOWN = _shared$IX2EngineEven.PAGE_SCROLL_DOWN, 15090 SCROLL_INTO_VIEW = _shared$IX2EngineEven.SCROLL_INTO_VIEW, 15091 COMPONENT_ACTIVE = _shared$IX2EngineEven.COMPONENT_ACTIVE, 15092 COMPONENT_INACTIVE = _shared$IX2EngineEven.COMPONENT_INACTIVE,
15093 SCROLL_OUT_OF_VIEW = _shared$IX2EngineEven.SCROLL_OUT_OF_VIEW, 15094 PAGE_SCROLL_UP = _shared$IX2EngineEven.PAGE_SCROLL_UP, 15095 SCROLLING_IN_VIEW = _shared$IX2EngineEven.SCROLLING_IN_VIEW, 15096 PAGE_FINISH = _shared$IX2EngineEven.PAGE_FINISH, 15097 ECOMMERCE_CART_CLOSE = _shared$IX2EngineEven.ECOMMERCE_CART_CLOSE, 15098 ECOMMERCE_CART_OPEN = _shared$IX2EngineEven.ECOMMERCE_CART_OPEN, 15099 PAGE_START = _shared$IX2EngineEven.PAGE_START, 15100 PAGE_SCROLL = _shared$IX2EngineEven.PAGE_SCROLL, 15101 ELEMENT = _shared$IX2EngineEven.ELEMENT, 15102 VIEWPORT = _shared$IX2EngineEven.VIEWPORT, 15103 PAGE = _shared$IX2EngineEven.PAGE; 15104var COLON_DELIMITER = _shared.IX2EngineConstants.COLON_DELIMITER; 15105var getNamespacedParameterId = _shared.IX2VanillaUtils.getNamespacedParameterId; 15106 15107var composableFilter = function composableFilter(predicate) { 15108 return function (options) { 15109 if ((0, _typeof2["default"])(options) === 'object' && predicate(options)) { 15110 return true; 15111 } 15112 15113 return options; 15114 }; 15115}; 15116 15117var isElement = composableFilter(function (_ref) { 15118 var element = _ref.element, 15119 nativeEvent = _ref.nativeEvent; 15120 return element === nativeEvent.target; 15121}); 15122var containsElement = composableFilter(function (_ref2) { 15123 var element = _ref2.element, 15124 nativeEvent = _ref2.nativeEvent; 15125 return element.contains(nativeEvent.target); 15126}); 15127var isOrContainsElement = (0, _flow["default"])([isElement, containsElement]); 15128 15129var getAutoStopEvent = function getAutoStopEvent(store, autoStopEventId) { 15130 if (autoStopEventId) { 15131 var _store$getState = store.getState(), 15132 ixData = _store$getState.ixData; 15133 15134 var events = ixData.events; 15135 var eventToStop = events[autoStopEventId]; 15136 15137 if (eventToStop && !AUTO_STOP_DISABLED_EVENTS[eventToStop.eventTypeId]) { 15138 return eventToStop; 15139 } 15140 } 15141 15142 return null; 15143}; 15144 15145var hasAutoStopEvent = function hasAutoStopEvent(_ref3) { 15146 var store = _ref3.store, 15147 event = _ref3.event; 15148 var eventAction = event.action; 15149 var autoStopEventId = eventAction.config.autoStopEventId; 15150 return Boolean(getAutoStopEvent(store, autoStopEventId)); 15151}; 15152 15153var actionGroupCreator = function actionGroupCreator(_ref4, state) { 15154 var store = _ref4.store, 15155 event = _ref4.event, 15156 element = _ref4.element, 15157 eventStateKey = _ref4.eventStateKey; 15158 var eventAction = event.action, 15159 eventId = event.id; 15160 var _eventAction$config = eventAction.config, 15161 actionListId = _eventAction$config.actionListId, 15162 autoStopEventId = _eventAction$config.autoStopEventId; 15163 var eventToStop = getAutoStopEvent(store, autoStopEventId); 15164 15165 if (eventToStop) { 15166 (0, _IX2VanillaEngine.stopActionGroup)({ 15167 store: store, 15168 eventId: autoStopEventId, 15169 eventTarget: element, 15170 eventStateKey: autoStopEventId + COLON_DELIMITER + eventStateKey.split(COLON_DELIMITER)[1], 15171 actionListId: (0, _get["default"])(eventToStop, 'action.config.actionListId') 15172 }); 15173 } 15174 15175 (0, _IX2VanillaEngine.stopActionGroup)({ 15176 store: store, 15177 eventId: eventId, 15178 eventTarget: element, 15179 eventStateKey: eventStateKey, 15180 actionListId: actionListId 15181 }); 15182 (0, _IX2VanillaEngine.startActionGroup)({ 15183 store: store, 15184 eventId: eventId, 15185 eventTarget: element, 15186 eventStateKey: eventStateKey, 15187 actionListId: actionListId 15188 }); 15189 return state; 15190}; 15191 15192var withFilter = function withFilter(filter, handler) { 15193 return function (options, state) { 15194 return filter(options, state) === true ? handler(options, state) : state; 15195 }; 15196}; 15197 15198var baseActionGroupOptions = { 15199 handler: withFilter(isOrContainsElement, actionGroupCreator) 15200}; 15201var baseActivityActionGroupOptions = (0, _objectSpread2["default"])({}, baseActionGroupOptions, { 15202 types: [COMPONENT_ACTIVE, COMPONENT_INACTIVE].join(' ') 15203}); 15204var CONTINUOUS_SCROLL_EVENT_TYPES = [{ 15205 target: window, 15206 types: 'resize orientationchange', 15207 throttle: true 15208}, { 15209 target: document, 15210 types: 'scroll wheel readystatechange IX2_PAGE_UPDATE', 15211 throttle: true 15212}]; 15213var TRIGGERED_SCROLL_EVENT_TYPES = [{ 15214 target: document, 15215 types: 'scroll wheel', 15216 throttle: true 15217}]; 15218var MOUSE_OVER_OUT_TYPES = 'mouseover mouseout'; 15219var baseScrollActionGroupOptions = { 15220 types: TRIGGERED_SCROLL_EVENT_TYPES 15221}; 15222var AUTO_STOP_DISABLED_EVENTS = { 15223 PAGE_START: PAGE_START, 15224 PAGE_FINISH: PAGE_FINISH 15225}; 15226 15227var getDocumentState = function () { 15228 var supportOffset = window.pageXOffset !== undefined; 15229 var isCSS1Compat = document.compatMode === 'CSS1Compat'; 15230 var rootElement = isCSS1Compat ? document.documentElement : document.body; 15231 return function () { 15232 return { 15233 scrollLeft: supportOffset ? window.pageXOffset : rootElement.scrollLeft, 15234 scrollTop: supportOffset ? window.pageYOffset : rootElement.scrollTop, 15235 // required to remove elasticity in Safari scrolling. 15236 stiffScrollTop: (0, _clamp["default"])(supportOffset ? window.pageYOffset : rootElement.scrollTop, 0, rootElement.scrollHeight - window.innerHeight), 15237 scrollWidth: rootElement.scrollWidth, 15238 scrollHeight: rootElement.scrollHeight, 15239 clientWidth: rootElement.clientWidth, 15240 clientHeight: rootElement.clientHeight, 15241 innerWidth: window.innerWidth, 15242 innerHeight: window.innerHeight 15243 }; 15244 }; 15245}(); 15246 15247var areBoxesIntersecting = function areBoxesIntersecting(a, b) { 15248 return !(a.left > b.right || a.right < b.left || a.top > b.bottom || a.bottom < b.top); 15249}; 15250 15251var isElementHovered = function isElementHovered(_ref5) { 15252 var element = _ref5.element, 15253 nativeEvent = _ref5.nativeEvent; 15254 var type = nativeEvent.type, 15255 target = nativeEvent.target, 15256 relatedTarget = nativeEvent.relatedTarget; 15257 var containsTarget = element.contains(target); 15258 15259 if (type === 'mouseover' && containsTarget) { 15260 return true; 15261 } 15262 15263 var containsRelated = element.contains(relatedTarget); 15264 15265 if (type === 'mouseout' && containsTarget && containsRelated) { 15266 return true; 15267 } 15268 15269 return false;
15270}; 15271 15272var isElementVisible = function isElementVisible(options) { 15273 var element = options.element, 15274 config = options.event.config; 15275 15276 var _getDocumentState = getDocumentState(), 15277 clientWidth = _getDocumentState.clientWidth, 15278 clientHeight = _getDocumentState.clientHeight; 15279 15280 var scrollOffsetValue = config.scrollOffsetValue; 15281 var scrollOffsetUnit = config.scrollOffsetUnit; 15282 var isPX = scrollOffsetUnit === 'PX'; 15283 var offsetPadding = isPX ? scrollOffsetValue : clientHeight * (scrollOffsetValue || 0) / 100; 15284 return areBoxesIntersecting(element.getBoundingClientRect(), { 15285 left: 0, 15286 top: offsetPadding, 15287 right: clientWidth, 15288 bottom: clientHeight - offsetPadding 15289 }); 15290}; 15291 15292var whenComponentActiveChange = function whenComponentActiveChange(handler) { 15293 return function (options, oldState) { 15294 var type = options.nativeEvent.type; // prettier-ignore 15295 15296 var isActive = [COMPONENT_ACTIVE, COMPONENT_INACTIVE].indexOf(type) !== -1 ? type === COMPONENT_ACTIVE : oldState.isActive; 15297 var newState = (0, _objectSpread2["default"])({}, oldState, { 15298 isActive: isActive 15299 }); 15300 15301 if (!oldState || newState.isActive !== oldState.isActive) { 15302 return handler(options, newState) || newState; 15303 } 15304 15305 return newState; 15306 }; 15307}; 15308 15309var whenElementHoverChange = function whenElementHoverChange(handler) { 15310 return function (options, oldState) { 15311 var newState = { 15312 elementHovered: isElementHovered(options) 15313 }; 15314 15315 if (oldState ? newState.elementHovered !== oldState.elementHovered : newState.elementHovered) { 15316 return handler(options, newState) || newState; 15317 } 15318 15319 return newState; 15320 }; 15321}; 15322 15323var whenElementVisibiltyChange = function whenElementVisibiltyChange(handler) { 15324 return function (options, oldState) { 15325 var newState = (0, _objectSpread2["default"])({}, oldState, { 15326 elementVisible: isElementVisible(options) 15327 }); 15328 15329 if (oldState ? newState.elementVisible !== oldState.elementVisible : newState.elementVisible) { 15330 return handler(options, newState) || newState; 15331 } 15332 15333 return newState; 15334 }; 15335}; 15336 15337var whenScrollDirectionChange = function whenScrollDirectionChange(handler) { 15338 return function (options) { 15339 var oldState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; 15340 15341 var _getDocumentState2 = getDocumentState(), 15342 scrollTop = _getDocumentState2.stiffScrollTop, 15343 scrollHeight = _getDocumentState2.scrollHeight, 15344 innerHeight = _getDocumentState2.innerHeight; 15345 15346 var _options$event = options.event, 15347 config = _options$event.config, 15348 eventTypeId = _options$event.eventTypeId; 15349 var scrollOffsetValue = config.scrollOffsetValue, 15350 scrollOffsetUnit = config.scrollOffsetUnit; 15351 var isPX = scrollOffsetUnit === 'PX'; 15352 var scrollHeightBounds = scrollHeight - innerHeight; // percent top since innerHeight may change for mobile devices which also changes the scrollTop value. 15353 15354 var percentTop = Number((scrollTop / scrollHeightBounds).toFixed(2)); // no state change 15355 15356 if (oldState && oldState.percentTop === percentTop) { 15357 return oldState; 15358 } 15359 15360 var scrollTopPadding = (isPX ? scrollOffsetValue : innerHeight * (scrollOffsetValue || 0) / 100) / scrollHeightBounds; 15361 var scrollingDown; 15362 var scrollDirectionChanged; 15363 var anchorTop = 0; 15364 15365 if (oldState) { 15366 scrollingDown = percentTop > oldState.percentTop; 15367 scrollDirectionChanged = oldState.scrollingDown !== scrollingDown; 15368 anchorTop = scrollDirectionChanged ? percentTop : oldState.anchorTop; 15369 } 15370 15371 var inBounds = eventTypeId === PAGE_SCROLL_DOWN ? percentTop >= anchorTop + scrollTopPadding : percentTop <= anchorTop - scrollTopPadding; 15372 var newState = (0, _objectSpread2["default"])({}, oldState, { 15373 percentTop: percentTop, 15374 inBounds: inBounds, 15375 anchorTop: anchorTop, 15376 scrollingDown: scrollingDown 15377 }); 15378 15379 if (oldState && inBounds && (scrollDirectionChanged || newState.inBounds !== oldState.inBounds)) { 15380 return handler(options, newState) || newState; 15381 } 15382 15383 return newState; 15384 }; 15385}; 15386 15387var pointIntersects = function pointIntersects(point, rect) { 15388 return point.left > rect.left && point.left < rect.right && point.top > rect.top && point.top < rect.bottom; 15389}; 15390 15391var whenPageLoadFinish = function whenPageLoadFinish(handler) { 15392 return function (options, oldState) { 15393 var newState = { 15394 finished: document.readyState === 'complete' 15395 }; 15396 15397 if (newState.finished && !(oldState && oldState.finshed)) { 15398 handler(options); 15399 } 15400 15401 return newState; 15402 }; 15403}; 15404 15405var whenPageLoadStart = function whenPageLoadStart(handler) { 15406 return function (options, oldState) { 15407 var newState = { 15408 started: true 15409 }; 15410 15411 if (!oldState) { 15412 handler(options); 15413 } 15414 15415 return newState; 15416 }; 15417}; 15418 15419var whenClickCountChange = function whenClickCountChange(handler) { 15420 return function (options) { 15421 var oldState = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { 15422 clickCount: 0 15423 }; 15424 var newState = { 15425 clickCount: oldState.clickCount % 2 + 1 15426 }; 15427 15428 if (newState.clickCount !== oldState.clickCount) { 15429 return handler(options, newState) || newState; 15430 } 15431 15432 return newState; 15433 }; 15434}; 15435 15436var getComponentActiveOptions = function getComponentActiveOptions() { 15437 var allowNestedChildrenEvents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; 15438 return (0, _objectSpread2["default"])({}, baseActivityActionGroupOptions, { 15439 handler: withFilter(allowNestedChildrenEvents ? isOrContainsElement : isElement, whenComponentActiveChange(function (options, state) { 15440 return state.isActive ? baseActionGroupOptions.handler(options, state) : state; 15441 })) 15442 }); 15443}; 15444 15445var getComponentInactiveOptions = function getComponentInactiveOptions() { 15446 var allowNestedChildrenEvents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; 15447 return (0, _objectSpread2["default"])({}, baseActivityActionGroupOptions, { 15448 handler: withFilter(allowNestedChildrenEvents ? isOrContainsElement : isElement, whenComponentActiveChange(function (options, state) { 15449 return !state.isActive ? baseActionGroupOptions.handler(options, state) : state; 15450 })) 15451 }); 15452}; 15453 15454var scrollIntoOutOfViewOptions = (0, _objectSpread2["default"])({}, baseScrollActionGroupOptions, { 15455 handler: whenElementVisibiltyChange(function (options, state) { 15456 var elementVisible = state.elementVisible; 15457 var event = options.event, 15458 store = options.store; 15459 15460 var _store$getState2 = store.getState(), 15461 ixData = _store$getState2.ixData; 15462 15463 var events = ixData.events; // trigger the handler only once if only one of SCROLL_INTO or SCROLL_OUT_OF event types 15464 // are registered. 15465 15466 if (!events[event.action.config.autoStopEventId] && state.triggered) { 15467 return state; 15468 } 15469 15470 if (event.eventTypeId === SCROLL_INTO_VIEW === elementVisible) { 15471 actionGroupCreator(options); 15472 return (0, _objectSpread2["default"])({}, state, { 15473 triggered: true 15474 }); 15475 } else { 15476 return state; 15477 } 15478 }) 15479}); 15480var MOUSE_OUT_ROUND_THRESHOLD = 0.05; 15481 15482var _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, { 15483 types: 'ecommerce-cart-open', 15484 handler: withFilter(isOrContainsElement, actionGroupCreator) 15485}), (0, _defineProperty2["default"])(_default2, ECOMMERCE_CART_CLOSE, { 15486 types: 'ecommerce-cart-close', 15487 handler: withFilter(isOrContainsElement, actionGroupCreator) 15488}), (0, _defineProperty2["default"])(_default2, MOUSE_CLICK, { 15489 types: 'click', 15490 handler: withFilter(isOrContainsElement, whenClickCountChange(function (options, _ref6) { 15491 var clickCount = _ref6.clickCount; 15492 15493 if (hasAutoStopEvent(options)) { 15494 clickCount === 1 && actionGroupCreator(options); 15495 } else { 15496 actionGroupCreator(options); 15497 } 15498 })) 15499}), (0, _defineProperty2["default"])(_default2, MOUSE_SECOND_CLICK, { 15500 types: 'click', 15501 handler: withFilter(isOrContainsElement, whenClickCountChange(function (options, _ref7) { 15502 var clickCount = _ref7.clickCount; 15503 15504 if (clickCount === 2) { 15505 actionGroupCreator(options); 15506 } 15507 })) 15508}), (0, _defineProperty2["default"])(_default2, MOUSE_DOWN, (0, _objectSpread2["default"])({}, baseActionGroupOptions, { 15509 types: 'mousedown' 15510})), (0, _defineProperty2["default"])(_default2, MOUSE_UP, (0, _objectSpread2["default"])({}, baseActionGroupOptions, { 15511 types: 'mouseup' 15512})), (0, _defineProperty2["default"])(_default2, MOUSE_OVER, { 15513 types: MOUSE_OVER_OUT_TYPES, 15514 handler: withFilter(isOrContainsElement, whenElementHoverChange(function (options, state) { 15515 if (state.elementHovered) { 15516 actionGroupCreator(options); 15517 } 15518 })) 15519}), (0, _defineProperty2["default"])(_default2, MOUSE_OUT, { 15520 types: MOUSE_OVER_OUT_TYPES, 15521 handler: withFilter(isOrContainsElement, whenElementHoverChange(function (options, state) { 15522 if (!state.elementHovered) { 15523 actionGroupCreator(options); 15524 } 15525 })) 15526}), (0, _defineProperty2["default"])(_default2, MOUSE_MOVE, { 15527 types: 'mousemove mouseout scroll', 15528 handler: function handler(_ref8) { 15529 var store = _ref8.store, 15530 element = _ref8.element, 15531 eventConfig = _ref8.eventConfig, 15532 nativeEvent = _ref8.nativeEvent, 15533 eventStateKey = _ref8.eventStateKey; 15534 var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { 15535 clientX: 0, 15536 clientY: 0, 15537 pageX: 0, 15538 pageY: 0 15539 }; 15540 var basedOn = eventConfig.basedOn, 15541 selectedAxis = eventConfig.selectedAxis, 15542 continuousParameterGroupId = eventConfig.continuousParameterGroupId, 15543 reverse = eventConfig.reverse, 15544 _eventConfig$restingS = eventConfig.restingState, 15545 restingState = _eventConfig$restingS === void 0 ? 0 : _eventConfig$restingS; 15546 var _nativeEvent$clientX = nativeEvent.clientX, 15547 clientX = _nativeEvent$clientX === void 0 ? state.clientX : _nativeEvent$clientX, 15548 _nativeEvent$clientY = nativeEvent.clientY, 15549 clientY = _nativeEvent$clientY === void 0 ? state.clientY : _nativeEvent$clientY,
15550 _nativeEvent$pageX = nativeEvent.pageX, 15551 pageX = _nativeEvent$pageX === void 0 ? state.pageX : _nativeEvent$pageX, 15552 _nativeEvent$pageY = nativeEvent.pageY, 15553 pageY = _nativeEvent$pageY === void 0 ? state.pageY : _nativeEvent$pageY; 15554 var isXAxis = selectedAxis === 'X_AXIS'; 15555 var isMouseOut = nativeEvent.type === 'mouseout'; 15556 var value = restingState / 100; 15557 var namespacedParameterId = continuousParameterGroupId; 15558 var elementHovered = false; 15559 15560 switch (basedOn) { 15561 case VIEWPORT: 15562 { 15563 value = isXAxis ? Math.min(clientX, window.innerWidth) / window.innerWidth : Math.min(clientY, window.innerHeight) / window.innerHeight; 15564 break; 15565 } 15566 15567 case PAGE: 15568 { 15569 var _getDocumentState3 = getDocumentState(), 15570 scrollLeft = _getDocumentState3.scrollLeft, 15571 scrollTop = _getDocumentState3.scrollTop, 15572 scrollWidth = _getDocumentState3.scrollWidth, 15573 scrollHeight = _getDocumentState3.scrollHeight; 15574 15575 value = isXAxis ? Math.min(scrollLeft + pageX, scrollWidth) / scrollWidth : Math.min(scrollTop + pageY, scrollHeight) / scrollHeight; 15576 break; 15577 } 15578 15579 case ELEMENT: 15580 default: 15581 { 15582 namespacedParameterId = getNamespacedParameterId(eventStateKey, continuousParameterGroupId); 15583 var isMouseEvent = nativeEvent.type.indexOf('mouse') === 0; // Use isOrContainsElement for mouse events since they are fired from the target 15584 15585 if (isMouseEvent && isOrContainsElement({ 15586 element: element, 15587 nativeEvent: nativeEvent 15588 }) !== true) { 15589 break; 15590 } 15591 15592 var rect = element.getBoundingClientRect(); 15593 var left = rect.left, 15594 top = rect.top, 15595 width = rect.width, 15596 height = rect.height; // Otherwise we'll need to calculate the mouse position from the previous handler state 15597 // against the target element's rect 15598 15599 if (!isMouseEvent && !pointIntersects({ 15600 left: clientX, 15601 top: clientY 15602 }, rect)) { 15603 break; 15604 } 15605 15606 elementHovered = true; 15607 value = isXAxis ? (clientX - left) / width : (clientY - top) / height; 15608 break; 15609 } 15610 } // cover case where the event is a mouse out, but the value is not quite at 100% 15611 15612 15613 if (isMouseOut && (value > 1 - MOUSE_OUT_ROUND_THRESHOLD || value < MOUSE_OUT_ROUND_THRESHOLD)) { 15614 value = Math.round(value); 15615 } // Only update based on element if the mouse is moving over or has just left the element 15616 15617 15618 if (basedOn !== ELEMENT || elementHovered || elementHovered !== state.elementHovered) { 15619 value = reverse ? 1 - value : value; 15620 store.dispatch((0, _IX2EngineActions.parameterChanged)(namespacedParameterId, value)); 15621 } 15622 15623 return { 15624 elementHovered: elementHovered, 15625 clientX: clientX, 15626 clientY: clientY, 15627 pageX: pageX, 15628 pageY: pageY 15629 }; 15630 } 15631}), (0, _defineProperty2["default"])(_default2, PAGE_SCROLL, { 15632 types: CONTINUOUS_SCROLL_EVENT_TYPES, 15633 handler: function handler(_ref9) { 15634 var store = _ref9.store, 15635 eventConfig = _ref9.eventConfig; 15636 var continuousParameterGroupId = eventConfig.continuousParameterGroupId, 15637 reverse = eventConfig.reverse; 15638 15639 var _getDocumentState4 = getDocumentState(), 15640 scrollTop = _getDocumentState4.scrollTop, 15641 scrollHeight = _getDocumentState4.scrollHeight, 15642 clientHeight = _getDocumentState4.clientHeight; 15643 15644 var value = scrollTop / (scrollHeight - clientHeight); 15645 value = reverse ? 1 - value : value; 15646 store.dispatch((0, _IX2EngineActions.parameterChanged)(continuousParameterGroupId, value)); 15647 } 15648}), (0, _defineProperty2["default"])(_default2, SCROLLING_IN_VIEW, { 15649 types: CONTINUOUS_SCROLL_EVENT_TYPES, 15650 handler: function handler(_ref10) { 15651 var element = _ref10.element, 15652 store = _ref10.store, 15653 eventConfig = _ref10.eventConfig, 15654 eventStateKey = _ref10.eventStateKey; 15655 var state = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : { 15656 scrollPercent: 0 15657 }; 15658 15659 var _getDocumentState5 = getDocumentState(), 15660 scrollLeft = _getDocumentState5.scrollLeft, 15661 scrollTop = _getDocumentState5.scrollTop, 15662 scrollWidth = _getDocumentState5.scrollWidth, 15663 scrollHeight = _getDocumentState5.scrollHeight, 15664 visibleHeight = _getDocumentState5.clientHeight; 15665 15666 var basedOn = eventConfig.basedOn, 15667 selectedAxis = eventConfig.selectedAxis, 15668 continuousParameterGroupId = eventConfig.continuousParameterGroupId, 15669 startsEntering = eventConfig.startsEntering, 15670 startsExiting = eventConfig.startsExiting, 15671 addEndOffset = eventConfig.addEndOffset, 15672 addStartOffset = eventConfig.addStartOffset, 15673 _eventConfig$addOffse = eventConfig.addOffsetValue, 15674 addOffsetValue = _eventConfig$addOffse === void 0 ? 0 : _eventConfig$addOffse, 15675 _eventConfig$endOffse = eventConfig.endOffsetValue, 15676 endOffsetValue = _eventConfig$endOffse === void 0 ? 0 : _eventConfig$endOffse; 15677 var isXAxis = selectedAxis === 'X_AXIS'; 15678 15679 if (basedOn === VIEWPORT) { 15680 var value = isXAxis ? scrollLeft / scrollWidth : scrollTop / scrollHeight; 15681 15682 if (value !== state.scrollPercent) { 15683 store.dispatch((0, _IX2EngineActions.parameterChanged)(continuousParameterGroupId, value)); 15684 } 15685 15686 return { 15687 scrollPercent: value 15688 }; 15689 } else { 15690 var namespacedParameterId = getNamespacedParameterId(eventStateKey, continuousParameterGroupId); 15691 var elementRect = element.getBoundingClientRect(); 15692 var offsetStartPerc = (addStartOffset ? addOffsetValue : 0) / 100; 15693 var offsetEndPerc = (addEndOffset ? endOffsetValue : 0) / 100; // flip the offset percentages depending on start / exit type 15694 15695 offsetStartPerc = startsEntering ? offsetStartPerc : 1 - offsetStartPerc; 15696 offsetEndPerc = startsExiting ? offsetEndPerc : 1 - offsetEndPerc; 15697 var offsetElementTop = elementRect.top + Math.min(elementRect.height * offsetStartPerc, visibleHeight); 15698 var offsetElementBottom = elementRect.top + elementRect.height * offsetEndPerc; 15699 var offsetHeight = offsetElementBottom - offsetElementTop; 15700 var fixedScrollHeight = Math.min(visibleHeight + offsetHeight, scrollHeight); 15701 var fixedScrollTop = Math.min(Math.max(0, visibleHeight - offsetElementTop), fixedScrollHeight); 15702 var fixedScrollPerc = fixedScrollTop / fixedScrollHeight; 15703 15704 if (fixedScrollPerc !== state.scrollPercent) { 15705 store.dispatch((0, _IX2EngineActions.parameterChanged)(namespacedParameterId, fixedScrollPerc)); 15706 } 15707 15708 return { 15709 scrollPercent: fixedScrollPerc 15710 }; 15711 } 15712 } 15713}), (0, _defineProperty2["default"])(_default2, SCROLL_INTO_VIEW, scrollIntoOutOfViewOptions), (0, _defineProperty2["default"])(_default2, SCROLL_OUT_OF_V
15713IEW, scrollIntoOutOfViewOptions), (0, _defineProperty2["default"])(_default2, PAGE_SCROLL_DOWN, (0, _objectSpread2["default"])({}, baseScrollActionGroupOptions, { 15714 handler: whenScrollDirectionChange(function (options, state) { 15715 if (state.scrollingDown) { 15716 actionGroupCreator(options); 15717 } 15718 }) 15719})), (0, _defineProperty2["default"])(_default2, PAGE_SCROLL_UP, (0, _objectSpread2["default"])({}, baseScrollActionGroupOptions, { 15720 handler: whenScrollDirectionChange(function (options, state) { 15721 if (!state.scrollingDown) { 15722 actionGroupCreator(options); 15723 } 15724 }) 15725})), (0, _defineProperty2["default"])(_default2, PAGE_FINISH, { 15726 types: 'readystatechange IX2_PAGE_UPDATE', 15727 handler: withFilter(isElement, whenPageLoadFinish(actionGroupCreator)) 15728}), (0, _defineProperty2["default"])(_default2, PAGE_START, { 15729 types: 'readystatechange IX2_PAGE_UPDATE', 15730 handler: withFilter(isElement, whenPageLoadStart(actionGroupCreator)) 15731}), _default2); 15732 15733exports["default"] = _default; 15734 15735/***/ }), 15736/* 237 */ 15737/***/ (function(module, exports, __webpack_require__) { 15738
vendor: 4,742 bytes, lines 15739-15918
15739var createFlow = __webpack_require__(238); 15740 15741/** 15742 * Creates a function that returns the result of invoking the given functions 15743 * with the `this` binding of the created function, where each successive 15744 * invocation is supplied the return value of the previous. 15745 * 15746 * @static 15747 * @memberOf _ 15748 * @since 3.0.0 15749 * @category Util 15750 * @param {...(Function|Function[])} [funcs] The functions to invoke. 15751 * @returns {Function} Returns the new composite function. 15752 * @see _.flowRight 15753 * @example 15754 * 15755 * function square(n) { 15756 * return n * n; 15757 * } 15758 * 15759 * var addSquare = _.flow([_.add, square]); 15760 * addSquare(1, 2); 15761 * // => 9 15762 */ 15763var flow = createFlow(); 15764 15765module.exports = flow; 15766 15767 15768/***/ }), 15769/* 238 */ 15770/***/ (function(module, exports, __webpack_require__) { 15771 15772var LodashWrapper = __webpack_require__(52), 15773 flatRest = __webpack_require__(239), 15774 getData = __webpack_require__(98), 15775 getFuncName = __webpack_require__(99), 15776 isArray = __webpack_require__(1), 15777 isLaziable = __webpack_require__(252); 15778 15779/** Error message constants. */ 15780var FUNC_ERROR_TEXT = 'Expected a function'; 15781 15782/** Used to compose bitmasks for function metadata. */ 15783var WRAP_CURRY_FLAG = 8, 15784 WRAP_PARTIAL_FLAG = 32, 15785 WRAP_ARY_FLAG = 128, 15786 WRAP_REARG_FLAG = 256; 15787 15788/** 15789 * Creates a `_.flow` or `_.flowRight` function. 15790 * 15791 * @private 15792 * @param {boolean} [fromRight] Specify iterating from right to left. 15793 * @returns {Function} Returns the new flow function. 15794 */ 15795function createFlow(fromRight) { 15796 return flatRest(function(funcs) { 15797 var length = funcs.length, 15798 index = length, 15799 prereq = LodashWrapper.prototype.thru; 15800 15801 if (fromRight) { 15802 funcs.reverse(); 15803 } 15804 while (index--) { 15805 var func = funcs[index]; 15806 if (typeof func != 'function') { 15807 throw new TypeError(FUNC_ERROR_TEXT); 15808 } 15809 if (prereq && !wrapper && getFuncName(func) == 'wrapper') { 15810 var wrapper = new LodashWrapper([], true); 15811 } 15812 } 15813 index = wrapper ? index : length; 15814 while (++index < length) { 15815 func = funcs[index]; 15816 15817 var funcName = getFuncName(func), 15818 data = funcName == 'wrapper' ? getData(func) : undefined; 15819 15820 if (data && isLaziable(data[0]) && 15821 data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) && 15822 !data[4].length && data[9] == 1 15823 ) { 15824 wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]); 15825 } else { 15826 wrapper = (func.length == 1 && isLaziable(func)) 15827 ? wrapper[funcName]() 15828 : wrapper.thru(func); 15829 } 15830 } 15831 return function() { 15832 var args = arguments, 15833 value = args[0]; 15834 15835 if (wrapper && args.length == 1 && isArray(value)) { 15836 return wrapper.plant(value).value(); 15837 } 15838 var index = 0, 15839 result = length ? funcs[index].apply(this, args) : value; 15840 15841 while (++index < length) { 15842 result = funcs[index].call(this, result); 15843 } 15844 return result; 15845 }; 15846 }); 15847} 15848 15849module.exports = createFlow; 15850 15851 15852/***/ }), 15853/* 239 */ 15854/***/ (function(module, exports, __webpack_require__) { 15855 15856var flatten = __webpack_require__(240), 15857 overRest = __webpack_require__(243), 15858 setToString = __webpack_require__(245); 15859 15860/** 15861 * A specialized version of `baseRest` which flattens the rest array. 15862 * 15863 * @private 15864 * @param {Function} func The function to apply a rest parameter to. 15865 * @returns {Function} Returns the new function. 15866 */ 15867function flatRest(func) { 15868 return setToString(overRest(func, undefined, flatten), func + ''); 15869} 15870 15871module.exports = flatRest; 15872 15873 15874/***/ }), 15875/* 240 */ 15876/***/ (function(module, exports, __webpack_require__) { 15877 15878var baseFlatten = __webpack_require__(241); 15879 15880/** 15881 * Flattens `array` a single level deep. 15882 * 15883 * @static 15884 * @memberOf _ 15885 * @since 0.1.0 15886 * @category Array 15887 * @param {Array} array The array to flatten. 15888 * @returns {Array} Returns the new flattened array. 15889 * @example 15890 * 15891 * _.flatten([1, [2, [3, [4]], 5]]); 15892 * // => [1, 2, [3, [4]], 5] 15893 */ 15894function flatten(array) { 15895 var length = array == null ? 0 : array.length; 15896 return length ? baseFlatten(array, 1) : []; 15897} 15898 15899module.exports = flatten; 15900 15901 15902/***/ }), 15903/* 241 */ 15904/***/ (function(module, exports, __webpack_require__) { 15905 15906var arrayPush = __webpack_require__(36), 15907 isFlattenable = __webpack_require__(242); 15908 15909/** 15910 * The base implementation of `_.flatten` with support for restricting flattening. 15911 * 15912 * @private 15913 * @param {Array} array The array to flatten. 15914 * @param {number} depth The maximum recursion depth. 15915 * @param {boolean} [predicate=isFlattenable] The function invoked per iteration. 15916 * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks. 15917 * @param {Array} [result=[]] The initial result value. 15918 * @returns {Array} Returns the new flattened array.
vendor: 4,490 bytes, lines 15919-16090
15919 */ 15920function baseFlatten(array, depth, predicate, isStrict, result) { 15921 var index = -1, 15922 length = array.length; 15923 15924 predicate || (predicate = isFlattenable); 15925 result || (result = []); 15926 15927 while (++index < length) { 15928 var value = array[index]; 15929 if (depth > 0 && predicate(value)) { 15930 if (depth > 1) { 15931 // Recursively flatten arrays (susceptible to call stack limits). 15932 baseFlatten(value, depth - 1, predicate, isStrict, result); 15933 } else { 15934 arrayPush(result, value); 15935 } 15936 } else if (!isStrict) { 15937 result[result.length] = value; 15938 } 15939 } 15940 return result; 15941} 15942 15943module.exports = baseFlatten; 15944 15945 15946/***/ }), 15947/* 242 */ 15948/***/ (function(module, exports, __webpack_require__) { 15949 15950var Symbol = __webpack_require__(11), 15951 isArguments = __webpack_require__(22), 15952 isArray = __webpack_require__(1); 15953 15954/** Built-in value references. */ 15955var spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined; 15956 15957/** 15958 * Checks if `value` is a flattenable `arguments` object or array. 15959 * 15960 * @private 15961 * @param {*} value The value to check. 15962 * @returns {boolean} Returns `true` if `value` is flattenable, else `false`. 15963 */ 15964function isFlattenable(value) { 15965 return isArray(value) || isArguments(value) || 15966 !!(spreadableSymbol && value && value[spreadableSymbol]); 15967} 15968 15969module.exports = isFlattenable; 15970 15971 15972/***/ }), 15973/* 243 */ 15974/***/ (function(module, exports, __webpack_require__) { 15975 15976var apply = __webpack_require__(244); 15977 15978/* Built-in method references for those with the same name as other `lodash` methods. */ 15979var nativeMax = Math.max; 15980 15981/** 15982 * A specialized version of `baseRest` which transforms the rest array. 15983 * 15984 * @private 15985 * @param {Function} func The function to apply a rest parameter to. 15986 * @param {number} [start=func.length-1] The start position of the rest parameter. 15987 * @param {Function} transform The rest array transform. 15988 * @returns {Function} Returns the new function. 15989 */ 15990function overRest(func, start, transform) { 15991 start = nativeMax(start === undefined ? (func.length - 1) : start, 0); 15992 return function() { 15993 var args = arguments, 15994 index = -1, 15995 length = nativeMax(args.length - start, 0), 15996 array = Array(length); 15997 15998 while (++index < length) { 15999 array[index] = args[start + index]; 16000 } 16001 index = -1; 16002 var otherArgs = Array(start + 1); 16003 while (++index < start) { 16004 otherArgs[index] = args[index]; 16005 } 16006 otherArgs[start] = transform(array); 16007 return apply(func, this, otherArgs); 16008 }; 16009} 16010 16011module.exports = overRest; 16012 16013 16014/***/ }), 16015/* 244 */ 16016/***/ (function(module, exports) { 16017 16018/** 16019 * A faster alternative to `Function#apply`, this function invokes `func` 16020 * with the `this` binding of `thisArg` and the arguments of `args`. 16021 * 16022 * @private 16023 * @param {Function} func The function to invoke. 16024 * @param {*} thisArg The `this` binding of `func`. 16025 * @param {Array} args The arguments to invoke `func` with. 16026 * @returns {*} Returns the result of `func`. 16027 */ 16028function apply(func, thisArg, args) { 16029 switch (args.length) { 16030 case 0: return func.call(thisArg); 16031 case 1: return func.call(thisArg, args[0]); 16032 case 2: return func.call(thisArg, args[0], args[1]); 16033 case 3: return func.call(thisArg, args[0], args[1], args[2]); 16034 } 16035 return func.apply(thisArg, args); 16036} 16037 16038module.exports = apply; 16039 16040 16041/***/ }), 16042/* 245 */ 16043/***/ (function(module, exports, __webpack_require__) { 16044 16045var baseSetToString = __webpack_require__(246), 16046 shortOut = __webpack_require__(248); 16047 16048/** 16049 * Sets the `toString` method of `func` to return `string`. 16050 * 16051 * @private 16052 * @param {Function} func The function to modify. 16053 * @param {Function} string The `toString` result. 16054 * @returns {Function} Returns `func`. 16055 */ 16056var setToString = shortOut(baseSetToString); 16057 16058module.exports = setToString; 16059 16060 16061/***/ }), 16062/* 246 */ 16063/***/ (function(module, exports, __webpack_require__) { 16064 16065var constant = __webpack_require__(247), 16066 defineProperty = __webpack_require__(95), 16067 identity = __webpack_require__(46); 16068 16069/** 16070 * The base implementation of `setToString` without support for hot loop shorting. 16071 * 16072 * @private 16073 * @param {Function} func The function to modify. 16074 * @param {Function} string The `toString` result. 16075 * @returns {Function} Returns `func`. 16076 */ 16077var baseSetToString = !defineProperty ? identity : function(func, string) { 16078 return defineProperty(func, 'toString', { 16079 'configurable': true, 16080 'enumerable': false, 16081 'value': constant(string), 16082 'writable': true 16083 }); 16084}; 16085 16086module.exports = baseSetToString; 16087 16088 16089/***/ }), 16090/* 247 */
vendor: 7,231 bytes, lines 16091-16324
16091/***/ (function(module, exports) { 16092 16093/** 16094 * Creates a function that returns `value`. 16095 * 16096 * @static 16097 * @memberOf _ 16098 * @since 2.4.0 16099 * @category Util 16100 * @param {*} value The value to return from the new function. 16101 * @returns {Function} Returns the new constant function. 16102 * @example 16103 * 16104 * var objects = _.times(2, _.constant({ 'a': 1 })); 16105 * 16106 * console.log(objects); 16107 * // => [{ 'a': 1 }, { 'a': 1 }] 16108 * 16109 * console.log(objects[0] === objects[1]); 16110 * // => true 16111 */ 16112function constant(value) { 16113 return function() { 16114 return value; 16115 }; 16116} 16117 16118module.exports = constant; 16119 16120 16121/***/ }), 16122/* 248 */ 16123/***/ (function(module, exports) { 16124 16125/** Used to detect hot functions by number of calls within a span of milliseconds. */ 16126var HOT_COUNT = 800, 16127 HOT_SPAN = 16; 16128 16129/* Built-in method references for those with the same name as other `lodash` methods. */ 16130var nativeNow = Date.now; 16131 16132/** 16133 * Creates a function that'll short out and invoke `identity` instead 16134 * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN` 16135 * milliseconds. 16136 * 16137 * @private 16138 * @param {Function} func The function to restrict. 16139 * @returns {Function} Returns the new shortable function. 16140 */ 16141function shortOut(func) { 16142 var count = 0, 16143 lastCalled = 0; 16144 16145 return function() { 16146 var stamp = nativeNow(), 16147 remaining = HOT_SPAN - (stamp - lastCalled); 16148 16149 lastCalled = stamp; 16150 if (remaining > 0) { 16151 if (++count >= HOT_COUNT) { 16152 return arguments[0]; 16153 } 16154 } else { 16155 count = 0; 16156 } 16157 return func.apply(undefined, arguments); 16158 }; 16159} 16160 16161module.exports = shortOut; 16162 16163 16164/***/ }), 16165/* 249 */ 16166/***/ (function(module, exports, __webpack_require__) { 16167 16168var WeakMap = __webpack_require__(77); 16169 16170/** Used to store function metadata. */ 16171var metaMap = WeakMap && new WeakMap; 16172 16173module.exports = metaMap; 16174 16175 16176/***/ }), 16177/* 250 */ 16178/***/ (function(module, exports) { 16179 16180/** 16181 * This method returns `undefined`. 16182 * 16183 * @static 16184 * @memberOf _ 16185 * @since 2.3.0 16186 * @category Util 16187 * @example 16188 * 16189 * _.times(2, _.noop); 16190 * // => [undefined, undefined] 16191 */ 16192function noop() { 16193 // No operation performed. 16194} 16195 16196module.exports = noop; 16197 16198 16199/***/ }), 16200/* 251 */ 16201/***/ (function(module, exports) { 16202 16203/** Used to lookup unminified function names. */ 16204var realNames = {}; 16205 16206module.exports = realNames; 16207 16208 16209/***/ }), 16210/* 252 */ 16211/***/ (function(module, exports, __webpack_require__) { 16212 16213var LazyWrapper = __webpack_require__(54), 16214 getData = __webpack_require__(98), 16215 getFuncName = __webpack_require__(99), 16216 lodash = __webpack_require__(253); 16217 16218/** 16219 * Checks if `func` has a lazy counterpart. 16220 * 16221 * @private 16222 * @param {Function} func The function to check. 16223 * @returns {boolean} Returns `true` if `func` has a lazy counterpart, 16224 * else `false`. 16225 */ 16226function isLaziable(func) { 16227 var funcName = getFuncName(func), 16228 other = lodash[funcName]; 16229 16230 if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) { 16231 return false; 16232 } 16233 if (func === other) { 16234 return true; 16235 } 16236 var data = getData(other); 16237 return !!data && func === data[0]; 16238} 16239 16240module.exports = isLaziable; 16241 16242 16243/***/ }), 16244/* 253 */ 16245/***/ (function(module, exports, __webpack_require__) { 16246 16247var LazyWrapper = __webpack_require__(54), 16248 LodashWrapper = __webpack_require__(52), 16249 baseLodash = __webpack_require__(53), 16250 isArray = __webpack_require__(1), 16251 isObjectLike = __webpack_require__(8), 16252 wrapperClone = __webpack_require__(254); 16253 16254/** Used for built-in method references. */ 16255var objectProto = Object.prototype; 16256 16257/** Used to check objects for own properties. */ 16258var hasOwnProperty = objectProto.hasOwnProperty; 16259 16260/** 16261 * Creates a `lodash` object which wraps `value` to enable implicit method 16262 * chain sequences. Methods that operate on and return arrays, collections, 16263 * and functions can be chained together. Methods that retrieve a single value 16264 * or may return a primitive value will automatically end the chain sequence 16265 * and return the unwrapped value. Otherwise, the value must be unwrapped 16266 * with `_#value`. 16267 * 16268 * Explicit chain sequences, which must be unwrapped with `_#value`, may be 16269 * enabled using `_.chain`. 16270 * 16271 * The execution of chained methods is lazy, that is, it's deferred until 16272 * `_#value` is implicitly or explicitly called. 16273 * 16274 * Lazy evaluation allows several methods to support shortcut fusion. 16275 * Shortcut fusion is an optimization to merge iteratee calls; this avoids 16276 * the creation of intermediate arrays and can greatly reduce the number of 16277 * iteratee executions. Sections of a chain sequence qualify for shortcut 16278 * fusion if the section is applied to an array and iteratees accept only 16279 * one argument. The heuristic for whether a section qualifies for shortcut 16280 * fusion is subject to change. 16281 * 16282 * Chaining is supported in custom builds as long as the `_#value` method is 16283 * directly or indirectly included in the build. 16284 * 16285 * In addition to lodash methods, wrappers have `Array` and `String` methods. 16286 * 16287 * The wrapper `Array` methods are: 16288 * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift` 16289 * 16290 * The wrapper `String` methods are: 16291 * `replace` and `split` 16292 * 16293 * The wrapper methods that support shortcut fusion are: 16294 * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`, 16295 * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`, 16296 * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray` 16297 * 16298 * The chainable wrapper methods are: 16299 * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`, 16300 * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`, 16301 * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`, 16302 * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`, 16303 * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`, 16304 * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`, 16305 * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`, 16306 * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`, 16307 * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`, 16308 * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`, 16309 * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`, 16310 * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`, 16311 * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`, 16312 * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`, 16313 * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`, 16314 * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`, 16315 * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`, 16316 * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`, 16317 * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`, 16318 * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`, 16319 * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`, 16320 * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`, 16321 * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`, 16322 * `zipObject`, `zipObjectDeep`, and `zipWith` 16323 * 16324 * The wrapper methods that are **not** chainable by default are:
16325 * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`, 16326 * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`, 16327 * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`, 16328 * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`, 16329 * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`, 16330 * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`, 16331 * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`, 16332 * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`, 16333 * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`, 16334 * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`, 16335 * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`, 16336 * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`, 16337 * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`, 16338 * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`, 16339 * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`, 16340 * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`, 16341 * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`, 16342 * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`, 16343 * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`, 16344 * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`, 16345 * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`, 16346 * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`, 16347 * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`, 16348 * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`, 16349 * `upperFirst`, `value`, and `words` 16350 * 16351 * @name _ 16352 * @constructor 16353 * @category Seq 16354 * @param {*} value The value to wrap in a `lodash` instance. 16355 * @returns {Object} Returns the new `lodash` wrapper instance. 16356 * @example 16357 * 16358 * function square(n) { 16359 * return n * n; 16360 * } 16361 * 16362 * var wrapped = _([1, 2, 3]); 16363 * 16364 * // Returns an unwrapped value. 16365 * wrapped.reduce(_.add); 16366 * // => 6 16367 * 16368 * // Returns a wrapped value. 16369 * var squares = wrapped.map(square); 16370 * 16371 * _.isArray(squares); 16372 * // => false 16373 * 16374 * _.isArray(squares.value()); 16375 * // => true 16376 */ 16377function lodash(value) { 16378 if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) { 16379 if (value instanceof LodashWrapper) { 16380 return value; 16381 } 16382 if (hasOwnProperty.call(value, '__wrapped__')) { 16383 return wrapperClone(value); 16384 } 16385 } 16386 return new LodashWrapper(value); 16387} 16388 16389// Ensure wrappers are instances of `baseLodash`. 16390lodash.prototype = baseLodash.prototype; 16391lodash.prototype.constructor = lodash; 16392 16393module.exports = lodash; 16394 16395 16396/***/ }), 16397/* 254 */ 16398/***/ (function(module, exports, __webpack_require__) { 16399 16400var LazyWrapper = __webpack_require__(54), 16401 LodashWrapper = __webpack_require__(52), 16402 copyArray = __webpack_require__(255); 16403 16404/** 16405 * Creates a clone of `wrapper`. 16406 * 16407 * @private 16408 * @param {Object} wrapper The wrapper to clone. 16409 * @returns {Object} Returns the cloned wrapper. 16410 */ 16411function wrapperClone(wrapper) { 16412 if (wrapper instanceof LazyWrapper) { 16413 return wrapper.clone(); 16414 } 16415 var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__); 16416 result.__actions__ = copyArray(wrapper.__actions__); 16417 result.__index__ = wrapper.__index__; 16418 result.__values__ = wrapper.__values__; 16419 return result; 16420} 16421 16422module.exports = wrapperClone; 16423 16424 16425/***/ }), 16426/* 255 */ 16427/***/ (function(module, exports) { 16428 16429/** 16430 * Copies the values of `source` to `array`. 16431 * 16432 * @private 16433 * @param {Array} source The array to copy values from. 16434 * @param {Array} [array=[]] The array to copy values to. 16435 * @returns {Array} Returns `array`. 16436 */ 16437function copyArray(source, array) { 16438 var index = -1, 16439 length = source.length; 16440 16441 array || (array = Array(length)); 16442 while (++index < length) { 16443 array[index] = source[index]; 16444 } 16445 return array; 16446} 16447 16448module.exports = copyArray; 16449 16450 16451/***/ }), 16452/* 256 */ 16453/***/ (function(module, exports, __webpack_require__) { 16454 16455var baseClamp = __webpack_require__(96), 16456 toNumber = __webpack_require__(48); 16457 16458/** 16459 * Clamps `number` within the inclusive `lower` and `upper` bounds. 16460 * 16461 * @static 16462 * @memberOf _ 16463 * @since 4.0.0 16464 * @category Number 16465 * @param {number} number The number to clamp. 16466 * @param {number} [lower] The lower bound. 16467 * @param {number} upper The upper bound. 16468 * @returns {number} Returns the clamped number. 16469 * @example 16470 * 16471 * _.clamp(-10, -5, 5); 16472 * // => -5 16473 * 16474 * _.clamp(10, -5, 5); 16475 * // => 5 16476 */ 16477function clamp(number, lower, upper) { 16478 if (upper === undefined) { 16479 upper = lower; 16480 lower = undefined; 16481 } 16482 if (upper !== undefined) { 16483 upper = toNumber(upper); 16484 upper = upper === upper ? upper : 0; 16485 } 16486 if (lower !== undefined) { 16487 lower = toNumber(lower); 16488 lower = lower === lower ? lower : 0; 16489 } 16490 return baseClamp(toNumber(number), lower, upper); 16491} 16492 16493module.exports = clamp; 16494 16495 16496/***/ }), 16497/* 257 */ 16498/***/ (function(module, exports, __webpack_require__) { 16499 16500"use strict"; 16501 // @wf-will-never-add-flow-to-this-file 16502 16503/* eslint-disable */ 16504 16505/** 16506 * Webflow: Auto-select links to current page or section 16507 */ 16508 16509var Webflow = __webpack_require__(2); 16510 16511Webflow.define('links', module.exports = function ($, _) { 16512 var api = {}; 16513 var $win = $(window); 16514 var designer; 16515 var inApp = Webflow.env(); 16516 var location = window.location; 16517 var tempLink = document.createElement('a'); 16518 var linkCurrent = 'w--current'; 16519 var indexPage = /index\.(html|php)$/; 16520 var dirList = /\/$/; 16521 var anchors; 16522 var slug; // ----------------------------------- 16523 // Module methods 16524 16525 api.ready = api.design = api.preview = init; // ----------------------------------- 16526 // Private methods 16527
16528 function init() { 16529 designer = inApp && Webflow.env('design'); 16530 slug = Webflow.env('slug') || location.pathname || ''; // Reset scroll listener, init anchors 16531 16532 Webflow.scroll.off(scroll); 16533 anchors = []; // Test all links for a selectable href 16534 16535 var links = document.links; 16536 16537 for (var i = 0; i < links.length; ++i) { 16538 select(links[i]); 16539 } // Listen for scroll if any anchors exist 16540 16541 16542 if (anchors.length) { 16543 Webflow.scroll.on(scroll); 16544 scroll(); 16545 } 16546 } 16547 16548 function select(link) { 16549 var href = designer && link.getAttribute('href-disabled') || link.getAttribute('href'); 16550 tempLink.href = href; // Ignore any hrefs with a colon to safely avoid all uri schemes 16551 16552 if (href.indexOf(':') >= 0) { 16553 return; 16554 } 16555 16556 var $link = $(link); // Check for all links with hash (eg (this-host)(/this-path)#section) to this page 16557 16558 if (tempLink.hash.length > 1 && tempLink.host + tempLink.pathname === location.host + location.pathname) { 16559 // Ignore any hrefs with Google Translate type hash 16560 // Example: jQuery can't parse $('#googtrans(en|es)') 16561 // https://forum.webflow.com/t/dropdown-menus-not-working-on-site/87140 16562 if (!/^#[a-zA-Z0-9\-\_]+$/.test(tempLink.hash)) { 16563 return; 16564 } 16565 16566 var $section = $(tempLink.hash); 16567 $section.length && anchors.push({ 16568 link: $link, 16569 sec: $section, 16570 active: false 16571 }); 16572 return; 16573 } // Ignore empty # links 16574 16575 16576 if (href === '#' || href === '') { 16577 return; 16578 } // Determine whether the link should be selected 16579 16580 16581 var match = tempLink.href === location.href || href === slug || indexPage.test(href) && dirList.test(slug); 16582 setClass($link, linkCurrent, match); 16583 } 16584 16585 function scroll() { 16586 var viewTop = $win.scrollTop(); 16587 var viewHeight = $win.height(); // Check each anchor for a section in view 16588 16589 _.each(anchors, function (anchor) { 16590 var $link = anchor.link; 16591 var $section = anchor.sec; 16592 var top = $section.offset().top; 16593 var height = $section.outerHeight(); 16594 var offset = viewHeight * 0.5; 16595 var active = $section.is(':visible') && top + height - offset >= viewTop && top + offset <= viewTop + viewHeight; 16596 16597 if (anchor.active === active) { 16598 return; 16599 } 16600 16601 anchor.active = active; 16602 setClass($link, linkCurrent, active); 16603 }); 16604 } 16605 16606 function setClass($elem, className, add) { 16607 var exists = $elem.hasClass(className); 16608 16609 if (add && exists) { 16610 return; 16611 } 16612 16613 if (!add && !exists) { 16614 return; 16615 } 16616 16617 add ? $elem.addClass(className) : $elem.removeClass(className); 16618 } // Export module 16619 16620 16621 return api; 16622}); 16623 16624/***/ }), 16625/* 258 */ 16626/***/ (function(module, exports, __webpack_require__) { 16627 16628"use strict"; 16629 // @wf-will-never-add-flow-to-this-file 16630 16631/* eslint-disable */ 16632 16633/** 16634 * Webflow: Smooth scroll 16635 */ 16636 16637var Webflow = __webpack_require__(2); 16638 16639Webflow.define('scroll', module.exports = function ($) { 16640 var $doc = $(document); 16641 var win = window; 16642 var loc = win.location; 16643 var history = inIframe() ? null : win.history; 16644 var validHash = /^[a-zA-Z0-9][\w:.-]*$/; 16645 16646 function inIframe() { 16647 try { 16648 return Boolean(win.frameElement); 16649 } catch (e) { 16650 return true; 16651 } 16652 } 16653 16654 function ready() { 16655 // The current page url without the hash part. 16656 var locHref = loc.href.split('#')[0]; // When clicking on a link, check if it links to another part of the page 16657 16658 $doc.on('click', 'a', function (e) { 16659 if (Webflow.env('design')) { 16660 return; 16661 } // Ignore links being used by jQuery mobile 16662 16663 16664 if (window.$.mobile && $(e.currentTarget).hasClass('ui-link')) { 16665 return; 16666 } // Ignore empty # links 16667 16668 16669 if (this.getAttribute('href') === '#') { 16670 e.preventDefault(); 16671 return; 16672 } // The href property always contains the full url so we can compare 16673 // with the documentâs location to only target links on this page. 16674 16675 16676 var parts = this.href.split('#'); 16677 var hash = parts[0] === locHref ? parts[1] : null; 16678 16679 if (hash) { 16680 findEl(hash, e); 16681 } 16682 }); 16683 } 16684 16685 function findEl(hash, e) { 16686 if (!validHash.test(hash)) { 16687 return; 16688 } 16689 16690 var el = $('#' + hash); 16691 16692 if (!el.length) { 16693 return; 16694 } 16695 16696 if (e) { 16697 e.preventDefault(); 16698 e.stopPropagation(); 16699 } // Push new history state 16700 16701 16702 if (loc.hash !== hash && history && history.pushState && // Navigation breaks Chrome when the protocol is `file:`. 16703 !(Webflow.env.chrome && loc.protocol === 'file:')) { 16704 var oldHash = history.state && history.state.hash; 16705 16706 if (oldHash !== hash) { 16707 history.pushState({ 16708 hash: hash 16709 }, '', '#' + hash); 16710 } 16711 } // If a fixed header exists, offset for the height 16712 16713 16714 var rootTag = Webflow.env('editor') ? '.w-editor-body' : 'body'; 16715 var header = $('header, ' + rootTag + ' > .header, ' + rootTag + ' > .w-nav:not([data-no-scroll])'); 16716 var offset = header.css('position') === 'fixed' ? header.outerHeight() : 0; 16717 win.setTimeout(function () { 16718 scroll(el, offset); 16719 }, e ? 0 : 300); 16720 } 16721 16722 function scroll(el, offset) { 16723 var start = $(win).scrollTop(); 16724 var end = el.offset().top - offset; // If specified, scroll so that the element ends up in the middle of the viewport 16725 16726 if (el.data('scroll') === 'mid') { 16727 var available = $(win).height() - offset; 16728 var elHeight = el.outerHeight(); 16729 16730 if (elHeight < available) { 16731 end -= Math.round((available - elHeight) / 2); 16732 } 16733 } 16734 16735 var mult = 1; // Check for custom time multiplier on the body and the element 16736 16737 $('body').add(el).each(function () { 16738 var time = parseFloat($(this).attr('data-scroll-time'), 10); 16739 16740 if (!isNaN(time) && (time === 0 || time > 0)) { 16741 mult = time; 16742 } 16743 }); // Shim for IE8 and below 16744 16745 if (!Date.now) { 16746 Date.now = function () { 16747 return new Date().getTime(); 16748 }; 16749 } 16750 16751 var clock = Date.now(); 16752 16753 var animate = win.requestAnimationFrame || win.mozRequestAnimationFrame || win.webkitRequestAnimationFrame || function (fn) { 16754 win.setTimeout(fn, 15); 16755 }; 16756 16757 var duration = (472.143 * Math.log(Math.abs(start - end) + 125) - 2000) * mult; 16758 16759 var step = function step() {
16760 var elapsed = Date.now() - clock; 16761 win.scroll(0, getY(start, end, elapsed, duration)); 16762 16763 if (elapsed <= duration) { 16764 animate(step); 16765 } 16766 }; 16767 16768 step(); 16769 } 16770 16771 function getY(start, end, elapsed, duration) { 16772 if (elapsed > duration) { 16773 return end; 16774 } 16775 16776 return start + (end - start) * ease(elapsed / duration); 16777 } 16778 16779 function ease(t) { 16780 return t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1; 16781 } // Export module 16782 16783 16784 return { 16785 ready: ready 16786 }; 16787}); 16788 16789/***/ }), 16790/* 259 */ 16791/***/ (function(module, exports, __webpack_require__) { 16792 16793"use strict"; 16794 // @wf-will-never-add-flow-to-this-file 16795 16796/* eslint-disable */ 16797 16798/** 16799 * Webflow: Touch events 16800 */ 16801 16802var Webflow = __webpack_require__(2); 16803 16804Webflow.define('touch', module.exports = function ($) { 16805 var api = {}; 16806 var fallback = !document.addEventListener; 16807 var getSelection = window.getSelection; // Fallback to click events in old IE 16808 16809 if (fallback) { 16810 $.event.special.tap = { 16811 bindType: 'click', 16812 delegateType: 'click' 16813 }; 16814 } 16815 16816 api.init = function (el) { 16817 if (fallback) { 16818 return null; 16819 } 16820 16821 el = typeof el === 'string' ? $(el).get(0) : el; 16822 return el ? new Touch(el) : null; 16823 }; 16824 16825 function Touch(el) { 16826 var active = false; 16827 var dirty = false; 16828 var useTouch = false; 16829 var thresholdX = Math.min(Math.round(window.innerWidth * 0.04), 40); 16830 var startX; 16831 var startY; 16832 var lastX; 16833 el.addEventListener('touchstart', start, false); 16834 el.addEventListener('touchmove', move, false); 16835 el.addEventListener('touchend', end, false); 16836 el.addEventListener('touchcancel', cancel, false); 16837 el.addEventListener('mousedown', start, false); 16838 el.addEventListener('mousemove', move, false); 16839 el.addEventListener('mouseup', end, false); 16840 el.addEventListener('mouseout', cancel, false); 16841 16842 function start(evt) { 16843 // We donât handle multi-touch events yet. 16844 var touches = evt.touches; 16845 16846 if (touches && touches.length > 1) { 16847 return; 16848 } 16849 16850 active = true; 16851 dirty = false; 16852 16853 if (touches) { 16854 useTouch = true; 16855 startX = touches[0].clientX; 16856 startY = touches[0].clientY; 16857 } else { 16858 startX = evt.clientX; 16859 startY = evt.clientY; 16860 } 16861 16862 lastX = startX; 16863 } 16864 16865 function move(evt) { 16866 if (!active) { 16867 return; 16868 } 16869 16870 if (useTouch && evt.type === 'mousemove') { 16871 evt.preventDefault(); 16872 evt.stopPropagation(); 16873 return; 16874 } 16875 16876 var touches = evt.touches; 16877 var x = touches ? touches[0].clientX : evt.clientX; 16878 var y = touches ? touches[0].clientY : evt.clientY; 16879 var velocityX = x - lastX; 16880 lastX = x; // Allow swipes while pointer is down, but prevent them during text selection 16881 16882 if (Math.abs(velocityX) > thresholdX && getSelection && String(getSelection()) === '') { 16883 triggerEvent('swipe', evt, { 16884 direction: velocityX > 0 ? 'right' : 'left' 16885 }); 16886 cancel(); 16887 } // If pointer moves more than 10px flag to cancel tap 16888 16889 16890 if (Math.abs(x - startX) > 10 || Math.abs(y - startY) > 10) { 16891 dirty = true; 16892 } 16893 } 16894 16895 function end(evt) { 16896 if (!active) { 16897 return; 16898 } 16899 16900 active = false; 16901 16902 if (useTouch && evt.type === 'mouseup') { 16903 evt.preventDefault(); 16904 evt.stopPropagation(); 16905 useTouch = false; 16906 return; 16907 } 16908 16909 if (!dirty) { 16910 triggerEvent('tap', evt); 16911 } 16912 } 16913 16914 function cancel() { 16915 active = false; 16916 } 16917 16918 function destroy() { 16919 el.removeEventListener('touchstart', start, false); 16920 el.removeEventListener('touchmove', move, false); 16921 el.removeEventListener('touchend', end, false); 16922 el.removeEventListener('touchcancel', cancel, false); 16923 el.removeEventListener('mousedown', start, false); 16924 el.removeEventListener('mousemove', move, false); 16925 el.removeEventListener('mouseup', end, false); 16926 el.removeEventListener('mouseout', cancel, false); 16927 el = null; 16928 } // Public instance methods 16929 16930 16931 this.destroy = destroy; 16932 } // Wrap native event to supoprt preventdefault + stopPropagation 16933 16934 16935 function triggerEvent(type, evt, data) { 16936 var newEvent = $.Event(type, { 16937 originalEvent: evt 16938 }); 16939 $(evt.target).trigger(newEvent, data); 16940 } // Listen for touch events on all nodes by default. 16941 16942 16943 api.instance = api.init(document); // Export module 16944 16945 return api; 16946}); 16947 16948/***/ }), 16949/* 260 */ 16950/***/ (function(module, exports, __webpack_require__) { 16951 16952"use strict"; 16953 // @wf-will-never-add-flow-to-this-file 16954 16955/* eslint-disable */ 16956 16957/** 16958 * Webflow: Forms 16959 */ 16960 16961var Webflow = __webpack_require__(2); 16962 16963Webflow.define('forms', module.exports = function ($, _) { 16964 var api = {}; 16965 var $doc = $(document); 16966 var $forms; 16967 var loc = window.location; 16968 var retro = window.XDomainRequest && !window.atob; 16969 var namespace = '.w-form'; 16970 var siteId; 16971 var emailField = /e(-)?mail/i; 16972 var emailValue = /^\S+@\S+$/; 16973 var alert = window.alert; 16974 var inApp = Webflow.env(); 16975 var listening; 16976 var formUrl; 16977 var signFileUrl; // MailChimp domains: list-manage.com + mirrors 16978 16979 var chimpRegex = /list-manage[1-9]?.com/i; 16980 16981 var disconnected = _.debounce(function () { 16982 alert('Oops! This page has improperly configured forms. Please contact your website administrator to fix this issue.'); 16983 }, 100); 16984 16985 api.ready = api.design = api.preview = function () { 16986 // Init forms 16987 init(); // Wire document events on published site only once 16988 16989 if (!inApp && !listening) { 16990 addListeners(); 16991 } 16992 }; 16993
16994 function init() { 16995 siteId = $('html').attr('data-wf-site'); 16996 formUrl = "https://webflow.com" + '/api/v1/form/' + siteId; // Work around same-protocol IE XDR limitation - without this IE9 and below forms won't submit 16997 16998 if (retro && formUrl.indexOf("https://webflow.com") >= 0) { 16999 formUrl = formUrl.replace("https://webflow.com", "http://formdata.webflow.com"); 17000 } 17001 17002 signFileUrl = "".concat(formUrl, "/signFile"); 17003 $forms = $(namespace + ' form'); 17004 17005 if (!$forms.length) { 17006 return; 17007 } 17008 17009 $forms.each(build); 17010 } 17011 17012 function build(i, el) { 17013 // Store form state using namespace 17014 var $el = $(el); 17015 var data = $.data(el, namespace); 17016 17017 if (!data) { 17018 data = $.data(el, namespace, { 17019 form: $el 17020 }); 17021 } // data.form 17022 17023 17024 reset(data); 17025 var wrap = $el.closest('div.w-form'); 17026 data.done = wrap.find('> .w-form-done'); 17027 data.fail = wrap.find('> .w-form-fail'); 17028 data.fileUploads = wrap.find('.w-file-upload'); 17029 data.fileUploads.each(function (j) { 17030 initFileUpload(j, data); 17031 }); 17032 var action = data.action = $el.attr('action'); 17033 data.handler = null; 17034 data.redirect = $el.attr('data-redirect'); // MailChimp form 17035 17036 if (chimpRegex.test(action)) { 17037 data.handler = submitMailChimp; 17038 return; 17039 } // Custom form action 17040 17041 17042 if (action) { 17043 return; 17044 } // Webflow forms for hosting accounts 17045 17046 17047 if (siteId) { 17048 data.handler = typeof hostedSubmitWebflow === 'function' ? hostedSubmitWebflow : exportedSubmitWebflow; 17049 return; 17050 } // Alert for disconnected Webflow forms 17051 17052 17053 disconnected(); 17054 } 17055 17056 function addListeners() { 17057 listening = true; // Handle form submission for Webflow forms 17058 17059 $doc.on('submit', namespace + ' form', function (evt) { 17060 var data = $.data(this, namespace); 17061 17062 if (data.handler) { 17063 data.evt = evt; 17064 data.handler(data); 17065 } 17066 }); // handle checked ui for custom checkbox 17067 17068 var CHECKBOX_CLASS_NAME = '.w-checkbox-input'; 17069 var CHECKED_CLASS = 'w--checked'; 17070 $doc.on('change', namespace + ' form input[type="checkbox"]:not(' + CHECKBOX_CLASS_NAME + ')', function (evt) { 17071 $(evt.target).siblings(CHECKBOX_CLASS_NAME).toggleClass(CHECKED_CLASS); 17072 }); 17073 } // Reset data common to all submit handlers 17074 17075 17076 function reset(data) { 17077 var btn = data.btn = data.form.find(':input[type="submit"]'); 17078 data.wait = data.btn.attr('data-wait') || null; 17079 data.success = false; 17080 btn.prop('disabled', false); 17081 data.label && btn.val(data.label); 17082 } // Disable submit button 17083 17084 17085 function disableBtn(data) { 17086 var btn = data.btn; 17087 var wait = data.wait; 17088 btn.prop('disabled', true); // Show wait text and store previous label 17089 17090 if (wait) { 17091 data.label = btn.val(); 17092 btn.val(wait); 17093 } 17094 } // Find form fields, validate, and set value pairs 17095 17096 17097 function findFields(form, result) { 17098 var status = null; 17099 result = result || {}; // The ":input" selector is a jQuery shortcut to select all inputs, selects, textareas 17100 17101 form.find(':input:not([type="submit"]):not([type="file"])').each(function (i, el) { 17102 var field = $(el); 17103 var type = field.attr('type'); 17104 var name = field.attr('data-name') || field.attr('name') || 'Field ' + (i + 1); 17105 var value = field.val(); 17106 17107 if (type === 'checkbox') { 17108 value = field.is(':checked'); 17109 } else if (type === 'radio') { 17110 // Radio group value already processed 17111 if (result[name] === null || typeof result[name] === 'string') { 17112 return; 17113 } 17114 17115 value = form.find('input[name="' + field.attr('name') + '"]:checked').val() || null; 17116 } 17117 17118 if (typeof value === 'string') { 17119 value = $.trim(value); 17120 } 17121 17122 result[name] = value; 17123 status = status || getStatus(field, type, name, value); 17124 }); 17125 return status; 17126 } 17127 17128 function findFileUploads(form) { 17129 var result = {}; 17130 form.find(':input[type="file"]').each(function (i, el) { 17131 var field = $(el); 17132 var name = field.attr('data-name') || field.attr('name') || 'File ' + (i + 1); 17133 var value = field.attr('data-value'); 17134 17135 if (typeof value === 'string') { 17136 value = $.trim(value); 17137 } 17138 17139 result[name] = value; 17140 }); 17141 return result; 17142 } 17143 17144 function getStatus(field, type, name, value) { 17145 var status = null; 17146 17147 if (type === 'password') { 17148 status = 'Passwords cannot be submitted.'; 17149 } else if (field.attr('required')) { 17150 if (!value) { 17151 status = 'Please fill out the required field: ' + name; 17152 } else if (emailField.test(field.attr('type'))) { 17153 if (!emailValue.test(value)) { 17154 status = 'Please enter a valid email address for: ' + name; 17155 } 17156 } 17157 } else if (name === 'g-recaptcha-response' && !value) { 17158 status = 'Please confirm youâre not a robot.'; 17159 } 17160 17161 return status; 17162 } 17163 17164 function exportedSubmitWebflow(data) { 17165 preventDefault(data); 17166 afterSubmit(data); 17167 } // Submit form to MailChimp 17168 17169 17170 function submitMailChimp(data) { 17171 reset(data); 17172 var form = data.form; 17173 var payload = {}; // Skip Ajax submission if http/s mismatch, fallback to POST instead 17174 17175 if (/^https/.test(loc.href) && !/^https/.test(data.action)) { 17176 form.attr('method', 'post'); 17177 return; 17178 } 17179 17180 preventDefault(data); // Find & populate all fields 17181 17182 var status = findFields(form, payload); 17183 17184 if (status) { 17185 return alert(status); 17186 } // Disable submit button 17187 17188 17189 disableBtn(data); // Use special format for MailChimp params 17190 17191 var fullName; 17192 17193 _.each(payload, function (value, key) { 17194 if (emailField.test(key)) { 17195 payload.EMAIL = value; 17196 } 17197 17198 if (/^((full[ _-]?)?name)$/i.test(key)) { 17199 fullName = value; 17200 } 17201 17202 if (/^(first[ _-]?name)$/i.test(key)) { 17203 payload.FNAME = value; 17204 } 17205 17206 if (/^(last[ _-]?name)$/i.test(key)) { 17207 payload.LNAME = value; 17208 } 17209 }); 17210 17211 if (fullName && !payload.FNAME) { 17212 fullName = fullName.split(' '); 17213 payload.FNAME = fullName[0]; 17214 payload.LNAME = payload.LNAME || fullName[1]; 17215 } // Use the (undocumented) MailChimp jsonp api 17216 17217 17218 var url = data.action.replace('/post?', '/post-json?') + '&c=?'; // Add special param to prevent bot signups 17219 17220 var userId = url.indexOf('u=') + 2; 17221 userId = url.substring(userId, url.indexOf('&', userId)); 17222 var listId = url.indexOf('id=') + 3; 17223 listId = url.substring(listId, url.indexOf('&', listId)); 17224 payload['b_' + userId + '_' + listId] = ''; 17225 $.ajax({ 17226 url: url, 17227 data: payload, 17228 dataType: 'jsonp' 17229 }).done(function (resp) { 17230 data.success = resp.result === 'success' || /already/.test(resp.msg); 17231 17232 if (!data.success) { 17233 console.info('MailChimp error: ' + resp.msg); 17234 } 17235 17236 afterSubmit(data); 17237 }).fail(function () { 17238 afterSubmit(data); 17239 }); 17240 } // Common callback which runs after all Ajax submissions 17241 17242 17243 function afterSubmit(data) { 17244 var form = data.form; 17245 var redirect = data.redirect; 17246 var success = data.success; // Redirect to a success url if defined 17247 17248 if (success && redirect) { 17249 Webflow.location(redirect); 17250 return; 17251 } // Show or hide status divs 17252 17253 17254 data.done.toggle(success); 17255 data.fail.toggle(!success); // Hide form on success 17256 17257 form.toggle(!success); // Reset data and enable submit button 17258 17259 reset(data); 17260 } 17261 17262 function preventDefault(data) { 17263 data.evt && data.evt.preventDefault(); 17264 data.evt = null; 17265 } 17266 17267 function initFileUpload(i, form) { 17268 if (!form.fileUploads || !form.fileUploads[i]) { 17269 return; 17270 } 17271 17272 var file; 17273 var $el = $(form.fileUploads[i]); 17274 var $defaultWrap = $el.find('> .w-file-upload-default'); 17275 var $uploadingWrap = $el.find('> .w-file-upload-uploading'); 17276 var $successWrap = $el.find('> .w-file-upload-success'); 17277 var $errorWrap = $el.find('> .w-file-upload-error'); 17278 var $input = $defaultWrap.find('.w-file-upload-input'); 17279 var $label = $defaultWrap.find('.w-file-upload-label'); 17280 var $labelChildren = $label.children(); 17281 var $errorMsgEl = $errorWrap.find('.w-file-upload-error-msg'); 17282 var $fileEl = $successWrap.find('.w-file-upload-file'); 17283 var $removeEl = $successWrap.find('.w-file-remove-link'); 17284 var $fileNameEl = $fileEl.find('.w-file-upload-file-name'); 17285 var sizeErrMsg = $errorMsgEl.attr('data-w-size-error'); 17286 var typeErrMsg = $errorMsgEl.attr('data-w-type-error'); 17287 var genericErrMsg = $errorMsgEl.attr('data-w-generic-error'); 17288 17289 if (!inApp) { 17290 $removeEl.on('click', function () { 17291 $input.removeAttr('data-value'); 17292 $input.val(''); 17293 $fileNameEl.html(''); 17294 $defaultWrap.toggle(true); 17295 $successWrap.toggle(false); 17296 }); 17297 $input.on('change', function (e) { 17298 file = e.target && e.target.files && e.target.files[0]; 17299 17300 if (!file) { 17301 return; 17302 } // Show uploading 17303 17304 17305 $defaultWrap.toggle(false); 17306 $errorWrap.toggle(false); 17307 $uploadingWrap.toggle(true); // Set filename 17308 17309 $fileNameEl.text(file.name); // Disable submit button 17310 17311 if (!isUploading()) { 17312 disableBtn(form); 17313 } 17314 17315 form.fileUploads[i].uploading = true; 17316 signFile(file, afterSign); 17317 }); // Setting input width 1px and height equal label 17318 // This is so the browser required error will show up 17319 17320 var height = $label.outerHeight(); 17321 $input.height(height); 17322 $input.width(1); 17323 } else { 17324 $input.on('click', function (e) { 17325 e.preventDefault(); 17326 }); 17327 $label.on('click', function (e) { 17328 e.preventDefault(); 17329 }); 17330 $labelChildren.on('click', function (e) { 17331 e.preventDefault(); 17332 }); 17333 } 17334 17335 function parseError(err) { 17336 var errorMsg = err.responseJSON && err.responseJSON.msg; 17337 var userError = genericErrMsg; 17338 17339 if (typeof errorMsg === 'string' && errorMsg.indexOf('InvalidFileTypeError') === 0) { 17340 userError = typeErrMsg; 17341 } else if (typeof errorMsg === 'string' && errorMsg.indexOf('MaxFileSizeError') === 0) { 17342 userError = sizeErrMsg; 17343 } 17344 17345 $errorMsgEl.text(userError); 17346 $input.removeAttr('data-value'); 17347 $input.val(''); 17348 $uploadingWrap.toggle(false); 17349 $defaultWrap.toggle(true); 17350 $errorWrap.toggle(true); 17351 form.fileUploads[i].uploading = false;
17352 17353 if (!isUploading()) { 17354 reset(form); 17355 } 17356 } 17357 17358 function afterSign(err, data) { 17359 if (err) { 17360 return parseError(err); 17361 } 17362 17363 var fileName = data.fileName; 17364 var postData = data.postData; 17365 var fileId = data.fileId; 17366 var s3Url = data.s3Url; 17367 $input.attr('data-value', fileId); 17368 uploadS3(s3Url, postData, file, fileName, afterUpload); 17369 } 17370 17371 function afterUpload(err) { 17372 if (err) { 17373 return parseError(err); 17374 } // Show success 17375 17376 17377 $uploadingWrap.toggle(false); 17378 $successWrap.css('display', 'inline-block'); 17379 form.fileUploads[i].uploading = false; 17380 17381 if (!isUploading()) { 17382 reset(form); 17383 } 17384 } 17385 17386 function isUploading() { 17387 var uploads = form.fileUploads && form.fileUploads.toArray() || []; 17388 return uploads.some(function (value) { 17389 return value.uploading; 17390 }); 17391 } 17392 } 17393 17394 function signFile(file, cb) { 17395 var payload = { 17396 name: file.name, 17397 size: file.size 17398 }; 17399 $.ajax({ 17400 type: 'POST', 17401 url: signFileUrl, 17402 data: payload, 17403 dataType: 'json', 17404 crossDomain: true 17405 }).done(function (data) { 17406 cb(null, data); 17407 }).fail(function (err) { 17408 cb(err); 17409 }); 17410 } 17411 17412 function uploadS3(url, data, file, fileName, cb) { 17413 var formData = new FormData(); 17414 17415 for (var k in data) { 17416 formData.append(k, data[k]); 17417 } 17418 17419 formData.append('file', file, fileName); 17420 $.ajax({ 17421 type: 'POST', 17422 url: url, 17423 data: formData, 17424 processData: false, 17425 contentType: false 17426 }).done(function () { 17427 cb(null); 17428 }).fail(function (err) { 17429 cb(err); 17430 }); 17431 } // Export module 17432 17433 17434 return api; 17435}); 17436 17437/***/ }), 17438/* 261 */ 17439/***/ (function(module, exports, __webpack_require__) { 17440 17441"use strict"; 17442 // @wf-will-never-add-flow-to-this-file 17443 17444/* eslint-disable */ 17445 17446/** 17447 * Webflow: Lightbox component 17448 */ 17449 17450var Webflow = __webpack_require__(2); 17451 17452var CONDITION_INVISIBLE_CLASS = 'w-condition-invisible'; 17453var CONDVIS_SELECTOR = '.' + CONDITION_INVISIBLE_CLASS; 17454 17455function withoutConditionallyHidden(items) { 17456 return items.filter(function (item) { 17457 return !isConditionallyHidden(item); 17458 }); 17459} 17460 17461function isConditionallyHidden(item) { 17462 return Boolean(item.$el && item.$el.closest(CONDVIS_SELECTOR).length); 17463} 17464 17465function getPreviousVisibleIndex(start, items) { 17466 for (var i = start; i >= 0; i--) { 17467 if (!isConditionallyHidden(items[i])) { 17468 return i; 17469 } 17470 } 17471 17472 return -1; 17473} 17474 17475function getNextVisibleIndex(start, items) { 17476 for (var i = start; i <= items.length - 1; i++) { 17477 if (!isConditionallyHidden(items[i])) { 17478 return i; 17479 } 17480 } 17481 17482 return -1; 17483} 17484 17485function shouldSetArrowLeftInactive(currentIndex, items) { 17486 return getPreviousVisibleIndex(currentIndex - 1, items) === -1; 17487} 17488 17489function shouldSetArrowRightInactive(currentIndex, items) { 17490 return getNextVisibleIndex(currentIndex + 1, items) === -1; 17491} 17492 17493function createLightbox(window, document, $, container) { 17494 var tram = $.tram; 17495 var isArray = Array.isArray; 17496 var namespace = 'w-lightbox'; 17497 var prefix = namespace + '-'; 17498 var prefixRegex = /(^|\s+)/g; // Array of objects describing items to be displayed. 17499 17500 var items = []; // Index of the currently displayed item. 17501 17502 var currentIndex; // Object holding references to jQuery wrapped nodes. 17503 17504 var $refs; // Instance of Spinner 17505 17506 var spinner; 17507 17508 function lightbox(thing, index) { 17509 items = isArray(thing) ? thing : [thing]; 17510 17511 if (!$refs) { 17512 lightbox.build(); 17513 } 17514 17515 if (withoutConditionallyHidden(items).length > 1) { 17516 $refs.items = $refs.empty; 17517 items.forEach(function (item) { 17518 var $thumbnail = dom('thumbnail'); 17519 var $item = dom('item').append($thumbnail); 17520 17521 if (isConditionallyHidden(item)) { 17522 $item.addClass(CONDITION_INVISIBLE_CLASS); 17523 } 17524 17525 $refs.items = $refs.items.add($item); 17526 loadImage(item.thumbnailUrl || item.url, function ($image) { 17527 if ($image.prop('width') > $image.prop('height')) { 17528 addClass($image, 'wide'); 17529 } else { 17530 addClass($image, 'tall'); 17531 } 17532 17533 $thumbnail.append(addClass($image, 'thumbnail-image')); 17534 }); 17535 }); 17536 $refs.strip.empty().append($refs.items); 17537 addClass($refs.content, 'group'); 17538 } 17539 17540 tram( // Focus the lightbox to receive keyboard events. 17541 removeClass($refs.lightbox, 'hide').trigger('focus')).add('opacity .3s').start({ 17542 opacity: 1 17543 }); // Prevent document from scrolling while lightbox is active. 17544 17545 addClass($refs.html, 'noscroll'); 17546 return lightbox.show(index || 0); 17547 } 17548 /** 17549 * Creates the DOM structure required by the lightbox. 17550 */ 17551 17552 17553 lightbox.build = function () { 17554 // In case `build` is called more than once. 17555 lightbox.destroy(); 17556 $refs = { 17557 html: $(document.documentElement), 17558 // Empty jQuery object can be used to build new ones using `.add`. 17559 empty: $() 17560 }; 17561 $refs.arrowLeft = dom('control left inactive'); 17562 $refs.arrowRight = dom('control right inactive'); 17563 $refs.close = dom('control close'); 17564 $refs.spinner = dom('spinner'); 17565 $refs.strip = dom('strip'); 17566 spinner = new Spinner($refs.spinner, prefixed('hide')); 17567 $refs.content = dom('content').append($refs.spinner, $refs.arrowLeft, $refs.arrowRight, $refs.close); 17568 $refs.container = dom('container').append($refs.content, $refs.strip); 17569 $refs.lightbox = dom('backdrop hide').append($refs.container); // We are delegating events for performance reasons and also 17570 // to not have to reattach handlers when images change. 17571 17572 $refs.strip.on('tap', selector('item'), itemTapHandler); 17573 $refs.content.on('swipe', swipeHandler).on('tap', selector('left'), handlerPrev).on('tap', selector('right'), handlerNext).on('tap', selector('close'), handlerHide).on('tap', selector('image, caption'), handlerNext); 17574 $refs.container.on('tap', selector('view'), handlerHide) // Prevent images from being dragged around. 17575 .on('dragstart', selector('img'), preventDefault); 17576 $refs.lightbox.on('keydown', keyHandler) // IE loses focus to inner nodes without letting us know. 17577 .on('focusin', focusThis); // The `tabindex` attribute is needed to enable non-input elements 17578 // to receive keyboard events. 17579 17580 $(container).append($refs.lightbox.prop('tabIndex', 0)); 17581 return lightbox; 17582 }; 17583 /** 17584 * Dispose of DOM nodes created by the lightbox. 17585 */ 17586 17587 17588 lightbox.destroy = function () { 17589 if (!$refs) { 17590 return; 17591 } // Event handlers are also removed. 17592 17593 17594 removeClass($refs.html, 'noscroll'); 17595 $refs.lightbox.remove(); 17596 $refs = undefined; 17597 }; 17598 /** 17599 * Show a specific item. 17600 */ 17601 17602 17603 lightbox.show = function (index) { 17604 // Bail if we are already showing this item. 17605 if (index === currentIndex) { 17606 return; 17607 } 17608 17609 var item = items[index]; 17610 17611 if (!item) { 17612 return lightbox.hide(); 17613 } 17614 17615 if (isConditionallyHidden(item)) { 17616 if (index < currentIndex) { 17617 var previousVisibleIndex = getPreviousVisibleIndex(index - 1, items); 17618 index = previousVisibleIndex > -1 ? previousVisibleIndex : index; 17619 } else { 17620 var nextVisibleIndex = getNextVisibleIndex(index + 1, items); 17621 index = nextVisibleIndex > -1 ? nextVisibleIndex : index; 17622 } 17623 17624 item = items[index]; 17625 } 17626 17627 var previousIndex = currentIndex; 17628 currentIndex = index; 17629 spinner.show(); // For videos, load an empty SVG with the video dimensions to preserve 17630 // the videoâs aspect ratio while being responsive. 17631 17632 var url = item.html && svgDataUri(item.width, item.height) || item.url; 17633 loadImage(url, function ($image) { 17634 // Make sure this is the last item requested to be shown since 17635 // images can finish loading in a different order than they were 17636 // requested in. 17637 if (index !== currentIndex) { 17638 return; 17639 } 17640 17641 var $figure = dom('figure', 'figure').append(addClass($image, 'image')); 17642 var $frame = dom('frame').append($figure); 17643 var $newView = dom('view').append($frame); 17644 var $html; 17645 var isIframe; 17646 17647 if (item.html) { 17648 $html = $(item.html);
17649 isIframe = $html.is('iframe'); 17650 17651 if (isIframe) { 17652 $html.on('load', transitionToNewView); 17653 } 17654 17655 $figure.append(addClass($html, 'embed')); 17656 } 17657 17658 if (item.caption) { 17659 $figure.append(dom('caption', 'figcaption').text(item.caption)); 17660 } 17661 17662 $refs.spinner.before($newView); 17663 17664 if (!isIframe) { 17665 transitionToNewView(); 17666 } 17667 17668 function transitionToNewView() { 17669 spinner.hide(); 17670 17671 if (index !== currentIndex) { 17672 $newView.remove(); 17673 return; 17674 } 17675 17676 toggleClass($refs.arrowLeft, 'inactive', shouldSetArrowLeftInactive(index, items)); 17677 toggleClass($refs.arrowRight, 'inactive', shouldSetArrowRightInactive(index, items)); 17678 17679 if ($refs.view) { 17680 tram($refs.view).add('opacity .3s').start({ 17681 opacity: 0 17682 }).then(remover($refs.view)); 17683 tram($newView).add('opacity .3s').add('transform .3s').set({ 17684 x: index > previousIndex ? '80px' : '-80px' 17685 }).start({ 17686 opacity: 1, 17687 x: 0 17688 }); 17689 } else { 17690 $newView.css('opacity', 1); 17691 } 17692 17693 $refs.view = $newView; 17694 17695 if ($refs.items) { 17696 removeClass($refs.items, 'active'); // Mark proper thumbnail as active 17697 17698 var $activeThumb = $refs.items.eq(index); 17699 addClass($activeThumb, 'active'); // Scroll into view 17700 17701 maybeScroll($activeThumb); 17702 } 17703 } 17704 }); 17705 return lightbox; 17706 }; 17707 /** 17708 * Hides the lightbox. 17709 */ 17710 17711 17712 lightbox.hide = function () { 17713 tram($refs.lightbox).add('opacity .3s').start({ 17714 opacity: 0 17715 }).then(hideLightbox); 17716 return lightbox; 17717 }; 17718 17719 lightbox.prev = function () { 17720 var previousVisibleIndex = getPreviousVisibleIndex(currentIndex - 1, items); 17721 17722 if (previousVisibleIndex > -1) { 17723 lightbox.show(previousVisibleIndex); 17724 } 17725 }; 17726 17727 lightbox.next = function () { 17728 var nextVisibleIndex = getNextVisibleIndex(currentIndex + 1, items); 17729 17730 if (nextVisibleIndex > -1) { 17731 lightbox.show(nextVisibleIndex); 17732 } 17733 }; 17734 17735 function createHandler(action) { 17736 return function (event) { 17737 // We only care about events triggered directly on the bound selectors. 17738 if (this !== event.target) { 17739 return; 17740 } 17741 17742 event.stopPropagation(); 17743 event.preventDefault(); 17744 action(); 17745 }; 17746 } 17747 17748 var handlerPrev = createHandler(lightbox.prev); 17749 var handlerNext = createHandler(lightbox.next); 17750 var handlerHide = createHandler(lightbox.hide); 17751 17752 var itemTapHandler = function itemTapHandler(event) { 17753 var index = $(this).index(); 17754 event.preventDefault(); 17755 lightbox.show(index); 17756 }; 17757 17758 var swipeHandler = function swipeHandler(event, data) { 17759 // Prevent scrolling. 17760 event.preventDefault(); 17761 17762 if (data.direction === 'left') { 17763 lightbox.next(); 17764 } else if (data.direction === 'right') { 17765 lightbox.prev(); 17766 } 17767 }; 17768 17769 var focusThis = function focusThis() { 17770 this.focus(); 17771 }; 17772 17773 function preventDefault(event) { 17774 event.preventDefault(); 17775 } 17776 17777 function keyHandler(event) { 17778 var keyCode = event.keyCode; // [esc] 17779 17780 if (keyCode === 27) { 17781 lightbox.hide(); // [â] 17782 } else if (keyCode === 37) { 17783 lightbox.prev(); // [â¶] 17784 } else if (keyCode === 39) { 17785 lightbox.next(); 17786 } 17787 } 17788 17789 function hideLightbox() { 17790 // If the lightbox hasn't been destroyed already 17791 if ($refs) { 17792 // Reset strip scroll, otherwise next lightbox opens scrolled to last position 17793 $refs.strip.scrollLeft(0).empty(); 17794 removeClass($refs.html, 'noscroll'); 17795 addClass($refs.lightbox, 'hide'); 17796 $refs.view && $refs.view.remove(); // Reset some stuff 17797 17798 removeClass($refs.content, 'group'); 17799 addClass($refs.arrowLeft, 'inactive'); 17800 addClass($refs.arrowRight, 'inactive'); 17801 currentIndex = $refs.view = undefined; 17802 } 17803 } 17804 17805 function loadImage(url, callback) { 17806 var $image = dom('img', 'img'); 17807 $image.one('load', function () { 17808 callback($image); 17809 }); // Start loading image. 17810 17811 $image.attr('src', url); 17812 return $image; 17813 } 17814 17815 function remover($element) { 17816 return function () { 17817 $element.remove(); 17818 }; 17819 } 17820 17821 function maybeScroll($item) { 17822 var itemLeft = $item.position().left; 17823 var stripScrollLeft = $refs.strip.scrollLeft(); 17824 var stripWidth = $refs.strip.width(); 17825 17826 if (itemLeft < stripScrollLeft || itemLeft > stripWidth + stripScrollLeft) { 17827 tram($refs.strip).add('scroll-left 500ms').start({ 17828 'scroll-left': itemLeft 17829 }); 17830 } 17831 } 17832 /** 17833 * Spinner 17834 */ 17835 17836 17837 function Spinner($spinner, className, delay) { 17838 this.$element = $spinner; 17839 this.className = className; 17840 this.delay = delay || 200; 17841 this.hide(); 17842 } 17843 17844 Spinner.prototype.show = function () { 17845 var spinner = this; // Bail if we are already showing the spinner. 17846 17847 if (spinner.timeoutId) { 17848 return; 17849 } 17850 17851 spinner.timeoutId = setTimeout(function () { 17852 spinner.$element.removeClass(spinner.className); 17853 delete spinner.timeoutId; 17854 }, spinner.delay); 17855 }; 17856 17857 Spinner.prototype.hide = function () { 17858 var spinner = this; 17859 17860 if (spinner.timeoutId) { 17861 clearTimeout(spinner.timeoutId); 17862 delete spinner.timeoutId; 17863 return; 17864 } 17865 17866 spinner.$element.addClass(spinner.className); 17867 }; 17868 17869 function prefixed(string, isSelector) { 17870 return string.replace(prefixRegex, (isSelector ? ' .' : ' ') + prefix); 17871 } 17872 17873 function selector(string) { 17874 return prefixed(string, true); 17875 } 17876 /** 17877 * jQuery.addClass with auto-prefixing 17878 * @param {jQuery} Element to add class to 17879 * @param {string}
17879 Class name that will be prefixed and added to element 17880 * @return {jQuery} 17881 */ 17882 17883 17884 function addClass($element, className) { 17885 return $element.addClass(prefixed(className)); 17886 } 17887 /** 17888 * jQuery.removeClass with auto-prefixing 17889 * @param {jQuery} Element to remove class from 17890 * @param {string} Class name that will be prefixed and removed from element 17891 * @return {jQuery} 17892 */ 17893 17894 17895 function removeClass($element, className) { 17896 return $element.removeClass(prefixed(className)); 17897 } 17898 /** 17899 * jQuery.toggleClass with auto-prefixing 17900 * @param {jQuery} Element where class will be toggled 17901 * @param {string} Class name that will be prefixed and toggled 17902 * @param {boolean} Optional boolean that determines if class will be added or removed 17903 * @return {jQuery} 17904 */ 17905 17906 17907 function toggleClass($element, className, shouldAdd) { 17908 return $element.toggleClass(prefixed(className), shouldAdd); 17909 } 17910 /** 17911 * Create a new DOM element wrapped in a jQuery object, 17912 * decorated with our custom methods. 17913 * @param {string} className 17914 * @param {string} [tag] 17915 * @return {jQuery} 17916 */ 17917 17918 17919 function dom(className, tag) { 17920 return addClass($(document.createElement(tag || 'div')), className); 17921 } 17922 17923 function svgDataUri(width, height) { 17924 var svg = '<svg xmlns="http://www.w3.org/2000/svg" width="' + width + '" height="' + height + '"/>'; 17925 return 'data:image/svg+xml;charset=utf-8,' + encodeURI(svg); 17926 } // Compute some dimensions manually for iOS < 8, because of buggy support for VH. 17927 // Also, Android built-in browser does not support viewport units. 17928 17929 17930 (function () { 17931 var ua = window.navigator.userAgent; 17932 var iOSRegex = /(iPhone|iPad|iPod);[^OS]*OS (\d)/; 17933 var iOSMatches = ua.match(iOSRegex); 17934 var android = ua.indexOf('Android ') > -1 && ua.indexOf('Chrome') === -1; 17935 17936 if (!android && (!iOSMatches || iOSMatches[2] > 7)) { 17937 return; 17938 } 17939 17940 var styleNode = document.createElement('style'); 17941 document.head.appendChild(styleNode); 17942 window.addEventListener('orientationchange', refresh, true); 17943 17944 function refresh() { 17945 var vh = window.innerHeight; 17946 var vw = window.innerWidth; 17947 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' + '}' + '}'; 17948 styleNode.textContent = content; 17949 } 17950 17951 refresh(); 17952 })(); 17953 17954 return lightbox; 17955} 17956 17957Webflow.define('lightbox', module.exports = function ($) { 17958 var api = {}; 17959 var inApp = Webflow.env(); 17960 var lightbox = createLightbox(window, document, $, inApp ? '#lightbox-mountpoint' : 'body'); 17961 var $doc = $(document); 17962 var $lightboxes; 17963 var designer; 17964 var namespace = '.w-lightbox'; 17965 var groups; // ----------------------------------- 17966 // Module methods 17967 17968 api.ready = api.design = api.preview = init; // ----------------------------------- 17969 // Private methods 17970 17971 function init() { 17972 designer = inApp && Webflow.env('design'); // Reset Lightbox 17973 17974 lightbox.destroy(); // Reset groups 17975 17976 groups = {}; // Find all instances on the page 17977 17978 $lightboxes = $doc.find(namespace); // Instantiate all lighboxes 17979 17980 $lightboxes.webflowLightBox(); 17981 } 17982 17983 jQuery.fn.extend({ 17984 webflowLightBox: function webflowLightBox() { 17985 var $el = this; 17986 $.each($el, function (i, el) { 17987 // Store state in data 17988 var data = $.data(el, namespace); 17989 17990 if (!data) { 17991 data = $.data(el, namespace, { 17992 el: $(el), 17993 mode: 'images', 17994 images: [], 17995 embed: '' 17996 }); 17997 } // Remove old events 17998 17999 18000 data.el.off(namespace); // Set config from json script tag 18001 18002 configure(data); // Add events based on mode 18003 18004 if (designer) { 18005 data.el.on('setting' + namespace, configure.bind(null, data)); 18006 } else { 18007 data.el.on('tap' + namespace, tapHandler(data)) // Prevent page scrolling to top when clicking on lightbox triggers.
18008 .on('click' + namespace, function (e) { 18009 e.preventDefault(); 18010 }); 18011 } 18012 }); 18013 } 18014 }); 18015 18016 function configure(data) { 18017 var json = data.el.children('.w-json').html(); 18018 var groupName; 18019 var groupItems; 18020 18021 if (!json) { 18022 data.items = []; 18023 return; 18024 } 18025 18026 try { 18027 json = JSON.parse(json); 18028 } catch (e) { 18029 console.error('Malformed lightbox JSON configuration.', e); 18030 } 18031 18032 supportOldLightboxJson(json); 18033 json.items.forEach(function (item) { 18034 item.$el = data.el; 18035 }); 18036 groupName = json.group; 18037 18038 if (groupName) { 18039 groupItems = groups[groupName]; 18040 18041 if (!groupItems) { 18042 groupItems = groups[groupName] = []; 18043 } 18044 18045 data.items = groupItems; 18046 18047 if (json.items.length) { 18048 data.index = groupItems.length; 18049 groupItems.push.apply(groupItems, json.items); 18050 } 18051 } else { 18052 data.items = json.items; 18053 data.index = 0; 18054 } 18055 } 18056 18057 function tapHandler(data) { 18058 return function () { 18059 data.items.length && lightbox(data.items, data.index || 0); 18060 }; 18061 } 18062 18063 function supportOldLightboxJson(data) { 18064 if (data.images) { 18065 data.images.forEach(function (item) { 18066 item.type = 'image'; 18067 }); 18068 data.items = data.images; 18069 } 18070 18071 if (data.embed) { 18072 data.embed.type = 'video'; 18073 data.items = [data.embed]; 18074 } 18075 18076 if (data.groupId) { 18077 data.group = data.groupId; 18078 } 18079 } // Export module 18080 18081 18082 return api; 18083}); 18084 18085/***/ }), 18086/* 262 */ 18087/***/ (function(module, exports, __webpack_require__) { 18088 18089"use strict"; 18090 // @wf-will-never-add-flow-to-this-file 18091 18092/* eslint-disable */ 18093 18094/** 18095 * Webflow: Navbar component 18096 */ 18097 18098var Webflow = __webpack_require__(2); 18099 18100var IXEvents = __webpack_require__(28); 18101 18102Webflow.define('navbar', module.exports = function ($, _) { 18103 var api = {}; 18104 var tram = $.tram; 18105 var $win = $(window); 18106 var $doc = $(document); 18107 var $body; 18108 var $navbars; 18109 var designer; 18110 var inEditor; 18111 var inApp = Webflow.env(); 18112 var overlay = '<div class="w-nav-overlay" data-wf-ignore />'; 18113 var namespace = '.w-nav'; 18114 var buttonOpen = 'w--open'; 18115 var menuOpen = 'w--nav-menu-open'; 18116 var linkOpen = 'w--nav-link-open'; 18117 var ix = IXEvents.triggers; 18118 var menuSibling = $(); // ----------------------------------- 18119 // Module methods 18120 18121 api.ready = api.design = api.preview = init; 18122 18123 api.destroy = function () { 18124 menuSibling = $(); 18125 removeListeners(); 18126 18127 if ($navbars && $navbars.length) { 18128 $navbars.each(teardown); 18129 } 18130 }; // ----------------------------------- 18131 // Private methods 18132 18133 18134 function init() { 18135 designer = inApp && Webflow.env('design'); 18136 inEditor = Webflow.env('editor'); 18137 $body = $(document.body); // Find all instances on the page 18138 18139 $navbars = $doc.find(namespace); 18140 18141 if (!$navbars.length) { 18142 return; 18143 } 18144 18145 $navbars.each(build); // Wire events 18146 18147 removeListeners(); 18148 addListeners(); 18149 } 18150 18151 function removeListeners() { 18152 Webflow.resize.off(resizeAll); 18153 } 18154 18155 function addListeners() { 18156 Webflow.resize.on(resizeAll); 18157 } 18158 18159 function resizeAll() { 18160 $navbars.each(resize); 18161 } 18162 18163 function build(i, el) { 18164 var $el = $(el); // Store state in data 18165 18166 var data = $.data(el, namespace); 18167 18168 if (!data) { 18169 data = $.data(el, namespace, { 18170 open: false, 18171 el: $el, 18172 config: {} 18173 }); 18174 } 18175 18176 data.menu = $el.find('.w-nav-menu'); 18177 data.links = data.menu.find('.w-nav-link'); 18178 data.dropdowns = data.menu.find('.w-dropdown'); 18179 data.button = $el.find('.w-nav-button'); 18180 data.container = $el.find('.w-container'); 18181 data.outside = outside(data); // Remove old events 18182 18183 data.el.off(namespace); 18184 data.button.off(namespace); 18185 data.menu.off(namespace); // Set config from data attributes 18186 18187 configure(data); // Add events based on mode 18188 18189 if (designer) { 18190 removeOverlay(data); 18191 data.el.on('setting' + namespace, handler(data)); 18192 } else { 18193 addOverlay(data); 18194 data.button.on('tap' + namespace, toggle(data)); 18195 data.menu.on('click' + namespace, 'a', navigate(data)); 18196 } // Trigger initial resize 18197 18198 18199 resize(i, el); 18200 } 18201 18202 function teardown(i, el) { 18203 var data = $.data(el, namespace); 18204 18205 if (data) { 18206 removeOverlay(data); 18207 $.removeData(el, namespace); 18208 } 18209 } 18210 18211 function removeOverlay(data) { 18212 if (!data.overlay) { 18213 return; 18214 } 18215 18216 close(data, true); 18217 data.overlay.remove();
18218 data.overlay = null; 18219 } 18220 18221 function addOverlay(data) { 18222 if (data.overlay) { 18223 return; 18224 } 18225 18226 data.overlay = $(overlay).appendTo(data.el); 18227 data.parent = data.menu.parent(); 18228 close(data, true); 18229 } 18230 18231 function configure(data) { 18232 var config = {}; 18233 var old = data.config || {}; // Set config options from data attributes 18234 18235 var animation = config.animation = data.el.attr('data-animation') || 'default'; 18236 config.animOver = /^over/.test(animation); 18237 config.animDirect = /left$/.test(animation) ? -1 : 1; // Re-open menu if the animation type changed 18238 18239 if (old.animation !== animation) { 18240 data.open && _.defer(reopen, data); 18241 } 18242 18243 config.easing = data.el.attr('data-easing') || 'ease'; 18244 config.easing2 = data.el.attr('data-easing2') || 'ease'; 18245 var duration = data.el.attr('data-duration'); 18246 config.duration = duration != null ? Number(duration) : 400; 18247 config.docHeight = data.el.attr('data-doc-height'); // Store config in data 18248 18249 data.config = config; 18250 } 18251 18252 function handler(data) { 18253 return function (evt, options) { 18254 options = options || {}; 18255 var winWidth = $win.width(); 18256 configure(data); 18257 options.open === true && open(data, true); 18258 options.open === false && close(data, true); // Reopen if media query changed after setting 18259 18260 data.open && _.defer(function () { 18261 if (winWidth !== $win.width()) { 18262 reopen(data); 18263 } 18264 }); 18265 }; 18266 } 18267 18268 function reopen(data) { 18269 if (!data.open) { 18270 return; 18271 } 18272 18273 close(data, true); 18274 open(data, true); 18275 } 18276 18277 function toggle(data) { 18278 // Debounce toggle to wait for accurate open state 18279 return _.debounce(function () { 18280 data.open ? close(data) : open(data); 18281 }); 18282 } 18283 18284 function navigate(data) { 18285 return function (evt) { 18286 var link = $(this); 18287 var href = link.attr('href'); // Avoid late clicks on touch devices 18288 18289 if (!Webflow.validClick(evt.currentTarget)) { 18290 evt.preventDefault(); 18291 return; 18292 } // Close when navigating to an in-page anchor 18293 18294 18295 if (href && href.indexOf('#') === 0 && data.open) { 18296 close(data); 18297 } 18298 }; 18299 } 18300 18301 function outside(data) { 18302 // Unbind previous tap handler if it exists 18303 if (data.outside) { 18304 $doc.off('tap' + namespace, data.outside); 18305 } 18306 18307 return function (evt) { 18308 var $target = $(evt.target); // Ignore clicks on Editor overlay UI 18309 18310 if (inEditor && $target.closest('.w-editor-bem-EditorOverlay').length) { 18311 return; 18312 } // Close menu when tapped outside, debounced to wait for state 18313 18314 18315 outsideDebounced(data, $target); 18316 }; 18317 } 18318 18319 var outsideDebounced = _.debounce(function (data, $target) { 18320 if (!data.open) { 18321 return; 18322 } 18323 18324 var menu = $target.closest('.w-nav-menu'); 18325 18326 if (!data.menu.is(menu)) { 18327 close(data); 18328 } 18329 }); 18330 18331 function resize(i, el) { 18332 var data = $.data(el, namespace);
18332 // Check for collapsed state based on button display 18333 18334 var collapsed = data.collapsed = data.button.css('display') !== 'none'; // Close menu if button is no longer visible (and not in designer) 18335 18336 if (data.open && !collapsed && !designer) { 18337 close(data, true); 18338 } // Set max-width of links + dropdowns to match container 18339 18340 18341 if (data.container.length) { 18342 var updateEachMax = updateMax(data); 18343 data.links.each(updateEachMax); 18344 data.dropdowns.each(updateEachMax); 18345 } // If currently open, update height to match body 18346 18347 18348 if (data.open) { 18349 setOverlayHeight(data); 18350 } 18351 } 18352 18353 var maxWidth = 'max-width'; 18354 18355 function updateMax(data) { 18356 // Set max-width of each element to match container 18357 var containMax = data.container.css(maxWidth); 18358 18359 if (containMax === 'none') { 18360 containMax = ''; 18361 } 18362 18363 return function (i, link) { 18364 link = $(link); 18365 link.css(maxWidth, ''); // Don't set the max-width if an upstream value exists 18366 18367 if (link.css(maxWidth) === 'none') { 18368 link.css(maxWidth, containMax); 18369 } 18370 }; 18371 } 18372 18373 function open(data, immediate) { 18374 if (data.open) { 18375 return; 18376 } 18377 18378 data.open = true; 18379 data.menu.addClass(menuOpen); 18380 data.links.addClass(linkOpen); 18381 data.button.addClass(buttonOpen); 18382 var config = data.config; 18383 var animation = config.animation; 18384 18385 if (animation === 'none' || !tram.support.transform) { 18386 immediate = true; 18387 } 18388 18389 var bodyHeight = setOverlayHeight(data); 18390 var menuHeight = data.menu.outerHeight(true); 18391 var menuWidth = data.menu.outerWidth(true); 18392 var navHeight = data.el.height(); 18393 var navbarEl = data.el[0]; 18394 resize(0, navbarEl); 18395 ix.intro(0, navbarEl); 18396 Webflow.redraw.up(); // Listen for tap outside events 18397 18398 if (!designer) { 18399 $doc.on('tap' + namespace, data.outside); 18400 } // No transition for immediate 18401 18402 18403 if (immediate) { 18404 return; 18405 } 18406 18407 var transConfig = 'transform ' + config.duration + 'ms ' + config.easing; // Add menu to overlay 18408 18409 if (data.overlay) { 18410 menuSibling = data.menu.prev(); 18411 data.overlay.show().append(data.menu); 18412 } // Over left/right 18413 18414 18415 if (config.animOver) { 18416 tram(data.menu).add(transConfig).set({ 18417 x: config.animDirect * menuWidth, 18418 height: bodyHeight 18419 }).start({ 18420 x: 0 18421 }); 18422 data.overlay && data.overlay.width(menuWidth); 18423 return; 18424 } // Drop Down 18425 18426 18427 var offsetY = navHeight + menuHeight; 18428 tram(data.menu).add(transConfig).set({ 18429 y: -offsetY 18430 }).start({ 18431 y: 0 18432 }); 18433 } 18434 18435 function setOverlayHeight(data) { 18436 var config = data.config; 18437 var bodyHeight = config.docHeight ? $doc.height() : $body.height(); 18438 18439 if (config.animOver) { 18440 data.menu.height(bodyHeight); 18441 } else if (data.el.css('position') !== 'fixed') { 18442 bodyHeight -= data.el.height(); 18443 } 18444 18445 data.overlay && data.overlay.height(bodyHeight); 18446 return bodyHeight; 18447 } 18448 18449 function close(data, immediate) { 18450 if (!data.open) { 18451 return; 18452 } 18453 18454 data.open = false; 18455 data.button.removeClass(buttonOpen); 18456 var config = data.config; 18457 18458 if (config.animation === 'none' || !tram.support.transform || config.duration <= 0) { 18459 immediate = true; 18460 } 18461 18462 ix.outro(0, data.el[0]); // Stop listening for tap outside events 18463 18464 $doc.off('tap' + namespace, data.outside); 18465 18466 if (immediate) { 18467 tram(data.menu).stop(); 18468 complete(); 18469 return; 18470 } 18471 18472 var transConfig = 'transform ' + config.duration + 'ms ' + config.easing2; 18473 var menuHeight = data.menu.outerHeight(true); 18474 var menuWidth = data.menu.outerWidth(true); 18475 var navHeight = data.el.height(); // Over left/right 18476 18477 if (config.animOver) { 18478 tram(data.menu).add(transConfig).start({ 18479 x: menuWidth * config.animDirect 18480 }).then(complete); 18481 return; 18482 } // Drop Down 18483 18484 18485 var offsetY = navHeight + menuHeight; 18486 tram(data.menu).add(transConfig).start({ 18487 y: -offsetY 18488 }).then(complete); 18489 18490 function complete() { 18491 data.menu.height(''); 18492 tram(data.menu).set({ 18493 x: 0, 18494 y: 0 18495 }); 18496 data.menu.removeClass(menuOpen); 18497 data.links.removeClass(linkOpen); 18498 18499 if (data.overlay && data.overlay.children().length) { 18500 // Move menu back to parent at the original location 18501 menuSibling.length ? data.menu.insertAfter(menuSibling) : data.menu.prependTo(data.parent); 18502 data.overlay.attr('style', '').hide(); 18503 } // Trigger event so other components can hook in (dropdown) 18504 18505 18506 data.el.triggerHandler('w-close'); 18507 } 18508 } // Export module 18509 18510 18511 return api; 18512}); 18513 18514/***/ }), 18515/* 263 */ 18516/***/ (function(module, exports, __webpack_require__) { 18517 18518"use strict"; 18519 // @wf-will-never-add-flow-to-this-file 18520 18521/* eslint-disable */ 18522 18523/** 18524 * Webflow: Tabs component 18525 */ 18526 18527var Webflow = __webpack_require__(2); 18528 18529var IXEvents = __webpack_require__(28); 18530 18531Webflow.define('tabs', module.exports = function ($) { 18532 var api = {}; 18533 var tram = $.tram; 18534 var $doc = $(document); 18535 var $tabs; 18536 var design; 18537 var env = Webflow.env; 18538 var safari = env.safari; 18539 var inApp = env(); 18540 var tabAttr = 'data-w-tab'; 18541 var namespace = '.w-tabs'; 18542 var linkCurrent = 'w--current'; 18543 var tabActive = 'w--tab-active'; 18544 var ix = IXEvents.triggers; 18545 var inRedraw = false; // ----------------------------------- 18546 // Module methods 18547 18548 api.ready = api.design = api.preview = init; 18549 18550 api.redraw = function () { 18551 inRedraw = true; 18552 init(); 18553 inRedraw = false;
18554 }; 18555 18556 api.destroy = function () { 18557 $tabs = $doc.find(namespace); 18558 18559 if (!$tabs.length) { 18560 return; 18561 } 18562 18563 $tabs.each(resetIX); 18564 removeListeners(); 18565 }; // ----------------------------------- 18566 // Private methods 18567 18568 18569 function init() { 18570 design = inApp && Webflow.env('design'); // Find all instances on the page 18571 18572 $tabs = $doc.find(namespace); 18573 18574 if (!$tabs.length) { 18575 return; 18576 } 18577 18578 $tabs.each(build); 18579 18580 if (Webflow.env('preview') && !inRedraw) { 18581 $tabs.each(resetIX); 18582 } 18583 18584 removeListeners(); 18585 addListeners(); 18586 } 18587 18588 function removeListeners() { 18589 Webflow.redraw.off(api.redraw); 18590 } 18591 18592 function addListeners() { 18593 Webflow.redraw.on(api.redraw); 18594 } 18595 18596 function resetIX(i, el) { 18597 var data = $.data(el, namespace); 18598 18599 if (!data) { 18600 return; 18601 } 18602 18603 data.links && data.links.each(ix.reset); 18604 data.panes && data.panes.each(ix.reset); 18605 } 18606 18607 function build(i, el) { 18608 var $el = $(el); // Store state in data 18609 18610 var data = $.data(el, namespace); 18611 18612 if (!data) { 18613 data = $.data(el, namespace, { 18614 el: $el, 18615 config: {} 18616 }); 18617 } 18618 18619 data.current = null; 18620 data.menu = $el.children('.w-tab-menu'); 18621 data.links = data.menu.children('.w-tab-link'); 18622 data.content = $el.children('.w-tab-content'); 18623 data.panes = data.content.children('.w-tab-pane'); // Remove old events 18624 18625 data.el.off(namespace); 18626 data.links.off(namespace); // Set config from data attributes 18627 18628 configure(data); // Wire up events when not in design mode 18629 18630 if (!design) { 18631 data.links.on('click' + namespace, linkSelect(data)); // Trigger first intro event from current tab 18632 18633 var $link = data.links.filter('.' + linkCurrent); 18634 var tab = $link.attr(tabAttr); 18635 tab && changeTab(data, { 18636 tab: tab, 18637 immediate: true 18638 }); 18639 } 18640 } 18641 18642 function configure(data) { 18643 var config = {}; // Set config options from data attributes 18644 18645 config.easing = data.el.attr('data-easing') || 'ease'; 18646 var intro = parseInt(data.el.attr('data-duration-in'), 10); 18647 intro = config.intro = intro === intro ? intro : 0; 18648 var outro = parseInt(data.el.attr('data-duration-out'), 10); 18649 outro = config.outro = outro === outro ? outro : 0; 18650 config.immediate = !intro && !outro; // Store config in data 18651 18652 data.config = config; 18653 } 18654 18655 function linkSelect(data) { 18656 return function (evt) { 18657 var tab = evt.currentTarget.getAttribute(tabAttr); 18658 tab && changeTab(data, { 18659 tab: tab 18660 }); 18661 }; 18662 } 18663 18664 function changeTab(data, options) { 18665 options = options || {}; 18666 var config = data.config; 18667 var easing = config.easing; 18668 var tab = options.tab; // Don't select the same tab twice 18669 18670 if (tab === data.current) { 18671 return; 18672 } 18673 18674 data.current = tab; // Select the current link 18675 18676 data.links.each(function (i, el) { 18677 var $el = $(el); 18678 18679 if (el.getAttribute(tabAttr) === tab) { 18680 $el.addClass(linkCurrent).each(ix.intro); 18681 } else if ($el.hasClass(linkCurrent)) { 18682 $el.removeClass(linkCurrent).each(ix.outro); 18683 } 18684 }); // Find the new tab panes and keep track of previous 18685 18686 var targets = []; 18687 var previous = []; 18688 data.panes.each(function (i, el) { 18689 var $el = $(el); 18690 18691 if (el.getAttribute(tabAttr) === tab) { 18692 targets.push(el); 18693 } else if ($el.hasClass(tabActive)) { 18694 previous.push(el); 18695 } 18696 }); 18697 var $targets = $(targets); 18698 var $previous = $(previous); // Switch tabs immediately and bypass transitions 18699 18700 if (options.immediate || config.immediate) { 18701 $targets.addClass(tabActive).each(ix.intro); 18702 $previous.removeClass(tabActive); // Redraw to benefit components in the hidden tab pane 18703 // But only if not currently in the middle of a redraw 18704 18705 if (!inRedraw) { 18706 Webflow.redraw.up(); 18707 } 18708 18709 return; 18710 } // Fade out the currently active tab before intro 18711 18712 18713 if ($previous.length && config.outro) { 18714 $previous.each(ix.outro); 18715 tram($previous).add('opacity ' + config.outro + 'ms ' + easing, { 18716 fallback: safari 18717 }).start({ 18718 opacity: 0 18719 }).then(intro); 18720 } else { 18721 // Skip the outro and play intro 18722 intro(); 18723 } // Fade in the new target 18724 18725 18726 function intro() { 18727 // Clear previous active class + styles touched by tram
18728 // We cannot remove the whole inline style because it could be dynamically bound 18729 $previous.removeClass(tabActive).css({ 18730 opacity: '', 18731 transition: '', 18732 transform: '', 18733 width: '', 18734 height: '' 18735 }); // Add active class to new target 18736 18737 $targets.addClass(tabActive).each(ix.intro); 18738 Webflow.redraw.up(); // Set opacity immediately if intro is zero 18739 18740 if (!config.intro) { 18741 return tram($targets).set({ 18742 opacity: 1 18743 }); 18744 } // Otherwise fade in opacity 18745 18746 18747 tram($targets).set({ 18748 opacity: 0 18749 }).redraw().add('opacity ' + config.intro + 'ms ' + easing, { 18750 fallback: safari 18751 }).start({ 18752 opacity: 1 18753 }); 18754 } 18755 } // Export module 18756 18757 18758 return api; 18759}); 18760 18761/***/ }) 18762/******/ ]);/** 18763 * ---------------------------------------------------------------------- 18764 * Webflow: Interactions: Init 18765 */ 18766Webflow.require('ix').init([ 18767 {"slug":"shortend","name":"Shortend","value":{"style":{},"triggers":[{"type":"navbar","selector":".line-1","descend":true,"preserve3d":true,"stepsA":[{"width":"16px","transition":"width 350ms ease-in-out-back 0, transform 350ms ease-in-out-back 0","x":"-8px","y":"2px","z":"0px","rotateX":"0deg","rotateY":"0deg","rotateZ":"45deg"}],"stepsB":[{"width":"35px","transition":"transform 200 ease-in-out-back 0, width 200 ease 0","x":"0px","y":"0px","z":"0px","rotateX":"0deg","rotateY":"0deg","rotateZ":"0deg"}]},{"type":"navbar","selector":".line-2","descend":true,"preserve3d":true,"stepsA":[{"transition":"transform 350ms ease-in-out-back 0","rotateX":"0deg","rotateY":"0deg","rotateZ":"-45deg"}],"stepsB":[{"width":"35px","transition":"transform 200 ease-in-out-back 0, width 200 ease 0","x":"0px","y":"0px","z":"0px","rotateX":"0deg","rotateY":"0deg","rotateZ":"0deg"}]},{"type":"navbar","selector":".line-3","descend":true,"preserve3d":true,"stepsA":[{"width":"16px","transition":"width 350ms ease-in-out-back 0, transform 350ms ease-in-out-back 0","x":"8px","y":"-2px","z":"0px","rotateX":"0deg","rotateY":"0deg","rotateZ":"45deg"}],"stepsB":[{"width":"35px","transition":"transform 200 ease-in-out-back 0, width 200 ease 0","x":"0px","y":"0px","z":"0px","rotateX":"0deg","rotateY":"0deg","rotateZ":"0deg"}]}]}} 18768]); 18769/** 18770 * ---------------------------------------------------------------------- 18771 * Webflow: Interactions 2.0: Init 18772 */ 18773Webflow.require('ix2').init( 18774{"events":{"e":{"id":"e","eventTypeId":"SCROLLING_IN_VIEW","action":{"id":"","actionTypeId":"GENERAL_CONTINUOUS_ACTION","config":{"actionListId":"a","affectedElements":{},"duration":0}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d2d514fb78ea84593838a4b|5d12e6080779136d9b48d3af"},"config":[{"continuousParameterGroupId":"a-p","smoothing":50,"startsEntering":true,"addStartOffset":false,"addOffsetValue":50,"startsExiting":false,"addEndOffset":false,"endOffsetValue":50}],"createdOn":1561533319812},"e-2":{"id":"e-2","eventTypeId":"MOUSE_OVER","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-6","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-3"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d397a284f1ba6e94d23b230|b0280b78-1f57-2066-0db2-529dc47ef669"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564382412593},"e-3":{"id":"e-3","eventTypeId":"MOUSE_OUT","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-7","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-2"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d397a284f1ba6e94d23b230|b0280b78-1f57-2066-0db2-529dc47ef669"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564382412594},"e-4":{"id":"e-4","eventTypeId":"MOUSE_OVER","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-6","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-5"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d397a284f1ba6e94d23b230|cccf36fd-9a1b-cd9a-835b-0a991b2724ce"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564382847797},"e-5":{"id":"e-5","eventTypeId":"MOUSE_OUT","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-7","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-4"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d397a284f1ba6e94d23b230|cccf36fd-9a1b-cd9a-835b-0a991b2724ce"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564382847797},"e-6":{"id":"e-6","eventTypeId":"MOUSE_OVER","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-6","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-7"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d397a284f1ba6e94d23b230|69f4a754-9915-8622-80d5-f9a13873d518"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564382874966},"e-7":{"id":"e-7","eventTypeId":"MOUSE_OUT","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-7","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-6"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d397a284f1ba6e94d23b230|69f4a754-9915-8622-80d5-f9a13873d518"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564382875014},"e-8":{"id":"e-8","eventTypeId":"MOUSE_OVER","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-6","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-9"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d397a284f1ba6e94d23b230|83f7574f-158e-b66b-8b03-be8f194f2763"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564382888329}
18774,"e-9":{"id":"e-9","eventTypeId":"MOUSE_OUT","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-7","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-8"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d397a284f1ba6e94d23b230|83f7574f-158e-b66b-8b03-be8f194f2763"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564382888375},"e-10":{"id":"e-10","eventTypeId":"MOUSE_OVER","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-6","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-11"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d397a284f1ba6e94d23b230|d433e0fb-a16f-cc35-6552-417c648e687c"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564382902279},"e-11":{"id":"e-11","eventTypeId":"MOUSE_OUT","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-7","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-10"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d397a284f1ba6e94d23b230|d433e0fb-a16f-cc35-6
18774552-417c648e687c"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564382902280},"e-12":{"id":"e-12","eventTypeId":"MOUSE_OVER","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-6","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-13"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d397a284f1ba6e94d23b230|a966e585-5668-40d9-1c85-b8edd2484693"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564382916381},"e-13":{"id":"e-13","eventTypeId":"MOUSE_OUT","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-7","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-12"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d397a284f1ba6e94d23b230|a966e585-5668-40d9-1c85-b8edd2484693"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564382916427},"e-14":{"id":"e-14","eventTypeId":"MOUSE_OVER","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-10","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-15"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d43d9d7c27b0235c82645df|4e062a7c-c373-ab75-363a-0e9c12504f10"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564728579666},"e-15":{"id":"e-15","eventTypeId":"MOUSE_OUT","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-11","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-14"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d43d9d7c27b0235c82645df|4e062a7c-c373-ab75-363a-0e9c12504f10"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564728579667},"e-16":{"id":"e-16","eventTypeId":"MOUSE_OVER","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-10","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-17"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d43d9d7c27b0235c82645df|6ab5a0cf-56aa-26b5-52fa-6380ff538abb"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564729570725},"e-17":{"id":"e-17","eventTypeId":"MOUSE_OUT","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-11","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-16"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d43d9d7c27b0235c82645df|6ab5a0cf-56aa-26b5-52fa-6380ff538abb"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564729570725},"e-18":{"id":"e-18","eventTypeId":"MOUSE_OVER","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-10","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-19"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d43d9d7c27b0235c82645df|c41fefba-a572-d23e-0f2a-f2b952c8bb65"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564729571309},"e-19":{"id":"e-19","eventTypeId":"MOUSE_OUT","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-11","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-18"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d43d9d7c27b0235c82645df|c41fefba-a572-d23e-0f2a-f2b952c8bb65"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564729571309},"e-20":{"id":"e-20","eventTypeId":"MOUSE_OVER","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-12","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-21"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d3ff036a2938f7448b0a555|f8c47c01-6d4e-7b7b-322c-cca2dfc6e299"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564975532882},"e-21":{"id":"e-21","eventTypeId":"MOUSE_OUT","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-13","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-20"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d3ff036a2938f7448b0a555|f8c47c01-6d4e-7b7b-322c-cca2dfc6e299"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564975532884},"e-26":{"id":"e-26","eventTypeId":"MOUSE_OVER","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-12","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-27"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d3ff036a2938f7448b0a555|01e949b2-409e-1870-8862-90264208d62e"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564976004228},"e-27":{"id":"e-27","eventTypeId":"MOUSE_OUT","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-13","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-26"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d3ff036a2938f7448b0a555|01e949b2-409e-1870-8862-90264208d62e"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564976004230},"e-28":{"id":"e-28","eventTypeId":"MOUSE_OVER","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-12","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-29"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d3ff036a2938f7448b0a555|43327bee-233f-476f-54d2-2c44ace88e2c"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564976021001},"e-29":{"id":"e-29","eventTypeId":"MOUSE_OUT","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-13","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-28"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d3ff036a2938f7448b0a555|43327bee-233f-476f-54d2-2c44ace88e2c"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564976021056},"e-30":{"id":"e-30","eventTypeId":"MOUSE_OVER","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-12","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-31"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d3ff036a2938f7448b0a555|bdaacec2-5347-9d41-33fd-d280fa0b4a9d"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564976038501},"e-31":{"id":"e-31","eventTypeId":"MOUSE_OUT","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-13","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-30"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d3ff036a2938f7448b0a555|bdaacec2-5347-9d41-33fd-d280fa0b4a9d"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564976038549},"e-32":{"id":"e-32","eventTypeId":"MOUSE_OVER","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-12","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-33"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d3ff036a2938f7448b0a555|0835a9a2-93cc-931f-398a-18a5a07f1c3f"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564976062200},"e-33":{"id":"e-33","eventTypeId":"MOUSE_OUT","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-13","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-32"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d3ff036a2938f7448b0a555|0835a9a2-93cc-931f-398a-18a5a07f1c3f"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564976062202},"e-34":{"id":"e-34","eventTypeId":"MOUSE_OVER","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-12","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-35"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d3ff036a2938f7448b0a555|36e87349-b2c2-afb3-8194-8230695a2f1c"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564976083676},"e-35":{"id":"e-35","eventTypeId":"MOUSE_OUT","action":{"id":"","actionTypeId":"GENERAL_START_ACTION","config":{"delay":0,"easing":"","duration":0,"actionListId":"a-13","affectedElements":{},"playInReverse":false,"autoStopEventId":"e-34"}},"mediaQueries":["main","medium","small","tiny"],"target":{"appliesTo":"ELEMENT","styleBlockIds":[],"id":"5d3ff036a2938f7448b0a555|36e87349-b2c2-afb3-8194-8230695a2f1c"},"config":{"loop":false,"scrollOffsetValue":null,"scrollOffsetUnit":null,"delay":null,"direction":null,"effectIn":null},"createdOn":1564976083678}},"actionLists":{"a":{"id":"a","title":"Img1","continuousParameterGroups":[{"id":"a-p","type":"SCROLL_PROGRESS","parameterLabel":"Scroll","continuousActionGroups":[{"keyframe":0,"actionItems":[{"id":"a-n","actionTypeId":"TRANSFORM_SCALE","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":true,"id":"5d2d514fb78ea84593838a4b|d5026328-62c9-4597-b232-f53b2848b10b"},"xValue":1,"yValue":1,"locked":true}}]},{"keyframe":100,"actionItems":[{"id":"a-n-2","actionTypeId":"TRANSFORM_SCALE","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":true,"id":"5d2d514fb78ea84593838a4b|d5026328-62c9-4597-b232-f53b2848b10b"},"xValue":1.2,"yValue":1.2,"locked":true}}]}]}],"createdOn":1561533411945}
18774,"a-6":{"id":"a-6","title":"Thumbnail Image Hover","actionItemGroups":[{"actionItems":[{"id":"a-6-n","actionTypeId":"TRANSFORM_SCALE","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":"CHILDREN","selector":".work-image-content","selectorGuids":["4ce49c8d-2c31-298e-fa6f-93a3167a63a1"]},"xValue":0,"yValue":0,"locked":true}}]},{"actionItems":[{"id":"a-6-n-2","actionTypeId":"TRANSFORM_SCALE","config":{"delay":0,"easing":"outExpo","duration":500,"target":{"useEventTarget":"CHILDREN","selector":".work-image-content","selectorGuids":["4ce49c8d-2c31-298e-fa6f-93a3167a63a1"]},"xValue":1,"yValue":1,"locked":true}}]}],"createdOn":1564381701958,"useFirstGroupAsInitialState":true},"a-7":{"id":"a-7","title":"Image Thumbnail Hover Out","actionItemGroups":[{"actionItems":[{"id":"a-7-n","actionTypeId":"TRANSFORM_SCALE","config":{"delay":0,"easing":"outExpo","duration":150,"target":{"useEventTarget":"CHILDREN","selector":".work-image-content","selectorGuids":["4ce49c8d-2c31-298e-fa6f-93a3167a63a1"]},"xValue":0,"yValue":0,"locked":true}}]}],"createdOn":1564382126029,"useFirstGroupAsInitialState":false},"a-10":{"id":"a-10","title":"Scroll Thumbnail","actionItemGroups":[{"actionItems":[{"id":"a-10-n","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":true,"id":"5d43d9d7c27b0235c82645df|4e062a7c-c373-ab75-363a-0e9c12504f10"},"yValue":0,"xUnit":"PX","yUnit":"PX","zUnit":"PX"}}]},{"actionItems":[{"id":"a-10-n-2","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"easeInOut","duration":4000,"target":{"useEventTarget":true,"id":"5d43d9d7c27b0235c82645df|4e062a7c-c373-ab75-363a-0e9c12504f10"},"yValue":-78,"xUnit":"PX","yUnit":"%","zUnit":"PX"}}]}],"createdOn":1564728586363,"useFirstGroupAsInitialState":true},"a-11":{"id":"a-11","title":"Scroll Thumbnail Normal","actionItemGroups":[{"actionItems":[{"id":"a-11-n","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"","duration":2000,"target":{"useEventTarget":true,"id":"5d43d9d7c27b0235c82645df|4e062a7c-c373-ab75-363a-0e9c12504f10"},"yValue":0,"xUnit":"PX","yUnit":"%","zUnit":"PX"}}]}],"createdOn":1564728720809,"useFirstGroupAsInitialState":false},"a-12":{"id":"a-12","title":"Slide Down","actionItemGroups":[{"actionItems":[{"id":"a-12-n","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"","duration":500,"target":{"useEventTarget":"CHILDREN","selector":".project-item-text","selectorGuids":["76fe73cc-8a91-b3bb-3876-040a205eb9ce"]},"yValue":-100,"xUnit":"PX","yUnit":"%","zUnit":"PX"}},{"id":"a-12-n-4","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":0,"target":{"useEventTarget":"CHILDREN","selector":".project-item-text","selectorGuids":["76fe73cc-8a91-b3bb-3876-040a205eb9ce"]},"value":0,"unit":""}}]},{"actionItems":[{"id":"a-12-n-2","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"outExpo","duration":500,"target":{"useEventTarget":"CHILDREN","selector":".project-item-text","selectorGuids":["76fe73cc-8a91-b3bb-3876-040a205eb9ce"]},"yValue":0,"xUnit":"PX","yUnit":"%","zUnit":"PX"}},{"id":"a-12-n-3","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"","duration":100,"target":{"useEventTarget":"CHILDREN","selector":".project-item-text","selectorGuids":["76fe73cc-8a91-b3bb-3876-040a205eb9ce"]},"value":1,"unit":""}}]}],"createdOn":1564975539579,"useFirstGroupAsInitialState":true},"a-13":{"id":"a-13","title":"Fadeout","actionItemGroups":[{"actionItems":[{"id":"a-13-n","actionTypeId":"STYLE_OPACITY","config":{"delay":0,"easing":"easeInOut","duration":500,"target":{"useEventTarget":"CHILDREN","selector":".project-item-text","selectorGuids":["76fe73cc-8a91-b3bb-3876-040a205eb9ce"]},"value":0,"unit":""}}]},{"actionItems":[{"id":"a-13-n-2","actionTypeId":"TRANSFORM_MOVE","config":{"delay":0,"easing":"","duration":100,"target":{"useEventTarget":"CHILDREN","selector":".project-item-text","selectorGuids":["76fe73cc-8a91-b3bb-3876-040a205eb9ce"]},"yValue":-100,"xUnit":"PX","yUnit":"%","zUnit":"PX"}}]}],"createdOn":1564975628721,"useFirstGroupAsInitialState":false}},"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}]}} 18775);
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.