}\r\n */\n\n this.observations_ = new MapShim();\n\n if (typeof callback !== 'function') {\n throw new TypeError('The callback provided as parameter 1 is not a function.');\n }\n\n this.callback_ = callback;\n this.controller_ = controller;\n this.callbackCtx_ = callbackCtx;\n }\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\n\n\n ResizeObserverSPI.prototype.observe = function (target) {\n if (!arguments.length) {\n throw new TypeError('1 argument required, but only 0 present.');\n } // Do nothing if current environment doesn't have the Element interface.\n\n\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\n return;\n }\n\n if (!(target instanceof getWindowOf(target).Element)) {\n throw new TypeError('parameter 1 is not of type \"Element\".');\n }\n\n var observations = this.observations_; // Do nothing if element is already being observed.\n\n if (observations.has(target)) {\n return;\n }\n\n observations.set(target, new ResizeObservation(target));\n this.controller_.addObserver(this); // Force the update of observations.\n\n this.controller_.refresh();\n };\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\n\n\n ResizeObserverSPI.prototype.unobserve = function (target) {\n if (!arguments.length) {\n throw new TypeError('1 argument required, but only 0 present.');\n } // Do nothing if current environment doesn't have the Element interface.\n\n\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\n return;\n }\n\n if (!(target instanceof getWindowOf(target).Element)) {\n throw new TypeError('parameter 1 is not of type \"Element\".');\n }\n\n var observations = this.observations_; // Do nothing if element is not being observed.\n\n if (!observations.has(target)) {\n return;\n }\n\n observations.delete(target);\n\n if (!observations.size) {\n this.controller_.removeObserver(this);\n }\n };\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\n\n\n ResizeObserverSPI.prototype.disconnect = function () {\n this.clearActive();\n this.observations_.clear();\n this.controller_.removeObserver(this);\n };\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\n\n\n ResizeObserverSPI.prototype.gatherActive = function () {\n var _this = this;\n\n this.clearActive();\n this.observations_.forEach(function (observation) {\n if (observation.isActive()) {\n _this.activeObservations_.push(observation);\n }\n });\n };\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\n\n\n ResizeObserverSPI.prototype.broadcastActive = function () {\n // Do nothing if observer doesn't have active observations.\n if (!this.hasActive()) {\n return;\n }\n\n var ctx = this.callbackCtx_; // Create ResizeObserverEntry instance for every active observation.\n\n var entries = this.activeObservations_.map(function (observation) {\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\n });\n this.callback_.call(ctx, entries, ctx);\n this.clearActive();\n };\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\n\n\n ResizeObserverSPI.prototype.clearActive = function () {\n this.activeObservations_.splice(0);\n };\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\n\n\n ResizeObserverSPI.prototype.hasActive = function () {\n return this.activeObservations_.length > 0;\n };\n\n return ResizeObserverSPI;\n}(); // Registry of internal observers. If WeakMap is not available use current shim\n// for the Map collection as it has all required methods and because WeakMap\n// can't be fully polyfilled anyway.\n\n\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\n\nvar ResizeObserver =\n/** @class */\nfunction () {\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\n function ResizeObserver(callback) {\n if (!(this instanceof ResizeObserver)) {\n throw new TypeError('Cannot call a class as a function.');\n }\n\n if (!arguments.length) {\n throw new TypeError('1 argument required, but only 0 present.');\n }\n\n var controller = ResizeObserverController.getInstance();\n var observer = new ResizeObserverSPI(callback, controller, this);\n observers.set(this, observer);\n }\n\n return ResizeObserver;\n}(); // Expose public methods of ResizeObserver.\n\n\n['observe', 'unobserve', 'disconnect'].forEach(function (method) {\n ResizeObserver.prototype[method] = function () {\n var _a;\n\n return (_a = observers.get(this))[method].apply(_a, arguments);\n };\n});\n\nvar index = function () {\n // Export existing implementation if available.\n if (typeof global$1.ResizeObserver !== 'undefined') {\n return global$1.ResizeObserver;\n }\n\n return ResizeObserver;\n}();\n\nexport default index;","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","\"use strict\";\n\nfunction _interopRequireDefault(o) {\n return o && o.__esModule ? o : {\n default: o\n };\n}\n\nfunction _objectWithoutProperties(o, e) {\n var r = {};\n\n for (var t in o) {\n e.indexOf(t) >= 0 || Object.prototype.hasOwnProperty.call(o, t) && (r[t] = o[t]);\n }\n\n return r;\n}\n\nfunction make(o, e) {\n var r = e.distance,\n t = e.left,\n p = e.right,\n a = e.up,\n l = e.down,\n i = e.top,\n u = e.bottom,\n n = e.big,\n s = e.mirror,\n d = e.opposite,\n _ = (r ? r.toString() : 0) + ((t ? 1 : 0) | (p ? 2 : 0) | (i || l ? 4 : 0) | (u || a ? 8 : 0) | (s ? 16 : 0) | (d ? 32 : 0) | (o ? 64 : 0) | (n ? 128 : 0));\n\n if (lookup.hasOwnProperty(_)) return lookup[_];\n var f = t || p || a || l || i || u,\n y = void 0,\n b = void 0;\n\n if (f) {\n if (!s != !(o && d)) {\n var v = [p, t, u, i, l, a];\n t = v[0], p = v[1], i = v[2], u = v[3], a = v[4], l = v[5];\n }\n\n var c = r || (n ? \"2000px\" : \"100%\");\n y = t ? \"-\" + c : p ? c : \"0\", b = l || i ? \"-\" + c : a || u ? c : \"0\";\n }\n\n return lookup[_] = (0, _globals.animation)((o ? \"to\" : \"from\") + \" {opacity: 0;\" + (f ? \" transform: translate3d(\" + y + \", \" + b + \", 0);\" : \"\") + \"}\\n \" + (o ? \"from\" : \"to\") + \" {opacity: 1;transform: none;} \"), lookup[_];\n}\n\nfunction Fade() {\n var o = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : _globals.defaults,\n e = arguments.length > 1 && void 0 !== arguments[1] && arguments[1],\n r = o.children,\n t = (o.out, o.forever),\n p = o.timeout,\n a = o.duration,\n l = void 0 === a ? _globals.defaults.duration : a,\n i = o.delay,\n u = void 0 === i ? _globals.defaults.delay : i,\n n = o.count,\n s = void 0 === n ? _globals.defaults.count : n,\n d = _objectWithoutProperties(o, [\"children\", \"out\", \"forever\", \"timeout\", \"duration\", \"delay\", \"count\"]),\n _ = {\n make: make,\n duration: void 0 === p ? l : p,\n delay: u,\n forever: t,\n count: s,\n style: {\n animationFillMode: \"both\"\n },\n reverse: d.left\n };\n\n return e ? (0, _wrap2.default)(d, _, _, r) : _;\n}\n\nObject.defineProperty(exports, \"__esModule\", {\n value: !0\n});\n\nvar _propTypes = require(\"prop-types\"),\n _globals = require(\"./globals\"),\n _wrap = require(\"./wrap\"),\n _wrap2 = _interopRequireDefault(_wrap),\n propTypes = {\n out: _propTypes.bool,\n left: _propTypes.bool,\n right: _propTypes.bool,\n top: _propTypes.bool,\n bottom: _propTypes.bool,\n big: _propTypes.bool,\n mirror: _propTypes.bool,\n opposite: _propTypes.bool,\n duration: _propTypes.number,\n timeout: _propTypes.number,\n distance: _propTypes.string,\n delay: _propTypes.number,\n count: _propTypes.number,\n forever: _propTypes.bool\n},\n lookup = {};\n\nFade.propTypes = propTypes, exports.default = Fade, module.exports = exports.default;","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","\"use strict\";\n\nfunction insertRule(e) {\n try {\n return sheet.insertRule(e, sheet.cssRules.length);\n } catch (e) {\n console.warn(\"react-reveal - animation failed\");\n }\n}\n\nfunction cascade(e, n, t, o, r) {\n var s = Math.log(o),\n i = Math.log(r),\n a = (i - s) / (t - n);\n return Math.exp(s + a * (e - n));\n}\n\nfunction animation(e) {\n if (!sheet) return \"\";\n var n = \"@keyframes \" + (name + counter) + \"{\" + e + \"}\",\n t = effectMap[e];\n return t ? \"\" + name + t : (sheet.insertRule(n, sheet.cssRules.length), effectMap[e] = counter, \"\" + name + counter++);\n}\n\nfunction hideAll() {\n globalHide || (exports.globalHide = globalHide = !0, window.removeEventListener(\"scroll\", hideAll, !0), insertRule(\".\" + namespace + \" { opacity: 0; }\"), window.removeEventListener(\"orientationchange\", hideAll, !0), window.document.removeEventListener(\"visibilitychange\", hideAll));\n}\n\nfunction config(e) {\n var n = e.ssrFadeout;\n exports.fadeOutEnabled = fadeOutEnabled = n;\n}\n\nObject.defineProperty(exports, \"__esModule\", {\n value: !0\n}), exports.insertRule = insertRule, exports.cascade = cascade, exports.animation = animation, exports.hideAll = hideAll, exports.default = config;\n\nvar namespace = exports.namespace = \"react-reveal\",\n defaults = exports.defaults = {\n duration: 1e3,\n delay: 0,\n count: 1\n},\n ssr = exports.ssr = !0,\n observerMode = exports.observerMode = !1,\n raf = exports.raf = function (e) {\n return window.setTimeout(e, 66);\n},\n disableSsr = exports.disableSsr = function () {\n return exports.ssr = ssr = !1;\n},\n fadeOutEnabled = exports.fadeOutEnabled = !1,\n ssrFadeout = exports.ssrFadeout = function () {\n var e = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];\n return exports.fadeOutEnabled = fadeOutEnabled = e;\n},\n globalHide = exports.globalHide = !1,\n ie10 = exports.ie10 = !1,\n collapseend = exports.collapseend = void 0,\n counter = 1,\n effectMap = {},\n sheet = !1,\n name = namespace + \"-\" + Math.floor(1e15 * Math.random()) + \"-\";\n\nif (\"undefined\" != typeof window && \"nodejs\" !== window.name && window.document && \"undefined\" != typeof navigator) {\n exports.observerMode = observerMode = \"IntersectionObserver\" in window && \"IntersectionObserverEntry\" in window && \"intersectionRatio\" in window.IntersectionObserverEntry.prototype && /\\{\\s*\\[native code\\]\\s*\\}/.test(\"\" + IntersectionObserver), exports.raf = raf = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || raf, exports.ssr = ssr = window.document.querySelectorAll(\"div[data-reactroot]\").length > 0, -1 !== navigator.appVersion.indexOf(\"MSIE 10\") && (exports.ie10 = ie10 = !0), ssr && \"performance\" in window && \"timing\" in window.performance && \"domContentLoadedEventEnd\" in window.performance.timing && window.performance.timing.domLoading && Date.now() - window.performance.timing.domLoading < 300 && (exports.ssr = ssr = !1), ssr && window.setTimeout(disableSsr, 1500), observerMode || (exports.collapseend = collapseend = document.createEvent(\"Event\"), collapseend.initEvent(\"collapseend\", !0, !0));\n var element = document.createElement(\"style\");\n document.head.appendChild(element), element.sheet && element.sheet.cssRules && element.sheet.insertRule && (sheet = element.sheet, window.addEventListener(\"scroll\", hideAll, !0), window.addEventListener(\"orientationchange\", hideAll, !0), window.document.addEventListener(\"visibilitychange\", hideAll));\n}","var baseIsMap = require('./_baseIsMap'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","/*!\n Copyright (c) 2017 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n\n/* global define */\n(function () {\n 'use strict';\n\n var hasOwn = {}.hasOwnProperty;\n\n function classNames() {\n var classes = [];\n\n for (var i = 0; i < arguments.length; i++) {\n var arg = arguments[i];\n if (!arg) continue;\n var argType = typeof arg;\n\n if (argType === 'string' || argType === 'number') {\n classes.push(arg);\n } else if (Array.isArray(arg) && arg.length) {\n var inner = classNames.apply(null, arg);\n\n if (inner) {\n classes.push(inner);\n }\n } else if (argType === 'object') {\n for (var key in arg) {\n if (hasOwn.call(arg, key) && arg[key]) {\n classes.push(key);\n }\n }\n }\n }\n\n return classes.join(' ');\n }\n\n if (typeof module !== 'undefined' && module.exports) {\n classNames.default = classNames;\n module.exports = classNames;\n } else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n // register as 'classnames', consistent with npm package name\n define('classnames', [], function () {\n return classNames;\n });\n } else {\n window.classNames = classNames;\n }\n})();","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","module.exports = __webpack_public_path__ + \"static/qualego-34c02ee1170cdf5741cede19a04007b3.png\";","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","\"use strict\";\n\nfunction _interopRequireDefault(e) {\n return e && e.__esModule ? e : {\n default: e\n };\n}\n\nfunction wrap(e, t, a, r) {\n return \"in\" in e && (e.when = e.in), _react2.default.Children.count(r) < 2 ? _react2.default.createElement(_RevealBase2.default, _extends({}, e, {\n inEffect: t,\n outEffect: a,\n children: r\n })) : (r = _react2.default.Children.map(r, function (r) {\n return _react2.default.createElement(_RevealBase2.default, _extends({}, e, {\n inEffect: t,\n outEffect: a,\n children: r\n }));\n }), \"Fragment\" in _react2.default ? _react2.default.createElement(_react2.default.Fragment, null, r) : _react2.default.createElement(\"span\", null, r));\n}\n\nObject.defineProperty(exports, \"__esModule\", {\n value: !0\n});\n\nvar _extends = Object.assign || function (e) {\n for (var t = 1; t < arguments.length; t++) {\n var a = arguments[t];\n\n for (var r in a) {\n Object.prototype.hasOwnProperty.call(a, r) && (e[r] = a[r]);\n }\n }\n\n return e;\n};\n\nexports.default = wrap;\n\nvar _react = require(\"react\"),\n _react2 = _interopRequireDefault(_react),\n _RevealBase = require(\"./RevealBase\"),\n _RevealBase2 = _interopRequireDefault(_RevealBase);\n\nmodule.exports = exports.default;","require('../../modules/es6.object.set-prototype-of');\nmodule.exports = require('../../modules/_core').Object.setPrototypeOf;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.starOutline = void 0;\nvar starOutline = {\n \"viewBox\": \"0 0 24 24\",\n \"children\": [{\n \"name\": \"path\",\n \"attribs\": {\n \"d\": \"M16.855 20.966c-.224 0-.443-.05-.646-.146l-.104-.051-4.107-2.343-4.107 2.344-.106.053c-.488.228-1.085.174-1.521-.143-.469-.34-.701-.933-.586-1.509l.957-4.642-1.602-1.457-1.895-1.725-.078-.082c-.375-.396-.509-.97-.34-1.492.173-.524.62-.912 1.16-1.009l.102-.018 4.701-.521 1.946-4.31.06-.11c.262-.473.764-.771 1.309-.771.543 0 1.044.298 1.309.77l.06.112 1.948 4.312 4.701.521.104.017c.539.1.986.486 1.158 1.012.17.521.035 1.098-.34 1.494l-.078.078-3.498 3.184.957 4.632c.113.587-.118 1.178-.59 1.519-.252.182-.556.281-.874.281zm-8.149-6.564c-.039.182-.466 2.246-.845 4.082l3.643-2.077c.307-.175.684-.175.99 0l3.643 2.075-.849-4.104c-.071-.346.045-.705.308-.942l3.1-2.822-4.168-.461c-.351-.039-.654-.26-.801-.584l-1.728-3.821-1.726 3.821c-.146.322-.45.543-.801.584l-4.168.461 3.1 2.822c.272.246.384.617.302.966z\"\n },\n \"children\": []\n }]\n};\nexports.starOutline = starOutline;","/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\n\n/* global window, document */\n'use strict';\n\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if ('value' in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _get = function get(_x, _x2, _x3) {\n var _again = true;\n\n _function: while (_again) {\n var object = _x,\n property = _x2,\n receiver = _x3;\n _again = false;\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n _x = parent;\n _x2 = property;\n _x3 = receiver;\n _again = true;\n desc = parent = undefined;\n continue _function;\n }\n } else if ('value' in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n }\n};\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError('Cannot call a class as a function');\n }\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== 'function' && superClass !== null) {\n throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _subscribeUiEvent = require('subscribe-ui-event');\n\nvar _classnames = require('classnames');\n\nvar _classnames2 = _interopRequireDefault(_classnames);\n\nvar _shallowequal = require('shallowequal');\n\nvar _shallowequal2 = _interopRequireDefault(_shallowequal); // constants\n\n\nvar STATUS_ORIGINAL = 0; // The default status, locating at the original position.\n\nvar STATUS_RELEASED = 1; // The released status, locating at somewhere on document but not default one.\n\nvar STATUS_FIXED = 2; // The sticky status, locating fixed to the top or the bottom of screen.\n\nvar TRANSFORM_PROP = 'transform'; // global variable for all instances\n\nvar doc;\nvar docBody;\nvar docEl;\nvar canEnableTransforms = true; // Use transform by default, so no Sticky on lower-end browser when no Modernizr\n\nvar M;\nvar scrollDelta = 0;\nvar win;\nvar winHeight = -1;\n\nvar Sticky = function (_Component) {\n _inherits(Sticky, _Component);\n\n function Sticky(props, context) {\n _classCallCheck(this, Sticky);\n\n _get(Object.getPrototypeOf(Sticky.prototype), 'constructor', this).call(this, props, context);\n\n this.handleResize = this.handleResize.bind(this);\n this.handleScroll = this.handleScroll.bind(this);\n this.handleScrollStart = this.handleScrollStart.bind(this);\n this.delta = 0;\n this.stickyTop = 0;\n this.stickyBottom = 0;\n this.frozen = false;\n this.skipNextScrollEvent = false;\n this.scrollTop = -1;\n this.bottomBoundaryTarget;\n this.topTarget;\n this.subscribers;\n this.state = {\n top: 0,\n // A top offset from viewport top where Sticky sticks to when scrolling up\n bottom: 0,\n // A bottom offset from viewport top where Sticky sticks to when scrolling down\n width: 0,\n // Sticky width\n height: 0,\n // Sticky height\n x: 0,\n // The original x of Sticky\n y: 0,\n // The original y of Sticky\n topBoundary: 0,\n // The top boundary on document\n bottomBoundary: Infinity,\n // The bottom boundary on document\n status: STATUS_ORIGINAL,\n // The Sticky status\n pos: 0,\n // Real y-axis offset for rendering position-fixed and position-relative\n activated: false // once browser info is available after mounted, it becomes true to avoid checksum error\n\n };\n }\n\n _createClass(Sticky, [{\n key: 'getTargetHeight',\n value: function getTargetHeight(target) {\n return target && target.offsetHeight || 0;\n }\n }, {\n key: 'getTopPosition',\n value: function getTopPosition(top) {\n // TODO, topTarget is for current layout, may remove\n // a top argument can be provided to override reading from the props\n top = top || this.props.top || this.props.topTarget || 0;\n\n if (typeof top === 'string') {\n if (!this.topTarget) {\n this.topTarget = doc.querySelector(top);\n }\n\n top = this.getTargetHeight(this.topTarget);\n }\n\n return top;\n }\n }, {\n key: 'getTargetBottom',\n value: function getTargetBottom(target) {\n if (!target) {\n return -1;\n }\n\n var rect = target.getBoundingClientRect();\n return this.scrollTop + rect.bottom;\n }\n }, {\n key: 'getBottomBoundary',\n value: function getBottomBoundary(bottomBoundary) {\n // a bottomBoundary can be provided to avoid reading from the props\n var boundary = bottomBoundary || this.props.bottomBoundary; // TODO, bottomBoundary was an object, depricate it later.\n\n if (typeof boundary === 'object') {\n boundary = boundary.value || boundary.target || 0;\n }\n\n if (typeof boundary === 'string') {\n if (!this.bottomBoundaryTarget) {\n this.bottomBoundaryTarget = doc.querySelector(boundary);\n }\n\n boundary = this.getTargetBottom(this.bottomBoundaryTarget);\n }\n\n return boundary && boundary > 0 ? boundary : Infinity;\n }\n }, {\n key: 'reset',\n value: function reset() {\n this.setState({\n status: STATUS_ORIGINAL,\n pos: 0\n });\n }\n }, {\n key: 'release',\n value: function release(pos) {\n this.setState({\n status: STATUS_RELEASED,\n pos: pos - this.state.y\n });\n }\n }, {\n key: 'fix',\n value: function fix(pos) {\n this.setState({\n status: STATUS_FIXED,\n pos: pos\n });\n }\n /**\n * Update the initial position, width, and height. It should update whenever children change.\n * @param {Object} options optional top and bottomBoundary new values\n */\n\n }, {\n key: 'updateInitialDimension',\n value: function updateInitialDimension(options) {\n options = options || {};\n var outerRect = this.outerElement.getBoundingClientRect();\n var innerRect = this.innerElement.getBoundingClientRect();\n var width = outerRect.width || outerRect.right - outerRect.left;\n var height = innerRect.height || innerRect.bottom - innerRect.top;\n ;\n var outerY = outerRect.top + this.scrollTop;\n this.setState({\n top: this.getTopPosition(options.top),\n bottom: Math.min(this.state.top + height, winHeight),\n width: width,\n height: height,\n x: outerRect.left,\n y: outerY,\n bottomBoundary: this.getBottomBoundary(options.bottomBoundary),\n topBoundary: outerY\n });\n }\n }, {\n key: 'handleResize',\n value: function handleResize(e, ae) {\n if (this.props.shouldFreeze()) {\n return;\n }\n\n winHeight = ae.resize.height;\n this.updateInitialDimension();\n this.update();\n }\n }, {\n key: 'handleScrollStart',\n value: function handleScrollStart(e, ae) {\n this.frozen = this.props.shouldFreeze();\n\n if (this.frozen) {\n return;\n }\n\n if (this.scrollTop === ae.scroll.top) {\n // Scroll position hasn't changed,\n // do nothing\n this.skipNextScrollEvent = true;\n } else {\n this.scrollTop = ae.scroll.top;\n this.updateInitialDimension();\n }\n }\n }, {\n key: 'handleScroll',\n value: function handleScroll(e, ae) {\n // Scroll doesn't need to be handled\n if (this.skipNextScrollEvent) {\n this.skipNextScrollEvent = false;\n return;\n }\n\n scrollDelta = ae.scroll.delta;\n this.scrollTop = ae.scroll.top;\n this.update();\n }\n /**\n * Update Sticky position.\n */\n\n }, {\n key: 'update',\n value: function update() {\n var disabled = !this.props.enabled || this.state.bottomBoundary - this.state.topBoundary <= this.state.height || this.state.width === 0 && this.state.height === 0;\n\n if (disabled) {\n if (this.state.status !== STATUS_ORIGINAL) {\n this.reset();\n }\n\n return;\n }\n\n var delta = scrollDelta; // \"top\" and \"bottom\" are the positions that this.state.top and this.state.bottom project\n // on document from viewport.\n\n var top = this.scrollTop + this.state.top;\n var bottom = this.scrollTop + this.state.bottom; // There are 2 principles to make sure Sticky won't get wrong so much:\n // 1. Reset Sticky to the original postion when \"top\" <= topBoundary\n // 2. Release Sticky to the bottom boundary when \"bottom\" >= bottomBoundary\n\n if (top <= this.state.topBoundary) {\n // #1\n this.reset();\n } else if (bottom >= this.state.bottomBoundary) {\n // #2\n this.stickyBottom = this.state.bottomBoundary;\n this.stickyTop = this.stickyBottom - this.state.height;\n this.release(this.stickyTop);\n } else {\n if (this.state.height > winHeight - this.state.top) {\n // In this case, Sticky is higher then viewport minus top offset\n switch (this.state.status) {\n case STATUS_ORIGINAL:\n this.release(this.state.y);\n this.stickyTop = this.state.y;\n this.stickyBottom = this.stickyTop + this.state.height;\n // Commentting out \"break\" is on purpose, because there is a chance to transit to FIXED\n // from ORIGINAL when calling window.scrollTo().\n // break;\n\n case STATUS_RELEASED:\n // If \"top\" and \"bottom\" are inbetween stickyTop and stickyBottom, then Sticky is in\n // RELEASE status. Otherwise, it changes to FIXED status, and its bottom sticks to\n // viewport bottom when scrolling down, or its top sticks to viewport top when scrolling up.\n this.stickyBottom = this.stickyTop + this.state.height;\n\n if (delta > 0 && bottom > this.stickyBottom) {\n this.fix(this.state.bottom - this.state.height);\n } else if (delta < 0 && top < this.stickyTop) {\n this.fix(this.state.top);\n }\n\n break;\n\n case STATUS_FIXED:\n var toRelease = true;\n var pos = this.state.pos;\n var height = this.state.height; // In regular cases, when Sticky is in FIXED status,\n // 1. it's top will stick to the screen top,\n // 2. it's bottom will stick to the screen bottom,\n // 3. if not the cases above, then it's height gets changed\n\n if (delta > 0 && pos === this.state.top) {\n // case 1, and scrolling down\n this.stickyTop = top - delta;\n this.stickyBottom = this.stickyTop + height;\n } else if (delta < 0 && pos === this.state.bottom - height) {\n // case 2, and scrolling up\n this.stickyBottom = bottom - delta;\n this.stickyTop = this.stickyBottom - height;\n } else if (pos !== this.state.bottom - height && pos !== this.state.top) {\n // case 3\n // This case only happens when Sticky's bottom sticks to the screen bottom and\n // its height gets changed. Sticky should be in RELEASE status and update its\n // sticky bottom by calculating how much height it changed.\n var deltaHeight = pos + height - this.state.bottom;\n this.stickyBottom = bottom - delta + deltaHeight;\n this.stickyTop = this.stickyBottom - height;\n } else {\n toRelease = false;\n }\n\n if (toRelease) {\n this.release(this.stickyTop);\n }\n\n break;\n }\n } else {\n // In this case, Sticky is shorter then viewport minus top offset\n // and will always fix to the top offset of viewport\n this.fix(this.state.top);\n }\n }\n\n this.delta = delta;\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(nextProps) {\n this.updateInitialDimension(nextProps);\n this.update();\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps, prevState) {\n var _this = this;\n\n if (prevState.status !== this.state.status && this.props.onStateChange) {\n this.props.onStateChange({\n status: this.state.status\n });\n } // if the props for enabling are toggled, then trigger the update or reset depending on the current props\n\n\n if (prevProps.enabled !== this.props.enabled) {\n if (this.props.enabled) {\n this.setState({\n activated: true\n }, function () {\n _this.updateInitialDimension();\n\n _this.update();\n });\n } else {\n this.setState({\n activated: false\n }, function () {\n _this.reset();\n });\n }\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n var subscribers = this.subscribers || [];\n\n for (var i = subscribers.length - 1; i >= 0; i--) {\n this.subscribers[i].unsubscribe();\n }\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n // Only initialize the globals if this is the first\n // time this component type has been mounted\n if (!win) {\n win = window;\n doc = document;\n docEl = doc.documentElement;\n docBody = doc.body;\n winHeight = win.innerHeight || docEl.clientHeight;\n M = window.Modernizr; // No Sticky on lower-end browser when no Modernizr\n\n if (M && M.prefixed) {\n canEnableTransforms = M.csstransforms3d;\n TRANSFORM_PROP = M.prefixed('transform');\n }\n } // when mount, the scrollTop is not necessary on the top\n\n\n this.scrollTop = docBody.scrollTop + docEl.scrollTop;\n\n if (this.props.enabled) {\n this.setState({\n activated: true\n });\n this.updateInitialDimension();\n this.update();\n } // bind the listeners regardless if initially enabled - allows the component to toggle sticky functionality\n\n\n this.subscribers = [(0, _subscribeUiEvent.subscribe)('scrollStart', this.handleScrollStart.bind(this), {\n useRAF: true\n }), (0, _subscribeUiEvent.subscribe)('scroll', this.handleScroll.bind(this), {\n useRAF: true,\n enableScrollInfo: true\n }), (0, _subscribeUiEvent.subscribe)('resize', this.handleResize.bind(this), {\n enableResizeInfo: true\n })];\n }\n }, {\n key: 'translate',\n value: function translate(style, pos) {\n var enableTransforms = canEnableTransforms && this.props.enableTransforms;\n\n if (enableTransforms && this.state.activated) {\n style[TRANSFORM_PROP] = 'translate3d(0,' + Math.round(pos) + 'px,0)';\n } else {\n style.top = pos + 'px';\n }\n }\n }, {\n key: 'shouldComponentUpdate',\n value: function shouldComponentUpdate(nextProps, nextState) {\n return !this.props.shouldFreeze() && !((0, _shallowequal2['default'])(this.props, nextProps) && (0, _shallowequal2['default'])(this.state, nextState));\n }\n }, {\n key: 'render',\n value: function render() {\n var _classNames,\n _this2 = this; // TODO, \"overflow: auto\" prevents collapse, need a good way to get children height\n\n\n var innerStyle = {\n position: this.state.status === STATUS_FIXED ? 'fixed' : 'relative',\n top: this.state.status === STATUS_FIXED ? '0px' : '',\n zIndex: this.props.innerZ\n };\n var outerStyle = {}; // always use translate3d to enhance the performance\n\n this.translate(innerStyle, this.state.pos);\n\n if (this.state.status !== STATUS_ORIGINAL) {\n innerStyle.width = this.state.width + 'px';\n outerStyle.height = this.state.height + 'px';\n }\n\n var outerClasses = (0, _classnames2['default'])('sticky-outer-wrapper', this.props.className, (_classNames = {}, _defineProperty(_classNames, this.props.activeClass, this.state.status === STATUS_FIXED), _defineProperty(_classNames, this.props.releasedClass, this.state.status === STATUS_RELEASED), _classNames));\n var children = this.props.children;\n return _react2['default'].createElement('div', {\n ref: function ref(outer) {\n _this2.outerElement = outer;\n },\n className: outerClasses,\n style: outerStyle\n }, _react2['default'].createElement('div', {\n ref: function ref(inner) {\n _this2.innerElement = inner;\n },\n className: 'sticky-inner-wrapper',\n style: innerStyle\n }, typeof children === 'function' ? children({\n status: this.state.status\n }) : children));\n }\n }]);\n\n return Sticky;\n}(_react.Component);\n\nSticky.displayName = 'Sticky';\nSticky.defaultProps = {\n shouldFreeze: function shouldFreeze() {\n return false;\n },\n enabled: true,\n top: 0,\n bottomBoundary: 0,\n enableTransforms: true,\n activeClass: 'active',\n releasedClass: 'released',\n onStateChange: null\n};\n/**\n * @param {Bool} enabled A switch to enable or disable Sticky.\n * @param {String/Number} top A top offset px for Sticky. Could be a selector representing a node\n * whose height should serve as the top offset.\n * @param {String/Number} bottomBoundary A bottom boundary px on document where Sticky will stop.\n * Could be a selector representing a node whose bottom should serve as the bottom boudary.\n */\n\nSticky.propTypes = {\n enabled: _propTypes2['default'].bool,\n top: _propTypes2['default'].oneOfType([_propTypes2['default'].string, _propTypes2['default'].number]),\n bottomBoundary: _propTypes2['default'].oneOfType([_propTypes2['default'].object, // TODO, may remove\n _propTypes2['default'].string, _propTypes2['default'].number]),\n enableTransforms: _propTypes2['default'].bool,\n activeClass: _propTypes2['default'].string,\n releasedClass: _propTypes2['default'].string,\n onStateChange: _propTypes2['default'].func,\n shouldFreeze: _propTypes2['default'].func,\n innerZ: _propTypes2['default'].oneOfType([_propTypes2['default'].string, _propTypes2['default'].number])\n};\nSticky.STATUS_ORIGINAL = STATUS_ORIGINAL;\nSticky.STATUS_RELEASED = STATUS_RELEASED;\nSticky.STATUS_FIXED = STATUS_FIXED;\nmodule.exports = Sticky;","require('./_wks-define')('asyncIterator');\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAHgCAQAAADX3XYeAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAAmJLR0QAAKqNIzIAAAAJcEhZcwAADdcAAA3XAUIom3gAAAAHdElNRQfjAQkNFyOzUMMBAAACGElEQVR42u3csRGAMBADwTcF038GPZjAc8NuBUou1QwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAF+tuU9PAHateU5PAHZdpwcA+wQMYQKGMAFDmIAhTMAQJmAIEzCECRjCBAxhAoYwAUOYgCFMwBAmYAgTMIQJGMIEDGEChjABQ5iAIcytLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8GsvZ4ECCdeosigAAAAldEVYdGRhdGU6Y3JlYXRlADIwMTktMDEtMDlUMTI6MjM6MzUrMDE6MDD0iIpXAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDE5LTAxLTA5VDEyOjIzOjM1KzAxOjAwhdUy6wAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAAASUVORK5CYII=\"","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","module.exports = __webpack_public_path__ + \"static/bcf-4b0c27c6f1ae619024f5bbc29881f54e.png\";","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","var isObject = require('./isObject'),\n now = require('./now'),\n toNumber = require('./toNumber');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n","const colors = {\n transparent: \"transparent\",\n labelColor: \"#767676\",\n lightBorder: \"#f1f4f6\",\n inactiveField: \"#F7F8FB\",\n inactiveButton: \"#b7dbdd\",\n inactiveIcon: \"#EBEBEB\",\n primaryHover: \"#3C74FF\",\n secondary: \"#09142E\",\n secondaryHover: \"#112045\",\n yellow: \"#FFA740\",\n yellowHover: \"#F6C416\",\n borderColor: \"#E8EBF1\",\n black: \"#000000\",\n white: \"#ffffff\",\n light: \"#dfecfb\",\n gray: \"#E4E4E4\",\n primary: \"#007FFF\",\n headingColor: \"#0F2137\",\n quoteText: \"#343D48\",\n menu: \"#0D233E\",\n textColor: \"rgba(52, 61, 72, 0.8)\",\n linkColor: \"#007FFF\",\n shadow: \"rgba(38, 78, 118, 0.1)\"\n};\n\nexport default colors;\n","import colors from \"./colors\";\nexport const theme = {\n breakpoints: [480, 768, 990, 1220],\n space: [0, 5, 10, 15, 20, 25, 30, 40, 56, 71, 91],\n fontSizes: [10, 12, 14, 15, 16, 20, 24, 36, 48, 55, 60, 81],\n fontWeights: [300, 400, 500, 600, 700, 800, 900],\n lineHeights: {\n solid: 1,\n title: 1.25,\n copy: 1.5\n },\n letterSpacings: {\n normal: \"normal\",\n tracked: \"0.1em\",\n tight: \"-0.05em\",\n mega: \"0.25em\"\n },\n fonts: {\n roboto: '\"Roboto\", sans-serif',\n montserrat: '\"Montserrat\", sans-serif'\n },\n borders: [0, \"1px solid\", \"2px solid\", \"4px solid\"],\n radius: [0, 3, 5, 10, 15, 20, 25, 50, 60, \"50%\"],\n colors,\n colorStyles: {\n primary: {\n color: colors.primary,\n borderColor: colors.primary,\n \"&:hover\": {\n color: colors.primaryHover,\n borderColor: colors.primaryHover\n }\n },\n secondary: {\n color: colors.secondary,\n borderColor: colors.secondary,\n \"&:hover\": {\n color: colors.secondaryHover,\n borderColor: colors.secondaryHover\n }\n },\n warning: {\n color: colors.yellow,\n borderColor: colors.yellow,\n \"&:hover\": {\n color: colors.yellowHover,\n borderColor: colors.yellowHover\n }\n },\n error: {\n color: colors.secondaryHover,\n borderColor: colors.secondaryHover,\n \"&:hover\": {\n color: colors.secondary,\n borderColor: colors.secondary\n }\n },\n primaryWithBg: {\n color: colors.white,\n backgroundColor: colors.primary,\n borderColor: colors.primary,\n \"&:hover\": {\n backgroundColor: colors.primaryHover,\n borderColor: colors.primaryHover\n }\n },\n secondaryWithBg: {\n color: colors.white,\n backgroundColor: colors.secondary,\n borderColor: colors.secondary,\n \"&:hover\": {\n backgroundColor: colors.secondaryHover,\n borderColor: colors.secondaryHover\n }\n },\n warningWithBg: {\n color: colors.white,\n backgroundColor: colors.yellow,\n borderColor: colors.yellow,\n \"&:hover\": {\n backgroundColor: colors.yellowHover,\n borderColor: colors.yellowHover\n }\n },\n errorWithBg: {\n color: colors.white,\n backgroundColor: colors.secondaryHover,\n borderColor: colors.secondaryHover,\n \"&:hover\": {\n backgroundColor: colors.secondary,\n borderColor: colors.secondary\n }\n }\n },\n buttonStyles: {\n textButton: {\n border: 0,\n color: colors.primary,\n padding: 0,\n height: \"auto\",\n backgroundColor: `${colors.transparent}`\n },\n outlined: {\n borderWidth: \"1px\",\n borderStyle: \"solid\",\n backgroundColor: colors.transparent\n },\n fab: {\n border: \"0\",\n width: \"40px\",\n height: \"40px\",\n padding: 0,\n borderRadius: \"50%\",\n justifyContent: \"center\",\n \"span.btn-icon\": {\n paddingLeft: 0\n }\n },\n extendedFab: {\n border: \"0\",\n minWidth: \"50px\",\n height: \"40px\",\n borderRadius: \"50px\",\n justifyContent: \"center\"\n }\n }\n};\n","import React, { useReducer } from 'react';\n\nconst initialState = {\n isOpen: false,\n};\n\nfunction reducer(state, action) {\n switch (action.type) {\n case 'TOGGLE':\n return {\n ...state,\n isOpen: !state.isOpen,\n };\n default:\n return state;\n }\n}\nexport const DrawerContext = React.createContext({});\n\nexport const DrawerProvider = ({ children }) => {\n const [state, dispatch] = useReducer(reducer, initialState);\n return (\n \n {children}\n \n );\n};\n","import React, { useContext } from 'react';\nimport PropTypes from 'prop-types';\nimport Scrollspy from 'react-scrollspy';\nimport AnchorLink from 'react-anchor-link-smooth-scroll';\n\nimport { DrawerContext } from '../../contexts/DrawerContext';\n\nconst ScrollSpyMenu = ({ className, menuItems, drawerClose, ...props }) => {\n const { dispatch } = useContext(DrawerContext);\n // empty array for scrollspy items\n const scrollItems = [];\n\n // convert menu path to scrollspy items\n menuItems.forEach(item => {\n scrollItems.push(item.path.slice(1));\n });\n\n // Add all classs to an array\n const addAllClasses = ['scrollspy__menu'];\n\n // className prop checking\n if (className) {\n addAllClasses.push(className);\n }\n\n // Close drawer when click on menu item\n const toggleDrawer = () => {\n dispatch({\n type: 'TOGGLE',\n });\n };\n\n return (\n \n {menuItems.map((menu, index) => (\n \n {menu.staticLink ? (\n {menu.label} \n ) : (\n <>\n {drawerClose ? (\n \n {menu.label}\n \n ) : (\n \n {menu.label}\n \n )}\n >\n )}\n \n ))}\n \n );\n};\n\nScrollSpyMenu.propTypes = {\n /** className of the ScrollSpyMenu. */\n className: PropTypes.string,\n\n /** menuItems is an array of object prop which contain your menu\n * data.\n */\n menuItems: PropTypes.array.isRequired,\n\n /** Class name that apply to the navigation element paired with the content element in viewport. */\n currentClassName: PropTypes.string,\n\n /** Class name that apply to the navigation elements that have been scrolled past [optional]. */\n scrolledPastClassName: PropTypes.string,\n\n /** HTML tag for Scrollspy component if you want to use other than [optional]. */\n componentTag: PropTypes.string,\n\n /** Style attribute to be passed to the generated element [optional]. */\n style: PropTypes.object,\n\n /** Offset value that adjusts to determine the elements are in the viewport [optional]. */\n offset: PropTypes.number,\n\n /** Name of the element of scrollable container that can be used with querySelector [optional]. */\n rootEl: PropTypes.string,\n\n /**\n * Function to be executed when the active item has been updated [optional].\n */\n onUpdate: PropTypes.func,\n};\n\nScrollSpyMenu.defaultProps = {\n componentTag: 'ul',\n currentClassName: 'is-current',\n};\n\nexport default ScrollSpyMenu;\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport styled from 'styled-components';\r\nimport { base, themed } from '../base';\r\n\r\nconst LinkWrapper = styled('a')(\r\n { textDecoration: 'none' },\r\n base,\r\n themed('Link')\r\n);\r\n\r\nconst Link = ({ children, ...props }) => (\r\n {children} \r\n);\r\n\r\nexport default Link;\r\n\r\nLink.propTypes = {\r\n as: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\r\n children: PropTypes.any.isRequired,\r\n ...base.propTypes\r\n};\r\n\r\nLink.defaultProps = {\r\n as: 'a',\r\n m: 0,\r\n display: 'inline-block'\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Text from '../../Text';\r\nimport Link from '../../Link';\r\nimport Image from '../../Image';\r\n\r\nconst Logo = ({\r\n logoWrapperStyle,\r\n logoStyle,\r\n titleStyle,\r\n withAchor,\r\n anchorProps,\r\n logoSrc,\r\n title,\r\n ...props\r\n}) => (\r\n \r\n {withAchor ? (\r\n \r\n {logoSrc ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n ) : (\r\n <>\r\n {logoSrc ? (\r\n \r\n ) : (\r\n \r\n )}\r\n >\r\n )}\r\n \r\n);\r\n\r\nLogo.propTypes = {\r\n logoSrc: PropTypes.string,\r\n title: PropTypes.string.isRequired,\r\n logoWrapperStyle: PropTypes.object,\r\n logoStyle: PropTypes.object,\r\n titleStyle: PropTypes.object,\r\n withAchor: PropTypes.bool,\r\n anchorProps: PropTypes.object\r\n};\r\n\r\nLogo.defaultProps = {\r\n logoWrapperStyle: {\r\n display: 'inline-block',\r\n mr: '1rem',\r\n 'a:hover,a:focus': {\r\n textDecoration: 'none'\r\n }\r\n },\r\n titleStyle: {\r\n display: 'inline-block',\r\n fontSize: '2rem',\r\n lineHeight: 'inherit',\r\n whiteSpace: 'nowrap'\r\n }\r\n};\r\nexport default Logo;\r\n","import styled, { css } from 'styled-components';\n\nconst ContainerWrapper = styled.div`\n margin-left: auto;\n margin-right: auto;\n ${props =>\n props.fullWidth &&\n css`\n width: 100%;\n max-width: none !important;\n `};\n ${props =>\n (props.noGutter &&\n css`\n padding-left: 0;\n padding-right: 0;\n `) ||\n css`\n padding-left: 30px;\n padding-right: 30px;\n `};\n @media (min-width: 768px) {\n max-width: 750px;\n width: 100%;\n }\n @media (min-width: 992px) {\n max-width: 970px;\n width: 100%;\n }\n @media (min-width: 1220px) {\n max-width: ${props => props.width || '1170px'};\n width: 100%;\n }\n @media (max-width: 767px) {\n ${props =>\n props.mobileGutter &&\n css`\n padding-left: 20px;\n padding-right: 20px;\n `}\n }\n`;\n\nexport default ContainerWrapper;\n","import React from 'react';\nimport ContainerWrapper from './style';\n\nconst Container = ({\n children,\n className,\n fullWidth,\n mobileGutter,\n noGutter,\n width,\n id,\n}) => {\n const addAllClasses = ['container'];\n\n if (className) {\n addAllClasses.push(className);\n }\n\n return (\n \n {children}\n \n );\n};\n\nexport default Container;\n","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport PropTypes from 'prop-types';\n\nvar compare = function compare(a, b) {\n if (a < b) return -1;\n if (a > b) return 1;\n return 0;\n};\n\nexport var defaultBreakpoints = [40, 52, 64].map(function (n) {\n return n + 'em';\n});\nexport var propType = PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.array, PropTypes.object]);\nexport var cloneFunction = function cloneFunction(fn) {\n return function () {\n return fn.apply(void 0, arguments);\n };\n};\nexport var get = function get(obj) {\n for (var _len = arguments.length, paths = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n paths[_key - 1] = arguments[_key];\n }\n\n var value = paths.reduce(function (a, path) {\n if (is(a)) return a;\n var keys = typeof path === 'string' ? path.split('.') : [path];\n return keys.reduce(function (a, key) {\n return a && is(a[key]) ? a[key] : null;\n }, obj);\n }, null);\n return is(value) ? value : paths[paths.length - 1];\n};\nexport var themeGet = function themeGet(path, fallback) {\n if (fallback === void 0) {\n fallback = null;\n }\n\n return function (props) {\n return get(props.theme, path, fallback);\n };\n};\nexport var is = function is(n) {\n return n !== undefined && n !== null;\n};\nexport var isObject = function isObject(n) {\n return typeof n === 'object' && n !== null;\n};\nexport var num = function num(n) {\n return typeof n === 'number' && !isNaN(n);\n};\nexport var px = function px(n) {\n return num(n) && n !== 0 ? n + 'px' : n;\n};\nexport var createMediaQuery = function createMediaQuery(n) {\n return \"@media screen and (min-width: \" + px(n) + \")\";\n};\n\nvar getValue = function getValue(n, scale) {\n return get(scale, n);\n}; // loosely based on deepmerge package\n\n\nexport var merge = function merge(a, b) {\n var result = {};\n\n for (var key in a) {\n result[key] = a[key];\n }\n\n for (var _key2 in b) {\n if (!a[_key2] || typeof a[_key2] !== 'object') {\n result[_key2] = b[_key2];\n } else {\n result[_key2] = merge(a[_key2], b[_key2]);\n }\n }\n\n return result;\n};\n\nvar mergeAll = function mergeAll() {\n var result = {};\n\n for (var i = 0; i < arguments.length; i++) {\n result = merge(result, i < 0 || arguments.length <= i ? undefined : arguments[i]);\n }\n\n return result;\n};\n\nexport var style = function style(_ref) {\n var _func$propTypes;\n\n var prop = _ref.prop,\n cssProperty = _ref.cssProperty,\n alias = _ref.alias,\n key = _ref.key,\n _ref$transformValue = _ref.transformValue,\n transformValue = _ref$transformValue === void 0 ? getValue : _ref$transformValue,\n _ref$scale = _ref.scale,\n defaultScale = _ref$scale === void 0 ? {} : _ref$scale;\n var property = cssProperty || prop;\n\n var func = function func(props) {\n var value = get(props, prop, alias, null);\n if (!is(value)) return null;\n var scale = get(props.theme, key, defaultScale);\n\n var createStyle = function createStyle(n) {\n var _ref2;\n\n return is(n) ? (_ref2 = {}, _ref2[property] = transformValue(n, scale), _ref2) : null;\n };\n\n if (!isObject(value)) return createStyle(value);\n var breakpoints = get(props.theme, 'breakpoints', defaultBreakpoints);\n var styles = [];\n\n if (Array.isArray(value)) {\n styles.push(createStyle(value[0]));\n\n for (var i = 1; i < value.slice(0, breakpoints.length + 1).length; i++) {\n var rule = createStyle(value[i]);\n\n if (rule) {\n var _styles$push;\n\n var media = createMediaQuery(breakpoints[i - 1]);\n styles.push((_styles$push = {}, _styles$push[media] = rule, _styles$push));\n }\n }\n } else {\n for (var _key3 in value) {\n var breakpoint = breakpoints[_key3];\n\n var _media = createMediaQuery(breakpoint);\n\n var _rule = createStyle(value[_key3]);\n\n if (!breakpoint) {\n styles.unshift(_rule);\n } else {\n var _styles$push2;\n\n styles.push((_styles$push2 = {}, _styles$push2[_media] = _rule, _styles$push2));\n }\n }\n\n styles.sort(compare);\n }\n\n return mergeAll.apply(void 0, styles);\n };\n\n func.propTypes = (_func$propTypes = {}, _func$propTypes[prop] = cloneFunction(propType), _func$propTypes);\n func.propTypes[prop].meta = {\n prop: prop,\n themeKey: key\n };\n\n if (alias) {\n func.propTypes[alias] = cloneFunction(propType);\n func.propTypes[alias].meta = {\n prop: alias,\n themeKey: key\n };\n }\n\n return func;\n};\nexport var compose = function compose() {\n for (var _len2 = arguments.length, funcs = new Array(_len2), _key4 = 0; _key4 < _len2; _key4++) {\n funcs[_key4] = arguments[_key4];\n }\n\n var func = function func(props) {\n var n = funcs.map(function (fn) {\n return fn(props);\n }).filter(Boolean);\n return mergeAll.apply(void 0, n);\n };\n\n func.propTypes = {};\n funcs.forEach(function (fn) {\n func.propTypes = _extends({}, func.propTypes, fn.propTypes);\n });\n return func;\n};\nexport var mapProps = function mapProps(mapper) {\n return function (func) {\n var next = function next(props) {\n return func(mapper(props));\n };\n\n for (var key in func) {\n next[key] = func[key];\n }\n\n return next;\n };\n};\nexport var variant = function variant(_ref3) {\n var _fn$propTypes;\n\n var key = _ref3.key,\n _ref3$prop = _ref3.prop,\n prop = _ref3$prop === void 0 ? 'variant' : _ref3$prop;\n\n var fn = function fn(props) {\n return get(props.theme, [key, props[prop]].join('.'), null);\n };\n\n fn.propTypes = (_fn$propTypes = {}, _fn$propTypes[prop] = PropTypes.oneOfType([PropTypes.number, PropTypes.string]), _fn$propTypes);\n return fn;\n}; // space\n\nvar spaceScale = [0, 4, 8, 16, 32, 64, 128, 256, 512];\n\nvar getSpace = function getSpace(n, scale) {\n if (!num(n)) {\n return px(get(scale, n, n));\n }\n\n var isNegative = n < 0;\n var absolute = Math.abs(n);\n var value = get(scale, absolute);\n\n if (!num(value)) {\n return isNegative ? '-' + value : value;\n }\n\n return px(value * (isNegative ? -1 : 1));\n};\n\nexport var margin = style({\n prop: 'margin',\n alias: 'm',\n key: 'space',\n transformValue: getSpace,\n scale: spaceScale\n});\nexport var marginTop = style({\n prop: 'marginTop',\n alias: 'mt',\n key: 'space',\n transformValue: getSpace,\n scale: spaceScale\n});\nexport var marginBottom = style({\n prop: 'marginBottom',\n alias: 'mb',\n key: 'space',\n transformValue: getSpace,\n scale: spaceScale\n});\nexport var marginLeft = style({\n prop: 'marginLeft',\n alias: 'ml',\n key: 'space',\n transformValue: getSpace,\n scale: spaceScale\n});\nexport var marginRight = style({\n prop: 'marginRight',\n alias: 'mr',\n key: 'space',\n transformValue: getSpace,\n scale: spaceScale\n});\nexport var padding = style({\n prop: 'padding',\n alias: 'p',\n key: 'space',\n transformValue: getSpace,\n scale: spaceScale\n});\nexport var paddingTop = style({\n prop: 'paddingTop',\n alias: 'pt',\n key: 'space',\n transformValue: getSpace,\n scale: spaceScale\n});\nexport var paddingBottom = style({\n prop: 'paddingBottom',\n alias: 'pb',\n key: 'space',\n transformValue: getSpace,\n scale: spaceScale\n});\nexport var paddingLeft = style({\n prop: 'paddingLeft',\n alias: 'pl',\n key: 'space',\n transformValue: getSpace,\n scale: spaceScale\n});\nexport var paddingRight = style({\n prop: 'paddingRight',\n alias: 'pr',\n key: 'space',\n transformValue: getSpace,\n scale: spaceScale\n});\nexport var space = mapProps(function (props) {\n return _extends({}, props, {\n mt: is(props.my) ? props.my : props.mt,\n mb: is(props.my) ? props.my : props.mb,\n ml: is(props.mx) ? props.mx : props.ml,\n mr: is(props.mx) ? props.mx : props.mr,\n pt: is(props.py) ? props.py : props.pt,\n pb: is(props.py) ? props.py : props.pb,\n pl: is(props.px) ? props.px : props.pl,\n pr: is(props.px) ? props.px : props.pr\n });\n})(compose(margin, marginTop, marginBottom, marginLeft, marginRight, padding, paddingTop, paddingBottom, paddingLeft, paddingRight)); // color\n\nexport var textColor = style({\n prop: 'color',\n key: 'colors'\n});\nexport var backgroundColor = style({\n prop: 'backgroundColor',\n alias: 'bg',\n key: 'colors'\n});\nexport var color = compose(textColor, backgroundColor); // width\n\nexport var getWidth = function getWidth(n, scale) {\n return !num(n) || n > 1 ? px(n) : n * 100 + '%';\n};\nexport var width = style({\n prop: 'width',\n key: 'widths',\n transformValue: getWidth\n}); // typography\n\nexport var getPx = function getPx(n, scale) {\n return px(get(scale, n));\n};\nexport var fontSize = style({\n prop: 'fontSize',\n key: 'fontSizes',\n transformValue: getPx,\n scale: [12, 14, 16, 20, 24, 32, 48, 64, 72]\n});\nexport var fontFamily = style({\n prop: 'fontFamily',\n key: 'fonts'\n});\nexport var fontWeight = style({\n prop: 'fontWeight',\n key: 'fontWeights'\n});\nexport var lineHeight = style({\n prop: 'lineHeight',\n key: 'lineHeights'\n});\nexport var textAlign = style({\n prop: 'textAlign'\n});\nexport var fontStyle = style({\n prop: 'fontStyle'\n});\nexport var letterSpacing = style({\n prop: 'letterSpacing',\n key: 'letterSpacings',\n transformValue: getPx\n}); // layout\n\nexport var display = style({\n prop: 'display'\n});\nexport var maxWidth = style({\n prop: 'maxWidth',\n key: 'maxWidths',\n transformValue: getPx\n});\nexport var minWidth = style({\n prop: 'minWidth',\n key: 'minWidths',\n transformValue: getPx\n});\nexport var height = style({\n prop: 'height',\n key: 'heights',\n transformValue: getPx\n});\nexport var maxHeight = style({\n prop: 'maxHeight',\n key: 'maxHeights',\n transformValue: getPx\n});\nexport var minHeight = style({\n prop: 'minHeight',\n key: 'minHeights',\n transformValue: getPx\n});\nexport var size = mapProps(function (props) {\n return _extends({}, props, {\n width: props.size,\n height: props.size\n });\n})(compose(width, height));\nexport var verticalAlign = style({\n prop: 'verticalAlign'\n}); // flexbox\n\nexport var alignItems = style({\n prop: 'alignItems'\n});\nexport var alignContent = style({\n prop: 'alignContent'\n});\nexport var justifyItems = style({\n prop: 'justifyItems'\n});\nexport var justifyContent = style({\n prop: 'justifyContent'\n});\nexport var flexWrap = style({\n prop: 'flexWrap'\n});\nexport var flexBasis = style({\n prop: 'flexBasis',\n transformValue: getWidth\n});\nexport var flexDirection = style({\n prop: 'flexDirection'\n});\nexport var flex = style({\n prop: 'flex'\n});\nexport var justifySelf = style({\n prop: 'justifySelf'\n});\nexport var alignSelf = style({\n prop: 'alignSelf'\n});\nexport var order = style({\n prop: 'order'\n}); // grid\n\nexport var gridGap = style({\n prop: 'gridGap',\n key: 'space',\n transformValue: getPx,\n scale: spaceScale\n});\nexport var gridColumnGap = style({\n prop: 'gridColumnGap',\n key: 'space',\n transformValue: getPx,\n scale: spaceScale\n});\nexport var gridRowGap = style({\n prop: 'gridRowGap',\n key: 'space',\n transformValue: getPx,\n scale: spaceScale\n});\nexport var gridColumn = style({\n prop: 'gridColumn'\n});\nexport var gridRow = style({\n prop: 'gridRow'\n});\nexport var gridAutoFlow = style({\n prop: 'gridAutoFlow'\n});\nexport var gridAutoColumns = style({\n prop: 'gridAutoColumns'\n});\nexport var gridAutoRows = style({\n prop: 'gridAutoRows'\n});\nexport var gridTemplateColumns = style({\n prop: 'gridTemplateColumns'\n});\nexport var gridTemplateRows = style({\n prop: 'gridTemplateRows'\n});\nexport var gridTemplateAreas = style({\n prop: 'gridTemplateAreas'\n});\nexport var gridArea = style({\n prop: 'gridArea'\n}); // borders\n\nexport var border = style({\n prop: 'border',\n key: 'borders'\n});\nexport var borderWidth = style({\n prop: 'borderWidth',\n key: 'borderWidths',\n transformValue: getPx\n});\nexport var borderStyle = style({\n prop: 'borderStyle',\n key: 'borderStyles'\n});\nexport var borderColor = style({\n prop: 'borderColor',\n key: 'colors'\n});\nexport var borderTop = style({\n prop: 'borderTop',\n key: 'borders'\n});\nexport var borderRight = style({\n prop: 'borderRight',\n key: 'borders'\n});\nexport var borderBottom = style({\n prop: 'borderBottom',\n key: 'borders'\n});\nexport var borderLeft = style({\n prop: 'borderLeft',\n key: 'borders'\n});\nexport var borderRadius = style({\n prop: 'borderRadius',\n key: 'radii',\n transformValue: getPx\n});\nexport var borders = compose(border, borderTop, borderRight, borderBottom, borderLeft, borderWidth, borderStyle, borderColor, borderRadius);\nexport var boxShadow = style({\n prop: 'boxShadow',\n key: 'shadows'\n});\nexport var opacity = style({\n prop: 'opacity'\n});\nexport var overflow = style({\n prop: 'overflow'\n}); // backgrounds\n\nexport var background = style({\n prop: 'background'\n});\nexport var backgroundImage = style({\n prop: 'backgroundImage'\n});\nexport var backgroundSize = style({\n prop: 'backgroundSize'\n});\nexport var backgroundPosition = style({\n prop: 'backgroundPosition'\n});\nexport var backgroundRepeat = style({\n prop: 'backgroundRepeat'\n}); // position\n\nexport var position = style({\n prop: 'position'\n});\nexport var zIndex = style({\n prop: 'zIndex',\n key: 'zIndices'\n});\nexport var top = style({\n prop: 'top',\n transformValue: getPx\n});\nexport var right = style({\n prop: 'right',\n transformValue: getPx\n});\nexport var bottom = style({\n prop: 'bottom',\n transformValue: getPx\n});\nexport var left = style({\n prop: 'left',\n transformValue: getPx\n}); // variants\n\nexport var buttonStyle = variant({\n key: 'buttons'\n});\nexport var textStyle = variant({\n key: 'textStyles',\n prop: 'textStyle'\n});\nexport var colorStyle = variant({\n key: 'colorStyles',\n prop: 'colors'\n});","import styled from 'styled-components';\nimport { themeGet } from 'styled-system';\nimport searchIcon from 'common/src/assets/image/appClassic/search.svg';\n\nconst NavbarWrapper = styled.nav`\n width: 100%;\n padding: 25px 0 26px;\n background-color: ${themeGet('colors.light', '#ffffff')};\n position: fixed;\n z-index: 9999;\n transition: all 0.35s ease-in-out 0s;\n @media only screen and (max-width: 1366px) {\n padding: 20px 0 21px;\n }\n > div.container {\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n .logo {\n img {\n width: auto;\n height: 60px;\n }\n }\n }\n ul {\n li {\n a {\n color: ${themeGet('colors.menu', '#0D233E')};\n font-size: 16px;\n font-weight: 400;\n }\n &.is-current {\n a {\n color: ${themeGet('colors.primary', '#2563FF')};\n }\n }\n }\n }\n .contactContainer {\n @media only screen and (max-width: 1000px) {\n display: none;\n }\n }\n`;\n\nexport const MenuArea = styled.div`\n display: flex;\n align-items: center;\n .menu {\n display: flex;\n align-items: center;\n margin-right: 11px;\n opacity: 1;\n visibility: visible;\n transition: all 0.3s ease;\n @media only screen and (max-width: 1366px) {\n margin-right: 13px;\n }\n @media only screen and (max-width: 991px) {\n display: none;\n }\n li {\n margin: 0 19px;\n @media only screen and (max-width: 1366px) {\n margin: 0 17px;\n }\n &:first-child {\n margin-left: 0;\n }\n &:last-child {\n margin-right: 0;\n }\n }\n }\n &.active {\n .menu {\n opacity: 0;\n visibility: hidden;\n }\n .search {\n form {\n opacity: 1;\n visibility: visible;\n }\n input {\n width: 320px;\n @media only screen and (min-width: 1367px) {\n width: 350px;\n }\n @media only screen and (max-width: 480px) {\n width: calc(100vw - 122px);\n }\n }\n }\n }\n .reusecore__button {\n border-radius: 5px;\n font-weight: 500;\n text-transform: inherit;\n padding-left: 13px;\n padding-right: 13px;\n min-height: 42px;\n &.text {\n padding: 0;\n margin-right: 28px;\n .btn-icon {\n svg {\n width: 22px;\n height: auto;\n stroke: ${themeGet('colors.menu', '0D233E')};\n @media only screen and (max-width: 991px) {\n width: 24px;\n }\n }\n }\n @media only screen and (max-width: 1366px) {\n margin-right: 20px;\n }\n @media only screen and (max-width: 991px) {\n margin-right: 0;\n }\n }\n &.trail {\n @media only screen and (max-width: 991px) {\n display: none;\n }\n }\n &.menubar {\n display: none;\n @media only screen and (max-width: 991px) {\n display: inline-flex;\n padding: 0;\n justify-content: flex-end;\n min-width: 35px;\n svg {\n width: 27px;\n height: auto;\n }\n }\n }\n }\n`;\n\nexport const Search = styled.div`\n position: relative;\n display: flex;\n align-items: center;\n form {\n opacity: 0;\n visibility: hidden;\n position: absolute;\n right: 100%;\n }\n input {\n width: 0px;\n height: 46px;\n padding: 0 15px;\n border-radius: 5px;\n border: 1px solid rgba(0, 0, 0, 0.05);\n font-size: 15px;\n color: ${themeGet('colors.menu', '0D233E')};\n background-color: ${themeGet('colors.light', '#FAFBFF')};\n background-image: url(${searchIcon});\n background-repeat: no-repeat;\n background-position: calc(100% - 15px) center;\n background-size: 16px;\n z-index: 1;\n transition: all 0.3s ease 0.1s;\n &::placeholder {\n color: ${themeGet('colors.textColor', 'rgba(52, 61, 72, 0.8)')};\n }\n &:focus {\n border-color: ${themeGet('colors.primary', '#2563FF')};\n }\n }\n`;\n\nexport const MobileMenu = styled.div`\n display: none;\n @media only screen and (max-width: 991px) {\n display: flex;\n width: 100%;\n height: calc(100vh - 70px);\n padding: 27px 0 40px;\n opacity: 0;\n visibility: hidden;\n position: absolute;\n top: 82px;\n flex-direction: column;\n background-color: ${themeGet('colors.white', '#ffffff')};\n transition: all 0.3s ease;\n &.active {\n opacity: 1;\n visibility: visible;\n // box-shadow: 0 3px 12px\n // ${themeGet('colors.shadow', 'rgba(38, 78, 118, 0.1)')};\n }\n .container {\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n }\n ul {\n padding-bottom: 20px;\n li {\n a {\n display: block;\n padding: 13px 0;\n border-radius: 5px;\n transition: all 0.3s ease;\n }\n &:hover {\n a {\n padding: 13px 15px;\n color: ${themeGet('colors.white', '#ffffff')};\n background-color: ${themeGet('colors.primary')};\n }\n }\n }\n }\n .reusecore__button {\n width: 100%;\n border-radius: 5px;\n @media only screen and (max-width: 480px) {\n margin-top: 20px;\n }\n }\n }\n`;\n\nexport default NavbarWrapper;\n","import React, { useContext } from 'react';\nimport { useStaticQuery, graphql } from 'gatsby';\nimport Fade from 'react-reveal/Fade';\nimport ScrollSpyMenu from 'common/src/components/ScrollSpyMenu';\nimport AnchorLink from 'react-anchor-link-smooth-scroll';\nimport { Icon } from 'react-icons-kit';\nimport { menu } from 'react-icons-kit/feather/menu';\nimport { x } from 'react-icons-kit/feather/x';\nimport Logo from 'reusecore/src/elements/UI/Logo';\nimport Button from 'reusecore/src/elements/Button';\nimport Container from 'common/src/components/UI/Container';\nimport NavbarWrapper, { MenuArea, MobileMenu } from './navbar.style';\nimport { DrawerContext } from 'common/src/contexts/DrawerContext';\n\nconst Navbar = () => {\n const data = useStaticQuery(graphql`\n query {\n apploadJson {\n navbar {\n logo {\n publicURL\n }\n navMenu {\n id\n label\n path\n offset\n }\n }\n }\n }\n `);\n const { logo, navMenu } = data.apploadJson.navbar;\n\n const { state, dispatch } = useContext(DrawerContext);\n\n const toggleHandler = () => {\n dispatch({\n type: 'TOGGLE',\n });\n };\n\n return (\n \n \n \n {/* end of logo */}\n\n \n \n {/* end of main menu */}\n\n \n ) : (\n \n \n \n )\n }\n color=\"#0F2137\"\n variant=\"textButton\"\n onClick={() => toggleHandler()}\n />\n \n \n \n \n \n\n {/* start mobile menu */}\n \n \n \n \n toggleHandler()} />\n \n \n \n {/* end of mobile menu */}\n \n );\n};\n\nexport default Navbar;\n","import styled from \"styled-components\";\nimport { themeGet } from \"styled-system\";\n\nconst BannerWrapper = styled.div`\n // padding-top: 100px;\n min-height: 100vh;\n background-color: ${themeGet(\"colors.light\", \"#FAFBFF\")};\n position: relative;\n z-index: 1;\n text-align: center;\n display: flex;\n align-items: center;\n overflow: hidden;\n @media only screen and (min-width: 400px) {\n // min-height: 100vh;\n padding-top: 100px;\n }\n @media only screen and (max-width: 479px) {\n padding-top: 0x;\n .logo {\n height: 128px;\n }\n }\n > div.container {\n min-height: calc(100vh - 100px);\n @media only screen and (min-width: 1201px) and (max-width: 1440px) {\n min-height: calc(100vh - 100px);\n }\n @media only screen and (max-width: 480px) {\n flex-wrap: wrap;\n }\n }\n`;\n\nexport const BannerContent = styled.div`\n // max-width: 425px;\n width: 100%;\n z-index: 3;\n position: relative;\n margin: 0 auto;\n // display: -webkit-box;\n // display: -webkit-flex;\n // display: flex;\n // flex-direction: column;\n // -webkit-align-items: center;\n // -webkit-box-align: center;\n // align-items: center;\n // -webkit-justify-content: center;\n // justify-content: center;\n // min-height: calc(802px - 100px);\n text-align: center;\n @media only screen and (max-width: 991px) {\n flex-shrink: 0;\n // max-width: 360px;\n }\n\n h1 {\n color: ${themeGet(\"colors.menu\", \"#0D233E\")};\n margin-bottom: 24px;\n @media only screen and (max-width: 1366px) {\n // font-size: 32px;\n line-height: 42px;\n margin-bottom: 20px;\n }\n @media only screen and (max-width: 480px) {\n font-size: 48px;\n line-height: 42px;\n margin-bottom: 20px;\n }\n }\n\n h2 {\n @media only screen and (max-width: 480px) {\n width: 85%;\n margin: 0 auto;\n font-size: 18px;\n margin-bottom: 20px;\n }\n }\n`;\n\nexport const RatingInfo = styled.div`\n display: flex;\n align-items: center;\n margin-bottom: 22px;\n color: ${themeGet(\"colors.menu\", \"#0D233E\")};\n\n .rating {\n margin-right: 10px;\n .star {\n color: ${themeGet(\"colors.yellow\", \"#FFA740\")};\n }\n .star-o {\n color: #e8e8e8;\n }\n }\n\n img {\n margin-left: 9px;\n }\n`;\n\nexport const BannerImage = styled.div`\n flex-shrink: 0;\n align-self: flex-end;\n @media only screen and (max-width: 480px) {\n margin-top: 40px;\n img {\n max-width: 70%;\n }\n }\n`;\n\nexport const ButtonGroup = styled.div`\n margin-top: 35px;\n\n .reusecore__button {\n text-transform: inherit;\n border-radius: 5px;\n padding-left: 16px;\n padding-right: 16px;\n\n &.primary {\n &:hover {\n background-color: ${themeGet(\"colors.primaryHover\", \"#3C74FF\")};\n }\n }\n\n &.text {\n .btn-icon {\n svg {\n width: auto;\n height: 25px;\n }\n }\n &:hover {\n color: ${themeGet(\"colors.primaryHover\", \"#3C74FF\")};\n }\n }\n }\n`;\n\nexport default BannerWrapper;\n","import React from \"react\";\nimport Particles from \"react-particles-js\";\n\nimport Particle1 from \"common/src/assets/image/saas/particles/particle-1.png\";\nimport Particle2 from \"common/src/assets/image/saas/particles/particle-2.png\";\nimport Particle3 from \"common/src/assets/image/saas/particles/particle-3.png\";\nimport Particle4 from \"common/src/assets/image/saas/particles/particle-4.png\";\nimport Particle5 from \"common/src/assets/image/saas/particles/particle-5.png\";\nimport Particle6 from \"common/src/assets/image/saas/particles/particle-6.png\";\n\nimport styles from \"./particle.module.css\";\n\nconst ParticlesComponent = () => {\n return (\n <>\n \n >\n );\n};\nexport default ParticlesComponent;\n","import styled from \"styled-components\";\n\nexport const TextTyper = styled.span`\n font-weight: 700;\n`;\n","import React from \"react\";\nimport Heading from \"reusecore/src/elements/Heading\";\nimport { TextTyper } from \"./typer.style\";\nclass Typer extends React.Component {\n static defaultProps = {\n heading: \"\",\n dataText: []\n };\n\n constructor(props) {\n super(props);\n\n this.state = {\n text: \"\",\n isDeleting: false,\n loopNum: 0,\n typingSpeed: 150\n };\n }\n\n componentDidMount() {\n this.handleType();\n }\n\n handleType = () => {\n const { dataText } = this.props;\n const { isDeleting, loopNum, text, typingSpeed } = this.state;\n const i = loopNum % dataText.length;\n const fullText = dataText[i];\n\n this.setState({\n text: isDeleting\n ? fullText.substring(0, text.length - 1)\n : fullText.substring(0, text.length + 1),\n typingSpeed: isDeleting ? 30 : 150\n });\n\n if (!isDeleting && text === fullText) {\n setTimeout(() => this.setState({ isDeleting: true }), 500);\n } else if (isDeleting && text === \"\") {\n this.setState({\n isDeleting: false,\n loopNum: loopNum + 1\n });\n }\n\n setTimeout(this.handleType, typingSpeed);\n };\n\n render() {\n return (\n \n \n {this.props.heading} \n {this.state.text} \n \n
\n }>\n \n );\n }\n}\nexport default Typer;\n","import React from \"react\";\nimport Fade from \"react-reveal/Fade\";\nimport Heading from \"reusecore/src/elements/Heading\";\nimport BannerWrapper, { BannerContent } from \"./banner.style\";\nimport Particles from \"../Particle\";\nimport Typer from \"common/src/components/Typer\";\n// import Image from \"reusecore/src/elements/Image\";\n// import { useStaticQuery, graphql } from \"gatsby\";\n\nconst Banner = () => {\n // const data = useStaticQuery(graphql`\n // query {\n // apploadJson {\n // banner {\n // logo {\n // publicURL\n // }\n // }\n // }\n // }\n // `);\n\n // const { logo } = data.apploadJson.banner;\n\n return (\n \n \n \n \n \n \n {/* \n */}\n \n \n \n \n
\n \n \n \n );\n};\n\nexport default Banner;\n","import styled from 'styled-components';\nimport {\n color,\n width,\n height,\n display,\n space,\n borders,\n borderColor,\n boxShadow,\n borderRadius,\n flexWrap,\n alignItems,\n justifyContent,\n flexDirection,\n position,\n overflow,\n fontSize,\n textAlign,\n} from 'styled-system';\n\n// FeatureBlock wrapper style\nconst FeatureBlockWrapper = styled.div`\n &.icon_left {\n display: flex;\n .icon__wrapper{\n flex-shrink: 0;\n }\n }\n &.icon_right {\n display: flex;\n flex-direction: row-reverse;\n .content__wrapper {\n text-align: right;\n }\n .icon__wrapper{\n flex-shrink: 0;\n }\n }\n\n /* styled system prop support */\n ${display}\n ${width}\n ${height}\n ${flexWrap}\n ${flexDirection}\n ${alignItems}\n ${justifyContent}\n ${position}\n ${color}\n ${space}\n ${borders}\n ${borderColor}\n ${boxShadow}\n ${borderRadius}\n ${overflow}\n`;\n\n// Icon wrapper style\nconst IconWrapper = styled.div`\n ${display}\n ${width}\n ${height}\n ${alignItems}\n ${justifyContent}\n ${position}\n ${color}\n ${space}\n ${borders}\n ${borderColor}\n ${boxShadow}\n ${borderRadius}\n ${overflow}\n ${fontSize}\n`;\n\n// Content wrapper style\nconst ContentWrapper = styled.div`\n ${width}\n ${space}\n ${textAlign}\n`;\n\n// Button wrapper style\nconst ButtonWrapper = styled.div`\n ${display}\n ${space}\n ${alignItems}\n ${flexDirection}\n ${justifyContent}\n`;\n\nexport { IconWrapper, ContentWrapper, ButtonWrapper };\nexport default FeatureBlockWrapper;\n","import React, { Fragment } from \"react\";\nimport PropTypes from \"prop-types\";\nimport Text from \"reusecore/src/elements/Text\";\nimport FeatureBlockWrapper, {\n IconWrapper,\n ContentWrapper,\n ButtonWrapper\n} from \"./featureBlock.style\";\n\nconst FeatureBlock = ({\n className,\n icon,\n title,\n button,\n description,\n iconPosition,\n additionalContent,\n wrapperStyle,\n iconStyle,\n contentStyle,\n btnWrapperStyle,\n bullets,\n ...props\n}) => {\n // Add all classs to an array\n const addAllClasses = [\"feature__block\"];\n\n // Add icon position class\n if (iconPosition) {\n addAllClasses.push(`icon_${iconPosition}`);\n }\n\n // className prop checking\n if (className) {\n addAllClasses.push(className);\n }\n\n // check icon value and add\n const Icon = icon && (\n \n {icon}\n \n );\n\n const renderBullets = bullets => {\n return (\n \n {bullets.map(({ value }, index) => (\n \n \n \n ))}\n \n );\n };\n\n return (\n \n {Icon}\n\n {title || description || button ? (\n \n \n {title}\n {description}\n {bullets && renderBullets(bullets)}\n {button && (\n \n {button}\n \n )}\n \n {additionalContent}\n \n ) : (\n \"\"\n )}\n \n );\n};\n\nFeatureBlock.propTypes = {\n /** ClassName of the FeatureBlock */\n className: PropTypes.string,\n\n /** title prop contain a react component. You can use our Heading component from reusecore */\n title: PropTypes.element,\n\n /** description prop contain a react component. You can use our Text component from reusecore */\n description: PropTypes.element,\n\n /** button prop contain a react component. You can use our Button component from reusecore */\n button: PropTypes.element,\n\n /** Set icon position of the FeatureBlock */\n iconPosition: PropTypes.oneOf([\"top\", \"left\", \"right\"]),\n\n /** wrapperStyle prop contain these style system props: display, flexWrap, width, height, alignItems,\n * justifyContent, position, overflow, space, color, borders, borderColor, boxShadow and borderRadius. */\n wrapperStyle: PropTypes.object,\n\n /** iconStyle prop contain these style system props: display, width, height, alignItems, justifyContent,\n * position, space, fontSize, color, borders, overflow, borderColor, boxShadow and borderRadius. */\n iconStyle: PropTypes.object,\n\n /** contentStyle prop contain these style system props: width, textAlign and space. */\n contentStyle: PropTypes.object,\n\n /** btnWrapperStyle prop contain these style system props: display, space, alignItems,\n * flexDirection and justifyContent. */\n btnWrapperStyle: PropTypes.object\n};\n\nFeatureBlock.defaultProps = {\n iconPosition: \"top\"\n};\n\nexport default FeatureBlock;\n","import styled, { createGlobalStyle, keyframes } from 'styled-components';\nimport { themeGet } from 'styled-system';\nimport Substract from 'common/src/assets/image/app/substract.png';\nimport SubstractHover from 'common/src/assets/image/app/substract-hover.png';\n\nexport const GlobalStyle = createGlobalStyle` \nbody::-webkit-scrollbar {\n display: none;\n}\nbody {\n font-family: 'Montserrat', sans-serif;\n font-display: block;\n -webkit-touch-callout: none;\n -webkit-user-select: none; \n -khtml-user-select: none; \n -moz-user-select: none; \n -ms-user-select: none; \n user-select: none;\n }\n h1,\n h2,\n h3,\n h4,\n h5,\n h6 {\n font-family: 'Montserrat', sans-serif;\n font-display: block;\n }\n section {\n position: relative;\n }\n .reusecore__button {\n font-weight: 500;\n }\n @media only screen and (max-width: 667px) {\n .container {\n width: 100%;\n }\n }\n @media only screen and (max-width: 667px) {\n .container {\n padding-left: 20px;\n padding-right: 20px;\n }\n }\n @media only screen and (width: 320px) {\n .container {\n padding-left: 15px;\n padding-right: 15px;\n }\n }\n`;\n\nexport const AppWrapper = styled.div`\n overflow: hidden;\n display: flex;\n flex-direction: column;\n min-height: 100vh;\n\n @media only screen and (max-width: 480px) {\n .navbar {\n padding: 20px 0 21px;\n background-color: ${themeGet('colors.white', '#ffffff')};\n box-shadow: 0px 3px 8px 0px rgba(43, 83, 135, 0.25);\n\n .mobile-menu {\n top: 82px;\n }\n }\n }\n\n .sticky-active {\n .navbar {\n padding: 20px 0 21px;\n background-color: ${themeGet('colors.white', '#ffffff')};\n box-shadow: 0px 3px 8px 0px rgba(43, 83, 135, 0.25);\n\n @media only screen and (max-width: 1366px) {\n // padding: 15px 0 16px;\n }\n .mobile-menu {\n top: 82px;\n }\n }\n }\n .testimonialSlider {\n .image-gallery-content {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n @media (max-width: 767px) {\n flex-direction: column;\n }\n .image-gallery-slide-wrapper {\n background-color: #f8f8f8;\n max-width: 60%;\n width: 60%;\n display: flex;\n flex-wrap: wrap;\n flex-direction: column-reverse;\n align-self: start;\n @media screen and (max-width: 1100px) and (min-width: 992px) {\n max-width: 56%;\n width: 56%;\n }\n @media (max-width: 991px) {\n max-width: 50%;\n width: 50%;\n }\n @media (max-width: 767px) {\n max-width: 100%;\n width: 100%;\n }\n > span {\n display: flex;\n @media (max-width: 480px) {\n justify-content: center;\n }\n .image-gallery-left-nav,\n .image-gallery-right-nav {\n position: relative;\n top: 0;\n transform: none;\n margin-top: 0;\n }\n .image-gallery-left-nav {\n }\n .image-gallery-right-nav {\n margin-left: 10px;\n }\n }\n .image-gallery-swipe {\n .image-gallery-slide {\n background-color: #f8f8f8;\n .image-gallery-description {\n background: transparent;\n bottom: 0px;\n color: #000;\n position: relative;\n .testimonialDes {\n box-sizing: border-box;\n margin-top: -10px;\n max-width: 550px;\n font-size: 20px;\n line-height: 32px;\n color: #0f2137;\n font-weight: 300;\n -webkit-letter-spacing: -0.01em;\n -moz-letter-spacing: -0.01em;\n -ms-letter-spacing: -0.01em;\n letter-spacing: -0.01em;\n white-space: pre-line;\n @media (max-width: 991px) {\n font-size: 30px;\n line-height: 40px;\n max-width: 100%;\n }\n @media (max-width: 768px) {\n font-size: 24px;\n line-height: 36px;\n }\n @media (max-width: 480px) {\n font-size: 16px;\n text-align: center;\n }\n &::before {\n content: 'CUSTOMER OPINIONS';\n box-sizing: border-box;\n margin-bottom: 10px;\n margin-top: 0px;\n font-size: 14px;\n color: #1a73e8;\n display: block;\n font-weight: 700;\n text-align: left;\n -webkit-letter-spacing: 0.11em;\n -moz-letter-spacing: 0.11em;\n -ms-letter-spacing: 0.11em;\n letter-spacing: 0.11em;\n @media (max-width: 480px) {\n text-align: center;\n }\n }\n }\n .testimonialDetails {\n @media (max-width: 480px) {\n text-align: center;\n }\n .testimonialName {\n font-size: 18px;\n line-height: 33px;\n color: #343d48;\n font-weight: 700;\n margin-bottom: -3px;\n }\n .testimonialDesignation {\n font-size: 16px;\n line-height: 33px;\n color: #343d48;\n font-weight: 400;\n opacity: 0.8;\n }\n }\n }\n }\n }\n .image-gallery-left-nav {\n padding: 0;\n font-size: 0;\n margin-top: -15px;\n width: 15px;\n height: 2px;\n transition: width 0.25s ease-in-out;\n background-image: url(${Substract});\n width: 20px;\n height: 30px;\n background-repeat-x: repeat;\n background-position: center;\n background-size: contain;\n &:hover {\n width: 35px;\n background-image: url(${SubstractHover});\n &::before {\n background-color: #1a73e8;\n }\n &::after {\n background-color: #1a73e8;\n }\n }\n\n &::before {\n top: 11px;\n content: '';\n width: 10px;\n height: 2px;\n background-color: #343d48;\n display: block;\n position: absolute;\n transform: rotate(-36deg);\n transition: inherit;\n left: 0;\n }\n &::after {\n content: '';\n width: 10px;\n height: 2px;\n background-color: #343d48;\n display: block;\n position: absolute;\n bottom: 11px;\n transform: rotate(36deg);\n transition: inherit;\n left: 0;\n }\n }\n .image-gallery-right-nav {\n padding: 0;\n font-size: 0;\n margin-top: -15px;\n width: 15px;\n height: 2px;\n transition: all 0.25s ease-in-out;\n background-image: url(${Substract});\n width: 20px;\n height: 30px;\n background-repeat-x: repeat;\n background-position: center;\n background-size: contain;\n &:hover {\n width: 35px;\n background-image: url(${SubstractHover});\n &::before {\n background-color: #1a73e8;\n left: 25px;\n }\n &::after {\n background-color: #1a73e8;\n left: 25px;\n }\n }\n\n &::before {\n top: 11px;\n content: '';\n width: 10px;\n height: 2px;\n background-color: #343d48;\n display: block;\n position: absolute;\n transform: rotate(36deg);\n transition: inherit;\n left: 10px;\n }\n &::after {\n content: '';\n width: 10px;\n height: 2px;\n background-color: #343d48;\n display: block;\n position: absolute;\n bottom: 11px;\n transform: rotate(-36deg);\n transition: inherit;\n left: 10px;\n }\n }\n }\n .image-gallery-thumbnails-wrapper {\n max-width: 40%;\n height: 520px;\n width: 40%;\n\n @media screen and (max-width: 1100px) and (min-width: 992px) {\n padding-left: 25px;\n overflow: hidden;\n }\n @media (max-width: 991px) {\n padding-left: 0px;\n overflow: hidden;\n max-width: 50%;\n width: 50%;\n }\n @media (max-width: 767px) {\n max-width: 100%;\n width: 100%;\n height: auto;\n margin-top: 50px;\n overflow: hidden;\n }\n .image-gallery-thumbnails {\n overflow: initial;\n padding-left: 30px;\n @media (max-width: 991px) {\n padding-left: 0px;\n }\n @media (max-width: 767px) {\n overflow: hidden;\n }\n }\n .image-gallery-thumbnails-container {\n position: relative;\n height: 520px;\n @media screen and (max-width: 1100px) and (min-width: 992px) {\n margin-left: -20px;\n margin-top: 15px;\n }\n @media (max-width: 991px) {\n margin-left: -25px;\n }\n @media (max-width: 767px) {\n height: auto;\n margin-left: 0px;\n }\n img {\n border-radius: 50%;\n height: 100%;\n width: 100%;\n\n @media (max-width: 768px) {\n box-shadow: none;\n }\n @media (max-width: 991px) {\n width: 70px;\n height: 70px;\n }\n @media (max-width: 480px) {\n width: 70px;\n height: 70px;\n }\n }\n\n .image-gallery-thumbnail:nth-child(1) {\n position: absolute;\n top: 150px;\n left: 0;\n width: 120px;\n height: 120px;\n @media (max-width: 991px) {\n position: absolute;\n top: 220px;\n left: 80px;\n width: 120px;\n height: 120px;\n img {\n width: 80px;\n height: 80px;\n }\n }\n @media (max-width: 767px) {\n position: relative;\n top: 0;\n left: 0;\n width: calc(33.33% - 30px);\n height: auto;\n margin-right: 30px;\n margin-left: 10px;\n }\n img {\n }\n }\n .image-gallery-thumbnail:nth-child(2) {\n position: absolute;\n top: 0;\n left: 180px;\n width: 100px;\n height: 100px;\n @media (max-width: 991px) {\n position: absolute;\n top: 110px;\n left: 160px;\n width: 100px;\n height: 100px;\n }\n @media (max-width: 767px) {\n position: relative;\n top: 0;\n width: calc(33.33% - 30px);\n height: auto;\n margin-right: 30px;\n left: 0;\n }\n }\n .image-gallery-thumbnail:nth-child(3) {\n position: absolute;\n top: 160px;\n left: 250px;\n width: 70px;\n height: 70px;\n @media screen and (max-width: 1100px) and (min-width: 992px) {\n position: absolute;\n top: 180px;\n left: 220px;\n width: 70px;\n height: 70px;\n }\n @media (max-width: 991px) {\n position: absolute;\n top: 200px;\n left: 272px;\n width: 70px;\n height: 70px;\n }\n @media (max-width: 767px) {\n position: relative;\n top: 0;\n width: calc(33.33% - 30px);\n height: auto;\n margin-right: 30px;\n left: 0;\n }\n }\n .image-gallery-thumbnail:nth-child(4) {\n position: absolute;\n bottom: 100px;\n left: 200px;\n width: 90px;\n height: 90px;\n @media (max-width: 991px) {\n position: absolute;\n bottom: 100px;\n left: 240px;\n width: 90px;\n height: 90px;\n }\n @media (max-width: 767px) {\n position: relative;\n top: 0;\n width: calc(33.33% - 30px);\n height: auto;\n margin-right: 30px;\n left: 0;\n }\n }\n .image-gallery-thumbnail:nth-child(5) {\n position: absolute;\n bottom: 20px;\n left: 20px;\n width: 105px;\n height: 105px;\n @media screen and (max-width: 1100px) and (min-width: 992px) {\n position: absolute;\n bottom: 50px;\n left: 20px;\n width: 105px;\n height: 105px;\n }\n @media (max-width: 991px) {\n position: absolute;\n bottom: 40px;\n left: 115px;\n width: 105px;\n height: 105px;\n }\n @media (max-width: 767px) {\n position: relative;\n top: 0;\n width: calc(33.33% - 30px);\n height: auto;\n margin-right: 30px;\n left: 0;\n }\n }\n .image-gallery-thumbnail {\n transition: all 0.35s ease;\n border: 0;\n border-radius: 50%;\n .image-gallery-thumbnail-inner {\n width: 100%;\n height: 100%;\n }\n &.active {\n border: 0;\n transform: scale(1.3);\n box-shadow: 0px 18px 68px 0px rgba(22, 30, 54, 0.25);\n @media (max-width: 1100px) {\n box-shadow: none;\n }\n .image-gallery-thumbnail-inner {\n @keyframes pulse {\n 0% {\n transform: translateX(-50%) translateY(-50%) translateZ(0)\n scale(1);\n opacity: 1;\n }\n\n 100% {\n transform: translateX(-50%) translateY(-50%) translateZ(0)\n scale(1.5);\n opacity: 0;\n }\n }\n @media (max-width: 991px) {\n @keyframes pulse {\n 0% {\n transform: translateX(-50%) translateY(-50%) translateZ(0)\n scale(1);\n opacity: 0;\n }\n\n 100% {\n transform: translateX(-50%) translateY(-50%) translateZ(0)\n scale(1.2);\n opacity: 0;\n }\n }\n }\n &::before {\n content: '';\n position: absolute;\n display: block;\n width: 100%;\n height: 100%;\n box-shadow: 0 0 0 0.8px rgba(0, 0, 0, 0.1);\n border-radius: 50%;\n top: 50%;\n left: 50%;\n opacity: 0;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n animation: pulse 2.2s ease-out infinite;\n backface-visibility: hidden;\n pointer-events: none;\n }\n &::after {\n content: '';\n position: absolute;\n display: block;\n width: 100%;\n height: 100%;\n box-shadow: 0 0 0 0.8px rgba(0, 0, 0, 0.1);\n border-radius: 50%;\n top: 50%;\n left: 50%;\n opacity: 0;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n animation: pulse 2.2s ease-out infinite;\n backface-visibility: hidden;\n pointer-events: none;\n animation-delay: 1s;\n }\n }\n img {\n position: relative;\n @media (max-width: 768px) {\n margin: 10px 0;\n }\n }\n }\n }\n }\n }\n }\n }\n`;\n\nexport const ContentWrapper = styled.div`\n flex: 1 0 auto;\n width: 100%;\n overflow: hidden;\n`;\n\nexport const SectionHeader = styled.header`\n max-width: 352px;\n width: 100%;\n margin: 0 auto 58px;\n text-align: center;\n @media only screen and (max-width: 991px) {\n margin-bottom: 50px;\n }\n h5 {\n font-size: 14px;\n font-weight: 700;\n line-height: 24px;\n margin-bottom: 12px;\n letter-spacing: 1.5px;\n color: ${themeGet('colors.primary', '#2563FF')};\n text-transform: uppercase;\n @media only screen and (max-width: 991px) {\n font-size: 13px;\n margin-bottom: 10px;\n }\n }\n h2 {\n font-size: 30px;\n line-height: 36px;\n font-weight: 600;\n color: ${themeGet('colors.headingColor', '#0F2137')};\n margin: 0;\n letter-spacing: -1px;\n @media only screen and (max-width: 1366px) {\n font-size: 28px;\n letter-spacing: -0.7px;\n }\n @media only screen and (max-width: 991px) {\n font-size: 26px;\n line-height: 38px;\n letter-spacing: -0.5px;\n }\n }\n`;\n\n/* ------------------------------------ */\n// style for circle loader\n/* ------------------------------------ */\nconst rotate = keyframes`\n\tto {\n\t\ttransform: rotate(360deg);\n\t}\n`;\n\nconst grow = keyframes`\n\t50% {\n\t\ttransform: scale(1);\n\t}\n`;\n\nexport const CircleLoader = styled.div`\n animation: ${rotate} 3s linear infinite;\n width: 50px;\n height: 50px;\n flex-shrink: 0;\n transform-origin: bottom center;\n\n .circle {\n animation: ${grow} 1.5s linear infinite;\n background-color: ${themeGet('colors.primary', '#FDEF00')};\n border-radius: 50%;\n display: inline-block;\n margin: -9px;\n height: 40px;\n width: 40px;\n transform: scale(0);\n\n &:nth-of-type(2) {\n animation-delay: 0.75s;\n background-color: ${themeGet('colors.white', '#ffffff')};\n }\n }\n\n &.alt {\n .circle {\n &:nth-of-type(2) {\n background-color: ${themeGet('colors.heading', '#191919')};\n }\n }\n }\n`;\n\nexport const PrevButton = styled.div`\n position: relative;\n padding: 18px 10px;\n cursor: pointer;\n &:hover {\n span {\n background: #007fff;\n @media (min-width: 991px) {\n width: 40px;\n }\n }\n }\n span {\n width: 18px;\n height: 2px;\n background: #d1d3de;\n display: block;\n position: relative;\n transition: 0.3s cubic-bezier(0.445, 0.05, 0.55, 0.95);\n &:before,\n &:after {\n content: '';\n display: block;\n height: 2px;\n border-radius: 2px;\n background: inherit;\n position: absolute;\n }\n &:before {\n transform: rotate(-45deg);\n top: -4px;\n left: 0;\n width: 10px;\n }\n &:after {\n transform: rotate(45deg);\n width: 8px;\n bottom: -6px;\n left: 1px;\n }\n }\n`;\n\nexport const NextButton = styled.div`\n position: relative;\n padding: 18px 10px;\n cursor: pointer;\n &:hover {\n span {\n background: #007fff;\n @media (min-width: 991px) {\n width: 40px;\n }\n }\n }\n span {\n width: 18px;\n height: 2px;\n background: #d1d3de;\n display: block;\n position: relative;\n transition: 0.3s cubic-bezier(0.445, 0.05, 0.55, 0.95);\n &:before,\n &:after {\n content: '';\n display: block;\n height: 2px;\n border-radius: 2px;\n background: inherit;\n position: absolute;\n }\n &:before {\n transform: rotate(45deg);\n top: -4px;\n right: 0;\n width: 10px;\n }\n &:after {\n transform: rotate(-45deg);\n width: 8px;\n bottom: -6px;\n right: 1px;\n }\n }\n`;\n","import styled from 'styled-components';\n// import { themeGet } from \"styled-system\";\n\nconst SectionWrapper = styled.section`\n padding: 0 0 100px 0;\n background-color: #f8f8f8;\n overflow: hidden;\n min-height: 100vh;\n display: flex;\n align-items: center;\n @media only screen and (max-width: 1366px) {\n padding: 60px 0;\n min-height: 100vh;\n }\n @media only screen and (max-width: 667px) {\n padding: 45px 0;\n min-height: 100vh;\n }\n`;\n\nexport const FeatureWrapper = styled.div`\n display: flex;\n flex-wrap: wrap;\n justify-content: space-between;\n max-width: 906px;\n width: 100%;\n margin: 0 auto -30px;\n @media only screen and (max-width: 1366px) {\n max-width: 100%;\n }\n @media only screen and (max-width: 480px) {\n margin: 0;\n }\n\n > div {\n width: calc(100% / 3 - 27px);\n margin: 15px 0 30px;\n @media only screen and (max-width: 991px) {\n width: calc(100% / 3 - 15px);\n }\n @media only screen and (max-width: 667px) {\n width: 100%;\n &:first-child {\n margin-top: 0;\n }\n &:last-child {\n margin-bottom: 0;\n }\n }\n }\n\n .feature__block {\n text-align: center;\n .icon__wrapper {\n max-width: 115px;\n margin: 0 auto 27px;\n position: relative;\n @media only screen and (max-width: 1366px) {\n margin-bottom: 25px;\n }\n img {\n display: inline-block;\n @media only screen and (max-width: 1366px) {\n height: 90px;\n }\n @media only screen and (max-width: 767px) {\n height: 80px;\n }\n }\n i {\n opacity: 0;\n visibility: hidden;\n position: absolute;\n color: var(--color);\n transition: all 0.5s cubic-bezier(0.75, -0.5, 0, 1.75);\n &.plus {\n top: 0;\n left: 0;\n transform: translate(20px, 20px) scale(0.1) rotate(-180deg);\n }\n &.circle {\n top: 0;\n right: 0;\n transform: translate(-20px, 20px) scale(0.1) rotate(-180deg);\n }\n &.star {\n bottom: -5px;\n left: calc(50% - 8px);\n transform: translate(0, -20px) scale(0.1) rotate(-180deg);\n }\n }\n }\n .content__wrapper {\n max-width: 375px;\n margin: 0 auto;\n h3 {\n color: var(--color);\n font-size: 18px;\n line-height: 28px;\n font-weight: 500;\n margin-bottom: 15px;\n }\n p {\n color: #0f2137;\n font-size: 15px;\n line-height: 26px;\n padding: 0 10px;\n margin: 0;\n }\n }\n &:hover {\n .icon__wrapper {\n i {\n opacity: 1;\n visibility: visible;\n &.plus {\n transform: translate(-4px, -4px) scale(1) rotate(180deg);\n }\n &.circle {\n transform: translate(4px, -4px) scale(1) rotate(180deg);\n }\n &.star {\n transform: translate(0, 13px) scale(1) rotate(180deg);\n }\n }\n }\n }\n }\n`;\n\nexport default SectionWrapper;\n","import React, { Fragment } from 'react';\nimport { useStaticQuery, graphql } from 'gatsby';\nimport Fade from 'react-reveal/Fade';\nimport { Icon } from 'react-icons-kit';\nimport { mediaRecordOutline } from 'react-icons-kit/typicons/mediaRecordOutline';\nimport { plus } from 'react-icons-kit/typicons/plus';\nimport { starOutline } from 'react-icons-kit/typicons/starOutline';\nimport Text from 'reusecore/src/elements/Text';\nimport Heading from 'reusecore/src/elements/Heading';\nimport Image from 'reusecore/src/elements/Image';\nimport Container from 'common/src/components/UI/Container';\nimport FeatureBlock from 'common/src/components/FeatureBlock';\nimport { SectionHeader } from '../appload.style';\nimport SectionWrapper, { FeatureWrapper } from './keyFeatures.style';\n\nconst KeyFeatures = () => {\n const data = useStaticQuery(graphql`\n query {\n apploadJson {\n keyFeatures {\n title\n features {\n id\n color\n icon {\n publicURL\n }\n bullets {\n value\n }\n title\n }\n }\n }\n }\n `);\n const { title, features } = data.apploadJson.keyFeatures;\n\n return (\n \n \n \n \n \n \n \n \n {features.map(item => (\n \n \n \n \n \n \n \n }\n title={ }\n description={ }\n bullets={item.bullets}\n />\n \n ))}\n \n \n \n );\n};\n\nexport default KeyFeatures;\n","export default {\n /**\n * LEFT\n */\n LEFT: 37,\n // also NUM_WEST\n\n /**\n * UP\n */\n UP: 38,\n // also NUM_NORTH\n\n /**\n * RIGHT\n */\n RIGHT: 39,\n // also NUM_EAST\n\n /**\n * DOWN\n */\n DOWN: 40 // also NUM_SOUTH\n\n};","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport React from 'react';\nexport function toArray(children) {\n // allow [c,[a,b]]\n var c = [];\n React.Children.forEach(children, function (child) {\n if (child) {\n c.push(child);\n }\n });\n return c;\n}\nexport function getActiveIndex(children, activeKey) {\n var c = toArray(children);\n\n for (var i = 0; i < c.length; i++) {\n if (c[i].key === activeKey) {\n return i;\n }\n }\n\n return -1;\n}\nexport function getActiveKey(children, index) {\n var c = toArray(children);\n return c[index].key;\n}\nexport function setTransform(style, v) {\n style.transform = v;\n style.webkitTransform = v;\n style.mozTransform = v;\n}\nexport function isTransform3dSupported(style) {\n return ('transform' in style || 'webkitTransform' in style || 'MozTransform' in style) && window.atob;\n}\nexport function setTransition(style, v) {\n style.transition = v;\n style.webkitTransition = v;\n style.MozTransition = v;\n}\nexport function getTransformPropValue(v) {\n return {\n transform: v,\n WebkitTransform: v,\n MozTransform: v\n };\n}\nexport function isVertical(tabBarPosition) {\n return tabBarPosition === 'left' || tabBarPosition === 'right';\n}\nexport function getTransformByIndex(index, tabBarPosition) {\n var direction = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'ltr';\n var translate = isVertical(tabBarPosition) ? 'translateY' : 'translateX';\n\n if (!isVertical(tabBarPosition) && direction === 'rtl') {\n return translate + '(' + index * 100 + '%) translateZ(0)';\n }\n\n return translate + '(' + -index * 100 + '%) translateZ(0)';\n}\nexport function getMarginStyle(index, tabBarPosition) {\n var marginDirection = isVertical(tabBarPosition) ? 'marginTop' : 'marginLeft';\n return _defineProperty({}, marginDirection, -index * 100 + '%');\n}\nexport function getStyle(el, property) {\n return +window.getComputedStyle(el).getPropertyValue(property).replace('px', '');\n}\nexport function setPxStyle(el, value, vertical) {\n value = vertical ? '0px, ' + value + 'px, 0px' : value + 'px, 0px, 0px';\n setTransform(el.style, 'translate3d(' + value + ')');\n}\nexport function getDataAttr(props) {\n return Object.keys(props).reduce(function (prev, key) {\n if (key.substr(0, 5) === 'aria-' || key.substr(0, 5) === 'data-' || key === 'role') {\n prev[key] = props[key];\n }\n\n return prev;\n }, {});\n}\n\nfunction toNum(style, property) {\n return +style.getPropertyValue(property).replace('px', '');\n}\n\nfunction getTypeValue(start, current, end, tabNode, wrapperNode) {\n var total = getStyle(wrapperNode, 'padding-' + start);\n\n if (!tabNode || !tabNode.parentNode) {\n return total;\n }\n\n var childNodes = tabNode.parentNode.childNodes;\n Array.prototype.some.call(childNodes, function (node) {\n var style = window.getComputedStyle(node);\n\n if (node !== tabNode) {\n total += toNum(style, 'margin-' + start);\n total += node[current];\n total += toNum(style, 'margin-' + end);\n\n if (style.boxSizing === 'content-box') {\n total += toNum(style, 'border-' + start + '-width') + toNum(style, 'border-' + end + '-width');\n }\n\n return false;\n } // We need count current node margin\n // ref: https://github.com/react-component/tabs/pull/139#issuecomment-431005262\n\n\n total += toNum(style, 'margin-' + start);\n return true;\n });\n return total;\n}\n\nexport function getLeft(tabNode, wrapperNode) {\n return getTypeValue('left', 'offsetWidth', 'right', tabNode, wrapperNode);\n}\nexport function getTop(tabNode, wrapperNode) {\n return getTypeValue('top', 'offsetHeight', 'bottom', tabNode, wrapperNode);\n}","/**\n * @ignore\n * some key-codes definition and utils from closure-library\n * @author yiminghe@gmail.com\n */\nvar KeyCode = {\n /**\n * MAC_ENTER\n */\n MAC_ENTER: 3,\n\n /**\n * BACKSPACE\n */\n BACKSPACE: 8,\n\n /**\n * TAB\n */\n TAB: 9,\n\n /**\n * NUMLOCK on FF/Safari Mac\n */\n NUM_CENTER: 12,\n\n /**\n * ENTER\n */\n ENTER: 13,\n\n /**\n * SHIFT\n */\n SHIFT: 16,\n\n /**\n * CTRL\n */\n CTRL: 17,\n\n /**\n * ALT\n */\n ALT: 18,\n\n /**\n * PAUSE\n */\n PAUSE: 19,\n\n /**\n * CAPS_LOCK\n */\n CAPS_LOCK: 20,\n\n /**\n * ESC\n */\n ESC: 27,\n\n /**\n * SPACE\n */\n SPACE: 32,\n\n /**\n * PAGE_UP\n */\n PAGE_UP: 33,\n\n /**\n * PAGE_DOWN\n */\n PAGE_DOWN: 34,\n\n /**\n * END\n */\n END: 35,\n\n /**\n * HOME\n */\n HOME: 36,\n\n /**\n * LEFT\n */\n LEFT: 37,\n\n /**\n * UP\n */\n UP: 38,\n\n /**\n * RIGHT\n */\n RIGHT: 39,\n\n /**\n * DOWN\n */\n DOWN: 40,\n\n /**\n * PRINT_SCREEN\n */\n PRINT_SCREEN: 44,\n\n /**\n * INSERT\n */\n INSERT: 45,\n\n /**\n * DELETE\n */\n DELETE: 46,\n\n /**\n * ZERO\n */\n ZERO: 48,\n\n /**\n * ONE\n */\n ONE: 49,\n\n /**\n * TWO\n */\n TWO: 50,\n\n /**\n * THREE\n */\n THREE: 51,\n\n /**\n * FOUR\n */\n FOUR: 52,\n\n /**\n * FIVE\n */\n FIVE: 53,\n\n /**\n * SIX\n */\n SIX: 54,\n\n /**\n * SEVEN\n */\n SEVEN: 55,\n\n /**\n * EIGHT\n */\n EIGHT: 56,\n\n /**\n * NINE\n */\n NINE: 57,\n\n /**\n * QUESTION_MARK\n */\n QUESTION_MARK: 63,\n\n /**\n * A\n */\n A: 65,\n\n /**\n * B\n */\n B: 66,\n\n /**\n * C\n */\n C: 67,\n\n /**\n * D\n */\n D: 68,\n\n /**\n * E\n */\n E: 69,\n\n /**\n * F\n */\n F: 70,\n\n /**\n * G\n */\n G: 71,\n\n /**\n * H\n */\n H: 72,\n\n /**\n * I\n */\n I: 73,\n\n /**\n * J\n */\n J: 74,\n\n /**\n * K\n */\n K: 75,\n\n /**\n * L\n */\n L: 76,\n\n /**\n * M\n */\n M: 77,\n\n /**\n * N\n */\n N: 78,\n\n /**\n * O\n */\n O: 79,\n\n /**\n * P\n */\n P: 80,\n\n /**\n * Q\n */\n Q: 81,\n\n /**\n * R\n */\n R: 82,\n\n /**\n * S\n */\n S: 83,\n\n /**\n * T\n */\n T: 84,\n\n /**\n * U\n */\n U: 85,\n\n /**\n * V\n */\n V: 86,\n\n /**\n * W\n */\n W: 87,\n\n /**\n * X\n */\n X: 88,\n\n /**\n * Y\n */\n Y: 89,\n\n /**\n * Z\n */\n Z: 90,\n\n /**\n * META\n */\n META: 91,\n\n /**\n * WIN_KEY_RIGHT\n */\n WIN_KEY_RIGHT: 92,\n\n /**\n * CONTEXT_MENU\n */\n CONTEXT_MENU: 93,\n\n /**\n * NUM_ZERO\n */\n NUM_ZERO: 96,\n\n /**\n * NUM_ONE\n */\n NUM_ONE: 97,\n\n /**\n * NUM_TWO\n */\n NUM_TWO: 98,\n\n /**\n * NUM_THREE\n */\n NUM_THREE: 99,\n\n /**\n * NUM_FOUR\n */\n NUM_FOUR: 100,\n\n /**\n * NUM_FIVE\n */\n NUM_FIVE: 101,\n\n /**\n * NUM_SIX\n */\n NUM_SIX: 102,\n\n /**\n * NUM_SEVEN\n */\n NUM_SEVEN: 103,\n\n /**\n * NUM_EIGHT\n */\n NUM_EIGHT: 104,\n\n /**\n * NUM_NINE\n */\n NUM_NINE: 105,\n\n /**\n * NUM_MULTIPLY\n */\n NUM_MULTIPLY: 106,\n\n /**\n * NUM_PLUS\n */\n NUM_PLUS: 107,\n\n /**\n * NUM_MINUS\n */\n NUM_MINUS: 109,\n\n /**\n * NUM_PERIOD\n */\n NUM_PERIOD: 110,\n\n /**\n * NUM_DIVISION\n */\n NUM_DIVISION: 111,\n\n /**\n * F1\n */\n F1: 112,\n\n /**\n * F2\n */\n F2: 113,\n\n /**\n * F3\n */\n F3: 114,\n\n /**\n * F4\n */\n F4: 115,\n\n /**\n * F5\n */\n F5: 116,\n\n /**\n * F6\n */\n F6: 117,\n\n /**\n * F7\n */\n F7: 118,\n\n /**\n * F8\n */\n F8: 119,\n\n /**\n * F9\n */\n F9: 120,\n\n /**\n * F10\n */\n F10: 121,\n\n /**\n * F11\n */\n F11: 122,\n\n /**\n * F12\n */\n F12: 123,\n\n /**\n * NUMLOCK\n */\n NUMLOCK: 144,\n\n /**\n * SEMICOLON\n */\n SEMICOLON: 186,\n\n /**\n * DASH\n */\n DASH: 189,\n\n /**\n * EQUALS\n */\n EQUALS: 187,\n\n /**\n * COMMA\n */\n COMMA: 188,\n\n /**\n * PERIOD\n */\n PERIOD: 190,\n\n /**\n * SLASH\n */\n SLASH: 191,\n\n /**\n * APOSTROPHE\n */\n APOSTROPHE: 192,\n\n /**\n * SINGLE_QUOTE\n */\n SINGLE_QUOTE: 222,\n\n /**\n * OPEN_SQUARE_BRACKET\n */\n OPEN_SQUARE_BRACKET: 219,\n\n /**\n * BACKSLASH\n */\n BACKSLASH: 220,\n\n /**\n * CLOSE_SQUARE_BRACKET\n */\n CLOSE_SQUARE_BRACKET: 221,\n\n /**\n * WIN_KEY\n */\n WIN_KEY: 224,\n\n /**\n * MAC_FF_META\n */\n MAC_FF_META: 224,\n\n /**\n * WIN_IME\n */\n WIN_IME: 229,\n // ======================== Function ========================\n\n /**\n * whether text and modified key is entered at the same time.\n */\n isTextModifyingKeyEvent: function isTextModifyingKeyEvent(e) {\n var keyCode = e.keyCode;\n\n if (e.altKey && !e.ctrlKey || e.metaKey || // Function keys don't generate text\n keyCode >= KeyCode.F1 && keyCode <= KeyCode.F12) {\n return false;\n } // The following keys are quite harmless, even in combination with\n // CTRL, ALT or SHIFT.\n\n\n switch (keyCode) {\n case KeyCode.ALT:\n case KeyCode.CAPS_LOCK:\n case KeyCode.CONTEXT_MENU:\n case KeyCode.CTRL:\n case KeyCode.DOWN:\n case KeyCode.END:\n case KeyCode.ESC:\n case KeyCode.HOME:\n case KeyCode.INSERT:\n case KeyCode.LEFT:\n case KeyCode.MAC_FF_META:\n case KeyCode.META:\n case KeyCode.NUMLOCK:\n case KeyCode.NUM_CENTER:\n case KeyCode.PAGE_DOWN:\n case KeyCode.PAGE_UP:\n case KeyCode.PAUSE:\n case KeyCode.PRINT_SCREEN:\n case KeyCode.RIGHT:\n case KeyCode.SHIFT:\n case KeyCode.UP:\n case KeyCode.WIN_KEY:\n case KeyCode.WIN_KEY_RIGHT:\n return false;\n\n default:\n return true;\n }\n },\n\n /**\n * whether character is entered.\n */\n isCharacterKey: function isCharacterKey(keyCode) {\n if (keyCode >= KeyCode.ZERO && keyCode <= KeyCode.NINE) {\n return true;\n }\n\n if (keyCode >= KeyCode.NUM_ZERO && keyCode <= KeyCode.NUM_MULTIPLY) {\n return true;\n }\n\n if (keyCode >= KeyCode.A && keyCode <= KeyCode.Z) {\n return true;\n } // Safari sends zero key code for non-latin characters.\n\n\n if (window.navigator.userAgent.indexOf('WebKit') !== -1 && keyCode === 0) {\n return true;\n }\n\n switch (keyCode) {\n case KeyCode.SPACE:\n case KeyCode.QUESTION_MARK:\n case KeyCode.NUM_PLUS:\n case KeyCode.NUM_MINUS:\n case KeyCode.NUM_PERIOD:\n case KeyCode.NUM_DIVISION:\n case KeyCode.SEMICOLON:\n case KeyCode.DASH:\n case KeyCode.EQUALS:\n case KeyCode.COMMA:\n case KeyCode.PERIOD:\n case KeyCode.SLASH:\n case KeyCode.APOSTROPHE:\n case KeyCode.SINGLE_QUOTE:\n case KeyCode.OPEN_SQUARE_BRACKET:\n case KeyCode.BACKSLASH:\n case KeyCode.CLOSE_SQUARE_BRACKET:\n return true;\n\n default:\n return false;\n }\n }\n};\nexport default KeyCode;","import _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _createClass from 'babel-runtime/helpers/createClass';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\n/* eslint-disable jsx-a11y/no-noninteractive-tabindex */\n\nimport React from 'react';\nimport KeyCode from 'rc-util/es/KeyCode';\nimport createReactContext from '@ant-design/create-react-context';\nvar SentinelContext = createReactContext({});\nexport var SentinelProvider = SentinelContext.Provider;\nexport var SentinelConsumer = SentinelContext.Consumer;\nvar sentinelStyle = {\n width: 0,\n height: 0,\n overflow: 'hidden',\n position: 'absolute'\n};\n\nvar Sentinel = function (_React$Component) {\n _inherits(Sentinel, _React$Component);\n\n function Sentinel() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, Sentinel);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Sentinel.__proto__ || Object.getPrototypeOf(Sentinel)).call.apply(_ref, [this].concat(args))), _this), _this.onKeyDown = function (_ref2) {\n var target = _ref2.target,\n which = _ref2.which,\n shiftKey = _ref2.shiftKey;\n var _this$props = _this.props,\n nextElement = _this$props.nextElement,\n prevElement = _this$props.prevElement;\n if (which !== KeyCode.TAB || document.activeElement !== target) return; // Tab next\n\n if (!shiftKey && nextElement) {\n nextElement.focus();\n } // Tab prev\n\n\n if (shiftKey && prevElement) {\n prevElement.focus();\n }\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(Sentinel, [{\n key: 'render',\n value: function render() {\n var setRef = this.props.setRef;\n return React.createElement('div', {\n tabIndex: 0,\n ref: setRef,\n style: sentinelStyle,\n onKeyDown: this.onKeyDown,\n role: 'presentation'\n });\n }\n }]);\n\n return Sentinel;\n}(React.Component);\n\nexport default Sentinel;","import _extends from 'babel-runtime/helpers/extends';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _createClass from 'babel-runtime/helpers/createClass';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport React from 'react';\nimport classnames from 'classnames';\nimport { getDataAttr } from './utils';\nimport Sentinel, { SentinelConsumer } from './Sentinel';\n\nvar TabPane = function (_React$Component) {\n _inherits(TabPane, _React$Component);\n\n function TabPane() {\n _classCallCheck(this, TabPane);\n\n return _possibleConstructorReturn(this, (TabPane.__proto__ || Object.getPrototypeOf(TabPane)).apply(this, arguments));\n }\n\n _createClass(TabPane, [{\n key: 'render',\n value: function render() {\n var _classnames;\n\n var _props = this.props,\n id = _props.id,\n className = _props.className,\n destroyInactiveTabPane = _props.destroyInactiveTabPane,\n active = _props.active,\n forceRender = _props.forceRender,\n rootPrefixCls = _props.rootPrefixCls,\n style = _props.style,\n children = _props.children,\n placeholder = _props.placeholder,\n restProps = _objectWithoutProperties(_props, ['id', 'className', 'destroyInactiveTabPane', 'active', 'forceRender', 'rootPrefixCls', 'style', 'children', 'placeholder']);\n\n this._isActived = this._isActived || active;\n var prefixCls = rootPrefixCls + '-tabpane';\n var cls = classnames((_classnames = {}, _defineProperty(_classnames, prefixCls, 1), _defineProperty(_classnames, prefixCls + '-inactive', !active), _defineProperty(_classnames, prefixCls + '-active', active), _defineProperty(_classnames, className, className), _classnames));\n var isRender = destroyInactiveTabPane ? active : this._isActived;\n var shouldRender = isRender || forceRender;\n return React.createElement(SentinelConsumer, null, function (_ref) {\n var sentinelStart = _ref.sentinelStart,\n sentinelEnd = _ref.sentinelEnd,\n setPanelSentinelStart = _ref.setPanelSentinelStart,\n setPanelSentinelEnd = _ref.setPanelSentinelEnd; // Create sentinel\n\n var panelSentinelStart = void 0;\n var panelSentinelEnd = void 0;\n\n if (active && shouldRender) {\n panelSentinelStart = React.createElement(Sentinel, {\n setRef: setPanelSentinelStart,\n prevElement: sentinelStart\n });\n panelSentinelEnd = React.createElement(Sentinel, {\n setRef: setPanelSentinelEnd,\n nextElement: sentinelEnd\n });\n }\n\n return React.createElement('div', _extends({\n style: style,\n role: 'tabpanel',\n 'aria-hidden': active ? 'false' : 'true',\n className: cls,\n id: id\n }, getDataAttr(restProps)), panelSentinelStart, shouldRender ? children : placeholder, panelSentinelEnd);\n });\n }\n }]);\n\n return TabPane;\n}(React.Component);\n\nexport default TabPane;\nTabPane.defaultProps = {\n placeholder: null\n};","import _extends from 'babel-runtime/helpers/extends';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _createClass from 'babel-runtime/helpers/createClass';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport React from 'react';\nimport classnames from 'classnames';\nimport raf from 'raf';\nimport { polyfill } from 'react-lifecycles-compat';\nimport KeyCode from './KeyCode';\nimport TabPane from './TabPane';\nimport { getDataAttr } from './utils';\nimport Sentinel, { SentinelProvider } from './Sentinel';\n\nfunction noop() {}\n\nfunction getDefaultActiveKey(props) {\n var activeKey = void 0;\n React.Children.forEach(props.children, function (child) {\n if (child && !activeKey && !child.props.disabled) {\n activeKey = child.key;\n }\n });\n return activeKey;\n}\n\nfunction activeKeyIsValid(props, key) {\n var keys = React.Children.map(props.children, function (child) {\n return child && child.key;\n });\n return keys.indexOf(key) >= 0;\n}\n\nvar Tabs = function (_React$Component) {\n _inherits(Tabs, _React$Component);\n\n function Tabs(props) {\n _classCallCheck(this, Tabs);\n\n var _this = _possibleConstructorReturn(this, (Tabs.__proto__ || Object.getPrototypeOf(Tabs)).call(this, props));\n\n _initialiseProps.call(_this);\n\n var activeKey = void 0;\n\n if ('activeKey' in props) {\n activeKey = props.activeKey;\n } else if ('defaultActiveKey' in props) {\n activeKey = props.defaultActiveKey;\n } else {\n activeKey = getDefaultActiveKey(props);\n }\n\n _this.state = {\n activeKey: activeKey\n };\n return _this;\n }\n\n _createClass(Tabs, [{\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.destroy = true;\n raf.cancel(this.sentinelId);\n } // Sentinel for tab index\n\n }, {\n key: 'updateSentinelContext',\n value: function updateSentinelContext() {\n var _this2 = this;\n\n if (this.destroy) return;\n raf.cancel(this.sentinelId);\n this.sentinelId = raf(function () {\n if (_this2.destroy) return;\n\n _this2.forceUpdate();\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var _classnames;\n\n var props = this.props;\n\n var prefixCls = props.prefixCls,\n navWrapper = props.navWrapper,\n tabBarPosition = props.tabBarPosition,\n className = props.className,\n renderTabContent = props.renderTabContent,\n renderTabBar = props.renderTabBar,\n destroyInactiveTabPane = props.destroyInactiveTabPane,\n direction = props.direction,\n restProps = _objectWithoutProperties(props, ['prefixCls', 'navWrapper', 'tabBarPosition', 'className', 'renderTabContent', 'renderTabBar', 'destroyInactiveTabPane', 'direction']);\n\n var cls = classnames((_classnames = {}, _defineProperty(_classnames, prefixCls, 1), _defineProperty(_classnames, prefixCls + '-' + tabBarPosition, 1), _defineProperty(_classnames, className, !!className), _defineProperty(_classnames, prefixCls + '-rtl', direction === 'rtl'), _classnames));\n this.tabBar = renderTabBar();\n var tabBar = React.cloneElement(this.tabBar, {\n prefixCls: prefixCls,\n navWrapper: navWrapper,\n key: 'tabBar',\n onKeyDown: this.onNavKeyDown,\n tabBarPosition: tabBarPosition,\n onTabClick: this.onTabClick,\n panels: props.children,\n activeKey: this.state.activeKey,\n direction: this.props.direction\n });\n var tabContent = React.cloneElement(renderTabContent(), {\n prefixCls: prefixCls,\n tabBarPosition: tabBarPosition,\n activeKey: this.state.activeKey,\n destroyInactiveTabPane: destroyInactiveTabPane,\n children: props.children,\n onChange: this.setActiveKey,\n key: 'tabContent',\n direction: this.props.direction\n });\n var sentinelStart = React.createElement(Sentinel, {\n key: 'sentinelStart',\n setRef: this.setSentinelStart,\n nextElement: this.panelSentinelStart\n });\n var sentinelEnd = React.createElement(Sentinel, {\n key: 'sentinelEnd',\n setRef: this.setSentinelEnd,\n prevElement: this.panelSentinelEnd\n });\n var contents = [];\n\n if (tabBarPosition === 'bottom') {\n contents.push(sentinelStart, tabContent, sentinelEnd, tabBar);\n } else {\n contents.push(tabBar, sentinelStart, tabContent, sentinelEnd);\n }\n\n return React.createElement(SentinelProvider, {\n value: {\n sentinelStart: this.sentinelStart,\n sentinelEnd: this.sentinelEnd,\n setPanelSentinelStart: this.setPanelSentinelStart,\n setPanelSentinelEnd: this.setPanelSentinelEnd\n }\n }, React.createElement('div', _extends({\n className: cls,\n style: props.style\n }, getDataAttr(restProps), {\n onScroll: this.onScroll\n }), contents));\n }\n }], [{\n key: 'getDerivedStateFromProps',\n value: function getDerivedStateFromProps(props, state) {\n var newState = {};\n\n if ('activeKey' in props) {\n newState.activeKey = props.activeKey;\n } else if (!activeKeyIsValid(props, state.activeKey)) {\n newState.activeKey = getDefaultActiveKey(props);\n }\n\n if (Object.keys(newState).length > 0) {\n return newState;\n }\n\n return null;\n }\n }]);\n\n return Tabs;\n}(React.Component);\n\nvar _initialiseProps = function _initialiseProps() {\n var _this3 = this;\n\n this.onTabClick = function (activeKey, e) {\n if (_this3.tabBar.props.onTabClick) {\n _this3.tabBar.props.onTabClick(activeKey, e);\n }\n\n _this3.setActiveKey(activeKey);\n };\n\n this.onNavKeyDown = function (e) {\n var eventKeyCode = e.keyCode;\n\n if (eventKeyCode === KeyCode.RIGHT || eventKeyCode === KeyCode.DOWN) {\n e.preventDefault();\n\n var nextKey = _this3.getNextActiveKey(true);\n\n _this3.onTabClick(nextKey);\n } else if (eventKeyCode === KeyCode.LEFT || eventKeyCode === KeyCode.UP) {\n e.preventDefault();\n\n var previousKey = _this3.getNextActiveKey(false);\n\n _this3.onTabClick(previousKey);\n }\n };\n\n this.onScroll = function (_ref) {\n var target = _ref.target,\n currentTarget = _ref.currentTarget;\n\n if (target === currentTarget && target.scrollLeft > 0) {\n target.scrollLeft = 0;\n }\n };\n\n this.setSentinelStart = function (node) {\n _this3.sentinelStart = node;\n };\n\n this.setSentinelEnd = function (node) {\n _this3.sentinelEnd = node;\n };\n\n this.setPanelSentinelStart = function (node) {\n if (node !== _this3.panelSentinelStart) {\n _this3.updateSentinelContext();\n }\n\n _this3.panelSentinelStart = node;\n };\n\n this.setPanelSentinelEnd = function (node) {\n if (node !== _this3.panelSentinelEnd) {\n _this3.updateSentinelContext();\n }\n\n _this3.panelSentinelEnd = node;\n };\n\n this.setActiveKey = function (activeKey) {\n if (_this3.state.activeKey !== activeKey) {\n if (!('activeKey' in _this3.props)) {\n _this3.setState({\n activeKey: activeKey\n });\n }\n\n _this3.props.onChange(activeKey);\n }\n };\n\n this.getNextActiveKey = function (next) {\n var activeKey = _this3.state.activeKey;\n var children = [];\n React.Children.forEach(_this3.props.children, function (c) {\n if (c && !c.props.disabled) {\n if (next) {\n children.push(c);\n } else {\n children.unshift(c);\n }\n }\n });\n var length = children.length;\n var ret = length && children[0].key;\n children.forEach(function (child, i) {\n if (child.key === activeKey) {\n if (i === length - 1) {\n ret = children[0].key;\n } else {\n ret = children[i + 1].key;\n }\n }\n });\n return ret;\n };\n};\n\nTabs.defaultProps = {\n prefixCls: 'rc-tabs',\n destroyInactiveTabPane: false,\n onChange: noop,\n navWrapper: function navWrapper(arg) {\n return arg;\n },\n tabBarPosition: 'top',\n children: null,\n style: {},\n direction: 'ltr'\n};\nTabs.TabPane = TabPane;\npolyfill(Tabs);\nexport default Tabs;","import _extends from 'babel-runtime/helpers/extends';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _createClass from 'babel-runtime/helpers/createClass';\nimport _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';\nimport _inherits from 'babel-runtime/helpers/inherits';\nimport React from 'react';\nimport classnames from 'classnames';\nimport { getTransformByIndex, getActiveIndex, getTransformPropValue, getMarginStyle } from './utils';\n\nvar TabContent = function (_React$Component) {\n _inherits(TabContent, _React$Component);\n\n function TabContent() {\n _classCallCheck(this, TabContent);\n\n return _possibleConstructorReturn(this, (TabContent.__proto__ || Object.getPrototypeOf(TabContent)).apply(this, arguments));\n }\n\n _createClass(TabContent, [{\n key: 'getTabPanes',\n value: function getTabPanes() {\n var props = this.props;\n var activeKey = props.activeKey;\n var children = props.children;\n var newChildren = [];\n React.Children.forEach(children, function (child) {\n if (!child) {\n return;\n }\n\n var key = child.key;\n var active = activeKey === key;\n newChildren.push(React.cloneElement(child, {\n active: active,\n destroyInactiveTabPane: props.destroyInactiveTabPane,\n rootPrefixCls: props.prefixCls\n }));\n });\n return newChildren;\n }\n }, {\n key: 'render',\n value: function render() {\n var _classnames;\n\n var props = this.props;\n var prefixCls = props.prefixCls,\n children = props.children,\n activeKey = props.activeKey,\n className = props.className,\n tabBarPosition = props.tabBarPosition,\n animated = props.animated,\n animatedWithMargin = props.animatedWithMargin,\n direction = props.direction;\n var style = props.style;\n var classes = classnames((_classnames = {}, _defineProperty(_classnames, prefixCls + '-content', true), _defineProperty(_classnames, animated ? prefixCls + '-content-animated' : prefixCls + '-content-no-animated', true), _classnames), className);\n\n if (animated) {\n var activeIndex = getActiveIndex(children, activeKey);\n\n if (activeIndex !== -1) {\n var animatedStyle = animatedWithMargin ? getMarginStyle(activeIndex, tabBarPosition) : getTransformPropValue(getTransformByIndex(activeIndex, tabBarPosition, direction));\n style = _extends({}, style, animatedStyle);\n } else {\n style = _extends({}, style, {\n display: 'none'\n });\n }\n }\n\n return React.createElement('div', {\n className: classes,\n style: style\n }, this.getTabPanes());\n }\n }]);\n\n return TabContent;\n}(React.Component);\n\nexport default TabContent;\nTabContent.defaultProps = {\n animated: true\n};","import Tabs from './Tabs';\nimport TabPane from './TabPane';\nimport TabContent from './TabContent';\nexport default Tabs;\nexport { TabPane, TabContent };","/*!\n * Glide.js v3.4.1\n * (c) 2013-2019 Jędrzej Chałubek (http://jedrzejchalubek.com/)\n * Released under the MIT License.\n */\nvar defaults = {\n /**\n * Type of the movement.\n *\n * Available types:\n * `slider` - Rewinds slider to the start/end when it reaches the first or last slide.\n * `carousel` - Changes slides without starting over when it reaches the first or last slide.\n *\n * @type {String}\n */\n type: 'slider',\n\n /**\n * Start at specific slide number defined with zero-based index.\n *\n * @type {Number}\n */\n startAt: 0,\n\n /**\n * A number of slides visible on the single viewport.\n *\n * @type {Number}\n */\n perView: 1,\n\n /**\n * Focus currently active slide at a specified position in the track.\n *\n * Available inputs:\n * `center` - Current slide will be always focused at the center of a track.\n * `0,1,2,3...` - Current slide will be focused on the specified zero-based index.\n *\n * @type {String|Number}\n */\n focusAt: 0,\n\n /**\n * A size of the gap added between slides.\n *\n * @type {Number}\n */\n gap: 10,\n\n /**\n * Change slides after a specified interval. Use `false` for turning off autoplay.\n *\n * @type {Number|Boolean}\n */\n autoplay: false,\n\n /**\n * Stop autoplay on mouseover event.\n *\n * @type {Boolean}\n */\n hoverpause: true,\n\n /**\n * Allow for changing slides with left and right keyboard arrows.\n *\n * @type {Boolean}\n */\n keyboard: true,\n\n /**\n * Stop running `perView` number of slides from the end. Use this\n * option if you don't want to have an empty space after\n * a slider. Works only with `slider` type and a\n * non-centered `focusAt` setting.\n *\n * @type {Boolean}\n */\n bound: false,\n\n /**\n * Minimal swipe distance needed to change the slide. Use `false` for turning off a swiping.\n *\n * @type {Number|Boolean}\n */\n swipeThreshold: 80,\n\n /**\n * Minimal mouse drag distance needed to change the slide. Use `false` for turning off a dragging.\n *\n * @type {Number|Boolean}\n */\n dragThreshold: 120,\n\n /**\n * A maximum number of slides to which movement will be made on swiping or dragging. Use `false` for unlimited.\n *\n * @type {Number|Boolean}\n */\n perTouch: false,\n\n /**\n * Moving distance ratio of the slides on a swiping and dragging.\n *\n * @type {Number}\n */\n touchRatio: 0.5,\n\n /**\n * Angle required to activate slides moving on swiping or dragging.\n *\n * @type {Number}\n */\n touchAngle: 45,\n\n /**\n * Duration of the animation in milliseconds.\n *\n * @type {Number}\n */\n animationDuration: 400,\n\n /**\n * Allows looping the `slider` type. Slider will rewind to the first/last slide when it's at the start/end.\n *\n * @type {Boolean}\n */\n rewind: true,\n\n /**\n * Duration of the rewinding animation of the `slider` type in milliseconds.\n *\n * @type {Number}\n */\n rewindDuration: 800,\n\n /**\n * Easing function for the animation.\n *\n * @type {String}\n */\n animationTimingFunc: 'cubic-bezier(.165, .840, .440, 1)',\n\n /**\n * Throttle costly events at most once per every wait milliseconds.\n *\n * @type {Number}\n */\n throttle: 10,\n\n /**\n * Moving direction mode.\n *\n * Available inputs:\n * - 'ltr' - left to right movement,\n * - 'rtl' - right to left movement.\n *\n * @type {String}\n */\n direction: 'ltr',\n\n /**\n * The distance value of the next and previous viewports which\n * have to peek in the current view. Accepts number and\n * pixels as a string. Left and right peeking can be\n * set up separately with a directions object.\n *\n * For example:\n * `100` - Peek 100px on the both sides.\n * { before: 100, after: 50 }` - Peek 100px on the left side and 50px on the right side.\n *\n * @type {Number|String|Object}\n */\n peek: 0,\n\n /**\n * Collection of options applied at specified media breakpoints.\n * For example: display two slides per view under 800px.\n * `{\n * '800px': {\n * perView: 2\n * }\n * }`\n */\n breakpoints: {},\n\n /**\n * Collection of internally used HTML classes.\n *\n * @todo Refactor `slider` and `carousel` properties to single `type: { slider: '', carousel: '' }` object\n * @type {Object}\n */\n classes: {\n direction: {\n ltr: 'glide--ltr',\n rtl: 'glide--rtl'\n },\n slider: 'glide--slider',\n carousel: 'glide--carousel',\n swipeable: 'glide--swipeable',\n dragging: 'glide--dragging',\n cloneSlide: 'glide__slide--clone',\n activeNav: 'glide__bullet--active',\n activeSlide: 'glide__slide--active',\n disabledArrow: 'glide__arrow--disabled'\n }\n};\n/**\n * Outputs warning message to the bowser console.\n *\n * @param {String} msg\n * @return {Void}\n */\n\nfunction warn(msg) {\n console.error(\"[Glide warn]: \" + msg);\n}\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar classCallCheck = function classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n};\n\nvar inherits = function inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar possibleConstructorReturn = function possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n/**\n * Converts value entered as number\n * or string to integer value.\n *\n * @param {String} value\n * @returns {Number}\n */\n\n\nfunction toInt(value) {\n return parseInt(value);\n}\n/**\n * Converts value entered as number\n * or string to flat value.\n *\n * @param {String} value\n * @returns {Number}\n */\n\n\nfunction toFloat(value) {\n return parseFloat(value);\n}\n/**\n * Indicates whether the specified value is a string.\n *\n * @param {*} value\n * @return {Boolean}\n */\n\n\nfunction isString(value) {\n return typeof value === 'string';\n}\n/**\n * Indicates whether the specified value is an object.\n *\n * @param {*} value\n * @return {Boolean}\n *\n * @see https://github.com/jashkenas/underscore\n */\n\n\nfunction isObject(value) {\n var type = typeof value === 'undefined' ? 'undefined' : _typeof(value);\n return type === 'function' || type === 'object' && !!value; // eslint-disable-line no-mixed-operators\n}\n/**\n * Indicates whether the specified value is a number.\n *\n * @param {*} value\n * @return {Boolean}\n */\n\n\nfunction isNumber(value) {\n return typeof value === 'number';\n}\n/**\n * Indicates whether the specified value is a function.\n *\n * @param {*} value\n * @return {Boolean}\n */\n\n\nfunction isFunction(value) {\n return typeof value === 'function';\n}\n/**\n * Indicates whether the specified value is undefined.\n *\n * @param {*} value\n * @return {Boolean}\n */\n\n\nfunction isUndefined(value) {\n return typeof value === 'undefined';\n}\n/**\n * Indicates whether the specified value is an array.\n *\n * @param {*} value\n * @return {Boolean}\n */\n\n\nfunction isArray(value) {\n return value.constructor === Array;\n}\n/**\n * Creates and initializes specified collection of extensions.\n * Each extension receives access to instance of glide and rest of components.\n *\n * @param {Object} glide\n * @param {Object} extensions\n *\n * @returns {Object}\n */\n\n\nfunction mount(glide, extensions, events) {\n var components = {};\n\n for (var name in extensions) {\n if (isFunction(extensions[name])) {\n components[name] = extensions[name](glide, components, events);\n } else {\n warn('Extension must be a function');\n }\n }\n\n for (var _name in components) {\n if (isFunction(components[_name].mount)) {\n components[_name].mount();\n }\n }\n\n return components;\n}\n/**\n * Defines getter and setter property on the specified object.\n *\n * @param {Object} obj Object where property has to be defined.\n * @param {String} prop Name of the defined property.\n * @param {Object} definition Get and set definitions for the property.\n * @return {Void}\n */\n\n\nfunction define(obj, prop, definition) {\n Object.defineProperty(obj, prop, definition);\n}\n/**\n * Sorts aphabetically object keys.\n *\n * @param {Object} obj\n * @return {Object}\n */\n\n\nfunction sortKeys(obj) {\n return Object.keys(obj).sort().reduce(function (r, k) {\n r[k] = obj[k];\n return r[k], r;\n }, {});\n}\n/**\n * Merges passed settings object with default options.\n *\n * @param {Object} defaults\n * @param {Object} settings\n * @return {Object}\n */\n\n\nfunction mergeOptions(defaults, settings) {\n var options = _extends({}, defaults, settings); // `Object.assign` do not deeply merge objects, so we\n // have to do it manually for every nested object\n // in options. Although it does not look smart,\n // it's smaller and faster than some fancy\n // merging deep-merge algorithm script.\n\n\n if (settings.hasOwnProperty('classes')) {\n options.classes = _extends({}, defaults.classes, settings.classes);\n\n if (settings.classes.hasOwnProperty('direction')) {\n options.classes.direction = _extends({}, defaults.classes.direction, settings.classes.direction);\n }\n }\n\n if (settings.hasOwnProperty('breakpoints')) {\n options.breakpoints = _extends({}, defaults.breakpoints, settings.breakpoints);\n }\n\n return options;\n}\n\nvar EventsBus = function () {\n /**\n * Construct a EventBus instance.\n *\n * @param {Object} events\n */\n function EventsBus() {\n var events = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n classCallCheck(this, EventsBus);\n this.events = events;\n this.hop = events.hasOwnProperty;\n }\n /**\n * Adds listener to the specifed event.\n *\n * @param {String|Array} event\n * @param {Function} handler\n */\n\n\n createClass(EventsBus, [{\n key: 'on',\n value: function on(event, handler) {\n if (isArray(event)) {\n for (var i = 0; i < event.length; i++) {\n this.on(event[i], handler);\n }\n } // Create the event's object if not yet created\n\n\n if (!this.hop.call(this.events, event)) {\n this.events[event] = [];\n } // Add the handler to queue\n\n\n var index = this.events[event].push(handler) - 1; // Provide handle back for removal of event\n\n return {\n remove: function remove() {\n delete this.events[event][index];\n }\n };\n }\n /**\n * Runs registered handlers for specified event.\n *\n * @param {String|Array} event\n * @param {Object=} context\n */\n\n }, {\n key: 'emit',\n value: function emit(event, context) {\n if (isArray(event)) {\n for (var i = 0; i < event.length; i++) {\n this.emit(event[i], context);\n }\n } // If the event doesn't exist, or there's no handlers in queue, just leave\n\n\n if (!this.hop.call(this.events, event)) {\n return;\n } // Cycle through events queue, fire!\n\n\n this.events[event].forEach(function (item) {\n item(context || {});\n });\n }\n }]);\n return EventsBus;\n}();\n\nvar Glide = function () {\n /**\r\n * Construct glide.\r\n *\r\n * @param {String} selector\r\n * @param {Object} options\r\n */\n function Glide(selector) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n classCallCheck(this, Glide);\n this._c = {};\n this._t = [];\n this._e = new EventsBus();\n this.disabled = false;\n this.selector = selector;\n this.settings = mergeOptions(defaults, options);\n this.index = this.settings.startAt;\n }\n /**\r\n * Initializes glide.\r\n *\r\n * @param {Object} extensions Collection of extensions to initialize.\r\n * @return {Glide}\r\n */\n\n\n createClass(Glide, [{\n key: 'mount',\n value: function mount$$1() {\n var extensions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this._e.emit('mount.before');\n\n if (isObject(extensions)) {\n this._c = mount(this, extensions, this._e);\n } else {\n warn('You need to provide a object on `mount()`');\n }\n\n this._e.emit('mount.after');\n\n return this;\n }\n /**\r\n * Collects an instance `translate` transformers.\r\n *\r\n * @param {Array} transformers Collection of transformers.\r\n * @return {Void}\r\n */\n\n }, {\n key: 'mutate',\n value: function mutate() {\n var transformers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (isArray(transformers)) {\n this._t = transformers;\n } else {\n warn('You need to provide a array on `mutate()`');\n }\n\n return this;\n }\n /**\r\n * Updates glide with specified settings.\r\n *\r\n * @param {Object} settings\r\n * @return {Glide}\r\n */\n\n }, {\n key: 'update',\n value: function update() {\n var settings = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.settings = mergeOptions(this.settings, settings);\n\n if (settings.hasOwnProperty('startAt')) {\n this.index = settings.startAt;\n }\n\n this._e.emit('update');\n\n return this;\n }\n /**\r\n * Change slide with specified pattern. A pattern must be in the special format:\r\n * `>` - Move one forward\r\n * `<` - Move one backward\r\n * `={i}` - Go to {i} zero-based slide (eq. '=1', will go to second slide)\r\n * `>>` - Rewinds to end (last slide)\r\n * `<<` - Rewinds to start (first slide)\r\n *\r\n * @param {String} pattern\r\n * @return {Glide}\r\n */\n\n }, {\n key: 'go',\n value: function go(pattern) {\n this._c.Run.make(pattern);\n\n return this;\n }\n /**\r\n * Move track by specified distance.\r\n *\r\n * @param {String} distance\r\n * @return {Glide}\r\n */\n\n }, {\n key: 'move',\n value: function move(distance) {\n this._c.Transition.disable();\n\n this._c.Move.make(distance);\n\n return this;\n }\n /**\r\n * Destroy instance and revert all changes done by this._c.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n this._e.emit('destroy');\n\n return this;\n }\n /**\r\n * Start instance autoplaying.\r\n *\r\n * @param {Boolean|Number} interval Run autoplaying with passed interval regardless of `autoplay` settings\r\n * @return {Glide}\r\n */\n\n }, {\n key: 'play',\n value: function play() {\n var interval = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n if (interval) {\n this.settings.autoplay = interval;\n }\n\n this._e.emit('play');\n\n return this;\n }\n /**\r\n * Stop instance autoplaying.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: 'pause',\n value: function pause() {\n this._e.emit('pause');\n\n return this;\n }\n /**\r\n * Sets glide into a idle status.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: 'disable',\n value: function disable() {\n this.disabled = true;\n return this;\n }\n /**\r\n * Sets glide into a active status.\r\n *\r\n * @return {Glide}\r\n */\n\n }, {\n key: 'enable',\n value: function enable() {\n this.disabled = false;\n return this;\n }\n /**\r\n * Adds cuutom event listener with handler.\r\n *\r\n * @param {String|Array} event\r\n * @param {Function} handler\r\n * @return {Glide}\r\n */\n\n }, {\n key: 'on',\n value: function on(event, handler) {\n this._e.on(event, handler);\n\n return this;\n }\n /**\r\n * Checks if glide is a precised type.\r\n *\r\n * @param {String} name\r\n * @return {Boolean}\r\n */\n\n }, {\n key: 'isType',\n value: function isType(name) {\n return this.settings.type === name;\n }\n /**\r\n * Gets value of the core options.\r\n *\r\n * @return {Object}\r\n */\n\n }, {\n key: 'settings',\n get: function get$$1() {\n return this._o;\n }\n /**\r\n * Sets value of the core options.\r\n *\r\n * @param {Object} o\r\n * @return {Void}\r\n */\n ,\n set: function set$$1(o) {\n if (isObject(o)) {\n this._o = o;\n } else {\n warn('Options must be an `object` instance.');\n }\n }\n /**\r\n * Gets current index of the slider.\r\n *\r\n * @return {Object}\r\n */\n\n }, {\n key: 'index',\n get: function get$$1() {\n return this._i;\n }\n /**\r\n * Sets current index a slider.\r\n *\r\n * @return {Object}\r\n */\n ,\n set: function set$$1(i) {\n this._i = toInt(i);\n }\n /**\r\n * Gets type name of the slider.\r\n *\r\n * @return {String}\r\n */\n\n }, {\n key: 'type',\n get: function get$$1() {\n return this.settings.type;\n }\n /**\r\n * Gets value of the idle status.\r\n *\r\n * @return {Boolean}\r\n */\n\n }, {\n key: 'disabled',\n get: function get$$1() {\n return this._d;\n }\n /**\r\n * Sets value of the idle status.\r\n *\r\n * @return {Boolean}\r\n */\n ,\n set: function set$$1(status) {\n this._d = !!status;\n }\n }]);\n return Glide;\n}();\n\nfunction Run(Glide, Components, Events) {\n var Run = {\n /**\n * Initializes autorunning of the glide.\n *\n * @return {Void}\n */\n mount: function mount() {\n this._o = false;\n },\n\n /**\n * Makes glides running based on the passed moving schema.\n *\n * @param {String} move\n */\n make: function make(move) {\n var _this = this;\n\n if (!Glide.disabled) {\n Glide.disable();\n this.move = move;\n Events.emit('run.before', this.move);\n this.calculate();\n Events.emit('run', this.move);\n Components.Transition.after(function () {\n if (_this.isStart()) {\n Events.emit('run.start', _this.move);\n }\n\n if (_this.isEnd()) {\n Events.emit('run.end', _this.move);\n }\n\n if (_this.isOffset('<') || _this.isOffset('>')) {\n _this._o = false;\n Events.emit('run.offset', _this.move);\n }\n\n Events.emit('run.after', _this.move);\n Glide.enable();\n });\n }\n },\n\n /**\n * Calculates current index based on defined move.\n *\n * @return {Void}\n */\n calculate: function calculate() {\n var move = this.move,\n length = this.length;\n var steps = move.steps,\n direction = move.direction;\n var countableSteps = isNumber(toInt(steps)) && toInt(steps) !== 0;\n\n switch (direction) {\n case '>':\n if (steps === '>') {\n Glide.index = length;\n } else if (this.isEnd()) {\n if (!(Glide.isType('slider') && !Glide.settings.rewind)) {\n this._o = true;\n Glide.index = 0;\n }\n } else if (countableSteps) {\n Glide.index += Math.min(length - Glide.index, -toInt(steps));\n } else {\n Glide.index++;\n }\n\n break;\n\n case '<':\n if (steps === '<') {\n Glide.index = 0;\n } else if (this.isStart()) {\n if (!(Glide.isType('slider') && !Glide.settings.rewind)) {\n this._o = true;\n Glide.index = length;\n }\n } else if (countableSteps) {\n Glide.index -= Math.min(Glide.index, toInt(steps));\n } else {\n Glide.index--;\n }\n\n break;\n\n case '=':\n Glide.index = steps;\n break;\n\n default:\n warn('Invalid direction pattern [' + direction + steps + '] has been used');\n break;\n }\n },\n\n /**\n * Checks if we are on the first slide.\n *\n * @return {Boolean}\n */\n isStart: function isStart() {\n return Glide.index === 0;\n },\n\n /**\n * Checks if we are on the last slide.\n *\n * @return {Boolean}\n */\n isEnd: function isEnd() {\n return Glide.index === this.length;\n },\n\n /**\n * Checks if we are making a offset run.\n *\n * @param {String} direction\n * @return {Boolean}\n */\n isOffset: function isOffset(direction) {\n return this._o && this.move.direction === direction;\n }\n };\n define(Run, 'move', {\n /**\n * Gets value of the move schema.\n *\n * @returns {Object}\n */\n get: function get() {\n return this._m;\n },\n\n /**\n * Sets value of the move schema.\n *\n * @returns {Object}\n */\n set: function set(value) {\n var step = value.substr(1);\n this._m = {\n direction: value.substr(0, 1),\n steps: step ? toInt(step) ? toInt(step) : step : 0\n };\n }\n });\n define(Run, 'length', {\n /**\n * Gets value of the running distance based\n * on zero-indexing number of slides.\n *\n * @return {Number}\n */\n get: function get() {\n var settings = Glide.settings;\n var length = Components.Html.slides.length; // If the `bound` option is acitve, a maximum running distance should be\n // reduced by `perView` and `focusAt` settings. Running distance\n // should end before creating an empty space after instance.\n\n if (Glide.isType('slider') && settings.focusAt !== 'center' && settings.bound) {\n return length - 1 - (toInt(settings.perView) - 1) + toInt(settings.focusAt);\n }\n\n return length - 1;\n }\n });\n define(Run, 'offset', {\n /**\n * Gets status of the offsetting flag.\n *\n * @return {Boolean}\n */\n get: function get() {\n return this._o;\n }\n });\n return Run;\n}\n/**\n * Returns a current time.\n *\n * @return {Number}\n */\n\n\nfunction now() {\n return new Date().getTime();\n}\n/**\n * Returns a function, that, when invoked, will only be triggered\n * at most once during a given window of time.\n *\n * @param {Function} func\n * @param {Number} wait\n * @param {Object=} options\n * @return {Function}\n *\n * @see https://github.com/jashkenas/underscore\n */\n\n\nfunction throttle(func, wait, options) {\n var timeout = void 0,\n context = void 0,\n args = void 0,\n result = void 0;\n var previous = 0;\n if (!options) options = {};\n\n var later = function later() {\n previous = options.leading === false ? 0 : now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function throttled() {\n var at = now();\n if (!previous && options.leading === false) previous = at;\n var remaining = wait - (at - previous);\n context = this;\n args = arguments;\n\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n\n previous = at;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n\n return result;\n };\n\n throttled.cancel = function () {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n}\n\nvar MARGIN_TYPE = {\n ltr: ['marginLeft', 'marginRight'],\n rtl: ['marginRight', 'marginLeft']\n};\n\nfunction Gaps(Glide, Components, Events) {\n var Gaps = {\n /**\n * Applies gaps between slides. First and last\n * slides do not receive it's edge margins.\n *\n * @param {HTMLCollection} slides\n * @return {Void}\n */\n apply: function apply(slides) {\n for (var i = 0, len = slides.length; i < len; i++) {\n var style = slides[i].style;\n var direction = Components.Direction.value;\n\n if (i !== 0) {\n style[MARGIN_TYPE[direction][0]] = this.value / 2 + 'px';\n } else {\n style[MARGIN_TYPE[direction][0]] = '';\n }\n\n if (i !== slides.length - 1) {\n style[MARGIN_TYPE[direction][1]] = this.value / 2 + 'px';\n } else {\n style[MARGIN_TYPE[direction][1]] = '';\n }\n }\n },\n\n /**\n * Removes gaps from the slides.\n *\n * @param {HTMLCollection} slides\n * @returns {Void}\n */\n remove: function remove(slides) {\n for (var i = 0, len = slides.length; i < len; i++) {\n var style = slides[i].style;\n style.marginLeft = '';\n style.marginRight = '';\n }\n }\n };\n define(Gaps, 'value', {\n /**\n * Gets value of the gap.\n *\n * @returns {Number}\n */\n get: function get() {\n return toInt(Glide.settings.gap);\n }\n });\n define(Gaps, 'grow', {\n /**\n * Gets additional dimentions value caused by gaps.\n * Used to increase width of the slides wrapper.\n *\n * @returns {Number}\n */\n get: function get() {\n return Gaps.value * (Components.Sizes.length - 1);\n }\n });\n define(Gaps, 'reductor', {\n /**\n * Gets reduction value caused by gaps.\n * Used to subtract width of the slides.\n *\n * @returns {Number}\n */\n get: function get() {\n var perView = Glide.settings.perView;\n return Gaps.value * (perView - 1) / perView;\n }\n });\n /**\n * Apply calculated gaps:\n * - after building, so slides (including clones) will receive proper margins\n * - on updating via API, to recalculate gaps with new options\n */\n\n Events.on(['build.after', 'update'], throttle(function () {\n Gaps.apply(Components.Html.wrapper.children);\n }, 30));\n /**\n * Remove gaps:\n * - on destroying to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Gaps.remove(Components.Html.wrapper.children);\n });\n return Gaps;\n}\n/**\n * Finds siblings nodes of the passed node.\n *\n * @param {Element} node\n * @return {Array}\n */\n\n\nfunction siblings(node) {\n if (node && node.parentNode) {\n var n = node.parentNode.firstChild;\n var matched = [];\n\n for (; n; n = n.nextSibling) {\n if (n.nodeType === 1 && n !== node) {\n matched.push(n);\n }\n }\n\n return matched;\n }\n\n return [];\n}\n/**\n * Checks if passed node exist and is a valid element.\n *\n * @param {Element} node\n * @return {Boolean}\n */\n\n\nfunction exist(node) {\n if (node && node instanceof window.HTMLElement) {\n return true;\n }\n\n return false;\n}\n\nvar TRACK_SELECTOR = '[data-glide-el=\"track\"]';\n\nfunction Html(Glide, Components) {\n var Html = {\n /**\n * Setup slider HTML nodes.\n *\n * @param {Glide} glide\n */\n mount: function mount() {\n this.root = Glide.selector;\n this.track = this.root.querySelector(TRACK_SELECTOR);\n this.slides = Array.prototype.slice.call(this.wrapper.children).filter(function (slide) {\n return !slide.classList.contains(Glide.settings.classes.cloneSlide);\n });\n }\n };\n define(Html, 'root', {\n /**\n * Gets node of the glide main element.\n *\n * @return {Object}\n */\n get: function get() {\n return Html._r;\n },\n\n /**\n * Sets node of the glide main element.\n *\n * @return {Object}\n */\n set: function set(r) {\n if (isString(r)) {\n r = document.querySelector(r);\n }\n\n if (exist(r)) {\n Html._r = r;\n } else {\n warn('Root element must be a existing Html node');\n }\n }\n });\n define(Html, 'track', {\n /**\n * Gets node of the glide track with slides.\n *\n * @return {Object}\n */\n get: function get() {\n return Html._t;\n },\n\n /**\n * Sets node of the glide track with slides.\n *\n * @return {Object}\n */\n set: function set(t) {\n if (exist(t)) {\n Html._t = t;\n } else {\n warn('Could not find track element. Please use ' + TRACK_SELECTOR + ' attribute.');\n }\n }\n });\n define(Html, 'wrapper', {\n /**\n * Gets node of the slides wrapper.\n *\n * @return {Object}\n */\n get: function get() {\n return Html.track.children[0];\n }\n });\n return Html;\n}\n\nfunction Peek(Glide, Components, Events) {\n var Peek = {\n /**\n * Setups how much to peek based on settings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.value = Glide.settings.peek;\n }\n };\n define(Peek, 'value', {\n /**\n * Gets value of the peek.\n *\n * @returns {Number|Object}\n */\n get: function get() {\n return Peek._v;\n },\n\n /**\n * Sets value of the peek.\n *\n * @param {Number|Object} value\n * @return {Void}\n */\n set: function set(value) {\n if (isObject(value)) {\n value.before = toInt(value.before);\n value.after = toInt(value.after);\n } else {\n value = toInt(value);\n }\n\n Peek._v = value;\n }\n });\n define(Peek, 'reductor', {\n /**\n * Gets reduction value caused by peek.\n *\n * @returns {Number}\n */\n get: function get() {\n var value = Peek.value;\n var perView = Glide.settings.perView;\n\n if (isObject(value)) {\n return value.before / perView + value.after / perView;\n }\n\n return value * 2 / perView;\n }\n });\n /**\n * Recalculate peeking sizes on:\n * - when resizing window to update to proper percents\n */\n\n Events.on(['resize', 'update'], function () {\n Peek.mount();\n });\n return Peek;\n}\n\nfunction Move(Glide, Components, Events) {\n var Move = {\n /**\n * Constructs move component.\n *\n * @returns {Void}\n */\n mount: function mount() {\n this._o = 0;\n },\n\n /**\n * Calculates a movement value based on passed offset and currently active index.\n *\n * @param {Number} offset\n * @return {Void}\n */\n make: function make() {\n var _this = this;\n\n var offset = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n this.offset = offset;\n Events.emit('move', {\n movement: this.value\n });\n Components.Transition.after(function () {\n Events.emit('move.after', {\n movement: _this.value\n });\n });\n }\n };\n define(Move, 'offset', {\n /**\n * Gets an offset value used to modify current translate.\n *\n * @return {Object}\n */\n get: function get() {\n return Move._o;\n },\n\n /**\n * Sets an offset value used to modify current translate.\n *\n * @return {Object}\n */\n set: function set(value) {\n Move._o = !isUndefined(value) ? toInt(value) : 0;\n }\n });\n define(Move, 'translate', {\n /**\n * Gets a raw movement value.\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Sizes.slideWidth * Glide.index;\n }\n });\n define(Move, 'value', {\n /**\n * Gets an actual movement value corrected by offset.\n *\n * @return {Number}\n */\n get: function get() {\n var offset = this.offset;\n var translate = this.translate;\n\n if (Components.Direction.is('rtl')) {\n return translate + offset;\n }\n\n return translate - offset;\n }\n });\n /**\n * Make movement to proper slide on:\n * - before build, so glide will start at `startAt` index\n * - on each standard run to move to newly calculated index\n */\n\n Events.on(['build.before', 'run'], function () {\n Move.make();\n });\n return Move;\n}\n\nfunction Sizes(Glide, Components, Events) {\n var Sizes = {\n /**\n * Setups dimentions of slides.\n *\n * @return {Void}\n */\n setupSlides: function setupSlides() {\n var width = this.slideWidth + 'px';\n var slides = Components.Html.slides;\n\n for (var i = 0; i < slides.length; i++) {\n slides[i].style.width = width;\n }\n },\n\n /**\n * Setups dimentions of slides wrapper.\n *\n * @return {Void}\n */\n setupWrapper: function setupWrapper(dimention) {\n Components.Html.wrapper.style.width = this.wrapperSize + 'px';\n },\n\n /**\n * Removes applied styles from HTML elements.\n *\n * @returns {Void}\n */\n remove: function remove() {\n var slides = Components.Html.slides;\n\n for (var i = 0; i < slides.length; i++) {\n slides[i].style.width = '';\n }\n\n Components.Html.wrapper.style.width = '';\n }\n };\n define(Sizes, 'length', {\n /**\n * Gets count number of the slides.\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Html.slides.length;\n }\n });\n define(Sizes, 'width', {\n /**\n * Gets width value of the glide.\n *\n * @return {Number}\n */\n get: function get() {\n return Components.Html.root.offsetWidth;\n }\n });\n define(Sizes, 'wrapperSize', {\n /**\n * Gets size of the slides wrapper.\n *\n * @return {Number}\n */\n get: function get() {\n return Sizes.slideWidth * Sizes.length + Components.Gaps.grow + Components.Clones.grow;\n }\n });\n define(Sizes, 'slideWidth', {\n /**\n * Gets width value of the single slide.\n *\n * @return {Number}\n */\n get: function get() {\n return Sizes.width / Glide.settings.perView - Components.Peek.reductor - Components.Gaps.reductor;\n }\n });\n /**\n * Apply calculated glide's dimensions:\n * - before building, so other dimentions (e.g. translate) will be calculated propertly\n * - when resizing window to recalculate sildes dimensions\n * - on updating via API, to calculate dimensions based on new options\n */\n\n Events.on(['build.before', 'resize', 'update'], function () {\n Sizes.setupSlides();\n Sizes.setupWrapper();\n });\n /**\n * Remove calculated glide's dimensions:\n * - on destoting to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Sizes.remove();\n });\n return Sizes;\n}\n\nfunction Build(Glide, Components, Events) {\n var Build = {\n /**\n * Init glide building. Adds classes, sets\n * dimensions and setups initial state.\n *\n * @return {Void}\n */\n mount: function mount() {\n Events.emit('build.before');\n this.typeClass();\n this.activeClass();\n Events.emit('build.after');\n },\n\n /**\n * Adds `type` class to the glide element.\n *\n * @return {Void}\n */\n typeClass: function typeClass() {\n Components.Html.root.classList.add(Glide.settings.classes[Glide.settings.type]);\n },\n\n /**\n * Sets active class to current slide.\n *\n * @return {Void}\n */\n activeClass: function activeClass() {\n var classes = Glide.settings.classes;\n var slide = Components.Html.slides[Glide.index];\n\n if (slide) {\n slide.classList.add(classes.activeSlide);\n siblings(slide).forEach(function (sibling) {\n sibling.classList.remove(classes.activeSlide);\n });\n }\n },\n\n /**\n * Removes HTML classes applied at building.\n *\n * @return {Void}\n */\n removeClasses: function removeClasses() {\n var classes = Glide.settings.classes;\n Components.Html.root.classList.remove(classes[Glide.settings.type]);\n Components.Html.slides.forEach(function (sibling) {\n sibling.classList.remove(classes.activeSlide);\n });\n }\n };\n /**\n * Clear building classes:\n * - on destroying to bring HTML to its initial state\n * - on updating to remove classes before remounting component\n */\n\n Events.on(['destroy', 'update'], function () {\n Build.removeClasses();\n });\n /**\n * Remount component:\n * - on resizing of the window to calculate new dimentions\n * - on updating settings via API\n */\n\n Events.on(['resize', 'update'], function () {\n Build.mount();\n });\n /**\n * Swap active class of current slide:\n * - after each move to the new index\n */\n\n Events.on('move.after', function () {\n Build.activeClass();\n });\n return Build;\n}\n\nfunction Clones(Glide, Components, Events) {\n var Clones = {\n /**\n * Create pattern map and collect slides to be cloned.\n */\n mount: function mount() {\n this.items = [];\n\n if (Glide.isType('carousel')) {\n this.items = this.collect();\n }\n },\n\n /**\n * Collect clones with pattern.\n *\n * @return {Void}\n */\n collect: function collect() {\n var items = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var slides = Components.Html.slides;\n var _Glide$settings = Glide.settings,\n perView = _Glide$settings.perView,\n classes = _Glide$settings.classes;\n var peekIncrementer = +!!Glide.settings.peek;\n var part = perView + peekIncrementer;\n var start = slides.slice(0, part);\n var end = slides.slice(-part);\n\n for (var r = 0; r < Math.max(1, Math.floor(perView / slides.length)); r++) {\n for (var i = 0; i < start.length; i++) {\n var clone = start[i].cloneNode(true);\n clone.classList.add(classes.cloneSlide);\n items.push(clone);\n }\n\n for (var _i = 0; _i < end.length; _i++) {\n var _clone = end[_i].cloneNode(true);\n\n _clone.classList.add(classes.cloneSlide);\n\n items.unshift(_clone);\n }\n }\n\n return items;\n },\n\n /**\n * Append cloned slides with generated pattern.\n *\n * @return {Void}\n */\n append: function append() {\n var items = this.items;\n var _Components$Html = Components.Html,\n wrapper = _Components$Html.wrapper,\n slides = _Components$Html.slides;\n var half = Math.floor(items.length / 2);\n var prepend = items.slice(0, half).reverse();\n var append = items.slice(half, items.length);\n var width = Components.Sizes.slideWidth + 'px';\n\n for (var i = 0; i < append.length; i++) {\n wrapper.appendChild(append[i]);\n }\n\n for (var _i2 = 0; _i2 < prepend.length; _i2++) {\n wrapper.insertBefore(prepend[_i2], slides[0]);\n }\n\n for (var _i3 = 0; _i3 < items.length; _i3++) {\n items[_i3].style.width = width;\n }\n },\n\n /**\n * Remove all cloned slides.\n *\n * @return {Void}\n */\n remove: function remove() {\n var items = this.items;\n\n for (var i = 0; i < items.length; i++) {\n Components.Html.wrapper.removeChild(items[i]);\n }\n }\n };\n define(Clones, 'grow', {\n /**\n * Gets additional dimentions value caused by clones.\n *\n * @return {Number}\n */\n get: function get() {\n return (Components.Sizes.slideWidth + Components.Gaps.value) * Clones.items.length;\n }\n });\n /**\n * Append additional slide's clones:\n * - while glide's type is `carousel`\n */\n\n Events.on('update', function () {\n Clones.remove();\n Clones.mount();\n Clones.append();\n });\n /**\n * Append additional slide's clones:\n * - while glide's type is `carousel`\n */\n\n Events.on('build.before', function () {\n if (Glide.isType('carousel')) {\n Clones.append();\n }\n });\n /**\n * Remove clones HTMLElements:\n * - on destroying, to bring HTML to its initial state\n */\n\n Events.on('destroy', function () {\n Clones.remove();\n });\n return Clones;\n}\n\nvar EventsBinder = function () {\n /**\n * Construct a EventsBinder instance.\n */\n function EventsBinder() {\n var listeners = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n classCallCheck(this, EventsBinder);\n this.listeners = listeners;\n }\n /**\n * Adds events listeners to arrows HTML elements.\n *\n * @param {String|Array} events\n * @param {Element|Window|Document} el\n * @param {Function} closure\n * @param {Boolean|Object} capture\n * @return {Void}\n */\n\n\n createClass(EventsBinder, [{\n key: 'on',\n value: function on(events, el, closure) {\n var capture = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n if (isString(events)) {\n events = [events];\n }\n\n for (var i = 0; i < events.length; i++) {\n this.listeners[events[i]] = closure;\n el.addEventListener(events[i], this.listeners[events[i]], capture);\n }\n }\n /**\n * Removes event listeners from arrows HTML elements.\n *\n * @param {String|Array} events\n * @param {Element|Window|Document} el\n * @param {Boolean|Object} capture\n * @return {Void}\n */\n\n }, {\n key: 'off',\n value: function off(events, el) {\n var capture = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (isString(events)) {\n events = [events];\n }\n\n for (var i = 0; i < events.length; i++) {\n el.removeEventListener(events[i], this.listeners[events[i]], capture);\n }\n }\n /**\n * Destroy collected listeners.\n *\n * @returns {Void}\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n delete this.listeners;\n }\n }]);\n return EventsBinder;\n}();\n\nfunction Resize(Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Resize = {\n /**\n * Initializes window bindings.\n */\n mount: function mount() {\n this.bind();\n },\n\n /**\n * Binds `rezsize` listener to the window.\n * It's a costly event, so we are debouncing it.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('resize', window, throttle(function () {\n Events.emit('resize');\n }, Glide.settings.throttle));\n },\n\n /**\n * Unbinds listeners from the window.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('resize', window);\n }\n };\n /**\n * Remove bindings from window:\n * - on destroying, to remove added EventListener\n */\n\n Events.on('destroy', function () {\n Resize.unbind();\n Binder.destroy();\n });\n return Resize;\n}\n\nvar VALID_DIRECTIONS = ['ltr', 'rtl'];\nvar FLIPED_MOVEMENTS = {\n '>': '<',\n '<': '>',\n '=': '='\n};\n\nfunction Direction(Glide, Components, Events) {\n var Direction = {\n /**\n * Setups gap value based on settings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.value = Glide.settings.direction;\n },\n\n /**\n * Resolves pattern based on direction value\n *\n * @param {String} pattern\n * @returns {String}\n */\n resolve: function resolve(pattern) {\n var token = pattern.slice(0, 1);\n\n if (this.is('rtl')) {\n return pattern.split(token).join(FLIPED_MOVEMENTS[token]);\n }\n\n return pattern;\n },\n\n /**\n * Checks value of direction mode.\n *\n * @param {String} direction\n * @returns {Boolean}\n */\n is: function is(direction) {\n return this.value === direction;\n },\n\n /**\n * Applies direction class to the root HTML element.\n *\n * @return {Void}\n */\n addClass: function addClass() {\n Components.Html.root.classList.add(Glide.settings.classes.direction[this.value]);\n },\n\n /**\n * Removes direction class from the root HTML element.\n *\n * @return {Void}\n */\n removeClass: function removeClass() {\n Components.Html.root.classList.remove(Glide.settings.classes.direction[this.value]);\n }\n };\n define(Direction, 'value', {\n /**\n * Gets value of the direction.\n *\n * @returns {Number}\n */\n get: function get() {\n return Direction._v;\n },\n\n /**\n * Sets value of the direction.\n *\n * @param {String} value\n * @return {Void}\n */\n set: function set(value) {\n if (VALID_DIRECTIONS.indexOf(value) > -1) {\n Direction._v = value;\n } else {\n warn('Direction value must be `ltr` or `rtl`');\n }\n }\n });\n /**\n * Clear direction class:\n * - on destroy to bring HTML to its initial state\n * - on update to remove class before reappling bellow\n */\n\n Events.on(['destroy', 'update'], function () {\n Direction.removeClass();\n });\n /**\n * Remount component:\n * - on update to reflect changes in direction value\n */\n\n Events.on('update', function () {\n Direction.mount();\n });\n /**\n * Apply direction class:\n * - before building to apply class for the first time\n * - on updating to reapply direction class that may changed\n */\n\n Events.on(['build.before', 'update'], function () {\n Direction.addClass();\n });\n return Direction;\n}\n/**\n * Reflects value of glide movement.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n\n\nfunction Rtl(Glide, Components) {\n return {\n /**\n * Negates the passed translate if glide is in RTL option.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n if (Components.Direction.is('rtl')) {\n return -translate;\n }\n\n return translate;\n }\n };\n}\n/**\n * Updates glide movement with a `gap` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n\n\nfunction Gap(Glide, Components) {\n return {\n /**\n * Modifies passed translate value with number in the `gap` settings.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n return translate + Components.Gaps.value * Glide.index;\n }\n };\n}\n/**\n * Updates glide movement with width of additional clones width.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n\n\nfunction Grow(Glide, Components) {\n return {\n /**\n * Adds to the passed translate width of the half of clones.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n return translate + Components.Clones.grow / 2;\n }\n };\n}\n/**\n * Updates glide movement with a `peek` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n\n\nfunction Peeking(Glide, Components) {\n return {\n /**\n * Modifies passed translate value with a `peek` setting.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n if (Glide.settings.focusAt >= 0) {\n var peek = Components.Peek.value;\n\n if (isObject(peek)) {\n return translate - peek.before;\n }\n\n return translate - peek;\n }\n\n return translate;\n }\n };\n}\n/**\n * Updates glide movement with a `focusAt` settings.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n\n\nfunction Focusing(Glide, Components) {\n return {\n /**\n * Modifies passed translate value with index in the `focusAt` setting.\n *\n * @param {Number} translate\n * @return {Number}\n */\n modify: function modify(translate) {\n var gap = Components.Gaps.value;\n var width = Components.Sizes.width;\n var focusAt = Glide.settings.focusAt;\n var slideWidth = Components.Sizes.slideWidth;\n\n if (focusAt === 'center') {\n return translate - (width / 2 - slideWidth / 2);\n }\n\n return translate - slideWidth * focusAt - gap * focusAt;\n }\n };\n}\n/**\n * Applies diffrent transformers on translate value.\n *\n * @param {Object} Glide\n * @param {Object} Components\n * @return {Object}\n */\n\n\nfunction mutator(Glide, Components, Events) {\n /**\n * Merge instance transformers with collection of default transformers.\n * It's important that the Rtl component be last on the list,\n * so it reflects all previous transformations.\n *\n * @type {Array}\n */\n var TRANSFORMERS = [Gap, Grow, Peeking, Focusing].concat(Glide._t, [Rtl]);\n return {\n /**\n * Piplines translate value with registered transformers.\n *\n * @param {Number} translate\n * @return {Number}\n */\n mutate: function mutate(translate) {\n for (var i = 0; i < TRANSFORMERS.length; i++) {\n var transformer = TRANSFORMERS[i];\n\n if (isFunction(transformer) && isFunction(transformer().modify)) {\n translate = transformer(Glide, Components, Events).modify(translate);\n } else {\n warn('Transformer should be a function that returns an object with `modify()` method');\n }\n }\n\n return translate;\n }\n };\n}\n\nfunction Translate(Glide, Components, Events) {\n var Translate = {\n /**\n * Sets value of translate on HTML element.\n *\n * @param {Number} value\n * @return {Void}\n */\n set: function set(value) {\n var transform = mutator(Glide, Components).mutate(value);\n Components.Html.wrapper.style.transform = 'translate3d(' + -1 * transform + 'px, 0px, 0px)';\n },\n\n /**\n * Removes value of translate from HTML element.\n *\n * @return {Void}\n */\n remove: function remove() {\n Components.Html.wrapper.style.transform = '';\n }\n };\n /**\n * Set new translate value:\n * - on move to reflect index change\n * - on updating via API to reflect possible changes in options\n */\n\n Events.on('move', function (context) {\n var gap = Components.Gaps.value;\n var length = Components.Sizes.length;\n var width = Components.Sizes.slideWidth;\n\n if (Glide.isType('carousel') && Components.Run.isOffset('<')) {\n Components.Transition.after(function () {\n Events.emit('translate.jump');\n Translate.set(width * (length - 1));\n });\n return Translate.set(-width - gap * length);\n }\n\n if (Glide.isType('carousel') && Components.Run.isOffset('>')) {\n Components.Transition.after(function () {\n Events.emit('translate.jump');\n Translate.set(0);\n });\n return Translate.set(width * length + gap * length);\n }\n\n return Translate.set(context.movement);\n });\n /**\n * Remove translate:\n * - on destroying to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Translate.remove();\n });\n return Translate;\n}\n\nfunction Transition(Glide, Components, Events) {\n /**\n * Holds inactivity status of transition.\n * When true transition is not applied.\n *\n * @type {Boolean}\n */\n var disabled = false;\n var Transition = {\n /**\n * Composes string of the CSS transition.\n *\n * @param {String} property\n * @return {String}\n */\n compose: function compose(property) {\n var settings = Glide.settings;\n\n if (!disabled) {\n return property + ' ' + this.duration + 'ms ' + settings.animationTimingFunc;\n }\n\n return property + ' 0ms ' + settings.animationTimingFunc;\n },\n\n /**\n * Sets value of transition on HTML element.\n *\n * @param {String=} property\n * @return {Void}\n */\n set: function set() {\n var property = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'transform';\n Components.Html.wrapper.style.transition = this.compose(property);\n },\n\n /**\n * Removes value of transition from HTML element.\n *\n * @return {Void}\n */\n remove: function remove() {\n Components.Html.wrapper.style.transition = '';\n },\n\n /**\n * Runs callback after animation.\n *\n * @param {Function} callback\n * @return {Void}\n */\n after: function after(callback) {\n setTimeout(function () {\n callback();\n }, this.duration);\n },\n\n /**\n * Enable transition.\n *\n * @return {Void}\n */\n enable: function enable() {\n disabled = false;\n this.set();\n },\n\n /**\n * Disable transition.\n *\n * @return {Void}\n */\n disable: function disable() {\n disabled = true;\n this.set();\n }\n };\n define(Transition, 'duration', {\n /**\n * Gets duration of the transition based\n * on currently running animation type.\n *\n * @return {Number}\n */\n get: function get() {\n var settings = Glide.settings;\n\n if (Glide.isType('slider') && Components.Run.offset) {\n return settings.rewindDuration;\n }\n\n return settings.animationDuration;\n }\n });\n /**\n * Set transition `style` value:\n * - on each moving, because it may be cleared by offset move\n */\n\n Events.on('move', function () {\n Transition.set();\n });\n /**\n * Disable transition:\n * - before initial build to avoid transitioning from `0` to `startAt` index\n * - while resizing window and recalculating dimentions\n * - on jumping from offset transition at start and end edges in `carousel` type\n */\n\n Events.on(['build.before', 'resize', 'translate.jump'], function () {\n Transition.disable();\n });\n /**\n * Enable transition:\n * - on each running, because it may be disabled by offset move\n */\n\n Events.on('run', function () {\n Transition.enable();\n });\n /**\n * Remove transition:\n * - on destroying to bring markup to its inital state\n */\n\n Events.on('destroy', function () {\n Transition.remove();\n });\n return Transition;\n}\n/**\n * Test via a getter in the options object to see\n * if the passive property is accessed.\n *\n * @see https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md#feature-detection\n */\n\n\nvar supportsPassive = false;\n\ntry {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get() {\n supportsPassive = true;\n }\n });\n window.addEventListener('testPassive', null, opts);\n window.removeEventListener('testPassive', null, opts);\n} catch (e) {}\n\nvar supportsPassive$1 = supportsPassive;\nvar START_EVENTS = ['touchstart', 'mousedown'];\nvar MOVE_EVENTS = ['touchmove', 'mousemove'];\nvar END_EVENTS = ['touchend', 'touchcancel', 'mouseup', 'mouseleave'];\nvar MOUSE_EVENTS = ['mousedown', 'mousemove', 'mouseup', 'mouseleave'];\n\nfunction Swipe(Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var swipeSin = 0;\n var swipeStartX = 0;\n var swipeStartY = 0;\n var disabled = false;\n var capture = supportsPassive$1 ? {\n passive: true\n } : false;\n var Swipe = {\n /**\n * Initializes swipe bindings.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.bindSwipeStart();\n },\n\n /**\n * Handler for `swipestart` event. Calculates entry points of the user's tap.\n *\n * @param {Object} event\n * @return {Void}\n */\n start: function start(event) {\n if (!disabled && !Glide.disabled) {\n this.disable();\n var swipe = this.touches(event);\n swipeSin = null;\n swipeStartX = toInt(swipe.pageX);\n swipeStartY = toInt(swipe.pageY);\n this.bindSwipeMove();\n this.bindSwipeEnd();\n Events.emit('swipe.start');\n }\n },\n\n /**\n * Handler for `swipemove` event. Calculates user's tap angle and distance.\n *\n * @param {Object} event\n */\n move: function move(event) {\n if (!Glide.disabled) {\n var _Glide$settings = Glide.settings,\n touchAngle = _Glide$settings.touchAngle,\n touchRatio = _Glide$settings.touchRatio,\n classes = _Glide$settings.classes;\n var swipe = this.touches(event);\n var subExSx = toInt(swipe.pageX) - swipeStartX;\n var subEySy = toInt(swipe.pageY) - swipeStartY;\n var powEX = Math.abs(subExSx << 2);\n var powEY = Math.abs(subEySy << 2);\n var swipeHypotenuse = Math.sqrt(powEX + powEY);\n var swipeCathetus = Math.sqrt(powEY);\n swipeSin = Math.asin(swipeCathetus / swipeHypotenuse);\n\n if (swipeSin * 180 / Math.PI < touchAngle) {\n event.stopPropagation();\n Components.Move.make(subExSx * toFloat(touchRatio));\n Components.Html.root.classList.add(classes.dragging);\n Events.emit('swipe.move');\n } else {\n return false;\n }\n }\n },\n\n /**\n * Handler for `swipeend` event. Finitializes user's tap and decides about glide move.\n *\n * @param {Object} event\n * @return {Void}\n */\n end: function end(event) {\n if (!Glide.disabled) {\n var settings = Glide.settings;\n var swipe = this.touches(event);\n var threshold = this.threshold(event);\n var swipeDistance = swipe.pageX - swipeStartX;\n var swipeDeg = swipeSin * 180 / Math.PI;\n var steps = Math.round(swipeDistance / Components.Sizes.slideWidth);\n this.enable();\n\n if (swipeDistance > threshold && swipeDeg < settings.touchAngle) {\n // While swipe is positive and greater than threshold move backward.\n if (settings.perTouch) {\n steps = Math.min(steps, toInt(settings.perTouch));\n }\n\n if (Components.Direction.is('rtl')) {\n steps = -steps;\n }\n\n Components.Run.make(Components.Direction.resolve('<' + steps));\n } else if (swipeDistance < -threshold && swipeDeg < settings.touchAngle) {\n // While swipe is negative and lower than negative threshold move forward.\n if (settings.perTouch) {\n steps = Math.max(steps, -toInt(settings.perTouch));\n }\n\n if (Components.Direction.is('rtl')) {\n steps = -steps;\n }\n\n Components.Run.make(Components.Direction.resolve('>' + steps));\n } else {\n // While swipe don't reach distance apply previous transform.\n Components.Move.make();\n }\n\n Components.Html.root.classList.remove(settings.classes.dragging);\n this.unbindSwipeMove();\n this.unbindSwipeEnd();\n Events.emit('swipe.end');\n }\n },\n\n /**\n * Binds swipe's starting event.\n *\n * @return {Void}\n */\n bindSwipeStart: function bindSwipeStart() {\n var _this = this;\n\n var settings = Glide.settings;\n\n if (settings.swipeThreshold) {\n Binder.on(START_EVENTS[0], Components.Html.wrapper, function (event) {\n _this.start(event);\n }, capture);\n }\n\n if (settings.dragThreshold) {\n Binder.on(START_EVENTS[1], Components.Html.wrapper, function (event) {\n _this.start(event);\n }, capture);\n }\n },\n\n /**\n * Unbinds swipe's starting event.\n *\n * @return {Void}\n */\n unbindSwipeStart: function unbindSwipeStart() {\n Binder.off(START_EVENTS[0], Components.Html.wrapper, capture);\n Binder.off(START_EVENTS[1], Components.Html.wrapper, capture);\n },\n\n /**\n * Binds swipe's moving event.\n *\n * @return {Void}\n */\n bindSwipeMove: function bindSwipeMove() {\n var _this2 = this;\n\n Binder.on(MOVE_EVENTS, Components.Html.wrapper, throttle(function (event) {\n _this2.move(event);\n }, Glide.settings.throttle), capture);\n },\n\n /**\n * Unbinds swipe's moving event.\n *\n * @return {Void}\n */\n unbindSwipeMove: function unbindSwipeMove() {\n Binder.off(MOVE_EVENTS, Components.Html.wrapper, capture);\n },\n\n /**\n * Binds swipe's ending event.\n *\n * @return {Void}\n */\n bindSwipeEnd: function bindSwipeEnd() {\n var _this3 = this;\n\n Binder.on(END_EVENTS, Components.Html.wrapper, function (event) {\n _this3.end(event);\n });\n },\n\n /**\n * Unbinds swipe's ending event.\n *\n * @return {Void}\n */\n unbindSwipeEnd: function unbindSwipeEnd() {\n Binder.off(END_EVENTS, Components.Html.wrapper);\n },\n\n /**\n * Normalizes event touches points accorting to different types.\n *\n * @param {Object} event\n */\n touches: function touches(event) {\n if (MOUSE_EVENTS.indexOf(event.type) > -1) {\n return event;\n }\n\n return event.touches[0] || event.changedTouches[0];\n },\n\n /**\n * Gets value of minimum swipe distance settings based on event type.\n *\n * @return {Number}\n */\n threshold: function threshold(event) {\n var settings = Glide.settings;\n\n if (MOUSE_EVENTS.indexOf(event.type) > -1) {\n return settings.dragThreshold;\n }\n\n return settings.swipeThreshold;\n },\n\n /**\n * Enables swipe event.\n *\n * @return {self}\n */\n enable: function enable() {\n disabled = false;\n Components.Transition.enable();\n return this;\n },\n\n /**\n * Disables swipe event.\n *\n * @return {self}\n */\n disable: function disable() {\n disabled = true;\n Components.Transition.disable();\n return this;\n }\n };\n /**\n * Add component class:\n * - after initial building\n */\n\n Events.on('build.after', function () {\n Components.Html.root.classList.add(Glide.settings.classes.swipeable);\n });\n /**\n * Remove swiping bindings:\n * - on destroying, to remove added EventListeners\n */\n\n Events.on('destroy', function () {\n Swipe.unbindSwipeStart();\n Swipe.unbindSwipeMove();\n Swipe.unbindSwipeEnd();\n Binder.destroy();\n });\n return Swipe;\n}\n\nfunction Images(Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Images = {\n /**\n * Binds listener to glide wrapper.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.bind();\n },\n\n /**\n * Binds `dragstart` event on wrapper to prevent dragging images.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('dragstart', Components.Html.wrapper, this.dragstart);\n },\n\n /**\n * Unbinds `dragstart` event on wrapper.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('dragstart', Components.Html.wrapper);\n },\n\n /**\n * Event handler. Prevents dragging.\n *\n * @return {Void}\n */\n dragstart: function dragstart(event) {\n event.preventDefault();\n }\n };\n /**\n * Remove bindings from images:\n * - on destroying, to remove added EventListeners\n */\n\n Events.on('destroy', function () {\n Images.unbind();\n Binder.destroy();\n });\n return Images;\n}\n\nfunction Anchors(Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n /**\n * Holds detaching status of anchors.\n * Prevents detaching of already detached anchors.\n *\n * @private\n * @type {Boolean}\n */\n\n var detached = false;\n /**\n * Holds preventing status of anchors.\n * If `true` redirection after click will be disabled.\n *\n * @private\n * @type {Boolean}\n */\n\n var prevented = false;\n var Anchors = {\n /**\n * Setups a initial state of anchors component.\n *\n * @returns {Void}\n */\n mount: function mount() {\n /**\n * Holds collection of anchors elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n this._a = Components.Html.wrapper.querySelectorAll('a');\n this.bind();\n },\n\n /**\n * Binds events to anchors inside a track.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('click', Components.Html.wrapper, this.click);\n },\n\n /**\n * Unbinds events attached to anchors inside a track.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('click', Components.Html.wrapper);\n },\n\n /**\n * Handler for click event. Prevents clicks when glide is in `prevent` status.\n *\n * @param {Object} event\n * @return {Void}\n */\n click: function click(event) {\n if (prevented) {\n event.stopPropagation();\n event.preventDefault();\n }\n },\n\n /**\n * Detaches anchors click event inside glide.\n *\n * @return {self}\n */\n detach: function detach() {\n prevented = true;\n\n if (!detached) {\n for (var i = 0; i < this.items.length; i++) {\n this.items[i].draggable = false;\n this.items[i].setAttribute('data-href', this.items[i].getAttribute('href'));\n this.items[i].removeAttribute('href');\n }\n\n detached = true;\n }\n\n return this;\n },\n\n /**\n * Attaches anchors click events inside glide.\n *\n * @return {self}\n */\n attach: function attach() {\n prevented = false;\n\n if (detached) {\n for (var i = 0; i < this.items.length; i++) {\n this.items[i].draggable = true;\n this.items[i].setAttribute('href', this.items[i].getAttribute('data-href'));\n }\n\n detached = false;\n }\n\n return this;\n }\n };\n define(Anchors, 'items', {\n /**\n * Gets collection of the arrows HTML elements.\n *\n * @return {HTMLElement[]}\n */\n get: function get() {\n return Anchors._a;\n }\n });\n /**\n * Detach anchors inside slides:\n * - on swiping, so they won't redirect to its `href` attributes\n */\n\n Events.on('swipe.move', function () {\n Anchors.detach();\n });\n /**\n * Attach anchors inside slides:\n * - after swiping and transitions ends, so they can redirect after click again\n */\n\n Events.on('swipe.end', function () {\n Components.Transition.after(function () {\n Anchors.attach();\n });\n });\n /**\n * Unbind anchors inside slides:\n * - on destroying, to bring anchors to its initial state\n */\n\n Events.on('destroy', function () {\n Anchors.attach();\n Anchors.unbind();\n Binder.destroy();\n });\n return Anchors;\n}\n\nvar NAV_SELECTOR = '[data-glide-el=\"controls[nav]\"]';\nvar CONTROLS_SELECTOR = '[data-glide-el^=\"controls\"]';\n\nfunction Controls(Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var capture = supportsPassive$1 ? {\n passive: true\n } : false;\n var Controls = {\n /**\n * Inits arrows. Binds events listeners\n * to the arrows HTML elements.\n *\n * @return {Void}\n */\n mount: function mount() {\n /**\n * Collection of navigation HTML elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n this._n = Components.Html.root.querySelectorAll(NAV_SELECTOR);\n /**\n * Collection of controls HTML elements.\n *\n * @private\n * @type {HTMLCollection}\n */\n\n this._c = Components.Html.root.querySelectorAll(CONTROLS_SELECTOR);\n this.addBindings();\n },\n\n /**\n * Sets active class to current slide.\n *\n * @return {Void}\n */\n setActive: function setActive() {\n for (var i = 0; i < this._n.length; i++) {\n this.addClass(this._n[i].children);\n }\n },\n\n /**\n * Removes active class to current slide.\n *\n * @return {Void}\n */\n removeActive: function removeActive() {\n for (var i = 0; i < this._n.length; i++) {\n this.removeClass(this._n[i].children);\n }\n },\n\n /**\n * Toggles active class on items inside navigation.\n *\n * @param {HTMLElement} controls\n * @return {Void}\n */\n addClass: function addClass(controls) {\n var settings = Glide.settings;\n var item = controls[Glide.index];\n\n if (item) {\n item.classList.add(settings.classes.activeNav);\n siblings(item).forEach(function (sibling) {\n sibling.classList.remove(settings.classes.activeNav);\n });\n }\n },\n\n /**\n * Removes active class from active control.\n *\n * @param {HTMLElement} controls\n * @return {Void}\n */\n removeClass: function removeClass(controls) {\n var item = controls[Glide.index];\n\n if (item) {\n item.classList.remove(Glide.settings.classes.activeNav);\n }\n },\n\n /**\n * Adds handles to the each group of controls.\n *\n * @return {Void}\n */\n addBindings: function addBindings() {\n for (var i = 0; i < this._c.length; i++) {\n this.bind(this._c[i].children);\n }\n },\n\n /**\n * Removes handles from the each group of controls.\n *\n * @return {Void}\n */\n removeBindings: function removeBindings() {\n for (var i = 0; i < this._c.length; i++) {\n this.unbind(this._c[i].children);\n }\n },\n\n /**\n * Binds events to arrows HTML elements.\n *\n * @param {HTMLCollection} elements\n * @return {Void}\n */\n bind: function bind(elements) {\n for (var i = 0; i < elements.length; i++) {\n Binder.on('click', elements[i], this.click);\n Binder.on('touchstart', elements[i], this.click, capture);\n }\n },\n\n /**\n * Unbinds events binded to the arrows HTML elements.\n *\n * @param {HTMLCollection} elements\n * @return {Void}\n */\n unbind: function unbind(elements) {\n for (var i = 0; i < elements.length; i++) {\n Binder.off(['click', 'touchstart'], elements[i]);\n }\n },\n\n /**\n * Handles `click` event on the arrows HTML elements.\n * Moves slider in driection precised in\n * `data-glide-dir` attribute.\n *\n * @param {Object} event\n * @return {Void}\n */\n click: function click(event) {\n event.preventDefault();\n Components.Run.make(Components.Direction.resolve(event.currentTarget.getAttribute('data-glide-dir')));\n }\n };\n define(Controls, 'items', {\n /**\n * Gets collection of the controls HTML elements.\n *\n * @return {HTMLElement[]}\n */\n get: function get() {\n return Controls._c;\n }\n });\n /**\n * Swap active class of current navigation item:\n * - after mounting to set it to initial index\n * - after each move to the new index\n */\n\n Events.on(['mount.after', 'move.after'], function () {\n Controls.setActive();\n });\n /**\n * Remove bindings and HTML Classes:\n * - on destroying, to bring markup to its initial state\n */\n\n Events.on('destroy', function () {\n Controls.removeBindings();\n Controls.removeActive();\n Binder.destroy();\n });\n return Controls;\n}\n\nfunction Keyboard(Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Keyboard = {\n /**\n * Binds keyboard events on component mount.\n *\n * @return {Void}\n */\n mount: function mount() {\n if (Glide.settings.keyboard) {\n this.bind();\n }\n },\n\n /**\n * Adds keyboard press events.\n *\n * @return {Void}\n */\n bind: function bind() {\n Binder.on('keyup', document, this.press);\n },\n\n /**\n * Removes keyboard press events.\n *\n * @return {Void}\n */\n unbind: function unbind() {\n Binder.off('keyup', document);\n },\n\n /**\n * Handles keyboard's arrows press and moving glide foward and backward.\n *\n * @param {Object} event\n * @return {Void}\n */\n press: function press(event) {\n if (event.keyCode === 39) {\n Components.Run.make(Components.Direction.resolve('>'));\n }\n\n if (event.keyCode === 37) {\n Components.Run.make(Components.Direction.resolve('<'));\n }\n }\n };\n /**\n * Remove bindings from keyboard:\n * - on destroying to remove added events\n * - on updating to remove events before remounting\n */\n\n Events.on(['destroy', 'update'], function () {\n Keyboard.unbind();\n });\n /**\n * Remount component\n * - on updating to reflect potential changes in settings\n */\n\n Events.on('update', function () {\n Keyboard.mount();\n });\n /**\n * Destroy binder:\n * - on destroying to remove listeners\n */\n\n Events.on('destroy', function () {\n Binder.destroy();\n });\n return Keyboard;\n}\n\nfunction Autoplay(Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n var Autoplay = {\n /**\n * Initializes autoplaying and events.\n *\n * @return {Void}\n */\n mount: function mount() {\n this.start();\n\n if (Glide.settings.hoverpause) {\n this.bind();\n }\n },\n\n /**\n * Starts autoplaying in configured interval.\n *\n * @param {Boolean|Number} force Run autoplaying with passed interval regardless of `autoplay` settings\n * @return {Void}\n */\n start: function start() {\n var _this = this;\n\n if (Glide.settings.autoplay) {\n if (isUndefined(this._i)) {\n this._i = setInterval(function () {\n _this.stop();\n\n Components.Run.make('>');\n\n _this.start();\n }, this.time);\n }\n }\n },\n\n /**\n * Stops autorunning of the glide.\n *\n * @return {Void}\n */\n stop: function stop() {\n this._i = clearInterval(this._i);\n },\n\n /**\n * Stops autoplaying while mouse is over glide's area.\n *\n * @return {Void}\n */\n bind: function bind() {\n var _this2 = this;\n\n Binder.on('mouseover', Components.Html.root, function () {\n _this2.stop();\n });\n Binder.on('mouseout', Components.Html.root, function () {\n _this2.start();\n });\n },\n\n /**\n * Unbind mouseover events.\n *\n * @returns {Void}\n */\n unbind: function unbind() {\n Binder.off(['mouseover', 'mouseout'], Components.Html.root);\n }\n };\n define(Autoplay, 'time', {\n /**\n * Gets time period value for the autoplay interval. Prioritizes\n * times in `data-glide-autoplay` attrubutes over options.\n *\n * @return {Number}\n */\n get: function get() {\n var autoplay = Components.Html.slides[Glide.index].getAttribute('data-glide-autoplay');\n\n if (autoplay) {\n return toInt(autoplay);\n }\n\n return toInt(Glide.settings.autoplay);\n }\n });\n /**\n * Stop autoplaying and unbind events:\n * - on destroying, to clear defined interval\n * - on updating via API to reset interval that may changed\n */\n\n Events.on(['destroy', 'update'], function () {\n Autoplay.unbind();\n });\n /**\n * Stop autoplaying:\n * - before each run, to restart autoplaying\n * - on pausing via API\n * - on destroying, to clear defined interval\n * - while starting a swipe\n * - on updating via API to reset interval that may changed\n */\n\n Events.on(['run.before', 'pause', 'destroy', 'swipe.start', 'update'], function () {\n Autoplay.stop();\n });\n /**\n * Start autoplaying:\n * - after each run, to restart autoplaying\n * - on playing via API\n * - while ending a swipe\n */\n\n Events.on(['run.after', 'play', 'swipe.end'], function () {\n Autoplay.start();\n });\n /**\n * Remount autoplaying:\n * - on updating via API to reset interval that may changed\n */\n\n Events.on('update', function () {\n Autoplay.mount();\n });\n /**\n * Destroy a binder:\n * - on destroying glide instance to clearup listeners\n */\n\n Events.on('destroy', function () {\n Binder.destroy();\n });\n return Autoplay;\n}\n/**\n * Sorts keys of breakpoint object so they will be ordered from lower to bigger.\n *\n * @param {Object} points\n * @returns {Object}\n */\n\n\nfunction sortBreakpoints(points) {\n if (isObject(points)) {\n return sortKeys(points);\n } else {\n warn('Breakpoints option must be an object');\n }\n\n return {};\n}\n\nfunction Breakpoints(Glide, Components, Events) {\n /**\n * Instance of the binder for DOM Events.\n *\n * @type {EventsBinder}\n */\n var Binder = new EventsBinder();\n /**\n * Holds reference to settings.\n *\n * @type {Object}\n */\n\n var settings = Glide.settings;\n /**\n * Holds reference to breakpoints object in settings. Sorts breakpoints\n * from smaller to larger. It is required in order to proper\n * matching currently active breakpoint settings.\n *\n * @type {Object}\n */\n\n var points = sortBreakpoints(settings.breakpoints);\n /**\n * Cache initial settings before overwritting.\n *\n * @type {Object}\n */\n\n var defaults = _extends({}, settings);\n\n var Breakpoints = {\n /**\n * Matches settings for currectly matching media breakpoint.\n *\n * @param {Object} points\n * @returns {Object}\n */\n match: function match(points) {\n if (typeof window.matchMedia !== 'undefined') {\n for (var point in points) {\n if (points.hasOwnProperty(point)) {\n if (window.matchMedia('(max-width: ' + point + 'px)').matches) {\n return points[point];\n }\n }\n }\n }\n\n return defaults;\n }\n };\n /**\n * Overwrite instance settings with currently matching breakpoint settings.\n * This happens right after component initialization.\n */\n\n _extends(settings, Breakpoints.match(points));\n /**\n * Update glide with settings of matched brekpoint:\n * - window resize to update slider\n */\n\n\n Binder.on('resize', window, throttle(function () {\n Glide.settings = mergeOptions(settings, Breakpoints.match(points));\n }, Glide.settings.throttle));\n /**\n * Resort and update default settings:\n * - on reinit via API, so breakpoint matching will be performed with options\n */\n\n Events.on('update', function () {\n points = sortBreakpoints(points);\n defaults = _extends({}, settings);\n });\n /**\n * Unbind resize listener:\n * - on destroying, to bring markup to its initial state\n */\n\n Events.on('destroy', function () {\n Binder.off('resize', window);\n });\n return Breakpoints;\n}\n\nvar COMPONENTS = {\n // Required\n Html: Html,\n Translate: Translate,\n Transition: Transition,\n Direction: Direction,\n Peek: Peek,\n Sizes: Sizes,\n Gaps: Gaps,\n Move: Move,\n Clones: Clones,\n Resize: Resize,\n Build: Build,\n Run: Run,\n // Optional\n Swipe: Swipe,\n Images: Images,\n Anchors: Anchors,\n Controls: Controls,\n Keyboard: Keyboard,\n Autoplay: Autoplay,\n Breakpoints: Breakpoints\n};\n\nvar Glide$1 = function (_Core) {\n inherits(Glide$$1, _Core);\n\n function Glide$$1() {\n classCallCheck(this, Glide$$1);\n return possibleConstructorReturn(this, (Glide$$1.__proto__ || Object.getPrototypeOf(Glide$$1)).apply(this, arguments));\n }\n\n createClass(Glide$$1, [{\n key: 'mount',\n value: function mount() {\n var extensions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return get(Glide$$1.prototype.__proto__ || Object.getPrototypeOf(Glide$$1.prototype), 'mount', this).call(this, _extends({}, COMPONENTS, extensions));\n }\n }]);\n return Glide$$1;\n}(Glide);\n\nexport default Glide$1;","import styled from 'styled-components';\nimport {\n width,\n height,\n display,\n space,\n color,\n borders,\n boxShadow,\n borderRadius,\n position,\n top,\n left,\n right,\n bottom,\n alignItems,\n justifyContent,\n flexWrap,\n} from 'styled-system';\n\n// Glide wrapper style\nconst GlideWrapper = styled.div`\n ${width}\n ${height}\n ${space}\n`;\n\n// Glide slide wrapper style\nconst GlideSlideWrapper = styled.li`\n ${space}\n ${color}\n ${borders}\n ${boxShadow}\n ${borderRadius}\n`;\n\n// Button wrapper style\nconst ButtonWrapper = styled.div`\n display: inline-block;\n ${display}\n ${space}\n ${color}\n ${borders}\n ${boxShadow}\n ${borderRadius}\n ${position}\n ${top}\n ${left}\n ${right}\n ${bottom}\n`;\n\n// ButtonControlWrapper style\nconst ButtonControlWrapper = styled.div`\n ${display}\n ${space}\n ${alignItems}\n ${justifyContent}\n ${position}\n ${top}\n ${left}\n ${right}\n ${bottom}\n`;\n\n// BulletControlWrapper style\nconst BulletControlWrapper = styled.div`\n ${display}\n ${space}\n ${alignItems}\n ${justifyContent}\n ${flexWrap}\n`;\n\n// BulletButton style\nconst BulletButton = styled.button`\n cursor: pointer;\n width: 10px;\n height: 10px;\n margin: 4px;\n border: 0;\n padding: 0;\n outline: none;\n border-radius: 50%;\n background-color: #D6D6D6;\n\n &:hover,\n &.glide__bullet--active {\n background-color: #869791;\n }\n\n ${display}\n ${space}\n ${color}\n ${borders}\n ${boxShadow}\n ${borderRadius}\n ${width}\n ${height}\n`;\n\n// default button style\nconst DefaultBtn = styled.button`\n cursor: pointer;\n margin: 10px 3px;\n`;\n\nexport {\n GlideSlideWrapper,\n ButtonControlWrapper,\n ButtonWrapper,\n BulletControlWrapper,\n BulletButton,\n DefaultBtn,\n};\nexport default GlideWrapper;\n","import React, { Fragment, useEffect } from \"react\";\nimport PropTypes from \"prop-types\";\nimport Glide from \"@glidejs/glide\";\nimport \"@glidejs/glide/dist/css/glide.core.min.css\";\nimport GlideWrapper, {\n ButtonControlWrapper,\n ButtonWrapper,\n BulletControlWrapper,\n BulletButton,\n DefaultBtn\n} from \"./glide.style\";\n\nconst GlideCarousel = ({\n className,\n children,\n options,\n controls,\n prevButton,\n nextButton,\n prevWrapper,\n nextWrapper,\n bullets,\n numberOfBullets,\n buttonWrapperStyle,\n bulletWrapperStyle,\n bulletButtonStyle,\n carouselSelector\n}) => {\n // Add all classs to an array\n const addAllClasses = [\"glide\"];\n\n // className prop checking\n if (className) {\n addAllClasses.push(className);\n }\n\n // number of bullets loop\n const totalBullets = [];\n for (let i = 0; i < numberOfBullets; i++) {\n totalBullets.push(i);\n }\n\n const allowNavigation = children.props.children.length > 1;\n\n options.keyboard = allowNavigation;\n options.swipeThreshold = allowNavigation && 80;\n options.dragThreshold = allowNavigation && 120;\n\n // Load glide\n useEffect(() => {\n const glide = new Glide(\n carouselSelector ? `#${carouselSelector}` : \"#glide\",\n {\n ...options\n }\n );\n glide.mount();\n });\n\n return (\n \n \n\n {/** if controls prop true then show glide controls nav */}\n {controls && allowNavigation && (\n \n \n {prevButton ? prevButton : Prev }\n \n \"\n aria-label=\"next\">\n {nextButton ? nextButton : Next }\n \n \n )}\n\n {/** if bullets prop true then show glide bullets nav */}\n {bullets && (\n \n \n {totalBullets.map(index => (\n \n ))}\n \n \n )}\n \n );\n};\n\nGlideCarousel.propTypes = {\n /** className of the GlideCarousel. */\n className: PropTypes.string,\n\n /** Children. */\n children: PropTypes.element,\n\n /** You can add your custom glid options using this prop. */\n options: PropTypes.object,\n\n /** Hide || show controls nav. */\n controls: PropTypes.bool,\n\n /** Hide || show bullets nav. */\n bullets: PropTypes.bool,\n\n /** This prop only take your slider / carousel / testimonials data length. */\n numberOfBullets: PropTypes.number,\n\n /** bulletWrapperStyle is a bullet control wrapper style object prop.\n * It's contain display, space, alignItems,\n * justifyContent and flexWrap style-system prop.\n */\n bulletWrapperStyle: PropTypes.object,\n\n /** buttonWrapperStyle is a button control wrapper style object prop.\n * It's contain same as buttonWrapperStyle style-system prop and\n * position, left, right, top and bottom.\n */\n buttonWrapperStyle: PropTypes.object,\n\n /** prevWrapper is a previous button wrapper style object prop.\n * It's contain display, space, bg, borders, boxShadow, borderRadius,\n * position, top, left, right and bottom style-system prop.\n */\n prevWrapper: PropTypes.object,\n\n /** nextWrapper is a next button wrapper style object prop.\n * It's contain same as prevWrapper style-system prop.\n */\n nextWrapper: PropTypes.object,\n\n /** Set previous button for glide carousel. */\n prevButton: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n\n /** Set next button for glide carousel. */\n nextButton: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n\n /** bulletButtonStyle is a bullet button style object prop.\n * It's contain display, width, height, space,\n * bg, borders, boxShadow and borderRadius style-system prop.\n */\n bulletButtonStyle: PropTypes.object\n};\n\n// GlideCarousel default props\nGlideCarousel.defaultProps = {\n controls: true,\n bullets: false\n};\n\nexport default GlideCarousel;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { GlideSlideWrapper } from './glide.style';\n\n// Glide Slide wrapper component\nconst GlideSlide = ({ children }) => {\n return (\n {children} \n );\n};\n\nGlideSlide.propTypes = {\n /** Children. */\n children: PropTypes.element,\n};\n\nexport default GlideSlide;\n","import styled from \"styled-components\";\n\nexport const PortfolioShowcaseWrapper = styled.div`\n @keyframes FadeInUp {\n from {\n opacity: 0;\n transform: translateY(30px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n }\n\n .glide__controls {\n position: absolute;\n bottom: 120px;\n right: 0;\n @media (max-width: 990px) {\n bottom: 23px;\n }\n @media (max-width: 575px) {\n top: -50px;\n right: 50%;\n bottom: auto;\n transform: translateX(50%);\n }\n }\n\n .rc-tabs-bar {\n border: none !important;\n text-align: center;\n margin-bottom: 60px;\n @media (max-width: 990px) {\n margin-bottom: 45px;\n }\n @media (max-width: 575px) {\n margin-bottom: 65px;\n }\n &:focus,\n *:focus {\n outline: none;\n }\n .rc-tabs-nav-scroll {\n .rc-tabs-nav {\n @media (max-width: 575px) {\n > div {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(50%, 1fr));\n .rc-tabs-tab {\n margin: 0;\n }\n }\n }\n // @media (min-width: 576px) {\n // > div {\n // display: grid;\n // grid-template-columns: repeat(auto-fit, minmax(30%, 1fr));\n // .rc-tabs-tab {\n // margin: 0;\n // }\n // }\n // }\n\n .rc-tabs-tab {\n font-size: 16px;\n font-weight: 700;\n font-family: \"Montserrat\", sans-serif;\n font-display: block;\n color: #43414e;\n display: inline-block;\n margin-right: 40px;\n cursor: pointer;\n padding: 10px;\n @media (max-width: 990px) {\n font-size: 15px;\n margin-right: 35px;\n padding-bottom: 20px;\n }\n @media (max-width: 575px) {\n margin-right: 20px;\n font-size: 14px;\n }\n &:last-child {\n margin-right: 0;\n }\n &.rc-tabs-tab-active {\n > span {\n &:before {\n width: 100%;\n }\n }\n }\n @media (min-width: 576px) {\n &:hover {\n > span {\n // color: #007fff;\n &:before {\n width: 100%;\n }\n }\n }\n > span {\n position: relative;\n display: block;\n margin: 0;\n overflow: hidden;\n &:before {\n content: attr(data-text);\n position: absolute;\n top: 0;\n left: 0;\n width: 0;\n color: #007fff;\n overflow: hidden;\n white-space: nowrap;\n transition: 0.5s ease-in-out;\n }\n }\n }\n @media (max-width: 575px) {\n &:hover {\n > span {\n color: #007fff;\n }\n }\n > span {\n position: relative;\n display: block;\n margin: 0;\n transition: 0.5s ease-in-out;\n }\n }\n }\n }\n }\n }\n\n .rc-tabs-content {\n .rc-tabs-tabpane {\n display: none;\n overflow: initial;\n\n &.rc-tabs-tabpane-active {\n display: block;\n animation: 0.7s FadeInUp;\n }\n }\n }\n\n .rc-tabs-ink-bar {\n display: none !important;\n }\n\n .rc-tabs-top {\n border: none;\n }\n`;\n\nexport const PortfolioShowcaseItem = styled.div`\n display: flex;\n align-items: start;\n flex-wrap: wrap;\n // height: 55vh;\n div:nth-child(1) {\n .gatsby-image-wrapper > div {\n padding-bottom: 100% !important;\n }\n }\n @media only screen and (max-width: 667px) {\n div:nth-child(1) {\n .gatsby-image-wrapper > div {\n padding: 0 !important;\n height: 300px;\n }\n }\n div:nth-child(2) {\n text-align: center;\n }\n img {\n object-position: center center !important;\n }\n }\n @media only screen and (min-width: 668px) {\n img {\n object-position: top center !important;\n }\n }\n img {\n max-height: 50vh !important;\n object-fit: contain !important;\n }\n p {\n white-space: pre-line;\n }\n`;\n\nexport const PortfolioLink = styled.div`\n margin-bottom: 36px;\n @media (max-width: 990px) {\n margin-bottom: 25px;\n }\n @media (max-width: 575px) {\n margin-bottom: 15px;\n }\n a {\n font-size: 16px;\n font-weight: 700;\n font-family: \"Montserrat\", sans-serif;\n font-display: block;\n color: #007fff;\n position: relative;\n padding: 0 0 2px 8px;\n @media (max-width: 990px) {\n font-size: 15px;\n }\n @media (max-width: 575px) {\n font-size: 14px;\n }\n &:before,\n &:after {\n content: \"\";\n display: block;\n width: 58px;\n height: 15px;\n position: absolute;\n background: #eaecfe;\n bottom: 0;\n left: 0;\n z-index: -1;\n }\n &:after {\n background: #c2c7fb;\n transform: scaleX(0);\n transform-origin: right center 0;\n transition: transform 0.7s cubic-bezier(0.19, 1, 0.22, 1) 0s;\n }\n &:hover {\n &:after {\n transform: scaleX(1);\n transform-origin: left center 0;\n transition: transform 0.35s cubic-bezier(0.43, 0.49, 0.51, 0.68);\n }\n }\n }\n`;\n\nexport const BuiltWith = styled.div`\n margin-top: 60px;\n @media (max-width: 990px) {\n margin-top: 30px;\n }\n > span {\n display: inline-block;\n font-size: 16px;\n font-weight: 600;\n color: #007fff;\n font-family: \"Montserrat\", sans-serif;\n font-display: block;\n padding: 5px 22px;\n position: relative;\n @media (max-width: 990px) {\n font-size: 14px;\n padding: 5px 10px;\n }\n &:first-child {\n padding-left: 0;\n }\n &:last-child {\n padding-right: 0;\n &:after {\n display: none;\n }\n }\n &:after {\n content: \"|\";\n position: absolute;\n display: block;\n top: 50%;\n right: 0;\n transform: translateY(-50%);\n }\n }\n`;\n\nexport const PortfolioMeta = styled.div`\n flex: 0 0 100%;\n max-width: calc(100% - 200px);\n margin-top: 70px;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n @media (max-width: 990px) {\n margin-top: 50px;\n max-width: calc(100% - 100px);\n }\n @media (max-width: 575px) {\n margin-top: 30px;\n max-width: 100%;\n margin-bottom: 15px;\n }\n`;\n\nexport const MetaItem = styled.span`\n margin-right: 45px;\n font-size: 16px;\n color: #43414e;\n font-family: \"Montserrat\", sans-serif;\n font-display: block;\n font-weight: 400;\n @media (max-width: 990px) {\n font-size: 14px;\n margin-right: 25px;\n }\n @media (max-width: 767px) {\n padding-bottom: 10px;\n }\n &:last-child {\n margin-right: 0;\n }\n\n &.meta_featured {\n font-weight: 500;\n margin-right: 70px;\n @media (max-width: 990px) {\n margin-right: 40px;\n }\n @media (max-width: 575px) {\n width: 100%;\n margin-bottom: 5px;\n }\n > a {\n margin-left: 0.4em;\n }\n }\n > a {\n color: #007fff;\n font-weight: 700;\n }\n > b {\n font-family: \"Montserrat\", sans-serif;\n font-display: block;\n margin-right: 5px;\n }\n`;\n\nexport const Links = styled.ul`\n padding: 10px 0;\n > li {\n margin: 10px 0;\n > a {\n color: #007fff;\n }\n }\n`;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { useStaticQuery, graphql } from \"gatsby\";\nimport Image from \"gatsby-image\";\nimport Tabs, { TabPane } from \"rc-tabs\";\nimport TabContent from \"rc-tabs/lib/TabContent\";\nimport ScrollableInkTabBar from \"rc-tabs/lib/ScrollableInkTabBar\";\nimport Box from \"reusecore/src/elements/Box\";\nimport Text from \"reusecore/src/elements/Text\";\nimport Heading from \"reusecore/src/elements/Heading\";\nimport Fade from \"react-reveal/Fade\";\nimport Container from \"common/src/components/UI/Container\";\nimport GlideCarousel from \"common/src/components/GlideCarousel\";\nimport GlideSlide from \"common/src/components/GlideCarousel/glideSlide\";\nimport {\n PortfolioShowcaseWrapper,\n PortfolioShowcaseItem,\n // PortfolioLink,\n BuiltWith,\n // PortfolioMeta,\n // MetaItem\n Links\n} from \"./portfolioShowcase.style\";\nimport { PrevButton, NextButton } from \"../appload.style\";\n\nconst renderLinks = links => {\n return (\n \n {links.map((link, index) => (\n \n \n {link.text}\n \n \n ))}\n \n );\n};\n\nconst PortfolioShowcase = ({\n sectionWrapper,\n secTitleWrapper,\n secTitle,\n secDescription,\n portfolioImage,\n portfolioDetails,\n titleStyle,\n detailsStyle\n}) => {\n const Data = useStaticQuery(graphql`\n query {\n apploadJson {\n PORTFOLIO_SHOWCASE {\n title\n portfolioItem {\n title\n description\n buildWith {\n content\n }\n links {\n url\n text\n }\n image {\n childImageSharp {\n fluid(\n quality: 100\n # fit: CONTAIN\n maxHeight: 500 # maxWidth: 600\n ) {\n ...GatsbyImageSharpFluid_withWebp\n }\n }\n }\n }\n }\n }\n }\n `);\n\n //Carousel Options\n const carouselOptions = {\n type: \"carousel\",\n perView: 1,\n gap: 0,\n animationDuration: 900\n };\n\n return (\n \n \n \n \n \n \n \n \n\n \n \n }\n renderTabContent={() => }>\n {Data.apploadJson.PORTFOLIO_SHOWCASE.map((tabItem, index) => (\n \n }\n key={index + 1}>\n \n \n \n }\n nextButton={\n \n \n \n }>\n <>\n {tabItem.portfolioItem.map((portfolioItem, index) => (\n \n \n \n \n \n \n {/* \n \n VISIT LIVE SITE\n \n */}\n \n \n {portfolioItem.links &&\n renderLinks(portfolioItem.links)}\n {portfolioItem.buildWith ? (\n \n {portfolioItem.buildWith.map(\n (item, index) => (\n \n {item.content}\n \n )\n )}\n \n ) : (\n \"\"\n )}\n \n {/*portfolioItem.featuredIn ||\n portfolioItem.view ||\n portfolioItem.love ||\n portfolioItem.feedback ? (\n \n {portfolioItem.featuredIn ? (\n \n FEATURED IN\n \n {portfolioItem.featuredIn}\n \n \n ) : (\n \"\"\n )}\n {portfolioItem.view ? (\n \n {portfolioItem.view} View\n \n ) : (\n \"\"\n )}\n {portfolioItem.love ? (\n \n {portfolioItem.love} Love\n \n ) : (\n \"\"\n )}\n {portfolioItem.feedback ? (\n \n {portfolioItem.feedback} Feedback\n \n ) : (\n \"\"\n )}\n \n ) : (\n \"\"\n )*/}\n \n \n ))}\n >\n \n \n ))}\n \n \n \n \n \n );\n};\n\nPortfolioShowcase.propTypes = {\n sectionWrapper: PropTypes.object,\n secTitleWrapper: PropTypes.object,\n secTitle: PropTypes.object,\n secDescription: PropTypes.object,\n portfolioImage: PropTypes.object,\n portfolioDetails: PropTypes.object,\n titleStyle: PropTypes.object,\n detailsStyle: PropTypes.object\n};\n\nPortfolioShowcase.defaultProps = {\n sectionWrapper: {\n pt: [\"60px\", \"80px\", \"100px\", \"110px\", \"110px\"],\n pb: [\"60px\", \"80px\", \"100px\", \"110px\", \"110px\"],\n alignSelf: \"start\",\n display: \"flex\",\n minHeight: \"100vh\"\n },\n secTitleWrapper: {\n width: [\"100%\", \"100%\", \"100%\", \"100%\", \"100%\"],\n mb: [\"50px\", \"65px\"]\n },\n secTitle: {\n fontSize: [\"22px\", \"26px\", \"26px\", \"30px\", \"30px\"],\n fontWeight: \"600\",\n color: \"#302b4e\",\n lineHeight: \"1.34\",\n textAlign: \"center\",\n mb: [\"15px\", \"18px\", \"18px\", \"20px\", \"20px\"]\n },\n secDescription: {\n fontSize: [\"15px\", \"16px\"],\n fontWeight: \"400\",\n color: \"#43414e\",\n lineHeight: \"1.5\",\n mb: \"0\"\n },\n portfolioImage: {\n width: [1, 1, 1 / 2]\n },\n portfolioDetails: {\n width: [1, 1, 1 / 2],\n p: [\"30px 0 0 0\", \"40px 0 0 0\", \"0 0 0 30px\", \"0 50px\", \"0 50px\"]\n },\n titleStyle: {\n fontSize: [\"22px\", \"22px\", \"26px\", \"40px\", \"40px\"],\n fontWeight: \"600\",\n color: \"#302b4e\",\n mb: \"17px\"\n },\n detailsStyle: {\n fontSize: [\"15px\", \"15px\", \"15px\", \"16px\", \"16px\"],\n color: \"#43414e\",\n lineHeight: \"1.5\",\n mb: \"0\"\n \n }\n};\n\nexport default PortfolioShowcase;\n","import React from \"react\";\nconst sliderDes = props => {\n return (\n <>\n {props.data.description}
\n \n
{props.data.name}
\n
{props.data.designation} \n
\n >\n );\n};\n\nexport default sliderDes;\n","import styled from 'styled-components';\n\nconst SectionWrapper = styled.section`\n background-color: #f8f8f8;\n padding: 100px 0 0 0;\n overflow: hidden;\n min-height: 100vh;\n display: flex;\n align-items: center;\n @media only screen and (max-width: 1366px) {\n padding: 60px 0;\n }\n @media only screen and (max-width: 667px) {\n padding: 45px 0;\n }\n`;\n\nexport default SectionWrapper;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { useStaticQuery, graphql } from 'gatsby';\nimport Fade from 'react-reveal/Fade';\nimport Box from 'reusecore/src/elements/Box';\nimport Container from 'common/src/components/UI/Container';\nimport ImageGallery from 'react-image-gallery';\nimport 'react-image-gallery/styles/css/image-gallery.css';\nimport SliderDes from '../sliderDescription';\nimport amtIcon from 'common/src/assets/image/appload/testimonials/amt.png';\nimport newrowIcon from 'common/src/assets/image/appload/testimonials/newrow.png';\nimport qualegoIcon from 'common/src/assets/image/appload/testimonials/qualego.png';\nimport bcfIcon from 'common/src/assets/image/appload/testimonials/bcf.png';\nimport Heading from 'reusecore/src/elements/Heading';\nimport { SectionHeader } from '../appload.style';\nimport SectionWrapper from './testimonial.style';\n\nconst TestimonialSection = ({ sectionWrapper }) => {\n const Data = useStaticQuery(graphql`\n query {\n apploadJson {\n testimonials {\n id\n name\n designation\n description\n }\n }\n }\n `);\n\n const images = [\n {\n thumbnail: `${amtIcon}`,\n thumbnailAlt: 'AmT',\n description: ,\n },\n {\n thumbnail: `${qualegoIcon}`,\n thumbnailAlt: 'QauleGo',\n description: ,\n },\n {\n thumbnail: `${newrowIcon}`,\n thumbnailAlt: 'newrow_',\n description: ,\n },\n {\n thumbnail: `${bcfIcon}`,\n thumbnailAlt: 'BCF',\n description: ,\n },\n ];\n const renderItem = item => {\n return (\n \n {item.description && (\n {item.description} \n )}\n
\n );\n };\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nTestimonialSection.propTypes = {\n sectionWrapper: PropTypes.object,\n title: PropTypes.object,\n};\n\nTestimonialSection.defaultProps = {\n sectionWrapper: {\n as: 'section',\n pt: '0px',\n pb: ['20px', '80px', '0px', '80px', '80px'],\n },\n\n sectionSubTitle: {\n content: 'CLIENT TESTIMONIAL',\n as: 'span',\n display: 'block',\n textAlign: ['center', 'left'],\n fontSize: '14px',\n letterSpacing: '0.11em',\n fontWeight: '700',\n color: '#1a73e8',\n textTransform: 'uppercase',\n mb: '10px',\n },\n};\n\nexport default TestimonialSection;\n","import styled from 'styled-components';\nimport { themeGet } from 'styled-system';\n\nconst FooterArea = styled.footer`\n padding: 96px 0 60px;\n // margin-top: 75px;\n background-color: #0f2c4c;\n @media only screen and (max-width: 1366px) {\n padding-top: 80px;\n // margin-top: 60px;\n }\n @media only screen and (max-width: 667px) {\n padding-top: 80px;\n padding-bottom: 50px;\n // margin-top: 45px;\n }\n .logo {\n img {\n width: 128px;\n height: auto;\n }\n }\n`;\n\nexport const WidgetArea = styled.div`\n display: flex;\n flex-wrap: wrap;\n max-width: 1008px;\n width: 100%;\n margin: 0 auto;\n border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n\n .col {\n width: calc(100% / 3);\n text-align: center;\n padding: 0 21px;\n margin-bottom: 50px;\n @media only screen and (max-width: 991px) {\n padding: 0 15px;\n }\n @media only screen and (max-width: 667px) {\n width: calc(100% / 2);\n padding: 0 20px;\n }\n @media only screen and (max-width: 480px) {\n width: 100%;\n }\n\n a.link {\n transition: all 0.3s ease;\n &:hover {\n * {\n color: rgba(255, 255, 255, 1);\n }\n }\n }\n\n img {\n display: inline-block;\n height: 41px;\n width: auto;\n margin-bottom: 27px;\n @media only screen and (max-width: 1366px) {\n height: 35px;\n }\n @media only screen and (max-width: 1366px) {\n margin-bottom: 20px;\n }\n }\n\n h3 {\n color: ${themeGet('colors.white', '#ffffff')};\n font-size: 18px;\n line-height: 24px;\n font-weight: 500;\n @media only screen and (max-width: 1366px) {\n font-size: 16px;\n line-height: 20px;\n }\n @media only screen and (max-width: 480px) {\n font-size: 18px;\n }\n }\n\n p {\n color: rgba(255, 255, 255, 0.8);\n font-size: 14px;\n line-height: 24px;\n margin-bottom: 0;\n @media only screen and (max-width: 480px) {\n font-size: 15px;\n line-height: 26px;\n }\n }\n }\n`;\n\nexport const MenuArea = styled.div`\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n padding-top: 30px;\n @media only screen and (max-width: 1366px) {\n padding-top: 50px;\n }\n > a {\n margin-right: 0;\n }\n`;\n\nexport const Menu = styled.ul`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-wrap: wrap;\n margin-top: 37px;\n margin-bottom: 15px;\n @media only screen and (max-width: 667px) {\n margin-top: 30px;\n }\n`;\n\nexport const MenuItem = styled.li`\n margin: 0 18px;\n @media only screen and (max-width: 667px) {\n margin: 5px 15px;\n }\n a {\n color: ${themeGet('colors.white', '#ffffff')};\n transition: all 0.3s ease;\n &:hover {\n color: rgba(255, 255, 255, 0.8);\n }\n }\n`;\n\nexport const CopyrightText = styled.p`\n color: rgba(255, 255, 255, 0.8);\n margin-bottom: 0;\n font-size: 14px;\n`;\n\nexport default FooterArea;\n","import React from 'react';\nimport { useStaticQuery, graphql } from 'gatsby';\nimport Box from 'reusecore/src/elements/Box';\nimport Text from 'reusecore/src/elements/Text';\nimport Image from 'reusecore/src/elements/Image';\n// import Logo from \"reusecore/src/elements/UI/Logo\";\nimport Heading from 'reusecore/src/elements/Heading';\nimport Container from 'common/src/components/UI/Container';\nimport FooterArea, {\n WidgetArea,\n MenuArea,\n // Menu,\n // MenuItem,\n CopyrightText,\n} from './footer.style';\n\nconst Footer = () => {\n const data = useStaticQuery(graphql`\n query {\n apploadJson {\n footer {\n widgets {\n id\n icon {\n publicURL\n }\n title\n url\n text\n }\n }\n }\n }\n `);\n const { widgets } = data.apploadJson.footer;\n\n const date = new Date();\n const year = date.getFullYear();\n\n return (\n \n \n \n {widgets &&\n widgets.map(item => (\n \n \n \n \n \n \n
\n \n \n ))}\n \n {/* End of footer widgets area */}\n \n {/* */}\n {/* \n {menu &&\n menu.map(item => (\n \n {item.text} \n \n ))}\n */}\n \n © {year} Appload Ltd, all rights reserved.\n \n \n {/* End of footer menu area */}\n \n \n );\n};\n\nexport default Footer;\n","import React from 'react';\nimport { ThemeProvider } from 'styled-components';\nimport { theme } from 'common/src/theme/appload';\nimport { ResetCSS } from 'common/src/assets/css/style';\nimport Sticky from 'react-stickynode';\nimport Navbar from '../containers/Appload/Navbar';\nimport Banner from '../containers/Appload/Banner';\nimport KeyFeatures from '../containers/Appload/KeyFeatures';\n// import Faq from \"../containers/Appload/Faq\";\nimport Portfolio from '../containers/Appload/PortfolioShowcase';\nimport TestimonialSection from '../containers/Appload/Testimonial';\nimport Footer from '../containers/Appload/Footer';\nimport {\n GlobalStyle,\n AppWrapper,\n ContentWrapper,\n} from '../containers/Appload/appload.style';\nimport { DrawerProvider } from 'common/src/contexts/DrawerContext';\n\nimport SEO from '../components/seo';\n// import Team from '../containers/Appload/Team';\n\nexport default function () {\n return (\n \n <>\n \n \n \n\n \n \n \n \n \n \n \n \n \n \n {/* */}\n \n {/* */}\n \n \n \n >\n \n );\n}\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","module.exports = {\n \"default\": require(\"core-js/library/fn/symbol\"),\n __esModule: true\n};","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');\n\nvar _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames2 = require('classnames');\n\nvar _classnames3 = _interopRequireDefault(_classnames2);\n\nvar _utils = require('./utils');\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n}\n\nvar TabBarRootNode = function (_React$Component) {\n (0, _inherits3['default'])(TabBarRootNode, _React$Component);\n\n function TabBarRootNode() {\n (0, _classCallCheck3['default'])(this, TabBarRootNode);\n return (0, _possibleConstructorReturn3['default'])(this, (TabBarRootNode.__proto__ || Object.getPrototypeOf(TabBarRootNode)).apply(this, arguments));\n }\n\n (0, _createClass3['default'])(TabBarRootNode, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n prefixCls = _props.prefixCls,\n onKeyDown = _props.onKeyDown,\n className = _props.className,\n extraContent = _props.extraContent,\n style = _props.style,\n tabBarPosition = _props.tabBarPosition,\n children = _props.children,\n restProps = (0, _objectWithoutProperties3['default'])(_props, ['prefixCls', 'onKeyDown', 'className', 'extraContent', 'style', 'tabBarPosition', 'children']);\n var cls = (0, _classnames3['default'])(prefixCls + '-bar', (0, _defineProperty3['default'])({}, className, !!className));\n var topOrBottom = tabBarPosition === 'top' || tabBarPosition === 'bottom';\n var tabBarExtraContentStyle = topOrBottom ? {\n float: 'right'\n } : {};\n var extraContentStyle = extraContent && extraContent.props ? extraContent.props.style : {};\n var newChildren = children;\n\n if (extraContent) {\n newChildren = [(0, _react.cloneElement)(extraContent, {\n key: 'extra',\n style: (0, _extends3['default'])({}, tabBarExtraContentStyle, extraContentStyle)\n }), (0, _react.cloneElement)(children, {\n key: 'content'\n })];\n newChildren = topOrBottom ? newChildren : newChildren.reverse();\n }\n\n return _react2['default'].createElement('div', (0, _extends3['default'])({\n role: 'tablist',\n className: cls,\n tabIndex: '0',\n ref: this.props.saveRef('root'),\n onKeyDown: onKeyDown,\n style: style\n }, (0, _utils.getDataAttr)(restProps)), newChildren);\n }\n }]);\n return TabBarRootNode;\n}(_react2['default'].Component);\n\nexports['default'] = TabBarRootNode;\nTabBarRootNode.propTypes = {\n prefixCls: _propTypes2['default'].string,\n className: _propTypes2['default'].string,\n style: _propTypes2['default'].object,\n tabBarPosition: _propTypes2['default'].oneOf(['left', 'right', 'top', 'bottom']),\n children: _propTypes2['default'].node,\n extraContent: _propTypes2['default'].node,\n onKeyDown: _propTypes2['default'].func,\n saveRef: _propTypes2['default'].func\n};\nTabBarRootNode.defaultProps = {\n prefixCls: '',\n className: '',\n style: {},\n tabBarPosition: 'top',\n extraContent: null,\n children: null,\n onKeyDown: function onKeyDown() {},\n saveRef: function saveRef() {}\n};\nmodule.exports = exports['default'];","module.exports = true;\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var _typeof = require(\"@babel/runtime/helpers/typeof\")[\"default\"];\n\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","\"use strict\";\n\nexports.__esModule = true;\n\nvar _defineProperty = require(\"../core-js/object/define-property\");\n\nvar _defineProperty2 = _interopRequireDefault(_defineProperty);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nexports.default = function (obj, key, value) {\n if (key in obj) {\n (0, _defineProperty2.default)(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n/** Used as references for various `Number` constants. */\n\nvar NAN = 0 / 0;\n/** `Object#toString` result references. */\n\nvar symbolTag = '[object Symbol]';\n/** Used to match leading and trailing whitespace. */\n\nvar reTrim = /^\\s+|\\s+$/g;\n/** Used to detect bad signed hexadecimal string values. */\n\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n/** Used to detect binary string values. */\n\nvar reIsBinary = /^0b[01]+$/i;\n/** Used to detect octal string values. */\n\nvar reIsOctal = /^0o[0-7]+$/i;\n/** Built-in method references without a dependency on `root`. */\n\nvar freeParseInt = parseInt;\n/** Detect free variable `global` from Node.js. */\n\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n/** Detect free variable `self`. */\n\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n/** Used as a reference to the global object. */\n\nvar root = freeGlobal || freeSelf || Function('return this')();\n/** Used for built-in method references. */\n\nvar objectProto = Object.prototype;\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar objectToString = objectProto.toString;\n/* Built-in method references for those with the same name as other `lodash` methods. */\n\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n\nvar now = function now() {\n return root.Date.now();\n};\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n\n\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n\n wait = toNumber(wait) || 0;\n\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time; // Start the timer for the trailing edge.\n\n timerId = setTimeout(timerExpired, wait); // Invoke the leading edge.\n\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime; // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n\n return lastCallTime === undefined || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;\n }\n\n function timerExpired() {\n var time = now();\n\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n } // Restart the timer.\n\n\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined; // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n\n if (maxing) {\n // Handle invocations in a tight loop.\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n\n return result;\n }\n\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n\n\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n\n\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n\n\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n\n\nfunction isSymbol(value) {\n return typeof value == 'symbol' || isObjectLike(value) && objectToString.call(value) == symbolTag;\n}\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n\n\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n\n if (isSymbol(value)) {\n return NAN;\n }\n\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? other + '' : other;\n }\n\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;\n}\n\nmodule.exports = throttle;","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","module.exports = {\n \"default\": require(\"core-js/library/fn/object/create\"),\n __esModule: true\n};","var arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactSwipeable = require('react-swipeable');\n\nvar _lodash = require('lodash.throttle');\n\nvar _lodash2 = _interopRequireDefault(_lodash);\n\nvar _lodash3 = require('lodash.debounce');\n\nvar _lodash4 = _interopRequireDefault(_lodash3);\n\nvar _resizeObserverPolyfill = require('resize-observer-polyfill');\n\nvar _resizeObserverPolyfill2 = _interopRequireDefault(_resizeObserverPolyfill);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nvar screenChangeEvents = ['fullscreenchange', 'MSFullscreenChange', 'mozfullscreenchange', 'webkitfullscreenchange'];\n\nvar ImageGallery = function (_React$Component) {\n _inherits(ImageGallery, _React$Component);\n\n function ImageGallery(props) {\n _classCallCheck(this, ImageGallery);\n\n var _this = _possibleConstructorReturn(this, (ImageGallery.__proto__ || Object.getPrototypeOf(ImageGallery)).call(this, props));\n\n _this.slideToIndex = function (index, event) {\n var _this$state = _this.state,\n currentIndex = _this$state.currentIndex,\n isTransitioning = _this$state.isTransitioning;\n\n if (!isTransitioning) {\n if (event) {\n if (_this._intervalId) {\n // user triggered event while ImageGallery is playing, reset interval\n _this.pause(false);\n\n _this.play(false);\n }\n }\n\n var slideCount = _this.props.items.length - 1;\n var nextIndex = index;\n\n if (index < 0) {\n nextIndex = slideCount;\n } else if (index > slideCount) {\n nextIndex = 0;\n }\n\n _this.setState({\n previousIndex: currentIndex,\n currentIndex: nextIndex,\n isTransitioning: nextIndex !== currentIndex,\n offsetPercentage: 0,\n style: {\n transition: 'all ' + _this.props.slideDuration + 'ms ease-out'\n }\n }, _this._onSliding);\n }\n };\n\n _this._onSliding = function () {\n var isTransitioning = _this.state.isTransitioning;\n _this._transitionTimer = window.setTimeout(function () {\n if (isTransitioning) {\n _this.setState({\n isTransitioning: !isTransitioning\n });\n\n if (_this.props.onSlide) {\n _this.props.onSlide(_this.state.currentIndex);\n }\n }\n }, _this.props.slideDuration + 50);\n };\n\n _this._handleScreenChange = function () {\n /*\n handles screen change events that the browser triggers e.g. esc key\n */\n var fullScreenElement = document.fullscreenElement || document.msFullscreenElement || document.mozFullScreenElement || document.webkitFullscreenElement;\n\n if (_this.props.onScreenChange) {\n _this.props.onScreenChange(fullScreenElement);\n }\n\n _this.setState({\n isFullscreen: !!fullScreenElement\n });\n };\n\n _this._toggleFullScreen = function () {\n if (_this.state.isFullscreen) {\n _this.exitFullScreen();\n } else {\n _this.fullScreen();\n }\n };\n\n _this._togglePlay = function () {\n if (_this._intervalId) {\n _this.pause();\n } else {\n _this.play();\n }\n };\n\n _this._initGalleryResizing = function (element) {\n /*\n When image-gallery-slide-wrapper unmounts and mounts when thumbnail bar position is changed\n ref is called twice, once with null and another with the element.\n Make sure element is available before calling observe.\n */\n if (element) {\n _this._imageGallerySlideWrapper = element;\n _this.resizeObserver = new _resizeObserverPolyfill2.default(_this._createResizeObserver);\n\n _this.resizeObserver.observe(element);\n }\n };\n\n _this._createResizeObserver = (0, _lodash4.default)(function (entries) {\n if (!entries) return;\n entries.forEach(function () {\n _this._handleResize();\n });\n }, 300);\n\n _this._handleResize = function () {\n var currentIndex = _this.state.currentIndex;\n\n if (_this._imageGallery) {\n _this.setState({\n galleryWidth: _this._imageGallery.offsetWidth\n });\n }\n\n if (_this._imageGallerySlideWrapper) {\n _this.setState({\n gallerySlideWrapperHeight: _this._imageGallerySlideWrapper.offsetHeight\n });\n }\n\n if (_this._thumbnailsWrapper) {\n if (_this._isThumbnailVertical()) {\n _this.setState({\n thumbnailsWrapperHeight: _this._thumbnailsWrapper.offsetHeight\n });\n } else {\n _this.setState({\n thumbnailsWrapperWidth: _this._thumbnailsWrapper.offsetWidth\n });\n }\n } // Adjust thumbnail container when thumbnail width or height is adjusted\n\n\n _this._setThumbsTranslate(-_this._getThumbsTranslate(currentIndex));\n };\n\n _this._handleKeyDown = function (event) {\n if (_this.props.disableArrowKeys) {\n return;\n }\n\n var LEFT_ARROW = 37;\n var RIGHT_ARROW = 39;\n var ESC_KEY = 27;\n var key = parseInt(event.keyCode || event.which || 0);\n\n switch (key) {\n case LEFT_ARROW:\n if (_this._canSlideLeft() && !_this._intervalId) {\n _this._slideLeft();\n }\n\n break;\n\n case RIGHT_ARROW:\n if (_this._canSlideRight() && !_this._intervalId) {\n _this._slideRight();\n }\n\n break;\n\n case ESC_KEY:\n if (_this.state.isFullscreen && !_this.props.useBrowserFullscreen) {\n _this.exitFullScreen();\n }\n\n }\n };\n\n _this._handleImageError = function (event) {\n if (_this.props.defaultImage && event.target.src.indexOf(_this.props.defaultImage) === -1) {\n event.target.src = _this.props.defaultImage;\n }\n };\n\n _this._handleOnSwiped = function (_ref) {\n var event = _ref.event,\n dir = _ref.dir,\n velocity = _ref.velocity;\n if (_this.props.disableSwipe) return;\n var _this$state2 = _this.state,\n scrollingUpDown = _this$state2.scrollingUpDown,\n scrollingLeftRight = _this$state2.scrollingLeftRight;\n var isRTL = _this.props.isRTL;\n if (_this.props.stopPropagation) event.stopPropagation();\n\n if (scrollingUpDown) {\n // user stopped scrollingUpDown\n _this.setState({\n scrollingUpDown: false\n });\n }\n\n if (scrollingLeftRight) {\n // user stopped scrollingLeftRight\n _this.setState({\n scrollingLeftRight: false\n });\n }\n\n if (!scrollingUpDown) {\n // don't swipe if user is scrolling\n var side = (dir === _reactSwipeable.LEFT ? 1 : -1) * (isRTL ? -1 : 1); // if it is RTL the direction is reversed\n\n var isFlick = velocity > _this.props.flickThreshold;\n\n _this._handleOnSwipedTo(side, isFlick);\n }\n };\n\n _this._handleSwiping = function (_ref2) {\n var event = _ref2.event,\n absX = _ref2.absX,\n dir = _ref2.dir;\n if (_this.props.disableSwipe) return;\n var _this$state3 = _this.state,\n galleryWidth = _this$state3.galleryWidth,\n isTransitioning = _this$state3.isTransitioning,\n scrollingUpDown = _this$state3.scrollingUpDown,\n scrollingLeftRight = _this$state3.scrollingLeftRight;\n var swipingTransitionDuration = _this.props.swipingTransitionDuration;\n\n _this._setScrollDirection(dir);\n\n if (_this.props.stopPropagation) event.stopPropagation();\n if ((_this.props.preventDefaultTouchmoveEvent || scrollingLeftRight) && event.cancelable) event.preventDefault();\n\n if (!isTransitioning && !scrollingUpDown) {\n var side = dir === _reactSwipeable.RIGHT ? 1 : -1;\n var offsetPercentage = absX / galleryWidth * 100;\n\n if (Math.abs(offsetPercentage) >= 100) {\n offsetPercentage = 100;\n }\n\n var swipingTransition = {\n transition: 'transform ' + swipingTransitionDuration + 'ms ease-out'\n };\n\n _this.setState({\n offsetPercentage: side * offsetPercentage,\n style: swipingTransition\n });\n } else {\n // don't move the slide\n _this.setState({\n offsetPercentage: 0\n });\n }\n };\n\n _this._slideLeft = function () {\n _this.props.isRTL ? _this._slideNext() : _this._slidePrevious();\n };\n\n _this._slideRight = function () {\n _this.props.isRTL ? _this._slidePrevious() : _this._slideNext();\n };\n\n _this._slidePrevious = function (event) {\n _this.slideToIndex(_this.state.currentIndex - 1, event);\n };\n\n _this._slideNext = function (event) {\n _this.slideToIndex(_this.state.currentIndex + 1, event);\n };\n\n _this._renderItem = function (item) {\n var onImageError = _this.props.onImageError || _this._handleImageError;\n return _react2.default.createElement('div', {\n className: 'image-gallery-image'\n }, item.imageSet ? _react2.default.createElement('picture', {\n onLoad: _this.props.onImageLoad,\n onError: onImageError\n }, item.imageSet.map(function (source, index) {\n return _react2.default.createElement('source', {\n key: index,\n media: source.media,\n srcSet: source.srcSet,\n type: source.type\n });\n }), _react2.default.createElement('img', {\n alt: item.originalAlt,\n src: item.original\n })) : _react2.default.createElement('img', {\n src: item.original,\n alt: item.originalAlt,\n srcSet: item.srcSet,\n sizes: item.sizes,\n title: item.originalTitle,\n onLoad: _this.props.onImageLoad,\n onError: onImageError\n }), item.description && _react2.default.createElement('span', {\n className: 'image-gallery-description'\n }, item.description));\n };\n\n _this._renderThumbInner = function (item) {\n var onThumbnailError = _this.props.onThumbnailError || _this._handleImageError;\n return _react2.default.createElement('div', {\n className: 'image-gallery-thumbnail-inner'\n }, _react2.default.createElement('img', {\n src: item.thumbnail,\n alt: item.thumbnailAlt,\n title: item.thumbnailTitle,\n onError: onThumbnailError\n }), item.thumbnailLabel && _react2.default.createElement('div', {\n className: 'image-gallery-thumbnail-label'\n }, item.thumbnailLabel));\n };\n\n _this._onThumbnailClick = function (event, index) {\n _this.slideToIndex(index, event);\n\n if (_this.props.onThumbnailClick) {\n _this.props.onThumbnailClick(event, index);\n }\n };\n\n _this._onThumbnailMouseOver = function (event, index) {\n if (_this._thumbnailMouseOverTimer) {\n window.clearTimeout(_this._thumbnailMouseOverTimer);\n _this._thumbnailMouseOverTimer = null;\n }\n\n _this._thumbnailMouseOverTimer = window.setTimeout(function () {\n _this.slideToIndex(index);\n\n _this.pause();\n }, 300);\n };\n\n _this._onThumbnailMouseLeave = function () {\n if (_this._thumbnailMouseOverTimer) {\n window.clearTimeout(_this._thumbnailMouseOverTimer);\n _this._thumbnailMouseOverTimer = null;\n\n if (_this.props.autoPlay) {\n _this.play();\n }\n }\n };\n\n _this.state = {\n currentIndex: props.startIndex,\n thumbsTranslate: 0,\n offsetPercentage: 0,\n galleryWidth: 0,\n thumbnailsWrapperWidth: 0,\n thumbnailsWrapperHeight: 0,\n isFullscreen: false,\n isPlaying: false\n }; // Used to update the throttle if slideDuration changes\n\n _this._unthrottledSlideToIndex = _this.slideToIndex;\n _this.slideToIndex = (0, _lodash2.default)(_this._unthrottledSlideToIndex, props.slideDuration, {\n trailing: false\n });\n\n if (props.lazyLoad) {\n _this._lazyLoaded = [];\n }\n\n return _this;\n }\n\n _createClass(ImageGallery, [{\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps, prevState) {\n var itemsSizeChanged = prevProps.items.length !== this.props.items.length;\n var itemsChanged = prevProps.items !== this.props.items;\n var startIndexUpdated = prevProps.startIndex !== this.props.startIndex;\n\n if (itemsSizeChanged) {\n this._handleResize();\n }\n\n if (prevState.currentIndex !== this.state.currentIndex) {\n this._slideThumbnailBar(prevState.currentIndex);\n } // if slideDuration changes, update slideToIndex throttle\n\n\n if (prevProps.slideDuration !== this.props.slideDuration) {\n this.slideToIndex = (0, _lodash2.default)(this._unthrottledSlideToIndex, this.props.slideDuration, {\n trailing: false\n });\n }\n\n if (this.props.lazyLoad && (!prevProps.lazyLoad || itemsChanged)) {\n this._lazyLoaded = [];\n }\n\n if (startIndexUpdated || itemsChanged) {\n this.setState({\n currentIndex: this.props.startIndex\n });\n }\n }\n }, {\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (this.props.autoPlay) {\n this.play();\n }\n\n window.addEventListener('keydown', this._handleKeyDown);\n\n this._onScreenChangeEvent();\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n window.removeEventListener('keydown', this._handleKeyDown);\n\n this._offScreenChangeEvent();\n\n if (this._intervalId) {\n window.clearInterval(this._intervalId);\n this._intervalId = null;\n }\n\n if (this.resizeObserver && this._imageGallerySlideWrapper) {\n this.resizeObserver.unobserve(this._imageGallerySlideWrapper);\n }\n\n if (this._transitionTimer) {\n window.clearTimeout(this._transitionTimer);\n }\n\n if (this._createResizeObserver) {\n this._createResizeObserver();\n }\n }\n }, {\n key: 'play',\n value: function play() {\n var _this2 = this;\n\n var callback = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n if (!this._intervalId) {\n var _props = this.props,\n slideInterval = _props.slideInterval,\n slideDuration = _props.slideDuration;\n this.setState({\n isPlaying: true\n });\n this._intervalId = window.setInterval(function () {\n if (!_this2.props.infinite && !_this2._canSlideRight()) {\n _this2.pause();\n } else {\n _this2.slideToIndex(_this2.state.currentIndex + 1);\n }\n }, Math.max(slideInterval, slideDuration));\n\n if (this.props.onPlay && callback) {\n this.props.onPlay(this.state.currentIndex);\n }\n }\n }\n }, {\n key: 'pause',\n value: function pause() {\n var callback = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n if (this._intervalId) {\n window.clearInterval(this._intervalId);\n this._intervalId = null;\n this.setState({\n isPlaying: false\n });\n\n if (this.props.onPause && callback) {\n this.props.onPause(this.state.currentIndex);\n }\n }\n }\n }, {\n key: 'setModalFullscreen',\n value: function setModalFullscreen(state) {\n this.setState({\n modalFullscreen: state\n }); // manually call because browser does not support screenchange events\n\n if (this.props.onScreenChange) {\n this.props.onScreenChange(state);\n }\n }\n }, {\n key: 'fullScreen',\n value: function fullScreen() {\n var gallery = this._imageGallery;\n\n if (this.props.useBrowserFullscreen) {\n if (gallery.requestFullscreen) {\n gallery.requestFullscreen();\n } else if (gallery.msRequestFullscreen) {\n gallery.msRequestFullscreen();\n } else if (gallery.mozRequestFullScreen) {\n gallery.mozRequestFullScreen();\n } else if (gallery.webkitRequestFullscreen) {\n gallery.webkitRequestFullscreen();\n } else {\n // fallback to fullscreen modal for unsupported browsers\n this.setModalFullscreen(true);\n }\n } else {\n this.setModalFullscreen(true);\n }\n\n this.setState({\n isFullscreen: true\n });\n }\n }, {\n key: 'exitFullScreen',\n value: function exitFullScreen() {\n if (this.state.isFullscreen) {\n if (this.props.useBrowserFullscreen) {\n if (document.exitFullscreen) {\n document.exitFullscreen();\n } else if (document.webkitExitFullscreen) {\n document.webkitExitFullscreen();\n } else if (document.mozCancelFullScreen) {\n document.mozCancelFullScreen();\n } else if (document.msExitFullscreen) {\n document.msExitFullscreen();\n } else {\n // fallback to fullscreen modal for unsupported browsers\n this.setModalFullscreen(false);\n }\n } else {\n this.setModalFullscreen(false);\n }\n\n this.setState({\n isFullscreen: false\n });\n }\n }\n }, {\n key: 'getCurrentIndex',\n value: function getCurrentIndex() {\n return this.state.currentIndex;\n }\n }, {\n key: '_onScreenChangeEvent',\n value: function _onScreenChangeEvent() {\n var _this3 = this;\n\n screenChangeEvents.map(function (eventName) {\n document.addEventListener(eventName, _this3._handleScreenChange);\n });\n }\n }, {\n key: '_offScreenChangeEvent',\n value: function _offScreenChangeEvent() {\n var _this4 = this;\n\n screenChangeEvents.map(function (eventName) {\n document.removeEventListener(eventName, _this4._handleScreenChange);\n });\n }\n }, {\n key: '_isThumbnailVertical',\n value: function _isThumbnailVertical() {\n var thumbnailPosition = this.props.thumbnailPosition;\n return thumbnailPosition === 'left' || thumbnailPosition === 'right';\n }\n }, {\n key: '_setScrollDirection',\n value: function _setScrollDirection(dir) {\n var _state = this.state,\n scrollingUpDown = _state.scrollingUpDown,\n scrollingLeftRight = _state.scrollingLeftRight;\n\n if (!scrollingUpDown && !scrollingLeftRight) {\n if (dir === _reactSwipeable.LEFT || dir === _reactSwipeable.RIGHT) {\n this.setState({\n scrollingLeftRight: true\n });\n } else {\n this.setState({\n scrollingUpDown: true\n });\n }\n }\n }\n }, {\n key: '_handleOnSwipedTo',\n value: function _handleOnSwipedTo(side, isFlick) {\n var _state2 = this.state,\n currentIndex = _state2.currentIndex,\n isTransitioning = _state2.isTransitioning;\n var slideTo = currentIndex;\n\n if ((this._sufficientSwipeOffset() || isFlick) && !isTransitioning) {\n slideTo += side;\n }\n\n if (side < 0) {\n if (!this._canSlideLeft()) {\n slideTo = currentIndex;\n }\n } else {\n if (!this._canSlideRight()) {\n slideTo = currentIndex;\n }\n }\n\n this._unthrottledSlideToIndex(slideTo);\n }\n }, {\n key: '_sufficientSwipeOffset',\n value: function _sufficientSwipeOffset() {\n return Math.abs(this.state.offsetPercentage) > this.props.swipeThreshold;\n }\n }, {\n key: '_canNavigate',\n value: function _canNavigate() {\n return this.props.items.length >= 2;\n }\n }, {\n key: '_canSlideLeft',\n value: function _canSlideLeft() {\n return this.props.infinite || (this.props.isRTL ? this._canSlideNext() : this._canSlidePrevious());\n }\n }, {\n key: '_canSlideRight',\n value: function _canSlideRight() {\n return this.props.infinite || (this.props.isRTL ? this._canSlidePrevious() : this._canSlideNext());\n }\n }, {\n key: '_canSlidePrevious',\n value: function _canSlidePrevious() {\n return this.state.currentIndex > 0;\n }\n }, {\n key: '_canSlideNext',\n value: function _canSlideNext() {\n return this.state.currentIndex < this.props.items.length - 1;\n }\n }, {\n key: '_slideThumbnailBar',\n value: function _slideThumbnailBar(previousIndex) {\n var _state3 = this.state,\n thumbsTranslate = _state3.thumbsTranslate,\n currentIndex = _state3.currentIndex;\n\n if (this.state.currentIndex === 0) {\n this._setThumbsTranslate(0);\n } else {\n var indexDifference = Math.abs(previousIndex - currentIndex);\n\n var scroll = this._getThumbsTranslate(indexDifference);\n\n if (scroll > 0) {\n if (previousIndex < currentIndex) {\n this._setThumbsTranslate(thumbsTranslate - scroll);\n } else if (previousIndex > currentIndex) {\n this._setThumbsTranslate(thumbsTranslate + scroll);\n }\n }\n }\n }\n }, {\n key: '_setThumbsTranslate',\n value: function _setThumbsTranslate(thumbsTranslate) {\n this.setState({\n thumbsTranslate: thumbsTranslate\n });\n }\n }, {\n key: '_getThumbsTranslate',\n value: function _getThumbsTranslate(indexDifference) {\n if (this.props.disableThumbnailScroll) {\n return 0;\n }\n\n var _state4 = this.state,\n thumbnailsWrapperWidth = _state4.thumbnailsWrapperWidth,\n thumbnailsWrapperHeight = _state4.thumbnailsWrapperHeight;\n var totalScroll = void 0;\n\n if (this._thumbnails) {\n // total scroll required to see the last thumbnail\n if (this._isThumbnailVertical()) {\n if (this._thumbnails.scrollHeight <= thumbnailsWrapperHeight) {\n return 0;\n }\n\n totalScroll = this._thumbnails.scrollHeight - thumbnailsWrapperHeight;\n } else {\n if (this._thumbnails.scrollWidth <= thumbnailsWrapperWidth || thumbnailsWrapperWidth <= 0) {\n return 0;\n }\n\n totalScroll = this._thumbnails.scrollWidth - thumbnailsWrapperWidth;\n }\n\n var totalThumbnails = this._thumbnails.children.length; // scroll-x required per index change\n\n var perIndexScroll = totalScroll / (totalThumbnails - 1);\n return indexDifference * perIndexScroll;\n }\n }\n }, {\n key: '_getAlignmentClassName',\n value: function _getAlignmentClassName(index) {\n /*\n Necessary for lazing loading\n */\n var currentIndex = this.state.currentIndex;\n var alignment = '';\n var leftClassName = 'left';\n var centerClassName = 'center';\n var rightClassName = 'right';\n\n switch (index) {\n case currentIndex - 1:\n alignment = ' ' + leftClassName;\n break;\n\n case currentIndex:\n alignment = ' ' + centerClassName;\n break;\n\n case currentIndex + 1:\n alignment = ' ' + rightClassName;\n break;\n }\n\n if (this.props.items.length >= 3 && this.props.infinite) {\n if (index === 0 && currentIndex === this.props.items.length - 1) {\n // set first slide as right slide if were sliding right from last slide\n alignment = ' ' + rightClassName;\n } else if (index === this.props.items.length - 1 && currentIndex === 0) {\n // set last slide as left slide if were sliding left from first slide\n alignment = ' ' + leftClassName;\n }\n }\n\n return alignment;\n }\n }, {\n key: '_isGoingFromFirstToLast',\n value: function _isGoingFromFirstToLast() {\n var _state5 = this.state,\n currentIndex = _state5.currentIndex,\n previousIndex = _state5.previousIndex;\n var totalSlides = this.props.items.length - 1;\n return previousIndex === 0 && currentIndex === totalSlides;\n }\n }, {\n key: '_isGoingFromLastToFirst',\n value: function _isGoingFromLastToFirst() {\n var _state6 = this.state,\n currentIndex = _state6.currentIndex,\n previousIndex = _state6.previousIndex;\n var totalSlides = this.props.items.length - 1;\n return previousIndex === totalSlides && currentIndex === 0;\n }\n }, {\n key: '_getTranslateXForTwoSlide',\n value: function _getTranslateXForTwoSlide(index) {\n // For taking care of infinite swipe when there are only two slides\n var _state7 = this.state,\n currentIndex = _state7.currentIndex,\n offsetPercentage = _state7.offsetPercentage,\n previousIndex = _state7.previousIndex;\n var baseTranslateX = -100 * currentIndex;\n var translateX = baseTranslateX + index * 100 + offsetPercentage; // keep track of user swiping direction\n\n if (offsetPercentage > 0) {\n this.direction = 'left';\n } else if (offsetPercentage < 0) {\n this.direction = 'right';\n } // when swiping make sure the slides are on the correct side\n\n\n if (currentIndex === 0 && index === 1 && offsetPercentage > 0) {\n translateX = -100 + offsetPercentage;\n } else if (currentIndex === 1 && index === 0 && offsetPercentage < 0) {\n translateX = 100 + offsetPercentage;\n }\n\n if (currentIndex !== previousIndex) {\n // when swiped move the slide to the correct side\n if (previousIndex === 0 && index === 0 && offsetPercentage === 0 && this.direction === 'left') {\n translateX = 100;\n } else if (previousIndex === 1 && index === 1 && offsetPercentage === 0 && this.direction === 'right') {\n translateX = -100;\n }\n } else {\n // keep the slide on the correct slide even when not a swipe\n if (currentIndex === 0 && index === 1 && offsetPercentage === 0 && this.direction === 'left') {\n translateX = -100;\n } else if (currentIndex === 1 && index === 0 && offsetPercentage === 0 && this.direction === 'right') {\n translateX = 100;\n }\n }\n\n return translateX;\n }\n }, {\n key: '_getThumbnailBarHeight',\n value: function _getThumbnailBarHeight() {\n if (this._isThumbnailVertical()) {\n return {\n height: this.state.gallerySlideWrapperHeight\n };\n }\n\n return {};\n }\n }, {\n key: '_shouldPushSlideOnInfiniteMode',\n value: function _shouldPushSlideOnInfiniteMode(index) {\n /*\n Push(show) slide if slide is the current slide, and the next slide\n OR\n The slide is going more than 1 slide left, or right, but not going from\n first to last and not going from last to first\n There is an edge case where if you go to the first or last slide, when they're\n not left, or right of each other they will try to catch up in the background\n so unless were going from first to last or vice versa we don't want the first\n or last slide to show up during our transition\n */\n return !this._slideIsTransitioning(index) || this._ignoreIsTransitioning() && !this._isFirstOrLastSlide(index);\n }\n }, {\n key: '_slideIsTransitioning',\n value: function _slideIsTransitioning(index) {\n /*\n returns true if the gallery is transitioning and the index is not the\n previous or currentIndex\n */\n var _state8 = this.state,\n isTransitioning = _state8.isTransitioning,\n previousIndex = _state8.previousIndex,\n currentIndex = _state8.currentIndex;\n var indexIsNotPreviousOrNextSlide = !(index === previousIndex || index === currentIndex);\n return isTransitioning && indexIsNotPreviousOrNextSlide;\n }\n }, {\n key: '_isFirstOrLastSlide',\n value: function _isFirstOrLastSlide(index) {\n var totalSlides = this.props.items.length - 1;\n var isLastSlide = index === totalSlides;\n var isFirstSlide = index === 0;\n return isLastSlide || isFirstSlide;\n }\n }, {\n key: '_ignoreIsTransitioning',\n value: function _ignoreIsTransitioning() {\n /*\n Ignore isTransitioning because were not going to sibling slides\n e.g. center to left or center to right\n */\n var _state9 = this.state,\n previousIndex = _state9.previousIndex,\n currentIndex = _state9.currentIndex;\n var totalSlides = this.props.items.length - 1; // we want to show the in between slides transition\n\n var slidingMoreThanOneSlideLeftOrRight = Math.abs(previousIndex - currentIndex) > 1;\n var notGoingFromFirstToLast = !(previousIndex === 0 && currentIndex === totalSlides);\n var notGoingFromLastToFirst = !(previousIndex === totalSlides && currentIndex === 0);\n return slidingMoreThanOneSlideLeftOrRight && notGoingFromFirstToLast && notGoingFromLastToFirst;\n }\n }, {\n key: '_getSlideStyle',\n value: function _getSlideStyle(index) {\n var _state10 = this.state,\n currentIndex = _state10.currentIndex,\n offsetPercentage = _state10.offsetPercentage;\n var _props2 = this.props,\n infinite = _props2.infinite,\n items = _props2.items,\n useTranslate3D = _props2.useTranslate3D,\n isRTL = _props2.isRTL;\n var baseTranslateX = -100 * currentIndex;\n var totalSlides = items.length - 1; // calculates where the other slides belong based on currentIndex\n // if it is RTL the base line should be reversed\n\n var translateX = (baseTranslateX + index * 100) * (isRTL ? -1 : 1) + offsetPercentage;\n\n if (infinite && items.length > 2) {\n if (currentIndex === 0 && index === totalSlides) {\n // make the last slide the slide before the first\n // if it is RTL the base line should be reversed\n translateX = -100 * (isRTL ? -1 : 1) + offsetPercentage;\n } else if (currentIndex === totalSlides && index === 0) {\n // make the first slide the slide after the last\n // if it is RTL the base line should be reversed\n translateX = 100 * (isRTL ? -1 : 1) + offsetPercentage;\n }\n } // Special case when there are only 2 items with infinite on\n\n\n if (infinite && items.length === 2) {\n translateX = this._getTranslateXForTwoSlide(index);\n }\n\n var translate = 'translate(' + translateX + '%, 0)';\n\n if (useTranslate3D) {\n translate = 'translate3d(' + translateX + '%, 0, 0)';\n }\n\n return {\n WebkitTransform: translate,\n MozTransform: translate,\n msTransform: translate,\n OTransform: translate,\n transform: translate\n };\n }\n }, {\n key: '_getThumbnailStyle',\n value: function _getThumbnailStyle() {\n var translate = void 0;\n var _props3 = this.props,\n useTranslate3D = _props3.useTranslate3D,\n isRTL = _props3.isRTL;\n var thumbsTranslate = this.state.thumbsTranslate;\n var verticalTranslateValue = isRTL ? thumbsTranslate * -1 : thumbsTranslate;\n\n if (this._isThumbnailVertical()) {\n translate = 'translate(0, ' + thumbsTranslate + 'px)';\n\n if (useTranslate3D) {\n translate = 'translate3d(0, ' + thumbsTranslate + 'px, 0)';\n }\n } else {\n translate = 'translate(' + verticalTranslateValue + 'px, 0)';\n\n if (useTranslate3D) {\n translate = 'translate3d(' + verticalTranslateValue + 'px, 0, 0)';\n }\n }\n\n return {\n WebkitTransform: translate,\n MozTransform: translate,\n msTransform: translate,\n OTransform: translate,\n transform: translate\n };\n }\n }, {\n key: 'render',\n value: function render() {\n var _this5 = this;\n\n var _state11 = this.state,\n currentIndex = _state11.currentIndex,\n isFullscreen = _state11.isFullscreen,\n modalFullscreen = _state11.modalFullscreen,\n isPlaying = _state11.isPlaying;\n var _props4 = this.props,\n infinite = _props4.infinite,\n slideOnThumbnailOver = _props4.slideOnThumbnailOver,\n isRTL = _props4.isRTL,\n lazyLoad = _props4.lazyLoad;\n\n var thumbnailStyle = this._getThumbnailStyle();\n\n var thumbnailPosition = this.props.thumbnailPosition;\n var slideLeft = this._slideLeft;\n var slideRight = this._slideRight;\n var slides = [];\n var thumbnails = [];\n var bullets = [];\n this.props.items.forEach(function (item, index) {\n var alignment = _this5._getAlignmentClassName(index);\n\n var originalClass = item.originalClass ? ' ' + item.originalClass : '';\n var thumbnailClass = item.thumbnailClass ? ' ' + item.thumbnailClass : '';\n var renderItem = item.renderItem || _this5.props.renderItem || _this5._renderItem;\n var renderThumbInner = item.renderThumbInner || _this5.props.renderThumbInner || _this5._renderThumbInner;\n var showItem = !lazyLoad || alignment || _this5._lazyLoaded[index];\n\n if (showItem && lazyLoad && !_this5._lazyLoaded[index]) {\n _this5._lazyLoaded[index] = true;\n }\n\n var slideStyle = _this5._getSlideStyle(index);\n\n var slide = _react2.default.createElement('div', {\n key: index,\n className: 'image-gallery-slide' + alignment + originalClass,\n style: _extends(slideStyle, _this5.state.style),\n onClick: _this5.props.onClick,\n onTouchMove: _this5.props.onTouchMove,\n onTouchEnd: _this5.props.onTouchEnd,\n onTouchStart: _this5.props.onTouchStart,\n onMouseOver: _this5.props.onMouseOver,\n onMouseLeave: _this5.props.onMouseLeave,\n role: _this5.props.onClick && 'button'\n }, showItem ? renderItem(item) : _react2.default.createElement('div', {\n style: {\n height: '100%'\n }\n }));\n\n if (infinite) {\n // don't add some slides while transitioning to avoid background transitions\n if (_this5._shouldPushSlideOnInfiniteMode(index)) {\n slides.push(slide);\n }\n } else {\n slides.push(slide);\n }\n\n if (_this5.props.showThumbnails) {\n thumbnails.push(_react2.default.createElement('a', {\n key: index,\n role: 'button',\n 'aria-pressed': currentIndex === index ? 'true' : 'false',\n 'aria-label': 'Go to Slide ' + (index + 1),\n className: 'image-gallery-thumbnail' + (currentIndex === index ? ' active' : '') + thumbnailClass,\n onMouseLeave: slideOnThumbnailOver ? _this5._onThumbnailMouseLeave : undefined,\n onMouseOver: function onMouseOver(event) {\n return slideOnThumbnailOver ? _this5._onThumbnailMouseOver(event, index) : undefined;\n },\n onClick: function onClick(event) {\n return _this5._onThumbnailClick(event, index);\n }\n }, renderThumbInner(item)));\n }\n\n if (_this5.props.showBullets) {\n var bulletOnClick = function bulletOnClick(event) {\n if (item.bulletOnClick) {\n item.bulletOnClick({\n item: item,\n itemIndex: index,\n currentIndex: currentIndex\n });\n }\n\n return _this5.slideToIndex.call(_this5, index, event);\n };\n\n bullets.push(_react2.default.createElement('button', {\n key: index,\n type: 'button',\n className: ['image-gallery-bullet', currentIndex === index ? 'active' : '', item.bulletClass || ''].join(' '),\n onClick: bulletOnClick,\n 'aria-pressed': currentIndex === index ? 'true' : 'false',\n 'aria-label': 'Go to Slide ' + (index + 1)\n }));\n }\n });\n\n var slideWrapper = _react2.default.createElement('div', {\n ref: this._initGalleryResizing,\n className: 'image-gallery-slide-wrapper ' + thumbnailPosition + ' ' + (isRTL ? 'image-gallery-rtl' : '')\n }, this.props.renderCustomControls && this.props.renderCustomControls(), this.props.showFullscreenButton && this.props.renderFullscreenButton(this._toggleFullScreen, isFullscreen), this.props.showPlayButton && this.props.renderPlayPauseButton(this._togglePlay, isPlaying), this._canNavigate() ? [this.props.showNav && _react2.default.createElement('span', {\n key: 'navigation'\n }, this.props.renderLeftNav(slideLeft, !this._canSlideLeft()), this.props.renderRightNav(slideRight, !this._canSlideRight())), _react2.default.createElement(_reactSwipeable.Swipeable, {\n className: 'image-gallery-swipe',\n key: 'swipeable',\n delta: 0,\n onSwiping: this._handleSwiping,\n onSwiped: this._handleOnSwiped\n }, _react2.default.createElement('div', {\n className: 'image-gallery-slides'\n }, slides))] : _react2.default.createElement('div', {\n className: 'image-gallery-slides'\n }, slides), this.props.showBullets && _react2.default.createElement('div', {\n className: 'image-gallery-bullets'\n }, _react2.default.createElement('div', {\n className: 'image-gallery-bullets-container',\n role: 'navigation',\n 'aria-label': 'Bullet Navigation'\n }, bullets)), this.props.showIndex && _react2.default.createElement('div', {\n className: 'image-gallery-index'\n }, _react2.default.createElement('span', {\n className: 'image-gallery-index-current'\n }, this.state.currentIndex + 1), _react2.default.createElement('span', {\n className: 'image-gallery-index-separator'\n }, this.props.indexSeparator), _react2.default.createElement('span', {\n className: 'image-gallery-index-total'\n }, this.props.items.length)));\n\n var classNames = ['image-gallery', this.props.additionalClass, modalFullscreen ? 'fullscreen-modal' : ''].filter(function (name) {\n return typeof name === 'string';\n }).join(' ');\n return _react2.default.createElement('div', {\n ref: function ref(i) {\n return _this5._imageGallery = i;\n },\n className: classNames,\n 'aria-live': 'polite'\n }, _react2.default.createElement('div', {\n className: 'image-gallery-content' + (isFullscreen ? ' fullscreen' : '')\n }, (thumbnailPosition === 'bottom' || thumbnailPosition === 'right') && slideWrapper, this.props.showThumbnails && _react2.default.createElement('div', {\n className: 'image-gallery-thumbnails-wrapper ' + thumbnailPosition + ' ' + (!this._isThumbnailVertical() && isRTL ? 'thumbnails-wrapper-rtl' : ''),\n style: this._getThumbnailBarHeight()\n }, _react2.default.createElement('div', {\n className: 'image-gallery-thumbnails',\n ref: function ref(i) {\n return _this5._thumbnailsWrapper = i;\n }\n }, _react2.default.createElement('div', {\n ref: function ref(t) {\n return _this5._thumbnails = t;\n },\n className: 'image-gallery-thumbnails-container',\n style: thumbnailStyle,\n 'aria-label': 'Thumbnail Navigation'\n }, thumbnails))), (thumbnailPosition === 'top' || thumbnailPosition === 'left') && slideWrapper));\n }\n }]);\n\n return ImageGallery;\n}(_react2.default.Component);\n\nImageGallery.propTypes = {\n flickThreshold: _propTypes2.default.number,\n items: _propTypes2.default.array.isRequired,\n showNav: _propTypes2.default.bool,\n autoPlay: _propTypes2.default.bool,\n lazyLoad: _propTypes2.default.bool,\n infinite: _propTypes2.default.bool,\n showIndex: _propTypes2.default.bool,\n showBullets: _propTypes2.default.bool,\n showThumbnails: _propTypes2.default.bool,\n showPlayButton: _propTypes2.default.bool,\n showFullscreenButton: _propTypes2.default.bool,\n disableThumbnailScroll: _propTypes2.default.bool,\n disableArrowKeys: _propTypes2.default.bool,\n disableSwipe: _propTypes2.default.bool,\n useBrowserFullscreen: _propTypes2.default.bool,\n preventDefaultTouchmoveEvent: _propTypes2.default.bool,\n defaultImage: _propTypes2.default.string,\n indexSeparator: _propTypes2.default.string,\n thumbnailPosition: _propTypes2.default.string,\n startIndex: _propTypes2.default.number,\n slideDuration: _propTypes2.default.number,\n slideInterval: _propTypes2.default.number,\n slideOnThumbnailOver: _propTypes2.default.bool,\n swipeThreshold: _propTypes2.default.number,\n swipingTransitionDuration: _propTypes2.default.number,\n onSlide: _propTypes2.default.func,\n onScreenChange: _propTypes2.default.func,\n onPause: _propTypes2.default.func,\n onPlay: _propTypes2.default.func,\n onClick: _propTypes2.default.func,\n onImageLoad: _propTypes2.default.func,\n onImageError: _propTypes2.default.func,\n onTouchMove: _propTypes2.default.func,\n onTouchEnd: _propTypes2.default.func,\n onTouchStart: _propTypes2.default.func,\n onMouseOver: _propTypes2.default.func,\n onMouseLeave: _propTypes2.default.func,\n onThumbnailError: _propTypes2.default.func,\n onThumbnailClick: _propTypes2.default.func,\n renderCustomControls: _propTypes2.default.func,\n renderLeftNav: _propTypes2.default.func,\n renderRightNav: _propTypes2.default.func,\n renderPlayPauseButton: _propTypes2.default.func,\n renderFullscreenButton: _propTypes2.default.func,\n renderItem: _propTypes2.default.func,\n stopPropagation: _propTypes2.default.bool,\n additionalClass: _propTypes2.default.string,\n useTranslate3D: _propTypes2.default.bool,\n isRTL: _propTypes2.default.bool\n};\nImageGallery.defaultProps = {\n items: [],\n showNav: true,\n autoPlay: false,\n lazyLoad: false,\n infinite: true,\n showIndex: false,\n showBullets: false,\n showThumbnails: true,\n showPlayButton: true,\n showFullscreenButton: true,\n disableThumbnailScroll: false,\n disableArrowKeys: false,\n disableSwipe: false,\n useTranslate3D: true,\n isRTL: false,\n useBrowserFullscreen: true,\n preventDefaultTouchmoveEvent: false,\n flickThreshold: 0.4,\n stopPropagation: false,\n indexSeparator: ' / ',\n thumbnailPosition: 'bottom',\n startIndex: 0,\n slideDuration: 450,\n swipingTransitionDuration: 0,\n slideInterval: 3000,\n swipeThreshold: 30,\n renderLeftNav: function renderLeftNav(onClick, disabled) {\n return _react2.default.createElement('button', {\n type: 'button',\n className: 'image-gallery-left-nav',\n disabled: disabled,\n onClick: onClick,\n 'aria-label': 'Previous Slide'\n });\n },\n renderRightNav: function renderRightNav(onClick, disabled) {\n return _react2.default.createElement('button', {\n type: 'button',\n className: 'image-gallery-right-nav',\n disabled: disabled,\n onClick: onClick,\n 'aria-label': 'Next Slide'\n });\n },\n renderPlayPauseButton: function renderPlayPauseButton(onClick, isPlaying) {\n return _react2.default.createElement('button', {\n type: 'button',\n className: 'image-gallery-play-button' + (isPlaying ? ' active' : ''),\n onClick: onClick,\n 'aria-label': 'Play or Pause Slideshow'\n });\n },\n renderFullscreenButton: function renderFullscreenButton(onClick, isFullscreen) {\n return _react2.default.createElement('button', {\n type: 'button',\n className: 'image-gallery-fullscreen-button' + (isFullscreen ? ' active' : ''),\n onClick: onClick,\n 'aria-label': 'Open Fullscreen'\n });\n }\n};\nexports.default = ImageGallery;","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","\"use strict\";\n\nexports.__esModule = true;\n\nexports.default = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar throttle = function throttle(fn) {\n var threshold = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 100;\n var last;\n var timer;\n return function () {\n var now = +new Date();\n var timePassed = !!last && now < last + threshold;\n\n if (timePassed) {\n clearTimeout(timer);\n timer = setTimeout(function () {\n last = now;\n fn();\n }, threshold);\n } else {\n last = now;\n fn();\n }\n };\n};\n\nvar _default = throttle;\nexports.default = _default;","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","exports.f = require('./_wks');\n","exports.f = Object.getOwnPropertySymbols;\n","module.exports = {\n \"default\": require(\"core-js/library/fn/object/define-property\"),\n __esModule: true\n};","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAbCAYAAABvCO8sAAAACXBIWXMAAAsTAAALEwEAmpwYAAAGAGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMTktMDEtMTBUMTM6MDM6NDQrMDY6MDAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMTktMDEtMTBUMTM6MDM6NDQrMDY6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDE5LTAxLTEwVDEzOjAzOjQ0KzA2OjAwIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjQ1Mjk3Y2IxLTk2MGEtNDEzNC1iMzNkLTRlYjgwZWJjNjAzNiIgeG1wTU06RG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjdiYjMzYWRkLTY4N2EtNmM0YS04ZmFmLTRlYzhiMThmMzY3NCIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjZlYzUwNGZmLTUzMGQtNDMwMi05ZjJkLTYyMDk3NTQ3OGRkZSIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NmVjNTA0ZmYtNTMwZC00MzAyLTlmMmQtNjIwOTc1NDc4ZGRlIiBzdEV2dDp3aGVuPSIyMDE5LTAxLTEwVDEzOjAzOjQ0KzA2OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoTWFjaW50b3NoKSIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NDUyOTdjYjEtOTYwYS00MTM0LWIzM2QtNGViODBlYmM2MDM2IiBzdEV2dDp3aGVuPSIyMDE5LTAxLTEwVDEzOjAzOjQ0KzA2OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz4IbxF+AAACV0lEQVRIibWWPWgUQRTHf6tnIgaJnhEdsQinkLOJ8btx7cTCQuwEbcRO0mihoIagGLCxEgSxsbCxEcHWytEuGsTicgG/lQXRwfMIISB3FjPLvWz2dm7vkgcLb/8z83579+bNm2D7y99k2AAw7vwHwJ/khCgsZq1fZgXP+EngqPN3AteAei5CwtZ4xg8IfxiYBDasFnAjUE5oI8B1oH81gGNivA40nT8KXMWfjtxA+Xc+Ax6J90PAZc/6XMAgAXwDPAWeCC0ExpU2wUoAS8Am5xvgo/MfA8/FvOPAhZUAHhT+DK38ATwEXoj3U0qbs70C9wt/OjHWBO4Br4R2RmlzulugLIcG8C5lTgO4m/iY80qbE90A9wp9lvYnyz/gDvDevQfARaXNsbxAmb+3WYuBRWAKqIp4l5Q2RzoFBmTnb5lFYXEeuAV8dlIBuKK0Ge0EWAI2O79Gqxx80L/YczZyUh8wobQZ8QFlsU+ztBx8UAPcAH45aT1wU2kz3CnQl7806E8HrTlpALittNmRBkyWw0xeoIP+ACaAeScNAlNKm61JoCyHKj002igsfsLmdNFJQw46KFtMnnJINaXNNmzPLAN7WNrCFHAuFgJgnxj0lgOwDtittImDl2nt8HZWj4ElIL4N1YAPKZO3iMBlYBf+JtwAvgEV7In0Ol6Q7H1rXcCyeIY8wcFulFnxVKOwuCAnpAHHsI22zxO8CXx3gSvAHPA1CouZtVvA1oq8LLW7aC5gd++c+AX1bu6l/dhNk7RIBK4AX7A56ckK2CvEfeCwCxpDahnrurb/7GOVLT6LtEwAAAAASUVORK5CYII=\"","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","module.exports = require('./dist/Sticky');","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.x = void 0;\nvar x = {\n \"viewBox\": \"0 0 24 24\",\n \"children\": [{\n \"name\": \"line\",\n \"attribs\": {\n \"x1\": \"18\",\n \"y1\": \"6\",\n \"x2\": \"6\",\n \"y2\": \"18\"\n },\n \"children\": []\n }, {\n \"name\": \"line\",\n \"attribs\": {\n \"x1\": \"6\",\n \"y1\": \"6\",\n \"x2\": \"18\",\n \"y2\": \"18\"\n },\n \"children\": []\n }],\n \"attribs\": {\n \"fill\": \"none\",\n \"stroke\": \"currentColor\",\n \"stroke-width\": \"2\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\"\n }\n};\nexports.x = x;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _defineProperty2 = _interopRequireDefault(require(\"@babel/runtime/helpers/defineProperty\"));\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(require(\"@babel/runtime/helpers/possibleConstructorReturn\"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(require(\"@babel/runtime/helpers/getPrototypeOf\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _createClass2 = _interopRequireDefault(require(\"@babel/runtime/helpers/createClass\"));\n\nvar _inherits2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inherits\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\n\nvar _throttle = _interopRequireDefault(require(\"./throttle\"));\n\nfunction isEqualArray(a, b) {\n return a.length === b.length && a.every(function (item, index) {\n return item === b[index];\n });\n}\n\nvar Scrollspy = /*#__PURE__*/function (_React$Component) {\n (0, _inherits2.default)(Scrollspy, _React$Component);\n (0, _createClass2.default)(Scrollspy, null, [{\n key: \"propTypes\",\n get: function get() {\n return {\n items: _propTypes.default.arrayOf(_propTypes.default.string).isRequired,\n currentClassName: _propTypes.default.string.isRequired,\n scrolledPastClassName: _propTypes.default.string,\n style: _propTypes.default.object,\n componentTag: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.element]),\n offset: _propTypes.default.number,\n rootEl: _propTypes.default.string,\n onUpdate: _propTypes.default.func\n };\n }\n }, {\n key: \"defaultProps\",\n get: function get() {\n return {\n items: [],\n currentClassName: '',\n style: {},\n componentTag: 'ul',\n offset: 0,\n onUpdate: function onUpdate() {}\n };\n }\n }]);\n\n function Scrollspy(props) {\n var _this;\n\n (0, _classCallCheck2.default)(this, Scrollspy);\n _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(Scrollspy).call(this, props));\n _this.state = {\n targetItems: [],\n inViewState: [],\n isScrolledPast: [] // manually bind as ES6 does not apply this\n // auto binding as React.createClass does\n\n };\n _this._handleSpy = _this._handleSpy.bind((0, _assertThisInitialized2.default)(_this));\n return _this;\n }\n\n (0, _createClass2.default)(Scrollspy, [{\n key: \"_initSpyTarget\",\n value: function _initSpyTarget(items) {\n var targetItems = items.map(function (item) {\n return document.getElementById(item);\n });\n return targetItems;\n } // https://github.com/makotot/react-scrollspy/pull/45\n\n }, {\n key: \"_fillArray\",\n value: function _fillArray(array, val) {\n var newArray = [];\n\n for (var i = 0, max = array.length; i < max; i++) {\n newArray[i] = val;\n }\n\n return newArray;\n }\n }, {\n key: \"_isScrolled\",\n value: function _isScrolled() {\n return this._getScrollDimension().scrollTop > 0;\n }\n }, {\n key: \"_getScrollDimension\",\n value: function _getScrollDimension() {\n var doc = document;\n var rootEl = this.props.rootEl;\n var scrollTop = rootEl ? doc.querySelector(rootEl).scrollTop : doc.documentElement.scrollTop || doc.body.parentNode.scrollTop || doc.body.scrollTop;\n var scrollHeight = rootEl ? doc.querySelector(rootEl).scrollHeight : doc.documentElement.scrollHeight || doc.body.parentNode.scrollHeight || doc.body.scrollHeight;\n return {\n scrollTop: scrollTop,\n scrollHeight: scrollHeight\n };\n }\n }, {\n key: \"_getElemsViewState\",\n value: function _getElemsViewState(targets) {\n var elemsInView = [];\n var elemsOutView = [];\n var viewStatusList = [];\n var targetItems = targets ? targets : this.state.targetItems;\n var hasInViewAlready = false;\n\n for (var i = 0, max = targetItems.length; i < max; i++) {\n var currentContent = targetItems[i];\n var isInView = hasInViewAlready ? false : this._isInView(currentContent);\n\n if (isInView) {\n hasInViewAlready = true;\n elemsInView.push(currentContent);\n } else {\n elemsOutView.push(currentContent);\n }\n\n var isLastItem = i === max - 1;\n\n var isScrolled = this._isScrolled(); // https://github.com/makotot/react-scrollspy/pull/26#issue-167413769\n\n\n var isLastShortItemAtBottom = this._isAtBottom() && this._isInView(currentContent) && !isInView && isLastItem && isScrolled;\n\n if (isLastShortItemAtBottom) {\n elemsOutView.pop();\n elemsOutView.push.apply(elemsOutView, (0, _toConsumableArray2.default)(elemsInView));\n elemsInView = [currentContent];\n viewStatusList = this._fillArray(viewStatusList, false);\n isInView = true;\n }\n\n viewStatusList.push(isInView);\n }\n\n return {\n inView: elemsInView,\n outView: elemsOutView,\n viewStatusList: viewStatusList,\n scrolledPast: this.props.scrolledPastClassName && this._getScrolledPast(viewStatusList)\n };\n }\n }, {\n key: \"_isInView\",\n value: function _isInView(el) {\n if (!el) {\n return false;\n }\n\n var _this$props = this.props,\n rootEl = _this$props.rootEl,\n offset = _this$props.offset;\n var rootRect;\n\n if (rootEl) {\n rootRect = document.querySelector(rootEl).getBoundingClientRect();\n }\n\n var rect = el.getBoundingClientRect();\n var winH = rootEl ? rootRect.height : window.innerHeight;\n\n var _this$_getScrollDimen = this._getScrollDimension(),\n scrollTop = _this$_getScrollDimen.scrollTop;\n\n var scrollBottom = scrollTop + winH;\n var elTop = rootEl ? rect.top + scrollTop - rootRect.top + offset : rect.top + scrollTop + offset;\n var elBottom = elTop + el.offsetHeight;\n return elTop < scrollBottom && elBottom > scrollTop;\n }\n }, {\n key: \"_isAtBottom\",\n value: function _isAtBottom() {\n var rootEl = this.props.rootEl;\n\n var _this$_getScrollDimen2 = this._getScrollDimension(),\n scrollTop = _this$_getScrollDimen2.scrollTop,\n scrollHeight = _this$_getScrollDimen2.scrollHeight;\n\n var winH = rootEl ? document.querySelector(rootEl).getBoundingClientRect().height : window.innerHeight;\n var scrolledToBottom = scrollTop + winH >= scrollHeight;\n return scrolledToBottom;\n }\n }, {\n key: \"_getScrolledPast\",\n value: function _getScrolledPast(viewStatusList) {\n if (!viewStatusList.some(function (item) {\n return item;\n })) {\n return viewStatusList;\n }\n\n var hasFoundInView = false;\n var scrolledPastItems = viewStatusList.map(function (item) {\n if (item && !hasFoundInView) {\n hasFoundInView = true;\n return false;\n }\n\n return !hasFoundInView;\n });\n return scrolledPastItems;\n }\n }, {\n key: \"_spy\",\n value: function _spy(targets) {\n var _this2 = this;\n\n var elemensViewState = this._getElemsViewState(targets);\n\n var currentStatuses = this.state.inViewState;\n this.setState({\n inViewState: elemensViewState.viewStatusList,\n isScrolledPast: elemensViewState.scrolledPast\n }, function () {\n _this2._update(currentStatuses);\n });\n }\n }, {\n key: \"_update\",\n value: function _update(prevStatuses) {\n if (isEqualArray(this.state.inViewState, prevStatuses)) {\n return;\n }\n\n this.props.onUpdate(this.state.targetItems[this.state.inViewState.indexOf(true)]);\n }\n }, {\n key: \"_handleSpy\",\n value: function _handleSpy() {\n (0, _throttle.default)(this._spy(), 100);\n }\n }, {\n key: \"_initFromProps\",\n value: function _initFromProps() {\n var targetItems = this._initSpyTarget(this.props.items);\n\n this.setState({\n targetItems: targetItems\n });\n\n this._spy(targetItems);\n }\n }, {\n key: \"offEvent\",\n value: function offEvent() {\n var el = this.props.rootEl ? document.querySelector(this.props.rootEl) : window;\n el.removeEventListener('scroll', this._handleSpy);\n }\n }, {\n key: \"onEvent\",\n value: function onEvent() {\n var el = this.props.rootEl ? document.querySelector(this.props.rootEl) : window;\n el.addEventListener('scroll', this._handleSpy);\n }\n }, {\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this._initFromProps();\n\n this.onEvent();\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.offEvent();\n }\n }, {\n key: \"UNSAFE_componentWillReceiveProps\",\n value: function UNSAFE_componentWillReceiveProps() {\n this._initFromProps();\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this3 = this;\n\n var Tag = this.props.componentTag;\n var _this$props2 = this.props,\n children = _this$props2.children,\n className = _this$props2.className,\n scrolledPastClassName = _this$props2.scrolledPastClassName,\n style = _this$props2.style;\n var counter = 0;\n\n var items = _react.default.Children.map(children, function (child, idx) {\n var _classNames;\n\n if (!child) {\n return null;\n }\n\n var ChildTag = child.type;\n var isScrolledPast = scrolledPastClassName && _this3.state.isScrolledPast[idx];\n var childClass = (0, _classnames.default)((_classNames = {}, (0, _defineProperty2.default)(_classNames, \"\".concat(child.props.className), child.props.className), (0, _defineProperty2.default)(_classNames, \"\".concat(_this3.props.currentClassName), _this3.state.inViewState[idx]), (0, _defineProperty2.default)(_classNames, \"\".concat(_this3.props.scrolledPastClassName), isScrolledPast), _classNames));\n return _react.default.createElement(ChildTag, (0, _extends2.default)({}, child.props, {\n className: childClass,\n key: counter++\n }), child.props.children);\n });\n\n var itemClass = (0, _classnames.default)((0, _defineProperty2.default)({}, \"\".concat(className), className));\n return _react.default.createElement(Tag, {\n className: itemClass,\n style: style\n }, items);\n }\n }]);\n return Scrollspy;\n}(_react.default.Component);\n\nexports.default = Scrollspy;","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAACXBIWXMAAAsTAAALEwEAmpwYAAAF8WlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMTktMDEtMTBUMTM6MDMrMDY6MDAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMTktMDEtMTBUMTM6MDMrMDY6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDE5LTAxLTEwVDEzOjAzKzA2OjAwIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOjQ0N2I3NmExLWZkZTgtNDI3MC04ODRhLTFhMmYxOTZiYmZhNiIgeG1wTU06RG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmYxMjU1NGU4LTE4YjEtZGQ0Ni1hNThjLWUzYjk0NmEwMTU1YyIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjcwYjk5MjM2LTQyNmEtNDk5ZC1iMTYyLTlmYjQxNDJjOWE0YiIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NzBiOTkyMzYtNDI2YS00OTlkLWIxNjItOWZiNDE0MmM5YTRiIiBzdEV2dDp3aGVuPSIyMDE5LTAxLTEwVDEzOjAzKzA2OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoTWFjaW50b3NoKSIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NDQ3Yjc2YTEtZmRlOC00MjcwLTg4NGEtMWEyZjE5NmJiZmE2IiBzdEV2dDp3aGVuPSIyMDE5LTAxLTEwVDEzOjAzKzA2OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz6djlKbAAABaElEQVQ4jZ3UT0tWQRTH8c8d2gjGQy/gEQIJX4K4KfyzbBe6Eqqdyyjc2DIXgeHS5SNom2gj7VKjiODBVyBtggq38mAgtuhpMefq5XoFr7/NzDlzznfm3jNnimF/ToOmsRDjWPh+4hPeYb+eUNRAE9jAgyZ6RZ+xhMPScauyeB8fcDvsP9jDj7DvYhajsdEBHuJLFTSBnYD8wxusYlA7SQcreB6xO5jEYUKBXgQN8RjLDRDhW46YYeT0UCTMBBXWsdUAqGsLazGfxEzCfDhO8eoakFKrkQPzSS4xuaTHLUADF9dgOqEbxvcWkFJlTjfh7AaAS0o4ivm9G+SPx/g7yReLXL07LSAdlG3xLeFtGCN42QK0EjmwnfAR/XA8w+I1IIt4EfM+dpN8Q5/I5Sywiddx9Lo6sbYZsQM8xbDa/W2aFk5UmrbpGem5aJmr1I+vaHxGxMKUXI1HciW7+Itf+Ir32JV/ybn+A++eUzAelEAkAAAAAElFTkSuQmCC\"","module.exports = __webpack_public_path__ + \"static/newrow-d6130e80529ad1f0de78f9ae61a6cf88.png\";","\"use strict\";\n\nexports.__esModule = true;\n\nvar _setPrototypeOf = require(\"../core-js/object/set-prototype-of\");\n\nvar _setPrototypeOf2 = _interopRequireDefault(_setPrototypeOf);\n\nvar _create = require(\"../core-js/object/create\");\n\nvar _create2 = _interopRequireDefault(_create);\n\nvar _typeof2 = require(\"../helpers/typeof\");\n\nvar _typeof3 = _interopRequireDefault(_typeof2);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nexports.default = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + (typeof superClass === \"undefined\" ? \"undefined\" : (0, _typeof3.default)(superClass)));\n }\n\n subClass.prototype = (0, _create2.default)(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf2.default ? (0, _setPrototypeOf2.default)(subClass, superClass) : subClass.__proto__ = superClass;\n};","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseAssignIn = require('./_baseAssignIn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n copySymbolsIn = require('./_copySymbolsIn'),\n getAllKeys = require('./_getAllKeys'),\n getAllKeysIn = require('./_getAllKeysIn'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isMap = require('./isMap'),\n isObject = require('./isObject'),\n isSet = require('./isSet'),\n keys = require('./keys');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nmodule.exports = baseClone;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames2 = require('classnames');\n\nvar _classnames3 = _interopRequireDefault(_classnames2);\n\nvar _utils = require('./utils');\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n}\n\nvar TabContent = function (_React$Component) {\n (0, _inherits3['default'])(TabContent, _React$Component);\n\n function TabContent() {\n (0, _classCallCheck3['default'])(this, TabContent);\n return (0, _possibleConstructorReturn3['default'])(this, (TabContent.__proto__ || Object.getPrototypeOf(TabContent)).apply(this, arguments));\n }\n\n (0, _createClass3['default'])(TabContent, [{\n key: 'getTabPanes',\n value: function getTabPanes() {\n var props = this.props;\n var activeKey = props.activeKey;\n var children = props.children;\n var newChildren = [];\n\n _react2['default'].Children.forEach(children, function (child) {\n if (!child) {\n return;\n }\n\n var key = child.key;\n var active = activeKey === key;\n newChildren.push(_react2['default'].cloneElement(child, {\n active: active,\n destroyInactiveTabPane: props.destroyInactiveTabPane,\n rootPrefixCls: props.prefixCls\n }));\n });\n\n return newChildren;\n }\n }, {\n key: 'render',\n value: function render() {\n var _classnames;\n\n var props = this.props;\n var prefixCls = props.prefixCls,\n children = props.children,\n activeKey = props.activeKey,\n className = props.className,\n tabBarPosition = props.tabBarPosition,\n animated = props.animated,\n animatedWithMargin = props.animatedWithMargin,\n direction = props.direction;\n var style = props.style;\n var classes = (0, _classnames3['default'])((_classnames = {}, (0, _defineProperty3['default'])(_classnames, prefixCls + '-content', true), (0, _defineProperty3['default'])(_classnames, animated ? prefixCls + '-content-animated' : prefixCls + '-content-no-animated', true), _classnames), className);\n\n if (animated) {\n var activeIndex = (0, _utils.getActiveIndex)(children, activeKey);\n\n if (activeIndex !== -1) {\n var animatedStyle = animatedWithMargin ? (0, _utils.getMarginStyle)(activeIndex, tabBarPosition) : (0, _utils.getTransformPropValue)((0, _utils.getTransformByIndex)(activeIndex, tabBarPosition, direction));\n style = (0, _extends3['default'])({}, style, animatedStyle);\n } else {\n style = (0, _extends3['default'])({}, style, {\n display: 'none'\n });\n }\n }\n\n return _react2['default'].createElement('div', {\n className: classes,\n style: style\n }, this.getTabPanes());\n }\n }]);\n return TabContent;\n}(_react2['default'].Component);\n\nexports['default'] = TabContent;\nTabContent.propTypes = {\n animated: _propTypes2['default'].bool,\n animatedWithMargin: _propTypes2['default'].bool,\n prefixCls: _propTypes2['default'].string,\n children: _propTypes2['default'].node,\n activeKey: _propTypes2['default'].string,\n style: _propTypes2['default'].any,\n tabBarPosition: _propTypes2['default'].string,\n className: _propTypes2['default'].string,\n destroyInactiveTabPane: _propTypes2['default'].bool,\n direction: _propTypes2['default'].string\n};\nTabContent.defaultProps = {\n animated: true\n};\nmodule.exports = exports['default'];","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _gud = require('gud');\n\nvar _gud2 = _interopRequireDefault(_gud);\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823; // Inlined Object.is polyfill.\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n var handlers = [];\n return {\n on: function on(handler) {\n handlers.push(handler);\n },\n off: function off(handler) {\n handlers = handlers.filter(function (h) {\n return h !== handler;\n });\n },\n get: function get() {\n return value;\n },\n set: function set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(function (handler) {\n return handler(value, changedBits);\n });\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n var _Provider$childContex, _Consumer$contextType;\n\n var contextProp = '__create-react-context-' + (0, _gud2.default)() + '__';\n\n var Provider = function (_Component) {\n _inherits(Provider, _Component);\n\n function Provider() {\n var _temp, _this, _ret;\n\n _classCallCheck(this, Provider);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, _Component.call.apply(_Component, [this].concat(args))), _this), _this.emitter = createEventEmitter(_this.props.value), _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n Provider.prototype.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n };\n\n Provider.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n var oldValue = this.props.value;\n var newValue = nextProps.value;\n var changedBits = void 0;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0; // No change\n } else {\n changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n\n if (process.env.NODE_ENV !== 'production') {\n (0, _warning2.default)((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: %s', changedBits);\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n };\n\n Provider.prototype.render = function render() {\n return this.props.children;\n };\n\n return Provider;\n }(_react.Component);\n\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = _propTypes2.default.object.isRequired, _Provider$childContex);\n\n var Consumer = function (_Component2) {\n _inherits(Consumer, _Component2);\n\n function Consumer() {\n var _temp2, _this2, _ret2;\n\n _classCallCheck(this, Consumer);\n\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return _ret2 = (_temp2 = (_this2 = _possibleConstructorReturn(this, _Component2.call.apply(_Component2, [this].concat(args))), _this2), _this2.state = {\n value: _this2.getValue()\n }, _this2.onUpdate = function (newValue, changedBits) {\n var observedBits = _this2.observedBits | 0;\n\n if ((observedBits & changedBits) !== 0) {\n _this2.setState({\n value: _this2.getValue()\n });\n }\n }, _temp2), _possibleConstructorReturn(_this2, _ret2);\n }\n\n Consumer.prototype.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var observedBits = nextProps.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n };\n\n Consumer.prototype.componentDidMount = function componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n\n var observedBits = this.props.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT // Subscribe to all changes by default\n : observedBits;\n };\n\n Consumer.prototype.componentWillUnmount = function componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n };\n\n Consumer.prototype.getValue = function getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n };\n\n Consumer.prototype.render = function render() {\n return onlyChild(this.props.children)(this.state.value);\n };\n\n return Consumer;\n }(_react.Component);\n\n Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = _propTypes2.default.object, _Consumer$contextType);\n return {\n Provider: Provider,\n Consumer: Consumer\n };\n}\n\nexports.default = createReactContext;\nmodule.exports = exports['default'];","var isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAACXBIWXMAAAsTAAALEwEAmpwYAAAGAGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDUgNzkuMTYzNDk5LCAyMDE4LzA4LzEzLTE2OjQwOjIyICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdEV2dD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlRXZlbnQjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoTWFjaW50b3NoKSIgeG1wOkNyZWF0ZURhdGU9IjIwMTktMDEtMTBUMTM6MDI6MjQrMDY6MDAiIHhtcDpNZXRhZGF0YURhdGU9IjIwMTktMDEtMTBUMTM6MDI6MjQrMDY6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDE5LTAxLTEwVDEzOjAyOjI0KzA2OjAwIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOmJiODg1MTE5LTUxNGItNGQ0YS04M2Q4LTNkNWMwMzE4MGFhYyIgeG1wTU06RG9jdW1lbnRJRD0iYWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOjA4ZWQyYjJmLTZlZjktYzg0Yi04NDJlLTJmMzRlNWZlYzY3MSIgeG1wTU06T3JpZ2luYWxEb2N1bWVudElEPSJ4bXAuZGlkOjY3MGFiOTU2LTI1ODktNDNiZi1iMDI5LWUxZjdjZjAzMDRlZCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6NjcwYWI5NTYtMjU4OS00M2JmLWIwMjktZTFmN2NmMDMwNGVkIiBzdEV2dDp3aGVuPSIyMDE5LTAxLTEwVDEzOjAyOjI0KzA2OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoTWFjaW50b3NoKSIvPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6YmI4ODUxMTktNTE0Yi00ZDRhLTgzZDgtM2Q1YzAzMTgwYWFjIiBzdEV2dDp3aGVuPSIyMDE5LTAxLTEwVDEzOjAyOjI0KzA2OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxOSAoTWFjaW50b3NoKSIgc3RFdnQ6Y2hhbmdlZD0iLyIvPiA8L3JkZjpTZXE+IDwveG1wTU06SGlzdG9yeT4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7iscQUAAAC10lEQVRYhb3XW4jUdRQH8M9uq4Y3DImQ9UFIuqBdMCSFHqQiehAEyQdpC0IkrVRCRbogUT74kFoaTUX4oAWB5IMGPXSBgrDAxMva2hIRUoj2kC5rgrnawznLTNvOzv8/jnNg+H/nzPmf8/2f/+9cpqOnd8AoMg67MRHPYFSjVkhXHf396El8Bi/cKAKddfTH0J94Fea3m8BlPJf4JryX17YRgK/wceJ5eL7dBGA9zid+A90tijseCzC+EYGzeCnxVOxoQfBHcAKHUGlEAD7AD4mX4fEmA9+GvfgSd6RuahECV0UlXMnv7+DmEoE78SxOqZb2EHZiRRECcBS7Et+OVwvedx++E1U0LXWH8SDWYaAoAdiM3xNvwF1j2E7G9gy2IHUXsDaD/zhsWIbAoGANE1BBxyh2S9GHF1U77Se4W2Txaq1xGQKwH58lXqT6TmEWDuJTzEzdL3gMy0VL/5+UJQBr8HfibeJ0b8JJLE79ZbyOe/HFWM7qDaOx5Ld0vhW3iqecXPP716KN/1zEWTMZgD24mHg4+Dk8jUeLBm+GQAdWiE42qUZ/EfeIRnOtjMMyBObiW3yI6akbzOsksbiUliIEJor3fQQP1QTeiNn4M3WbRSW0lMBicbo3iTUNDmAO3hTDamMN0V0jHTRLoBv7RF3PSt1pLMnP6RrbPfimhvDS6yHQJbpdH55I3RXxtHPE04+Ua1gtah/e9t+yLExgvhi7b2FK6g7hAZHmQfWlL0kSXfC1MgSmiBH7vVi9iC1olTh0xwv62oJfE68Tk7AQgYrY94az8ZGYdO8bMTgayCXV9b0r/Tassk7VjtYvuthT4nQ3I5+LwwsLsbLRDR09vQPjRLqOqx6k65Fu/CR2yL9ENs/VM+7EP2JxaEVw+AOvJL5FTMy60uwwaiQV1a3nSTzcbgJDYhEdEgPsXfFfoG0EiAxUEt+pTlk2s5CUkZcxQzSxo6MZ/Av4qY3UFBHrKQAAAABJRU5ErkJggg==\"","module.exports = {\n \"default\": require(\"core-js/library/fn/object/set-prototype-of\"),\n __esModule: true\n};","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var core = module.exports = { version: '2.6.10' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var copyObject = require('./_copyObject'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","module.exports = {};\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","'use strict';\n\nexports.__esModule = true;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _implementation = require('./implementation');\n\nvar _implementation2 = _interopRequireDefault(_implementation);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nexports.default = _react2.default.createContext || _implementation2.default;\nmodule.exports = exports['default'];","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nmodule.exports = _createClass;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","module.exports = function () { /* empty */ };\n","!function (e, t) {\n \"object\" == typeof exports && \"object\" == typeof module ? module.exports = t(require(\"react\")) : \"function\" == typeof define && define.amd ? define([\"react\"], t) : \"object\" == typeof exports ? exports.Particles = t(require(\"react\")) : e.Particles = t(e.React);\n}(this, function (e) {\n return function (e) {\n var t = {};\n\n function i(n) {\n if (t[n]) return t[n].exports;\n var r = t[n] = {\n i: n,\n l: !1,\n exports: {}\n };\n return e[n].call(r.exports, r, r.exports, i), r.l = !0, r.exports;\n }\n\n return i.m = e, i.c = t, i.d = function (e, t, n) {\n i.o(e, t) || Object.defineProperty(e, t, {\n enumerable: !0,\n get: n\n });\n }, i.r = function (e) {\n \"undefined\" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {\n value: \"Module\"\n }), Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n }, i.t = function (e, t) {\n if (1 & t && (e = i(e)), 8 & t) return e;\n if (4 & t && \"object\" == typeof e && e && e.__esModule) return e;\n var n = Object.create(null);\n if (i.r(n), Object.defineProperty(n, \"default\", {\n enumerable: !0,\n value: e\n }), 2 & t && \"string\" != typeof e) for (var r in e) {\n i.d(n, r, function (t) {\n return e[t];\n }.bind(null, r));\n }\n return n;\n }, i.n = function (e) {\n var t = e && e.__esModule ? function () {\n return e.default;\n } : function () {\n return e;\n };\n return i.d(t, \"a\", t), t;\n }, i.o = function (e, t) {\n return Object.prototype.hasOwnProperty.call(e, t);\n }, i.p = \"\", i(i.s = 27);\n }([function (e, t, i) {\n var n = i(18),\n r = \"object\" == typeof self && self && self.Object === Object && self,\n a = n || r || Function(\"return this\")();\n e.exports = a;\n }, function (e, t, i) {\n \"use strict\";\n\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), function (e) {\n e.CIRCLE = \"circle\", e.EDGE = \"edge\", e.TRIANGLE = \"triangle\", e.POLYGON = \"polygon\", e.STAR = \"star\", e.IMAGE = \"image\", e.IMAGES = \"images\";\n }(t.ShapeType || (t.ShapeType = {})), function (e) {\n e.TOP = \"top\", e.TOP_RIGHT = \"top-right\", e.RIGHT = \"right\", e.BOTTOM_RIGHT = \"bottom-right\", e.BOTTOM = \"bottom\", e.BOTTOM_LEFT = \"bottom-left\", e.LEFT = \"left\", e.TOP_LEFT = \"top-left\", e.NONE = \"none\";\n }(t.MoveDirection || (t.MoveDirection = {})), function (e) {\n e.BOUNCE = \"bounce\", e.OUT = \"out\";\n }(t.MoveOutMode || (t.MoveOutMode = {})), function (e) {\n e.GRAB = \"grab\", e.PUSH = \"push\", e.REMOVE = \"remove\", e.BUBBLE = \"bubble\", e.REPULSE = \"repulse\";\n }(t.InteractivityMode || (t.InteractivityMode = {})), function (e) {\n e.INLINE = \"inline\", e.INSIDE = \"inside\", e.OUTSIDE = \"outside\";\n }(t.PolygonType || (t.PolygonType = {})), function (e) {\n e.RANDOM_POINT = \"random-point\", e.ONE_PER_POINT = \"one-per-point\", e.RANDOM_LENGTH = \"random-length\", e.EQUIDISTANT = \"equidistant\";\n }(t.PolygonInlineArrangementType || (t.PolygonInlineArrangementType = {})), function (e) {\n e.PATH = \"path\", e.RADIUS = \"radius\";\n }(t.PolygonMoveType || (t.PolygonMoveType = {}));\n }, function (e, t, i) {\n \"use strict\";\n\n function n(e) {\n for (var i in e) {\n t.hasOwnProperty(i) || (t[i] = e[i]);\n }\n }\n\n var r = this && this.__importDefault || function (e) {\n return e && e.__esModule ? e : {\n default: e\n };\n };\n\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n });\n var a = r(i(15));\n t.Interactivity = a.default;\n var o = r(i(29));\n t.Modes = o.default;\n var s = r(i(30));\n t.Particle = s.default;\n var c = r(i(31));\n t.ParticleManager = c.default;\n var l = r(i(32));\n t.ParticlesLibrary = l.default;\n var u = r(i(34));\n t.Vendors = u.default, n(i(35)), n(i(1)), n(i(36)), n(i(4));\n }, function (e, t, i) {\n var n = i(51),\n r = i(57);\n\n e.exports = function (e, t) {\n var i = r(e, t);\n return n(i) ? i : void 0;\n };\n }, function (e, t, i) {\n \"use strict\";\n\n function n(e) {\n return (n = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (e) {\n return typeof e;\n } : function (e) {\n return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e;\n })(e);\n }\n\n function r(e, t) {\n return t.indexOf(e) > -1;\n }\n\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n }), t.hexToRgb = function (e) {\n e = e.replace(/^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i, function (e, t, i, n) {\n return t + t + i + i + n + n;\n });\n var t = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(e);\n return t ? {\n r: parseInt(t[1], 16),\n g: parseInt(t[2], 16),\n b: parseInt(t[3], 16)\n } : null;\n }, t.clamp = function (e, t, i) {\n return Math.min(Math.max(e, t), i);\n }, t.isInArray = r, t.isEqual = function (e, t) {\n return Array.isArray(t) ? r(e, t) : t === e;\n }, t.deepAssign = function (e) {\n for (var i = arguments.length, r = new Array(i > 1 ? i - 1 : 0), a = 1; a < i; a++) {\n r[a - 1] = arguments[a];\n }\n\n for (var o = 0, s = r; o < s.length; o++) {\n var c = s[o];\n\n if (null != c) {\n var l = n(c);\n\n if (\"object\" === l) {\n var u = Array.isArray(c);\n u ? \"object\" === n(e) && e && Array.isArray(e) || (e = []) : \"object\" === n(e) && e && !Array.isArray(e) || (e = {});\n\n var h = function h(i) {\n if (\"__proto__\" === i) return \"continue\";\n var r = c[i],\n a = \"object\" === n(r);\n a && Array.isArray(r) ? e[i] = r.map(function (n) {\n return t.deepAssign(e[i], n);\n }) : e[i] = t.deepAssign(e[i], r);\n };\n\n for (var y in c) {\n h(y);\n }\n } else e = c;\n }\n }\n\n return e;\n }, t.getColor = function (e) {\n var i = {};\n if (\"object\" == n(e)) {\n if (e instanceof Array) {\n var r = e[Math.floor(Math.random() * e.length)];\n i.rgb = t.hexToRgb(r);\n } else {\n var a = e.r,\n o = e.g,\n s = e.b;\n if (void 0 !== a && void 0 !== o && void 0 !== s) i.rgb = {\n r: a,\n g: o,\n b: s\n };else {\n var c = e.h,\n l = e.s,\n u = e.l;\n void 0 !== c && void 0 !== o && void 0 !== s && (i.hsl = {\n h: c,\n s: l,\n l: u\n });\n }\n }\n } else \"random\" == e ? i.rgb = {\n r: Math.floor(255 * Math.random()) + 1,\n g: Math.floor(255 * Math.random()) + 1,\n b: Math.floor(255 * Math.random()) + 1\n } : \"string\" == typeof e && (i.rgb = t.hexToRgb(e));\n return i;\n };\n }, function (e, t, i) {\n var n = i(41),\n r = i(42),\n a = i(43),\n o = i(44),\n s = i(45);\n\n function c(e) {\n var t = -1,\n i = null == e ? 0 : e.length;\n\n for (this.clear(); ++t < i;) {\n var n = e[t];\n this.set(n[0], n[1]);\n }\n }\n\n c.prototype.clear = n, c.prototype.delete = r, c.prototype.get = a, c.prototype.has = o, c.prototype.set = s, e.exports = c;\n }, function (e, t, i) {\n var n = i(16);\n\n e.exports = function (e, t) {\n for (var i = e.length; i--;) {\n if (n(e[i][0], t)) return i;\n }\n\n return -1;\n };\n }, function (e, t, i) {\n var n = i(12),\n r = i(53),\n a = i(54),\n o = \"[object Null]\",\n s = \"[object Undefined]\",\n c = n ? n.toStringTag : void 0;\n\n e.exports = function (e) {\n return null == e ? void 0 === e ? s : o : c && c in Object(e) ? r(e) : a(e);\n };\n }, function (e, t, i) {\n var n = i(3)(Object, \"create\");\n e.exports = n;\n }, function (e, t, i) {\n var n = i(66);\n\n e.exports = function (e, t) {\n var i = e.__data__;\n return n(t) ? i[\"string\" == typeof t ? \"string\" : \"hash\"] : i.map;\n };\n }, function (e, t) {\n e.exports = function (e) {\n return null != e && \"object\" == typeof e;\n };\n }, function (e, t, i) {\n var n = i(3)(i(0), \"Map\");\n e.exports = n;\n }, function (e, t, i) {\n var n = i(0).Symbol;\n e.exports = n;\n }, function (e, t) {\n var i = Array.isArray;\n e.exports = i;\n }, function (t, i) {\n t.exports = e;\n }, function (e, t, i) {\n \"use strict\";\n\n function n(e, t) {\n for (var i = 0; i < t.length; i++) {\n var n = t[i];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(e, n.key, n);\n }\n }\n\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n });\n var r,\n a = i(1);\n !function (e) {\n e.MOUSEMOVE = \"mousemove\", e.MOUSELEAVE = \"mouseleave\";\n }(r = t.MouseInteractivityStatus || (t.MouseInteractivityStatus = {}));\n\n var o = function () {\n function e(t) {\n !function (e, t) {\n if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, e), this.library = t, this.mouseMovePosition = {\n x: 0,\n y: 0\n }, this.mouseClickPosition = {\n x: 0,\n y: 0\n }, this.mouseClickTime = 0, this.onMouseMove = this.onMouseMove.bind(this), this.onMouseLeave = this.onMouseLeave.bind(this), this.onMouseClick = this.onMouseClick.bind(this);\n }\n\n var t, i, o;\n return t = e, (i = [{\n key: \"attachEventHandlers\",\n value: function value() {\n var e = this.library.getParameter(function (e) {\n return e.interactivity;\n });\n \"window\" === e.detect_on ? this.interactionElement = window : this.interactionElement = this.library.canvas.element, (e.events.onhover.enable || e.events.onclick.enable) && (this.interactionElement.addEventListener(\"mousemove\", this.onMouseMove), this.interactionElement.addEventListener(\"mouseleave\", this.onMouseLeave)), e.events.onclick.enable && this.interactionElement.addEventListener(\"click\", this.onMouseClick);\n }\n }, {\n key: \"detachEventHandlers\",\n value: function value() {\n var e = this.library.getParameter(function (e) {\n return e.interactivity;\n });\n this.interactionElement && ((e.events.onhover.enable || e.events.onclick.enable) && (this.interactionElement.removeEventListener(\"mousemove\", this.onMouseMove), this.interactionElement.removeEventListener(\"mouseleave\", this.onMouseLeave)), e.events.onclick.enable && this.interactionElement.removeEventListener(\"click\", this.onMouseClick));\n }\n }, {\n key: \"onMouseMove\",\n value: function value(e) {\n var t = {\n x: 0,\n y: 0\n };\n this.interactionElement === window ? (t.x = e.clientX, t.y = e.clientY) : (t.x = e.offsetX || e.clientX, t.y = e.offsetY || e.clientY), this.mouseMovePosition = t, this.library.retina && (this.mouseMovePosition.x *= this.library.canvas.pxratio, this.mouseMovePosition.y *= this.library.canvas.pxratio), this.mouseStatus = r.MOUSEMOVE;\n }\n }, {\n key: \"onMouseLeave\",\n value: function value() {\n this.mouseMovePosition.x = 0, this.mouseMovePosition.y = 0, this.mouseStatus = r.MOUSELEAVE;\n }\n }, {\n key: \"onMouseClick\",\n value: function value() {\n var e = this,\n t = this.library.getParameter(function (e) {\n return e.interactivity;\n }),\n i = this.library.getParameter(function (e) {\n return e.particles;\n }),\n n = this.library.getParameter(function (e) {\n return e.polygon;\n });\n\n if (this.mouseClickPosition = Object.assign({}, this.mouseMovePosition), n.enable && [a.PolygonType.INSIDE, a.PolygonType.OUTSIDE].indexOf(n.type) > -1) {\n var r = this.library.polygonMask.isPointInsidePolygon(this.mouseClickPosition);\n if (n.type === a.PolygonType.INSIDE && !r) return;\n if (n.type === a.PolygonType.OUTSIDE && r) return;\n }\n\n if (this.mouseClickTime = new Date().getTime(), t.events.onclick.enable) switch (t.events.onclick.mode) {\n case a.InteractivityMode.PUSH:\n i.move.enable ? this.library.modes.pushParticles(t.modes.push.particles_nb, this.mouseClickPosition) : 1 == t.modes.push.particles_nb ? this.library.modes.pushParticles(t.modes.push.particles_nb, this.mouseClickPosition) : t.modes.push.particles_nb > 1 && this.library.modes.pushParticles(t.modes.push.particles_nb);\n break;\n\n case a.InteractivityMode.REMOVE:\n this.library.modes.removeParticles(t.modes.remove.particles_nb);\n break;\n\n case a.InteractivityMode.BUBBLE:\n this.library.modes.bubble_clicking = !0;\n break;\n\n case a.InteractivityMode.REPULSE:\n this.library.modes.repulse_clicking = !0, this.library.modes.repulse_count = 0, this.library.modes.repulse_finish = !1, setTimeout(function () {\n e.library.modes.repulse_clicking = !1;\n }, 1e3 * t.modes.repulse.duration);\n }\n }\n }, {\n key: \"linkParticles\",\n value: function value(e, t) {\n var i = this.library.manager.getDistance(e, t),\n n = this.library.canvas,\n r = this.library.getParameter(function (e) {\n return e.particles.line_linked;\n });\n\n if (i <= r.distance) {\n var a = r.opacity - i / (1 / r.opacity) / r.distance;\n\n if (a > 0) {\n var o = r.color_rgb_line,\n s = o.r,\n c = o.g,\n l = o.b;\n n.ctx.save(), n.ctx.strokeStyle = \"rgba( \".concat(s, \", \").concat(c, \", \").concat(l, \", \").concat(a, \" )\"), n.ctx.lineWidth = r.width, n.ctx.beginPath(), r.shadow.enable && (n.ctx.shadowBlur = r.shadow.blur, n.ctx.shadowColor = r.shadow.color), n.ctx.moveTo(e.x, e.y), n.ctx.lineTo(t.x, t.y), n.ctx.stroke(), n.ctx.closePath(), n.ctx.restore();\n }\n }\n }\n }, {\n key: \"attractParticles\",\n value: function value(e, t) {\n var i = this.library.manager.getDistances(e, t),\n n = i.distance,\n r = i.distanceX,\n a = i.distanceY,\n o = this.library.getParameter(function (e) {\n return e.particles.line_linked;\n }),\n s = this.library.getParameter(function (e) {\n return e.particles.move.attract;\n });\n\n if (n <= o.distance) {\n var c = r / (1e3 * s.rotateX),\n l = a / (1e3 * s.rotateY);\n e.vx -= c, e.vy -= l, t.vx += c, t.vy += l;\n }\n }\n }, {\n key: \"bounceParticles\",\n value: function value(e, t) {\n this.library.manager.getDistance(e, t) <= e.radius + t.radius && (e.vx = -e.vx, e.vy = -e.vy, t.vx = -t.vx, t.vy = -t.vy);\n }\n }]) && n(t.prototype, i), o && n(t, o), e;\n }();\n\n t.default = o;\n }, function (e, t) {\n e.exports = function (e, t) {\n return e === t || e != e && t != t;\n };\n }, function (e, t, i) {\n var n = i(7),\n r = i(19),\n a = \"[object AsyncFunction]\",\n o = \"[object Function]\",\n s = \"[object GeneratorFunction]\",\n c = \"[object Proxy]\";\n\n e.exports = function (e) {\n if (!r(e)) return !1;\n var t = n(e);\n return t == o || t == s || t == a || t == c;\n };\n }, function (e, t, i) {\n (function (t) {\n var i = \"object\" == typeof t && t && t.Object === Object && t;\n e.exports = i;\n }).call(this, i(52));\n }, function (e, t) {\n e.exports = function (e) {\n var t = typeof e;\n return null != e && (\"object\" == t || \"function\" == t);\n };\n }, function (e, t) {\n var i = Function.prototype.toString;\n\n e.exports = function (e) {\n if (null != e) {\n try {\n return i.call(e);\n } catch (e) {}\n\n try {\n return e + \"\";\n } catch (e) {}\n }\n\n return \"\";\n };\n }, function (e, t, i) {\n var n = i(58),\n r = i(65),\n a = i(67),\n o = i(68),\n s = i(69);\n\n function c(e) {\n var t = -1,\n i = null == e ? 0 : e.length;\n\n for (this.clear(); ++t < i;) {\n var n = e[t];\n this.set(n[0], n[1]);\n }\n }\n\n c.prototype.clear = n, c.prototype.delete = r, c.prototype.get = a, c.prototype.has = o, c.prototype.set = s, e.exports = c;\n }, function (e, t, i) {\n var n = i(70),\n r = i(73),\n a = i(74),\n o = 1,\n s = 2;\n\n e.exports = function (e, t, i, c, l, u) {\n var h = i & o,\n y = e.length,\n p = t.length;\n if (y != p && !(h && p > y)) return !1;\n var v = u.get(e);\n if (v && u.get(t)) return v == t;\n var f = -1,\n d = !0,\n b = i & s ? new n() : void 0;\n\n for (u.set(e, t), u.set(t, e); ++f < y;) {\n var g = e[f],\n m = t[f];\n if (c) var _ = h ? c(m, g, f, t, e, u) : c(g, m, f, e, t, u);\n\n if (void 0 !== _) {\n if (_) continue;\n d = !1;\n break;\n }\n\n if (b) {\n if (!r(t, function (e, t) {\n if (!a(b, t) && (g === e || l(g, e, i, c, u))) return b.push(t);\n })) {\n d = !1;\n break;\n }\n } else if (g !== m && !l(g, m, i, c, u)) {\n d = !1;\n break;\n }\n }\n\n return u.delete(e), u.delete(t), d;\n };\n }, function (e, t, i) {\n (function (e) {\n var n = i(0),\n r = i(91),\n a = t && !t.nodeType && t,\n o = a && \"object\" == typeof e && e && !e.nodeType && e,\n s = o && o.exports === a ? n.Buffer : void 0,\n c = (s ? s.isBuffer : void 0) || r;\n e.exports = c;\n }).call(this, i(24)(e));\n }, function (e, t) {\n e.exports = function (e) {\n return e.webpackPolyfill || (e.deprecate = function () {}, e.paths = [], e.children || (e.children = []), Object.defineProperty(e, \"loaded\", {\n enumerable: !0,\n get: function get() {\n return e.l;\n }\n }), Object.defineProperty(e, \"id\", {\n enumerable: !0,\n get: function get() {\n return e.i;\n }\n }), e.webpackPolyfill = 1), e;\n };\n }, function (e, t, i) {\n var n = i(93),\n r = i(94),\n a = i(95),\n o = a && a.isTypedArray,\n s = o ? r(o) : n;\n e.exports = s;\n }, function (e, t) {\n var i = 9007199254740991;\n\n e.exports = function (e) {\n return \"number\" == typeof e && e > -1 && e % 1 == 0 && e <= i;\n };\n }, function (e, t, i) {\n \"use strict\";\n\n var n = this && this.__importDefault || function (e) {\n return e && e.__esModule ? e : {\n default: e\n };\n };\n\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n });\n var r = n(i(28));\n t.Particles = r.default, t.default = r.default;\n }, function (e, t, i) {\n \"use strict\";\n\n function n(e) {\n return (n = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (e) {\n return typeof e;\n } : function (e) {\n return e && \"function\" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? \"symbol\" : typeof e;\n })(e);\n }\n\n function r(e, t) {\n for (var i = 0; i < t.length; i++) {\n var n = t[i];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(e, n.key, n);\n }\n }\n\n function a(e) {\n if (void 0 === e) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n return e;\n }\n\n function o(e, t, i) {\n return (o = \"undefined\" != typeof Reflect && Reflect.get ? Reflect.get : function (e, t, i) {\n var n = function (e, t) {\n for (; !Object.prototype.hasOwnProperty.call(e, t) && null !== (e = s(e));) {\n ;\n }\n\n return e;\n }(e, t);\n\n if (n) {\n var r = Object.getOwnPropertyDescriptor(n, t);\n return r.get ? r.get.call(i) : r.value;\n }\n })(e, t, i || e);\n }\n\n function s(e) {\n return (s = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {\n return e.__proto__ || Object.getPrototypeOf(e);\n })(e);\n }\n\n function c(e, t) {\n return (c = Object.setPrototypeOf || function (e, t) {\n return e.__proto__ = t, e;\n })(e, t);\n }\n\n var l = this && this.__importStar || function (e) {\n if (e && e.__esModule) return e;\n var t = {};\n if (null != e) for (var i in e) {\n Object.hasOwnProperty.call(e, i) && (t[i] = e[i]);\n }\n return t.default = e, t;\n },\n u = this && this.__importDefault || function (e) {\n return e && e.__esModule ? e : {\n default: e\n };\n };\n\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n });\n\n var h = l(i(14)),\n y = i(14),\n p = i(2),\n v = u(i(37)),\n f = function (e) {\n function t(e) {\n var i;\n return function (e, t) {\n if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, t), (i = function (e, t) {\n return !t || \"object\" !== n(t) && \"function\" != typeof t ? a(e) : t;\n }(this, s(t).call(this, e))).state = {\n canvas: void 0,\n library: void 0\n }, i.loadCanvas = i.loadCanvas.bind(a(i)), i;\n }\n\n var i, l, u;\n return function (e, t) {\n if (\"function\" != typeof t && null !== t) throw new TypeError(\"Super expression must either be null or a function\");\n e.prototype = Object.create(t && t.prototype, {\n constructor: {\n value: e,\n writable: !0,\n configurable: !0\n }\n }), t && c(e, t);\n }(t, y.Component), i = t, (l = [{\n key: \"buildParticlesLibrary\",\n value: function value(e) {\n try {\n if (void 0 === window) return null;\n } catch (e) {\n return null;\n }\n\n return new p.ParticlesLibrary(e);\n }\n }, {\n key: \"refresh\",\n value: function value(e) {\n var t = this,\n i = this.state.canvas;\n i && (this.destroy(), this.setState({\n library: this.buildParticlesLibrary(e.params)\n }, function () {\n t.loadCanvas(i);\n }));\n }\n }, {\n key: \"destroy\",\n value: function value() {\n this.state.library && this.state.library.destroy();\n }\n }, {\n key: \"loadCanvas\",\n value: function value(e) {\n var t = this;\n e && this.setState({\n canvas: e\n }, function () {\n var i = t.state.library;\n i && (i.loadCanvas(e), i.start());\n });\n }\n }, {\n key: \"shouldComponentUpdate\",\n value: function value(e) {\n return !v.default(e, this.props);\n }\n }, {\n key: \"componentDidUpdate\",\n value: function value() {\n this.refresh(this.props);\n }\n }, {\n key: \"forceUpdate\",\n value: function value() {\n this.refresh(this.props), o(s(t.prototype), \"forceUpdate\", this).call(this);\n }\n }, {\n key: \"componentDidMount\",\n value: function value() {\n this.setState({\n library: this.buildParticlesLibrary(this.props.params)\n });\n }\n }, {\n key: \"componentWillUnmount\",\n value: function value() {\n this.destroy(), this.setState({\n library: void 0\n });\n }\n }, {\n key: \"render\",\n value: function value() {\n var e = this.props,\n t = e.width,\n i = e.height,\n n = e.className,\n r = e.canvasClassName;\n return h.createElement(\"div\", {\n className: n\n }, h.createElement(\"canvas\", {\n ref: this.loadCanvas,\n className: r,\n style: Object.assign({}, this.props.style, {\n width: t,\n height: i\n })\n }));\n }\n }]) && r(i.prototype, l), u && r(i, u), t;\n }();\n\n f.defaultProps = {\n width: \"100%\",\n height: \"100%\",\n params: {},\n style: {}\n }, t.default = f;\n }, function (e, t, i) {\n \"use strict\";\n\n function n(e, t) {\n for (var i = 0; i < t.length; i++) {\n var n = t[i];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(e, n.key, n);\n }\n }\n\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n });\n\n var r = i(2),\n a = i(1),\n o = i(15),\n s = function () {\n function e(t) {\n !function (e, t) {\n if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, e), this.library = t, this.bubble_clicking = !1, this.bubble_duration_end = !1, this.pushing = !1, this.repulse_clicking = !1, this.repulse_count = 0, this.repulse_finish = !1;\n }\n\n var t, i, s;\n return t = e, (i = [{\n key: \"pushParticles\",\n value: function value(e, t) {\n var i = this.library.manager,\n n = this.library.getParameter(function (e) {\n return e.particles;\n });\n this.pushing = !0;\n var a = e;\n n.number.max > 0 && (a = n.array.length + e > n.number.max ? n.number.max - n.array.length : e);\n\n for (var o = 0; o < a; o++) {\n n.array.push(new r.Particle(this.library, {\n position: t\n })), o === e - 1 && (n.move.enable || i.particlesDraw(), this.pushing = !1);\n }\n }\n }, {\n key: \"removeParticles\",\n value: function value(e) {\n var t = this.library.manager,\n i = this.library.getParameter(function (e) {\n return e.particles;\n });\n i.array.splice(0, e), i.move.enable || t.particlesDraw();\n }\n }, {\n key: \"bubbleParticle\",\n value: function value(e) {\n var t = this,\n i = this.library.getParameter(function (e) {\n return e.interactivity;\n }),\n n = this.library.getParameter(function (e) {\n return e.particles;\n });\n\n if (i.events.onhover.enable && r.isInArray(a.InteractivityMode.BUBBLE, i.events.onhover.mode)) {\n var s = this.library.manager.getDistance(e, this.library.interactivity.mouseMovePosition),\n c = i.modes.bubble.distance,\n l = 1 - s / c;\n\n if (s <= c) {\n if (l >= 0 && this.library.interactivity.mouseStatus === o.MouseInteractivityStatus.MOUSEMOVE) {\n var u = i.modes.bubble.size,\n h = n.size.value;\n if (u != h) if (u > h) {\n var y = e.radius + u * l;\n y >= 0 && (e.radius_bubble = y);\n } else {\n var p = e.radius - u,\n v = e.radius - p * l;\n e.radius_bubble = v > 0 ? v : 0;\n }\n if (i.modes.bubble.opacity !== n.opacity.value) if (i.modes.bubble.opacity > n.opacity.value) {\n var f = i.modes.bubble.opacity * l;\n f > e.opacityValue && f <= i.modes.bubble.opacity && (e.bubbleOpacity = f);\n } else {\n var d = e.opacityValue - (n.opacity.value - i.modes.bubble.opacity) * l;\n d < e.opacityValue && d >= i.modes.bubble.opacity && (e.bubbleOpacity = d);\n }\n }\n } else e.bubbleOpacity = e.opacityValue, e.radius_bubble = e.radius;\n\n this.library.interactivity.mouseStatus === o.MouseInteractivityStatus.MOUSELEAVE && (e.bubbleOpacity = e.opacityValue, e.radius_bubble = e.radius);\n } else if (i.events.onclick.enable && r.isInArray(a.InteractivityMode.BUBBLE, i.events.onclick.mode) && this.bubble_clicking) {\n var b = this.library.manager.getDistance(e, this.library.interactivity.mouseClickPosition),\n g = (new Date().getTime() - this.library.interactivity.mouseClickTime) / 1e3;\n g > i.modes.bubble.duration && (this.bubble_duration_end = !0), g > 2 * i.modes.bubble.duration && (this.bubble_clicking = !1, this.bubble_duration_end = !1);\n\n var m = function m(n, r, a, o, s) {\n if (n != r) if (t.bubble_duration_end) {\n if (null != a) {\n var c = n + (n - (o - g * (o - n) / i.modes.bubble.duration));\n \"size\" == s && (e.radius_bubble = c), \"opacity\" == s && (e.bubbleOpacity = c);\n }\n } else if (b <= i.modes.bubble.distance) {\n if ((null != a ? a : o) != n) {\n var l = o - g * (o - n) / i.modes.bubble.duration;\n \"size\" == s && (e.radius_bubble = l), \"opacity\" == s && (e.bubbleOpacity = l);\n }\n } else \"size\" == s && (e.radius_bubble = void 0), \"opacity\" == s && (e.bubbleOpacity = void 0);\n };\n\n this.bubble_clicking && (m(i.modes.bubble.size, n.size.value, e.radius_bubble, e.radius, \"size\"), m(i.modes.bubble.opacity, n.opacity.value, e.bubbleOpacity, e.opacityValue, \"opacity\"));\n }\n }\n }, {\n key: \"repulseParticle\",\n value: function value(e) {\n var t = this.library.canvas,\n i = this.library.getParameter(function (e) {\n return e.interactivity;\n }),\n n = this.library.getParameter(function (e) {\n return e.particles;\n });\n\n if (i.events.onhover.enable && r.isInArray(a.InteractivityMode.REPULSE, i.events.onhover.mode) && this.library.interactivity.mouseStatus === o.MouseInteractivityStatus.MOUSEMOVE) {\n var s = this.library.manager.getDistances(e, this.library.interactivity.mouseMovePosition),\n c = s.distance,\n l = {\n x: s.distanceX / c,\n y: s.distanceY / c\n },\n u = i.modes.repulse.distance,\n h = r.clamp(1 / u * (-1 * Math.pow(c / u, 2) + 1) * u * 100, 0, 50),\n y = {\n x: e.x + l.x * h,\n y: e.y + l.y * h\n };\n n.move.out_mode === a.MoveOutMode.BOUNCE ? (y.x - e.radius > 0 && y.x + e.radius < t.width && (e.x = y.x), y.y - e.radius > 0 && y.y + e.radius < t.height && (e.y = y.y)) : (e.x = y.x, e.y = y.y);\n } else if (i.events.onclick.enable && r.isInArray(a.InteractivityMode.REPULSE, i.events.onclick.mode)) if (this.repulse_finish || (this.repulse_count++, this.repulse_count == n.array.length && (this.repulse_finish = !0)), this.repulse_clicking) {\n var p = Math.pow(i.modes.repulse.distance / 6, 3),\n v = this.library.manager.getDistances(this.library.interactivity.mouseClickPosition, e),\n f = v.distance,\n d = v.distanceX,\n b = v.distanceY,\n g = -1 * (p / Math.pow(f, 2));\n\n if (f <= p) {\n var m = Math.atan2(b, d);\n\n if (e.vx = g * Math.cos(m), e.vy = g * Math.sin(m), n.move.out_mode === a.MoveOutMode.BOUNCE) {\n var _ = {\n x: e.x + e.vx,\n y: e.y + e.vy\n };\n _.x + e.radius > t.width ? e.vx = -e.vx : _.x - e.radius < 0 && (e.vx = -e.vx), _.y + e.radius > t.height ? e.vy = -e.vy : _.y - e.radius < 0 && (e.vy = -e.vy);\n }\n }\n } else !1 === this.repulse_clicking && (e.vx = e.vx_i, e.vy = e.vy_i);\n }\n }, {\n key: \"grabParticle\",\n value: function value(e) {\n var t = this.library.canvas,\n i = this.library.getParameter(function (e) {\n return e;\n }),\n n = i.interactivity,\n r = i.particles;\n\n if (n.events.onhover.enable && this.library.interactivity.mouseStatus === o.MouseInteractivityStatus.MOUSEMOVE) {\n var a = this.library.manager.getDistance(e, this.library.interactivity.mouseMovePosition);\n\n if (a <= n.modes.grab.distance) {\n var s = n.modes.grab,\n c = s.line_linked.opacity - a / (1 / s.line_linked.opacity) / s.distance;\n\n if (c > 0) {\n var l = r.line_linked.color_rgb_line,\n u = l.r,\n h = l.g,\n y = l.b;\n t.ctx.strokeStyle = \"rgba( \".concat(u, \", \").concat(h, \", \").concat(y, \", \").concat(c, \" )\"), t.ctx.lineWidth = r.line_linked.width, t.ctx.beginPath(), t.ctx.moveTo(e.x, e.y), t.ctx.lineTo(this.library.interactivity.mouseMovePosition.x, this.library.interactivity.mouseMovePosition.y), t.ctx.stroke(), t.ctx.closePath();\n }\n }\n }\n }\n }]) && n(t.prototype, i), s && n(t, s), e;\n }();\n\n t.default = s;\n }, function (e, t, i) {\n \"use strict\";\n\n function n(e, t) {\n for (var i = 0; i < t.length; i++) {\n var n = t[i];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(e, n.key, n);\n }\n }\n\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n });\n\n var r = i(2),\n a = i(1),\n o = i(4),\n s = function () {\n function e(t) {\n var i = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},\n n = i.color,\n r = i.move,\n a = i.opacity,\n o = i.polygon,\n s = i.position,\n c = i.shape,\n l = i.size;\n !function (e, t) {\n if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, e), this.library = t, this.setupSize(l), this.setupPosition(r, o, s), this.setupColor(n), this.setupOpacity(a), this.setupAnimation(r), this.setupShape(c);\n }\n\n var t, i, s;\n return t = e, (i = [{\n key: \"setupSize\",\n value: function value(e) {\n var t = this.library.getParameter(function (e) {\n return e.particles.size;\n });\n e = o.deepAssign({}, t, e), this.radius = (e.random ? Math.random() : 1) * e.value, e.anim.enable && (this.size_status = !1, this.vs = e.anim.speed / 100, e.anim.sync || (this.vs = this.vs * Math.random()));\n }\n }, {\n key: \"setupPosition\",\n value: function value(e, t, i) {\n this.initialPosition = i;\n var n = this.library.getParameter(function (e) {\n return e.particles.move;\n });\n e = o.deepAssign({}, n, e);\n var r = this.library.getParameter(function (e) {\n return e.polygon;\n });\n t = o.deepAssign({}, r, t);\n var s = this.library.getParameter(function (e) {\n return e.particles.array;\n }),\n c = this.library,\n l = c.canvas,\n u = c.vendors;\n if (i) this.x = i.x, this.y = i.y;else if (t.enable) {\n var h;\n\n switch (t.type) {\n case a.PolygonType.INLINE:\n switch (t.inline.arrangement) {\n case a.PolygonInlineArrangementType.RANDOM_POINT:\n h = this.library.polygonMask.getRandomPointOnPolygonPath();\n break;\n\n case a.PolygonInlineArrangementType.RANDOM_LENGTH:\n h = this.library.polygonMask.getRandomPointOnPolygonPathByLength();\n break;\n\n case a.PolygonInlineArrangementType.EQUIDISTANT:\n h = this.library.polygonMask.getEquidistantPoingOnPolygonPathByIndex(s.length);\n break;\n\n case a.PolygonInlineArrangementType.ONE_PER_POINT:\n default:\n h = this.library.polygonMask.getPoingOnPolygonPathByIndex(s.length);\n }\n\n break;\n\n case a.PolygonType.INSIDE:\n h = this.library.polygonMask.getRandomPointInsidePolygonPath();\n break;\n\n case a.PolygonType.OUTSIDE:\n h = this.library.polygonMask.getRandomPointOutsidePolygonPath();\n }\n\n h && (this.x = h.x, this.y = h.y, this.initialPosition = {\n x: this.x,\n y: this.y\n });\n }\n void 0 !== this.x && void 0 !== this.y || (this.x = Math.random() * l.width, this.y = Math.random() * l.height), this.x > l.width - 2 * this.radius ? this.x = this.x - this.radius : this.x < 2 * this.radius && (this.x = this.x + this.radius), this.y > l.height - 2 * this.radius ? this.y = this.y - this.radius : this.y < 2 * this.radius && (this.y = this.y + this.radius), e.bounce && u.checkOverlap(this, {\n x: this.x,\n y: this.y\n });\n }\n }, {\n key: \"setupColor\",\n value: function value(e) {\n var t = this.library.getParameter(function (e) {\n return e.particles.color;\n });\n e = o.deepAssign({}, e, t), this.color = r.getColor(e.value);\n }\n }, {\n key: \"setupOpacity\",\n value: function value(e) {\n var t = this.library.getParameter(function (e) {\n return e.particles.opacity;\n });\n e = o.deepAssign({}, t, e), this.opacityValue = (e.random ? Math.random() : 1) * e.value, e.anim.enable && (this.opacity_status = !1, this.vo = e.anim.speed / 100, e.anim.sync || (this.vo = this.vo * Math.random()));\n }\n }, {\n key: \"setupAnimation\",\n value: function value(e) {\n var t,\n i = this.library.getParameter(function (e) {\n return e.particles.move;\n });\n\n switch ((e = o.deepAssign({}, i, e)).direction) {\n case a.MoveDirection.TOP:\n t = {\n x: 0,\n y: -1\n };\n break;\n\n case a.MoveDirection.TOP_RIGHT:\n t = {\n x: .5,\n y: -.5\n };\n break;\n\n case a.MoveDirection.RIGHT:\n t = {\n x: 1,\n y: 0\n };\n break;\n\n case a.MoveDirection.BOTTOM_RIGHT:\n t = {\n x: .5,\n y: .5\n };\n break;\n\n case a.MoveDirection.BOTTOM:\n t = {\n x: 0,\n y: 1\n };\n break;\n\n case a.MoveDirection.BOTTOM_LEFT:\n t = {\n x: -.5,\n y: 1\n };\n break;\n\n case a.MoveDirection.LEFT:\n t = {\n x: -1,\n y: 0\n };\n break;\n\n case a.MoveDirection.TOP_LEFT:\n t = {\n x: -.5,\n y: -.5\n };\n break;\n\n default:\n t = {\n x: 0,\n y: 0\n };\n }\n\n e.straight ? (this.vx = t.x, this.vy = t.y, e.random && (this.vx = this.vx * Math.random(), this.vy = this.vy * Math.random())) : (this.vx = t.x + Math.random() - .5, this.vy = t.y + Math.random() - .5), this.vx_i = this.vx, this.vy_i = this.vy;\n }\n }, {\n key: \"setupShape\",\n value: function value(e) {\n var t = this,\n i = this.library.getParameter(function (e) {\n return e.particles.shape;\n });\n e = o.deepAssign({}, i, e);\n var n = this.library.getParameter(function (e) {\n return e.particles.array;\n });\n\n if (Array.isArray(e.type)) {\n var r = e.type[Math.floor(Math.random() * e.type.length)];\n e = o.deepAssign({}, e, {\n type: r\n });\n }\n\n this.shape = e, e.type !== a.ShapeType.IMAGE && e.type !== a.ShapeType.IMAGES || (e.type === a.ShapeType.IMAGES ? this.shapeImage = this.library.imageManager.getImage(n.length) : this.shapeImage = this.library.imageManager.getImage(), \"svg\" === this.shapeImage.type && void 0 !== this.shapeImage.svgData && this.library.imageManager.createSvgImage(this.shapeImage.svgData, {\n color: this.color,\n opacity: this.opacityValue\n }).then(function (e) {\n t.shapeImage.elementData = e, t.shapeImage.loaded = !0;\n }));\n }\n }, {\n key: \"draw\",\n value: function value() {\n var e,\n t,\n i,\n n = this.library,\n r = n.canvas,\n o = n.vendors;\n\n if (e = void 0 !== this.radius_bubble ? this.radius_bubble : this.radius, t = void 0 !== this.bubbleOpacity ? this.bubbleOpacity : this.opacityValue, this.color.rgb) {\n var s = this.color.rgb,\n c = s.r,\n l = s.g,\n u = s.b;\n i = \"rgba( \".concat(c, \", \").concat(l, \", \").concat(u, \", \").concat(t, \" )\");\n } else {\n var h = this.color.hsl,\n y = h.h,\n p = h.s,\n v = h.l;\n i = \"hsla( \".concat(y, \", \").concat(p, \", \").concat(v, \", \").concat(t, \" )\");\n }\n\n switch (r.ctx.fillStyle = i, r.ctx.beginPath(), this.shape.type) {\n case a.ShapeType.CIRCLE:\n r.ctx.arc(this.x, this.y, e, 0, 2 * Math.PI, !1);\n break;\n\n case a.ShapeType.EDGE:\n r.ctx.rect(this.x - e, this.y - e, 2 * e, 2 * e);\n break;\n\n case a.ShapeType.TRIANGLE:\n o.drawShape(r.ctx, this.x - e, this.y + e / 1.66, 2 * e, 3, 2);\n break;\n\n case a.ShapeType.POLYGON:\n o.drawShape(r.ctx, this.x - e / (this.shape.polygon.nb_sides / 3.5), this.y - e / .76, 2.66 * e / (this.shape.polygon.nb_sides / 3), this.shape.polygon.nb_sides, 1);\n break;\n\n case a.ShapeType.STAR:\n o.drawShape(r.ctx, this.x - 2 * e / (this.shape.polygon.nb_sides / 4), this.y - e / 1.52, 2 * e * 2.66 / (this.shape.polygon.nb_sides / 3), this.shape.polygon.nb_sides, 2);\n break;\n\n case a.ShapeType.IMAGES:\n case a.ShapeType.IMAGE:\n this.shapeImage.elementData && r.ctx.drawImage(this.shapeImage.elementData, this.x - e, this.y - e, 2 * e, 2 * e / this.shapeImage.ratio);\n }\n\n r.ctx.closePath(), this.shape.stroke.width > 0 && (r.ctx.strokeStyle = this.shape.stroke.color, r.ctx.lineWidth = this.shape.stroke.width, r.ctx.stroke()), r.ctx.fill();\n }\n }]) && n(t.prototype, i), s && n(t, s), e;\n }();\n\n t.default = s;\n }, function (e, t, i) {\n \"use strict\";\n\n function n(e, t) {\n for (var i = 0; i < t.length; i++) {\n var n = t[i];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(e, n.key, n);\n }\n }\n\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n });\n\n var r = i(2),\n a = i(1),\n o = function () {\n function e(t) {\n !function (e, t) {\n if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, e), this.library = t, this.particlesCreate = this.particlesCreate.bind(this);\n }\n\n var t, i, o;\n return t = e, (i = [{\n key: \"particlesCreate\",\n value: function value() {\n var e = this.library.getParameter(function (e) {\n return e.particles;\n }),\n t = this.library.getParameter(function (e) {\n return e.polygon;\n }),\n i = e.number.value;\n t.enable && t.type === a.PolygonType.INLINE && t.inline.arrangement === a.PolygonInlineArrangementType.ONE_PER_POINT && (i = this.library.polygonMask.getVerticesNumber());\n\n for (var n = 0; n < i; n++) {\n e.array.push(new r.Particle(this.library));\n }\n }\n }, {\n key: \"particlesUpdate\",\n value: function value() {\n var e = this,\n t = this.library,\n i = t.canvas,\n n = t.modes,\n o = this.library.getParameter(function (e) {\n return e.interactivity;\n }),\n s = this.library.getParameter(function (e) {\n return e.particles;\n }),\n c = this.library.getParameter(function (e) {\n return e.polygon;\n });\n s.array.forEach(function (t, l) {\n if (s.move.enable) {\n var u = s.move.speed / 2;\n t.x += t.vx * u, t.y += t.vy * u;\n }\n\n var h;\n\n switch (s.opacity.anim.enable && (1 == t.opacity_status ? (t.opacityValue >= s.opacity.value && (t.opacity_status = !1), t.opacityValue += t.vo) : (t.opacityValue <= s.opacity.anim.opacity_min && (t.opacity_status = !0), t.opacityValue -= t.vo), t.opacityValue < 0 && (t.opacityValue = 0)), s.size.anim.enable && (1 == t.size_status ? (t.radius >= s.size.value && (t.size_status = !1), t.radius += t.vs) : (t.radius <= s.size.anim.size_min && (t.size_status = !0), t.radius -= t.vs), t.radius < 0 && (t.radius = 0)), h = \"bounce\" == s.move.out_mode ? {\n x_left: t.radius,\n x_right: i.width,\n y_top: t.radius,\n y_bottom: i.height\n } : {\n x_left: -t.radius,\n x_right: i.width + t.radius,\n y_top: -t.radius,\n y_bottom: i.height + t.radius\n }, t.x - t.radius > i.width ? (t.x = h.x_left, t.y = Math.random() * i.height) : t.x + t.radius < 0 && (t.x = h.x_right, t.y = Math.random() * i.height), t.y - t.radius > i.height ? (t.y = h.y_top, t.x = Math.random() * i.width) : t.y + t.radius < 0 && (t.y = h.y_bottom, t.x = Math.random() * i.width), s.move.out_mode) {\n case \"bounce\":\n if (c.enable) {\n var y = c.move.radius;\n\n switch (c.type) {\n case a.PolygonType.INLINE:\n e.getDistance(t.initialPosition, t) > y && (t.vx = -t.vx + t.vy / 2, t.vy = -t.vy + t.vx / 2);\n break;\n\n case a.PolygonType.INSIDE:\n case a.PolygonType.OUTSIDE:\n var p = c.move.type;\n if (p === a.PolygonMoveType.RADIUS) e.getDistance(t.initialPosition, t) > y && (t.vx = -t.vx + t.vy / 2, t.vy = -t.vy + t.vx / 2);else if (p === a.PolygonMoveType.PATH) {\n var v = c.type === a.PolygonType.INSIDE,\n f = e.library.polygonMask.isPointInsidePolygon({\n x: t.x,\n y: t.y\n });\n (v && !f || !v && f) && (t.vx = -t.vx + t.vy / 2, t.vy = -t.vy + t.vx / 2);\n }\n }\n } else t.x + t.radius > i.width ? t.vx = -t.vx : t.x - t.radius < 0 && (t.vx = -t.vx), t.y + t.radius > i.height ? t.vy = -t.vy : t.y - t.radius < 0 && (t.vy = -t.vy);\n\n }\n\n if (r.isInArray(\"grab\", o.events.onhover.mode) && n.grabParticle(t), (r.isInArray(\"bubble\", o.events.onhover.mode) || r.isInArray(\"bubble\", o.events.onclick.mode)) && n.bubbleParticle(t), (r.isInArray(\"repulse\", o.events.onhover.mode) || r.isInArray(\"repulse\", o.events.onclick.mode)) && n.repulseParticle(t), s.line_linked.enable || s.move.attract.enable) for (var d = l + 1; d < s.array.length; d++) {\n var b = s.array[d];\n s.line_linked.enable && e.library.interactivity.linkParticles(t, b), s.move.attract.enable && e.library.interactivity.attractParticles(t, b), s.move.bounce && e.library.interactivity.bounceParticles(t, b);\n }\n });\n }\n }, {\n key: \"getDistances\",\n value: function value(e, t) {\n var i = e.x - t.x,\n n = e.y - t.y;\n return {\n distance: Math.sqrt(i * i + n * n),\n distanceX: i,\n distanceY: n\n };\n }\n }, {\n key: \"getDistance\",\n value: function value(e, t) {\n return this.getDistances(e, t).distance;\n }\n }, {\n key: \"particlesDraw\",\n value: function value() {\n var e = this.library,\n t = e.canvas,\n i = e.manager,\n n = this.library.getParameter(function (e) {\n return e.particles;\n }),\n r = this.library.getParameter(function (e) {\n return e.polygon;\n });\n t.ctx.clearRect(0, 0, t.width, t.height), i.particlesUpdate(), n.array.forEach(function (e) {\n e.draw();\n }), r.enable && r.draw.enable && this.library.polygonMask.drawPolygon();\n }\n }, {\n key: \"particlesEmpty\",\n value: function value() {\n this.library.getParameter(function (e) {\n return e.particles;\n }).array = [];\n }\n }, {\n key: \"particlesRefresh\",\n value: function value() {\n cancelAnimationFrame(this.library.drawAnimFrame), this.particlesEmpty(), this.library.canvasClear(), this.library.start();\n }\n }]) && n(t.prototype, i), o && n(t, o), e;\n }();\n\n t.default = o;\n }, function (e, t, i) {\n \"use strict\";\n\n function n(e, t) {\n for (var i = 0; i < t.length; i++) {\n var n = t[i];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(e, n.key, n);\n }\n }\n\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n });\n\n var r = i(2),\n a = i(33),\n o = function () {\n function e(t) {\n !function (e, t) {\n if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, e), this.imageManager = new a.ImageManager(), this.retina = !1, this.onWindowResize = this.onWindowResize.bind(this), this.loadParameters(t), this.interactivity = new r.Interactivity(this), this.modes = new r.Modes(this), this.vendors = new r.Vendors(this.imageManager, this.params, this), this.manager = new r.ParticleManager(this), this.polygonMask = new r.PolygonMask(this);\n }\n\n var t, i, o;\n return t = e, (i = [{\n key: \"getParameter\",\n value: function value(e) {\n return e(this.params);\n }\n }, {\n key: \"setParameters\",\n value: function value(e) {\n this.params = r.deepAssign(Object.assign({}, this.params), e);\n }\n }, {\n key: \"loadParameters\",\n value: function value(e) {\n var t = r.deepAssign({}, r.getDefaultParams(), e);\n this.params = t;\n }\n }, {\n key: \"loadCanvas\",\n value: function value(e) {\n this.canvas = {\n element: e,\n width: e.offsetWidth,\n height: e.offsetHeight\n };\n }\n }, {\n key: \"start\",\n value: function value() {\n this.interactivity.attachEventHandlers(), this.vendors.start();\n }\n }, {\n key: \"destroy\",\n value: function value() {\n this.detachListeners(), this.interactivity.detachEventHandlers(), cancelAnimationFrame(this.drawAnimFrame), this.canvasClear();\n }\n }, {\n key: \"detachListeners\",\n value: function value() {\n window.removeEventListener(\"resize\", this.onWindowResize);\n }\n }, {\n key: \"retinaInit\",\n value: function value() {\n var e = window.devicePixelRatio;\n\n if (this.params.retina_detect && e > 1) {\n this.canvas.pxratio = e, this.canvas.width = this.canvas.element.offsetWidth * this.canvas.pxratio, this.canvas.height = this.canvas.element.offsetHeight * this.canvas.pxratio, this.retina = !0;\n var t = this.getParameter(function (e) {\n return e;\n });\n this.setParameters({\n interactivity: {\n modes: {\n bubble: {\n distance: t.interactivity.modes.bubble.distance * e,\n size: t.interactivity.modes.bubble.size * e\n },\n grab: {\n distance: t.interactivity.modes.grab.distance * e\n },\n repulse: {\n distance: t.interactivity.modes.repulse.distance * e\n }\n }\n },\n particles: {\n line_linked: {\n distance: t.particles.line_linked.distance * e,\n width: t.particles.line_linked.width * e\n },\n move: {\n speed: t.particles.move.speed * e\n },\n size: {\n value: t.particles.size.value * e,\n anim: {\n speed: t.particles.size.anim.speed * e\n }\n }\n }\n });\n } else this.canvas.pxratio = 1, this.retina = !1;\n }\n }, {\n key: \"canvasInit\",\n value: function value() {\n var e = this.canvas;\n e.ctx = e.element.getContext(\"2d\");\n }\n }, {\n key: \"canvasSize\",\n value: function value() {\n var e = this.canvas;\n e.element.width = e.width, e.element.height = e.height, this.params && this.params.interactivity.events.resize && window.addEventListener(\"resize\", this.onWindowResize);\n }\n }, {\n key: \"canvasPaint\",\n value: function value() {\n var e = this.canvas;\n if (e && e.ctx) try {\n e.ctx.fillRect(0, 0, e.width, e.height);\n } catch (e) {\n console.warn(e);\n }\n }\n }, {\n key: \"canvasClear\",\n value: function value() {\n var e = this.canvas;\n if (e && e.ctx) try {\n e.ctx.clearRect(0, 0, e.width, e.height);\n } catch (e) {\n console.warn(e);\n }\n }\n }, {\n key: \"onWindowResize\",\n value: function value() {\n var e = this.canvas,\n t = this.manager,\n i = this.vendors;\n e.width = e.element.offsetWidth, e.height = e.element.offsetHeight, this.retina && (e.width *= e.pxratio, e.height *= e.pxratio), e.element.width = e.width, e.element.height = e.height, !this.params.particles.move.enable || this.params.polygon.enable ? (t.particlesEmpty(), this.polygonMask.initialize(this.getParameter(function (e) {\n return e.polygon;\n })).then(function () {\n t.particlesCreate(), t.particlesDraw();\n })) : i.densityAutoParticles();\n }\n }]) && n(t.prototype, i), o && n(t, o), e;\n }();\n\n t.default = o;\n }, function (e, t, i) {\n \"use strict\";\n\n function n(e, t) {\n for (var i = 0; i < t.length; i++) {\n var n = t[i];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(e, n.key, n);\n }\n }\n\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n });\n var r,\n a = i(1),\n o = i(4);\n !function (e) {\n e.SINGLE = \"single\", e.MULTIPLE = \"multiple\";\n }(r = t.ImageMode || (t.ImageMode = {}));\n\n var s = function () {\n function e() {\n !function (e, t) {\n if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, e), this.singleImage = null, this.multipleImages = [], this.mode = r.SINGLE;\n }\n\n var t, i, s;\n return t = e, (i = [{\n key: \"getImage\",\n value: function value(e) {\n if (void 0 !== e) {\n if (0 === this.multipleImages.length) throw new Error(\"No images loaded. You may need to define 'shape.type' = 'images'.\");\n return this.multipleImages[e % this.multipleImages.length];\n }\n\n return this.singleImage;\n }\n }, {\n key: \"parseShape\",\n value: function value(e) {\n var t = this;\n if (o.isEqual(a.ShapeType.IMAGE, e.type)) return this.mode = r.SINGLE, this.parseSingleImage(e.image).then(function (i) {\n return t.singleImage = i, Object.assign({}, e, {\n image: i\n });\n });\n\n if (o.isEqual(a.ShapeType.IMAGES, e.type)) {\n this.mode = r.MULTIPLE;\n var i = e.images.map(function (e) {\n return t.parseSingleImage(e);\n });\n return Promise.all(i).then(function (i) {\n return t.multipleImages = i, Object.assign({}, e, {\n images: i\n });\n });\n }\n\n return Promise.resolve(e);\n }\n }, {\n key: \"parseSingleImage\",\n value: function value(e) {\n var t,\n i = this.buildImageObject({\n height: e.height,\n width: e.width,\n src: e.src\n }),\n n = e.width / e.height;\n return n !== 1 / 0 && 0 !== n || (n = 1), i.ratio = n, (t = /^data:image\\/(\\w{3})\\+xml;(.*?)base64,(.*)$/.exec(e.src)) ? (i.type = t[1], i.svgData = atob(t[3])) : (t = /^.*(\\w{3})$/.exec(e.src)) && (i.type = t[1]), this.loadImage(i);\n }\n }, {\n key: \"loadImage\",\n value: function value(e) {\n return \"\" != (e = Object.assign({}, e)).src ? \"svg\" == e.type ? e.svgData ? Promise.resolve(e) : this.downloadImage(e.src).then(function (t) {\n return e.svgData = t.response, e;\n }) : new Promise(function (t) {\n var i = new Image();\n i.addEventListener(\"load\", function () {\n e.elementData = i, t(e);\n }), i.src = e.src;\n }) : Promise.reject(new Error(\"Error react-particles-js - no image.src\"));\n }\n }, {\n key: \"downloadImage\",\n value: function value(e) {\n return new Promise(function (t, i) {\n var n = new XMLHttpRequest();\n n.open(\"GET\", e), n.onreadystatechange = function (e) {\n 4 == n.readyState && (200 == n.status ? t({\n response: e.currentTarget.response,\n xhr: n\n }) : i(new Error(\"Error react-particles-js - Status code \".concat(n.readyState))));\n }, n.send();\n });\n }\n }, {\n key: \"createSvgImage\",\n value: function value(e, t) {\n var i = e.replace(/#([0-9A-F]{3,6})|rgb\\([0-9,]+\\)/gi, function (e, i, n, r) {\n var a;\n\n if (t.color.rgb) {\n var o = t.color.rgb,\n s = o.r,\n c = o.g,\n l = o.b;\n a = \"rgba( \".concat(s, \", \").concat(c, \", \").concat(l, \", \").concat(t.opacity, \" )\");\n } else {\n var u = t.color.hsl,\n h = u.h,\n y = u.s,\n p = u.l;\n a = \"rgba( \".concat(h, \", \").concat(y, \", \").concat(p, \", \").concat(t.opacity, \" )\");\n }\n\n return a;\n }),\n n = new Blob([i], {\n type: \"image/svg+xml;charset=utf-8\"\n }),\n r = window.URL || window,\n a = r.createObjectURL(n);\n return new Promise(function (e) {\n var t = new Image();\n t.addEventListener(\"load\", function () {\n r.revokeObjectURL(a), e(t);\n }), t.src = a;\n });\n }\n }, {\n key: \"buildImageObject\",\n value: function value() {\n var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};\n return Object.assign({\n svgData: null,\n height: 0,\n width: 0,\n ratio: 0,\n src: \"\",\n type: \"\"\n }, e);\n }\n }]) && n(t.prototype, i), s && n(t, s), e;\n }();\n\n t.ImageManager = s;\n }, function (e, t, i) {\n \"use strict\";\n\n function n(e, t) {\n for (var i = 0; i < t.length; i++) {\n var n = t[i];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(e, n.key, n);\n }\n }\n\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n });\n\n var r = i(2),\n a = i(1),\n o = function () {\n function e(t, i, n) {\n !function (e, t) {\n if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, e), this.imageManager = t, this.initialized = !1, this.params = i, this.library = n, \"undefined\" != typeof performance && (this.lastDraw = performance.now()), this.draw = this.draw.bind(this);\n }\n\n var t, i, o;\n return t = e, (i = [{\n key: \"densityAutoParticles\",\n value: function value() {\n var e = this.library,\n t = e.canvas,\n i = e.modes,\n n = this.params.particles,\n r = n.number.density,\n a = r.value_area;\n\n if (r.enable) {\n var o = t.element.width * t.element.height / 1e3;\n this.library.retina && (o /= 2 * t.pxratio);\n var s = o * n.number.value / a,\n c = n.array.length - s;\n c < 0 ? i.pushParticles(Math.abs(c)) : i.removeParticles(c);\n }\n }\n }, {\n key: \"checkOverlap\",\n value: function value(e, t) {\n var i = this,\n n = this.library,\n r = n.canvas,\n o = n.vendors;\n r.width && r.height && this.params.particles.array.forEach(function (n) {\n var s = n,\n c = e.x - s.x,\n l = e.y - s.y;\n if (Math.sqrt(c * c + l * l) <= e.radius + s.radius) if (i.library.params.polygon.enable) switch (i.library.params.polygon.inline.arrangement) {\n case a.PolygonInlineArrangementType.RANDOM_LENGTH:\n case a.PolygonInlineArrangementType.RANDOM_POINT:\n } else e.x = t ? t.x : Math.random() * r.width, e.y = t ? t.y : Math.random() * r.height, o.checkOverlap(e);\n });\n }\n }, {\n key: \"destroy\",\n value: function value() {\n cancelAnimationFrame(this.library.drawAnimFrame), this.library.canvas.element.remove();\n }\n }, {\n key: \"drawShape\",\n value: function value(e, t, i, n, r, a) {\n var o = r * a,\n s = r / a,\n c = 180 * (s - 2) / s,\n l = Math.PI - Math.PI * c / 180;\n e.save(), e.beginPath(), e.translate(t, i), e.moveTo(0, 0);\n\n for (var u = 0; u < o; u++) {\n e.lineTo(n, 0), e.translate(n, 0), e.rotate(l);\n }\n\n e.fill(), e.restore();\n }\n }, {\n key: \"exportImg\",\n value: function value() {\n var e = this.library.canvas;\n window.open(e.element.toDataURL(\"image/png\"), \"_blank\");\n }\n }, {\n key: \"draw\",\n value: function value() {\n var e = !0,\n t = this.library,\n i = t.manager,\n n = t.vendors,\n r = this.params.particles;\n void 0 !== performance && (performance.now() - this.lastDraw < 1e3 / this.params.fps_limit ? e = !1 : this.lastDraw = performance.now());\n e && i.particlesDraw(), r.move.enable ? this.library.drawAnimFrame = requestAnimationFrame(n.draw) : cancelAnimationFrame(this.library.drawAnimFrame);\n }\n }, {\n key: \"init\",\n value: function value() {\n var e = this;\n\n if (!this.initialized) {\n this.initialized = !0;\n var t = this.library,\n i = t.manager,\n n = t.vendors,\n a = this.params.particles;\n t.retinaInit(), t.canvasInit(), t.canvasSize(), t.polygonMask.initialize(this.library.getParameter(function (e) {\n return e.polygon;\n })).then(function () {\n i.particlesCreate(), n.densityAutoParticles(), e.library.setParameters({\n particles: {\n line_linked: {\n color_rgb_line: r.hexToRgb(a.line_linked.color)\n }\n }\n }), e.draw();\n });\n }\n }\n }, {\n key: \"start\",\n value: function value() {\n var e = this,\n t = this.params.particles;\n this.imageManager.parseShape(t.shape).then(function (t) {\n e.init();\n });\n }\n }]) && n(t.prototype, i), o && n(t, o), e;\n }();\n\n t.default = o;\n }, function (e, t, i) {\n \"use strict\";\n\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n });\n var n = i(1),\n r = i(4),\n a = {\n particles: {\n number: {\n value: 40,\n max: -1,\n density: {\n enable: !1,\n value_area: 1200\n }\n },\n color: {\n value: \"#FFF\"\n },\n shape: {\n type: n.ShapeType.CIRCLE,\n stroke: {\n width: 0,\n color: \"#000000\"\n },\n polygon: {\n nb_sides: 5\n },\n image: {\n src: \"\",\n width: 100,\n height: 100\n },\n images: []\n },\n opacity: {\n value: .5,\n random: !1,\n anim: {\n enable: !0,\n speed: 1,\n opacity_min: .1,\n sync: !1\n }\n },\n size: {\n value: 1,\n random: !1,\n anim: {\n enable: !1,\n speed: 40,\n size_min: 0,\n sync: !1\n }\n },\n line_linked: {\n enable: !0,\n distance: 150,\n color: \"#FFF\",\n opacity: .6,\n width: 1,\n shadow: {\n enable: !1,\n blur: 5,\n color: \"lime\"\n }\n },\n move: {\n enable: !0,\n speed: 3,\n direction: n.MoveDirection.NONE,\n random: !1,\n straight: !1,\n out_mode: n.MoveOutMode.BOUNCE,\n bounce: !0,\n attract: {\n enable: !1,\n rotateX: 3e3,\n rotateY: 3e3\n }\n },\n array: []\n },\n interactivity: {\n detect_on: \"canvas\",\n events: {\n onhover: {\n enable: !1,\n mode: n.InteractivityMode.GRAB\n },\n onclick: {\n enable: !1,\n mode: n.InteractivityMode.REPULSE\n },\n resize: !0\n },\n modes: {\n grab: {\n distance: 180,\n line_linked: {\n opacity: .35\n }\n },\n bubble: {\n distance: 200,\n size: 80,\n duration: .4\n },\n repulse: {\n distance: 100,\n duration: 5\n },\n push: {\n particles_nb: 4\n },\n remove: {\n particles_nb: 2\n }\n }\n },\n retina_detect: !0,\n fps_limit: 999,\n polygon: {\n enable: !1,\n scale: 1,\n type: n.PolygonType.INLINE,\n inline: {\n arrangement: n.PolygonInlineArrangementType.ONE_PER_POINT\n },\n draw: {\n enable: !1,\n stroke: {\n width: .5,\n color: \"rgba(255, 255, 255, .1)\"\n }\n },\n move: {\n radius: 10,\n type: n.PolygonMoveType.PATH\n },\n url: \"\"\n }\n };\n\n t.getDefaultParams = function () {\n return r.deepAssign({}, a);\n };\n }, function (e, t, i) {\n \"use strict\";\n\n function n(e, t) {\n return function (e) {\n if (Array.isArray(e)) return e;\n }(e) || function (e, t) {\n var i = [],\n n = !0,\n r = !1,\n a = void 0;\n\n try {\n for (var o, s = e[Symbol.iterator](); !(n = (o = s.next()).done) && (i.push(o.value), !t || i.length !== t); n = !0) {\n ;\n }\n } catch (e) {\n r = !0, a = e;\n } finally {\n try {\n n || null == s.return || s.return();\n } finally {\n if (r) throw a;\n }\n }\n\n return i;\n }(e, t) || function () {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }();\n }\n\n function r(e, t) {\n for (var i = 0; i < t.length; i++) {\n var n = t[i];\n n.enumerable = n.enumerable || !1, n.configurable = !0, \"value\" in n && (n.writable = !0), Object.defineProperty(e, n.key, n);\n }\n }\n\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n });\n\n var a = function () {\n function e(t) {\n !function (e, t) {\n if (!(e instanceof t)) throw new TypeError(\"Cannot call a class as a function\");\n }(this, e), this.library = t, this.polygonPathLength = 0, this.initialized = !1, this.path2DSupported = !!window.Path2D, this.debounceTime = 250, this.parseSvgPathToPolygon = this.parseSvgPathToPolygon.bind(this);\n }\n\n var t, i, a;\n return t = e, (i = [{\n key: \"initialize\",\n value: function value(e) {\n var t = this;\n return this.polygon = e, e.enable ? this.initialized ? new Promise(function (e) {\n t.debounceTimer && clearTimeout(t.debounceTimer), t.debounceTimer = setTimeout(function () {\n t.parseSvgPathToPolygon().then(function (t) {\n e();\n });\n }, t.debounceTime);\n }) : this.parseSvgPathToPolygon().then(function (e) {\n t.initialized = !0;\n }) : Promise.resolve();\n }\n }, {\n key: \"getVerticesNumber\",\n value: function value() {\n return this.initialized ? this.polygonRaw.length : 0;\n }\n }, {\n key: \"parseSvgPathToPolygon\",\n value: function value(e) {\n var t = this;\n e = e || this.polygon.url;\n var i = this.library.canvas.width === this.lastCanvasWidth && this.library.canvas.height === this.lastCanvasHeight;\n return this.polygonRaw && this.polygonRaw.length && i ? Promise.resolve(this.polygonRaw) : this.parseSvgPath(e).then(function (e) {\n return t.polygonData = e, t.polygonWidth = parseInt(t.polygonData.svg.getAttribute(\"width\")) * t.polygon.scale, t.polygonHeight = parseInt(t.polygonData.svg.getAttribute(\"height\")) * t.polygon.scale, t.polygonOffsetX = t.library.canvas.width / 2 - t.polygonWidth / 2, t.polygonOffsetY = t.library.canvas.height / 2 - t.polygonHeight / 2, t.polygonData.paths.length && (t.polygonPathLength = t.polygonData.paths[0].getTotalLength()), t.polygonRaw = [], t.polygonData.paths.forEach(function (e) {\n for (var i = e.pathSegList.numberOfItems, n = 0; n < i; n++) {\n var r = {\n x: 0,\n y: 0\n },\n a = e.pathSegList.getItem(n);\n\n switch (a.pathSegType) {\n case SVGPathSeg.PATHSEG_ARC_ABS:\n case SVGPathSeg.PATHSEG_CURVETO_CUBIC_ABS:\n case SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_ABS:\n case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_ABS:\n case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS:\n case SVGPathSeg.PATHSEG_LINETO_ABS:\n case SVGPathSeg.PATHSEG_MOVETO_ABS:\n r.x = a.x, r.y = a.y;\n\n case SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_ABS:\n r.x = a.x;\n break;\n\n case SVGPathSeg.PATHSEG_LINETO_VERTICAL_ABS:\n r.y = a.y;\n break;\n\n case SVGPathSeg.PATHSEG_ARC_REL:\n case SVGPathSeg.PATHSEG_CURVETO_CUBIC_REL:\n case SVGPathSeg.PATHSEG_CURVETO_CUBIC_SMOOTH_REL:\n case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_REL:\n case SVGPathSeg.PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL:\n case SVGPathSeg.PATHSEG_LINETO_REL:\n case SVGPathSeg.PATHSEG_MOVETO_REL:\n r.x = a.x, r.y = a.y;\n\n case SVGPathSeg.PATHSEG_LINETO_HORIZONTAL_REL:\n r.x = a.x;\n break;\n\n case SVGPathSeg.PATHSEG_LINETO_VERTICAL_REL:\n r.y = a.y;\n break;\n\n case SVGPathSeg.PATHSEG_UNKNOWN:\n case SVGPathSeg.PATHSEG_CLOSEPATH:\n default:\n continue;\n }\n\n t.polygonRaw.push([r.x * t.polygon.scale + t.polygonOffsetX, r.y * t.polygon.scale + t.polygonOffsetY]);\n }\n }), t.lastCanvasWidth = t.library.canvas.width, t.lastCanvasHeight = t.library.canvas.height, t.createPath2D(), t.polygonRaw;\n });\n }\n }, {\n key: \"parseSvgPath\",\n value: function value(e) {\n return this.polygonData && this.polygonData.paths && this.polygonData.paths.length && this.polygonData.svg ? Promise.resolve(this.polygonData) : this.library.imageManager.downloadImage(e).then(function (e) {\n return {\n paths: [e.xhr.responseXML.getElementsByTagName(\"path\")[0]],\n svg: e.xhr.responseXML.getElementsByTagName(\"svg\")[0]\n };\n });\n }\n }, {\n key: \"getRandomPointOnPolygonPath\",\n value: function value() {\n if (!this.initialized) throw new Error(\"No polygon data loaded.\");\n var e = n(this.polygonRaw[Math.floor(Math.random() * this.polygonRaw.length)], 2);\n return {\n x: e[0],\n y: e[1]\n };\n }\n }, {\n key: \"getRandomPointOnPolygonPathByLength\",\n value: function value() {\n if (!this.initialized) throw new Error(\"No polygon data loaded.\");\n var e = this.polygonData.paths[0].getPointAtLength(Math.floor(Math.random() * this.polygonPathLength) + 1);\n return {\n x: e.x * this.polygon.scale + this.polygonOffsetX,\n y: e.y * this.polygon.scale + this.polygonOffsetY\n };\n }\n }, {\n key: \"getRandomPointInsidePolygonPath\",\n value: function value() {\n if (!this.initialized) throw new Error(\"No polygon data loaded.\");\n var e = {\n x: Math.random() * this.library.canvas.width,\n y: Math.random() * this.library.canvas.height\n };\n return this.isPointInsidePolygon(e) ? e : this.getRandomPointInsidePolygonPath();\n }\n }, {\n key: \"getRandomPointOutsidePolygonPath\",\n value: function value() {\n if (!this.initialized) throw new Error(\"No polygon data loaded.\");\n var e = {\n x: Math.random() * this.library.canvas.width,\n y: Math.random() * this.library.canvas.height\n };\n return this.isPointInsidePolygon(e) ? this.getRandomPointOutsidePolygonPath() : e;\n }\n }, {\n key: \"isPointInsidePolygon\",\n value: function value(e) {\n if (this.path2DSupported && this.polygonPath) return this.library.canvas.ctx.isPointInPath(this.polygonPath, e.x, e.y);\n\n for (var t = !1, i = 0, n = this.polygonRaw.length - 1; i < this.polygonRaw.length; n = i++) {\n var r = this.polygonRaw[i][0],\n a = this.polygonRaw[i][1],\n o = this.polygonRaw[n][0],\n s = this.polygonRaw[n][1];\n a > e.y != s > e.y && e.x < (o - r) * (e.y - a) / (s - a) + r && (t = !t);\n }\n\n return t;\n }\n }, {\n key: \"getPoingOnPolygonPathByIndex\",\n value: function value(e) {\n if (!this.initialized) throw new Error(\"No polygon data loaded.\");\n var t = n(this.polygonRaw[e % this.polygonRaw.length], 2);\n return {\n x: t[0],\n y: t[1]\n };\n }\n }, {\n key: \"getEquidistantPoingOnPolygonPathByIndex\",\n value: function value(e) {\n if (!this.initialized) throw new Error(\"No polygon data loaded.\");\n var t = this.polygonData.paths[0].getPointAtLength(this.polygonPathLength / this.library.getParameter(function (e) {\n return e.particles.number.value;\n }) * e);\n return {\n x: t.x * this.polygon.scale + this.polygonOffsetX,\n y: t.y * this.polygon.scale + this.polygonOffsetY\n };\n }\n }, {\n key: \"drawPolygon\",\n value: function value() {\n var e = this.library.canvas.ctx;\n\n if (!this.path2DSupported) {\n if (!this.initialized) return;\n e.beginPath(), e.moveTo(this.polygonRaw[0][0], this.polygonRaw[0][1]), this.polygonRaw.forEach(function (t, i) {\n var r = n(t, 2),\n a = r[0],\n o = r[1];\n i > 0 && e.lineTo(a, o);\n }), e.closePath();\n }\n\n e.strokeStyle = this.polygon.draw.stroke.color, e.lineWidth = this.polygon.draw.stroke.width, this.polygonPath ? e.stroke(this.polygonPath) : e.stroke();\n }\n }, {\n key: \"createPath2D\",\n value: function value() {\n var e = this;\n this.path2DSupported && (this.polygonPath = new Path2D(), this.polygonPath.moveTo(this.polygonRaw[0][0], this.polygonRaw[0][1]), this.polygonRaw.forEach(function (t, i) {\n var r = n(t, 2),\n a = r[0],\n o = r[1];\n i > 0 && e.polygonPath.lineTo(a, o);\n }), this.polygonPath.closePath());\n }\n }]) && r(t.prototype, i), a && r(t, a), e;\n }();\n\n t.PolygonMask = a;\n }, function (e, t, i) {\n var n = i(38);\n\n e.exports = function (e, t) {\n return n(e, t);\n };\n }, function (e, t, i) {\n var n = i(39),\n r = i(10);\n\n e.exports = function e(t, i, a, o, s) {\n return t === i || (null == t || null == i || !r(t) && !r(i) ? t != t && i != i : n(t, i, a, o, e, s));\n };\n }, function (e, t, i) {\n var n = i(40),\n r = i(22),\n a = i(75),\n o = i(79),\n s = i(101),\n c = i(13),\n l = i(23),\n u = i(25),\n h = 1,\n y = \"[object Arguments]\",\n p = \"[object Array]\",\n v = \"[object Object]\",\n f = Object.prototype.hasOwnProperty;\n\n e.exports = function (e, t, i, d, b, g) {\n var m = c(e),\n _ = c(t),\n P = m ? p : s(e),\n x = _ ? p : s(t),\n w = (P = P == y ? v : P) == v,\n O = (x = x == y ? v : x) == v,\n M = P == x;\n\n if (M && l(e)) {\n if (!l(t)) return !1;\n m = !0, w = !1;\n }\n\n if (M && !w) return g || (g = new n()), m || u(e) ? r(e, t, i, d, b, g) : a(e, t, P, i, d, b, g);\n\n if (!(i & h)) {\n var E = w && f.call(e, \"__wrapped__\"),\n S = O && f.call(t, \"__wrapped__\");\n\n if (E || S) {\n var k = E ? e.value() : e,\n T = S ? t.value() : t;\n return g || (g = new n()), b(k, T, i, d, g);\n }\n }\n\n return !!M && (g || (g = new n()), o(e, t, i, d, b, g));\n };\n }, function (e, t, i) {\n var n = i(5),\n r = i(46),\n a = i(47),\n o = i(48),\n s = i(49),\n c = i(50);\n\n function l(e) {\n var t = this.__data__ = new n(e);\n this.size = t.size;\n }\n\n l.prototype.clear = r, l.prototype.delete = a, l.prototype.get = o, l.prototype.has = s, l.prototype.set = c, e.exports = l;\n }, function (e, t) {\n e.exports = function () {\n this.__data__ = [], this.size = 0;\n };\n }, function (e, t, i) {\n var n = i(6),\n r = Array.prototype.splice;\n\n e.exports = function (e) {\n var t = this.__data__,\n i = n(t, e);\n return !(i < 0 || (i == t.length - 1 ? t.pop() : r.call(t, i, 1), --this.size, 0));\n };\n }, function (e, t, i) {\n var n = i(6);\n\n e.exports = function (e) {\n var t = this.__data__,\n i = n(t, e);\n return i < 0 ? void 0 : t[i][1];\n };\n }, function (e, t, i) {\n var n = i(6);\n\n e.exports = function (e) {\n return n(this.__data__, e) > -1;\n };\n }, function (e, t, i) {\n var n = i(6);\n\n e.exports = function (e, t) {\n var i = this.__data__,\n r = n(i, e);\n return r < 0 ? (++this.size, i.push([e, t])) : i[r][1] = t, this;\n };\n }, function (e, t, i) {\n var n = i(5);\n\n e.exports = function () {\n this.__data__ = new n(), this.size = 0;\n };\n }, function (e, t) {\n e.exports = function (e) {\n var t = this.__data__,\n i = t.delete(e);\n return this.size = t.size, i;\n };\n }, function (e, t) {\n e.exports = function (e) {\n return this.__data__.get(e);\n };\n }, function (e, t) {\n e.exports = function (e) {\n return this.__data__.has(e);\n };\n }, function (e, t, i) {\n var n = i(5),\n r = i(11),\n a = i(21),\n o = 200;\n\n e.exports = function (e, t) {\n var i = this.__data__;\n\n if (i instanceof n) {\n var s = i.__data__;\n if (!r || s.length < o - 1) return s.push([e, t]), this.size = ++i.size, this;\n i = this.__data__ = new a(s);\n }\n\n return i.set(e, t), this.size = i.size, this;\n };\n }, function (e, t, i) {\n var n = i(17),\n r = i(55),\n a = i(19),\n o = i(20),\n s = /^\\[object .+?Constructor\\]$/,\n c = Function.prototype,\n l = Object.prototype,\n u = c.toString,\n h = l.hasOwnProperty,\n y = RegExp(\"^\" + u.call(h).replace(/[\\\\^$.*+?()[\\]{}|]/g, \"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, \"$1.*?\") + \"$\");\n\n e.exports = function (e) {\n return !(!a(e) || r(e)) && (n(e) ? y : s).test(o(e));\n };\n }, function (e, t) {\n var i;\n\n i = function () {\n return this;\n }();\n\n try {\n i = i || new Function(\"return this\")();\n } catch (e) {\n \"object\" == typeof window && (i = window);\n }\n\n e.exports = i;\n }, function (e, t, i) {\n var n = i(12),\n r = Object.prototype,\n a = r.hasOwnProperty,\n o = r.toString,\n s = n ? n.toStringTag : void 0;\n\n e.exports = function (e) {\n var t = a.call(e, s),\n i = e[s];\n\n try {\n e[s] = void 0;\n var n = !0;\n } catch (e) {}\n\n var r = o.call(e);\n return n && (t ? e[s] = i : delete e[s]), r;\n };\n }, function (e, t) {\n var i = Object.prototype.toString;\n\n e.exports = function (e) {\n return i.call(e);\n };\n }, function (e, t, i) {\n var n,\n r = i(56),\n a = (n = /[^.]+$/.exec(r && r.keys && r.keys.IE_PROTO || \"\")) ? \"Symbol(src)_1.\" + n : \"\";\n\n e.exports = function (e) {\n return !!a && a in e;\n };\n }, function (e, t, i) {\n var n = i(0)[\"__core-js_shared__\"];\n e.exports = n;\n }, function (e, t) {\n e.exports = function (e, t) {\n return null == e ? void 0 : e[t];\n };\n }, function (e, t, i) {\n var n = i(59),\n r = i(5),\n a = i(11);\n\n e.exports = function () {\n this.size = 0, this.__data__ = {\n hash: new n(),\n map: new (a || r)(),\n string: new n()\n };\n };\n }, function (e, t, i) {\n var n = i(60),\n r = i(61),\n a = i(62),\n o = i(63),\n s = i(64);\n\n function c(e) {\n var t = -1,\n i = null == e ? 0 : e.length;\n\n for (this.clear(); ++t < i;) {\n var n = e[t];\n this.set(n[0], n[1]);\n }\n }\n\n c.prototype.clear = n, c.prototype.delete = r, c.prototype.get = a, c.prototype.has = o, c.prototype.set = s, e.exports = c;\n }, function (e, t, i) {\n var n = i(8);\n\n e.exports = function () {\n this.__data__ = n ? n(null) : {}, this.size = 0;\n };\n }, function (e, t) {\n e.exports = function (e) {\n var t = this.has(e) && delete this.__data__[e];\n return this.size -= t ? 1 : 0, t;\n };\n }, function (e, t, i) {\n var n = i(8),\n r = \"__lodash_hash_undefined__\",\n a = Object.prototype.hasOwnProperty;\n\n e.exports = function (e) {\n var t = this.__data__;\n\n if (n) {\n var i = t[e];\n return i === r ? void 0 : i;\n }\n\n return a.call(t, e) ? t[e] : void 0;\n };\n }, function (e, t, i) {\n var n = i(8),\n r = Object.prototype.hasOwnProperty;\n\n e.exports = function (e) {\n var t = this.__data__;\n return n ? void 0 !== t[e] : r.call(t, e);\n };\n }, function (e, t, i) {\n var n = i(8),\n r = \"__lodash_hash_undefined__\";\n\n e.exports = function (e, t) {\n var i = this.__data__;\n return this.size += this.has(e) ? 0 : 1, i[e] = n && void 0 === t ? r : t, this;\n };\n }, function (e, t, i) {\n var n = i(9);\n\n e.exports = function (e) {\n var t = n(this, e).delete(e);\n return this.size -= t ? 1 : 0, t;\n };\n }, function (e, t) {\n e.exports = function (e) {\n var t = typeof e;\n return \"string\" == t || \"number\" == t || \"symbol\" == t || \"boolean\" == t ? \"__proto__\" !== e : null === e;\n };\n }, function (e, t, i) {\n var n = i(9);\n\n e.exports = function (e) {\n return n(this, e).get(e);\n };\n }, function (e, t, i) {\n var n = i(9);\n\n e.exports = function (e) {\n return n(this, e).has(e);\n };\n }, function (e, t, i) {\n var n = i(9);\n\n e.exports = function (e, t) {\n var i = n(this, e),\n r = i.size;\n return i.set(e, t), this.size += i.size == r ? 0 : 1, this;\n };\n }, function (e, t, i) {\n var n = i(21),\n r = i(71),\n a = i(72);\n\n function o(e) {\n var t = -1,\n i = null == e ? 0 : e.length;\n\n for (this.__data__ = new n(); ++t < i;) {\n this.add(e[t]);\n }\n }\n\n o.prototype.add = o.prototype.push = r, o.prototype.has = a, e.exports = o;\n }, function (e, t) {\n var i = \"__lodash_hash_undefined__\";\n\n e.exports = function (e) {\n return this.__data__.set(e, i), this;\n };\n }, function (e, t) {\n e.exports = function (e) {\n return this.__data__.has(e);\n };\n }, function (e, t) {\n e.exports = function (e, t) {\n for (var i = -1, n = null == e ? 0 : e.length; ++i < n;) {\n if (t(e[i], i, e)) return !0;\n }\n\n return !1;\n };\n }, function (e, t) {\n e.exports = function (e, t) {\n return e.has(t);\n };\n }, function (e, t, i) {\n var n = i(12),\n r = i(76),\n a = i(16),\n o = i(22),\n s = i(77),\n c = i(78),\n l = 1,\n u = 2,\n h = \"[object Boolean]\",\n y = \"[object Date]\",\n p = \"[object Error]\",\n v = \"[object Map]\",\n f = \"[object Number]\",\n d = \"[object RegExp]\",\n b = \"[object Set]\",\n g = \"[object String]\",\n m = \"[object Symbol]\",\n _ = \"[object ArrayBuffer]\",\n P = \"[object DataView]\",\n x = n ? n.prototype : void 0,\n w = x ? x.valueOf : void 0;\n\n e.exports = function (e, t, i, n, x, O, M) {\n switch (i) {\n case P:\n if (e.byteLength != t.byteLength || e.byteOffset != t.byteOffset) return !1;\n e = e.buffer, t = t.buffer;\n\n case _:\n return !(e.byteLength != t.byteLength || !O(new r(e), new r(t)));\n\n case h:\n case y:\n case f:\n return a(+e, +t);\n\n case p:\n return e.name == t.name && e.message == t.message;\n\n case d:\n case g:\n return e == t + \"\";\n\n case v:\n var E = s;\n\n case b:\n var S = n & l;\n if (E || (E = c), e.size != t.size && !S) return !1;\n var k = M.get(e);\n if (k) return k == t;\n n |= u, M.set(e, t);\n var T = o(E(e), E(t), n, x, O, M);\n return M.delete(e), T;\n\n case m:\n if (w) return w.call(e) == w.call(t);\n }\n\n return !1;\n };\n }, function (e, t, i) {\n var n = i(0).Uint8Array;\n e.exports = n;\n }, function (e, t) {\n e.exports = function (e) {\n var t = -1,\n i = Array(e.size);\n return e.forEach(function (e, n) {\n i[++t] = [n, e];\n }), i;\n };\n }, function (e, t) {\n e.exports = function (e) {\n var t = -1,\n i = Array(e.size);\n return e.forEach(function (e) {\n i[++t] = e;\n }), i;\n };\n }, function (e, t, i) {\n var n = i(80),\n r = 1,\n a = Object.prototype.hasOwnProperty;\n\n e.exports = function (e, t, i, o, s, c) {\n var l = i & r,\n u = n(e),\n h = u.length;\n if (h != n(t).length && !l) return !1;\n\n for (var y = h; y--;) {\n var p = u[y];\n if (!(l ? p in t : a.call(t, p))) return !1;\n }\n\n var v = c.get(e);\n if (v && c.get(t)) return v == t;\n var f = !0;\n c.set(e, t), c.set(t, e);\n\n for (var d = l; ++y < h;) {\n var b = e[p = u[y]],\n g = t[p];\n if (o) var m = l ? o(g, b, p, t, e, c) : o(b, g, p, e, t, c);\n\n if (!(void 0 === m ? b === g || s(b, g, i, o, c) : m)) {\n f = !1;\n break;\n }\n\n d || (d = \"constructor\" == p);\n }\n\n if (f && !d) {\n var _ = e.constructor,\n P = t.constructor;\n _ != P && \"constructor\" in e && \"constructor\" in t && !(\"function\" == typeof _ && _ instanceof _ && \"function\" == typeof P && P instanceof P) && (f = !1);\n }\n\n return c.delete(e), c.delete(t), f;\n };\n }, function (e, t, i) {\n var n = i(81),\n r = i(83),\n a = i(86);\n\n e.exports = function (e) {\n return n(e, a, r);\n };\n }, function (e, t, i) {\n var n = i(82),\n r = i(13);\n\n e.exports = function (e, t, i) {\n var a = t(e);\n return r(e) ? a : n(a, i(e));\n };\n }, function (e, t) {\n e.exports = function (e, t) {\n for (var i = -1, n = t.length, r = e.length; ++i < n;) {\n e[r + i] = t[i];\n }\n\n return e;\n };\n }, function (e, t, i) {\n var n = i(84),\n r = i(85),\n a = Object.prototype.propertyIsEnumerable,\n o = Object.getOwnPropertySymbols,\n s = o ? function (e) {\n return null == e ? [] : (e = Object(e), n(o(e), function (t) {\n return a.call(e, t);\n }));\n } : r;\n e.exports = s;\n }, function (e, t) {\n e.exports = function (e, t) {\n for (var i = -1, n = null == e ? 0 : e.length, r = 0, a = []; ++i < n;) {\n var o = e[i];\n t(o, i, e) && (a[r++] = o);\n }\n\n return a;\n };\n }, function (e, t) {\n e.exports = function () {\n return [];\n };\n }, function (e, t, i) {\n var n = i(87),\n r = i(96),\n a = i(100);\n\n e.exports = function (e) {\n return a(e) ? n(e) : r(e);\n };\n }, function (e, t, i) {\n var n = i(88),\n r = i(89),\n a = i(13),\n o = i(23),\n s = i(92),\n c = i(25),\n l = Object.prototype.hasOwnProperty;\n\n e.exports = function (e, t) {\n var i = a(e),\n u = !i && r(e),\n h = !i && !u && o(e),\n y = !i && !u && !h && c(e),\n p = i || u || h || y,\n v = p ? n(e.length, String) : [],\n f = v.length;\n\n for (var d in e) {\n !t && !l.call(e, d) || p && (\"length\" == d || h && (\"offset\" == d || \"parent\" == d) || y && (\"buffer\" == d || \"byteLength\" == d || \"byteOffset\" == d) || s(d, f)) || v.push(d);\n }\n\n return v;\n };\n }, function (e, t) {\n e.exports = function (e, t) {\n for (var i = -1, n = Array(e); ++i < e;) {\n n[i] = t(i);\n }\n\n return n;\n };\n }, function (e, t, i) {\n var n = i(90),\n r = i(10),\n a = Object.prototype,\n o = a.hasOwnProperty,\n s = a.propertyIsEnumerable,\n c = n(function () {\n return arguments;\n }()) ? n : function (e) {\n return r(e) && o.call(e, \"callee\") && !s.call(e, \"callee\");\n };\n e.exports = c;\n }, function (e, t, i) {\n var n = i(7),\n r = i(10),\n a = \"[object Arguments]\";\n\n e.exports = function (e) {\n return r(e) && n(e) == a;\n };\n }, function (e, t) {\n e.exports = function () {\n return !1;\n };\n }, function (e, t) {\n var i = 9007199254740991,\n n = /^(?:0|[1-9]\\d*)$/;\n\n e.exports = function (e, t) {\n var r = typeof e;\n return !!(t = null == t ? i : t) && (\"number\" == r || \"symbol\" != r && n.test(e)) && e > -1 && e % 1 == 0 && e < t;\n };\n }, function (e, t, i) {\n var n = i(7),\n r = i(26),\n a = i(10),\n o = {};\n o[\"[object Float32Array]\"] = o[\"[object Float64Array]\"] = o[\"[object Int8Array]\"] = o[\"[object Int16Array]\"] = o[\"[object Int32Array]\"] = o[\"[object Uint8Array]\"] = o[\"[object Uint8ClampedArray]\"] = o[\"[object Uint16Array]\"] = o[\"[object Uint32Array]\"] = !0, o[\"[object Arguments]\"] = o[\"[object Array]\"] = o[\"[object ArrayBuffer]\"] = o[\"[object Boolean]\"] = o[\"[object DataView]\"] = o[\"[object Date]\"] = o[\"[object Error]\"] = o[\"[object Function]\"] = o[\"[object Map]\"] = o[\"[object Number]\"] = o[\"[object Object]\"] = o[\"[object RegExp]\"] = o[\"[object Set]\"] = o[\"[object String]\"] = o[\"[object WeakMap]\"] = !1, e.exports = function (e) {\n return a(e) && r(e.length) && !!o[n(e)];\n };\n }, function (e, t) {\n e.exports = function (e) {\n return function (t) {\n return e(t);\n };\n };\n }, function (e, t, i) {\n (function (e) {\n var n = i(18),\n r = t && !t.nodeType && t,\n a = r && \"object\" == typeof e && e && !e.nodeType && e,\n o = a && a.exports === r && n.process,\n s = function () {\n try {\n var e = a && a.require && a.require(\"util\").types;\n\n return e || o && o.binding && o.binding(\"util\");\n } catch (e) {}\n }();\n\n e.exports = s;\n }).call(this, i(24)(e));\n }, function (e, t, i) {\n var n = i(97),\n r = i(98),\n a = Object.prototype.hasOwnProperty;\n\n e.exports = function (e) {\n if (!n(e)) return r(e);\n var t = [];\n\n for (var i in Object(e)) {\n a.call(e, i) && \"constructor\" != i && t.push(i);\n }\n\n return t;\n };\n }, function (e, t) {\n var i = Object.prototype;\n\n e.exports = function (e) {\n var t = e && e.constructor;\n return e === (\"function\" == typeof t && t.prototype || i);\n };\n }, function (e, t, i) {\n var n = i(99)(Object.keys, Object);\n e.exports = n;\n }, function (e, t) {\n e.exports = function (e, t) {\n return function (i) {\n return e(t(i));\n };\n };\n }, function (e, t, i) {\n var n = i(17),\n r = i(26);\n\n e.exports = function (e) {\n return null != e && r(e.length) && !n(e);\n };\n }, function (e, t, i) {\n var n = i(102),\n r = i(11),\n a = i(103),\n o = i(104),\n s = i(105),\n c = i(7),\n l = i(20),\n u = l(n),\n h = l(r),\n y = l(a),\n p = l(o),\n v = l(s),\n f = c;\n (n && \"[object DataView]\" != f(new n(new ArrayBuffer(1))) || r && \"[object Map]\" != f(new r()) || a && \"[object Promise]\" != f(a.resolve()) || o && \"[object Set]\" != f(new o()) || s && \"[object WeakMap]\" != f(new s())) && (f = function f(e) {\n var t = c(e),\n i = \"[object Object]\" == t ? e.constructor : void 0,\n n = i ? l(i) : \"\";\n if (n) switch (n) {\n case u:\n return \"[object DataView]\";\n\n case h:\n return \"[object Map]\";\n\n case y:\n return \"[object Promise]\";\n\n case p:\n return \"[object Set]\";\n\n case v:\n return \"[object WeakMap]\";\n }\n return t;\n }), e.exports = f;\n }, function (e, t, i) {\n var n = i(3)(i(0), \"DataView\");\n e.exports = n;\n }, function (e, t, i) {\n var n = i(3)(i(0), \"Promise\");\n e.exports = n;\n }, function (e, t, i) {\n var n = i(3)(i(0), \"Set\");\n e.exports = n;\n }, function (e, t, i) {\n var n = i(3)(i(0), \"WeakMap\");\n e.exports = n;\n }]);\n});","var assignValue = require('./_assignValue'),\n copyObject = require('./_copyObject'),\n createAssigner = require('./_createAssigner'),\n isArrayLike = require('./isArrayLike'),\n isPrototype = require('./_isPrototype'),\n keys = require('./keys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\nvar assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n});\n\nmodule.exports = assign;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends2 = require('babel-runtime/helpers/extends');\n\nvar _extends3 = _interopRequireDefault(_extends2);\n\nvar _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');\n\nvar _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _InkTabBarNode = require('./InkTabBarNode');\n\nvar _InkTabBarNode2 = _interopRequireDefault(_InkTabBarNode);\n\nvar _TabBarTabsNode = require('./TabBarTabsNode');\n\nvar _TabBarTabsNode2 = _interopRequireDefault(_TabBarTabsNode);\n\nvar _TabBarRootNode = require('./TabBarRootNode');\n\nvar _TabBarRootNode2 = _interopRequireDefault(_TabBarRootNode);\n\nvar _ScrollableTabBarNode = require('./ScrollableTabBarNode');\n\nvar _ScrollableTabBarNode2 = _interopRequireDefault(_ScrollableTabBarNode);\n\nvar _SaveRef = require('./SaveRef');\n\nvar _SaveRef2 = _interopRequireDefault(_SaveRef);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n}\n\nvar ScrollableInkTabBar = function (_React$Component) {\n (0, _inherits3['default'])(ScrollableInkTabBar, _React$Component);\n\n function ScrollableInkTabBar() {\n (0, _classCallCheck3['default'])(this, ScrollableInkTabBar);\n return (0, _possibleConstructorReturn3['default'])(this, (ScrollableInkTabBar.__proto__ || Object.getPrototypeOf(ScrollableInkTabBar)).apply(this, arguments));\n }\n\n (0, _createClass3['default'])(ScrollableInkTabBar, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n renderTabBarNode = _props.children,\n restProps = (0, _objectWithoutProperties3['default'])(_props, ['children']);\n return _react2['default'].createElement(_SaveRef2['default'], null, function (saveRef, getRef) {\n return _react2['default'].createElement(_TabBarRootNode2['default'], (0, _extends3['default'])({\n saveRef: saveRef\n }, restProps), _react2['default'].createElement(_ScrollableTabBarNode2['default'], (0, _extends3['default'])({\n saveRef: saveRef,\n getRef: getRef\n }, restProps), _react2['default'].createElement(_TabBarTabsNode2['default'], (0, _extends3['default'])({\n saveRef: saveRef,\n renderTabBarNode: renderTabBarNode\n }, restProps)), _react2['default'].createElement(_InkTabBarNode2['default'], (0, _extends3['default'])({\n saveRef: saveRef,\n getRef: getRef\n }, restProps))));\n });\n }\n }]);\n return ScrollableInkTabBar;\n}(_react2['default'].Component);\n/* eslint-disable react/prefer-stateless-function */\n\n\nexports['default'] = ScrollableInkTabBar;\nScrollableInkTabBar.propTypes = {\n children: _propTypes2['default'].func\n};\nmodule.exports = exports['default'];","var baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.menu = void 0;\nvar menu = {\n \"viewBox\": \"0 0 24 24\",\n \"children\": [{\n \"name\": \"line\",\n \"attribs\": {\n \"x1\": \"3\",\n \"y1\": \"12\",\n \"x2\": \"21\",\n \"y2\": \"12\"\n },\n \"children\": []\n }, {\n \"name\": \"line\",\n \"attribs\": {\n \"x1\": \"3\",\n \"y1\": \"6\",\n \"x2\": \"21\",\n \"y2\": \"6\"\n },\n \"children\": []\n }, {\n \"name\": \"line\",\n \"attribs\": {\n \"x1\": \"3\",\n \"y1\": \"18\",\n \"x2\": \"21\",\n \"y2\": \"18\"\n },\n \"children\": []\n }],\n \"attribs\": {\n \"fill\": \"none\",\n \"stroke\": \"currentColor\",\n \"stroke-width\": \"2\",\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\"\n }\n};\nexports.menu = menu;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _defineProperty2 = require('babel-runtime/helpers/defineProperty');\n\nvar _defineProperty3 = _interopRequireDefault(_defineProperty2);\n\nvar _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');\n\nvar _classCallCheck3 = _interopRequireDefault(_classCallCheck2);\n\nvar _createClass2 = require('babel-runtime/helpers/createClass');\n\nvar _createClass3 = _interopRequireDefault(_createClass2);\n\nvar _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');\n\nvar _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);\n\nvar _inherits2 = require('babel-runtime/helpers/inherits');\n\nvar _inherits3 = _interopRequireDefault(_inherits2);\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _classnames2 = require('classnames');\n\nvar _classnames3 = _interopRequireDefault(_classnames2);\n\nvar _utils = require('./utils');\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n}\n\nfunction _componentDidUpdate(component, init) {\n var _component$props = component.props,\n styles = _component$props.styles,\n panels = _component$props.panels,\n activeKey = _component$props.activeKey,\n direction = _component$props.direction;\n var rootNode = component.props.getRef('root');\n var wrapNode = component.props.getRef('nav') || rootNode;\n var inkBarNode = component.props.getRef('inkBar');\n var activeTab = component.props.getRef('activeTab');\n var inkBarNodeStyle = inkBarNode.style;\n var tabBarPosition = component.props.tabBarPosition;\n var activeIndex = (0, _utils.getActiveIndex)(panels, activeKey);\n\n if (init) {\n // prevent mount animation\n inkBarNodeStyle.display = 'none';\n }\n\n if (activeTab) {\n var tabNode = activeTab;\n var transformSupported = (0, _utils.isTransform3dSupported)(inkBarNodeStyle); // Reset current style\n\n (0, _utils.setTransform)(inkBarNodeStyle, '');\n inkBarNodeStyle.width = '';\n inkBarNodeStyle.height = '';\n inkBarNodeStyle.left = '';\n inkBarNodeStyle.top = '';\n inkBarNodeStyle.bottom = '';\n inkBarNodeStyle.right = '';\n\n if (tabBarPosition === 'top' || tabBarPosition === 'bottom') {\n var left = (0, _utils.getLeft)(tabNode, wrapNode);\n var width = tabNode.offsetWidth; // If tabNode'width width equal to wrapNode'width when tabBarPosition is top or bottom\n // It means no css working, then ink bar should not have width until css is loaded\n // Fix https://github.com/ant-design/ant-design/issues/7564\n\n if (width === rootNode.offsetWidth) {\n width = 0;\n } else if (styles.inkBar && styles.inkBar.width !== undefined) {\n width = parseFloat(styles.inkBar.width, 10);\n\n if (width) {\n left += (tabNode.offsetWidth - width) / 2;\n }\n }\n\n if (direction === 'rtl') {\n left = (0, _utils.getStyle)(tabNode, 'margin-left') - left;\n } // use 3d gpu to optimize render\n\n\n if (transformSupported) {\n (0, _utils.setTransform)(inkBarNodeStyle, 'translate3d(' + left + 'px,0,0)');\n } else {\n inkBarNodeStyle.left = left + 'px';\n }\n\n inkBarNodeStyle.width = width + 'px';\n } else {\n var top = (0, _utils.getTop)(tabNode, wrapNode, true);\n var height = tabNode.offsetHeight;\n\n if (styles.inkBar && styles.inkBar.height !== undefined) {\n height = parseFloat(styles.inkBar.height, 10);\n\n if (height) {\n top += (tabNode.offsetHeight - height) / 2;\n }\n }\n\n if (transformSupported) {\n (0, _utils.setTransform)(inkBarNodeStyle, 'translate3d(0,' + top + 'px,0)');\n inkBarNodeStyle.top = '0';\n } else {\n inkBarNodeStyle.top = top + 'px';\n }\n\n inkBarNodeStyle.height = height + 'px';\n }\n }\n\n inkBarNodeStyle.display = activeIndex !== -1 ? 'block' : 'none';\n}\n\nvar InkTabBarNode = function (_React$Component) {\n (0, _inherits3['default'])(InkTabBarNode, _React$Component);\n\n function InkTabBarNode() {\n (0, _classCallCheck3['default'])(this, InkTabBarNode);\n return (0, _possibleConstructorReturn3['default'])(this, (InkTabBarNode.__proto__ || Object.getPrototypeOf(InkTabBarNode)).apply(this, arguments));\n }\n\n (0, _createClass3['default'])(InkTabBarNode, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var _this2 = this; // ref https://github.com/ant-design/ant-design/issues/8678\n // ref https://github.com/react-component/tabs/issues/135\n // InkTabBarNode need parent/root ref for calculating position\n // since parent componentDidMount triggered after child componentDidMount\n // we're doing a quick fix here to use setTimeout to calculate position\n // after parent/root component mounted\n\n\n this.timeout = setTimeout(function () {\n _componentDidUpdate(_this2, true);\n }, 0);\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n _componentDidUpdate(this);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n clearTimeout(this.timeout);\n }\n }, {\n key: 'render',\n value: function render() {\n var _classnames;\n\n var _props = this.props,\n prefixCls = _props.prefixCls,\n styles = _props.styles,\n inkBarAnimated = _props.inkBarAnimated;\n var className = prefixCls + '-ink-bar';\n var classes = (0, _classnames3['default'])((_classnames = {}, (0, _defineProperty3['default'])(_classnames, className, true), (0, _defineProperty3['default'])(_classnames, inkBarAnimated ? className + '-animated' : className + '-no-animated', true), _classnames));\n return _react2['default'].createElement('div', {\n style: styles.inkBar,\n className: classes,\n key: 'inkBar',\n ref: this.props.saveRef('inkBar')\n });\n }\n }]);\n return InkTabBarNode;\n}(_react2['default'].Component);\n\nexports['default'] = InkTabBarNode;\nInkTabBarNode.propTypes = {\n prefixCls: _propTypes2['default'].string,\n styles: _propTypes2['default'].object,\n inkBarAnimated: _propTypes2['default'].bool,\n saveRef: _propTypes2['default'].func,\n direction: _propTypes2['default'].string\n};\nInkTabBarNode.defaultProps = {\n prefixCls: '',\n inkBarAnimated: true,\n styles: {},\n saveRef: function saveRef() {}\n};\nmodule.exports = exports['default'];","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","require('./_wks-define')('observable');\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\nfunction clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = clone;\n"],"sourceRoot":""}