{"version":3,"file":"js/rich-text.bundle.min.js","mappings":"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","sources":["webpack://sns/./client/src/components/slideshow/simple-arrow-left.svg","webpack://sns/./client/src/components/slideshow/simple-arrow-right.svg","webpack://sns/../sciencenews/node_modules/fastdom/fastdom.js","webpack://sns/../sciencenews/node_modules/memize/index.js","webpack://sns/../sciencenews/node_modules/sprintf-js/src/sprintf.js","webpack://sns/webpack/bootstrap","webpack://sns/webpack/runtime/compat get default export","webpack://sns/webpack/runtime/define property getters","webpack://sns/webpack/runtime/hasOwnProperty shorthand","webpack://sns/webpack/runtime/publicPath","webpack://sns/../sciencenews/node_modules/js-component-framework/es/domContentLoaded.js","webpack://sns/../sciencenews/node_modules/js-component-framework/es/componentProvider.js","webpack://sns/../sciencenews/node_modules/js-component-framework/es/componentLoader.js","webpack://sns/../sciencenews/node_modules/swiper/shared/ssr-window.esm.mjs","webpack://sns/../sciencenews/node_modules/swiper/shared/utils.mjs","webpack://sns/../sciencenews/node_modules/swiper/shared/swiper-core.mjs","webpack://sns/../sciencenews/node_modules/swiper/shared/create-element-if-not-defined.mjs","webpack://sns/../sciencenews/node_modules/swiper/modules/navigation.mjs","webpack://sns/../sciencenews/node_modules/swiper/shared/classes-to-selector.mjs","webpack://sns/../sciencenews/node_modules/swiper/modules/pagination.mjs","webpack://sns/../sciencenews/node_modules/swiper/modules/a11y.mjs","webpack://sns/../sciencenews/node_modules/@tannin/postfix/index.js","webpack://sns/../sciencenews/node_modules/@wordpress/i18n/build-module/sprintf.js","webpack://sns/../sciencenews/node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://sns/../sciencenews/node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://sns/../sciencenews/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://sns/../sciencenews/node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://sns/../sciencenews/node_modules/@tannin/evaluate/index.js","webpack://sns/../sciencenews/node_modules/tannin/index.js","webpack://sns/../sciencenews/node_modules/@wordpress/i18n/build-module/create-i18n.js","webpack://sns/../sciencenews/node_modules/@tannin/plural-forms/index.js","webpack://sns/../sciencenews/node_modules/@tannin/compile/index.js","webpack://sns/../sciencenews/node_modules/@wordpress/hooks/build-module/validateNamespace.js","webpack://sns/../sciencenews/node_modules/@wordpress/hooks/build-module/validateHookName.js","webpack://sns/../sciencenews/node_modules/@wordpress/hooks/build-module/createAddHook.js","webpack://sns/../sciencenews/node_modules/@wordpress/hooks/build-module/createRemoveHook.js","webpack://sns/../sciencenews/node_modules/@wordpress/hooks/build-module/createHasHook.js","webpack://sns/../sciencenews/node_modules/@wordpress/hooks/build-module/createRunHook.js","webpack://sns/../sciencenews/node_modules/@wordpress/hooks/build-module/createCurrentHook.js","webpack://sns/../sciencenews/node_modules/@wordpress/hooks/build-module/createDoingHook.js","webpack://sns/../sciencenews/node_modules/@wordpress/hooks/build-module/createDidHook.js","webpack://sns/../sciencenews/node_modules/@wordpress/hooks/build-module/index.js","webpack://sns/../sciencenews/node_modules/@wordpress/hooks/build-module/createHooks.js","webpack://sns/../sciencenews/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://sns/../sciencenews/node_modules/@wordpress/i18n/build-module/default-i18n.js","webpack://sns/../sciencenews/client/src/components/slideshow/index.js","webpack://sns/../sciencenews/client/src/js/utils/getFormattedClassnames.js","webpack://sns/../sciencenews/client/src/components/carousel/carousel.js","webpack://sns/../sciencenews/client/src/js/a11y/lib/uniqueId.js","webpack://sns/../sciencenews/client/src/components/slideshow/slideshow.module.scss?45d8","webpack://sns/./client/src/components/slideshow/index.js","webpack://sns/./client/src/components/slideshow/slideshow.module.scss?e3cf","webpack://sns/../sciencenews/client/src/components/video-embed/index.js","webpack://sns/../sciencenews/client/src/components/video-embed/video-embed.js"],"sourcesContent":["module.exports = \"<svg viewBox=\\\"0 0 18 26\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"#176cab\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"matrix(-1 0 0 1 17 1)\\\"><path d=\\\"m8 24 7.7541746-11.1443478c.3277672-.5237546.3277672-1.1885932 0-1.7123479l-7.7541746-11.1433043\\\"></path><path d=\\\"m.5934462 24c-.56309659 0-.7606923-.386087-.43921534-.8566957l7.02130253-10.2876521c.3214996-.5237546.3214996-1.1885932 0-1.7123479l-7.02130253-10.28973908c-.32147696-.4706087-.12388125-.85356522.43921534-.85356522h1.53571796c.63182477.03655095 1.21772241.34824077 1.60840861.85565217l7.02130253 10.28765213c.3214996.5237547.3214996 1.1885933 0 1.7123479l-7.02130253 10.2855652c-.39018519.5084797-.97611774.8213285-1.60840861.8587826z\\\"></path></g></svg>\"","module.exports = \"<svg viewBox=\\\"0 0 18 26\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g fill=\\\"none\\\" fill-rule=\\\"evenodd\\\" stroke=\\\"#176cab\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\" transform=\\\"translate(1 1)\\\"><path d=\\\"m8 24 7.7541746-11.1443478c.3277672-.5237546.3277672-1.1885932 0-1.7123479l-7.7541746-11.1433043\\\"></path><path d=\\\"m.5934462 24c-.56309659 0-.7606923-.386087-.43921534-.8566957l7.02130253-10.2876521c.3214996-.5237546.3214996-1.1885932 0-1.7123479l-7.02130253-10.28973908c-.32147696-.4706087-.12388125-.85356522.43921534-.85356522h1.53571796c.63182477.03655095 1.21772241.34824077 1.60840861.85565217l7.02130253 10.28765213c.3214996.5237547.3214996 1.1885933 0 1.7123479l-7.02130253 10.2855652c-.39018519.5084797-.97611774.8213285-1.60840861.8587826z\\\"></path></g></svg>\"","!(function(win) {\n\n/**\n * FastDom\n *\n * Eliminates layout thrashing\n * by batching DOM read/write\n * interactions.\n *\n * @author Wilson Page <wilsonpage@me.com>\n * @author Kornel Lesinski <kornel.lesinski@ft.com>\n */\n\n'use strict';\n\n/**\n * Mini logger\n *\n * @return {Function}\n */\nvar debug = 0 ? console.log.bind(console, '[fastdom]') : function() {};\n\n/**\n * Normalized rAF\n *\n * @type {Function}\n */\nvar raf = win.requestAnimationFrame\n || win.webkitRequestAnimationFrame\n || win.mozRequestAnimationFrame\n || win.msRequestAnimationFrame\n || function(cb) { return setTimeout(cb, 16); };\n\n/**\n * Initialize a `FastDom`.\n *\n * @constructor\n */\nfunction FastDom() {\n var self = this;\n self.reads = [];\n self.writes = [];\n self.raf = raf.bind(win); // test hook\n debug('initialized', self);\n}\n\nFastDom.prototype = {\n constructor: FastDom,\n\n /**\n * We run this inside a try catch\n * so that if any jobs error, we\n * are able to recover and continue\n * to flush the batch until it's empty.\n *\n * @param {Array} tasks\n */\n runTasks: function(tasks) {\n debug('run tasks');\n var task; while (task = tasks.shift()) task();\n },\n\n /**\n * Adds a job to the read batch and\n * schedules a new frame if need be.\n *\n * @param {Function} fn\n * @param {Object} ctx the context to be bound to `fn` (optional).\n * @public\n */\n measure: function(fn, ctx) {\n debug('measure');\n var task = !ctx ? fn : fn.bind(ctx);\n this.reads.push(task);\n scheduleFlush(this);\n return task;\n },\n\n /**\n * Adds a job to the\n * write batch and schedules\n * a new frame if need be.\n *\n * @param {Function} fn\n * @param {Object} ctx the context to be bound to `fn` (optional).\n * @public\n */\n mutate: function(fn, ctx) {\n debug('mutate');\n var task = !ctx ? fn : fn.bind(ctx);\n this.writes.push(task);\n scheduleFlush(this);\n return task;\n },\n\n /**\n * Clears a scheduled 'read' or 'write' task.\n *\n * @param {Object} task\n * @return {Boolean} success\n * @public\n */\n clear: function(task) {\n debug('clear', task);\n return remove(this.reads, task) || remove(this.writes, task);\n },\n\n /**\n * Extend this FastDom with some\n * custom functionality.\n *\n * Because fastdom must *always* be a\n * singleton, we're actually extending\n * the fastdom instance. This means tasks\n * scheduled by an extension still enter\n * fastdom's global task queue.\n *\n * The 'super' instance can be accessed\n * from `this.fastdom`.\n *\n * @example\n *\n * var myFastdom = fastdom.extend({\n * initialize: function() {\n * // runs on creation\n * },\n *\n * // override a method\n * measure: function(fn) {\n * // do extra stuff ...\n *\n * // then call the original\n * return this.fastdom.measure(fn);\n * },\n *\n * ...\n * });\n *\n * @param {Object} props properties to mixin\n * @return {FastDom}\n */\n extend: function(props) {\n debug('extend', props);\n if (typeof props != 'object') throw new Error('expected object');\n\n var child = Object.create(this);\n mixin(child, props);\n child.fastdom = this;\n\n // run optional creation hook\n if (child.initialize) child.initialize();\n\n return child;\n },\n\n // override this with a function\n // to prevent Errors in console\n // when tasks throw\n catch: null\n};\n\n/**\n * Schedules a new read/write\n * batch if one isn't pending.\n *\n * @private\n */\nfunction scheduleFlush(fastdom) {\n if (!fastdom.scheduled) {\n fastdom.scheduled = true;\n fastdom.raf(flush.bind(null, fastdom));\n debug('flush scheduled');\n }\n}\n\n/**\n * Runs queued `read` and `write` tasks.\n *\n * Errors are caught and thrown by default.\n * If a `.catch` function has been defined\n * it is called instead.\n *\n * @private\n */\nfunction flush(fastdom) {\n debug('flush');\n\n var writes = fastdom.writes;\n var reads = fastdom.reads;\n var error;\n\n try {\n debug('flushing reads', reads.length);\n fastdom.runTasks(reads);\n debug('flushing writes', writes.length);\n fastdom.runTasks(writes);\n } catch (e) { error = e; }\n\n fastdom.scheduled = false;\n\n // If the batch errored we may still have tasks queued\n if (reads.length || writes.length) scheduleFlush(fastdom);\n\n if (error) {\n debug('task errored', error.message);\n if (fastdom.catch) fastdom.catch(error);\n else throw error;\n }\n}\n\n/**\n * Remove an item from an Array.\n *\n * @param {Array} array\n * @param {*} item\n * @return {Boolean}\n */\nfunction remove(array, item) {\n var index = array.indexOf(item);\n return !!~index && !!array.splice(index, 1);\n}\n\n/**\n * Mixin own properties of source\n * object into the target.\n *\n * @param {Object} target\n * @param {Object} source\n */\nfunction mixin(target, source) {\n for (var key in source) {\n if (source.hasOwnProperty(key)) target[key] = source[key];\n }\n}\n\n// There should never be more than\n// one instance of `FastDom` in an app\nvar exports = win.fastdom = (win.fastdom || new FastDom()); // jshint ignore:line\n\n// Expose to CJS & AMD\nif ((typeof define) == 'function') define(function() { return exports; });\nelse if ((typeof module) == 'object') module.exports = exports;\n\n})( typeof window !== 'undefined' ? window : this);\n","/**\n * Memize options object.\n *\n * @typedef MemizeOptions\n *\n * @property {number} [maxSize] Maximum size of the cache.\n */\n\n/**\n * Internal cache entry.\n *\n * @typedef MemizeCacheNode\n *\n * @property {?MemizeCacheNode|undefined} [prev] Previous node.\n * @property {?MemizeCacheNode|undefined} [next] Next node.\n * @property {Array<*>} args Function arguments for cache\n * entry.\n * @property {*} val Function result.\n */\n\n/**\n * Properties of the enhanced function for controlling cache.\n *\n * @typedef MemizeMemoizedFunction\n *\n * @property {()=>void} clear Clear the cache.\n */\n\n/**\n * Accepts a function to be memoized, and returns a new memoized function, with\n * optional options.\n *\n * @template {Function} F\n *\n * @param {F} fn Function to memoize.\n * @param {MemizeOptions} [options] Options object.\n *\n * @return {F & MemizeMemoizedFunction} Memoized function.\n */\nfunction memize( fn, options ) {\n\tvar size = 0;\n\n\t/** @type {?MemizeCacheNode|undefined} */\n\tvar head;\n\n\t/** @type {?MemizeCacheNode|undefined} */\n\tvar tail;\n\n\toptions = options || {};\n\n\tfunction memoized( /* ...args */ ) {\n\t\tvar node = head,\n\t\t\tlen = arguments.length,\n\t\t\targs, i;\n\n\t\tsearchCache: while ( node ) {\n\t\t\t// Perform a shallow equality test to confirm that whether the node\n\t\t\t// under test is a candidate for the arguments passed. Two arrays\n\t\t\t// are shallowly equal if their length matches and each entry is\n\t\t\t// strictly equal between the two sets. Avoid abstracting to a\n\t\t\t// function which could incur an arguments leaking deoptimization.\n\n\t\t\t// Check whether node arguments match arguments length\n\t\t\tif ( node.args.length !== arguments.length ) {\n\t\t\t\tnode = node.next;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Check whether node arguments match arguments values\n\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\tif ( node.args[ i ] !== arguments[ i ] ) {\n\t\t\t\t\tnode = node.next;\n\t\t\t\t\tcontinue searchCache;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// At this point we can assume we've found a match\n\n\t\t\t// Surface matched node to head if not already\n\t\t\tif ( node !== head ) {\n\t\t\t\t// As tail, shift to previous. Must only shift if not also\n\t\t\t\t// head, since if both head and tail, there is no previous.\n\t\t\t\tif ( node === tail ) {\n\t\t\t\t\ttail = node.prev;\n\t\t\t\t}\n\n\t\t\t\t// Adjust siblings to point to each other. If node was tail,\n\t\t\t\t// this also handles new tail's empty `next` assignment.\n\t\t\t\t/** @type {MemizeCacheNode} */ ( node.prev ).next = node.next;\n\t\t\t\tif ( node.next ) {\n\t\t\t\t\tnode.next.prev = node.prev;\n\t\t\t\t}\n\n\t\t\t\tnode.next = head;\n\t\t\t\tnode.prev = null;\n\t\t\t\t/** @type {MemizeCacheNode} */ ( head ).prev = node;\n\t\t\t\thead = node;\n\t\t\t}\n\n\t\t\t// Return immediately\n\t\t\treturn node.val;\n\t\t}\n\n\t\t// No cached value found. Continue to insertion phase:\n\n\t\t// Create a copy of arguments (avoid leaking deoptimization)\n\t\targs = new Array( len );\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tnode = {\n\t\t\targs: args,\n\n\t\t\t// Generate the result from original function\n\t\t\tval: fn.apply( null, args ),\n\t\t};\n\n\t\t// Don't need to check whether node is already head, since it would\n\t\t// have been returned above already if it was\n\n\t\t// Shift existing head down list\n\t\tif ( head ) {\n\t\t\thead.prev = node;\n\t\t\tnode.next = head;\n\t\t} else {\n\t\t\t// If no head, follows that there's no tail (at initial or reset)\n\t\t\ttail = node;\n\t\t}\n\n\t\t// Trim tail if we're reached max size and are pending cache insertion\n\t\tif ( size === /** @type {MemizeOptions} */ ( options ).maxSize ) {\n\t\t\ttail = /** @type {MemizeCacheNode} */ ( tail ).prev;\n\t\t\t/** @type {MemizeCacheNode} */ ( tail ).next = null;\n\t\t} else {\n\t\t\tsize++;\n\t\t}\n\n\t\thead = node;\n\n\t\treturn node.val;\n\t}\n\n\tmemoized.clear = function() {\n\t\thead = null;\n\t\ttail = null;\n\t\tsize = 0;\n\t};\n\n\tif ( process.env.NODE_ENV === 'test' ) {\n\t\t// Cache is not exposed in the public API, but used in tests to ensure\n\t\t// expected list progression\n\t\tmemoized.getCache = function() {\n\t\t\treturn [ head, tail, size ];\n\t\t};\n\t}\n\n\t// Ignore reason: There's not a clear solution to create an intersection of\n\t// the function with additional properties, where the goal is to retain the\n\t// function signature of the incoming argument and add control properties\n\t// on the return value.\n\n\t// @ts-ignore\n\treturn memoized;\n}\n\nmodule.exports = memize;\n","/* global window, exports, define */\n\n!function() {\n 'use strict'\n\n var re = {\n not_string: /[^s]/,\n not_bool: /[^t]/,\n not_type: /[^T]/,\n not_primitive: /[^v]/,\n number: /[diefg]/,\n numeric_arg: /[bcdiefguxX]/,\n json: /[j]/,\n not_json: /[^j]/,\n text: /^[^\\x25]+/,\n modulo: /^\\x25{2}/,\n placeholder: /^\\x25(?:([1-9]\\d*)\\$|\\(([^)]+)\\))?(\\+)?(0|'[^$])?(-)?(\\d+)?(?:\\.(\\d+))?([b-gijostTuvxX])/,\n key: /^([a-z_][a-z_\\d]*)/i,\n key_access: /^\\.([a-z_][a-z_\\d]*)/i,\n index_access: /^\\[(\\d+)\\]/,\n sign: /^[+-]/\n }\n\n function sprintf(key) {\n // `arguments` is not an array, but should be fine for this call\n return sprintf_format(sprintf_parse(key), arguments)\n }\n\n function vsprintf(fmt, argv) {\n return sprintf.apply(null, [fmt].concat(argv || []))\n }\n\n function sprintf_format(parse_tree, argv) {\n var cursor = 1, tree_length = parse_tree.length, arg, output = '', i, k, ph, pad, pad_character, pad_length, is_positive, sign\n for (i = 0; i < tree_length; i++) {\n if (typeof parse_tree[i] === 'string') {\n output += parse_tree[i]\n }\n else if (typeof parse_tree[i] === 'object') {\n ph = parse_tree[i] // convenience purposes only\n if (ph.keys) { // keyword argument\n arg = argv[cursor]\n for (k = 0; k < ph.keys.length; k++) {\n if (arg == undefined) {\n throw new Error(sprintf('[sprintf] Cannot access property \"%s\" of undefined value \"%s\"', ph.keys[k], ph.keys[k-1]))\n }\n arg = arg[ph.keys[k]]\n }\n }\n else if (ph.param_no) { // positional argument (explicit)\n arg = argv[ph.param_no]\n }\n else { // positional argument (implicit)\n arg = argv[cursor++]\n }\n\n if (re.not_type.test(ph.type) && re.not_primitive.test(ph.type) && arg instanceof Function) {\n arg = arg()\n }\n\n if (re.numeric_arg.test(ph.type) && (typeof arg !== 'number' && isNaN(arg))) {\n throw new TypeError(sprintf('[sprintf] expecting number but found %T', arg))\n }\n\n if (re.number.test(ph.type)) {\n is_positive = arg >= 0\n }\n\n switch (ph.type) {\n case 'b':\n arg = parseInt(arg, 10).toString(2)\n break\n case 'c':\n arg = String.fromCharCode(parseInt(arg, 10))\n break\n case 'd':\n case 'i':\n arg = parseInt(arg, 10)\n break\n case 'j':\n arg = JSON.stringify(arg, null, ph.width ? parseInt(ph.width) : 0)\n break\n case 'e':\n arg = ph.precision ? parseFloat(arg).toExponential(ph.precision) : parseFloat(arg).toExponential()\n break\n case 'f':\n arg = ph.precision ? parseFloat(arg).toFixed(ph.precision) : parseFloat(arg)\n break\n case 'g':\n arg = ph.precision ? String(Number(arg.toPrecision(ph.precision))) : parseFloat(arg)\n break\n case 'o':\n arg = (parseInt(arg, 10) >>> 0).toString(8)\n break\n case 's':\n arg = String(arg)\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 't':\n arg = String(!!arg)\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'T':\n arg = Object.prototype.toString.call(arg).slice(8, -1).toLowerCase()\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'u':\n arg = parseInt(arg, 10) >>> 0\n break\n case 'v':\n arg = arg.valueOf()\n arg = (ph.precision ? arg.substring(0, ph.precision) : arg)\n break\n case 'x':\n arg = (parseInt(arg, 10) >>> 0).toString(16)\n break\n case 'X':\n arg = (parseInt(arg, 10) >>> 0).toString(16).toUpperCase()\n break\n }\n if (re.json.test(ph.type)) {\n output += arg\n }\n else {\n if (re.number.test(ph.type) && (!is_positive || ph.sign)) {\n sign = is_positive ? '+' : '-'\n arg = arg.toString().replace(re.sign, '')\n }\n else {\n sign = ''\n }\n pad_character = ph.pad_char ? ph.pad_char === '0' ? '0' : ph.pad_char.charAt(1) : ' '\n pad_length = ph.width - (sign + arg).length\n pad = ph.width ? (pad_length > 0 ? pad_character.repeat(pad_length) : '') : ''\n output += ph.align ? sign + arg + pad : (pad_character === '0' ? sign + pad + arg : pad + sign + arg)\n }\n }\n }\n return output\n }\n\n var sprintf_cache = Object.create(null)\n\n function sprintf_parse(fmt) {\n if (sprintf_cache[fmt]) {\n return sprintf_cache[fmt]\n }\n\n var _fmt = fmt, match, parse_tree = [], arg_names = 0\n while (_fmt) {\n if ((match = re.text.exec(_fmt)) !== null) {\n parse_tree.push(match[0])\n }\n else if ((match = re.modulo.exec(_fmt)) !== null) {\n parse_tree.push('%')\n }\n else if ((match = re.placeholder.exec(_fmt)) !== null) {\n if (match[2]) {\n arg_names |= 1\n var field_list = [], replacement_field = match[2], field_match = []\n if ((field_match = re.key.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n while ((replacement_field = replacement_field.substring(field_match[0].length)) !== '') {\n if ((field_match = re.key_access.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n }\n else if ((field_match = re.index_access.exec(replacement_field)) !== null) {\n field_list.push(field_match[1])\n }\n else {\n throw new SyntaxError('[sprintf] failed to parse named argument key')\n }\n }\n }\n else {\n throw new SyntaxError('[sprintf] failed to parse named argument key')\n }\n match[2] = field_list\n }\n else {\n arg_names |= 2\n }\n if (arg_names === 3) {\n throw new Error('[sprintf] mixing positional and named placeholders is not (yet) supported')\n }\n\n parse_tree.push(\n {\n placeholder: match[0],\n param_no: match[1],\n keys: match[2],\n sign: match[3],\n pad_char: match[4],\n align: match[5],\n width: match[6],\n precision: match[7],\n type: match[8]\n }\n )\n }\n else {\n throw new SyntaxError('[sprintf] unexpected placeholder')\n }\n _fmt = _fmt.substring(match[0].length)\n }\n return sprintf_cache[fmt] = parse_tree\n }\n\n /**\n * export to either browser or node.js\n */\n /* eslint-disable quote-props */\n if (typeof exports !== 'undefined') {\n exports['sprintf'] = sprintf\n exports['vsprintf'] = vsprintf\n }\n if (typeof window !== 'undefined') {\n window['sprintf'] = sprintf\n window['vsprintf'] = vsprintf\n\n if (typeof define === 'function' && define['amd']) {\n define(function() {\n return {\n 'sprintf': sprintf,\n 'vsprintf': vsprintf\n }\n })\n }\n }\n /* eslint-enable quote-props */\n}(); // eslint-disable-line\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","__webpack_require__.p = \"/wp-content/themes/sciencenews-sns-child/client/build/\";","/* eslint consistent-return: [\"error\", { \"treatUndefinedAsUnspecified\": true }] */\n\n/**\n * Executes the given callback when DOMContentLoaded is ready.\n *\n * @param {function} callback Callback to execute once DOMContentLoaded completes.\n */\nfunction domContentLoaded(callback) {\n if (document.readyState === 'complete' || document.readyState === 'interactive') {\n return void callback(); // eslint-disable-line no-void\n }\n\n document.addEventListener('DOMContentLoaded', callback, {\n once: true\n });\n}\nexport default domContentLoaded;","import componentLoader from './componentLoader';\n\n/**\n * Compile component elements and DOM attachments.\n *\n * @param {Object} config The component config.\n * @returns {Function|undefined} A function to initialize the component.\n */\nexport default function componentProvider(config) {\n const {\n component: Component,\n load,\n // default value omitted so `componentLoader` can use its default.\n name,\n querySelector = {},\n querySelectorAll = {},\n options = {}\n } = config;\n if (typeof Component !== 'function') {\n return undefined;\n }\n\n /**\n * Collect component arguments based on the config.\n *\n * @returns {array} Array of arguments.\n */\n const getComponentArgs = () => {\n // Set component selector, preferring the `name` property.\n const selector = undefined === name ? config === null || config === void 0 ? void 0 : config.root : `[data-component='${name}']`;\n let componentEls;\n\n // Test for a valid selector.\n try {\n componentEls = document.querySelectorAll(selector);\n } catch (e) {\n console.error(e); // eslint-disable-line no-console\n return [];\n }\n\n // No component elements found.\n if (componentEls.length < 1) {\n console.log(`No elements found for ${selector}`); // eslint-disable-line no-console\n return [];\n }\n return Array.from(componentEls).map(element => {\n const children = {};\n\n // Select single child nodes.\n Object.keys(querySelector).forEach(elementKey => {\n children[elementKey] = element.querySelector(querySelector[elementKey]);\n });\n\n // Select groups of child nodes.\n Object.keys(querySelectorAll).forEach(elementKey => {\n const nodeList = element.querySelectorAll(querySelectorAll[elementKey]);\n children[elementKey] = Array.from(nodeList);\n });\n return {\n element,\n children,\n options\n };\n });\n };\n\n /**\n * The provider function.\n *\n * Finds DOM nodes upon which the component should be initialized, collects\n * references to child nodes thereof, and passes these as arguments to each\n * instance of the component.\n */\n const init = () => {\n const componentArgs = getComponentArgs();\n componentArgs.forEach(args => new Component(args));\n };\n\n // Return the provider function for later execution.\n if (load === false) {\n return init;\n }\n\n /*\n * Call the provider function so it is executed as soon as the document is\n * parsed and loaded.\n *\n * This is a convenience option and is functionally identical to setting\n * `config.load` to false and calling the provider function later in the script.\n */\n if (load === true) {\n return void init(); // eslint-disable-line no-void\n }\n\n // Use the handler defined in the `load` config property.\n return void componentLoader(init, load); // eslint-disable-line no-void\n}","import domContentLoaded from './domContentLoaded';\n\n/**\n * Execute the given function according to the `load` parameter.\n *\n * @param {function} init The function to execute.\n * @param {boolean|array|function} load The loading instructions.\n */\nexport default function componentLoader(init) {\n let load = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : domContentLoaded;\n if (init) {\n if (typeof load === 'function') {\n load(init);\n } else if (Array.isArray(load)) {\n const [element, event] = load;\n\n // e.g., load: [window, 'load']\n element === null || element === void 0 ? void 0 : element.addEventListener(event, init);\n }\n }\n}","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target, src) {\n if (target === void 0) {\n target = {};\n }\n if (src === void 0) {\n src = {};\n }\n Object.keys(src).forEach(key => {\n if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\n });\n}\nconst ssrDocument = {\n body: {},\n addEventListener() {},\n removeEventListener() {},\n activeElement: {\n blur() {},\n nodeName: ''\n },\n querySelector() {\n return null;\n },\n querySelectorAll() {\n return [];\n },\n getElementById() {\n return null;\n },\n createEvent() {\n return {\n initEvent() {}\n };\n },\n createElement() {\n return {\n children: [],\n childNodes: [],\n style: {},\n setAttribute() {},\n getElementsByTagName() {\n return [];\n }\n };\n },\n createElementNS() {\n return {};\n },\n importNode() {\n return null;\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n }\n};\nfunction getDocument() {\n const doc = typeof document !== 'undefined' ? document : {};\n extend(doc, ssrDocument);\n return doc;\n}\nconst ssrWindow = {\n document: ssrDocument,\n navigator: {\n userAgent: ''\n },\n location: {\n hash: '',\n host: '',\n hostname: '',\n href: '',\n origin: '',\n pathname: '',\n protocol: '',\n search: ''\n },\n history: {\n replaceState() {},\n pushState() {},\n go() {},\n back() {}\n },\n CustomEvent: function CustomEvent() {\n return this;\n },\n addEventListener() {},\n removeEventListener() {},\n getComputedStyle() {\n return {\n getPropertyValue() {\n return '';\n }\n };\n },\n Image() {},\n Date() {},\n screen: {},\n setTimeout() {},\n clearTimeout() {},\n matchMedia() {\n return {};\n },\n requestAnimationFrame(callback) {\n if (typeof setTimeout === 'undefined') {\n callback();\n return null;\n }\n return setTimeout(callback, 0);\n },\n cancelAnimationFrame(id) {\n if (typeof setTimeout === 'undefined') {\n return;\n }\n clearTimeout(id);\n }\n};\nfunction getWindow() {\n const win = typeof window !== 'undefined' ? window : {};\n extend(win, ssrWindow);\n return win;\n}\n\nexport { getWindow as a, getDocument as g };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\n\nfunction classesToTokens(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return classes.trim().split(' ').filter(c => !!c.trim());\n}\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {\n // no getter for object\n }\n try {\n delete object[key];\n } catch (e) {\n // something got wrong\n }\n });\n}\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setTimeout(callback, delay);\n}\nfunction now() {\n return Date.now();\n}\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n if (!style) {\n style = el.style;\n }\n return style;\n}\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el);\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n }\n // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n } else {\n transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n matrix = transformMatrix.toString().split(',');\n }\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n return curTransform || 0;\n}\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n // eslint-disable-next-line\n if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n return node instanceof HTMLElement;\n }\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n const nextKey = keysArray[nextIndex];\n const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n to[nextKey] = {};\n if (nextSource[nextKey].__swiper__) {\n to[nextKey] = nextSource[nextKey];\n } else {\n extend(to[nextKey], nextSource[nextKey]);\n }\n } else {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n }\n }\n return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll(_ref) {\n let {\n swiper,\n targetPosition,\n side\n } = _ref;\n const window = getWindow();\n const startPosition = -swiper.translate;\n let startTime = null;\n let time;\n const duration = swiper.params.speed;\n swiper.wrapperEl.style.scrollSnapType = 'none';\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n const dir = targetPosition > startPosition ? 'next' : 'prev';\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n const animate = () => {\n time = new Date().getTime();\n if (startTime === null) {\n startTime = time;\n }\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n if (isOutOfBound(currentPosition, targetPosition)) {\n swiper.wrapperEl.style.overflow = 'hidden';\n swiper.wrapperEl.style.scrollSnapType = '';\n setTimeout(() => {\n swiper.wrapperEl.style.overflow = '';\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\n });\n window.cancelAnimationFrame(swiper.cssModeFrameID);\n return;\n }\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n animate();\n}\nfunction getSlideTransformEl(slideEl) {\n return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector) {\n if (selector === void 0) {\n selector = '';\n }\n const children = [...element.children];\n if (element instanceof HTMLSlotElement) {\n children.push(...element.assignedElements());\n }\n if (!selector) {\n return children;\n }\n return children.filter(el => el.matches(selector));\n}\nfunction elementIsChildOf(el, parent) {\n const isChild = parent.contains(el);\n if (!isChild && parent instanceof HTMLSlotElement) {\n const children = [...parent.assignedElements()];\n return children.includes(el);\n }\n return isChild;\n}\nfunction showWarning(text) {\n try {\n console.warn(text);\n return;\n } catch (err) {\n // err\n }\n}\nfunction createElement(tag, classes) {\n if (classes === void 0) {\n classes = [];\n }\n const el = document.createElement(tag);\n el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes)));\n return el;\n}\nfunction elementOffset(el) {\n const window = getWindow();\n const document = getDocument();\n const box = el.getBoundingClientRect();\n const body = document.body;\n const clientTop = el.clientTop || body.clientTop || 0;\n const clientLeft = el.clientLeft || body.clientLeft || 0;\n const scrollTop = el === window ? window.scrollY : el.scrollTop;\n const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n return {\n top: box.top + scrollTop - clientTop,\n left: box.left + scrollLeft - clientLeft\n };\n}\nfunction elementPrevAll(el, selector) {\n const prevEls = [];\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n if (selector) {\n if (prev.matches(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n el = prev;\n }\n return prevEls;\n}\nfunction elementNextAll(el, selector) {\n const nextEls = [];\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n if (selector) {\n if (next.matches(selector)) nextEls.push(next);\n } else nextEls.push(next);\n el = next;\n }\n return nextEls;\n}\nfunction elementStyle(el, prop) {\n const window = getWindow();\n return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n let child = el;\n let i;\n if (child) {\n i = 0;\n // eslint-disable-next-line\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n return i;\n }\n return undefined;\n}\nfunction elementParents(el, selector) {\n const parents = []; // eslint-disable-line\n let parent = el.parentElement; // eslint-disable-line\n while (parent) {\n if (selector) {\n if (parent.matches(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n function fireCallBack(e) {\n if (e.target !== el) return;\n callback.call(el, e);\n el.removeEventListener('transitionend', fireCallBack);\n }\n if (callback) {\n el.addEventListener('transitionend', fireCallBack);\n }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n const window = getWindow();\n if (includeMargins) {\n return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n }\n return el.offsetWidth;\n}\nfunction makeElementsArray(el) {\n return (Array.isArray(el) ? el : [el]).filter(e => !!e);\n}\nfunction getRotateFix(swiper) {\n return v => {\n if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) {\n return v + 0.001;\n }\n return v;\n };\n}\n\nexport { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, getSlideTransformEl as g, elementIndex as h, classesToTokens as i, getTranslate as j, elementTransitionEnd as k, isObject as l, makeElementsArray as m, nextTick as n, getRotateFix as o, elementStyle as p, elementNextAll as q, elementPrevAll as r, setCSSProperty as s, animateCSSModeScroll as t, showWarning as u, elementIsChildOf as v, extend as w, deleteProps as x };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { a as elementParents, p as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, q as elementNextAll, r as elementPrevAll, j as getTranslate, t as animateCSSModeScroll, n as nextTick, u as showWarning, c as createElement, v as elementIsChildOf, d as now, w as extend, h as elementIndex, x as deleteProps } from './utils.mjs';\n\nlet support;\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n };\n}\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n return support;\n}\n\nlet deviceCached;\nfunction calcDevice(_temp) {\n let {\n userAgent\n } = _temp === void 0 ? {} : _temp;\n const support = getSupport();\n const window = getWindow();\n const platform = window.navigator.platform;\n const ua = userAgent || window.navigator.userAgent;\n const device = {\n ios: false,\n android: false\n };\n const screenWidth = window.screen.width;\n const screenHeight = window.screen.height;\n const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n const windows = platform === 'Win32';\n let macos = platform === 'MacIntel';\n\n // iPadOs 13 fix\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n ipad = ua.match(/(Version)\\/([\\d.]+)/);\n if (!ipad) ipad = [0, 1, '13_0_0'];\n macos = false;\n }\n\n // Android\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n }\n\n // Export object\n return device;\n}\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n return deviceCached;\n}\n\nlet browser;\nfunction calcBrowser() {\n const window = getWindow();\n const device = getDevice();\n let needPerspectiveFix = false;\n function isSafari() {\n const ua = window.navigator.userAgent.toLowerCase();\n return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n }\n if (isSafari()) {\n const ua = String(window.navigator.userAgent);\n if (ua.includes('Version/')) {\n const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n }\n }\n const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent);\n const isSafariBrowser = isSafari();\n const need3dFix = isSafariBrowser || isWebView && device.ios;\n return {\n isSafari: needPerspectiveFix || isSafariBrowser,\n needPerspectiveFix,\n need3dFix,\n isWebView\n };\n}\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n return browser;\n}\n\nfunction Resize(_ref) {\n let {\n swiper,\n on,\n emit\n } = _ref;\n const window = getWindow();\n let observer = null;\n let animationFrame = null;\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\n const createObserver = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n observer = new ResizeObserver(entries => {\n animationFrame = window.requestAnimationFrame(() => {\n const {\n width,\n height\n } = swiper;\n let newWidth = width;\n let newHeight = height;\n entries.forEach(_ref2 => {\n let {\n contentBoxSize,\n contentRect,\n target\n } = _ref2;\n if (target && target !== swiper.el) return;\n newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n });\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\n window.addEventListener('resize', resizeHandler);\n window.addEventListener('orientationchange', orientationChangeHandler);\n });\n on('destroy', () => {\n removeObserver();\n window.removeEventListener('resize', resizeHandler);\n window.removeEventListener('orientationchange', orientationChangeHandler);\n });\n}\n\nfunction Observer(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const observers = [];\n const window = getWindow();\n const attach = function (target, options) {\n if (options === void 0) {\n options = {};\n }\n const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n const observer = new ObserverFunc(mutations => {\n // The observerUpdate event should only be triggered\n // once despite the number of mutations. Additional\n // triggers are redundant and are very costly\n if (swiper.__preventObserver__) return;\n if (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\n if (window.requestAnimationFrame) {\n window.requestAnimationFrame(observerUpdate);\n } else {\n window.setTimeout(observerUpdate, 0);\n }\n });\n observer.observe(target, {\n attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n const init = () => {\n if (!swiper.params.observer) return;\n if (swiper.params.observeParents) {\n const containerParents = elementParents(swiper.hostEl);\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n }\n // Observe container\n attach(swiper.hostEl, {\n childList: swiper.params.observeSlideChildren\n });\n\n // Observe wrapper\n attach(swiper.wrapperEl, {\n attributes: false\n });\n };\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}\n\n/* eslint-disable no-underscore-dangle */\n\nvar eventsEmitter = {\n on(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n events.split(' ').forEach(event => {\n if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n self.eventsListeners[event][method](handler);\n });\n return self;\n },\n once(events, handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n function onceHandler() {\n self.off(events, onceHandler);\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n handler.apply(self, args);\n }\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\n onAny(handler, priority) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (typeof handler !== 'function') return self;\n const method = priority ? 'unshift' : 'push';\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n return self;\n },\n offAny(handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsAnyListeners) return self;\n const index = self.eventsAnyListeners.indexOf(handler);\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n return self;\n },\n off(events, handler) {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n events.split(' ').forEach(event => {\n if (typeof handler === 'undefined') {\n self.eventsListeners[event] = [];\n } else if (self.eventsListeners[event]) {\n self.eventsListeners[event].forEach((eventHandler, index) => {\n if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n self.eventsListeners[event].splice(index, 1);\n }\n });\n }\n });\n return self;\n },\n emit() {\n const self = this;\n if (!self.eventsListeners || self.destroyed) return self;\n if (!self.eventsListeners) return self;\n let events;\n let data;\n let context;\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n events = args[0];\n data = args.slice(1, args.length);\n context = self;\n } else {\n events = args[0].events;\n data = args[0].data;\n context = args[0].context || self;\n }\n data.unshift(context);\n const eventsArray = Array.isArray(events) ? events : events.split(' ');\n eventsArray.forEach(event => {\n if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n self.eventsAnyListeners.forEach(eventHandler => {\n eventHandler.apply(context, [event, ...data]);\n });\n }\n if (self.eventsListeners && self.eventsListeners[event]) {\n self.eventsListeners[event].forEach(eventHandler => {\n eventHandler.apply(context, data);\n });\n }\n });\n return self;\n }\n};\n\nfunction updateSize() {\n const swiper = this;\n let width;\n let height;\n const el = swiper.el;\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = el.clientWidth;\n }\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = el.clientHeight;\n }\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n }\n\n // Subtract paddings\n width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n if (Number.isNaN(width)) width = 0;\n if (Number.isNaN(height)) height = 0;\n Object.assign(swiper, {\n width,\n height,\n size: swiper.isHorizontal() ? width : height\n });\n}\n\nfunction updateSlides() {\n const swiper = this;\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0);\n }\n const params = swiper.params;\n const {\n wrapperEl,\n slidesEl,\n size: swiperSize,\n rtlTranslate: rtl,\n wrongRTL\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n let snapGrid = [];\n const slidesGrid = [];\n const slidesSizesGrid = [];\n let offsetBefore = params.slidesOffsetBefore;\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n let offsetAfter = params.slidesOffsetAfter;\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\n const previousSnapGridLength = swiper.snapGrid.length;\n const previousSlidesGridLength = swiper.slidesGrid.length;\n let spaceBetween = params.spaceBetween;\n let slidePosition = -offsetBefore;\n let prevSlideSize = 0;\n let index = 0;\n if (typeof swiperSize === 'undefined') {\n return;\n }\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n swiper.virtualSize = -spaceBetween;\n\n // reset margins\n slides.forEach(slideEl => {\n if (rtl) {\n slideEl.style.marginLeft = '';\n } else {\n slideEl.style.marginRight = '';\n }\n slideEl.style.marginBottom = '';\n slideEl.style.marginTop = '';\n });\n\n // reset cssMode offsets\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n }\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n if (gridEnabled) {\n swiper.grid.initSlides(slides);\n } else if (swiper.grid) {\n swiper.grid.unsetSlides();\n }\n\n // Calc slides\n let slideSize;\n const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n }).length > 0;\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n let slide;\n if (slides[i]) slide = slides[i];\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slides);\n }\n if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[swiper.getDirectionLabel('width')] = ``;\n }\n const slideStyles = getComputedStyle(slide);\n const currentTransform = slide.style.transform;\n const currentWebKitTransform = slide.style.webkitTransform;\n if (currentTransform) {\n slide.style.transform = 'none';\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = 'none';\n }\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n } else {\n // eslint-disable-next-line\n const width = getDirectionPropertyValue(slideStyles, 'width');\n const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n const boxSizing = slideStyles.getPropertyValue('box-sizing');\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide;\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n if (currentTransform) {\n slide.style.transform = currentTransform;\n }\n if (currentWebKitTransform) {\n slide.style.webkitTransform = currentWebKitTransform;\n }\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n } else {\n slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n if (params.roundLengths) slideSize = Math.floor(slideSize);\n if (slides[i]) {\n slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n slidesSizesGrid.push(slideSize);\n if (params.centeredSlides) {\n slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n } else {\n if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n slidesGrid.push(slidePosition);\n slidePosition = slidePosition + slideSize + spaceBetween;\n }\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (params.setWrapperSize) {\n wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n }\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid);\n }\n\n // Remove last grid elements depending on width\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n snapGrid = newSlidesGrid;\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n if (isVirtual && params.loop) {\n const size = slidesSizesGrid[0] + spaceBetween;\n if (params.slidesPerGroup > 1) {\n const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n const groupSize = size * params.slidesPerGroup;\n for (let i = 0; i < groups; i += 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n }\n }\n for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n if (params.slidesPerGroup === 1) {\n snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n }\n slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n swiper.virtualSize += size;\n }\n }\n if (snapGrid.length === 0) snapGrid = [0];\n if (spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode || params.loop) return true;\n if (slideIndex === slides.length - 1) {\n return false;\n }\n return true;\n }).forEach(slideEl => {\n slideEl.style[key] = `${spaceBetween}px`;\n });\n }\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const maxSnap = allSlidesSize > swiperSize ? allSlidesSize - swiperSize : 0;\n snapGrid = snapGrid.map(snap => {\n if (snap <= 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (spaceBetween || 0);\n });\n allSlidesSize -= spaceBetween;\n const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0);\n if (allSlidesSize + offsetSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2;\n snapGrid.forEach((snap, snapIndex) => {\n snapGrid[snapIndex] = snap - allSlidesOffset;\n });\n slidesGrid.forEach((snap, snapIndex) => {\n slidesGrid[snapIndex] = snap + allSlidesOffset;\n });\n }\n }\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n const addToSnapGrid = -swiper.snapGrid[0];\n const addToSlidesGrid = -swiper.slidesGrid[0];\n swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n }\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n swiper.emit('slidesUpdated');\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.el.classList.remove(backFaceHiddenClass);\n }\n }\n}\n\nfunction updateAutoHeight(speed) {\n const swiper = this;\n const activeSlides = [];\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let newHeight = 0;\n let i;\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides[swiper.getSlideIndexByData(index)];\n }\n return swiper.slides[index];\n };\n // Find slides currently in view\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || []).forEach(slide => {\n activeSlides.push(slide);\n });\n } else {\n for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n const index = swiper.activeIndex + i;\n if (index > swiper.slides.length && !isVirtual) break;\n activeSlides.push(getSlideByIndex(index));\n }\n }\n } else {\n activeSlides.push(getSlideByIndex(swiper.activeIndex));\n }\n\n // Find new height from highest slide in view\n for (i = 0; i < activeSlides.length; i += 1) {\n if (typeof activeSlides[i] !== 'undefined') {\n const height = activeSlides[i].offsetHeight;\n newHeight = height > newHeight ? height : newHeight;\n }\n }\n\n // Update Height\n if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\n\nfunction updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n // eslint-disable-next-line\n const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n }\n}\n\nconst toggleSlideClasses$1 = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\n const swiper = this;\n const params = swiper.params;\n const {\n slides,\n rtlTranslate: rtl,\n snapGrid\n } = swiper;\n if (slides.length === 0) return;\n if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n let offsetCenter = -translate;\n if (rtl) offsetCenter = translate;\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n let spaceBetween = params.spaceBetween;\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n } else if (typeof spaceBetween === 'string') {\n spaceBetween = parseFloat(spaceBetween);\n }\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n }\n toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass);\n toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass);\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n}\n\nfunction updateProgress(translate) {\n const swiper = this;\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1;\n // eslint-disable-next-line\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd,\n progressLoop\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n isBeginning = isBeginningRounded || progress <= 0;\n isEnd = isEndRounded || progress >= 1;\n if (isBeginningRounded) progress = 0;\n if (isEndRounded) progress = 1;\n }\n if (params.loop) {\n const firstSlideIndex = swiper.getSlideIndexByData(0);\n const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n const translateAbs = Math.abs(translate);\n if (translateAbs >= firstSlideTranslate) {\n progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n } else {\n progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n }\n if (progressLoop > 1) progressLoop -= 1;\n }\n Object.assign(swiper, {\n progress,\n progressLoop,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n swiper.emit('progress', progress);\n}\n\nconst toggleSlideClasses = (slideEl, condition, className) => {\n if (condition && !slideEl.classList.contains(className)) {\n slideEl.classList.add(className);\n } else if (!condition && slideEl.classList.contains(className)) {\n slideEl.classList.remove(className);\n }\n};\nfunction updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n slidesEl,\n activeIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const getFilteredSlide = selector => {\n return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n };\n let activeSlide;\n let prevSlide;\n let nextSlide;\n if (isVirtual) {\n if (params.loop) {\n let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n } else {\n activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n }\n } else {\n if (gridEnabled) {\n activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0];\n nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0];\n prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0];\n } else {\n activeSlide = slides[activeIndex];\n }\n }\n if (activeSlide) {\n if (!gridEnabled) {\n // Next Slide\n nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !nextSlide) {\n nextSlide = slides[0];\n }\n\n // Prev Slide\n prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n if (params.loop && !prevSlide === 0) {\n prevSlide = slides[slides.length - 1];\n }\n }\n }\n slides.forEach(slideEl => {\n toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass);\n toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass);\n toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass);\n });\n swiper.emitSlidesClasses();\n}\n\nconst processLazyPreloader = (swiper, imageEl) => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n const slideEl = imageEl.closest(slideSelector());\n if (slideEl) {\n let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (!lazyEl && swiper.isElement) {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n } else {\n // init later\n requestAnimationFrame(() => {\n if (slideEl.shadowRoot) {\n lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n if (lazyEl) lazyEl.remove();\n }\n });\n }\n }\n if (lazyEl) lazyEl.remove();\n }\n};\nconst unlazy = (swiper, index) => {\n if (!swiper.slides[index]) return;\n const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n if (imageEl) imageEl.removeAttribute('loading');\n};\nconst preload = swiper => {\n if (!swiper || swiper.destroyed || !swiper.params) return;\n let amount = swiper.params.lazyPreloadPrevNext;\n const len = swiper.slides.length;\n if (!len || !amount || amount < 0) return;\n amount = Math.min(amount, len);\n const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n const activeIndex = swiper.activeIndex;\n if (swiper.params.grid && swiper.params.grid.rows > 1) {\n const activeColumn = activeIndex;\n const preloadColumns = [activeColumn - amount];\n preloadColumns.push(...Array.from({\n length: amount\n }).map((_, i) => {\n return activeColumn + slidesPerView + i;\n }));\n swiper.slides.forEach((slideEl, i) => {\n if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n });\n return;\n }\n const slideIndexLastInView = activeIndex + slidesPerView - 1;\n if (swiper.params.rewind || swiper.params.loop) {\n for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n const realIndex = (i % len + len) % len;\n if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n }\n } else {\n for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n unlazy(swiper, i);\n }\n }\n }\n};\n\nfunction getActiveIndexByTranslate(swiper) {\n const {\n slidesGrid,\n params\n } = swiper;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n let activeIndex;\n for (let i = 0; i < slidesGrid.length; i += 1) {\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n activeIndex = i;\n } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n activeIndex = i + 1;\n }\n } else if (translate >= slidesGrid[i]) {\n activeIndex = i;\n }\n }\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n return activeIndex;\n}\nfunction updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n const getVirtualRealIndex = aIndex => {\n let realIndex = aIndex - swiper.virtual.slidesBefore;\n if (realIndex < 0) {\n realIndex = swiper.virtual.slides.length + realIndex;\n }\n if (realIndex >= swiper.virtual.slides.length) {\n realIndex -= swiper.virtual.slides.length;\n }\n return realIndex;\n };\n if (typeof activeIndex === 'undefined') {\n activeIndex = getActiveIndexByTranslate(swiper);\n }\n if (snapGrid.indexOf(translate) >= 0) {\n snapIndex = snapGrid.indexOf(translate);\n } else {\n const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n }\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n if (activeIndex === previousIndex && !swiper.params.loop) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n return;\n }\n if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.realIndex = getVirtualRealIndex(activeIndex);\n return;\n }\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n\n // Get real index\n let realIndex;\n if (swiper.virtual && params.virtual.enabled && params.loop) {\n realIndex = getVirtualRealIndex(activeIndex);\n } else if (gridEnabled) {\n const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0];\n let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10);\n if (Number.isNaN(activeSlideIndex)) {\n activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);\n }\n realIndex = Math.floor(activeSlideIndex / params.grid.rows);\n } else if (swiper.slides[activeIndex]) {\n const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index');\n if (slideIndex) {\n realIndex = parseInt(slideIndex, 10);\n } else {\n realIndex = activeIndex;\n }\n } else {\n realIndex = activeIndex;\n }\n Object.assign(swiper, {\n previousSnapIndex,\n snapIndex,\n previousRealIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n if (swiper.initialized) {\n preload(swiper);\n }\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n swiper.emit('slideChange');\n }\n}\n\nfunction updateClickedSlide(el, path) {\n const swiper = this;\n const params = swiper.params;\n let slide = el.closest(`.${params.slideClass}, swiper-slide`);\n if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) {\n [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => {\n if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {\n slide = pathEl;\n }\n });\n }\n let slideFound = false;\n let slideIndex;\n if (slide) {\n for (let i = 0; i < swiper.slides.length; i += 1) {\n if (swiper.slides[i] === slide) {\n slideFound = true;\n slideIndex = i;\n break;\n }\n }\n }\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n } else {\n swiper.clickedIndex = slideIndex;\n }\n } else {\n swiper.clickedSlide = undefined;\n swiper.clickedIndex = undefined;\n return;\n }\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}\n\nvar update = {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};\n\nfunction getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n wrapperEl\n } = swiper;\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n if (params.cssMode) {\n return translate;\n }\n let currentTranslate = getTranslate(wrapperEl, axis);\n currentTranslate += swiper.cssOverflowAdjustment();\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}\n\nfunction setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y;\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n if (swiper.isHorizontal()) {\n x -= swiper.cssOverflowAdjustment();\n } else {\n y -= swiper.cssOverflowAdjustment();\n }\n wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n }\n\n // Check if we need to update progress\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate() {\n return -this.snapGrid[0];\n}\n\nfunction maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}\n\nfunction translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n if (speed === void 0) {\n speed = this.params.speed;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n const minTranslate = swiper.minTranslate();\n const maxTranslate = swiper.maxTranslate();\n let newTranslate;\n if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n // Update progress\n swiper.updateProgress(newTranslate);\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n if (speed === 0) {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: -newTranslate,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n return true;\n }\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionEnd');\n }\n } else {\n swiper.setTransition(speed);\n swiper.setTranslate(newTranslate);\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onTranslateToWrapperTransitionEnd) {\n swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n swiper.animating = false;\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n return true;\n}\n\nvar translate = {\n getTranslate: getSwiperTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};\n\nfunction setTransition(duration, byController) {\n const swiper = this;\n if (!swiper.params.cssMode) {\n swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : '';\n }\n swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionEmit(_ref) {\n let {\n swiper,\n runCallbacks,\n direction,\n step\n } = _ref;\n const {\n activeIndex,\n previousIndex\n } = swiper;\n let dir = direction;\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n swiper.emit(`transition${step}`);\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n swiper.emit(`slideChangeTransition${step}`);\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}\n\nfunction transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}\n\nfunction transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.animating = false;\n if (params.cssMode) return;\n swiper.setTransition(0);\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'End'\n });\n}\n\nvar transition = {\n setTransition,\n transitionStart,\n transitionEnd\n};\n\nfunction slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n index = parseInt(index, 10);\n }\n const swiper = this;\n let slideIndex = index;\n if (slideIndex < 0) slideIndex = 0;\n const {\n params,\n snapGrid,\n slidesGrid,\n previousIndex,\n activeIndex,\n rtlTranslate: rtl,\n wrapperEl,\n enabled\n } = swiper;\n if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n const translate = -snapGrid[snapIndex];\n // Normalize slideIndex\n if (params.normalizeSlideIndex) {\n for (let i = 0; i < slidesGrid.length; i += 1) {\n const normalizedTranslate = -Math.floor(translate * 100);\n const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n if (typeof slidesGrid[i + 1] !== 'undefined') {\n if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n slideIndex = i;\n } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n slideIndex = i + 1;\n }\n } else if (normalizedTranslate >= normalizedGrid) {\n slideIndex = i;\n }\n }\n }\n // Directions locks\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\n return false;\n }\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) {\n return false;\n }\n }\n }\n if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n // Update progress\n swiper.updateProgress(translate);\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n // initial virtual\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n const isInitialVirtual = isVirtual && initial;\n // Update Index\n if (!isInitialVirtual && (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate)) {\n swiper.updateActiveIndex(slideIndex);\n // Update Height\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n swiper.updateSlidesClasses();\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n return false;\n }\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n if (speed === 0) {\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n swiper._cssModeVirtualInitialSet = true;\n requestAnimationFrame(() => {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n });\n } else {\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n }\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._immediateVirtual = false;\n });\n }\n } else {\n if (!swiper.support.smoothScroll) {\n animateCSSModeScroll({\n swiper,\n targetPosition: t,\n side: isH ? 'left' : 'top'\n });\n return true;\n }\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n return true;\n }\n swiper.setTransition(speed);\n swiper.setTranslate(translate);\n swiper.updateActiveIndex(slideIndex);\n swiper.updateSlidesClasses();\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.transitionStart(runCallbacks, direction);\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n if (!swiper.onSlideToWrapperTransitionEnd) {\n swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n if (!swiper || swiper.destroyed) return;\n if (e.target !== this) return;\n swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n }\n return true;\n}\n\nfunction slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (typeof index === 'string') {\n const indexAsNumber = parseInt(index, 10);\n index = indexAsNumber;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;\n let newIndex = index;\n if (swiper.params.loop) {\n if (swiper.virtual && swiper.params.virtual.enabled) {\n // eslint-disable-next-line\n newIndex = newIndex + swiper.virtual.slidesBefore;\n } else {\n let targetSlideIndex;\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;\n } else {\n targetSlideIndex = swiper.getSlideIndexByData(newIndex);\n }\n const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;\n const {\n centeredSlides\n } = swiper.params;\n let slidesPerView = swiper.params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n let needLoopFix = cols - targetSlideIndex < slidesPerView;\n if (centeredSlides) {\n needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);\n }\n if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) {\n needLoopFix = false;\n }\n if (needLoopFix) {\n const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev';\n swiper.loopFix({\n direction,\n slideTo: true,\n activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1,\n slideRealIndex: direction === 'next' ? swiper.realIndex : undefined\n });\n }\n if (gridEnabled) {\n const slideIndex = newIndex * swiper.params.grid.rows;\n newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column;\n } else {\n newIndex = swiper.getSlideIndexByData(newIndex);\n }\n }\n }\n requestAnimationFrame(() => {\n swiper.slideTo(newIndex, speed, runCallbacks, internal);\n });\n return swiper;\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n enabled,\n params,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let perGroup = params.slidesPerGroup;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'next'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n });\n return true;\n }\n }\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n const {\n params,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled,\n animating\n } = swiper;\n if (!enabled || swiper.destroyed) return swiper;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n const isVirtual = swiper.virtual && params.virtual.enabled;\n if (params.loop) {\n if (animating && !isVirtual && params.loopPreventsSliding) return false;\n swiper.loopFix({\n direction: 'prev'\n });\n // eslint-disable-next-line\n swiper._clientLeft = swiper.wrapperEl.clientLeft;\n }\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n if (typeof prevSnap === 'undefined' && params.cssMode) {\n let prevSnapIndex;\n snapGrid.forEach((snap, snapIndex) => {\n if (normalizedTranslate >= snap) {\n // prevSnap = snap;\n prevSnapIndex = snapIndex;\n }\n });\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n let prevIndex = 0;\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n prevIndex = Math.max(prevIndex, 0);\n }\n }\n if (params.rewind && swiper.isBeginning) {\n const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {\n requestAnimationFrame(() => {\n swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n });\n return true;\n }\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks, internal) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks, internal, threshold) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n if (threshold === void 0) {\n threshold = 0.5;\n }\n const swiper = this;\n if (swiper.destroyed) return;\n if (typeof speed === 'undefined') {\n speed = swiper.params.speed;\n }\n let index = swiper.activeIndex;\n const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n if (translate >= swiper.snapGrid[snapIndex]) {\n // The current translate is on or after the current snap index, so the choice\n // is between the current index and the one after it.\n const currentSnap = swiper.snapGrid[snapIndex];\n const nextSnap = swiper.snapGrid[snapIndex + 1];\n if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n index += swiper.params.slidesPerGroup;\n }\n } else {\n // The current translate is before the current snap index, so the choice\n // is between the current index and the one before it.\n const prevSnap = swiper.snapGrid[snapIndex - 1];\n const currentSnap = swiper.snapGrid[snapIndex];\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\n }\n index = Math.max(index, 0);\n index = Math.min(index, swiper.slidesGrid.length - 1);\n return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide() {\n const swiper = this;\n if (swiper.destroyed) return;\n const {\n params,\n slidesEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n swiper.loopFix();\n slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}\n\nvar slide = {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};\n\nfunction loopCreate(slideRealIndex) {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n const initSlides = () => {\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n slides.forEach((el, index) => {\n el.setAttribute('data-swiper-slide-index', index);\n });\n };\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1);\n const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0;\n const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0;\n const addBlankSlides = amountOfSlides => {\n for (let i = 0; i < amountOfSlides; i += 1) {\n const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]);\n swiper.slidesEl.append(slideEl);\n }\n };\n if (shouldFillGroup) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else if (shouldFillGrid) {\n if (params.loopAddBlankSlides) {\n const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows;\n addBlankSlides(slidesToAdd);\n swiper.recalcSlides();\n swiper.updateSlides();\n } else {\n showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)');\n }\n initSlides();\n } else {\n initSlides();\n }\n swiper.loopFix({\n slideRealIndex,\n direction: params.centeredSlides ? undefined : 'next'\n });\n}\n\nfunction loopFix(_temp) {\n let {\n slideRealIndex,\n slideTo = true,\n direction,\n setTranslate,\n activeSlideIndex,\n byController,\n byMousewheel\n } = _temp === void 0 ? {} : _temp;\n const swiper = this;\n if (!swiper.params.loop) return;\n swiper.emit('beforeLoopFix');\n const {\n slides,\n allowSlidePrev,\n allowSlideNext,\n slidesEl,\n params\n } = swiper;\n const {\n centeredSlides\n } = params;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n if (swiper.virtual && params.virtual.enabled) {\n if (slideTo) {\n if (!params.centeredSlides && swiper.snapIndex === 0) {\n swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {\n swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n return;\n }\n let slidesPerView = params.slidesPerView;\n if (slidesPerView === 'auto') {\n slidesPerView = swiper.slidesPerViewDynamic();\n } else {\n slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10));\n if (centeredSlides && slidesPerView % 2 === 0) {\n slidesPerView = slidesPerView + 1;\n }\n }\n const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup;\n let loopedSlides = slidesPerGroup;\n if (loopedSlides % slidesPerGroup !== 0) {\n loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup;\n }\n loopedSlides += params.loopAdditionalSlides;\n swiper.loopedSlides = loopedSlides;\n const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;\n if (slides.length < slidesPerView + loopedSlides) {\n showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters');\n } else if (gridEnabled && params.grid.fill === 'row') {\n showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`');\n }\n const prependSlidesIndexes = [];\n const appendSlidesIndexes = [];\n let activeIndex = swiper.activeIndex;\n if (typeof activeSlideIndex === 'undefined') {\n activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]);\n } else {\n activeIndex = activeSlideIndex;\n }\n const isNext = direction === 'next' || !direction;\n const isPrev = direction === 'prev' || !direction;\n let slidesPrepended = 0;\n let slidesAppended = 0;\n const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;\n const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex;\n const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0);\n // prepend last slides before start\n if (activeColIndexWithShift < loopedSlides) {\n slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup);\n for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n const colIndexToPrepend = cols - index - 1;\n for (let i = slides.length - 1; i >= 0; i -= 1) {\n if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i);\n }\n // slides.forEach((slide, slideIndex) => {\n // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex);\n // });\n } else {\n prependSlidesIndexes.push(cols - index - 1);\n }\n }\n } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) {\n slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup);\n for (let i = 0; i < slidesAppended; i += 1) {\n const index = i - Math.floor(i / cols) * cols;\n if (gridEnabled) {\n slides.forEach((slide, slideIndex) => {\n if (slide.column === index) appendSlidesIndexes.push(slideIndex);\n });\n } else {\n appendSlidesIndexes.push(index);\n }\n }\n }\n swiper.__preventObserver__ = true;\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n if (isPrev) {\n prependSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.prepend(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n if (isNext) {\n appendSlidesIndexes.forEach(index => {\n slides[index].swiperLoopMoveDOM = true;\n slidesEl.append(slides[index]);\n slides[index].swiperLoopMoveDOM = false;\n });\n }\n swiper.recalcSlides();\n if (params.slidesPerView === 'auto') {\n swiper.updateSlides();\n } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) {\n swiper.slides.forEach((slide, slideIndex) => {\n swiper.grid.updateSlide(slideIndex, slide, swiper.slides);\n });\n }\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n if (slideTo) {\n if (prependSlidesIndexes.length > 0 && isPrev) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n if (setTranslate) {\n const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex + shift, 0, false, true);\n swiper.touchEventsData.currentTranslate = swiper.translate;\n }\n }\n } else if (appendSlidesIndexes.length > 0 && isNext) {\n if (typeof slideRealIndex === 'undefined') {\n const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n const diff = newSlideTranslate - currentSlideTranslate;\n if (byMousewheel) {\n swiper.setTranslate(swiper.translate - diff);\n } else {\n swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n if (setTranslate) {\n swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;\n swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;\n }\n }\n } else {\n const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length;\n swiper.slideTo(swiper.activeIndex - shift, 0, false, true);\n }\n }\n }\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.controller && swiper.controller.control && !byController) {\n const loopParams = {\n slideRealIndex,\n direction,\n setTranslate,\n activeSlideIndex,\n byController: true\n };\n if (Array.isArray(swiper.controller.control)) {\n swiper.controller.control.forEach(c => {\n if (!c.destroyed && c.params.loop) c.loopFix({\n ...loopParams,\n slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n });\n } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n swiper.controller.control.loopFix({\n ...loopParams,\n slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false\n });\n }\n }\n swiper.emit('loopFix');\n}\n\nfunction loopDestroy() {\n const swiper = this;\n const {\n params,\n slidesEl\n } = swiper;\n if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n swiper.recalcSlides();\n const newSlidesOrder = [];\n swiper.slides.forEach(slideEl => {\n const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n newSlidesOrder[index] = slideEl;\n });\n swiper.slides.forEach(slideEl => {\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n newSlidesOrder.forEach(slideEl => {\n slidesEl.append(slideEl);\n });\n swiper.recalcSlides();\n swiper.slideTo(swiper.realIndex, 0);\n}\n\nvar loop = {\n loopCreate,\n loopFix,\n loopDestroy\n};\n\nfunction setGrabCursor(moving) {\n const swiper = this;\n if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nfunction unsetGrabCursor() {\n const swiper = this;\n if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n if (swiper.isElement) {\n swiper.__preventObserver__ = true;\n }\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n if (swiper.isElement) {\n requestAnimationFrame(() => {\n swiper.__preventObserver__ = false;\n });\n }\n}\n\nvar grabCursor = {\n setGrabCursor,\n unsetGrabCursor\n};\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\n function __closestFrom(el) {\n if (!el || el === getDocument() || el === getWindow()) return null;\n if (el.assignedSlot) el = el.assignedSlot;\n const found = el.closest(selector);\n if (!found && !el.getRootNode) {\n return null;\n }\n return found || __closestFrom(el.getRootNode().host);\n }\n return __closestFrom(base);\n}\nfunction preventEdgeSwipe(swiper, event, startX) {\n const window = getWindow();\n const {\n params\n } = swiper;\n const edgeSwipeDetection = params.edgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold;\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n return true;\n }\n return false;\n }\n return true;\n}\nfunction onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n const data = swiper.touchEventsData;\n if (e.type === 'pointerdown') {\n if (data.pointerId !== null && data.pointerId !== e.pointerId) {\n return;\n }\n data.pointerId = e.pointerId;\n } else if (e.type === 'touchstart' && e.targetTouches.length === 1) {\n data.touchId = e.targetTouches[0].identifier;\n }\n if (e.type === 'touchstart') {\n // don't proceed touch event\n preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX);\n return;\n }\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n let targetEl = e.target;\n if (params.touchEventsTarget === 'wrapper') {\n if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return;\n }\n if ('which' in e && e.which === 3) return;\n if ('button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return;\n\n // change target el for shadow root component\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n // eslint-disable-next-line\n const eventPath = e.composedPath ? e.composedPath() : e.path;\n if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n targetEl = eventPath[0];\n }\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n // use closestElement for shadow root element to get the actual closest for nested shadow root element\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n swiper.allowClick = true;\n return;\n }\n if (params.swipeHandler) {\n if (!targetEl.closest(params.swipeHandler)) return;\n }\n touches.currentX = e.pageX;\n touches.currentY = e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY;\n\n // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n if (!preventEdgeSwipe(swiper, e, startX)) {\n return;\n }\n Object.assign(data, {\n isTouched: true,\n isMoved: false,\n allowTouchCallbacks: true,\n isScrolling: undefined,\n startMoving: undefined\n });\n touches.startX = startX;\n touches.startY = startY;\n data.touchStartTime = now();\n swiper.allowClick = true;\n swiper.updateSize();\n swiper.swipeDirection = undefined;\n if (params.threshold > 0) data.allowThresholdMove = false;\n let preventDefault = true;\n if (targetEl.matches(data.focusableElements)) {\n preventDefault = false;\n if (targetEl.nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl && (e.pointerType === 'mouse' || e.pointerType !== 'mouse' && !targetEl.matches(data.focusableElements))) {\n document.activeElement.blur();\n }\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n e.preventDefault();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove(event) {\n const document = getDocument();\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && event.pointerType === 'mouse') return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n if (e.type === 'pointermove') {\n if (data.touchId !== null) return; // return from pointer if we use touch\n const id = e.pointerId;\n if (id !== data.pointerId) return;\n }\n let targetTouch;\n if (e.type === 'touchmove') {\n targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n } else {\n targetTouch = e;\n }\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n return;\n }\n const pageX = targetTouch.pageX;\n const pageY = targetTouch.pageY;\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n if (!swiper.allowTouchMove) {\n if (!e.target.matches(data.focusableElements)) {\n swiper.allowClick = false;\n }\n if (data.isTouched) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY\n });\n data.touchStartTime = now();\n }\n return;\n }\n if (params.touchReleaseOnEdges && !params.loop) {\n if (swiper.isVertical()) {\n // Vertical\n if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n data.isTouched = false;\n data.isMoved = false;\n return;\n }\n } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n return;\n }\n }\n if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== e.target && e.pointerType !== 'mouse') {\n document.activeElement.blur();\n }\n if (document.activeElement) {\n if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n touches.previousX = touches.currentX;\n touches.previousY = touches.currentY;\n touches.currentX = pageX;\n touches.currentY = pageY;\n const diffX = touches.currentX - touches.startX;\n const diffY = touches.currentY - touches.startY;\n if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n data.isScrolling = false;\n } else {\n // eslint-disable-next-line\n if (diffX * diffX + diffY * diffY >= 25) {\n touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n }\n }\n }\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) {\n data.isTouched = false;\n return;\n }\n if (!data.startMoving) {\n return;\n }\n swiper.allowClick = false;\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n let diff = swiper.isHorizontal() ? diffX : diffY;\n let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n if (params.oneWayMovement) {\n diff = Math.abs(diff) * (rtl ? 1 : -1);\n touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n }\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) {\n diff = -diff;\n touchesDiff = -touchesDiff;\n }\n const prevTouchesDirection = swiper.touchesDirection;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n const isLoop = swiper.params.loop && !params.cssMode;\n const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev;\n if (!data.isMoved) {\n if (isLoop && allowLoopFix) {\n swiper.loopFix({\n direction: swiper.swipeDirection\n });\n }\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n if (swiper.animating) {\n const evt = new window.CustomEvent('transitionend', {\n bubbles: true,\n cancelable: true,\n detail: {\n bySwiperTouchMove: true\n }\n });\n swiper.wrapperEl.dispatchEvent(evt);\n }\n data.allowMomentumBounce = false;\n // Grab Cursor\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n swiper.emit('sliderFirstMove', e);\n }\n let loopFixed;\n new Date().getTime();\n if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {\n Object.assign(touches, {\n startX: pageX,\n startY: pageY,\n currentX: pageX,\n currentY: pageY,\n startTranslate: data.currentTranslate\n });\n data.loopSwapReset = true;\n data.startTranslate = data.currentTranslate;\n return;\n }\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n if (diff > 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] - (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.activeIndex + 1] + swiper.params.spaceBetween : 0) - swiper.params.spaceBetween : swiper.minTranslate())) {\n swiper.loopFix({\n direction: 'prev',\n setTranslate: true,\n activeSlideIndex: 0\n });\n }\n if (data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n }\n }\n } else if (diff < 0) {\n if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween + (params.slidesPerView !== 'auto' && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween : 0) : swiper.maxTranslate())) {\n swiper.loopFix({\n direction: 'next',\n setTranslate: true,\n activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n });\n }\n if (data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) {\n data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n }\n }\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n }\n\n // Directions locks\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n }\n\n // Threshold\n if (params.threshold > 0) {\n if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n if (!data.allowThresholdMove) {\n data.allowThresholdMove = true;\n touches.startX = touches.currentX;\n touches.startY = touches.currentY;\n data.currentTranslate = data.startTranslate;\n touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n return;\n }\n } else {\n data.currentTranslate = data.startTranslate;\n return;\n }\n }\n if (!params.followFinger || params.cssMode) return;\n\n // Update active index in free mode\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n }\n // Update progress\n swiper.updateProgress(data.currentTranslate);\n // Update translate\n swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let targetTouch;\n const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel';\n if (!isTouchEvent) {\n if (data.touchId !== null) return; // return from pointer if we use touch\n if (e.pointerId !== data.pointerId) return;\n targetTouch = e;\n } else {\n targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0];\n if (!targetTouch || targetTouch.identifier !== data.touchId) return;\n }\n if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) {\n const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView);\n if (!proceed) {\n return;\n }\n }\n data.pointerId = null;\n data.touchId = null;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n if (!params.simulateTouch && e.pointerType === 'mouse') return;\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n data.allowTouchCallbacks = false;\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n // Return Grab Cursor\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n }\n\n // Time diff\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime;\n\n // Tap, doubleTap, Click\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);\n swiper.emit('tap click', e);\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n if (params.cssMode) {\n return;\n }\n if (params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n }\n\n // Find current slide\n const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop;\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (swipeToLast || currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n }\n // Find current slide size\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n if (swiper.swipeDirection === 'next') {\n if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n }\n if (swiper.swipeDirection === 'prev') {\n if (ratio > 1 - params.longSwipesRatio) {\n swiper.slideTo(stopIndex + increment);\n } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n swiper.slideTo(rewindLastIndex);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n } else {\n // Short swipes\n if (!params.shortSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\n if (swiper.swipeDirection === 'prev') {\n swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n }\n } else if (e.target === swiper.navigation.nextEl) {\n swiper.slideTo(stopIndex + increment);\n } else {\n swiper.slideTo(stopIndex);\n }\n }\n}\n\nfunction onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return;\n\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Save locks\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper;\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n // Disable locks on resize\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n const isVirtualLoop = isVirtual && params.loop;\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n if (swiper.params.loop && !isVirtual) {\n swiper.slideToLoop(swiper.realIndex, 0, false, true);\n } else {\n swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n }\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n clearTimeout(swiper.autoplay.resizeTimeout);\n swiper.autoplay.resizeTimeout = setTimeout(() => {\n if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n swiper.autoplay.resume();\n }\n }, 500);\n }\n // Return locks after resize\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}\n\nfunction onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}\n\nfunction onScroll() {\n const swiper = this;\n const {\n wrapperEl,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return;\n swiper.previousTranslate = swiper.translate;\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n }\n // eslint-disable-next-line\n if (swiper.translate === 0) swiper.translate = 0;\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n swiper.emit('setTranslate', swiper.translate, false);\n}\n\nfunction onLoad(e) {\n const swiper = this;\n processLazyPreloader(swiper, e.target);\n if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n return;\n }\n swiper.update();\n}\n\nfunction onDocumentTouchStart() {\n const swiper = this;\n if (swiper.documentTouchHandlerProceeded) return;\n swiper.documentTouchHandlerProceeded = true;\n if (swiper.params.touchReleaseOnEdges) {\n swiper.el.style.touchAction = 'auto';\n }\n}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n el,\n wrapperEl,\n device\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method;\n if (!el || typeof el === 'string') return;\n\n // Touch Events\n document[domMethod]('touchstart', swiper.onDocumentTouchStart, {\n passive: false,\n capture\n });\n el[domMethod]('touchstart', swiper.onTouchStart, {\n passive: false\n });\n el[domMethod]('pointerdown', swiper.onTouchStart, {\n passive: false\n });\n document[domMethod]('touchmove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('pointermove', swiper.onTouchMove, {\n passive: false,\n capture\n });\n document[domMethod]('touchend', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerup', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointercancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('touchcancel', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerout', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('pointerleave', swiper.onTouchEnd, {\n passive: true\n });\n document[domMethod]('contextmenu', swiper.onTouchEnd, {\n passive: true\n });\n\n // Prevent Links Clicks\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n }\n\n // Resize handler\n if (params.updateOnWindowResize) {\n swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n } else {\n swiper[swiperMethod]('observerUpdate', onResize, true);\n }\n\n // Images loader\n el[domMethod]('load', swiper.onLoad, {\n capture: true\n });\n};\nfunction attachEvents() {\n const swiper = this;\n const {\n params\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper);\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n swiper.onClick = onClick.bind(swiper);\n swiper.onLoad = onLoad.bind(swiper);\n events(swiper, 'on');\n}\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\nvar events$1 = {\n attachEvents,\n detachEvents\n};\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n const swiper = this;\n const {\n realIndex,\n initialized,\n params,\n el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n\n // Get breakpoint for window width and update parameters\n const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n const wasMultiRow = isGridEnabled(swiper, params);\n const isMultiRow = isGridEnabled(swiper, breakpointParams);\n const wasGrabCursor = swiper.params.grabCursor;\n const isGrabCursor = breakpointParams.grabCursor;\n const wasEnabled = params.enabled;\n if (wasMultiRow && !isMultiRow) {\n el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n el.classList.add(`${params.containerModifierClass}grid`);\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n el.classList.add(`${params.containerModifierClass}grid-column`);\n }\n swiper.emitContainerClasses();\n }\n if (wasGrabCursor && !isGrabCursor) {\n swiper.unsetGrabCursor();\n } else if (!wasGrabCursor && isGrabCursor) {\n swiper.setGrabCursor();\n }\n\n // Toggle navigation, pagination, scrollbar\n ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n if (typeof breakpointParams[prop] === 'undefined') return;\n const wasModuleEnabled = params[prop] && params[prop].enabled;\n const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n if (wasModuleEnabled && !isModuleEnabled) {\n swiper[prop].disable();\n }\n if (!wasModuleEnabled && isModuleEnabled) {\n swiper[prop].enable();\n }\n });\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n const wasLoop = params.loop;\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n const hasLoop = swiper.params.loop;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n if (initialized) {\n if (needsReLoop) {\n swiper.loopDestroy();\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (!wasLoop && hasLoop) {\n swiper.loopCreate(realIndex);\n swiper.updateSlides();\n } else if (wasLoop && !hasLoop) {\n swiper.loopDestroy();\n }\n }\n swiper.emit('breakpoint', breakpointParams);\n}\n\nfunction getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\n if (!breakpoints || base === 'container' && !containerEl) return undefined;\n let breakpoint = false;\n const window = getWindow();\n const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n const points = Object.keys(breakpoints).map(point => {\n if (typeof point === 'string' && point.indexOf('@') === 0) {\n const minRatio = parseFloat(point.substr(1));\n const value = currentHeight * minRatio;\n return {\n value,\n point\n };\n }\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n if (base === 'window') {\n if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n breakpoint = point;\n }\n } else if (value <= containerEl.clientWidth) {\n breakpoint = point;\n }\n }\n return breakpoint || 'max';\n}\n\nvar breakpoints = {\n setBreakpoint,\n getBreakpoint\n};\n\nfunction prepareClasses(entries, prefix) {\n const resultClasses = [];\n entries.forEach(item => {\n if (typeof item === 'object') {\n Object.keys(item).forEach(classNames => {\n if (item[classNames]) {\n resultClasses.push(prefix + classNames);\n }\n });\n } else if (typeof item === 'string') {\n resultClasses.push(prefix + item);\n }\n });\n return resultClasses;\n}\nfunction addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n el,\n device\n } = swiper;\n // prettier-ignore\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'free-mode': swiper.params.freeMode && params.freeMode.enabled\n }, {\n 'autoheight': params.autoHeight\n }, {\n 'rtl': rtl\n }, {\n 'grid': params.grid && params.grid.rows > 1\n }, {\n 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n }, {\n 'android': device.android\n }, {\n 'ios': device.ios\n }, {\n 'css-mode': params.cssMode\n }, {\n 'centered': params.cssMode && params.centeredSlides\n }, {\n 'watch-progress': params.watchSlidesProgress\n }], params.containerModifierClass);\n classNames.push(...suffixes);\n el.classList.add(...classNames);\n swiper.emitContainerClasses();\n}\n\nfunction removeClasses() {\n const swiper = this;\n const {\n el,\n classNames\n } = swiper;\n if (!el || typeof el === 'string') return;\n el.classList.remove(...classNames);\n swiper.emitContainerClasses();\n}\n\nvar classes = {\n addClasses,\n removeClasses\n};\n\nfunction checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n if (slidesOffsetBefore) {\n const lastSlideIndex = swiper.slides.length - 1;\n const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n swiper.isLocked = swiper.size > lastSlideRightEdge;\n } else {\n swiper.isLocked = swiper.snapGrid.length === 1;\n }\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\nvar checkOverflow$1 = {\n checkOverflow\n};\n\nvar defaults = {\n init: true,\n direction: 'horizontal',\n oneWayMovement: false,\n swiperElementNodeName: 'SWIPER-CONTAINER',\n touchEventsTarget: 'wrapper',\n initialSlide: 0,\n speed: 300,\n cssMode: false,\n updateOnWindowResize: true,\n resizeObserver: true,\n nested: false,\n createElements: false,\n eventsPrefix: 'swiper',\n enabled: true,\n focusableElements: 'input, select, option, textarea, button, video, label',\n // Overrides\n width: null,\n height: null,\n //\n preventInteractionOnTransition: false,\n // ssr\n userAgent: null,\n url: null,\n // To support iOS's swipe-to-go-back gesture (when being used in-app).\n edgeSwipeDetection: false,\n edgeSwipeThreshold: 20,\n // Autoheight\n autoHeight: false,\n // Set wrapper width\n setWrapperSize: false,\n // Virtual Translate\n virtualTranslate: false,\n // Effects\n effect: 'slide',\n // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n // Breakpoints\n breakpoints: undefined,\n breakpointsBase: 'window',\n // Slides grid\n spaceBetween: 0,\n slidesPerView: 1,\n slidesPerGroup: 1,\n slidesPerGroupSkip: 0,\n slidesPerGroupAuto: false,\n centeredSlides: false,\n centeredSlidesBounds: false,\n slidesOffsetBefore: 0,\n // in px\n slidesOffsetAfter: 0,\n // in px\n normalizeSlideIndex: true,\n centerInsufficientSlides: false,\n // Disable swiper and hide navigation when container not overflow\n watchOverflow: true,\n // Round length\n roundLengths: false,\n // Touches\n touchRatio: 1,\n touchAngle: 45,\n simulateTouch: true,\n shortSwipes: true,\n longSwipes: true,\n longSwipesRatio: 0.5,\n longSwipesMs: 300,\n followFinger: true,\n allowTouchMove: true,\n threshold: 5,\n touchMoveStopPropagation: false,\n touchStartPreventDefault: true,\n touchStartForcePreventDefault: false,\n touchReleaseOnEdges: false,\n // Unique Navigation Elements\n uniqueNavElements: true,\n // Resistance\n resistance: true,\n resistanceRatio: 0.85,\n // Progress\n watchSlidesProgress: false,\n // Cursor\n grabCursor: false,\n // Clicks\n preventClicks: true,\n preventClicksPropagation: true,\n slideToClickedSlide: false,\n // loop\n loop: false,\n loopAddBlankSlides: true,\n loopAdditionalSlides: 0,\n loopPreventsSliding: true,\n // rewind\n rewind: false,\n // Swiping/no swiping\n allowSlidePrev: true,\n allowSlideNext: true,\n swipeHandler: null,\n // '.swipe-handler',\n noSwiping: true,\n noSwipingClass: 'swiper-no-swiping',\n noSwipingSelector: null,\n // Passive Listeners\n passiveListeners: true,\n maxBackfaceHiddenSlides: 10,\n // NS\n containerModifierClass: 'swiper-',\n // NEW\n slideClass: 'swiper-slide',\n slideBlankClass: 'swiper-slide-blank',\n slideActiveClass: 'swiper-slide-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideFullyVisibleClass: 'swiper-slide-fully-visible',\n slideNextClass: 'swiper-slide-next',\n slidePrevClass: 'swiper-slide-prev',\n wrapperClass: 'swiper-wrapper',\n lazyPreloaderClass: 'swiper-lazy-preloader',\n lazyPreloadPrevNext: 0,\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};\n\nfunction moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj) {\n if (obj === void 0) {\n obj = {};\n }\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {\n params[moduleParamName].auto = true;\n }\n if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {\n params[moduleParamName].auto = true;\n }\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events: events$1,\n breakpoints,\n checkOverflow: checkOverflow$1,\n classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n constructor() {\n let el;\n let params;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n params = args[0];\n } else {\n [el, params] = args;\n }\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n const document = getDocument();\n if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n const swipers = [];\n document.querySelectorAll(params.el).forEach(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n // eslint-disable-next-line no-constructor-return\n return swipers;\n }\n\n // Swiper Instance\n const swiper = this;\n swiper.__swiper__ = true;\n swiper.support = getSupport();\n swiper.device = getDevice({\n userAgent: params.userAgent\n });\n swiper.browser = getBrowser();\n swiper.eventsListeners = {};\n swiper.eventsAnyListeners = [];\n swiper.modules = [...swiper.__modules__];\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\n params,\n swiper,\n extendParams: moduleExtendParams(params, allModulesParams),\n on: swiper.on.bind(swiper),\n once: swiper.once.bind(swiper),\n off: swiper.off.bind(swiper),\n emit: swiper.emit.bind(swiper)\n });\n });\n\n // Extend defaults with modules params\n const swiperParams = extend({}, defaults, allModulesParams);\n\n // Extend defaults with passed params\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params);\n\n // add event listeners\n if (swiper.params && swiper.params.on) {\n Object.keys(swiper.params.on).forEach(eventName => {\n swiper.on(eventName, swiper.params.on[eventName]);\n });\n }\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n }\n\n // Extend Swiper\n Object.assign(swiper, {\n enabled: swiper.params.enabled,\n el,\n // Classes\n classNames: [],\n // Slides\n slides: [],\n slidesGrid: [],\n snapGrid: [],\n slidesSizesGrid: [],\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\n // Indexes\n activeIndex: 0,\n realIndex: 0,\n //\n isBeginning: true,\n isEnd: false,\n // Props\n translate: 0,\n previousTranslate: 0,\n progress: 0,\n velocity: 0,\n animating: false,\n cssOverflowAdjustment() {\n // Returns 0 unless `translate` is > 2**23\n // Should be subtracted from css values to prevent overflow\n return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n },\n // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEventsData: {\n isTouched: undefined,\n isMoved: undefined,\n allowTouchCallbacks: undefined,\n touchStartTime: undefined,\n isScrolling: undefined,\n currentTranslate: undefined,\n startTranslate: undefined,\n allowThresholdMove: undefined,\n // Form elements to match\n focusableElements: swiper.params.focusableElements,\n // Last click time\n lastClickTime: 0,\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n startMoving: undefined,\n pointerId: null,\n touchId: null\n },\n // Clicks\n allowClick: true,\n // Touches\n allowTouchMove: swiper.params.allowTouchMove,\n touches: {\n startX: 0,\n startY: 0,\n currentX: 0,\n currentY: 0,\n diff: 0\n },\n // Images\n imagesToLoad: [],\n imagesLoaded: 0\n });\n swiper.emit('_swiper');\n\n // Init\n if (swiper.params.init) {\n swiper.init();\n }\n\n // Return app instance\n // eslint-disable-next-line no-constructor-return\n return swiper;\n }\n getDirectionLabel(property) {\n if (this.isHorizontal()) {\n return property;\n }\n // prettier-ignore\n return {\n 'width': 'height',\n 'margin-top': 'margin-left',\n 'margin-bottom ': 'margin-right',\n 'margin-left': 'margin-top',\n 'margin-right': 'margin-bottom',\n 'padding-left': 'padding-top',\n 'padding-right': 'padding-bottom',\n 'marginRight': 'marginBottom'\n }[property];\n }\n getSlideIndex(slideEl) {\n const {\n slidesEl,\n params\n } = this;\n const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n const firstSlideIndex = elementIndex(slides[0]);\n return elementIndex(slideEl) - firstSlideIndex;\n }\n getSlideIndexByData(index) {\n return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]);\n }\n recalcSlides() {\n const swiper = this;\n const {\n slidesEl,\n params\n } = swiper;\n swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n }\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n swiper.emit('enable');\n }\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n swiper.emit('disable');\n }\n setProgress(progress, speed) {\n const swiper = this;\n progress = Math.min(Math.max(progress, 0), 1);\n const min = swiper.minTranslate();\n const max = swiper.maxTranslate();\n const current = (max - min) * progress + min;\n swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n emitContainerClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const cls = swiper.el.className.split(' ').filter(className => {\n return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n });\n swiper.emit('_containerClasses', cls.join(' '));\n }\n getSlideClasses(slideEl) {\n const swiper = this;\n if (swiper.destroyed) return '';\n return slideEl.className.split(' ').filter(className => {\n return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n }).join(' ');\n }\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.forEach(slideEl => {\n const classNames = swiper.getSlideClasses(slideEl);\n updates.push({\n slideEl,\n classNames\n });\n swiper.emit('_slideClass', slideEl, classNames);\n });\n swiper.emit('_slideClasses', updates);\n }\n slidesPerViewDynamic(view, exact) {\n if (view === void 0) {\n view = 'current';\n }\n if (exact === void 0) {\n exact = false;\n }\n const swiper = this;\n const {\n params,\n slides,\n slidesGrid,\n slidesSizesGrid,\n size: swiperSize,\n activeIndex\n } = swiper;\n let spv = 1;\n if (typeof params.slidesPerView === 'number') return params.slidesPerView;\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0;\n let breakLoop;\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += Math.ceil(slides[i].swiperSlideSize);\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\n }\n } else {\n // eslint-disable-next-line\n if (view === 'current') {\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n } else {\n // previous\n for (let i = activeIndex - 1; i >= 0; i -= 1) {\n const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n return spv;\n }\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper;\n // Breakpoints\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n }\n });\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n function setTranslate() {\n const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n swiper.setTranslate(newTranslate);\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n let translated;\n if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n setTranslate();\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n translated = swiper.slideTo(slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n if (!translated) {\n setTranslate();\n }\n }\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n swiper.emit('update');\n }\n changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n const swiper = this;\n const currentDirection = swiper.params.direction;\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.forEach(slideEl => {\n if (newDirection === 'vertical') {\n slideEl.style.width = '';\n } else {\n slideEl.style.height = '';\n }\n });\n swiper.emit('changeDirection');\n if (needUpdate) swiper.update();\n return swiper;\n }\n changeLanguageDirection(direction) {\n const swiper = this;\n if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n swiper.rtl = direction === 'rtl';\n swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n if (swiper.rtl) {\n swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'rtl';\n } else {\n swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n swiper.el.dir = 'ltr';\n }\n swiper.update();\n }\n mount(element) {\n const swiper = this;\n if (swiper.mounted) return true;\n\n // Find el\n let el = element || swiper.params.el;\n if (typeof el === 'string') {\n el = document.querySelector(el);\n }\n if (!el) {\n return false;\n }\n el.swiper = swiper;\n if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) {\n swiper.isElement = true;\n }\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = el.shadowRoot.querySelector(getWrapperSelector());\n // Children needs to return slot items\n return res;\n }\n return elementChildren(el, getWrapperSelector())[0];\n };\n // Find Wrapper\n let wrapperEl = getWrapper();\n if (!wrapperEl && swiper.params.createElements) {\n wrapperEl = createElement('div', swiper.params.wrapperClass);\n el.append(wrapperEl);\n elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n wrapperEl.append(slideEl);\n });\n }\n Object.assign(swiper, {\n el,\n wrapperEl,\n slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n hostEl: swiper.isElement ? el.parentNode.host : el,\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n });\n return true;\n }\n init(el) {\n const swiper = this;\n if (swiper.initialized) return swiper;\n const mounted = swiper.mount(el);\n if (mounted === false) return swiper;\n swiper.emit('beforeInit');\n\n // Set breakpoint\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n // Add Classes\n swiper.addClasses();\n\n // Update size\n swiper.updateSize();\n\n // Update slides\n swiper.updateSlides();\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n }\n\n // Set Grab Cursor\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n // Slide To Initial Slide\n if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n }\n\n // Create loop\n if (swiper.params.loop) {\n swiper.loopCreate();\n }\n\n // Attach events\n swiper.attachEvents();\n const lazyElements = [...swiper.el.querySelectorAll('[loading=\"lazy\"]')];\n if (swiper.isElement) {\n lazyElements.push(...swiper.hostEl.querySelectorAll('[loading=\"lazy\"]'));\n }\n lazyElements.forEach(imageEl => {\n if (imageEl.complete) {\n processLazyPreloader(swiper, imageEl);\n } else {\n imageEl.addEventListener('load', e => {\n processLazyPreloader(swiper, e.target);\n });\n }\n });\n preload(swiper);\n\n // Init Flag\n swiper.initialized = true;\n preload(swiper);\n\n // Emit\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n const swiper = this;\n const {\n params,\n el,\n wrapperEl,\n slides\n } = swiper;\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n swiper.emit('beforeDestroy');\n\n // Init Flag\n swiper.initialized = false;\n\n // Detach events\n swiper.detachEvents();\n\n // Destroy loop\n if (params.loop) {\n swiper.loopDestroy();\n }\n\n // Cleanup styles\n if (cleanStyles) {\n swiper.removeClasses();\n if (el && typeof el !== 'string') {\n el.removeAttribute('style');\n }\n if (wrapperEl) {\n wrapperEl.removeAttribute('style');\n }\n if (slides && slides.length) {\n slides.forEach(slideEl => {\n slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n slideEl.removeAttribute('style');\n slideEl.removeAttribute('data-swiper-slide-index');\n });\n }\n }\n swiper.emit('destroy');\n\n // Detach emitter events\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n if (deleteInstance !== false) {\n if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.swiper = null;\n }\n deleteProps(swiper);\n }\n swiper.destroyed = true;\n return null;\n }\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n static get extendedDefaults() {\n return extendedDefaults;\n }\n static get defaults() {\n return defaults;\n }\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n Swiper.installModule(module);\n return Swiper;\n }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n });\n});\nSwiper.use([Resize, Observer]);\n\nexport { Swiper as S, defaults as d };\n","import { e as elementChildren, c as createElement } from './utils.mjs';\n\nfunction createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n if (!element) {\n element = createElement('div', checkProps[key]);\n element.className = checkProps[key];\n swiper.el.append(element);\n }\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n return params;\n}\n\nexport { createElementIfNotDefined as c };\n","import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray } from '../shared/utils.mjs';\n\nfunction Navigation(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n extendParams({\n navigation: {\n nextEl: null,\n prevEl: null,\n hideOnClick: false,\n disabledClass: 'swiper-button-disabled',\n hiddenClass: 'swiper-button-hidden',\n lockClass: 'swiper-button-lock',\n navigationDisabledClass: 'swiper-navigation-disabled'\n }\n });\n swiper.navigation = {\n nextEl: null,\n prevEl: null\n };\n function getEl(el) {\n let res;\n if (el && typeof el === 'string' && swiper.isElement) {\n res = swiper.el.querySelector(el) || swiper.hostEl.querySelector(el);\n if (res) return res;\n }\n if (el) {\n if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n res = swiper.el.querySelector(el);\n } else if (res && res.length === 1) {\n res = res[0];\n }\n }\n if (el && !res) return el;\n // if (Array.isArray(res) && res.length === 1) res = res[0];\n return res;\n }\n function toggleEl(el, disabled) {\n const params = swiper.params.navigation;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (subEl) {\n subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n }\n });\n }\n function update() {\n // Update Navigation Buttons\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (swiper.params.loop) {\n toggleEl(prevEl, false);\n toggleEl(nextEl, false);\n return;\n }\n toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n emit('navigationPrev');\n }\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n emit('navigationNext');\n }\n function init() {\n const params = swiper.params.navigation;\n swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n nextEl: 'swiper-button-next',\n prevEl: 'swiper-button-prev'\n });\n if (!(params.nextEl || params.prevEl)) return;\n let nextEl = getEl(params.nextEl);\n let prevEl = getEl(params.prevEl);\n Object.assign(swiper.navigation, {\n nextEl,\n prevEl\n });\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const initButton = (el, dir) => {\n if (el) {\n el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n }\n if (!swiper.enabled && el) {\n el.classList.add(...params.lockClass.split(' '));\n }\n };\n nextEl.forEach(el => initButton(el, 'next'));\n prevEl.forEach(el => initButton(el, 'prev'));\n }\n function destroy() {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const destroyButton = (el, dir) => {\n el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n };\n nextEl.forEach(el => destroyButton(el, 'next'));\n prevEl.forEach(el => destroyButton(el, 'prev'));\n }\n on('init', () => {\n if (swiper.params.navigation.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n update();\n }\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (swiper.enabled) {\n update();\n return;\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass));\n });\n on('click', (_s, e) => {\n let {\n nextEl,\n prevEl\n } = swiper.navigation;\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n const targetEl = e.target;\n let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl);\n if (swiper.isElement && !targetIsButton) {\n const path = e.path || e.composedPath && e.composedPath();\n if (path) {\n targetIsButton = path.find(pathEl => nextEl.includes(pathEl) || prevEl.includes(pathEl));\n }\n }\n if (swiper.params.navigation.hideOnClick && !targetIsButton) {\n if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n let isHidden;\n if (nextEl.length) {\n isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n } else if (prevEl.length) {\n isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n }\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n init();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n destroy();\n };\n Object.assign(swiper.navigation, {\n enable,\n disable,\n update,\n init,\n destroy\n });\n}\n\nexport { Navigation as default };\n","function classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n return `.${classes.trim().replace(/([\\.:!+\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}\n\nexport { classesToSelector as c };\n","import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { m as makeElementsArray, f as elementOuterSize, h as elementIndex, a as elementParents } from '../shared/utils.mjs';\n\nfunction Pagination(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const pfx = 'swiper-pagination';\n extendParams({\n pagination: {\n el: null,\n bulletElement: 'span',\n clickable: false,\n hideOnClick: false,\n renderBullet: null,\n renderProgressbar: null,\n renderFraction: null,\n renderCustom: null,\n progressbarOpposite: false,\n type: 'bullets',\n // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n dynamicBullets: false,\n dynamicMainBullets: 1,\n formatFractionCurrent: number => number,\n formatFractionTotal: number => number,\n bulletClass: `${pfx}-bullet`,\n bulletActiveClass: `${pfx}-bullet-active`,\n modifierClass: `${pfx}-`,\n currentClass: `${pfx}-current`,\n totalClass: `${pfx}-total`,\n hiddenClass: `${pfx}-hidden`,\n progressbarFillClass: `${pfx}-progressbar-fill`,\n progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n clickableClass: `${pfx}-clickable`,\n lockClass: `${pfx}-lock`,\n horizontalClass: `${pfx}-horizontal`,\n verticalClass: `${pfx}-vertical`,\n paginationDisabledClass: `${pfx}-disabled`\n }\n });\n swiper.pagination = {\n el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\n }\n function setSideBullets(bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n if (!bulletEl) return;\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}`);\n bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n if (bulletEl) {\n bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\n }\n }\n }\n function getMoveDirection(prevIndex, nextIndex, length) {\n prevIndex = prevIndex % length;\n nextIndex = nextIndex % length;\n if (nextIndex === prevIndex + 1) {\n return 'next';\n } else if (nextIndex === prevIndex - 1) {\n return 'previous';\n }\n return;\n }\n function onBulletClick(e) {\n const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));\n if (!bulletEl) {\n return;\n }\n e.preventDefault();\n const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;\n if (swiper.params.loop) {\n if (swiper.realIndex === index) return;\n const moveDirection = getMoveDirection(swiper.realIndex, index, swiper.slides.length);\n if (moveDirection === 'next') {\n swiper.slideNext();\n } else if (moveDirection === 'previous') {\n swiper.slidePrev();\n } else {\n swiper.slideToLoop(index);\n }\n } else {\n swiper.slideTo(index);\n }\n }\n function update() {\n // Render || Update Pagination bullets/items\n const rtl = swiper.rtl;\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n // Current/Total\n let current;\n let previousIndex;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.loop) {\n previousIndex = swiper.previousRealIndex || 0;\n current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n previousIndex = swiper.previousSnapIndex;\n } else {\n previousIndex = swiper.previousIndex || 0;\n current = swiper.activeIndex || 0;\n }\n // Types\n if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n const bullets = swiper.pagination.bullets;\n let firstIndex;\n let lastIndex;\n let midIndex;\n if (params.dynamicBullets) {\n bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);\n el.forEach(subEl => {\n subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n });\n if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\n dynamicBulletIndex += current - (previousIndex || 0);\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\n }\n firstIndex = Math.max(current - dynamicBulletIndex, 0);\n lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n midIndex = (lastIndex + firstIndex) / 2;\n }\n bullets.forEach(bulletEl => {\n const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();\n bulletEl.classList.remove(...classesToRemove);\n });\n if (el.length > 1) {\n bullets.forEach(bullet => {\n const bulletIndex = elementIndex(bullet);\n if (bulletIndex === current) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n } else if (swiper.isElement) {\n bullet.setAttribute('part', 'bullet');\n }\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n if (bulletIndex === firstIndex) {\n setSideBullets(bullet, 'prev');\n }\n if (bulletIndex === lastIndex) {\n setSideBullets(bullet, 'next');\n }\n }\n });\n } else {\n const bullet = bullets[current];\n if (bullet) {\n bullet.classList.add(...params.bulletActiveClass.split(' '));\n }\n if (swiper.isElement) {\n bullets.forEach((bulletEl, bulletIndex) => {\n bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');\n });\n }\n if (params.dynamicBullets) {\n const firstDisplayedBullet = bullets[firstIndex];\n const lastDisplayedBullet = bullets[lastIndex];\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n if (bullets[i]) {\n bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n }\n }\n setSideBullets(firstDisplayedBullet, 'prev');\n setSideBullets(lastDisplayedBullet, 'next');\n }\n }\n if (params.dynamicBullets) {\n const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n const offsetProp = rtl ? 'right' : 'left';\n bullets.forEach(bullet => {\n bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;\n });\n }\n }\n el.forEach((subEl, subElIndex) => {\n if (params.type === 'fraction') {\n subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => {\n fractionEl.textContent = params.formatFractionCurrent(current + 1);\n });\n subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => {\n totalEl.textContent = params.formatFractionTotal(total);\n });\n }\n if (params.type === 'progressbar') {\n let progressbarDirection;\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => {\n progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;\n progressEl.style.transitionDuration = `${swiper.params.speed}ms`;\n });\n }\n if (params.type === 'custom' && params.renderCustom) {\n subEl.innerHTML = params.renderCustom(swiper, current + 1, total);\n if (subElIndex === 0) emit('paginationRender', subEl);\n } else {\n if (subElIndex === 0) emit('paginationRender', subEl);\n emit('paginationUpdate', subEl);\n }\n if (swiper.params.watchOverflow && swiper.enabled) {\n subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n }\n });\n }\n function render() {\n // Render Container\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length;\n let el = swiper.pagination.el;\n el = makeElementsArray(el);\n let paginationHTML = '';\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\n for (let i = 0; i < numberOfBullets; i += 1) {\n if (params.renderBullet) {\n paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n } else {\n // prettier-ignore\n paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part=\"bullet\"' : ''} class=\"${params.bulletClass}\"></${params.bulletElement}>`;\n }\n }\n }\n if (params.type === 'fraction') {\n if (params.renderFraction) {\n paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n } else {\n paginationHTML = `<span class=\"${params.currentClass}\"></span>` + ' / ' + `<span class=\"${params.totalClass}\"></span>`;\n }\n }\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = `<span class=\"${params.progressbarFillClass}\"></span>`;\n }\n }\n swiper.pagination.bullets = [];\n el.forEach(subEl => {\n if (params.type !== 'custom') {\n subEl.innerHTML = paginationHTML || '';\n }\n if (params.type === 'bullets') {\n swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));\n }\n });\n if (params.type !== 'custom') {\n emit('paginationRender', el[0]);\n }\n }\n function init() {\n swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n el: 'swiper-pagination'\n });\n const params = swiper.params.pagination;\n if (!params.el) return;\n let el;\n if (typeof params.el === 'string' && swiper.isElement) {\n el = swiper.el.querySelector(params.el);\n }\n if (!el && typeof params.el === 'string') {\n el = [...document.querySelectorAll(params.el)];\n }\n if (!el) {\n el = params.el;\n }\n if (!el || el.length === 0) return;\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {\n el = [...swiper.el.querySelectorAll(params.el)];\n // check if it belongs to another nested Swiper\n if (el.length > 1) {\n el = el.filter(subEl => {\n if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;\n return true;\n })[0];\n }\n }\n if (Array.isArray(el) && el.length === 1) el = el[0];\n Object.assign(swiper.pagination, {\n el\n });\n el = makeElementsArray(el);\n el.forEach(subEl => {\n if (params.type === 'bullets' && params.clickable) {\n subEl.classList.add(...(params.clickableClass || '').split(' '));\n }\n subEl.classList.add(params.modifierClass + params.type);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.type === 'bullets' && params.dynamicBullets) {\n subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n subEl.classList.add(params.progressbarOppositeClass);\n }\n if (params.clickable) {\n subEl.addEventListener('click', onBulletClick);\n }\n if (!swiper.enabled) {\n subEl.classList.add(params.lockClass);\n }\n });\n }\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n let el = swiper.pagination.el;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.hiddenClass);\n subEl.classList.remove(params.modifierClass + params.type);\n subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (params.clickable) {\n subEl.classList.remove(...(params.clickableClass || '').split(' '));\n subEl.removeEventListener('click', onBulletClick);\n }\n });\n }\n if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));\n }\n on('changeDirection', () => {\n if (!swiper.pagination || !swiper.pagination.el) return;\n const params = swiper.params.pagination;\n let {\n el\n } = swiper.pagination;\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.classList.remove(params.horizontalClass, params.verticalClass);\n subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n });\n });\n on('init', () => {\n if (swiper.params.pagination.enabled === false) {\n // eslint-disable-next-line\n disable();\n } else {\n init();\n render();\n update();\n }\n });\n on('activeIndexChange', () => {\n if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n update();\n });\n on('snapGridLengthChange', () => {\n render();\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));\n }\n });\n on('lock unlock', () => {\n update();\n });\n on('click', (_s, e) => {\n const targetEl = e.target;\n const el = makeElementsArray(swiper.pagination.el);\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {\n if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));\n }\n });\n const enable = () => {\n swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));\n }\n init();\n render();\n update();\n };\n const disable = () => {\n swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);\n let {\n el\n } = swiper.pagination;\n if (el) {\n el = makeElementsArray(el);\n el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));\n }\n destroy();\n };\n Object.assign(swiper.pagination, {\n enable,\n disable,\n render,\n update,\n init,\n destroy\n });\n}\n\nexport { Pagination as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElement, h as elementIndex, m as makeElementsArray } from '../shared/utils.mjs';\n\nfunction A11y(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n a11y: {\n enabled: true,\n notificationClass: 'swiper-notification',\n prevSlideMessage: 'Previous slide',\n nextSlideMessage: 'Next slide',\n firstSlideMessage: 'This is the first slide',\n lastSlideMessage: 'This is the last slide',\n paginationBulletMessage: 'Go to slide {{index}}',\n slideLabelMessage: '{{index}} / {{slidesLength}}',\n containerMessage: null,\n containerRoleDescriptionMessage: null,\n containerRole: null,\n itemRoleDescriptionMessage: null,\n slideRole: 'group',\n id: null,\n scrollOnFocus: true\n }\n });\n swiper.a11y = {\n clicked: false\n };\n let liveRegion = null;\n let preventFocusHandler;\n let focusTargetSlideEl;\n let visibilityChangedTimestamp = new Date().getTime();\n function notify(message) {\n const notification = liveRegion;\n if (notification.length === 0) return;\n notification.innerHTML = '';\n notification.innerHTML = message;\n }\n function getRandomNumber(size) {\n if (size === void 0) {\n size = 16;\n }\n const randomChar = () => Math.round(16 * Math.random()).toString(16);\n return 'x'.repeat(size).replace(/x/g, randomChar);\n }\n function makeElFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '0');\n });\n }\n function makeElNotFocusable(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('tabIndex', '-1');\n });\n }\n function addElRole(el, role) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('role', role);\n });\n }\n function addElRoleDescription(el, description) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-roledescription', description);\n });\n }\n function addElControls(el, controls) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-controls', controls);\n });\n }\n function addElLabel(el, label) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-label', label);\n });\n }\n function addElId(el, id) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('id', id);\n });\n }\n function addElLive(el, live) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-live', live);\n });\n }\n function disableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', true);\n });\n }\n function enableEl(el) {\n el = makeElementsArray(el);\n el.forEach(subEl => {\n subEl.setAttribute('aria-disabled', false);\n });\n }\n function onEnterOrSpaceKey(e) {\n if (e.keyCode !== 13 && e.keyCode !== 32) return;\n const params = swiper.params.a11y;\n const targetEl = e.target;\n if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) {\n if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return;\n }\n if (swiper.navigation && swiper.navigation.prevEl && swiper.navigation.nextEl) {\n const prevEls = makeElementsArray(swiper.navigation.prevEl);\n const nextEls = makeElementsArray(swiper.navigation.nextEl);\n if (nextEls.includes(targetEl)) {\n if (!(swiper.isEnd && !swiper.params.loop)) {\n swiper.slideNext();\n }\n if (swiper.isEnd) {\n notify(params.lastSlideMessage);\n } else {\n notify(params.nextSlideMessage);\n }\n }\n if (prevEls.includes(targetEl)) {\n if (!(swiper.isBeginning && !swiper.params.loop)) {\n swiper.slidePrev();\n }\n if (swiper.isBeginning) {\n notify(params.firstSlideMessage);\n } else {\n notify(params.prevSlideMessage);\n }\n }\n }\n if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) {\n targetEl.click();\n }\n }\n function updateNavigation() {\n if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n const {\n nextEl,\n prevEl\n } = swiper.navigation;\n if (prevEl) {\n if (swiper.isBeginning) {\n disableEl(prevEl);\n makeElNotFocusable(prevEl);\n } else {\n enableEl(prevEl);\n makeElFocusable(prevEl);\n }\n }\n if (nextEl) {\n if (swiper.isEnd) {\n disableEl(nextEl);\n makeElNotFocusable(nextEl);\n } else {\n enableEl(nextEl);\n makeElFocusable(nextEl);\n }\n }\n }\n function hasPagination() {\n return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n }\n function hasClickablePagination() {\n return hasPagination() && swiper.params.pagination.clickable;\n }\n function updatePagination() {\n const params = swiper.params.a11y;\n if (!hasPagination()) return;\n swiper.pagination.bullets.forEach(bulletEl => {\n if (swiper.params.pagination.clickable) {\n makeElFocusable(bulletEl);\n if (!swiper.params.pagination.renderBullet) {\n addElRole(bulletEl, 'button');\n addElLabel(bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, elementIndex(bulletEl) + 1));\n }\n }\n if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) {\n bulletEl.setAttribute('aria-current', 'true');\n } else {\n bulletEl.removeAttribute('aria-current');\n }\n });\n }\n const initNavEl = (el, wrapperId, message) => {\n makeElFocusable(el);\n if (el.tagName !== 'BUTTON') {\n addElRole(el, 'button');\n el.addEventListener('keydown', onEnterOrSpaceKey);\n }\n addElLabel(el, message);\n addElControls(el, wrapperId);\n };\n const handlePointerDown = e => {\n if (focusTargetSlideEl && focusTargetSlideEl !== e.target && !focusTargetSlideEl.contains(e.target)) {\n preventFocusHandler = true;\n }\n swiper.a11y.clicked = true;\n };\n const handlePointerUp = () => {\n preventFocusHandler = false;\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (!swiper.destroyed) {\n swiper.a11y.clicked = false;\n }\n });\n });\n };\n const onVisibilityChange = e => {\n visibilityChangedTimestamp = new Date().getTime();\n };\n const handleFocus = e => {\n if (swiper.a11y.clicked || !swiper.params.a11y.scrollOnFocus) return;\n if (new Date().getTime() - visibilityChangedTimestamp < 100) return;\n const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n if (!slideEl || !swiper.slides.includes(slideEl)) return;\n focusTargetSlideEl = slideEl;\n const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);\n if (isActive || isVisible) return;\n if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;\n if (swiper.isHorizontal()) {\n swiper.el.scrollLeft = 0;\n } else {\n swiper.el.scrollTop = 0;\n }\n requestAnimationFrame(() => {\n if (preventFocusHandler) return;\n if (swiper.params.loop) {\n swiper.slideToLoop(parseInt(slideEl.getAttribute('data-swiper-slide-index')), 0);\n } else {\n swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n }\n preventFocusHandler = false;\n });\n };\n const initSlides = () => {\n const params = swiper.params.a11y;\n if (params.itemRoleDescriptionMessage) {\n addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage);\n }\n if (params.slideRole) {\n addElRole(swiper.slides, params.slideRole);\n }\n const slidesLength = swiper.slides.length;\n if (params.slideLabelMessage) {\n swiper.slides.forEach((slideEl, index) => {\n const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index;\n const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n addElLabel(slideEl, ariaLabelMessage);\n });\n }\n };\n const init = () => {\n const params = swiper.params.a11y;\n swiper.el.append(liveRegion);\n\n // Container\n const containerEl = swiper.el;\n if (params.containerRoleDescriptionMessage) {\n addElRoleDescription(containerEl, params.containerRoleDescriptionMessage);\n }\n if (params.containerMessage) {\n addElLabel(containerEl, params.containerMessage);\n }\n if (params.containerRole) {\n addElRole(containerEl, params.containerRole);\n }\n\n // Wrapper\n const wrapperEl = swiper.wrapperEl;\n const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n addElId(wrapperEl, wrapperId);\n addElLive(wrapperEl, live);\n\n // Slide\n initSlides();\n\n // Navigation\n let {\n nextEl,\n prevEl\n } = swiper.navigation ? swiper.navigation : {};\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage));\n }\n if (prevEl) {\n prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage));\n }\n\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = makeElementsArray(swiper.pagination.el);\n paginationEl.forEach(el => {\n el.addEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n\n // Tab focus\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n swiper.el.addEventListener('focus', handleFocus, true);\n swiper.el.addEventListener('focus', handleFocus, true);\n swiper.el.addEventListener('pointerdown', handlePointerDown, true);\n swiper.el.addEventListener('pointerup', handlePointerUp, true);\n };\n function destroy() {\n if (liveRegion) liveRegion.remove();\n let {\n nextEl,\n prevEl\n } = swiper.navigation ? swiper.navigation : {};\n nextEl = makeElementsArray(nextEl);\n prevEl = makeElementsArray(prevEl);\n if (nextEl) {\n nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n if (prevEl) {\n prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n }\n\n // Pagination\n if (hasClickablePagination()) {\n const paginationEl = makeElementsArray(swiper.pagination.el);\n paginationEl.forEach(el => {\n el.removeEventListener('keydown', onEnterOrSpaceKey);\n });\n }\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n // Tab focus\n if (swiper.el && typeof swiper.el !== 'string') {\n swiper.el.removeEventListener('focus', handleFocus, true);\n swiper.el.removeEventListener('pointerdown', handlePointerDown, true);\n swiper.el.removeEventListener('pointerup', handlePointerUp, true);\n }\n }\n on('beforeInit', () => {\n liveRegion = createElement('span', swiper.params.a11y.notificationClass);\n liveRegion.setAttribute('aria-live', 'assertive');\n liveRegion.setAttribute('aria-atomic', 'true');\n });\n on('afterInit', () => {\n if (!swiper.params.a11y.enabled) return;\n init();\n });\n on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\n if (!swiper.params.a11y.enabled) return;\n initSlides();\n });\n on('fromEdge toEdge afterInit lock unlock', () => {\n if (!swiper.params.a11y.enabled) return;\n updateNavigation();\n });\n on('paginationUpdate', () => {\n if (!swiper.params.a11y.enabled) return;\n updatePagination();\n });\n on('destroy', () => {\n if (!swiper.params.a11y.enabled) return;\n destroy();\n });\n}\n\nexport { A11y as default };\n","var PRECEDENCE, OPENERS, TERMINATORS, PATTERN;\n\n/**\n * Operator precedence mapping.\n *\n * @type {Object}\n */\nPRECEDENCE = {\n\t'(': 9,\n\t'!': 8,\n\t'*': 7,\n\t'/': 7,\n\t'%': 7,\n\t'+': 6,\n\t'-': 6,\n\t'<': 5,\n\t'<=': 5,\n\t'>': 5,\n\t'>=': 5,\n\t'==': 4,\n\t'!=': 4,\n\t'&&': 3,\n\t'||': 2,\n\t'?': 1,\n\t'?:': 1,\n};\n\n/**\n * Characters which signal pair opening, to be terminated by terminators.\n *\n * @type {string[]}\n */\nOPENERS = [ '(', '?' ];\n\n/**\n * Characters which signal pair termination, the value an array with the\n * opener as its first member. The second member is an optional operator\n * replacement to push to the stack.\n *\n * @type {string[]}\n */\nTERMINATORS = {\n\t')': [ '(' ],\n\t':': [ '?', '?:' ],\n};\n\n/**\n * Pattern matching operators and openers.\n *\n * @type {RegExp}\n */\nPATTERN = /<=|>=|==|!=|&&|\\|\\||\\?:|\\(|!|\\*|\\/|%|\\+|-|<|>|\\?|\\)|:/;\n\n/**\n * Given a C expression, returns the equivalent postfix (Reverse Polish)\n * notation terms as an array.\n *\n * If a postfix string is desired, simply `.join( ' ' )` the result.\n *\n * @example\n *\n * ```js\n * import postfix from '@tannin/postfix';\n *\n * postfix( 'n > 1' );\n * // ⇒ [ 'n', '1', '>' ]\n * ```\n *\n * @param {string} expression C expression.\n *\n * @return {string[]} Postfix terms.\n */\nexport default function postfix( expression ) {\n\tvar terms = [],\n\t\tstack = [],\n\t\tmatch, operator, term, element;\n\n\twhile ( ( match = expression.match( PATTERN ) ) ) {\n\t\toperator = match[ 0 ];\n\n\t\t// Term is the string preceding the operator match. It may contain\n\t\t// whitespace, and may be empty (if operator is at beginning).\n\t\tterm = expression.substr( 0, match.index ).trim();\n\t\tif ( term ) {\n\t\t\tterms.push( term );\n\t\t}\n\n\t\twhile ( ( element = stack.pop() ) ) {\n\t\t\tif ( TERMINATORS[ operator ] ) {\n\t\t\t\tif ( TERMINATORS[ operator ][ 0 ] === element ) {\n\t\t\t\t\t// Substitution works here under assumption that because\n\t\t\t\t\t// the assigned operator will no longer be a terminator, it\n\t\t\t\t\t// will be pushed to the stack during the condition below.\n\t\t\t\t\toperator = TERMINATORS[ operator ][ 1 ] || operator;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else if ( OPENERS.indexOf( element ) >= 0 || PRECEDENCE[ element ] < PRECEDENCE[ operator ] ) {\n\t\t\t\t// Push to stack if either an opener or when pop reveals an\n\t\t\t\t// element of lower precedence.\n\t\t\t\tstack.push( element );\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// For each popped from stack, push to terms.\n\t\t\tterms.push( element );\n\t\t}\n\n\t\tif ( ! TERMINATORS[ operator ] ) {\n\t\t\tstack.push( operator );\n\t\t}\n\n\t\t// Slice matched fragment from expression to continue match.\n\t\texpression = expression.substr( match.index + operator.length );\n\t}\n\n\t// Push remainder of operand, if exists, to terms.\n\texpression = expression.trim();\n\tif ( expression ) {\n\t\tterms.push( expression );\n\t}\n\n\t// Pop remaining items from stack into terms.\n\treturn terms.concat( stack.reverse() );\n}\n","/**\n * External dependencies\n */\nimport memoize from 'memize';\nimport sprintfjs from 'sprintf-js';\n/**\n * Log to console, once per message; or more precisely, per referentially equal\n * argument set. Because Jed throws errors, we log these to the console instead\n * to avoid crashing the application.\n *\n * @param {...*} args Arguments to pass to `console.error`\n */\n\nvar logErrorOnce = memoize(console.error); // eslint-disable-line no-console\n\n/**\n * Returns a formatted string. If an error occurs in applying the format, the\n * original format string is returned.\n *\n * @param {string} format The format of the string to generate.\n * @param {...*} args Arguments to apply to the format.\n *\n * @see https://www.npmjs.com/package/sprintf-js\n *\n * @return {string} The formatted string.\n */\n\nexport function sprintf(format) {\n try {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return sprintfjs.sprintf.apply(sprintfjs, [format].concat(args));\n } catch (error) {\n logErrorOnce('sprintf error: \\n\\n' + error.toString());\n return format;\n }\n}\n//# sourceMappingURL=sprintf.js.map","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\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 return obj;\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","/**\n * Operator callback functions.\n *\n * @type {Object}\n */\nvar OPERATORS = {\n\t'!': function( a ) {\n\t\treturn ! a;\n\t},\n\t'*': function( a, b ) {\n\t\treturn a * b;\n\t},\n\t'/': function( a, b ) {\n\t\treturn a / b;\n\t},\n\t'%': function( a, b ) {\n\t\treturn a % b;\n\t},\n\t'+': function( a, b ) {\n\t\treturn a + b;\n\t},\n\t'-': function( a, b ) {\n\t\treturn a - b;\n\t},\n\t'<': function( a, b ) {\n\t\treturn a < b;\n\t},\n\t'<=': function( a, b ) {\n\t\treturn a <= b;\n\t},\n\t'>': function( a, b ) {\n\t\treturn a > b;\n\t},\n\t'>=': function( a, b ) {\n\t\treturn a >= b;\n\t},\n\t'==': function( a, b ) {\n\t\treturn a === b;\n\t},\n\t'!=': function( a, b ) {\n\t\treturn a !== b;\n\t},\n\t'&&': function( a, b ) {\n\t\treturn a && b;\n\t},\n\t'||': function( a, b ) {\n\t\treturn a || b;\n\t},\n\t'?:': function( a, b, c ) {\n\t\tif ( a ) {\n\t\t\tthrow b;\n\t\t}\n\n\t\treturn c;\n\t},\n};\n\n/**\n * Given an array of postfix terms and operand variables, returns the result of\n * the postfix evaluation.\n *\n * @example\n *\n * ```js\n * import evaluate from '@tannin/evaluate';\n *\n * // 3 + 4 * 5 / 6 ⇒ '3 4 5 * 6 / +'\n * const terms = [ '3', '4', '5', '*', '6', '/', '+' ];\n *\n * evaluate( terms, {} );\n * // ⇒ 6.333333333333334\n * ```\n *\n * @param {string[]} postfix Postfix terms.\n * @param {Object} variables Operand variables.\n *\n * @return {*} Result of evaluation.\n */\nexport default function evaluate( postfix, variables ) {\n\tvar stack = [],\n\t\ti, j, args, getOperatorResult, term, value;\n\n\tfor ( i = 0; i < postfix.length; i++ ) {\n\t\tterm = postfix[ i ];\n\n\t\tgetOperatorResult = OPERATORS[ term ];\n\t\tif ( getOperatorResult ) {\n\t\t\t// Pop from stack by number of function arguments.\n\t\t\tj = getOperatorResult.length;\n\t\t\targs = Array( j );\n\t\t\twhile ( j-- ) {\n\t\t\t\targs[ j ] = stack.pop();\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tvalue = getOperatorResult.apply( null, args );\n\t\t\t} catch ( earlyReturn ) {\n\t\t\t\treturn earlyReturn;\n\t\t\t}\n\t\t} else if ( variables.hasOwnProperty( term ) ) {\n\t\t\tvalue = variables[ term ];\n\t\t} else {\n\t\t\tvalue = +term;\n\t\t}\n\n\t\tstack.push( value );\n\t}\n\n\treturn stack[ 0 ];\n}\n","import pluralForms from '@tannin/plural-forms';\n\n/**\n * Tannin constructor options.\n *\n * @typedef {Object} TanninOptions\n *\n * @property {string} [contextDelimiter] Joiner in string lookup with context.\n * @property {Function} [onMissingKey] Callback to invoke when key missing.\n */\n\n/**\n * Domain metadata.\n *\n * @typedef {Object} TanninDomainMetadata\n *\n * @property {string} [domain] Domain name.\n * @property {string} [lang] Language code.\n * @property {(string|Function)} [plural_forms] Plural forms expression or\n * function evaluator.\n */\n\n/**\n * Domain translation pair respectively representing the singular and plural\n * translation.\n *\n * @typedef {[string,string]} TanninTranslation\n */\n\n/**\n * Locale data domain. The key is used as reference for lookup, the value an\n * array of two string entries respectively representing the singular and plural\n * translation.\n *\n * @typedef {{[key:string]:TanninDomainMetadata|TanninTranslation,'':TanninDomainMetadata|TanninTranslation}} TanninLocaleDomain\n */\n\n/**\n * Jed-formatted locale data.\n *\n * @see http://messageformat.github.io/Jed/\n *\n * @typedef {{[domain:string]:TanninLocaleDomain}} TanninLocaleData\n */\n\n/**\n * Default Tannin constructor options.\n *\n * @type {TanninOptions}\n */\nvar DEFAULT_OPTIONS = {\n\tcontextDelimiter: '\\u0004',\n\tonMissingKey: null,\n};\n\n/**\n * Given a specific locale data's config `plural_forms` value, returns the\n * expression.\n *\n * @example\n *\n * ```\n * getPluralExpression( 'nplurals=2; plural=(n != 1);' ) === '(n != 1)'\n * ```\n *\n * @param {string} pf Locale data plural forms.\n *\n * @return {string} Plural forms expression.\n */\nfunction getPluralExpression( pf ) {\n\tvar parts, i, part;\n\n\tparts = pf.split( ';' );\n\n\tfor ( i = 0; i < parts.length; i++ ) {\n\t\tpart = parts[ i ].trim();\n\t\tif ( part.indexOf( 'plural=' ) === 0 ) {\n\t\t\treturn part.substr( 7 );\n\t\t}\n\t}\n}\n\n/**\n * Tannin constructor.\n *\n * @class\n *\n * @param {TanninLocaleData} data Jed-formatted locale data.\n * @param {TanninOptions} [options] Tannin options.\n */\nexport default function Tannin( data, options ) {\n\tvar key;\n\n\t/**\n\t * Jed-formatted locale data.\n\t *\n\t * @name Tannin#data\n\t * @type {TanninLocaleData}\n\t */\n\tthis.data = data;\n\n\t/**\n\t * Plural forms function cache, keyed by plural forms string.\n\t *\n\t * @name Tannin#pluralForms\n\t * @type {Object<string,Function>}\n\t */\n\tthis.pluralForms = {};\n\n\t/**\n\t * Effective options for instance, including defaults.\n\t *\n\t * @name Tannin#options\n\t * @type {TanninOptions}\n\t */\n\tthis.options = {};\n\n\tfor ( key in DEFAULT_OPTIONS ) {\n\t\tthis.options[ key ] = options !== undefined && key in options\n\t\t\t? options[ key ]\n\t\t\t: DEFAULT_OPTIONS[ key ];\n\t}\n}\n\n/**\n * Returns the plural form index for the given domain and value.\n *\n * @param {string} domain Domain on which to calculate plural form.\n * @param {number} n Value for which plural form is to be calculated.\n *\n * @return {number} Plural form index.\n */\nTannin.prototype.getPluralForm = function( domain, n ) {\n\tvar getPluralForm = this.pluralForms[ domain ],\n\t\tconfig, plural, pf;\n\n\tif ( ! getPluralForm ) {\n\t\tconfig = this.data[ domain ][ '' ];\n\n\t\tpf = (\n\t\t\tconfig[ 'Plural-Forms' ] ||\n\t\t\tconfig[ 'plural-forms' ] ||\n\t\t\t// Ignore reason: As known, there's no way to document the empty\n\t\t\t// string property on a key to guarantee this as metadata.\n\t\t\t// @ts-ignore\n\t\t\tconfig.plural_forms\n\t\t);\n\n\t\tif ( typeof pf !== 'function' ) {\n\t\t\tplural = getPluralExpression(\n\t\t\t\tconfig[ 'Plural-Forms' ] ||\n\t\t\t\tconfig[ 'plural-forms' ] ||\n\t\t\t\t// Ignore reason: As known, there's no way to document the empty\n\t\t\t\t// string property on a key to guarantee this as metadata.\n\t\t\t\t// @ts-ignore\n\t\t\t\tconfig.plural_forms\n\t\t\t);\n\n\t\t\tpf = pluralForms( plural );\n\t\t}\n\n\t\tgetPluralForm = this.pluralForms[ domain ] = pf;\n\t}\n\n\treturn getPluralForm( n );\n};\n\n/**\n * Translate a string.\n *\n * @param {string} domain Translation domain.\n * @param {string|void} context Context distinguishing terms of the same name.\n * @param {string} singular Primary key for translation lookup.\n * @param {string=} plural Fallback value used for non-zero plural\n * form index.\n * @param {number=} n Value to use in calculating plural form.\n *\n * @return {string} Translated string.\n */\nTannin.prototype.dcnpgettext = function( domain, context, singular, plural, n ) {\n\tvar index, key, entry;\n\n\tif ( n === undefined ) {\n\t\t// Default to singular.\n\t\tindex = 0;\n\t} else {\n\t\t// Find index by evaluating plural form for value.\n\t\tindex = this.getPluralForm( domain, n );\n\t}\n\n\tkey = singular;\n\n\t// If provided, context is prepended to key with delimiter.\n\tif ( context ) {\n\t\tkey = context + this.options.contextDelimiter + singular;\n\t}\n\n\tentry = this.data[ domain ][ key ];\n\n\t// Verify not only that entry exists, but that the intended index is within\n\t// range and non-empty.\n\tif ( entry && entry[ index ] ) {\n\t\treturn entry[ index ];\n\t}\n\n\tif ( this.options.onMissingKey ) {\n\t\tthis.options.onMissingKey( singular, domain );\n\t}\n\n\t// If entry not found, fall back to singular vs. plural with zero index\n\t// representing the singular value.\n\treturn index === 0 ? singular : plural;\n};\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n/**\n * External dependencies\n */\nimport Tannin from 'tannin';\n/**\n * @typedef {Record<string,any>} LocaleData\n */\n\n/**\n * Default locale data to use for Tannin domain when not otherwise provided.\n * Assumes an English plural forms expression.\n *\n * @type {LocaleData}\n */\n\nvar DEFAULT_LOCALE_DATA = {\n '': {\n /** @param {number} n */\n plural_forms: function plural_forms(n) {\n return n === 1 ? 0 : 1;\n }\n }\n};\n/*\n * Regular expression that matches i18n hooks like `i18n.gettext`, `i18n.ngettext`,\n * `i18n.gettext_domain` or `i18n.ngettext_with_context` or `i18n.has_translation`.\n */\n\nvar I18N_HOOK_REGEXP = /^i18n\\.(n?gettext|has_translation)(_|$)/;\n/**\n * @typedef {(domain?: string) => LocaleData} GetLocaleData\n *\n * Returns locale data by domain in a\n * Jed-formatted JSON object shape.\n *\n * @see http://messageformat.github.io/Jed/\n */\n\n/**\n * @typedef {(data?: LocaleData, domain?: string) => void} SetLocaleData\n *\n * Merges locale data into the Tannin instance by domain. Accepts data in a\n * Jed-formatted JSON object shape.\n *\n * @see http://messageformat.github.io/Jed/\n */\n\n/**\n * @typedef {(data?: LocaleData, domain?: string) => void} ResetLocaleData\n *\n * Resets all current Tannin instance locale data and sets the specified\n * locale data for the domain. Accepts data in a Jed-formatted JSON object shape.\n *\n * @see http://messageformat.github.io/Jed/\n */\n\n/** @typedef {() => void} SubscribeCallback */\n\n/** @typedef {() => void} UnsubscribeCallback */\n\n/**\n * @typedef {(callback: SubscribeCallback) => UnsubscribeCallback} Subscribe\n *\n * Subscribes to changes of locale data\n */\n\n/**\n * @typedef {(domain?: string) => string} GetFilterDomain\n * Retrieve the domain to use when calling domain-specific filters.\n */\n\n/**\n * @typedef {(text: string, domain?: string) => string} __\n *\n * Retrieve the translation of text.\n *\n * @see https://developer.wordpress.org/reference/functions/__/\n */\n\n/**\n * @typedef {(text: string, context: string, domain?: string) => string} _x\n *\n * Retrieve translated string with gettext context.\n *\n * @see https://developer.wordpress.org/reference/functions/_x/\n */\n\n/**\n * @typedef {(single: string, plural: string, number: number, domain?: string) => string} _n\n *\n * Translates and retrieves the singular or plural form based on the supplied\n * number.\n *\n * @see https://developer.wordpress.org/reference/functions/_n/\n */\n\n/**\n * @typedef {(single: string, plural: string, number: number, context: string, domain?: string) => string} _nx\n *\n * Translates and retrieves the singular or plural form based on the supplied\n * number, with gettext context.\n *\n * @see https://developer.wordpress.org/reference/functions/_nx/\n */\n\n/**\n * @typedef {() => boolean} IsRtl\n *\n * Check if current locale is RTL.\n *\n * **RTL (Right To Left)** is a locale property indicating that text is written from right to left.\n * For example, the `he` locale (for Hebrew) specifies right-to-left. Arabic (ar) is another common\n * language written RTL. The opposite of RTL, LTR (Left To Right) is used in other languages,\n * including English (`en`, `en-US`, `en-GB`, etc.), Spanish (`es`), and French (`fr`).\n */\n\n/**\n * @typedef {(single: string, context?: string, domain?: string) => boolean} HasTranslation\n *\n * Check if there is a translation for a given string in singular form.\n */\n\n/** @typedef {import('@wordpress/hooks').Hooks} Hooks */\n\n/**\n * An i18n instance\n *\n * @typedef I18n\n * @property {GetLocaleData} getLocaleData Returns locale data by domain in a Jed-formatted JSON object shape.\n * @property {SetLocaleData} setLocaleData Merges locale data into the Tannin instance by domain. Accepts data in a\n * Jed-formatted JSON object shape.\n * @property {ResetLocaleData} resetLocaleData Resets all current Tannin instance locale data and sets the specified\n * locale data for the domain. Accepts data in a Jed-formatted JSON object shape.\n * @property {Subscribe} subscribe Subscribes to changes of Tannin locale data.\n * @property {__} __ Retrieve the translation of text.\n * @property {_x} _x Retrieve translated string with gettext context.\n * @property {_n} _n Translates and retrieves the singular or plural form based on the supplied\n * number.\n * @property {_nx} _nx Translates and retrieves the singular or plural form based on the supplied\n * number, with gettext context.\n * @property {IsRtl} isRTL Check if current locale is RTL.\n * @property {HasTranslation} hasTranslation Check if there is a translation for a given string.\n */\n\n/**\n * Create an i18n instance\n *\n * @param {LocaleData} [initialData] Locale data configuration.\n * @param {string} [initialDomain] Domain for which configuration applies.\n * @param {Hooks} [hooks] Hooks implementation.\n * @return {I18n} I18n instance\n */\n\nexport var createI18n = function createI18n(initialData, initialDomain, hooks) {\n /**\n * The underlying instance of Tannin to which exported functions interface.\n *\n * @type {Tannin}\n */\n var tannin = new Tannin({});\n var listeners = new Set();\n\n var notifyListeners = function notifyListeners() {\n listeners.forEach(function (listener) {\n return listener();\n });\n };\n /**\n * Subscribe to changes of locale data.\n *\n * @param {SubscribeCallback} callback Subscription callback.\n * @return {UnsubscribeCallback} Unsubscribe callback.\n */\n\n\n var subscribe = function subscribe(callback) {\n listeners.add(callback);\n return function () {\n return listeners.delete(callback);\n };\n };\n /** @type {GetLocaleData} */\n\n\n var getLocaleData = function getLocaleData() {\n var domain = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'default';\n return tannin.data[domain];\n };\n /**\n * @param {LocaleData} [data]\n * @param {string} [domain]\n */\n\n\n var doSetLocaleData = function doSetLocaleData(data) {\n var domain = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'default';\n tannin.data[domain] = _objectSpread(_objectSpread(_objectSpread({}, DEFAULT_LOCALE_DATA), tannin.data[domain]), data); // Populate default domain configuration (supported locale date which omits\n // a plural forms expression).\n\n tannin.data[domain][''] = _objectSpread(_objectSpread({}, DEFAULT_LOCALE_DATA['']), tannin.data[domain]['']);\n };\n /** @type {SetLocaleData} */\n\n\n var setLocaleData = function setLocaleData(data, domain) {\n doSetLocaleData(data, domain);\n notifyListeners();\n };\n /** @type {ResetLocaleData} */\n\n\n var resetLocaleData = function resetLocaleData(data, domain) {\n // Reset all current Tannin locale data.\n tannin.data = {}; // Reset cached plural forms functions cache.\n\n tannin.pluralForms = {};\n setLocaleData(data, domain);\n };\n /**\n * Wrapper for Tannin's `dcnpgettext`. Populates default locale data if not\n * otherwise previously assigned.\n *\n * @param {string|undefined} domain Domain to retrieve the translated text.\n * @param {string|undefined} context Context information for the translators.\n * @param {string} single Text to translate if non-plural. Used as\n * fallback return value on a caught error.\n * @param {string} [plural] The text to be used if the number is\n * plural.\n * @param {number} [number] The number to compare against to use\n * either the singular or plural form.\n *\n * @return {string} The translated string.\n */\n\n\n var dcnpgettext = function dcnpgettext() {\n var domain = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'default';\n var context = arguments.length > 1 ? arguments[1] : undefined;\n var single = arguments.length > 2 ? arguments[2] : undefined;\n var plural = arguments.length > 3 ? arguments[3] : undefined;\n var number = arguments.length > 4 ? arguments[4] : undefined;\n\n if (!tannin.data[domain]) {\n // use `doSetLocaleData` to set silently, without notifying listeners\n doSetLocaleData(undefined, domain);\n }\n\n return tannin.dcnpgettext(domain, context, single, plural, number);\n };\n /** @type {GetFilterDomain} */\n\n\n var getFilterDomain = function getFilterDomain() {\n var domain = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'default';\n return domain;\n };\n /** @type {__} */\n\n\n var __ = function __(text, domain) {\n var translation = dcnpgettext(domain, undefined, text);\n\n if (!hooks) {\n return translation;\n }\n /**\n * Filters text with its translation.\n *\n * @param {string} translation Translated text.\n * @param {string} text Text to translate.\n * @param {string} domain Text domain. Unique identifier for retrieving translated strings.\n */\n\n\n translation =\n /** @type {string} */\n\n /** @type {*} */\n hooks.applyFilters('i18n.gettext', translation, text, domain);\n return (\n /** @type {string} */\n\n /** @type {*} */\n hooks.applyFilters('i18n.gettext_' + getFilterDomain(domain), translation, text, domain)\n );\n };\n /** @type {_x} */\n\n\n var _x = function _x(text, context, domain) {\n var translation = dcnpgettext(domain, context, text);\n\n if (!hooks) {\n return translation;\n }\n /**\n * Filters text with its translation based on context information.\n *\n * @param {string} translation Translated text.\n * @param {string} text Text to translate.\n * @param {string} context Context information for the translators.\n * @param {string} domain Text domain. Unique identifier for retrieving translated strings.\n */\n\n\n translation =\n /** @type {string} */\n\n /** @type {*} */\n hooks.applyFilters('i18n.gettext_with_context', translation, text, context, domain);\n return (\n /** @type {string} */\n\n /** @type {*} */\n hooks.applyFilters('i18n.gettext_with_context_' + getFilterDomain(domain), translation, text, context, domain)\n );\n };\n /** @type {_n} */\n\n\n var _n = function _n(single, plural, number, domain) {\n var translation = dcnpgettext(domain, undefined, single, plural, number);\n\n if (!hooks) {\n return translation;\n }\n /**\n * Filters the singular or plural form of a string.\n *\n * @param {string} translation Translated text.\n * @param {string} single The text to be used if the number is singular.\n * @param {string} plural The text to be used if the number is plural.\n * @param {string} number The number to compare against to use either the singular or plural form.\n * @param {string} domain Text domain. Unique identifier for retrieving translated strings.\n */\n\n\n translation =\n /** @type {string} */\n\n /** @type {*} */\n hooks.applyFilters('i18n.ngettext', translation, single, plural, number, domain);\n return (\n /** @type {string} */\n\n /** @type {*} */\n hooks.applyFilters('i18n.ngettext_' + getFilterDomain(domain), translation, single, plural, number, domain)\n );\n };\n /** @type {_nx} */\n\n\n var _nx = function _nx(single, plural, number, context, domain) {\n var translation = dcnpgettext(domain, context, single, plural, number);\n\n if (!hooks) {\n return translation;\n }\n /**\n * Filters the singular or plural form of a string with gettext context.\n *\n * @param {string} translation Translated text.\n * @param {string} single The text to be used if the number is singular.\n * @param {string} plural The text to be used if the number is plural.\n * @param {string} number The number to compare against to use either the singular or plural form.\n * @param {string} context Context information for the translators.\n * @param {string} domain Text domain. Unique identifier for retrieving translated strings.\n */\n\n\n translation =\n /** @type {string} */\n\n /** @type {*} */\n hooks.applyFilters('i18n.ngettext_with_context', translation, single, plural, number, context, domain);\n return (\n /** @type {string} */\n\n /** @type {*} */\n hooks.applyFilters('i18n.ngettext_with_context_' + getFilterDomain(domain), translation, single, plural, number, context, domain)\n );\n };\n /** @type {IsRtl} */\n\n\n var isRTL = function isRTL() {\n return 'rtl' === _x('ltr', 'text direction');\n };\n /** @type {HasTranslation} */\n\n\n var hasTranslation = function hasTranslation(single, context, domain) {\n var _tannin$data, _tannin$data2;\n\n var key = context ? context + \"\\x04\" + single : single;\n var result = !!((_tannin$data = tannin.data) !== null && _tannin$data !== void 0 && (_tannin$data2 = _tannin$data[domain !== null && domain !== void 0 ? domain : 'default']) !== null && _tannin$data2 !== void 0 && _tannin$data2[key]);\n\n if (hooks) {\n /**\n * Filters the presence of a translation in the locale data.\n *\n * @param {boolean} hasTranslation Whether the translation is present or not..\n * @param {string} single The singular form of the translated text (used as key in locale data)\n * @param {string} context Context information for the translators.\n * @param {string} domain Text domain. Unique identifier for retrieving translated strings.\n */\n result =\n /** @type { boolean } */\n\n /** @type {*} */\n hooks.applyFilters('i18n.has_translation', result, single, context, domain);\n result =\n /** @type { boolean } */\n\n /** @type {*} */\n hooks.applyFilters('i18n.has_translation_' + getFilterDomain(domain), result, single, context, domain);\n }\n\n return result;\n };\n\n if (initialData) {\n setLocaleData(initialData, initialDomain);\n }\n\n if (hooks) {\n /**\n * @param {string} hookName\n */\n var onHookAddedOrRemoved = function onHookAddedOrRemoved(hookName) {\n if (I18N_HOOK_REGEXP.test(hookName)) {\n notifyListeners();\n }\n };\n\n hooks.addAction('hookAdded', 'core/i18n', onHookAddedOrRemoved);\n hooks.addAction('hookRemoved', 'core/i18n', onHookAddedOrRemoved);\n }\n\n return {\n getLocaleData: getLocaleData,\n setLocaleData: setLocaleData,\n resetLocaleData: resetLocaleData,\n subscribe: subscribe,\n __: __,\n _x: _x,\n _n: _n,\n _nx: _nx,\n isRTL: isRTL,\n hasTranslation: hasTranslation\n };\n};\n//# sourceMappingURL=create-i18n.js.map","import compile from '@tannin/compile';\n\n/**\n * Given a C expression, returns a function which, when called with a value,\n * evaluates the result with the value assumed to be the \"n\" variable of the\n * expression. The result will be coerced to its numeric equivalent.\n *\n * @param {string} expression C expression.\n *\n * @return {Function} Evaluator function.\n */\nexport default function pluralForms( expression ) {\n\tvar evaluate = compile( expression );\n\n\treturn function( n ) {\n\t\treturn +evaluate( { n: n } );\n\t};\n}\n","import postfix from '@tannin/postfix';\nimport evaluate from '@tannin/evaluate';\n\n/**\n * Given a C expression, returns a function which can be called to evaluate its\n * result.\n *\n * @example\n *\n * ```js\n * import compile from '@tannin/compile';\n *\n * const evaluate = compile( 'n > 1' );\n *\n * evaluate( { n: 2 } );\n * // ⇒ true\n * ```\n *\n * @param {string} expression C expression.\n *\n * @return {(variables?:{[variable:string]:*})=>*} Compiled evaluator.\n */\nexport default function compile( expression ) {\n\tvar terms = postfix( expression );\n\n\treturn function( variables ) {\n\t\treturn evaluate( terms, variables );\n\t};\n}\n","/**\n * Validate a namespace string.\n *\n * @param {string} namespace The namespace to validate - should take the form\n * `vendor/plugin/function`.\n *\n * @return {boolean} Whether the namespace is valid.\n */\nfunction validateNamespace(namespace) {\n if ('string' !== typeof namespace || '' === namespace) {\n // eslint-disable-next-line no-console\n console.error('The namespace must be a non-empty string.');\n return false;\n }\n\n if (!/^[a-zA-Z][a-zA-Z0-9_.\\-\\/]*$/.test(namespace)) {\n // eslint-disable-next-line no-console\n console.error('The namespace can only contain numbers, letters, dashes, periods, underscores and slashes.');\n return false;\n }\n\n return true;\n}\n\nexport default validateNamespace;\n//# sourceMappingURL=validateNamespace.js.map","/**\n * Validate a hookName string.\n *\n * @param {string} hookName The hook name to validate. Should be a non empty string containing\n * only numbers, letters, dashes, periods and underscores. Also,\n * the hook name cannot begin with `__`.\n *\n * @return {boolean} Whether the hook name is valid.\n */\nfunction validateHookName(hookName) {\n if ('string' !== typeof hookName || '' === hookName) {\n // eslint-disable-next-line no-console\n console.error('The hook name must be a non-empty string.');\n return false;\n }\n\n if (/^__/.test(hookName)) {\n // eslint-disable-next-line no-console\n console.error('The hook name cannot begin with `__`.');\n return false;\n }\n\n if (!/^[a-zA-Z][a-zA-Z0-9_.-]*$/.test(hookName)) {\n // eslint-disable-next-line no-console\n console.error('The hook name can only contain numbers, letters, dashes, periods and underscores.');\n return false;\n }\n\n return true;\n}\n\nexport default validateHookName;\n//# sourceMappingURL=validateHookName.js.map","/**\n * Internal dependencies\n */\nimport validateNamespace from './validateNamespace.js';\nimport validateHookName from './validateHookName.js';\n/**\n * @callback AddHook\n *\n * Adds the hook to the appropriate hooks container.\n *\n * @param {string} hookName Name of hook to add\n * @param {string} namespace The unique namespace identifying the callback in the form `vendor/plugin/function`.\n * @param {import('.').Callback} callback Function to call when the hook is run\n * @param {number} [priority=10] Priority of this hook\n */\n\n/**\n * Returns a function which, when invoked, will add a hook.\n *\n * @param {import('.').Hooks} hooks Hooks instance.\n * @param {import('.').StoreKey} storeKey\n *\n * @return {AddHook} Function that adds a new hook.\n */\n\nfunction createAddHook(hooks, storeKey) {\n return function addHook(hookName, namespace, callback) {\n var priority = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 10;\n var hooksStore = hooks[storeKey];\n\n if (!validateHookName(hookName)) {\n return;\n }\n\n if (!validateNamespace(namespace)) {\n return;\n }\n\n if ('function' !== typeof callback) {\n // eslint-disable-next-line no-console\n console.error('The hook callback must be a function.');\n return;\n } // Validate numeric priority\n\n\n if ('number' !== typeof priority) {\n // eslint-disable-next-line no-console\n console.error('If specified, the hook priority must be a number.');\n return;\n }\n\n var handler = {\n callback: callback,\n priority: priority,\n namespace: namespace\n };\n\n if (hooksStore[hookName]) {\n // Find the correct insert index of the new hook.\n var handlers = hooksStore[hookName].handlers;\n /** @type {number} */\n\n var i;\n\n for (i = handlers.length; i > 0; i--) {\n if (priority >= handlers[i - 1].priority) {\n break;\n }\n }\n\n if (i === handlers.length) {\n // If append, operate via direct assignment.\n handlers[i] = handler;\n } else {\n // Otherwise, insert before index via splice.\n handlers.splice(i, 0, handler);\n } // We may also be currently executing this hook. If the callback\n // we're adding would come after the current callback, there's no\n // problem; otherwise we need to increase the execution index of\n // any other runs by 1 to account for the added element.\n\n\n hooksStore.__current.forEach(function (hookInfo) {\n if (hookInfo.name === hookName && hookInfo.currentIndex >= i) {\n hookInfo.currentIndex++;\n }\n });\n } else {\n // This is the first hook of its type.\n hooksStore[hookName] = {\n handlers: [handler],\n runs: 0\n };\n }\n\n if (hookName !== 'hookAdded') {\n hooks.doAction('hookAdded', hookName, namespace, callback, priority);\n }\n };\n}\n\nexport default createAddHook;\n//# sourceMappingURL=createAddHook.js.map","/**\n * Internal dependencies\n */\nimport validateNamespace from './validateNamespace.js';\nimport validateHookName from './validateHookName.js';\n/**\n * @callback RemoveHook\n * Removes the specified callback (or all callbacks) from the hook with a given hookName\n * and namespace.\n *\n * @param {string} hookName The name of the hook to modify.\n * @param {string} namespace The unique namespace identifying the callback in the\n * form `vendor/plugin/function`.\n *\n * @return {number | undefined} The number of callbacks removed.\n */\n\n/**\n * Returns a function which, when invoked, will remove a specified hook or all\n * hooks by the given name.\n *\n * @param {import('.').Hooks} hooks Hooks instance.\n * @param {import('.').StoreKey} storeKey\n * @param {boolean} [removeAll=false] Whether to remove all callbacks for a hookName,\n * without regard to namespace. Used to create\n * `removeAll*` functions.\n *\n * @return {RemoveHook} Function that removes hooks.\n */\n\nfunction createRemoveHook(hooks, storeKey) {\n var removeAll = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n return function removeHook(hookName, namespace) {\n var hooksStore = hooks[storeKey];\n\n if (!validateHookName(hookName)) {\n return;\n }\n\n if (!removeAll && !validateNamespace(namespace)) {\n return;\n } // Bail if no hooks exist by this name\n\n\n if (!hooksStore[hookName]) {\n return 0;\n }\n\n var handlersRemoved = 0;\n\n if (removeAll) {\n handlersRemoved = hooksStore[hookName].handlers.length;\n hooksStore[hookName] = {\n runs: hooksStore[hookName].runs,\n handlers: []\n };\n } else {\n // Try to find the specified callback to remove.\n var handlers = hooksStore[hookName].handlers;\n\n var _loop = function _loop(i) {\n if (handlers[i].namespace === namespace) {\n handlers.splice(i, 1);\n handlersRemoved++; // This callback may also be part of a hook that is\n // currently executing. If the callback we're removing\n // comes after the current callback, there's no problem;\n // otherwise we need to decrease the execution index of any\n // other runs by 1 to account for the removed element.\n\n hooksStore.__current.forEach(function (hookInfo) {\n if (hookInfo.name === hookName && hookInfo.currentIndex >= i) {\n hookInfo.currentIndex--;\n }\n });\n }\n };\n\n for (var i = handlers.length - 1; i >= 0; i--) {\n _loop(i);\n }\n }\n\n if (hookName !== 'hookRemoved') {\n hooks.doAction('hookRemoved', hookName, namespace);\n }\n\n return handlersRemoved;\n };\n}\n\nexport default createRemoveHook;\n//# sourceMappingURL=createRemoveHook.js.map","/**\n * @callback HasHook\n *\n * Returns whether any handlers are attached for the given hookName and optional namespace.\n *\n * @param {string} hookName The name of the hook to check for.\n * @param {string} [namespace] Optional. The unique namespace identifying the callback\n * in the form `vendor/plugin/function`.\n *\n * @return {boolean} Whether there are handlers that are attached to the given hook.\n */\n\n/**\n * Returns a function which, when invoked, will return whether any handlers are\n * attached to a particular hook.\n *\n * @param {import('.').Hooks} hooks Hooks instance.\n * @param {import('.').StoreKey} storeKey\n *\n * @return {HasHook} Function that returns whether any handlers are\n * attached to a particular hook and optional namespace.\n */\nfunction createHasHook(hooks, storeKey) {\n return function hasHook(hookName, namespace) {\n var hooksStore = hooks[storeKey]; // Use the namespace if provided.\n\n if ('undefined' !== typeof namespace) {\n return hookName in hooksStore && hooksStore[hookName].handlers.some(function (hook) {\n return hook.namespace === namespace;\n });\n }\n\n return hookName in hooksStore;\n };\n}\n\nexport default createHasHook;\n//# sourceMappingURL=createHasHook.js.map","import _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\n\n/**\n * Returns a function which, when invoked, will execute all callbacks\n * registered to a hook of the specified type, optionally returning the final\n * value of the call chain.\n *\n * @param {import('.').Hooks} hooks Hooks instance.\n * @param {import('.').StoreKey} storeKey\n * @param {boolean} [returnFirstArg=false] Whether each hook callback is expected to\n * return its first argument.\n *\n * @return {(hookName:string, ...args: unknown[]) => unknown} Function that runs hook callbacks.\n */\nfunction createRunHook(hooks, storeKey) {\n var returnFirstArg = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n return function runHooks(hookName) {\n var hooksStore = hooks[storeKey];\n\n if (!hooksStore[hookName]) {\n hooksStore[hookName] = {\n handlers: [],\n runs: 0\n };\n }\n\n hooksStore[hookName].runs++;\n var handlers = hooksStore[hookName].handlers; // The following code is stripped from production builds.\n\n if ('production' !== process.env.NODE_ENV) {\n // Handle any 'all' hooks registered.\n if ('hookAdded' !== hookName && hooksStore.all) {\n handlers.push.apply(handlers, _toConsumableArray(hooksStore.all.handlers));\n }\n }\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (!handlers || !handlers.length) {\n return returnFirstArg ? args[0] : undefined;\n }\n\n var hookInfo = {\n name: hookName,\n currentIndex: 0\n };\n\n hooksStore.__current.push(hookInfo);\n\n while (hookInfo.currentIndex < handlers.length) {\n var handler = handlers[hookInfo.currentIndex];\n var result = handler.callback.apply(null, args);\n\n if (returnFirstArg) {\n args[0] = result;\n }\n\n hookInfo.currentIndex++;\n }\n\n hooksStore.__current.pop();\n\n if (returnFirstArg) {\n return args[0];\n }\n };\n}\n\nexport default createRunHook;\n//# sourceMappingURL=createRunHook.js.map","/**\n * Returns a function which, when invoked, will return the name of the\n * currently running hook, or `null` if no hook of the given type is currently\n * running.\n *\n * @param {import('.').Hooks} hooks Hooks instance.\n * @param {import('.').StoreKey} storeKey\n *\n * @return {() => string | null} Function that returns the current hook name or null.\n */\nfunction createCurrentHook(hooks, storeKey) {\n return function currentHook() {\n var _hooksStore$__current, _hooksStore$__current2;\n\n var hooksStore = hooks[storeKey];\n return (_hooksStore$__current = (_hooksStore$__current2 = hooksStore.__current[hooksStore.__current.length - 1]) === null || _hooksStore$__current2 === void 0 ? void 0 : _hooksStore$__current2.name) !== null && _hooksStore$__current !== void 0 ? _hooksStore$__current : null;\n };\n}\n\nexport default createCurrentHook;\n//# sourceMappingURL=createCurrentHook.js.map","/**\n * @callback DoingHook\n * Returns whether a hook is currently being executed.\n *\n * @param {string} [hookName] The name of the hook to check for. If\n * omitted, will check for any hook being executed.\n *\n * @return {boolean} Whether the hook is being executed.\n */\n\n/**\n * Returns a function which, when invoked, will return whether a hook is\n * currently being executed.\n *\n * @param {import('.').Hooks} hooks Hooks instance.\n * @param {import('.').StoreKey} storeKey\n *\n * @return {DoingHook} Function that returns whether a hook is currently\n * being executed.\n */\nfunction createDoingHook(hooks, storeKey) {\n return function doingHook(hookName) {\n var hooksStore = hooks[storeKey]; // If the hookName was not passed, check for any current hook.\n\n if ('undefined' === typeof hookName) {\n return 'undefined' !== typeof hooksStore.__current[0];\n } // Return the __current hook.\n\n\n return hooksStore.__current[0] ? hookName === hooksStore.__current[0].name : false;\n };\n}\n\nexport default createDoingHook;\n//# sourceMappingURL=createDoingHook.js.map","/**\n * Internal dependencies\n */\nimport validateHookName from './validateHookName.js';\n/**\n * @callback DidHook\n *\n * Returns the number of times an action has been fired.\n *\n * @param {string} hookName The hook name to check.\n *\n * @return {number | undefined} The number of times the hook has run.\n */\n\n/**\n * Returns a function which, when invoked, will return the number of times a\n * hook has been called.\n *\n * @param {import('.').Hooks} hooks Hooks instance.\n * @param {import('.').StoreKey} storeKey\n *\n * @return {DidHook} Function that returns a hook's call count.\n */\n\nfunction createDidHook(hooks, storeKey) {\n return function didHook(hookName) {\n var hooksStore = hooks[storeKey];\n\n if (!validateHookName(hookName)) {\n return;\n }\n\n return hooksStore[hookName] && hooksStore[hookName].runs ? hooksStore[hookName].runs : 0;\n };\n}\n\nexport default createDidHook;\n//# sourceMappingURL=createDidHook.js.map","/**\n * Internal dependencies\n */\nimport createHooks from './createHooks';\n/** @typedef {(...args: any[])=>any} Callback */\n\n/**\n * @typedef Handler\n * @property {Callback} callback The callback\n * @property {string} namespace The namespace\n * @property {number} priority The namespace\n */\n\n/**\n * @typedef Hook\n * @property {Handler[]} handlers Array of handlers\n * @property {number} runs Run counter\n */\n\n/**\n * @typedef Current\n * @property {string} name Hook name\n * @property {number} currentIndex The index\n */\n\n/**\n * @typedef {Record<string, Hook> & {__current: Current[]}} Store\n */\n\n/**\n * @typedef {'actions' | 'filters'} StoreKey\n */\n\n/**\n * @typedef {import('./createHooks').Hooks} Hooks\n */\n\nexport var defaultHooks = createHooks();\nvar addAction = defaultHooks.addAction,\n addFilter = defaultHooks.addFilter,\n removeAction = defaultHooks.removeAction,\n removeFilter = defaultHooks.removeFilter,\n hasAction = defaultHooks.hasAction,\n hasFilter = defaultHooks.hasFilter,\n removeAllActions = defaultHooks.removeAllActions,\n removeAllFilters = defaultHooks.removeAllFilters,\n doAction = defaultHooks.doAction,\n applyFilters = defaultHooks.applyFilters,\n currentAction = defaultHooks.currentAction,\n currentFilter = defaultHooks.currentFilter,\n doingAction = defaultHooks.doingAction,\n doingFilter = defaultHooks.doingFilter,\n didAction = defaultHooks.didAction,\n didFilter = defaultHooks.didFilter,\n actions = defaultHooks.actions,\n filters = defaultHooks.filters;\nexport { createHooks, addAction, addFilter, removeAction, removeFilter, hasAction, hasFilter, removeAllActions, removeAllFilters, doAction, applyFilters, currentAction, currentFilter, doingAction, doingFilter, didAction, didFilter, actions, filters };\n//# sourceMappingURL=index.js.map","import _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\n\n/**\n * Internal dependencies\n */\nimport createAddHook from './createAddHook';\nimport createRemoveHook from './createRemoveHook';\nimport createHasHook from './createHasHook';\nimport createRunHook from './createRunHook';\nimport createCurrentHook from './createCurrentHook';\nimport createDoingHook from './createDoingHook';\nimport createDidHook from './createDidHook';\n/**\n * Internal class for constructing hooks. Use `createHooks()` function\n *\n * Note, it is necessary to expose this class to make its type public.\n *\n * @private\n */\n\nexport var _Hooks = function _Hooks() {\n _classCallCheck(this, _Hooks);\n\n /** @type {import('.').Store} actions */\n this.actions = Object.create(null);\n this.actions.__current = [];\n /** @type {import('.').Store} filters */\n\n this.filters = Object.create(null);\n this.filters.__current = [];\n this.addAction = createAddHook(this, 'actions');\n this.addFilter = createAddHook(this, 'filters');\n this.removeAction = createRemoveHook(this, 'actions');\n this.removeFilter = createRemoveHook(this, 'filters');\n this.hasAction = createHasHook(this, 'actions');\n this.hasFilter = createHasHook(this, 'filters');\n this.removeAllActions = createRemoveHook(this, 'actions', true);\n this.removeAllFilters = createRemoveHook(this, 'filters', true);\n this.doAction = createRunHook(this, 'actions');\n this.applyFilters = createRunHook(this, 'filters', true);\n this.currentAction = createCurrentHook(this, 'actions');\n this.currentFilter = createCurrentHook(this, 'filters');\n this.doingAction = createDoingHook(this, 'actions');\n this.doingFilter = createDoingHook(this, 'filters');\n this.didAction = createDidHook(this, 'actions');\n this.didFilter = createDidHook(this, 'filters');\n};\n/** @typedef {_Hooks} Hooks */\n\n/**\n * Returns an instance of the hooks object.\n *\n * @return {Hooks} A Hooks instance.\n */\n\nfunction createHooks() {\n return new _Hooks();\n}\n\nexport default createHooks;\n//# sourceMappingURL=createHooks.js.map","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","/**\n * Internal dependencies\n */\nimport { createI18n } from './create-i18n';\n/**\n * WordPress dependencies\n */\n\nimport { defaultHooks } from '@wordpress/hooks';\nvar i18n = createI18n(undefined, undefined, defaultHooks);\n/**\n * Default, singleton instance of `I18n`.\n */\n\nexport default i18n;\n/*\n * Comments in this file are duplicated from ./i18n due to\n * https://github.com/WordPress/gutenberg/pull/20318#issuecomment-590837722\n */\n\n/**\n * @typedef {import('./create-i18n').LocaleData} LocaleData\n * @typedef {import('./create-i18n').SubscribeCallback} SubscribeCallback\n * @typedef {import('./create-i18n').UnsubscribeCallback} UnsubscribeCallback\n */\n\n/**\n * Returns locale data by domain in a Jed-formatted JSON object shape.\n *\n * @see http://messageformat.github.io/Jed/\n *\n * @param {string} [domain] Domain for which to get the data.\n * @return {LocaleData} Locale data.\n */\n\nexport var getLocaleData = i18n.getLocaleData.bind(i18n);\n/**\n * Merges locale data into the Tannin instance by domain. Accepts data in a\n * Jed-formatted JSON object shape.\n *\n * @see http://messageformat.github.io/Jed/\n *\n * @param {LocaleData} [data] Locale data configuration.\n * @param {string} [domain] Domain for which configuration applies.\n */\n\nexport var setLocaleData = i18n.setLocaleData.bind(i18n);\n/**\n * Resets all current Tannin instance locale data and sets the specified\n * locale data for the domain. Accepts data in a Jed-formatted JSON object shape.\n *\n * @see http://messageformat.github.io/Jed/\n *\n * @param {LocaleData} [data] Locale data configuration.\n * @param {string} [domain] Domain for which configuration applies.\n */\n\nexport var resetLocaleData = i18n.resetLocaleData.bind(i18n);\n/**\n * Subscribes to changes of locale data\n *\n * @param {SubscribeCallback} callback Subscription callback\n * @return {UnsubscribeCallback} Unsubscribe callback\n */\n\nexport var subscribe = i18n.subscribe.bind(i18n);\n/**\n * Retrieve the translation of text.\n *\n * @see https://developer.wordpress.org/reference/functions/__/\n *\n * @param {string} text Text to translate.\n * @param {string} [domain] Domain to retrieve the translated text.\n *\n * @return {string} Translated text.\n */\n\nexport var __ = i18n.__.bind(i18n);\n/**\n * Retrieve translated string with gettext context.\n *\n * @see https://developer.wordpress.org/reference/functions/_x/\n *\n * @param {string} text Text to translate.\n * @param {string} context Context information for the translators.\n * @param {string} [domain] Domain to retrieve the translated text.\n *\n * @return {string} Translated context string without pipe.\n */\n\nexport var _x = i18n._x.bind(i18n);\n/**\n * Translates and retrieves the singular or plural form based on the supplied\n * number.\n *\n * @see https://developer.wordpress.org/reference/functions/_n/\n *\n * @param {string} single The text to be used if the number is singular.\n * @param {string} plural The text to be used if the number is plural.\n * @param {number} number The number to compare against to use either the\n * singular or plural form.\n * @param {string} [domain] Domain to retrieve the translated text.\n *\n * @return {string} The translated singular or plural form.\n */\n\nexport var _n = i18n._n.bind(i18n);\n/**\n * Translates and retrieves the singular or plural form based on the supplied\n * number, with gettext context.\n *\n * @see https://developer.wordpress.org/reference/functions/_nx/\n *\n * @param {string} single The text to be used if the number is singular.\n * @param {string} plural The text to be used if the number is plural.\n * @param {number} number The number to compare against to use either the\n * singular or plural form.\n * @param {string} context Context information for the translators.\n * @param {string} [domain] Domain to retrieve the translated text.\n *\n * @return {string} The translated singular or plural form.\n */\n\nexport var _nx = i18n._nx.bind(i18n);\n/**\n * Check if current locale is RTL.\n *\n * **RTL (Right To Left)** is a locale property indicating that text is written from right to left.\n * For example, the `he` locale (for Hebrew) specifies right-to-left. Arabic (ar) is another common\n * language written RTL. The opposite of RTL, LTR (Left To Right) is used in other languages,\n * including English (`en`, `en-US`, `en-GB`, etc.), Spanish (`es`), and French (`fr`).\n *\n * @return {boolean} Whether locale is RTL.\n */\n\nexport var isRTL = i18n.isRTL.bind(i18n);\n/**\n * Check if there is a translation for a given string (in singular form).\n *\n * @param {string} single Singular form of the string to look up.\n * @param {string} [context] Context information for the translators.\n * @param {string} [domain] Domain to retrieve the translated text.\n * @return {boolean} Whether the translation exists or not.\n */\n\nexport var hasTranslation = i18n.hasTranslation.bind(i18n);\n//# sourceMappingURL=default-i18n.js.map","import { componentProvider } from 'js-component-framework';\nimport getFormattedClassnames from 'utils/getFormattedClassnames';\nimport Carousel from '../carousel/carousel';\nimport moduleStyles from './slideshow.module.scss';\nimport './slideshow.scss';\n\nconst carouselClassnames = sciencenewsClassnames.slideshow;\nconst carouselSelectors = getFormattedClassnames(carouselClassnames);\n\n/* eslint-disable global-require, import/no-dynamic-require, import/no-webpack-loader-syntax */\nconst previous = require('!svg-inline-loader!../carousel/previous.svg');\nconst next = require('!svg-inline-loader!../carousel/next.svg');\n/* eslint-enable */\n\nconst SlideshowConfig = {\n name: 'slideshow',\n component: Carousel,\n querySelector: {\n swiper: '.swiper',\n controlsWrapper: carouselSelectors.controlsWrapper,\n },\n querySelectorAll: {\n slides: carouselSelectors.wrapper,\n },\n options: {\n draggable: true,\n loop: true,\n perPage: 1,\n icons: {\n previous,\n next,\n },\n moduleStyles,\n showIndicators: true,\n },\n};\n\ncomponentProvider(SlideshowConfig);\nexport default SlideshowConfig;\n","/**\n * Formats classnames from a given namespace\n * Essentially just adds a '.' to the beginning of classnames\n *\n * @param {Object} namespace The namespace within which to format classnames.\n * @return {Object}\n */\nexport default function getFormattedClassnames(namespace) {\n return Object.keys(namespace).reduce((acc, key) => {\n acc[key] = `.${namespace[key].split(' ')[0]}`;\n return acc;\n }, {});\n}\n","import Swiper from 'swiper';\nimport { A11y, Navigation, Pagination } from 'swiper/modules';\nimport { __, sprintf, setLocaleData } from '@wordpress/i18n';\nimport uniqueId from 'a11y/lib/uniqueId';\n\n/**\n * Carousel component.\n *\n * @param {NodeList} slides The carousel list items.\n * @param {HTMLElement} controlsWrapper The wrapper within which the carousel controls will be appended.\n */\nexport default class Carousel {\n /**\n * Class constructor\n */\n constructor({ element, children, options }) {\n this.element = element;\n this.children = children;\n this.options = options;\n\n // Register text domain.\n setLocaleData({ '': {} }, 'sciencenews');\n\n const { controlsWrapper, slides } = this.children;\n const { moduleStyles } = this.options;\n Object.assign(this, { controlsWrapper, slides, moduleStyles });\n\n /**\n * The total number of slides in the carousel.\n * @type {Number}\n */\n this.slideCount = this.slides.length;\n\n // Bind class methods\n this.createControl = this.createControl.bind(this);\n this.addIndicators = this.addIndicators.bind(this);\n this.addCarouselControls = this.addCarouselControls.bind(this);\n this.updateIndicators = this.updateIndicators.bind(this);\n this.completeCarouselSetup = this.completeCarouselSetup.bind(this);\n\n this.init();\n }\n\n /**\n * Initialize the carousel.\n */\n init() {\n const {\n perPage: perPageOption,\n draggable,\n loop,\n } = this.options;\n const { perPage: perPageAttr } = this.element.dataset;\n\n let perPage = 1;\n\n // If both options and attribute are undefined, use the default perPage value.\n if (undefined !== perPageOption || undefined !== perPageAttr) {\n // Use options.perPage unless this.element has a `data-per-page` attribute.\n perPage = (undefined === perPageAttr)\n ? perPageOption\n : JSON.parse(perPageAttr);\n }\n\n // Configure breakpoints.\n const breakpoints = {};\n if ('object' === typeof perPage) {\n Object.keys(perPage).forEach((key) => {\n breakpoints[key] = {\n slidesPerView: perPage[key],\n slidesPerGroup: 1,\n };\n });\n }\n\n // Configure pagination.\n const { showIndicators = false } = this.options;\n const pagination = showIndicators ? { el: '.swiper-pagination' } : false;\n\n // Initialize Swiper.\n if (1 < this.slideCount) {\n this.carousel = new Swiper(\n this.children.swiper,\n {\n breakpoints,\n draggable,\n duration: 300,\n loop,\n on: {\n beforeInit: this.addCarouselControls,\n slideChange: this.updateIndicators,\n },\n slidesPerGroup: 1,\n slidesPerView: 'number' === typeof perPage ? perPage : 1,\n spaceBetween: 20,\n modules: [A11y, Navigation, Pagination],\n a11y: {\n containerRole: '',\n slideRole: false,\n },\n navigation: {\n nextEl: '.swiper__button-next',\n prevEl: '.swiper__button-previous',\n },\n pagination,\n },\n );\n\n // Tie a bow on it.\n this.completeCarouselSetup();\n }\n }\n\n /**\n * Create a list element contining a control button.\n *\n * @param {String} context The button context (next/previous).\n *\n * @return {HTMLElement} <li><button></li>.\n */\n createControl(context) {\n const { icons: { [context]: icon } } = this.options;\n const li = document.createElement('li');\n li.classList.add(this.moduleStyles[context]);\n\n const button = document.createElement('button');\n button.id = uniqueId();\n\n const ariaLabel = sprintf(__('%s slide', 'sciencenews'), context);\n button.setAttribute('aria-label', ariaLabel);\n button.classList.add(`swiper__button-${context}`);\n\n // Create a document fragment from the SVG icon string.\n const range = document.createRange();\n const fragment = range.createContextualFragment(icon);\n\n // Add the button icon\n button.appendChild(fragment);\n\n li.appendChild(button);\n\n return li;\n }\n\n /**\n * Finishes carousel per-page and attribute setup.\n * Must be run after onInit()\n */\n completeCarouselSetup() {\n const { showIndicators = false } = this.options;\n\n this.element.setAttribute('role', 'region');\n this.element.tabIndex = 0;\n\n if (showIndicators) {\n this.addIndicators();\n }\n }\n\n /**\n * Adds slide indicators.\n */\n addIndicators() {\n const indicators = document.createElement('div');\n indicators.classList.add(this.moduleStyles.indicators, 'swiper-pagination');\n\n for (let i = 0; i < this.slideCount; i += 1) {\n const indicator = document.createElement('span');\n indicator.classList.add(this.moduleStyles.indicator);\n if (0 === i) {\n indicator.classList.add(this.moduleStyles.indicatorActive);\n }\n\n indicators.appendChild(indicator);\n }\n\n this.element.prepend(indicators);\n }\n\n /**\n * Add the carousel controls.\n */\n addCarouselControls() {\n const { controlsWrapper } = this.children;\n this.element.classList.add('initialized');\n\n const controls = document.createElement('ul');\n const ariaLabel = __('Carousel controls', 'sciencenews');\n controls.setAttribute('aria-label', ariaLabel);\n controls.classList.add(this.moduleStyles.controls);\n\n // Add the 'previous' button .\n const previous = this.createControl('previous');\n this.prev = previous.querySelector('button');\n // Previous is disabled until there's a slide to which we can navigate.\n this.prev.setAttribute('aria-disabled', 'true');\n controls.appendChild(previous); // append the <li>\n\n // Add the 'next' button\n const next = this.createControl('next');\n this.next = next.querySelector('button');\n controls.appendChild(next); // append the <li>\n\n controlsWrapper.appendChild(controls); // append the <li>\n }\n\n /**\n * Updates slide indicators for the current slide.\n */\n updateIndicators() {\n const currentSlide = this?.carousel?.realIndex || 0;\n const indicatorWrapper = this.element\n .querySelector(`.${this.moduleStyles.indicators}`);\n\n if (null !== indicatorWrapper) {\n const indicators = Array.from(indicatorWrapper.children);\n\n for (let i = 0; i < indicators.length; i += 1) {\n if (indicators[i].classList.contains(\n this.moduleStyles.indicatorActive,\n )) {\n indicators[i].classList.remove(this.moduleStyles.indicatorActive);\n }\n\n if (i === currentSlide) {\n indicators[i].classList.add(this.moduleStyles.indicatorActive);\n }\n }\n }\n }\n}\n","/**\n * Create a passably unique `id` attribute.\n *\n * @param {Number} radix An optional base for converting the Number to a String.\n *\n * @returns {String}\n */\nexport default function uniquId(radix = 36) {\n const [, attr] = Math.random().toString(radix).split('.');\n return `id_${attr}`;\n}\n","// extracted by mini-css-extract-plugin\nexport default {\"controls\":\"slideshow-module__controls___Eddqb\",\"previous\":\"slideshow-module__previous___tbrye\",\"next\":\"slideshow-module__next____tHUW\",\"indicators\":\"slideshow-module__indicators___xFA_m\",\"indicator\":\"slideshow-module__indicator___NiPCx\",\"indicatorActive\":\"slideshow-module__indicatorActive____xF9V\"};","import SlideshowConfig from 'components/slideshow';\nimport moduleStyles from './slideshow.module.scss';\n\n/* eslint-disable global-require, import/no-dynamic-require, import/no-webpack-loader-syntax, max-len */\nconst previous = require('!svg-inline-loader!./simple-arrow-left.svg');\nconst next = require('!svg-inline-loader!./simple-arrow-right.svg');\n/* eslint-enable */\n\n// Replace the icons used in the parent theme.\nObject.assign(\n SlideshowConfig.options,\n {\n icons: { previous, next },\n moduleStyles,\n },\n);\n","// extracted by mini-css-extract-plugin\nexport default {\"controls\":\"slideshow-module__controls___h8Bjm\",\"previous\":\"slideshow-module__previous___AtXPf\",\"next\":\"slideshow-module__next___o73g8\",\"indicators\":\"slideshow-module__indicators___iDicJ\",\"indicator\":\"slideshow-module__indicator___X5BWJ\",\"indicatorActive\":\"slideshow-module__indicatorActive___bNESc\"};","import { componentProvider } from 'js-component-framework';\nimport VideoEmbed from './video-embed';\n\nconst videoEmbedConfig = {\n name: 'video-embed',\n component: VideoEmbed,\n\n querySelectorAll: {\n // eslint-disable-next-line max-len\n allVideos: 'iframe[src*=\"//player.vimeo.com\"], iframe[src*=\"//www.youtube.com\"]',\n },\n};\n\ncomponentProvider(videoEmbedConfig);\n","import fastdom from 'fastdom';\n\n/**\n * Component to maintain width and aspect ratio of video embeds.\n */\nexport default class VideoEmbed {\n /**\n * Polyfill element.closest(selector).\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Element/closest#Polyfill\n */\n static polyfillClosest() {\n if (! Element.prototype.matches) {\n Element.prototype.matches = (\n Element.prototype.msMatchesSelector\n || Element.prototype.webkitMatchesSelector\n );\n }\n\n if (! Element.prototype.closest) {\n Element.prototype.closest = function (selector) { // eslint-disable-line func-names\n let domElement = this;\n\n do {\n if (domElement.matches(selector)) return domElement;\n domElement = domElement.parentElement || domElement.parentNode;\n } while (null !== domElement && 1 === domElement.nodeType);\n\n return null;\n };\n }\n }\n\n /**\n * Start the component.\n */\n constructor({ element, children, options }) {\n this.element = element;\n this.children = children;\n this.options = options;\n\n // Add polyfill.\n this.constructor.polyfillClosest();\n\n // Bind class methods.\n this.handleResize = this.handleResize.bind(this);\n\n const { allVideos } = this.children;\n if (null !== allVideos) {\n /**\n * Video iframes not contained in a wp-block-embed.\n * Embeds within blocks are handled via _embed.scss\n * @type {array}\n */\n this.nonBlockVideos = Array.prototype\n .slice.call(allVideos)\n .filter((video) => (\n null === video.closest('.wp-has-aspect-ratio')\n ));\n\n if (0 < this.nonBlockVideos.length) {\n /**\n * The number of non-wp-block-embed videos.\n * @type {number}\n */\n this.videoCount = this.nonBlockVideos.length;\n\n this.init();\n }\n }\n }\n\n /**\n * Ensure the video is fulwidth of it's container.\n */\n handleResize() {\n fastdom.mutate(() => {\n for (let i = 0; i < this.videoCount; i += 1) {\n if (\n undefined !== this.nonBlockVideos[i].dataset.aspectRatio\n && null !== this.nonBlockVideos[i].parentElement\n ) {\n const { aspectRatio } = this.nonBlockVideos[i].dataset;\n const newWidth = this.nonBlockVideos[i].parentElement.offsetWidth;\n\n this.nonBlockVideos[i].setAttribute('height', newWidth * aspectRatio);\n this.nonBlockVideos[i].setAttribute('width', newWidth);\n }\n }\n });\n }\n\n /**\n * Calculate the aspect ratio for each video.\n */\n init() {\n fastdom.measure(() => {\n for (let i = 0; i < this.videoCount; i += 1) {\n const ratio = (\n this.nonBlockVideos[i].height / this.nonBlockVideos[i].width\n );\n\n this.nonBlockVideos[i].dataset.aspectRatio = `${ratio}`;\n this.nonBlockVideos[i].removeAttribute('height');\n this.nonBlockVideos[i].removeAttribute('width');\n }\n });\n\n this.handleResize();\n window.addEventListener('resize', this.handleResize);\n }\n}\n"],"names":["module","exports","debug","raf","win","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","msRequestAnimationFrame","cb","setTimeout","FastDom","self","this","reads","writes","bind","scheduleFlush","fastdom","scheduled","flush","error","length","runTasks","e","message","catch","remove","array","item","index","indexOf","splice","prototype","constructor","tasks","task","shift","measure","fn","ctx","push","mutate","clear","extend","props","Error","child","Object","create","target","source","key","hasOwnProperty","mixin","initialize","window","options","head","tail","size","memoized","args","i","node","len","arguments","searchCache","next","prev","val","Array","apply","maxSize","re","not_string","not_bool","not_type","not_primitive","number","numeric_arg","json","not_json","text","modulo","placeholder","key_access","index_access","sign","sprintf","parse_tree","argv","arg","k","ph","pad","pad_character","pad_length","is_positive","cursor","tree_length","output","keys","undefined","param_no","test","type","Function","isNaN","TypeError","parseInt","toString","String","fromCharCode","JSON","stringify","width","precision","parseFloat","toExponential","toFixed","Number","toPrecision","substring","call","slice","toLowerCase","valueOf","toUpperCase","replace","pad_char","charAt","repeat","align","sprintf_format","fmt","sprintf_cache","match","_fmt","arg_names","exec","SyntaxError","field_list","replacement_field","field_match","sprintf_parse","vsprintf","concat","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","obj","prop","p","callback","document","readyState","addEventListener","once","componentProvider","config","component","Component","load","name","querySelector","querySelectorAll","init","selector","root","componentEls","console","log","from","map","element","children","forEach","elementKey","nodeList","getComponentArgs","isArray","event","componentLoader","src","ssrDocument","body","removeEventListener","activeElement","blur","nodeName","getElementById","createEvent","initEvent","createElement","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","doc","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","getComputedStyle","getPropertyValue","Image","Date","screen","clearTimeout","matchMedia","cancelAnimationFrame","id","delay","now","to","noExtend","nextSource","HTMLElement","nodeType","keysArray","filter","nextIndex","nextKey","desc","getOwnPropertyDescriptor","__swiper__","el","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","HTMLSlotElement","assignedElements","matches","showWarning","warn","err","tag","classes","classList","add","trim","split","c","elementStyle","elementIndex","previousSibling","parents","parent","parentElement","elementOuterSize","includeMargins","offsetWidth","support","deviceCached","browser","getSupport","smoothScroll","documentElement","touch","DocumentTouch","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","screenHeight","height","ipad","ipod","iphone","windows","macos","os","calcDevice","eventsEmitter","on","events","handler","priority","eventsListeners","destroyed","method","onceHandler","off","__emitterProxy","_len","_key","onAny","eventsAnyListeners","offAny","eventHandler","emit","data","context","_len2","_key2","unshift","toggleSlideClasses$1","slideEl","condition","className","contains","toggleSlideClasses","processLazyPreloader","imageEl","closest","isElement","slideClass","lazyEl","lazyPreloaderClass","shadowRoot","unlazy","slides","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","activeColumn","preloadColumns","_","includes","column","slideIndexLastInView","rewind","loop","realIndex","update","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","assign","updateSlides","getDirectionPropertyValue","label","getDirectionLabel","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","breakpoints","slide","updateSlide","slideStyles","currentTransform","transform","currentWebKitTransform","webkitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","offsetSize","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","isVisible","slideVisibleClass","slideFullyVisibleClass","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","nextEls","nextElementSibling","elementNextAll","prevEls","previousElementSibling","elementPrevAll","slideActiveClass","slideNextClass","slidePrevClass","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","getAttribute","initialized","runCallbacksOnInit","updateClickedSlide","path","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","transitionEmit","runCallbacks","direction","step","slideTo","internal","initial","animating","preventInteractionOnTransition","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","setTranslate","transitionStart","transitionEnd","isH","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","behavior","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","clientLeft","slidePrev","normalize","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","append","loopAddBlankSlides","recalcSlides","byController","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","currentTranslate","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","preventDefault","onTouchStart","originalEvent","pointerId","targetTouches","touchId","identifier","pageX","touches","simulateTouch","pointerType","targetEl","touchEventsTarget","isChild","elementIsChildOf","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","preventTouchMoveFromPointerMove","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","getTranslate","evt","bubbles","detail","bySwiperTouchMove","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","isSafari","isWebView","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","newProgress","previousTranslate","scrollLeft","scrollTop","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","defaults","swiperElementNodeName","resizeObserver","createElements","eventsPrefix","url","virtualTranslate","breakpointsBase","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","join","MozTransform","OTransform","MsTransform","msTransform","m41","m42","x","y","translateTo","translateBounds","newTranslate","onTranslateToWrapperTransitionEnd","transition","transitionDuration","transitionDelay","moving","isLocked","unsetGrabCursor","attachEvents","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","b","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","entries","prefix","resultClasses","prepareClasses","removeClasses","extendedDefaults","Swiper","swipers","newParams","needPerspectiveFix","major","minor","num","isSafariBrowser","need3dFix","calcBrowser","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","getWrapperSelector","slideSlots","hostEl","lazyElements","destroy","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","m","checkProps","Navigation","getEl","res","toggleEl","disabled","subEl","disabledClass","tagName","lockClass","onPrevClick","onNextClick","initButton","destroyButton","hideOnClick","hiddenClass","navigationDisabledClass","_s","targetIsButton","find","pagination","clickable","isHidden","toggle","Pagination","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletEl","position","onBulletClick","moveDirection","total","firstIndex","midIndex","classesToRemove","suffix","s","flat","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","offsetProp","subElIndex","fractionEl","textContent","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","innerHTML","render","paginationHTML","numberOfBullets","A11y","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","containerRole","itemRoleDescriptionMessage","slideRole","scrollOnFocus","clicked","preventFocusHandler","focusTargetSlideEl","liveRegion","visibilityChangedTimestamp","notify","notification","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElLabel","disableEl","enableEl","onEnterOrSpaceKey","keyCode","click","hasPagination","hasClickablePagination","initNavEl","wrapperId","controls","addElControls","handlePointerDown","handlePointerUp","onVisibilityChange","handleFocus","isActive","sourceCapabilities","firesTouchEvents","round","random","live","addElLive","updateNavigation","updatePagination","prototypeGroup","protoMethod","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","PRECEDENCE","OPENERS","TERMINATORS","PATTERN","logErrorOnce","_typeof","Symbol","iterator","_defineProperty","input","hint","prim","toPrimitive","configurable","writable","OPERATORS","DEFAULT_OPTIONS","contextDelimiter","onMissingKey","Tannin","pluralForms","ownKeys","enumerableOnly","getOwnPropertySymbols","symbols","sym","_objectSpread","getOwnPropertyDescriptors","defineProperties","getPluralForm","domain","plural","pf","evaluate","plural_forms","parts","part","getPluralExpression","expression","terms","operator","term","stack","pop","reverse","postfix","variables","j","getOperatorResult","earlyReturn","compile","dcnpgettext","singular","entry","DEFAULT_LOCALE_DATA","I18N_HOOK_REGEXP","namespace","hookName","hooks","storeKey","hooksStore","handlers","__current","hookInfo","currentIndex","runs","doAction","removeAll","handlersRemoved","_loop","some","hook","returnFirstArg","result","_hooksStore$__current","_hooksStore$__current2","defaultHooks","_Hooks","instance","Constructor","_classCallCheck","actions","filters","addAction","addFilter","removeAction","removeFilter","hasAction","hasFilter","removeAllActions","removeAllFilters","applyFilters","currentAction","currentFilter","doingAction","doingFilter","didAction","didFilter","i18n","initialData","initialDomain","tannin","listeners","Set","notifyListeners","listener","doSetLocaleData","setLocaleData","single","getFilterDomain","_x","translation","onHookAddedOrRemoved","getLocaleData","resetLocaleData","subscribe","delete","__","_n","_nx","isRTL","hasTranslation","_tannin$data","_tannin$data2","createI18n","carouselClassnames","sciencenewsClassnames","slideshow","carouselSelectors","reduce","acc","previous","require","SlideshowConfig","controlsWrapper","moduleStyles","slideCount","createControl","addIndicators","addCarouselControls","updateIndicators","completeCarouselSetup","perPage","perPageOption","draggable","perPageAttr","dataset","parse","showIndicators","carousel","beforeInit","slideChange","icons","icon","li","radix","attr","uniqueId","ariaLabel","format","fragment","createRange","createContextualFragment","appendChild","tabIndex","indicators","indicator","indicatorActive","currentSlide","indicatorWrapper","wrapper","polyfillClosest","Element","msMatchesSelector","webkitMatchesSelector","domElement","handleResize","allVideos","nonBlockVideos","video","videoCount","aspectRatio"],"sourceRoot":""}