{"version":3,"file":"bundle.js","sources":["../../node_modules/svelte/internal/index.mjs","../../node_modules/svelte-navigator/src/utils.js","../../node_modules/svelte/store/index.mjs","../../node_modules/svelte-navigator/src/contexts.js","../../node_modules/svelte-navigator/src/paths.js","../../node_modules/svelte-navigator/src/warning.js","../../node_modules/svelte-navigator/src/routes.js","../../node_modules/svelte-navigator/src/history.js","../../node_modules/svelte-navigator/src/a11y.js","../../node_modules/svelte-navigator/src/Router.svelte","../../node_modules/svelte-navigator/src/hooks.js","../../node_modules/svelte-navigator/src/Route.svelte","../../node_modules/svelte-navigator/src/Link.svelte","../../node_modules/svelty-picker/src/settings.js","../../node_modules/svelty-picker/src/i18n.js","../../node_modules/svelte/easing/index.mjs","../../node_modules/svelte/transition/index.mjs","../../node_modules/svelty-picker/src/dateUtils.js","../../node_modules/svelty-picker/src/utils.js","../../node_modules/svelty-picker/src/Calendar.svelte","../../node_modules/svelty-picker/src/Time.svelte","../../node_modules/svelty-picker/src/SveltyPicker.svelte","../../node_modules/svelte-icon/Icon.svelte","../../src/helpers.ts","../../src/components/QRownIcon.svelte","../../src/components/ExperienceTitle.svelte","../../src/components/CLink.svelte","../../src/components/ExperienceAlternatives.svelte","../../node_modules/ssr-window/ssr-window.esm.js","../../node_modules/dom7/dom7.esm.js","../../node_modules/swiper/shared/dom.js","../../node_modules/swiper/shared/utils.js","../../node_modules/swiper/shared/get-support.js","../../node_modules/swiper/shared/get-device.js","../../node_modules/swiper/shared/get-browser.js","../../node_modules/swiper/core/events-emitter.js","../../node_modules/swiper/core/update/index.js","../../node_modules/swiper/core/update/updateSize.js","../../node_modules/swiper/core/update/updateSlides.js","../../node_modules/swiper/core/update/updateAutoHeight.js","../../node_modules/swiper/core/update/updateSlidesOffset.js","../../node_modules/swiper/core/update/updateSlidesProgress.js","../../node_modules/swiper/core/update/updateProgress.js","../../node_modules/swiper/core/update/updateSlidesClasses.js","../../node_modules/swiper/core/update/updateActiveIndex.js","../../node_modules/swiper/core/update/updateClickedSlide.js","../../node_modules/swiper/core/translate/index.js","../../node_modules/swiper/core/translate/getTranslate.js","../../node_modules/swiper/core/translate/setTranslate.js","../../node_modules/swiper/core/translate/minTranslate.js","../../node_modules/swiper/core/translate/maxTranslate.js","../../node_modules/swiper/core/translate/translateTo.js","../../node_modules/swiper/core/transition/transitionEmit.js","../../node_modules/swiper/core/transition/index.js","../../node_modules/swiper/core/transition/setTransition.js","../../node_modules/swiper/core/transition/transitionStart.js","../../node_modules/swiper/core/transition/transitionEnd.js","../../node_modules/swiper/core/slide/index.js","../../node_modules/swiper/core/slide/slideTo.js","../../node_modules/swiper/core/slide/slideToLoop.js","../../node_modules/swiper/core/slide/slideNext.js","../../node_modules/swiper/core/slide/slidePrev.js","../../node_modules/swiper/core/slide/slideReset.js","../../node_modules/swiper/core/slide/slideToClosest.js","../../node_modules/swiper/core/slide/slideToClickedSlide.js","../../node_modules/swiper/core/loop/index.js","../../node_modules/swiper/core/loop/loopCreate.js","../../node_modules/swiper/core/loop/loopFix.js","../../node_modules/swiper/core/loop/loopDestroy.js","../../node_modules/swiper/core/events/onTouchStart.js","../../node_modules/swiper/core/events/onTouchMove.js","../../node_modules/swiper/core/events/onTouchEnd.js","../../node_modules/swiper/core/events/onResize.js","../../node_modules/swiper/core/events/onClick.js","../../node_modules/swiper/core/events/onScroll.js","../../node_modules/swiper/core/events/index.js","../../node_modules/swiper/core/breakpoints/setBreakpoint.js","../../node_modules/swiper/core/classes/index.js","../../node_modules/swiper/core/classes/addClasses.js","../../node_modules/swiper/core/classes/removeClasses.js","../../node_modules/swiper/core/check-overflow/index.js","../../node_modules/swiper/core/defaults.js","../../node_modules/swiper/core/moduleExtendParams.js","../../node_modules/swiper/core/core.js","../../node_modules/swiper/core/grab-cursor/index.js","../../node_modules/swiper/core/grab-cursor/setGrabCursor.js","../../node_modules/swiper/core/grab-cursor/unsetGrabCursor.js","../../node_modules/swiper/core/breakpoints/index.js","../../node_modules/swiper/core/breakpoints/getBreakpoint.js","../../node_modules/swiper/core/images/index.js","../../node_modules/swiper/core/images/loadImage.js","../../node_modules/swiper/core/images/preloadImages.js","../../node_modules/swiper/shared/create-element-if-not-defined.js","../../node_modules/swiper/modules/navigation/navigation.js","../../node_modules/swiper/shared/classes-to-selector.js","../../node_modules/swiper/modules/pagination/pagination.js","../../node_modules/swiper/modules/autoplay/autoplay.js","../../node_modules/swiper/shared/effect-target.js","../../node_modules/swiper/modules/effect-fade/effect-fade.js","../../node_modules/swiper/shared/effect-init.js","../../node_modules/swiper/shared/effect-virtual-transition-end.js","../../node_modules/swiper/svelte/utils.js","../../node_modules/swiper/core/modules/resize/resize.js","../../node_modules/swiper/core/modules/observer/observer.js","../../node_modules/swiper/svelte/params-list.js","../../node_modules/swiper/svelte/update-swiper.js","../../node_modules/swiper/svelte/swiper.svelte","../../node_modules/swiper/svelte/get-params.js","../../node_modules/swiper/svelte/init-swiper.js","../../node_modules/swiper/svelte/get-changed-params.js","../../node_modules/swiper/svelte/swiper-slide.svelte","../../src/components/ExperienceDetailsImage.svelte","../../node_modules/date-fns/esm/_lib/toInteger/index.js","../../node_modules/date-fns/esm/_lib/requiredArgs/index.js","../../node_modules/date-fns/esm/toDate/index.js","../../node_modules/date-fns/esm/addMilliseconds/index.js","../../node_modules/date-fns/esm/_lib/getTimezoneOffsetInMilliseconds/index.js","../../node_modules/date-fns/esm/startOfDay/index.js","../../node_modules/date-fns/esm/differenceInCalendarDays/index.js","../../node_modules/date-fns/esm/constants/index.js","../../node_modules/date-fns/esm/isDate/index.js","../../node_modules/date-fns/esm/isValid/index.js","../../node_modules/date-fns/esm/differenceInDays/index.js","../../node_modules/date-fns/esm/locale/en-US/_lib/formatDistance/index.js","../../node_modules/date-fns/esm/locale/_lib/buildFormatLongFn/index.js","../../node_modules/date-fns/esm/locale/en-US/_lib/formatLong/index.js","../../node_modules/date-fns/esm/locale/en-US/_lib/formatRelative/index.js","../../node_modules/date-fns/esm/locale/_lib/buildLocalizeFn/index.js","../../node_modules/date-fns/esm/locale/en-US/_lib/localize/index.js","../../node_modules/date-fns/esm/locale/_lib/buildMatchFn/index.js","../../node_modules/date-fns/esm/locale/en-US/_lib/match/index.js","../../node_modules/date-fns/esm/locale/_lib/buildMatchPatternFn/index.js","../../node_modules/date-fns/esm/locale/en-US/index.js","../../node_modules/date-fns/esm/subMilliseconds/index.js","../../node_modules/date-fns/esm/_lib/getUTCDayOfYear/index.js","../../node_modules/date-fns/esm/_lib/startOfUTCISOWeek/index.js","../../node_modules/date-fns/esm/_lib/getUTCISOWeekYear/index.js","../../node_modules/date-fns/esm/_lib/startOfUTCISOWeekYear/index.js","../../node_modules/date-fns/esm/_lib/getUTCISOWeek/index.js","../../node_modules/date-fns/esm/_lib/startOfUTCWeek/index.js","../../node_modules/date-fns/esm/_lib/getUTCWeekYear/index.js","../../node_modules/date-fns/esm/_lib/startOfUTCWeekYear/index.js","../../node_modules/date-fns/esm/_lib/getUTCWeek/index.js","../../node_modules/date-fns/esm/_lib/addLeadingZeros/index.js","../../node_modules/date-fns/esm/_lib/format/lightFormatters/index.js","../../node_modules/date-fns/esm/_lib/format/formatters/index.js","../../node_modules/date-fns/esm/_lib/format/longFormatters/index.js","../../node_modules/date-fns/esm/_lib/protectedTokens/index.js","../../node_modules/date-fns/esm/format/index.js","../../node_modules/date-fns/esm/_lib/assign/index.js","../../node_modules/date-fns/esm/isAfter/index.js","../../node_modules/date-fns/esm/_lib/setUTCDay/index.js","../../node_modules/date-fns/esm/parse/_lib/parsers/index.js","../../node_modules/date-fns/esm/_lib/setUTCWeek/index.js","../../node_modules/date-fns/esm/_lib/setUTCISOWeek/index.js","../../node_modules/date-fns/esm/_lib/setUTCISODay/index.js","../../node_modules/date-fns/esm/parse/index.js","../../node_modules/date-fns/esm/parseISO/index.js","../../src/components/ExperienceRemaining.svelte","../../src/components/Hr.svelte","../../src/components/Button.svelte","../../src/components/Pin.svelte","../../src/components/Redeem.svelte","../../src/components/Columns.svelte","../../src/components/Sizer.svelte","../../src/components/BonusFactor.svelte","../../src/components/ExperienceListItem.svelte","../../src/components/TopExperiences.svelte","../../src/components/ExperienceDetailsNewsItem.svelte","../../src/components/ExperienceDetails.svelte","../../src/components/UserMenu.svelte","../../src/components/Navigation.svelte","../../src/icons/MenuIcon.svelte","../../src/components/Header.svelte","../../src/components/ContentWrapper.svelte","../../src/components/TopOfPage.svelte","../../src/pages/Experience.svelte","../../node_modules/svelte/motion/index.mjs","../../node_modules/svelte-gestures/dist/index.esm.js","../../src/components/ExperienceList.svelte","../../src/components/FilterItem.svelte","../../src/components/FilterItemDate.svelte","../../src/components/FilterItemTime.svelte","../../src/components/FilterItemOrder.svelte","../../src/components/Filter.svelte","../../src/components/ExperienceListHero.svelte","../../src/pages/Experiences.svelte","../../src/components/NewsItem.svelte","../../src/pages/News.svelte","../../src/components/NewsList.svelte","../../src/pages/NewsList.svelte","../../src/pages/PreviewList.svelte","../../src/components/Hero.svelte","../../src/components/Section.svelte","../../src/components/SectionTitle.svelte","../../src/components/AppSoonModal.svelte","../../src/components/AppPromo.svelte","../../src/components/HomeFooter.svelte","../../src/components/PackageSelect.svelte","../../src/pages/Home.svelte","../../src/pages/Imprint.svelte","../../src/pages/DataPrivacy.svelte","../../src/pages/UseTerms.svelte","../../src/components/PartnerHero.svelte","../../src/components/PartnerHeroSlide.svelte","../../src/components/PartnerSectionTop.svelte","../../src/components/Coin.svelte","../../src/components/Explainer.svelte","../../src/pages/PartnerInfo.svelte","../../src/pages/PartnerInfoRestaurants.svelte","../../src/components/PremiumPartnerHero.svelte","../../src/components/PremiumPartnerSectionTop.svelte","../../src/pages/PremiumPartnerInfo.svelte","../../src/pages/Landing.svelte","../../src/pages/Tipi.svelte","../../src/pages/Dot.svelte","../../src/pages/B2B.svelte","../../src/pages/TVHeute.svelte","../../src/pages/Plantatree.svelte","../../src/App.svelte","../../src/main.js"],"sourcesContent":["function noop() { }\nconst identity = x => x;\nfunction assign(tar, src) {\n // @ts-ignore\n for (const k in src)\n tar[k] = src[k];\n return tar;\n}\nfunction is_promise(value) {\n return value && typeof value === 'object' && typeof value.then === 'function';\n}\nfunction add_location(element, file, line, column, char) {\n element.__svelte_meta = {\n loc: { file, line, column, char }\n };\n}\nfunction run(fn) {\n return fn();\n}\nfunction blank_object() {\n return Object.create(null);\n}\nfunction run_all(fns) {\n fns.forEach(run);\n}\nfunction is_function(thing) {\n return typeof thing === 'function';\n}\nfunction safe_not_equal(a, b) {\n return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function');\n}\nlet src_url_equal_anchor;\nfunction src_url_equal(element_src, url) {\n if (!src_url_equal_anchor) {\n src_url_equal_anchor = document.createElement('a');\n }\n src_url_equal_anchor.href = url;\n return element_src === src_url_equal_anchor.href;\n}\nfunction not_equal(a, b) {\n return a != a ? b == b : a !== b;\n}\nfunction is_empty(obj) {\n return Object.keys(obj).length === 0;\n}\nfunction validate_store(store, name) {\n if (store != null && typeof store.subscribe !== 'function') {\n throw new Error(`'${name}' is not a store with a 'subscribe' method`);\n }\n}\nfunction subscribe(store, ...callbacks) {\n if (store == null) {\n return noop;\n }\n const unsub = store.subscribe(...callbacks);\n return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;\n}\nfunction get_store_value(store) {\n let value;\n subscribe(store, _ => value = _)();\n return value;\n}\nfunction component_subscribe(component, store, callback) {\n component.$$.on_destroy.push(subscribe(store, callback));\n}\nfunction create_slot(definition, ctx, $$scope, fn) {\n if (definition) {\n const slot_ctx = get_slot_context(definition, ctx, $$scope, fn);\n return definition[0](slot_ctx);\n }\n}\nfunction get_slot_context(definition, ctx, $$scope, fn) {\n return definition[1] && fn\n ? assign($$scope.ctx.slice(), definition[1](fn(ctx)))\n : $$scope.ctx;\n}\nfunction get_slot_changes(definition, $$scope, dirty, fn) {\n if (definition[2] && fn) {\n const lets = definition[2](fn(dirty));\n if ($$scope.dirty === undefined) {\n return lets;\n }\n if (typeof lets === 'object') {\n const merged = [];\n const len = Math.max($$scope.dirty.length, lets.length);\n for (let i = 0; i < len; i += 1) {\n merged[i] = $$scope.dirty[i] | lets[i];\n }\n return merged;\n }\n return $$scope.dirty | lets;\n }\n return $$scope.dirty;\n}\nfunction update_slot_base(slot, slot_definition, ctx, $$scope, slot_changes, get_slot_context_fn) {\n if (slot_changes) {\n const slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn);\n slot.p(slot_context, slot_changes);\n }\n}\nfunction update_slot(slot, slot_definition, ctx, $$scope, dirty, get_slot_changes_fn, get_slot_context_fn) {\n const slot_changes = get_slot_changes(slot_definition, $$scope, dirty, get_slot_changes_fn);\n update_slot_base(slot, slot_definition, ctx, $$scope, slot_changes, get_slot_context_fn);\n}\nfunction get_all_dirty_from_scope($$scope) {\n if ($$scope.ctx.length > 32) {\n const dirty = [];\n const length = $$scope.ctx.length / 32;\n for (let i = 0; i < length; i++) {\n dirty[i] = -1;\n }\n return dirty;\n }\n return -1;\n}\nfunction exclude_internal_props(props) {\n const result = {};\n for (const k in props)\n if (k[0] !== '$')\n result[k] = props[k];\n return result;\n}\nfunction compute_rest_props(props, keys) {\n const rest = {};\n keys = new Set(keys);\n for (const k in props)\n if (!keys.has(k) && k[0] !== '$')\n rest[k] = props[k];\n return rest;\n}\nfunction compute_slots(slots) {\n const result = {};\n for (const key in slots) {\n result[key] = true;\n }\n return result;\n}\nfunction once(fn) {\n let ran = false;\n return function (...args) {\n if (ran)\n return;\n ran = true;\n fn.call(this, ...args);\n };\n}\nfunction null_to_empty(value) {\n return value == null ? '' : value;\n}\nfunction set_store_value(store, ret, value) {\n store.set(value);\n return ret;\n}\nconst has_prop = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);\nfunction action_destroyer(action_result) {\n return action_result && is_function(action_result.destroy) ? action_result.destroy : noop;\n}\n\nconst is_client = typeof window !== 'undefined';\nlet now = is_client\n ? () => window.performance.now()\n : () => Date.now();\nlet raf = is_client ? cb => requestAnimationFrame(cb) : noop;\n// used internally for testing\nfunction set_now(fn) {\n now = fn;\n}\nfunction set_raf(fn) {\n raf = fn;\n}\n\nconst tasks = new Set();\nfunction run_tasks(now) {\n tasks.forEach(task => {\n if (!task.c(now)) {\n tasks.delete(task);\n task.f();\n }\n });\n if (tasks.size !== 0)\n raf(run_tasks);\n}\n/**\n * For testing purposes only!\n */\nfunction clear_loops() {\n tasks.clear();\n}\n/**\n * Creates a new task that runs on each raf frame\n * until it returns a falsy value or is aborted\n */\nfunction loop(callback) {\n let task;\n if (tasks.size === 0)\n raf(run_tasks);\n return {\n promise: new Promise(fulfill => {\n tasks.add(task = { c: callback, f: fulfill });\n }),\n abort() {\n tasks.delete(task);\n }\n };\n}\n\n// Track which nodes are claimed during hydration. Unclaimed nodes can then be removed from the DOM\n// at the end of hydration without touching the remaining nodes.\nlet is_hydrating = false;\nfunction start_hydrating() {\n is_hydrating = true;\n}\nfunction end_hydrating() {\n is_hydrating = false;\n}\nfunction upper_bound(low, high, key, value) {\n // Return first index of value larger than input value in the range [low, high)\n while (low < high) {\n const mid = low + ((high - low) >> 1);\n if (key(mid) <= value) {\n low = mid + 1;\n }\n else {\n high = mid;\n }\n }\n return low;\n}\nfunction init_hydrate(target) {\n if (target.hydrate_init)\n return;\n target.hydrate_init = true;\n // We know that all children have claim_order values since the unclaimed have been detached if target is not \n let children = target.childNodes;\n // If target is , there may be children without claim_order\n if (target.nodeName === 'HEAD') {\n const myChildren = [];\n for (let i = 0; i < children.length; i++) {\n const node = children[i];\n if (node.claim_order !== undefined) {\n myChildren.push(node);\n }\n }\n children = myChildren;\n }\n /*\n * Reorder claimed children optimally.\n * We can reorder claimed children optimally by finding the longest subsequence of\n * nodes that are already claimed in order and only moving the rest. The longest\n * subsequence subsequence of nodes that are claimed in order can be found by\n * computing the longest increasing subsequence of .claim_order values.\n *\n * This algorithm is optimal in generating the least amount of reorder operations\n * possible.\n *\n * Proof:\n * We know that, given a set of reordering operations, the nodes that do not move\n * always form an increasing subsequence, since they do not move among each other\n * meaning that they must be already ordered among each other. Thus, the maximal\n * set of nodes that do not move form a longest increasing subsequence.\n */\n // Compute longest increasing subsequence\n // m: subsequence length j => index k of smallest value that ends an increasing subsequence of length j\n const m = new Int32Array(children.length + 1);\n // Predecessor indices + 1\n const p = new Int32Array(children.length);\n m[0] = -1;\n let longest = 0;\n for (let i = 0; i < children.length; i++) {\n const current = children[i].claim_order;\n // Find the largest subsequence length such that it ends in a value less than our current value\n // upper_bound returns first greater value, so we subtract one\n // with fast path for when we are on the current longest subsequence\n const seqLen = ((longest > 0 && children[m[longest]].claim_order <= current) ? longest + 1 : upper_bound(1, longest, idx => children[m[idx]].claim_order, current)) - 1;\n p[i] = m[seqLen] + 1;\n const newLen = seqLen + 1;\n // We can guarantee that current is the smallest value. Otherwise, we would have generated a longer sequence.\n m[newLen] = i;\n longest = Math.max(newLen, longest);\n }\n // The longest increasing subsequence of nodes (initially reversed)\n const lis = [];\n // The rest of the nodes, nodes that will be moved\n const toMove = [];\n let last = children.length - 1;\n for (let cur = m[longest] + 1; cur != 0; cur = p[cur - 1]) {\n lis.push(children[cur - 1]);\n for (; last >= cur; last--) {\n toMove.push(children[last]);\n }\n last--;\n }\n for (; last >= 0; last--) {\n toMove.push(children[last]);\n }\n lis.reverse();\n // We sort the nodes being moved to guarantee that their insertion order matches the claim order\n toMove.sort((a, b) => a.claim_order - b.claim_order);\n // Finally, we move the nodes\n for (let i = 0, j = 0; i < toMove.length; i++) {\n while (j < lis.length && toMove[i].claim_order >= lis[j].claim_order) {\n j++;\n }\n const anchor = j < lis.length ? lis[j] : null;\n target.insertBefore(toMove[i], anchor);\n }\n}\nfunction append(target, node) {\n target.appendChild(node);\n}\nfunction append_styles(target, style_sheet_id, styles) {\n const append_styles_to = get_root_for_style(target);\n if (!append_styles_to.getElementById(style_sheet_id)) {\n const style = element('style');\n style.id = style_sheet_id;\n style.textContent = styles;\n append_stylesheet(append_styles_to, style);\n }\n}\nfunction get_root_for_style(node) {\n if (!node)\n return document;\n const root = node.getRootNode ? node.getRootNode() : node.ownerDocument;\n if (root && root.host) {\n return root;\n }\n return node.ownerDocument;\n}\nfunction append_empty_stylesheet(node) {\n const style_element = element('style');\n append_stylesheet(get_root_for_style(node), style_element);\n return style_element.sheet;\n}\nfunction append_stylesheet(node, style) {\n append(node.head || node, style);\n}\nfunction append_hydration(target, node) {\n if (is_hydrating) {\n init_hydrate(target);\n if ((target.actual_end_child === undefined) || ((target.actual_end_child !== null) && (target.actual_end_child.parentElement !== target))) {\n target.actual_end_child = target.firstChild;\n }\n // Skip nodes of undefined ordering\n while ((target.actual_end_child !== null) && (target.actual_end_child.claim_order === undefined)) {\n target.actual_end_child = target.actual_end_child.nextSibling;\n }\n if (node !== target.actual_end_child) {\n // We only insert if the ordering of this node should be modified or the parent node is not target\n if (node.claim_order !== undefined || node.parentNode !== target) {\n target.insertBefore(node, target.actual_end_child);\n }\n }\n else {\n target.actual_end_child = node.nextSibling;\n }\n }\n else if (node.parentNode !== target || node.nextSibling !== null) {\n target.appendChild(node);\n }\n}\nfunction insert(target, node, anchor) {\n target.insertBefore(node, anchor || null);\n}\nfunction insert_hydration(target, node, anchor) {\n if (is_hydrating && !anchor) {\n append_hydration(target, node);\n }\n else if (node.parentNode !== target || node.nextSibling != anchor) {\n target.insertBefore(node, anchor || null);\n }\n}\nfunction detach(node) {\n node.parentNode.removeChild(node);\n}\nfunction destroy_each(iterations, detaching) {\n for (let i = 0; i < iterations.length; i += 1) {\n if (iterations[i])\n iterations[i].d(detaching);\n }\n}\nfunction element(name) {\n return document.createElement(name);\n}\nfunction element_is(name, is) {\n return document.createElement(name, { is });\n}\nfunction object_without_properties(obj, exclude) {\n const target = {};\n for (const k in obj) {\n if (has_prop(obj, k)\n // @ts-ignore\n && exclude.indexOf(k) === -1) {\n // @ts-ignore\n target[k] = obj[k];\n }\n }\n return target;\n}\nfunction svg_element(name) {\n return document.createElementNS('http://www.w3.org/2000/svg', name);\n}\nfunction text(data) {\n return document.createTextNode(data);\n}\nfunction space() {\n return text(' ');\n}\nfunction empty() {\n return text('');\n}\nfunction listen(node, event, handler, options) {\n node.addEventListener(event, handler, options);\n return () => node.removeEventListener(event, handler, options);\n}\nfunction prevent_default(fn) {\n return function (event) {\n event.preventDefault();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction stop_propagation(fn) {\n return function (event) {\n event.stopPropagation();\n // @ts-ignore\n return fn.call(this, event);\n };\n}\nfunction self(fn) {\n return function (event) {\n // @ts-ignore\n if (event.target === this)\n fn.call(this, event);\n };\n}\nfunction trusted(fn) {\n return function (event) {\n // @ts-ignore\n if (event.isTrusted)\n fn.call(this, event);\n };\n}\nfunction attr(node, attribute, value) {\n if (value == null)\n node.removeAttribute(attribute);\n else if (node.getAttribute(attribute) !== value)\n node.setAttribute(attribute, value);\n}\nfunction set_attributes(node, attributes) {\n // @ts-ignore\n const descriptors = Object.getOwnPropertyDescriptors(node.__proto__);\n for (const key in attributes) {\n if (attributes[key] == null) {\n node.removeAttribute(key);\n }\n else if (key === 'style') {\n node.style.cssText = attributes[key];\n }\n else if (key === '__value') {\n node.value = node[key] = attributes[key];\n }\n else if (descriptors[key] && descriptors[key].set) {\n node[key] = attributes[key];\n }\n else {\n attr(node, key, attributes[key]);\n }\n }\n}\nfunction set_svg_attributes(node, attributes) {\n for (const key in attributes) {\n attr(node, key, attributes[key]);\n }\n}\nfunction set_custom_element_data(node, prop, value) {\n if (prop in node) {\n node[prop] = typeof node[prop] === 'boolean' && value === '' ? true : value;\n }\n else {\n attr(node, prop, value);\n }\n}\nfunction xlink_attr(node, attribute, value) {\n node.setAttributeNS('http://www.w3.org/1999/xlink', attribute, value);\n}\nfunction get_binding_group_value(group, __value, checked) {\n const value = new Set();\n for (let i = 0; i < group.length; i += 1) {\n if (group[i].checked)\n value.add(group[i].__value);\n }\n if (!checked) {\n value.delete(__value);\n }\n return Array.from(value);\n}\nfunction to_number(value) {\n return value === '' ? null : +value;\n}\nfunction time_ranges_to_array(ranges) {\n const array = [];\n for (let i = 0; i < ranges.length; i += 1) {\n array.push({ start: ranges.start(i), end: ranges.end(i) });\n }\n return array;\n}\nfunction children(element) {\n return Array.from(element.childNodes);\n}\nfunction init_claim_info(nodes) {\n if (nodes.claim_info === undefined) {\n nodes.claim_info = { last_index: 0, total_claimed: 0 };\n }\n}\nfunction claim_node(nodes, predicate, processNode, createNode, dontUpdateLastIndex = false) {\n // Try to find nodes in an order such that we lengthen the longest increasing subsequence\n init_claim_info(nodes);\n const resultNode = (() => {\n // We first try to find an element after the previous one\n for (let i = nodes.claim_info.last_index; i < nodes.length; i++) {\n const node = nodes[i];\n if (predicate(node)) {\n const replacement = processNode(node);\n if (replacement === undefined) {\n nodes.splice(i, 1);\n }\n else {\n nodes[i] = replacement;\n }\n if (!dontUpdateLastIndex) {\n nodes.claim_info.last_index = i;\n }\n return node;\n }\n }\n // Otherwise, we try to find one before\n // We iterate in reverse so that we don't go too far back\n for (let i = nodes.claim_info.last_index - 1; i >= 0; i--) {\n const node = nodes[i];\n if (predicate(node)) {\n const replacement = processNode(node);\n if (replacement === undefined) {\n nodes.splice(i, 1);\n }\n else {\n nodes[i] = replacement;\n }\n if (!dontUpdateLastIndex) {\n nodes.claim_info.last_index = i;\n }\n else if (replacement === undefined) {\n // Since we spliced before the last_index, we decrease it\n nodes.claim_info.last_index--;\n }\n return node;\n }\n }\n // If we can't find any matching node, we create a new one\n return createNode();\n })();\n resultNode.claim_order = nodes.claim_info.total_claimed;\n nodes.claim_info.total_claimed += 1;\n return resultNode;\n}\nfunction claim_element_base(nodes, name, attributes, create_element) {\n return claim_node(nodes, (node) => node.nodeName === name, (node) => {\n const remove = [];\n for (let j = 0; j < node.attributes.length; j++) {\n const attribute = node.attributes[j];\n if (!attributes[attribute.name]) {\n remove.push(attribute.name);\n }\n }\n remove.forEach(v => node.removeAttribute(v));\n return undefined;\n }, () => create_element(name));\n}\nfunction claim_element(nodes, name, attributes) {\n return claim_element_base(nodes, name, attributes, element);\n}\nfunction claim_svg_element(nodes, name, attributes) {\n return claim_element_base(nodes, name, attributes, svg_element);\n}\nfunction claim_text(nodes, data) {\n return claim_node(nodes, (node) => node.nodeType === 3, (node) => {\n const dataStr = '' + data;\n if (node.data.startsWith(dataStr)) {\n if (node.data.length !== dataStr.length) {\n return node.splitText(dataStr.length);\n }\n }\n else {\n node.data = dataStr;\n }\n }, () => text(data), true // Text nodes should not update last index since it is likely not worth it to eliminate an increasing subsequence of actual elements\n );\n}\nfunction claim_space(nodes) {\n return claim_text(nodes, ' ');\n}\nfunction find_comment(nodes, text, start) {\n for (let i = start; i < nodes.length; i += 1) {\n const node = nodes[i];\n if (node.nodeType === 8 /* comment node */ && node.textContent.trim() === text) {\n return i;\n }\n }\n return nodes.length;\n}\nfunction claim_html_tag(nodes, is_svg) {\n // find html opening tag\n const start_index = find_comment(nodes, 'HTML_TAG_START', 0);\n const end_index = find_comment(nodes, 'HTML_TAG_END', start_index);\n if (start_index === end_index) {\n return new HtmlTagHydration(undefined, is_svg);\n }\n init_claim_info(nodes);\n const html_tag_nodes = nodes.splice(start_index, end_index - start_index + 1);\n detach(html_tag_nodes[0]);\n detach(html_tag_nodes[html_tag_nodes.length - 1]);\n const claimed_nodes = html_tag_nodes.slice(1, html_tag_nodes.length - 1);\n for (const n of claimed_nodes) {\n n.claim_order = nodes.claim_info.total_claimed;\n nodes.claim_info.total_claimed += 1;\n }\n return new HtmlTagHydration(claimed_nodes, is_svg);\n}\nfunction set_data(text, data) {\n data = '' + data;\n if (text.wholeText !== data)\n text.data = data;\n}\nfunction set_input_value(input, value) {\n input.value = value == null ? '' : value;\n}\nfunction set_input_type(input, type) {\n try {\n input.type = type;\n }\n catch (e) {\n // do nothing\n }\n}\nfunction set_style(node, key, value, important) {\n if (value === null) {\n node.style.removeProperty(key);\n }\n else {\n node.style.setProperty(key, value, important ? 'important' : '');\n }\n}\nfunction select_option(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n if (option.__value === value) {\n option.selected = true;\n return;\n }\n }\n select.selectedIndex = -1; // no option should be selected\n}\nfunction select_options(select, value) {\n for (let i = 0; i < select.options.length; i += 1) {\n const option = select.options[i];\n option.selected = ~value.indexOf(option.__value);\n }\n}\nfunction select_value(select) {\n const selected_option = select.querySelector(':checked') || select.options[0];\n return selected_option && selected_option.__value;\n}\nfunction select_multiple_value(select) {\n return [].map.call(select.querySelectorAll(':checked'), option => option.__value);\n}\n// unfortunately this can't be a constant as that wouldn't be tree-shakeable\n// so we cache the result instead\nlet crossorigin;\nfunction is_crossorigin() {\n if (crossorigin === undefined) {\n crossorigin = false;\n try {\n if (typeof window !== 'undefined' && window.parent) {\n void window.parent.document;\n }\n }\n catch (error) {\n crossorigin = true;\n }\n }\n return crossorigin;\n}\nfunction add_resize_listener(node, fn) {\n const computed_style = getComputedStyle(node);\n if (computed_style.position === 'static') {\n node.style.position = 'relative';\n }\n const iframe = element('iframe');\n iframe.setAttribute('style', 'display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; ' +\n 'overflow: hidden; border: 0; opacity: 0; pointer-events: none; z-index: -1;');\n iframe.setAttribute('aria-hidden', 'true');\n iframe.tabIndex = -1;\n const crossorigin = is_crossorigin();\n let unsubscribe;\n if (crossorigin) {\n iframe.src = \"data:text/html,\";\n unsubscribe = listen(window, 'message', (event) => {\n if (event.source === iframe.contentWindow)\n fn();\n });\n }\n else {\n iframe.src = 'about:blank';\n iframe.onload = () => {\n unsubscribe = listen(iframe.contentWindow, 'resize', fn);\n };\n }\n append(node, iframe);\n return () => {\n if (crossorigin) {\n unsubscribe();\n }\n else if (unsubscribe && iframe.contentWindow) {\n unsubscribe();\n }\n detach(iframe);\n };\n}\nfunction toggle_class(element, name, toggle) {\n element.classList[toggle ? 'add' : 'remove'](name);\n}\nfunction custom_event(type, detail, { bubbles = false, cancelable = false } = {}) {\n const e = document.createEvent('CustomEvent');\n e.initCustomEvent(type, bubbles, cancelable, detail);\n return e;\n}\nfunction query_selector_all(selector, parent = document.body) {\n return Array.from(parent.querySelectorAll(selector));\n}\nclass HtmlTag {\n constructor(is_svg = false) {\n this.is_svg = false;\n this.is_svg = is_svg;\n this.e = this.n = null;\n }\n c(html) {\n this.h(html);\n }\n m(html, target, anchor = null) {\n if (!this.e) {\n if (this.is_svg)\n this.e = svg_element(target.nodeName);\n else\n this.e = element(target.nodeName);\n this.t = target;\n this.c(html);\n }\n this.i(anchor);\n }\n h(html) {\n this.e.innerHTML = html;\n this.n = Array.from(this.e.childNodes);\n }\n i(anchor) {\n for (let i = 0; i < this.n.length; i += 1) {\n insert(this.t, this.n[i], anchor);\n }\n }\n p(html) {\n this.d();\n this.h(html);\n this.i(this.a);\n }\n d() {\n this.n.forEach(detach);\n }\n}\nclass HtmlTagHydration extends HtmlTag {\n constructor(claimed_nodes, is_svg = false) {\n super(is_svg);\n this.e = this.n = null;\n this.l = claimed_nodes;\n }\n c(html) {\n if (this.l) {\n this.n = this.l;\n }\n else {\n super.c(html);\n }\n }\n i(anchor) {\n for (let i = 0; i < this.n.length; i += 1) {\n insert_hydration(this.t, this.n[i], anchor);\n }\n }\n}\nfunction attribute_to_object(attributes) {\n const result = {};\n for (const attribute of attributes) {\n result[attribute.name] = attribute.value;\n }\n return result;\n}\nfunction get_custom_elements_slots(element) {\n const result = {};\n element.childNodes.forEach((node) => {\n result[node.slot || 'default'] = true;\n });\n return result;\n}\n\n// we need to store the information for multiple documents because a Svelte application could also contain iframes\n// https://github.com/sveltejs/svelte/issues/3624\nconst managed_styles = new Map();\nlet active = 0;\n// https://github.com/darkskyapp/string-hash/blob/master/index.js\nfunction hash(str) {\n let hash = 5381;\n let i = str.length;\n while (i--)\n hash = ((hash << 5) - hash) ^ str.charCodeAt(i);\n return hash >>> 0;\n}\nfunction create_style_information(doc, node) {\n const info = { stylesheet: append_empty_stylesheet(node), rules: {} };\n managed_styles.set(doc, info);\n return info;\n}\nfunction create_rule(node, a, b, duration, delay, ease, fn, uid = 0) {\n const step = 16.666 / duration;\n let keyframes = '{\\n';\n for (let p = 0; p <= 1; p += step) {\n const t = a + (b - a) * ease(p);\n keyframes += p * 100 + `%{${fn(t, 1 - t)}}\\n`;\n }\n const rule = keyframes + `100% {${fn(b, 1 - b)}}\\n}`;\n const name = `__svelte_${hash(rule)}_${uid}`;\n const doc = get_root_for_style(node);\n const { stylesheet, rules } = managed_styles.get(doc) || create_style_information(doc, node);\n if (!rules[name]) {\n rules[name] = true;\n stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length);\n }\n const animation = node.style.animation || '';\n node.style.animation = `${animation ? `${animation}, ` : ''}${name} ${duration}ms linear ${delay}ms 1 both`;\n active += 1;\n return name;\n}\nfunction delete_rule(node, name) {\n const previous = (node.style.animation || '').split(', ');\n const next = previous.filter(name\n ? anim => anim.indexOf(name) < 0 // remove specific animation\n : anim => anim.indexOf('__svelte') === -1 // remove all Svelte animations\n );\n const deleted = previous.length - next.length;\n if (deleted) {\n node.style.animation = next.join(', ');\n active -= deleted;\n if (!active)\n clear_rules();\n }\n}\nfunction clear_rules() {\n raf(() => {\n if (active)\n return;\n managed_styles.forEach(info => {\n const { stylesheet } = info;\n let i = stylesheet.cssRules.length;\n while (i--)\n stylesheet.deleteRule(i);\n info.rules = {};\n });\n managed_styles.clear();\n });\n}\n\nfunction create_animation(node, from, fn, params) {\n if (!from)\n return noop;\n const to = node.getBoundingClientRect();\n if (from.left === to.left && from.right === to.right && from.top === to.top && from.bottom === to.bottom)\n return noop;\n const { delay = 0, duration = 300, easing = identity, \n // @ts-ignore todo: should this be separated from destructuring? Or start/end added to public api and documentation?\n start: start_time = now() + delay, \n // @ts-ignore todo:\n end = start_time + duration, tick = noop, css } = fn(node, { from, to }, params);\n let running = true;\n let started = false;\n let name;\n function start() {\n if (css) {\n name = create_rule(node, 0, 1, duration, delay, easing, css);\n }\n if (!delay) {\n started = true;\n }\n }\n function stop() {\n if (css)\n delete_rule(node, name);\n running = false;\n }\n loop(now => {\n if (!started && now >= start_time) {\n started = true;\n }\n if (started && now >= end) {\n tick(1, 0);\n stop();\n }\n if (!running) {\n return false;\n }\n if (started) {\n const p = now - start_time;\n const t = 0 + 1 * easing(p / duration);\n tick(t, 1 - t);\n }\n return true;\n });\n start();\n tick(0, 1);\n return stop;\n}\nfunction fix_position(node) {\n const style = getComputedStyle(node);\n if (style.position !== 'absolute' && style.position !== 'fixed') {\n const { width, height } = style;\n const a = node.getBoundingClientRect();\n node.style.position = 'absolute';\n node.style.width = width;\n node.style.height = height;\n add_transform(node, a);\n }\n}\nfunction add_transform(node, a) {\n const b = node.getBoundingClientRect();\n if (a.left !== b.left || a.top !== b.top) {\n const style = getComputedStyle(node);\n const transform = style.transform === 'none' ? '' : style.transform;\n node.style.transform = `${transform} translate(${a.left - b.left}px, ${a.top - b.top}px)`;\n }\n}\n\nlet current_component;\nfunction set_current_component(component) {\n current_component = component;\n}\nfunction get_current_component() {\n if (!current_component)\n throw new Error('Function called outside component initialization');\n return current_component;\n}\nfunction beforeUpdate(fn) {\n get_current_component().$$.before_update.push(fn);\n}\nfunction onMount(fn) {\n get_current_component().$$.on_mount.push(fn);\n}\nfunction afterUpdate(fn) {\n get_current_component().$$.after_update.push(fn);\n}\nfunction onDestroy(fn) {\n get_current_component().$$.on_destroy.push(fn);\n}\nfunction createEventDispatcher() {\n const component = get_current_component();\n return (type, detail, { cancelable = false } = {}) => {\n const callbacks = component.$$.callbacks[type];\n if (callbacks) {\n // TODO are there situations where events could be dispatched\n // in a server (non-DOM) environment?\n const event = custom_event(type, detail, { cancelable });\n callbacks.slice().forEach(fn => {\n fn.call(component, event);\n });\n return !event.defaultPrevented;\n }\n return true;\n };\n}\nfunction setContext(key, context) {\n get_current_component().$$.context.set(key, context);\n return context;\n}\nfunction getContext(key) {\n return get_current_component().$$.context.get(key);\n}\nfunction getAllContexts() {\n return get_current_component().$$.context;\n}\nfunction hasContext(key) {\n return get_current_component().$$.context.has(key);\n}\n// TODO figure out if we still want to support\n// shorthand events, or if we want to implement\n// a real bubbling mechanism\nfunction bubble(component, event) {\n const callbacks = component.$$.callbacks[event.type];\n if (callbacks) {\n // @ts-ignore\n callbacks.slice().forEach(fn => fn.call(this, event));\n }\n}\n\nconst dirty_components = [];\nconst intros = { enabled: false };\nconst binding_callbacks = [];\nconst render_callbacks = [];\nconst flush_callbacks = [];\nconst resolved_promise = Promise.resolve();\nlet update_scheduled = false;\nfunction schedule_update() {\n if (!update_scheduled) {\n update_scheduled = true;\n resolved_promise.then(flush);\n }\n}\nfunction tick() {\n schedule_update();\n return resolved_promise;\n}\nfunction add_render_callback(fn) {\n render_callbacks.push(fn);\n}\nfunction add_flush_callback(fn) {\n flush_callbacks.push(fn);\n}\n// flush() calls callbacks in this order:\n// 1. All beforeUpdate callbacks, in order: parents before children\n// 2. All bind:this callbacks, in reverse order: children before parents.\n// 3. All afterUpdate callbacks, in order: parents before children. EXCEPT\n// for afterUpdates called during the initial onMount, which are called in\n// reverse order: children before parents.\n// Since callbacks might update component values, which could trigger another\n// call to flush(), the following steps guard against this:\n// 1. During beforeUpdate, any updated components will be added to the\n// dirty_components array and will cause a reentrant call to flush(). Because\n// the flush index is kept outside the function, the reentrant call will pick\n// up where the earlier call left off and go through all dirty components. The\n// current_component value is saved and restored so that the reentrant call will\n// not interfere with the \"parent\" flush() call.\n// 2. bind:this callbacks cannot trigger new flush() calls.\n// 3. During afterUpdate, any updated components will NOT have their afterUpdate\n// callback called a second time; the seen_callbacks set, outside the flush()\n// function, guarantees this behavior.\nconst seen_callbacks = new Set();\nlet flushidx = 0; // Do *not* move this inside the flush() function\nfunction flush() {\n const saved_component = current_component;\n do {\n // first, call beforeUpdate functions\n // and update components\n while (flushidx < dirty_components.length) {\n const component = dirty_components[flushidx];\n flushidx++;\n set_current_component(component);\n update(component.$$);\n }\n set_current_component(null);\n dirty_components.length = 0;\n flushidx = 0;\n while (binding_callbacks.length)\n binding_callbacks.pop()();\n // then, once components are updated, call\n // afterUpdate functions. This may cause\n // subsequent updates...\n for (let i = 0; i < render_callbacks.length; i += 1) {\n const callback = render_callbacks[i];\n if (!seen_callbacks.has(callback)) {\n // ...so guard against infinite loops\n seen_callbacks.add(callback);\n callback();\n }\n }\n render_callbacks.length = 0;\n } while (dirty_components.length);\n while (flush_callbacks.length) {\n flush_callbacks.pop()();\n }\n update_scheduled = false;\n seen_callbacks.clear();\n set_current_component(saved_component);\n}\nfunction update($$) {\n if ($$.fragment !== null) {\n $$.update();\n run_all($$.before_update);\n const dirty = $$.dirty;\n $$.dirty = [-1];\n $$.fragment && $$.fragment.p($$.ctx, dirty);\n $$.after_update.forEach(add_render_callback);\n }\n}\n\nlet promise;\nfunction wait() {\n if (!promise) {\n promise = Promise.resolve();\n promise.then(() => {\n promise = null;\n });\n }\n return promise;\n}\nfunction dispatch(node, direction, kind) {\n node.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`));\n}\nconst outroing = new Set();\nlet outros;\nfunction group_outros() {\n outros = {\n r: 0,\n c: [],\n p: outros // parent group\n };\n}\nfunction check_outros() {\n if (!outros.r) {\n run_all(outros.c);\n }\n outros = outros.p;\n}\nfunction transition_in(block, local) {\n if (block && block.i) {\n outroing.delete(block);\n block.i(local);\n }\n}\nfunction transition_out(block, local, detach, callback) {\n if (block && block.o) {\n if (outroing.has(block))\n return;\n outroing.add(block);\n outros.c.push(() => {\n outroing.delete(block);\n if (callback) {\n if (detach)\n block.d(1);\n callback();\n }\n });\n block.o(local);\n }\n}\nconst null_transition = { duration: 0 };\nfunction create_in_transition(node, fn, params) {\n let config = fn(node, params);\n let running = false;\n let animation_name;\n let task;\n let uid = 0;\n function cleanup() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n if (css)\n animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++);\n tick(0, 1);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n if (task)\n task.abort();\n running = true;\n add_render_callback(() => dispatch(node, true, 'start'));\n task = loop(now => {\n if (running) {\n if (now >= end_time) {\n tick(1, 0);\n dispatch(node, true, 'end');\n cleanup();\n return running = false;\n }\n if (now >= start_time) {\n const t = easing((now - start_time) / duration);\n tick(t, 1 - t);\n }\n }\n return running;\n });\n }\n let started = false;\n return {\n start() {\n if (started)\n return;\n started = true;\n delete_rule(node);\n if (is_function(config)) {\n config = config();\n wait().then(go);\n }\n else {\n go();\n }\n },\n invalidate() {\n started = false;\n },\n end() {\n if (running) {\n cleanup();\n running = false;\n }\n }\n };\n}\nfunction create_out_transition(node, fn, params) {\n let config = fn(node, params);\n let running = true;\n let animation_name;\n const group = outros;\n group.r += 1;\n function go() {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n if (css)\n animation_name = create_rule(node, 1, 0, duration, delay, easing, css);\n const start_time = now() + delay;\n const end_time = start_time + duration;\n add_render_callback(() => dispatch(node, false, 'start'));\n loop(now => {\n if (running) {\n if (now >= end_time) {\n tick(0, 1);\n dispatch(node, false, 'end');\n if (!--group.r) {\n // this will result in `end()` being called,\n // so we don't need to clean up here\n run_all(group.c);\n }\n return false;\n }\n if (now >= start_time) {\n const t = easing((now - start_time) / duration);\n tick(1 - t, t);\n }\n }\n return running;\n });\n }\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go();\n });\n }\n else {\n go();\n }\n return {\n end(reset) {\n if (reset && config.tick) {\n config.tick(1, 0);\n }\n if (running) {\n if (animation_name)\n delete_rule(node, animation_name);\n running = false;\n }\n }\n };\n}\nfunction create_bidirectional_transition(node, fn, params, intro) {\n let config = fn(node, params);\n let t = intro ? 0 : 1;\n let running_program = null;\n let pending_program = null;\n let animation_name = null;\n function clear_animation() {\n if (animation_name)\n delete_rule(node, animation_name);\n }\n function init(program, duration) {\n const d = (program.b - t);\n duration *= Math.abs(d);\n return {\n a: t,\n b: program.b,\n d,\n duration,\n start: program.start,\n end: program.start + duration,\n group: program.group\n };\n }\n function go(b) {\n const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;\n const program = {\n start: now() + delay,\n b\n };\n if (!b) {\n // @ts-ignore todo: improve typings\n program.group = outros;\n outros.r += 1;\n }\n if (running_program || pending_program) {\n pending_program = program;\n }\n else {\n // if this is an intro, and there's a delay, we need to do\n // an initial tick and/or apply CSS animation immediately\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, b, duration, delay, easing, css);\n }\n if (b)\n tick(0, 1);\n running_program = init(program, duration);\n add_render_callback(() => dispatch(node, b, 'start'));\n loop(now => {\n if (pending_program && now > pending_program.start) {\n running_program = init(pending_program, duration);\n pending_program = null;\n dispatch(node, running_program.b, 'start');\n if (css) {\n clear_animation();\n animation_name = create_rule(node, t, running_program.b, running_program.duration, 0, easing, config.css);\n }\n }\n if (running_program) {\n if (now >= running_program.end) {\n tick(t = running_program.b, 1 - t);\n dispatch(node, running_program.b, 'end');\n if (!pending_program) {\n // we're done\n if (running_program.b) {\n // intro — we can tidy up immediately\n clear_animation();\n }\n else {\n // outro — needs to be coordinated\n if (!--running_program.group.r)\n run_all(running_program.group.c);\n }\n }\n running_program = null;\n }\n else if (now >= running_program.start) {\n const p = now - running_program.start;\n t = running_program.a + running_program.d * easing(p / running_program.duration);\n tick(t, 1 - t);\n }\n }\n return !!(running_program || pending_program);\n });\n }\n }\n return {\n run(b) {\n if (is_function(config)) {\n wait().then(() => {\n // @ts-ignore\n config = config();\n go(b);\n });\n }\n else {\n go(b);\n }\n },\n end() {\n clear_animation();\n running_program = pending_program = null;\n }\n };\n}\n\nfunction handle_promise(promise, info) {\n const token = info.token = {};\n function update(type, index, key, value) {\n if (info.token !== token)\n return;\n info.resolved = value;\n let child_ctx = info.ctx;\n if (key !== undefined) {\n child_ctx = child_ctx.slice();\n child_ctx[key] = value;\n }\n const block = type && (info.current = type)(child_ctx);\n let needs_flush = false;\n if (info.block) {\n if (info.blocks) {\n info.blocks.forEach((block, i) => {\n if (i !== index && block) {\n group_outros();\n transition_out(block, 1, 1, () => {\n if (info.blocks[i] === block) {\n info.blocks[i] = null;\n }\n });\n check_outros();\n }\n });\n }\n else {\n info.block.d(1);\n }\n block.c();\n transition_in(block, 1);\n block.m(info.mount(), info.anchor);\n needs_flush = true;\n }\n info.block = block;\n if (info.blocks)\n info.blocks[index] = block;\n if (needs_flush) {\n flush();\n }\n }\n if (is_promise(promise)) {\n const current_component = get_current_component();\n promise.then(value => {\n set_current_component(current_component);\n update(info.then, 1, info.value, value);\n set_current_component(null);\n }, error => {\n set_current_component(current_component);\n update(info.catch, 2, info.error, error);\n set_current_component(null);\n if (!info.hasCatch) {\n throw error;\n }\n });\n // if we previously had a then/catch block, destroy it\n if (info.current !== info.pending) {\n update(info.pending, 0);\n return true;\n }\n }\n else {\n if (info.current !== info.then) {\n update(info.then, 1, info.value, promise);\n return true;\n }\n info.resolved = promise;\n }\n}\nfunction update_await_block_branch(info, ctx, dirty) {\n const child_ctx = ctx.slice();\n const { resolved } = info;\n if (info.current === info.then) {\n child_ctx[info.value] = resolved;\n }\n if (info.current === info.catch) {\n child_ctx[info.error] = resolved;\n }\n info.block.p(child_ctx, dirty);\n}\n\nconst globals = (typeof window !== 'undefined'\n ? window\n : typeof globalThis !== 'undefined'\n ? globalThis\n : global);\n\nfunction destroy_block(block, lookup) {\n block.d(1);\n lookup.delete(block.key);\n}\nfunction outro_and_destroy_block(block, lookup) {\n transition_out(block, 1, 1, () => {\n lookup.delete(block.key);\n });\n}\nfunction fix_and_destroy_block(block, lookup) {\n block.f();\n destroy_block(block, lookup);\n}\nfunction fix_and_outro_and_destroy_block(block, lookup) {\n block.f();\n outro_and_destroy_block(block, lookup);\n}\nfunction update_keyed_each(old_blocks, dirty, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block, next, get_context) {\n let o = old_blocks.length;\n let n = list.length;\n let i = o;\n const old_indexes = {};\n while (i--)\n old_indexes[old_blocks[i].key] = i;\n const new_blocks = [];\n const new_lookup = new Map();\n const deltas = new Map();\n i = n;\n while (i--) {\n const child_ctx = get_context(ctx, list, i);\n const key = get_key(child_ctx);\n let block = lookup.get(key);\n if (!block) {\n block = create_each_block(key, child_ctx);\n block.c();\n }\n else if (dynamic) {\n block.p(child_ctx, dirty);\n }\n new_lookup.set(key, new_blocks[i] = block);\n if (key in old_indexes)\n deltas.set(key, Math.abs(i - old_indexes[key]));\n }\n const will_move = new Set();\n const did_move = new Set();\n function insert(block) {\n transition_in(block, 1);\n block.m(node, next);\n lookup.set(block.key, block);\n next = block.first;\n n--;\n }\n while (o && n) {\n const new_block = new_blocks[n - 1];\n const old_block = old_blocks[o - 1];\n const new_key = new_block.key;\n const old_key = old_block.key;\n if (new_block === old_block) {\n // do nothing\n next = new_block.first;\n o--;\n n--;\n }\n else if (!new_lookup.has(old_key)) {\n // remove old block\n destroy(old_block, lookup);\n o--;\n }\n else if (!lookup.has(new_key) || will_move.has(new_key)) {\n insert(new_block);\n }\n else if (did_move.has(old_key)) {\n o--;\n }\n else if (deltas.get(new_key) > deltas.get(old_key)) {\n did_move.add(new_key);\n insert(new_block);\n }\n else {\n will_move.add(old_key);\n o--;\n }\n }\n while (o--) {\n const old_block = old_blocks[o];\n if (!new_lookup.has(old_block.key))\n destroy(old_block, lookup);\n }\n while (n)\n insert(new_blocks[n - 1]);\n return new_blocks;\n}\nfunction validate_each_keys(ctx, list, get_context, get_key) {\n const keys = new Set();\n for (let i = 0; i < list.length; i++) {\n const key = get_key(get_context(ctx, list, i));\n if (keys.has(key)) {\n throw new Error('Cannot have duplicate keys in a keyed each');\n }\n keys.add(key);\n }\n}\n\nfunction get_spread_update(levels, updates) {\n const update = {};\n const to_null_out = {};\n const accounted_for = { $$scope: 1 };\n let i = levels.length;\n while (i--) {\n const o = levels[i];\n const n = updates[i];\n if (n) {\n for (const key in o) {\n if (!(key in n))\n to_null_out[key] = 1;\n }\n for (const key in n) {\n if (!accounted_for[key]) {\n update[key] = n[key];\n accounted_for[key] = 1;\n }\n }\n levels[i] = n;\n }\n else {\n for (const key in o) {\n accounted_for[key] = 1;\n }\n }\n }\n for (const key in to_null_out) {\n if (!(key in update))\n update[key] = undefined;\n }\n return update;\n}\nfunction get_spread_object(spread_props) {\n return typeof spread_props === 'object' && spread_props !== null ? spread_props : {};\n}\n\n// source: https://html.spec.whatwg.org/multipage/indices.html\nconst boolean_attributes = new Set([\n 'allowfullscreen',\n 'allowpaymentrequest',\n 'async',\n 'autofocus',\n 'autoplay',\n 'checked',\n 'controls',\n 'default',\n 'defer',\n 'disabled',\n 'formnovalidate',\n 'hidden',\n 'ismap',\n 'loop',\n 'multiple',\n 'muted',\n 'nomodule',\n 'novalidate',\n 'open',\n 'playsinline',\n 'readonly',\n 'required',\n 'reversed',\n 'selected'\n]);\n\nconst void_element_names = /^(?:area|base|br|col|command|embed|hr|img|input|keygen|link|meta|param|source|track|wbr)$/;\nfunction is_void(name) {\n return void_element_names.test(name) || name.toLowerCase() === '!doctype';\n}\n\nconst invalid_attribute_name_character = /[\\s'\">/=\\u{FDD0}-\\u{FDEF}\\u{FFFE}\\u{FFFF}\\u{1FFFE}\\u{1FFFF}\\u{2FFFE}\\u{2FFFF}\\u{3FFFE}\\u{3FFFF}\\u{4FFFE}\\u{4FFFF}\\u{5FFFE}\\u{5FFFF}\\u{6FFFE}\\u{6FFFF}\\u{7FFFE}\\u{7FFFF}\\u{8FFFE}\\u{8FFFF}\\u{9FFFE}\\u{9FFFF}\\u{AFFFE}\\u{AFFFF}\\u{BFFFE}\\u{BFFFF}\\u{CFFFE}\\u{CFFFF}\\u{DFFFE}\\u{DFFFF}\\u{EFFFE}\\u{EFFFF}\\u{FFFFE}\\u{FFFFF}\\u{10FFFE}\\u{10FFFF}]/u;\n// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n// https://infra.spec.whatwg.org/#noncharacter\nfunction spread(args, attrs_to_add) {\n const attributes = Object.assign({}, ...args);\n if (attrs_to_add) {\n const classes_to_add = attrs_to_add.classes;\n const styles_to_add = attrs_to_add.styles;\n if (classes_to_add) {\n if (attributes.class == null) {\n attributes.class = classes_to_add;\n }\n else {\n attributes.class += ' ' + classes_to_add;\n }\n }\n if (styles_to_add) {\n if (attributes.style == null) {\n attributes.style = style_object_to_string(styles_to_add);\n }\n else {\n attributes.style = style_object_to_string(merge_ssr_styles(attributes.style, styles_to_add));\n }\n }\n }\n let str = '';\n Object.keys(attributes).forEach(name => {\n if (invalid_attribute_name_character.test(name))\n return;\n const value = attributes[name];\n if (value === true)\n str += ' ' + name;\n else if (boolean_attributes.has(name.toLowerCase())) {\n if (value)\n str += ' ' + name;\n }\n else if (value != null) {\n str += ` ${name}=\"${value}\"`;\n }\n });\n return str;\n}\nfunction merge_ssr_styles(style_attribute, style_directive) {\n const style_object = {};\n for (const individual_style of style_attribute.split(';')) {\n const colon_index = individual_style.indexOf(':');\n const name = individual_style.slice(0, colon_index).trim();\n const value = individual_style.slice(colon_index + 1).trim();\n if (!name)\n continue;\n style_object[name] = value;\n }\n for (const name in style_directive) {\n const value = style_directive[name];\n if (value) {\n style_object[name] = value;\n }\n else {\n delete style_object[name];\n }\n }\n return style_object;\n}\nconst escaped = {\n '\"': '"',\n \"'\": ''',\n '&': '&',\n '<': '<',\n '>': '>'\n};\nfunction escape(html) {\n return String(html).replace(/[\"'&<>]/g, match => escaped[match]);\n}\nfunction escape_attribute_value(value) {\n return typeof value === 'string' ? escape(value) : value;\n}\nfunction escape_object(obj) {\n const result = {};\n for (const key in obj) {\n result[key] = escape_attribute_value(obj[key]);\n }\n return result;\n}\nfunction each(items, fn) {\n let str = '';\n for (let i = 0; i < items.length; i += 1) {\n str += fn(items[i], i);\n }\n return str;\n}\nconst missing_component = {\n $$render: () => ''\n};\nfunction validate_component(component, name) {\n if (!component || !component.$$render) {\n if (name === 'svelte:component')\n name += ' this={...}';\n throw new Error(`<${name}> is not a valid SSR component. You may need to review your build config to ensure that dependencies are compiled, rather than imported as pre-compiled modules`);\n }\n return component;\n}\nfunction debug(file, line, column, values) {\n console.log(`{@debug} ${file ? file + ' ' : ''}(${line}:${column})`); // eslint-disable-line no-console\n console.log(values); // eslint-disable-line no-console\n return '';\n}\nlet on_destroy;\nfunction create_ssr_component(fn) {\n function $$render(result, props, bindings, slots, context) {\n const parent_component = current_component;\n const $$ = {\n on_destroy,\n context: new Map(context || (parent_component ? parent_component.$$.context : [])),\n // these will be immediately discarded\n on_mount: [],\n before_update: [],\n after_update: [],\n callbacks: blank_object()\n };\n set_current_component({ $$ });\n const html = fn(result, props, bindings, slots);\n set_current_component(parent_component);\n return html;\n }\n return {\n render: (props = {}, { $$slots = {}, context = new Map() } = {}) => {\n on_destroy = [];\n const result = { title: '', head: '', css: new Set() };\n const html = $$render(result, props, {}, $$slots, context);\n run_all(on_destroy);\n return {\n html,\n css: {\n code: Array.from(result.css).map(css => css.code).join('\\n'),\n map: null // TODO\n },\n head: result.title + result.head\n };\n },\n $$render\n };\n}\nfunction add_attribute(name, value, boolean) {\n if (value == null || (boolean && !value))\n return '';\n const assignment = (boolean && value === true) ? '' : `=\"${escape_attribute_value(value.toString())}\"`;\n return ` ${name}${assignment}`;\n}\nfunction add_classes(classes) {\n return classes ? ` class=\"${classes}\"` : '';\n}\nfunction style_object_to_string(style_object) {\n return Object.keys(style_object)\n .filter(key => style_object[key])\n .map(key => `${key}: ${style_object[key]};`)\n .join(' ');\n}\nfunction add_styles(style_object) {\n const styles = style_object_to_string(style_object);\n return styles ? ` style=\"${styles}\"` : '';\n}\n\nfunction bind(component, name, callback) {\n const index = component.$$.props[name];\n if (index !== undefined) {\n component.$$.bound[index] = callback;\n callback(component.$$.ctx[index]);\n }\n}\nfunction create_component(block) {\n block && block.c();\n}\nfunction claim_component(block, parent_nodes) {\n block && block.l(parent_nodes);\n}\nfunction mount_component(component, target, anchor, customElement) {\n const { fragment, on_mount, on_destroy, after_update } = component.$$;\n fragment && fragment.m(target, anchor);\n if (!customElement) {\n // onMount happens before the initial afterUpdate\n add_render_callback(() => {\n const new_on_destroy = on_mount.map(run).filter(is_function);\n if (on_destroy) {\n on_destroy.push(...new_on_destroy);\n }\n else {\n // Edge case - component was destroyed immediately,\n // most likely as a result of a binding initialising\n run_all(new_on_destroy);\n }\n component.$$.on_mount = [];\n });\n }\n after_update.forEach(add_render_callback);\n}\nfunction destroy_component(component, detaching) {\n const $$ = component.$$;\n if ($$.fragment !== null) {\n run_all($$.on_destroy);\n $$.fragment && $$.fragment.d(detaching);\n // TODO null out other refs, including component.$$ (but need to\n // preserve final state?)\n $$.on_destroy = $$.fragment = null;\n $$.ctx = [];\n }\n}\nfunction make_dirty(component, i) {\n if (component.$$.dirty[0] === -1) {\n dirty_components.push(component);\n schedule_update();\n component.$$.dirty.fill(0);\n }\n component.$$.dirty[(i / 31) | 0] |= (1 << (i % 31));\n}\nfunction init(component, options, instance, create_fragment, not_equal, props, append_styles, dirty = [-1]) {\n const parent_component = current_component;\n set_current_component(component);\n const $$ = component.$$ = {\n fragment: null,\n ctx: null,\n // state\n props,\n update: noop,\n not_equal,\n bound: blank_object(),\n // lifecycle\n on_mount: [],\n on_destroy: [],\n on_disconnect: [],\n before_update: [],\n after_update: [],\n context: new Map(options.context || (parent_component ? parent_component.$$.context : [])),\n // everything else\n callbacks: blank_object(),\n dirty,\n skip_bound: false,\n root: options.target || parent_component.$$.root\n };\n append_styles && append_styles($$.root);\n let ready = false;\n $$.ctx = instance\n ? instance(component, options.props || {}, (i, ret, ...rest) => {\n const value = rest.length ? rest[0] : ret;\n if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) {\n if (!$$.skip_bound && $$.bound[i])\n $$.bound[i](value);\n if (ready)\n make_dirty(component, i);\n }\n return ret;\n })\n : [];\n $$.update();\n ready = true;\n run_all($$.before_update);\n // `false` as a special case of no DOM component\n $$.fragment = create_fragment ? create_fragment($$.ctx) : false;\n if (options.target) {\n if (options.hydrate) {\n start_hydrating();\n const nodes = children(options.target);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment && $$.fragment.l(nodes);\n nodes.forEach(detach);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n $$.fragment && $$.fragment.c();\n }\n if (options.intro)\n transition_in(component.$$.fragment);\n mount_component(component, options.target, options.anchor, options.customElement);\n end_hydrating();\n flush();\n }\n set_current_component(parent_component);\n}\nlet SvelteElement;\nif (typeof HTMLElement === 'function') {\n SvelteElement = class extends HTMLElement {\n constructor() {\n super();\n this.attachShadow({ mode: 'open' });\n }\n connectedCallback() {\n const { on_mount } = this.$$;\n this.$$.on_disconnect = on_mount.map(run).filter(is_function);\n // @ts-ignore todo: improve typings\n for (const key in this.$$.slotted) {\n // @ts-ignore todo: improve typings\n this.appendChild(this.$$.slotted[key]);\n }\n }\n attributeChangedCallback(attr, _oldValue, newValue) {\n this[attr] = newValue;\n }\n disconnectedCallback() {\n run_all(this.$$.on_disconnect);\n }\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n // TODO should this delegate to addEventListener?\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set($$props) {\n if (this.$$set && !is_empty($$props)) {\n this.$$.skip_bound = true;\n this.$$set($$props);\n this.$$.skip_bound = false;\n }\n }\n };\n}\n/**\n * Base class for Svelte components. Used when dev=false.\n */\nclass SvelteComponent {\n $destroy() {\n destroy_component(this, 1);\n this.$destroy = noop;\n }\n $on(type, callback) {\n const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));\n callbacks.push(callback);\n return () => {\n const index = callbacks.indexOf(callback);\n if (index !== -1)\n callbacks.splice(index, 1);\n };\n }\n $set($$props) {\n if (this.$$set && !is_empty($$props)) {\n this.$$.skip_bound = true;\n this.$$set($$props);\n this.$$.skip_bound = false;\n }\n }\n}\n\nfunction dispatch_dev(type, detail) {\n document.dispatchEvent(custom_event(type, Object.assign({ version: '3.48.0' }, detail), { bubbles: true }));\n}\nfunction append_dev(target, node) {\n dispatch_dev('SvelteDOMInsert', { target, node });\n append(target, node);\n}\nfunction append_hydration_dev(target, node) {\n dispatch_dev('SvelteDOMInsert', { target, node });\n append_hydration(target, node);\n}\nfunction insert_dev(target, node, anchor) {\n dispatch_dev('SvelteDOMInsert', { target, node, anchor });\n insert(target, node, anchor);\n}\nfunction insert_hydration_dev(target, node, anchor) {\n dispatch_dev('SvelteDOMInsert', { target, node, anchor });\n insert_hydration(target, node, anchor);\n}\nfunction detach_dev(node) {\n dispatch_dev('SvelteDOMRemove', { node });\n detach(node);\n}\nfunction detach_between_dev(before, after) {\n while (before.nextSibling && before.nextSibling !== after) {\n detach_dev(before.nextSibling);\n }\n}\nfunction detach_before_dev(after) {\n while (after.previousSibling) {\n detach_dev(after.previousSibling);\n }\n}\nfunction detach_after_dev(before) {\n while (before.nextSibling) {\n detach_dev(before.nextSibling);\n }\n}\nfunction listen_dev(node, event, handler, options, has_prevent_default, has_stop_propagation) {\n const modifiers = options === true ? ['capture'] : options ? Array.from(Object.keys(options)) : [];\n if (has_prevent_default)\n modifiers.push('preventDefault');\n if (has_stop_propagation)\n modifiers.push('stopPropagation');\n dispatch_dev('SvelteDOMAddEventListener', { node, event, handler, modifiers });\n const dispose = listen(node, event, handler, options);\n return () => {\n dispatch_dev('SvelteDOMRemoveEventListener', { node, event, handler, modifiers });\n dispose();\n };\n}\nfunction attr_dev(node, attribute, value) {\n attr(node, attribute, value);\n if (value == null)\n dispatch_dev('SvelteDOMRemoveAttribute', { node, attribute });\n else\n dispatch_dev('SvelteDOMSetAttribute', { node, attribute, value });\n}\nfunction prop_dev(node, property, value) {\n node[property] = value;\n dispatch_dev('SvelteDOMSetProperty', { node, property, value });\n}\nfunction dataset_dev(node, property, value) {\n node.dataset[property] = value;\n dispatch_dev('SvelteDOMSetDataset', { node, property, value });\n}\nfunction set_data_dev(text, data) {\n data = '' + data;\n if (text.wholeText === data)\n return;\n dispatch_dev('SvelteDOMSetData', { node: text, data });\n text.data = data;\n}\nfunction validate_each_argument(arg) {\n if (typeof arg !== 'string' && !(arg && typeof arg === 'object' && 'length' in arg)) {\n let msg = '{#each} only iterates over array-like objects.';\n if (typeof Symbol === 'function' && arg && Symbol.iterator in arg) {\n msg += ' You can use a spread to convert this iterable into an array.';\n }\n throw new Error(msg);\n }\n}\nfunction validate_slots(name, slot, keys) {\n for (const slot_key of Object.keys(slot)) {\n if (!~keys.indexOf(slot_key)) {\n console.warn(`<${name}> received an unexpected slot \"${slot_key}\".`);\n }\n }\n}\nfunction validate_dynamic_element(tag) {\n const is_string = typeof tag === 'string';\n if (tag && !is_string) {\n throw new Error(' expects \"this\" attribute to be a string.');\n }\n}\nfunction validate_void_dynamic_element(tag) {\n if (tag && is_void(tag)) {\n throw new Error(` is self-closing and cannot have content.`);\n }\n}\n/**\n * Base class for Svelte components with some minor dev-enhancements. Used when dev=true.\n */\nclass SvelteComponentDev extends SvelteComponent {\n constructor(options) {\n if (!options || (!options.target && !options.$$inline)) {\n throw new Error(\"'target' is a required option\");\n }\n super();\n }\n $destroy() {\n super.$destroy();\n this.$destroy = () => {\n console.warn('Component was already destroyed'); // eslint-disable-line no-console\n };\n }\n $capture_state() { }\n $inject_state() { }\n}\n/**\n * Base class to create strongly typed Svelte components.\n * This only exists for typing purposes and should be used in `.d.ts` files.\n *\n * ### Example:\n *\n * You have component library on npm called `component-library`, from which\n * you export a component called `MyComponent`. For Svelte+TypeScript users,\n * you want to provide typings. Therefore you create a `index.d.ts`:\n * ```ts\n * import { SvelteComponentTyped } from \"svelte\";\n * export class MyComponent extends SvelteComponentTyped<{foo: string}> {}\n * ```\n * Typing this makes it possible for IDEs like VS Code with the Svelte extension\n * to provide intellisense and to use the component like this in a Svelte file\n * with TypeScript:\n * ```svelte\n * \n * \n * ```\n *\n * #### Why not make this part of `SvelteComponent(Dev)`?\n * Because\n * ```ts\n * class ASubclassOfSvelteComponent extends SvelteComponent<{foo: string}> {}\n * const component: typeof SvelteComponent = ASubclassOfSvelteComponent;\n * ```\n * will throw a type error, so we need to separate the more strictly typed class.\n */\nclass SvelteComponentTyped extends SvelteComponentDev {\n constructor(options) {\n super(options);\n }\n}\nfunction loop_guard(timeout) {\n const start = Date.now();\n return () => {\n if (Date.now() - start > timeout) {\n throw new Error('Infinite loop detected');\n }\n };\n}\n\nexport { HtmlTag, HtmlTagHydration, SvelteComponent, SvelteComponentDev, SvelteComponentTyped, SvelteElement, action_destroyer, add_attribute, add_classes, add_flush_callback, add_location, add_render_callback, add_resize_listener, add_styles, add_transform, afterUpdate, append, append_dev, append_empty_stylesheet, append_hydration, append_hydration_dev, append_styles, assign, attr, attr_dev, attribute_to_object, beforeUpdate, bind, binding_callbacks, blank_object, bubble, check_outros, children, claim_component, claim_element, claim_html_tag, claim_space, claim_svg_element, claim_text, clear_loops, component_subscribe, compute_rest_props, compute_slots, createEventDispatcher, create_animation, create_bidirectional_transition, create_component, create_in_transition, create_out_transition, create_slot, create_ssr_component, current_component, custom_event, dataset_dev, debug, destroy_block, destroy_component, destroy_each, detach, detach_after_dev, detach_before_dev, detach_between_dev, detach_dev, dirty_components, dispatch_dev, each, element, element_is, empty, end_hydrating, escape, escape_attribute_value, escape_object, escaped, exclude_internal_props, fix_and_destroy_block, fix_and_outro_and_destroy_block, fix_position, flush, getAllContexts, getContext, get_all_dirty_from_scope, get_binding_group_value, get_current_component, get_custom_elements_slots, get_root_for_style, get_slot_changes, get_spread_object, get_spread_update, get_store_value, globals, group_outros, handle_promise, hasContext, has_prop, identity, init, insert, insert_dev, insert_hydration, insert_hydration_dev, intros, invalid_attribute_name_character, is_client, is_crossorigin, is_empty, is_function, is_promise, is_void, listen, listen_dev, loop, loop_guard, merge_ssr_styles, missing_component, mount_component, noop, not_equal, now, null_to_empty, object_without_properties, onDestroy, onMount, once, outro_and_destroy_block, prevent_default, prop_dev, query_selector_all, raf, run, run_all, safe_not_equal, schedule_update, select_multiple_value, select_option, select_options, select_value, self, setContext, set_attributes, set_current_component, set_custom_element_data, set_data, set_data_dev, set_input_type, set_input_value, set_now, set_raf, set_store_value, set_style, set_svg_attributes, space, spread, src_url_equal, start_hydrating, stop_propagation, subscribe, svg_element, text, tick, time_ranges_to_array, to_number, toggle_class, transition_in, transition_out, trusted, update_await_block_branch, update_keyed_each, update_slot, update_slot_base, validate_component, validate_dynamic_element, validate_each_argument, validate_each_keys, validate_slots, validate_store, validate_void_dynamic_element, xlink_attr };\n","/*\n * Adapted from https://github.com/reach/router/blob/b60e6dd781d5d3a4bdaaf4de665649c0f6a7e78d/src/lib/utils.js\n *\n * https://github.com/reach/router/blob/master/LICENSE\n */\n\nexport const isUndefined = value => typeof value === \"undefined\";\n\nexport const isFunction = value => typeof value === \"function\";\n\nexport const isNumber = value => typeof value === \"number\";\n\n/**\n * Decides whether a given `event` should result in a navigation or not.\n * @param {object} event\n */\nexport function shouldNavigate(event) {\n\treturn (\n\t\t!event.defaultPrevented &&\n\t\tevent.button === 0 &&\n\t\t!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey)\n\t);\n}\n\nexport function createCounter() {\n\tlet i = 0;\n\t/**\n\t * Returns an id and increments the internal state\n\t * @returns {number}\n\t */\n\treturn () => i++;\n}\n\n/**\n * Create a globally unique id\n *\n * @returns {string} An id\n */\nexport function createGlobalId() {\n\treturn Math.random().toString(36).substring(2);\n}\n\nexport function findClosest(tagName, element) {\n\twhile (element && element.tagName !== tagName) {\n\t\t// eslint-disable-next-line no-param-reassign\n\t\telement = element.parentNode;\n\t}\n\treturn element;\n}\n\nexport const isSSR = typeof window === \"undefined\";\n\nexport function addListener(target, type, handler) {\n\ttarget.addEventListener(type, handler);\n\treturn () => target.removeEventListener(type, handler);\n}\n","import { noop, safe_not_equal, subscribe, run_all, is_function } from '../internal/index.mjs';\nexport { get_store_value as get } from '../internal/index.mjs';\n\nconst subscriber_queue = [];\n/**\n * Creates a `Readable` store that allows reading by subscription.\n * @param value initial value\n * @param {StartStopNotifier}start start and stop notifications for subscriptions\n */\nfunction readable(value, start) {\n return {\n subscribe: writable(value, start).subscribe\n };\n}\n/**\n * Create a `Writable` store that allows both updating and reading by subscription.\n * @param {*=}value initial value\n * @param {StartStopNotifier=}start start and stop notifications for subscriptions\n */\nfunction writable(value, start = noop) {\n let stop;\n const subscribers = new Set();\n function set(new_value) {\n if (safe_not_equal(value, new_value)) {\n value = new_value;\n if (stop) { // store is ready\n const run_queue = !subscriber_queue.length;\n for (const subscriber of subscribers) {\n subscriber[1]();\n subscriber_queue.push(subscriber, value);\n }\n if (run_queue) {\n for (let i = 0; i < subscriber_queue.length; i += 2) {\n subscriber_queue[i][0](subscriber_queue[i + 1]);\n }\n subscriber_queue.length = 0;\n }\n }\n }\n }\n function update(fn) {\n set(fn(value));\n }\n function subscribe(run, invalidate = noop) {\n const subscriber = [run, invalidate];\n subscribers.add(subscriber);\n if (subscribers.size === 1) {\n stop = start(set) || noop;\n }\n run(value);\n return () => {\n subscribers.delete(subscriber);\n if (subscribers.size === 0) {\n stop();\n stop = null;\n }\n };\n }\n return { set, update, subscribe };\n}\nfunction derived(stores, fn, initial_value) {\n const single = !Array.isArray(stores);\n const stores_array = single\n ? [stores]\n : stores;\n const auto = fn.length < 2;\n return readable(initial_value, (set) => {\n let inited = false;\n const values = [];\n let pending = 0;\n let cleanup = noop;\n const sync = () => {\n if (pending) {\n return;\n }\n cleanup();\n const result = fn(single ? values[0] : values, set);\n if (auto) {\n set(result);\n }\n else {\n cleanup = is_function(result) ? result : noop;\n }\n };\n const unsubscribers = stores_array.map((store, i) => subscribe(store, (value) => {\n values[i] = value;\n pending &= ~(1 << i);\n if (inited) {\n sync();\n }\n }, () => {\n pending |= (1 << i);\n }));\n inited = true;\n sync();\n return function stop() {\n run_all(unsubscribers);\n cleanup();\n };\n });\n}\n\nexport { derived, readable, writable };\n","/*\n * Adapted from https://github.com/EmilTholin/svelte-routing\n *\n * https://github.com/EmilTholin/svelte-routing/blob/master/LICENSE\n */\n\nconst createKey = ctxName => `@@svnav-ctx__${ctxName}`;\n\n// Use strings instead of objects, so different versions of\n// svelte-navigator can potentially still work together\nexport const LOCATION = createKey(\"LOCATION\");\nexport const ROUTER = createKey(\"ROUTER\");\nexport const ROUTE = createKey(\"ROUTE\");\nexport const ROUTE_PARAMS = createKey(\"ROUTE_PARAMS\");\nexport const FOCUS_ELEM = createKey(\"FOCUS_ELEM\");\n","export const paramRegex = /^:(.+)/;\n\n/**\n * Check if `string` starts with `search`\n * @param {string} string\n * @param {string} search\n * @return {boolean}\n */\nexport const startsWith = (string, search) =>\n\tstring.substr(0, search.length) === search;\n\n/**\n * Check if `segment` is a root segment\n * @param {string} segment\n * @return {boolean}\n */\nexport const isRootSegment = segment => segment === \"\";\n\n/**\n * Check if `segment` is a dynamic segment\n * @param {string} segment\n * @return {boolean}\n */\nexport const isDynamic = segment => paramRegex.test(segment);\n\n/**\n * Check if `segment` is a splat\n * @param {string} segment\n * @return {boolean}\n */\nexport const isSplat = segment => segment[0] === \"*\";\n\n/**\n * Strip potention splat and splatname of the end of a path\n * @param {string} str\n * @return {string}\n */\nexport const stripSplat = str => str.replace(/\\*.*$/, \"\");\n\n/**\n * Strip `str` of potential start and end `/`\n * @param {string} str\n * @return {string}\n */\nexport const stripSlashes = str => str.replace(/(^\\/+|\\/+$)/g, \"\");\n\n/**\n * Split up the URI into segments delimited by `/`\n * @param {string} uri\n * @return {string[]}\n */\nexport function segmentize(uri, filterFalsy = false) {\n\tconst segments = stripSlashes(uri).split(\"/\");\n\treturn filterFalsy ? segments.filter(Boolean) : segments;\n}\n\n/**\n * Add the query to the pathname if a query is given\n * @param {string} pathname\n * @param {string} [query]\n * @return {string}\n */\nexport const addQuery = (pathname, query) =>\n\tpathname + (query ? `?${query}` : \"\");\n\n/**\n * Combines the `basepath` and the `path` into one path.\n * @param {string} basepath\n * @param {string} path\n */\nexport function combinePaths(basepath, path) {\n\tconst barePath =\n\t\tpath === \"/\" ? basepath : `${stripSlashes(basepath)}/${stripSlashes(path)}`;\n\treturn `${stripSlashes(barePath)}/`;\n}\n\n/**\n * Normalizes a basepath\n *\n * @param {string} path\n * @returns {string}\n *\n * @example\n * normalizePath(\"base/path/\") // -> \"/base/path\"\n */\nexport const normalizePath = path => `/${stripSlashes(path)}`;\n\n/**\n * Joins and normalizes multiple path fragments\n *\n * @param {...string} pathFragments\n * @returns {string}\n */\nexport function join(...pathFragments) {\n\tconst joinFragment = fragment => segmentize(fragment, true).join(\"/\");\n\tconst joinedSegments = pathFragments.map(joinFragment).join(\"/\");\n\treturn normalizePath(joinedSegments);\n}\n","import { isFunction } from \"./utils\";\n\n// We start from 1 here, so we can check if an origin id has been passed\n// by using `originId || `\nexport const LINK_ID = 1;\nexport const ROUTE_ID = 2;\nexport const ROUTER_ID = 3;\nexport const USE_FOCUS_ID = 4;\nexport const USE_LOCATION_ID = 5;\nexport const USE_MATCH_ID = 6;\nexport const USE_NAVIGATE_ID = 7;\nexport const USE_PARAMS_ID = 8;\nexport const USE_RESOLVABLE_ID = 9;\nexport const USE_RESOLVE_ID = 10;\nexport const NAVIGATE_ID = 11;\n\nconst labels = {\n\t[LINK_ID]: \"Link\",\n\t[ROUTE_ID]: \"Route\",\n\t[ROUTER_ID]: \"Router\",\n\t[USE_FOCUS_ID]: \"useFocus\",\n\t[USE_LOCATION_ID]: \"useLocation\",\n\t[USE_MATCH_ID]: \"useMatch\",\n\t[USE_NAVIGATE_ID]: \"useNavigate\",\n\t[USE_PARAMS_ID]: \"useParams\",\n\t[USE_RESOLVABLE_ID]: \"useResolvable\",\n\t[USE_RESOLVE_ID]: \"useResolve\",\n\t[NAVIGATE_ID]: \"navigate\",\n};\n\nexport const createLabel = labelId => labels[labelId];\n\nexport function createIdentifier(labelId, props) {\n\tlet attr;\n\tif (labelId === ROUTE_ID) {\n\t\tattr = props.path ? `path=\"${props.path}\"` : \"default\";\n\t} else if (labelId === LINK_ID) {\n\t\tattr = `to=\"${props.to}\"`;\n\t} else if (labelId === ROUTER_ID) {\n\t\tattr = `basepath=\"${props.basepath || \"\"}\"`;\n\t}\n\treturn `<${createLabel(labelId)} ${attr || \"\"} />`;\n}\n\nexport function createMessage(labelId, message, props, originId) {\n\tconst origin = props && createIdentifier(originId || labelId, props);\n\tconst originMsg = origin ? `\\n\\nOccurred in: ${origin}` : \"\";\n\tconst label = createLabel(labelId);\n\tconst msg = isFunction(message) ? message(label) : message;\n\treturn `<${label}> ${msg}${originMsg}`;\n}\n\nexport const createMessageHandler = handler => (...args) =>\n\thandler(createMessage(...args));\n\nexport const fail = createMessageHandler(message => {\n\tthrow new Error(message);\n});\n\n// eslint-disable-next-line no-console\nexport const warn = createMessageHandler(console.warn);\n","import {\n\tsegmentize,\n\tjoin,\n\taddQuery,\n\tstartsWith,\n\tparamRegex,\n\tisSplat,\n\tisRootSegment,\n\tisDynamic,\n\tstripSplat,\n\tnormalizePath,\n} from \"./paths\";\nimport { ROUTER_ID, fail } from \"./warning\";\nimport { isUndefined } from \"./utils\";\n\nconst SEGMENT_POINTS = 4;\nconst STATIC_POINTS = 3;\nconst DYNAMIC_POINTS = 2;\nconst SPLAT_PENALTY = 1;\nconst ROOT_POINTS = 1;\n\n/**\n * Score a route depending on how its individual segments look\n * @param {object} route\n * @param {number} index\n * @return {object}\n */\nexport function rankRoute(route, index) {\n\tconst score = route.default\n\t\t? 0\n\t\t: segmentize(route.fullPath).reduce((acc, segment) => {\n\t\t\t\tlet nextScore = acc;\n\t\t\t\tnextScore += SEGMENT_POINTS;\n\n\t\t\t\tif (isRootSegment(segment)) {\n\t\t\t\t\tnextScore += ROOT_POINTS;\n\t\t\t\t} else if (isDynamic(segment)) {\n\t\t\t\t\tnextScore += DYNAMIC_POINTS;\n\t\t\t\t} else if (isSplat(segment)) {\n\t\t\t\t\tnextScore -= SEGMENT_POINTS + SPLAT_PENALTY;\n\t\t\t\t} else {\n\t\t\t\t\tnextScore += STATIC_POINTS;\n\t\t\t\t}\n\n\t\t\t\treturn nextScore;\n\t\t }, 0);\n\n\treturn { route, score, index };\n}\n\n/**\n * Give a score to all routes and sort them on that\n * @param {object[]} routes\n * @return {object[]}\n */\nexport function rankRoutes(routes) {\n\treturn (\n\t\troutes\n\t\t\t.map(rankRoute)\n\t\t\t// If two routes have the exact same score, we go by index instead\n\t\t\t.sort((a, b) => {\n\t\t\t\tif (a.score < b.score) {\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t\tif (a.score > b.score) {\n\t\t\t\t\treturn -1;\n\t\t\t\t}\n\t\t\t\treturn a.index - b.index;\n\t\t\t})\n\t);\n}\n\n/**\n * Ranks and picks the best route to match. Each segment gets the highest\n * amount of points, then the type of segment gets an additional amount of\n * points where\n *\n * static > dynamic > splat > root\n *\n * This way we don't have to worry about the order of our routes, let the\n * computers do it.\n *\n * A route looks like this\n *\n * { fullPath, default, value }\n *\n * And a returned match looks like:\n *\n * { route, params, uri }\n *\n * @param {object[]} routes\n * @param {string} uri\n * @return {?object}\n */\nexport function pick(routes, uri) {\n\tlet bestMatch;\n\tlet defaultMatch;\n\n\tconst [uriPathname] = uri.split(\"?\");\n\tconst uriSegments = segmentize(uriPathname);\n\tconst isRootUri = uriSegments[0] === \"\";\n\tconst ranked = rankRoutes(routes);\n\n\tfor (let i = 0, l = ranked.length; i < l; i++) {\n\t\tconst { route } = ranked[i];\n\t\tlet missed = false;\n\t\tconst params = {};\n\n\t\t// eslint-disable-next-line no-shadow\n\t\tconst createMatch = uri => ({ ...route, params, uri });\n\n\t\tif (route.default) {\n\t\t\tdefaultMatch = createMatch(uri);\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst routeSegments = segmentize(route.fullPath);\n\t\tconst max = Math.max(uriSegments.length, routeSegments.length);\n\t\tlet index = 0;\n\n\t\tfor (; index < max; index++) {\n\t\t\tconst routeSegment = routeSegments[index];\n\t\t\tconst uriSegment = uriSegments[index];\n\n\t\t\tif (!isUndefined(routeSegment) && isSplat(routeSegment)) {\n\t\t\t\t// Hit a splat, just grab the rest, and return a match\n\t\t\t\t// uri: /files/documents/work\n\t\t\t\t// route: /files/* or /files/*splatname\n\t\t\t\tconst splatName = routeSegment === \"*\" ? \"*\" : routeSegment.slice(1);\n\n\t\t\t\tparams[splatName] = uriSegments\n\t\t\t\t\t.slice(index)\n\t\t\t\t\t.map(decodeURIComponent)\n\t\t\t\t\t.join(\"/\");\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tif (isUndefined(uriSegment)) {\n\t\t\t\t// URI is shorter than the route, no match\n\t\t\t\t// uri: /users\n\t\t\t\t// route: /users/:userId\n\t\t\t\tmissed = true;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst dynamicMatch = paramRegex.exec(routeSegment);\n\n\t\t\tif (dynamicMatch && !isRootUri) {\n\t\t\t\tconst value = decodeURIComponent(uriSegment);\n\t\t\t\tparams[dynamicMatch[1]] = value;\n\t\t\t} else if (routeSegment !== uriSegment) {\n\t\t\t\t// Current segments don't match, not dynamic, not splat, so no match\n\t\t\t\t// uri: /users/123/settings\n\t\t\t\t// route: /users/:id/profile\n\t\t\t\tmissed = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tif (!missed) {\n\t\t\tbestMatch = createMatch(join(...uriSegments.slice(0, index)));\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn bestMatch || defaultMatch || null;\n}\n\n/**\n * Check if the `route.fullPath` matches the `uri`.\n * @param {Object} route\n * @param {string} uri\n * @return {?object}\n */\nexport function match(route, uri) {\n\treturn pick([route], uri);\n}\n\n/**\n * Resolve URIs as though every path is a directory, no files. Relative URIs\n * in the browser can feel awkward because not only can you be \"in a directory\",\n * you can be \"at a file\", too. For example:\n *\n * browserSpecResolve('foo', '/bar/') => /bar/foo\n * browserSpecResolve('foo', '/bar') => /foo\n *\n * But on the command line of a file system, it's not as complicated. You can't\n * `cd` from a file, only directories. This way, links have to know less about\n * their current path. To go deeper you can do this:\n *\n * \n * // instead of\n * \n *\n * Just like `cd`, if you want to go deeper from the command line, you do this:\n *\n * cd deeper\n * # not\n * cd $(pwd)/deeper\n *\n * By treating every path as a directory, linking to relative paths should\n * require less contextual information and (fingers crossed) be more intuitive.\n * @param {string} to\n * @param {string} base\n * @return {string}\n */\nexport function resolve(to, base) {\n\t// /foo/bar, /baz/qux => /foo/bar\n\tif (startsWith(to, \"/\")) {\n\t\treturn to;\n\t}\n\n\tconst [toPathname, toQuery] = to.split(\"?\");\n\tconst [basePathname] = base.split(\"?\");\n\tconst toSegments = segmentize(toPathname);\n\tconst baseSegments = segmentize(basePathname);\n\n\t// ?a=b, /users?b=c => /users?a=b\n\tif (toSegments[0] === \"\") {\n\t\treturn addQuery(basePathname, toQuery);\n\t}\n\n\t// profile, /users/789 => /users/789/profile\n\tif (!startsWith(toSegments[0], \".\")) {\n\t\tconst pathname = baseSegments.concat(toSegments).join(\"/\");\n\t\treturn addQuery((basePathname === \"/\" ? \"\" : \"/\") + pathname, toQuery);\n\t}\n\n\t// ./ , /users/123 => /users/123\n\t// ../ , /users/123 => /users\n\t// ../.. , /users/123 => /\n\t// ../../one, /a/b/c/d => /a/b/one\n\t// .././one , /a/b/c/d => /a/b/c/one\n\tconst allSegments = baseSegments.concat(toSegments);\n\tconst segments = [];\n\n\tallSegments.forEach(segment => {\n\t\tif (segment === \"..\") {\n\t\t\tsegments.pop();\n\t\t} else if (segment !== \".\") {\n\t\t\tsegments.push(segment);\n\t\t}\n\t});\n\n\treturn addQuery(`/${segments.join(\"/\")}`, toQuery);\n}\n\n/**\n * Normalizes a location for consumption by `Route` children and the `Router`.\n * It removes the apps basepath from the pathname\n * and sets default values for `search` and `hash` properties.\n *\n * @param {Object} location The current global location supplied by the history component\n * @param {string} basepath The applications basepath (i.e. when serving from a subdirectory)\n *\n * @returns The normalized location\n */\nexport function normalizeLocation(location, basepath) {\n\tconst { pathname, hash = \"\", search = \"\", state } = location;\n\tconst baseSegments = segmentize(basepath, true);\n\tconst pathSegments = segmentize(pathname, true);\n\twhile (baseSegments.length) {\n\t\tif (baseSegments[0] !== pathSegments[0]) {\n\t\t\tfail(\n\t\t\t\tROUTER_ID,\n\t\t\t\t`Invalid state: All locations must begin with the basepath \"${basepath}\", found \"${pathname}\"`,\n\t\t\t);\n\t\t}\n\t\tbaseSegments.shift();\n\t\tpathSegments.shift();\n\t}\n\treturn {\n\t\tpathname: join(...pathSegments),\n\t\thash,\n\t\tsearch,\n\t\tstate,\n\t};\n}\n\nconst normalizeUrlFragment = frag => (frag.length === 1 ? \"\" : frag);\n\n/**\n * Creates a location object from an url.\n * It is used to create a location from the url prop used in SSR\n *\n * @param {string} url The url string (e.g. \"/path/to/somewhere\")\n *\n * @returns {{ pathname: string; search: string; hash: string }} The location\n */\nexport function createLocation(url) {\n\tconst searchIndex = url.indexOf(\"?\");\n\tconst hashIndex = url.indexOf(\"#\");\n\tconst hasSearchIndex = searchIndex !== -1;\n\tconst hasHashIndex = hashIndex !== -1;\n\tconst hash = hasHashIndex ? normalizeUrlFragment(url.substr(hashIndex)) : \"\";\n\tconst pathnameAndSearch = hasHashIndex ? url.substr(0, hashIndex) : url;\n\tconst search = hasSearchIndex\n\t\t? normalizeUrlFragment(pathnameAndSearch.substr(searchIndex))\n\t\t: \"\";\n\tconst pathname = hasSearchIndex\n\t\t? pathnameAndSearch.substr(0, searchIndex)\n\t\t: pathnameAndSearch;\n\treturn { pathname, search, hash };\n}\n\n/**\n * Resolves a link relative to the parent Route and the Routers basepath.\n *\n * @param {string} path The given path, that will be resolved\n * @param {string} routeBase The current Routes base path\n * @param {string} appBase The basepath of the app. Used, when serving from a subdirectory\n * @returns {string} The resolved path\n *\n * @example\n * resolveLink(\"relative\", \"/routeBase\", \"/\") // -> \"/routeBase/relative\"\n * resolveLink(\"/absolute\", \"/routeBase\", \"/\") // -> \"/absolute\"\n * resolveLink(\"relative\", \"/routeBase\", \"/base\") // -> \"/base/routeBase/relative\"\n * resolveLink(\"/absolute\", \"/routeBase\", \"/base\") // -> \"/base/absolute\"\n */\nexport function resolveLink(path, routeBase, appBase) {\n\treturn join(appBase, resolve(path, routeBase));\n}\n\n/**\n * Get the uri for a Route, by matching it against the current location.\n *\n * @param {string} routePath The Routes resolved path\n * @param {string} pathname The current locations pathname\n */\nexport function extractBaseUri(routePath, pathname) {\n\tconst fullPath = normalizePath(stripSplat(routePath));\n\tconst baseSegments = segmentize(fullPath, true);\n\tconst pathSegments = segmentize(pathname, true).slice(0, baseSegments.length);\n\tconst routeMatch = match({ fullPath }, join(...pathSegments));\n\treturn routeMatch && routeMatch.uri;\n}\n","/*\n * Adapted from https://github.com/reach/router/blob/b60e6dd781d5d3a4bdaaf4de665649c0f6a7e78d/src/lib/history.js\n *\n * https://github.com/reach/router/blob/master/LICENSE\n */\n\nimport { createLocation } from \"./routes\";\nimport { createGlobalId, isSSR, isNumber, addListener } from \"./utils\";\nimport { warn, NAVIGATE_ID } from \"./warning\";\n\nconst POP = \"POP\";\nconst PUSH = \"PUSH\";\nconst REPLACE = \"REPLACE\";\n\nfunction getLocation(source) {\n\treturn {\n\t\t...source.location,\n\t\tpathname: encodeURI(decodeURI(source.location.pathname)),\n\t\tstate: source.history.state,\n\t\t_key: (source.history.state && source.history.state._key) || \"initial\",\n\t};\n}\n\nfunction createHistory(source) {\n\tlet listeners = [];\n\tlet location = getLocation(source);\n\tlet action = POP;\n\n\tconst notifyListeners = (listenerFns = listeners) =>\n\t\tlistenerFns.forEach(listener => listener({ location, action }));\n\n\treturn {\n\t\tget location() {\n\t\t\treturn location;\n\t\t},\n\t\tlisten(listener) {\n\t\t\tlisteners.push(listener);\n\n\t\t\tconst popstateListener = () => {\n\t\t\t\tlocation = getLocation(source);\n\t\t\t\taction = POP;\n\t\t\t\tnotifyListeners([listener]);\n\t\t\t};\n\n\t\t\t// Call listener when it is registered\n\t\t\tnotifyListeners([listener]);\n\n\t\t\tconst unlisten = addListener(source, \"popstate\", popstateListener);\n\t\t\treturn () => {\n\t\t\t\tunlisten();\n\t\t\t\tlisteners = listeners.filter(fn => fn !== listener);\n\t\t\t};\n\t\t},\n\t\t/**\n\t\t * Navigate to a new absolute route.\n\t\t *\n\t\t * @param {string|number} to The path to navigate to.\n\t\t *\n\t\t * If `to` is a number we will navigate to the stack entry index + `to`\n\t\t * (-> `navigate(-1)`, is equivalent to hitting the back button of the browser)\n\t\t * @param {Object} options\n\t\t * @param {*} [options.state] The state will be accessible through `location.state`\n\t\t * @param {boolean} [options.replace=false] Replace the current entry in the history\n\t\t * stack, instead of pushing on a new one\n\t\t */\n\t\tnavigate(to, options) {\n\t\t\tconst { state = {}, replace = false } = options || {};\n\t\t\taction = replace ? REPLACE : PUSH;\n\t\t\tif (isNumber(to)) {\n\t\t\t\tif (options) {\n\t\t\t\t\twarn(\n\t\t\t\t\t\tNAVIGATE_ID,\n\t\t\t\t\t\t\"Navigation options (state or replace) are not supported, \" +\n\t\t\t\t\t\t\t\"when passing a number as the first argument to navigate. \" +\n\t\t\t\t\t\t\t\"They are ignored.\",\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\taction = POP;\n\t\t\t\tsource.history.go(to);\n\t\t\t} else {\n\t\t\t\tconst keyedState = { ...state, _key: createGlobalId() };\n\t\t\t\t// try...catch iOS Safari limits to 100 pushState calls\n\t\t\t\ttry {\n\t\t\t\t\tsource.history[replace ? \"replaceState\" : \"pushState\"](\n\t\t\t\t\t\tkeyedState,\n\t\t\t\t\t\t\"\",\n\t\t\t\t\t\tto,\n\t\t\t\t\t);\n\t\t\t\t} catch (e) {\n\t\t\t\t\tsource.location[replace ? \"replace\" : \"assign\"](to);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlocation = getLocation(source);\n\t\t\tnotifyListeners();\n\t\t},\n\t};\n}\n\nfunction createStackFrame(state, uri) {\n\treturn { ...createLocation(uri), state };\n}\n\n// Stores history entries in memory for testing or other platforms like Native\nfunction createMemorySource(initialPathname = \"/\") {\n\tlet index = 0;\n\tlet stack = [createStackFrame(null, initialPathname)];\n\n\treturn {\n\t\t// This is just for testing...\n\t\tget entries() {\n\t\t\treturn stack;\n\t\t},\n\t\tget location() {\n\t\t\treturn stack[index];\n\t\t},\n\t\taddEventListener() {},\n\t\tremoveEventListener() {},\n\t\thistory: {\n\t\t\tget state() {\n\t\t\t\treturn stack[index].state;\n\t\t\t},\n\t\t\tpushState(state, title, uri) {\n\t\t\t\tindex++;\n\t\t\t\t// Throw away anything in the stack with an index greater than the current index.\n\t\t\t\t// This happens, when we go back using `go(-n)`. The index is now less than `stack.length`.\n\t\t\t\t// If we call `go(+n)` the stack entries with an index greater than the current index can\n\t\t\t\t// be reused.\n\t\t\t\t// However, if we navigate to a path, instead of a number, we want to create a new branch\n\t\t\t\t// of navigation.\n\t\t\t\tstack = stack.slice(0, index);\n\t\t\t\tstack.push(createStackFrame(state, uri));\n\t\t\t},\n\t\t\treplaceState(state, title, uri) {\n\t\t\t\tstack[index] = createStackFrame(state, uri);\n\t\t\t},\n\t\t\tgo(to) {\n\t\t\t\tconst newIndex = index + to;\n\t\t\t\tif (newIndex < 0 || newIndex > stack.length - 1) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tindex = newIndex;\n\t\t\t},\n\t\t},\n\t};\n}\n\n// Global history uses window.history as the source if available,\n// otherwise a memory history\nconst canUseDOM = !!(\n\t!isSSR &&\n\twindow.document &&\n\twindow.document.createElement\n);\n// Use memory history in iframes (for example in Svelte REPL)\nconst isEmbeddedPage = !isSSR && window.location.origin === \"null\";\nconst globalHistory = createHistory(\n\tcanUseDOM && !isEmbeddedPage ? window : createMemorySource(),\n);\nconst { navigate } = globalHistory;\n\nexport { globalHistory, navigate, createHistory, createMemorySource };\n","import { get } from \"svelte/store\";\nimport { tick } from \"svelte\";\nimport { warn, ROUTER_ID, ROUTE_ID } from \"./warning\";\nimport { addListener } from \"./utils\";\n\n// We need to keep the focus candidate in a separate file, so svelte does\n// not update, when we mutate it.\n// Also, we need a single global reference, because taking focus needs to\n// work globally, even if we have multiple top level routers\n// eslint-disable-next-line import/no-mutable-exports\nexport let focusCandidate = null;\n\n// eslint-disable-next-line import/no-mutable-exports\nexport let initialNavigation = true;\n\n/**\n * Check if RouterA is above RouterB in the document\n * @param {number} routerIdA The first Routers id\n * @param {number} routerIdB The second Routers id\n */\nfunction isAbove(routerIdA, routerIdB) {\n\tconst routerMarkers = document.querySelectorAll(\"[data-svnav-router]\");\n\tfor (let i = 0; i < routerMarkers.length; i++) {\n\t\tconst node = routerMarkers[i];\n\t\tconst currentId = Number(node.dataset.svnavRouter);\n\t\tif (currentId === routerIdA) return true;\n\t\tif (currentId === routerIdB) return false;\n\t}\n\treturn false;\n}\n\n/**\n * Check if a Route candidate is the best choice to move focus to,\n * and store the best match.\n * @param {{\n level: number;\n routerId: number;\n route: {\n id: number;\n focusElement: import(\"svelte/store\").Readable|null>;\n }\n }} item A Route candidate, that updated and is visible after a navigation\n */\nexport function pushFocusCandidate(item) {\n\tif (\n\t\t// Best candidate if it's the only candidate...\n\t\t!focusCandidate ||\n\t\t// Route is nested deeper, than previous candidate\n\t\t// -> Route change was triggered in the deepest affected\n\t\t// Route, so that's were focus should move to\n\t\titem.level > focusCandidate.level ||\n\t\t// If the level is identical, we want to focus the first Route in the document,\n\t\t// so we pick the first Router lookin from page top to page bottom.\n\t\t(item.level === focusCandidate.level &&\n\t\t\tisAbove(item.routerId, focusCandidate.routerId))\n\t) {\n\t\tfocusCandidate = item;\n\t}\n}\n\n/**\n * Reset the focus candidate.\n */\nexport function clearFocusCandidate() {\n\tfocusCandidate = null;\n}\n\nexport function initialNavigationOccurred() {\n\tinitialNavigation = false;\n}\n\n/*\n * `focus` Adapted from https://github.com/oaf-project/oaf-side-effects/blob/master/src/index.ts\n *\n * https://github.com/oaf-project/oaf-side-effects/blob/master/LICENSE\n */\nexport function focus(elem) {\n\tif (!elem) return false;\n\tconst TABINDEX = \"tabindex\";\n\ttry {\n\t\tif (!elem.hasAttribute(TABINDEX)) {\n\t\t\telem.setAttribute(TABINDEX, \"-1\");\n\t\t\tlet unlisten;\n\t\t\t// We remove tabindex after blur to avoid weird browser behavior\n\t\t\t// where a mouse click can activate elements with tabindex=\"-1\".\n\t\t\tconst blurListener = () => {\n\t\t\t\telem.removeAttribute(TABINDEX);\n\t\t\t\tunlisten();\n\t\t\t};\n\t\t\tunlisten = addListener(elem, \"blur\", blurListener);\n\t\t}\n\t\telem.focus();\n\t\treturn document.activeElement === elem;\n\t} catch (e) {\n\t\t// Apparently trying to focus a disabled element in IE can throw.\n\t\t// See https://stackoverflow.com/a/1600194/2476884\n\t\treturn false;\n\t}\n}\n\nexport function isEndMarker(elem, id) {\n\treturn Number(elem.dataset.svnavRouteEnd) === id;\n}\n\nexport function isHeading(elem) {\n\treturn /^H[1-6]$/i.test(elem.tagName);\n}\n\nfunction query(selector, parent = document) {\n\treturn parent.querySelector(selector);\n}\n\nexport function queryHeading(id) {\n\tconst marker = query(`[data-svnav-route-start=\"${id}\"]`);\n\tlet current = marker.nextElementSibling;\n\twhile (!isEndMarker(current, id)) {\n\t\tif (isHeading(current)) {\n\t\t\treturn current;\n\t\t}\n\t\tconst heading = query(\"h1,h2,h3,h4,h5,h6\", current);\n\t\tif (heading) {\n\t\t\treturn heading;\n\t\t}\n\t\tcurrent = current.nextElementSibling;\n\t}\n\treturn null;\n}\n\nexport function handleFocus(route) {\n\tPromise.resolve(get(route.focusElement)).then(elem => {\n\t\tconst focusElement = elem || queryHeading(route.id);\n\t\tif (!focusElement) {\n\t\t\twarn(\n\t\t\t\tROUTER_ID,\n\t\t\t\t\"Could not find an element to focus. \" +\n\t\t\t\t\t\"You should always render a header for accessibility reasons, \" +\n\t\t\t\t\t'or set a custom focus element via the \"useFocus\" hook. ' +\n\t\t\t\t\t\"If you don't want this Route or Router to manage focus, \" +\n\t\t\t\t\t'pass \"primary={false}\" to it.',\n\t\t\t\troute,\n\t\t\t\tROUTE_ID,\n\t\t\t);\n\t\t}\n\t\tconst headingFocused = focus(focusElement);\n\t\tif (headingFocused) return;\n\t\tfocus(document.documentElement);\n\t});\n}\n\nexport const createTriggerFocus = (a11yConfig, announcementText, location) => (\n\tmanageFocus,\n\tannounceNavigation,\n) =>\n\t// Wait until the dom is updated, so we can look for headings\n\ttick().then(() => {\n\t\tif (!focusCandidate || initialNavigation) {\n\t\t\tinitialNavigationOccurred();\n\t\t\treturn;\n\t\t}\n\t\tif (manageFocus) {\n\t\t\thandleFocus(focusCandidate.route);\n\t\t}\n\t\tif (a11yConfig.announcements && announceNavigation) {\n\t\t\tconst { path, fullPath, meta, params, uri } = focusCandidate.route;\n\t\t\tconst announcementMessage = a11yConfig.createAnnouncement(\n\t\t\t\t{ path, fullPath, meta, params, uri },\n\t\t\t\tget(location),\n\t\t\t);\n\t\t\tPromise.resolve(announcementMessage).then(message => {\n\t\t\t\tannouncementText.set(message);\n\t\t\t});\n\t\t}\n\t\tclearFocusCandidate();\n\t});\n\nexport const visuallyHiddenStyle =\n\t\"position:fixed;\" +\n\t\"top:-1px;\" +\n\t\"left:0;\" +\n\t\"width:1px;\" +\n\t\"height:1px;\" +\n\t\"padding:0;\" +\n\t\"overflow:hidden;\" +\n\t\"clip:rect(0,0,0,0);\" +\n\t\"white-space:nowrap;\" +\n\t\"border:0;\";\n","\n\n\n\n
\n\n\n\n{#if isTopLevelRouter && manageFocus && a11yConfig.announcements}\n\t\n\t\t{$announcementText}\n\t
\n{/if}\n","import { getContext, onDestroy, tick } from \"svelte\";\nimport { derived, get, writable } from \"svelte/store\";\nimport { LOCATION, ROUTER, ROUTE, ROUTE_PARAMS, FOCUS_ELEM } from \"./contexts\";\nimport { resolveLink, match, normalizeLocation } from \"./routes\";\nimport { isNumber } from \"./utils\";\nimport {\n\tfail,\n\tcreateLabel,\n\tUSE_FOCUS_ID,\n\tROUTER_ID,\n\tUSE_LOCATION_ID,\n\tROUTE_ID,\n\tUSE_RESOLVE_ID,\n\tUSE_RESOLVABLE_ID,\n\tUSE_NAVIGATE_ID,\n\tUSE_MATCH_ID,\n\tUSE_PARAMS_ID,\n} from \"./warning\";\n\n/**\n * Check if a component or hook have been created outside of a\n * context providing component\n * @param {number} componentId\n * @param {*} props\n * @param {string?} ctxKey\n * @param {number?} ctxProviderId\n */\nexport function usePreflightCheck(\n\tcomponentId,\n\tprops,\n\tctxKey = ROUTER,\n\tctxProviderId = ROUTER_ID,\n) {\n\tconst ctx = getContext(ctxKey);\n\tif (!ctx) {\n\t\tfail(\n\t\t\tcomponentId,\n\t\t\tlabel =>\n\t\t\t\t`You cannot use ${label} outside of a ${createLabel(ctxProviderId)}.`,\n\t\t\tprops,\n\t\t);\n\t}\n}\n\nconst toReadonly = ctx => {\n\tconst { subscribe } = getContext(ctx);\n\treturn { subscribe };\n};\n\n/**\n * Access the current location via a readable store.\n * @returns {import(\"svelte/store\").Readable<{\n pathname: string;\n search: string;\n hash: string;\n state: {};\n }>}\n *\n * @example\n ```html\n \n ```\n */\nexport function useLocation() {\n\tusePreflightCheck(USE_LOCATION_ID);\n\treturn toReadonly(LOCATION);\n}\n\n/**\n * @typedef {{\n path: string;\n fullPath: string;\n uri: string;\n params: {};\n }} RouteMatch\n */\n\n/**\n * @typedef {import(\"svelte/store\").Readable} RouteMatchStore\n */\n\n/**\n * Access the history of top level Router.\n */\nexport function useHistory() {\n\tconst { history } = getContext(ROUTER);\n\treturn history;\n}\n\n/**\n * Access the base of the parent Route.\n */\nexport function useRouteBase() {\n\tconst route = getContext(ROUTE);\n\treturn route ? derived(route, _route => _route.base) : writable(\"/\");\n}\n\n/**\n * Resolve a given link relative to the current `Route` and the `Router`s `basepath`.\n * It is used under the hood in `Link` and `useNavigate`.\n * You can use it to manually resolve links, when using the `link` or `links` actions.\n *\n * @returns {(path: string) => string}\n *\n * @example\n ```html\n \n\n Relative link\n ```\n */\nexport function useResolve() {\n\tusePreflightCheck(USE_RESOLVE_ID);\n\tconst routeBase = useRouteBase();\n\tconst { basepath: appBase } = getContext(ROUTER);\n\t/**\n\t * Resolves the path relative to the current route and basepath.\n\t *\n\t * @param {string} path The path to resolve\n\t * @returns {string} The resolved path\n\t */\n\tconst resolve = path => resolveLink(path, get(routeBase), appBase);\n\treturn resolve;\n}\n\n/**\n * Resolve a given link relative to the current `Route` and the `Router`s `basepath`.\n * It is used under the hood in `Link` and `useNavigate`.\n * You can use it to manually resolve links, when using the `link` or `links` actions.\n *\n * @returns {import(\"svelte/store\").Readable}\n *\n * @example\n ```html\n \n\n Relative link\n ```\n */\nexport function useResolvable(path) {\n\tusePreflightCheck(USE_RESOLVABLE_ID);\n\tconst routeBase = useRouteBase();\n\tconst { basepath: appBase } = getContext(ROUTER);\n\treturn derived(routeBase, _routeBase =>\n\t\tresolveLink(path, _routeBase, appBase),\n\t);\n}\n\n/**\n * A hook, that returns a context-aware version of `navigate`.\n * It will automatically resolve the given link relative to the current Route.\n * It will also resolve a link against the `basepath` of the Router.\n *\n * @example\n ```html\n \n \n\n \n \n \n \n \n \n\n \n \n\n \n \n ```\n *\n * @example\n ```html\n \n \n\n \n \n \n \n \n \n\n \n \n\n \n \n ```\n */\nexport function useNavigate() {\n\tusePreflightCheck(USE_NAVIGATE_ID);\n\tconst resolve = useResolve();\n\tconst { navigate } = useHistory();\n\t/**\n\t * Navigate to a new route.\n\t * Resolves the link relative to the current route and basepath.\n\t *\n\t * @param {string|number} to The path to navigate to.\n\t *\n\t * If `to` is a number we will navigate to the stack entry index + `to`\n\t * (-> `navigate(-1)`, is equivalent to hitting the back button of the browser)\n\t * @param {Object} options\n\t * @param {*} [options.state]\n\t * @param {boolean} [options.replace=false]\n\t */\n\tconst navigateRelative = (to, options) => {\n\t\t// If to is a number, we navigate to the target stack entry via `history.go`.\n\t\t// Otherwise resolve the link\n\t\tconst target = isNumber(to) ? to : resolve(to);\n\t\treturn navigate(target, options);\n\t};\n\treturn navigateRelative;\n}\n\n/**\n * Use Svelte Navigators matching without needing to use a Route.\n * Returns a readable store with the potential match,\n * that changes, when the location changes.\n *\n * The provided path will be resolved relatively,\n * as you're used to with all paths in Svelte Navigator\n *\n * @param {string} path The path, to match against.\n * It works just like a Route path\n * @returns {RouteMatchStore} The matched route.\n * Returns `null`, when nothing could be matched\n *\n * @example\n ```html\n \n ```\n */\nexport function useMatch(path) {\n\tusePreflightCheck(USE_MATCH_ID);\n\tconst location = useLocation();\n\tconst resolve = useResolve();\n\tconst { basepath: appBase } = getContext(ROUTER);\n\tconst resolvedPath = resolve(path);\n\tconst { pathname: fullPath } = normalizeLocation(\n\t\t{ pathname: resolvedPath },\n\t\tappBase,\n\t);\n\treturn derived(location, loc => match({ fullPath, path }, loc.pathname));\n}\n\n/**\n * Access the parent Routes matched params and wildcards\n * @returns {import(\"svelte/store\").Readable<{\n [param: string]: any;\n }>} A readable store containing the matched parameters and wildcards\n *\n * @example\n ```html\n \n \n\n

Welcome user {$params.id}! bleep bloop...

\n ```\n */\nexport function useParams() {\n\tusePreflightCheck(USE_PARAMS_ID, null, ROUTE, ROUTE_ID);\n\treturn toReadonly(ROUTE_PARAMS);\n}\n\n/**\n * Provide a custom element to focus, when the parent route is visited.\n * It returns the `registerFocus` function you can call manually with an\n * Element or use as a Svelte action via the `use` directive.\n *\n * @example\n ```html\n \n \n \n\n

Don't worry about me...

\n

Here, look at me!

\n ```\n * @example\n ```html\n \n \n \n\n

Don't worry about me...

\n

Here, look at me!

\n ```\n * @example\n ```html\n \n \n \n\n {#await lazyImport then MyComponent}\n \n {/await}\n\n \n \n\n

Hi there!

\n ```\n */\nexport function useFocus() {\n\tusePreflightCheck(USE_FOCUS_ID, null, ROUTE, ROUTE_ID);\n\tconst location = useLocation();\n\tconst focusElement = getContext(FOCUS_ELEM);\n\n\tlet resolve;\n\tconst unsubscribe = location.subscribe(() => {\n\t\tconst lazyElement = new Promise(_resolve => {\n\t\t\tresolve = _resolve;\n\t\t});\n\t\tfocusElement.set(lazyElement);\n\t});\n\n\tonDestroy(unsubscribe);\n\n\treturn node => {\n\t\tlet unmounted = false;\n\t\tconst innerUnsubscribe = location.subscribe(() => {\n\t\t\ttick().then(() => {\n\t\t\t\tif (!unmounted) {\n\t\t\t\t\tresolve(node);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t\treturn {\n\t\t\tdestroy() {\n\t\t\t\tunmounted = true;\n\t\t\t\tinnerUnsubscribe();\n\t\t\t},\n\t\t};\n\t};\n}\n","\n\n\n\n
\n{#if isActive}\n\t\n\t\t\n\t\t{#if component !== null}\n\t\t\t\n\t\t{:else}\n\t\t\t\n\t\t{/if}\n\t\n{/if}\n
\n","\n\n\n\t\n\n","import { en } from './i18n.js';\r\n\r\nexport default {\r\n theme: 'sdt-calendar-colors',\r\n mode: 'auto',\r\n format: 'yyyy-mm-dd',\r\n formatType: 'standard',\r\n weekStart: 1,\r\n visible: false,\r\n inputClasses: null,\r\n todayBtnClasses: 'sdt-action-btn sdt-today-btn',\r\n clearBtnClasses: 'sdt-action-btn sdt-clear-btn',\r\n todayBtn: true,\r\n clearBtn: true,\r\n autoclose: true,\r\n clearToggle: true,\r\n i18n: en\r\n}","export const en = {\r\n days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'],\r\n daysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'],\r\n daysMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa', 'Su'],\r\n months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\r\n monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\r\n meridiem: ['am', 'pm'],\r\n suffix: ['st', 'nd', 'rd', 'th'],\r\n todayBtn: 'Today',\r\n clearBtn: 'Clear',\r\n timeView: 'Show time view',\r\n backToDate: 'Back to calendar view'\r\n}\r\n","export { identity as linear } from '../internal/index.mjs';\n\n/*\nAdapted from https://github.com/mattdesl\nDistributed under MIT License https://github.com/mattdesl/eases/blob/master/LICENSE.md\n*/\nfunction backInOut(t) {\n const s = 1.70158 * 1.525;\n if ((t *= 2) < 1)\n return 0.5 * (t * t * ((s + 1) * t - s));\n return 0.5 * ((t -= 2) * t * ((s + 1) * t + s) + 2);\n}\nfunction backIn(t) {\n const s = 1.70158;\n return t * t * ((s + 1) * t - s);\n}\nfunction backOut(t) {\n const s = 1.70158;\n return --t * t * ((s + 1) * t + s) + 1;\n}\nfunction bounceOut(t) {\n const a = 4.0 / 11.0;\n const b = 8.0 / 11.0;\n const c = 9.0 / 10.0;\n const ca = 4356.0 / 361.0;\n const cb = 35442.0 / 1805.0;\n const cc = 16061.0 / 1805.0;\n const t2 = t * t;\n return t < a\n ? 7.5625 * t2\n : t < b\n ? 9.075 * t2 - 9.9 * t + 3.4\n : t < c\n ? ca * t2 - cb * t + cc\n : 10.8 * t * t - 20.52 * t + 10.72;\n}\nfunction bounceInOut(t) {\n return t < 0.5\n ? 0.5 * (1.0 - bounceOut(1.0 - t * 2.0))\n : 0.5 * bounceOut(t * 2.0 - 1.0) + 0.5;\n}\nfunction bounceIn(t) {\n return 1.0 - bounceOut(1.0 - t);\n}\nfunction circInOut(t) {\n if ((t *= 2) < 1)\n return -0.5 * (Math.sqrt(1 - t * t) - 1);\n return 0.5 * (Math.sqrt(1 - (t -= 2) * t) + 1);\n}\nfunction circIn(t) {\n return 1.0 - Math.sqrt(1.0 - t * t);\n}\nfunction circOut(t) {\n return Math.sqrt(1 - --t * t);\n}\nfunction cubicInOut(t) {\n return t < 0.5 ? 4.0 * t * t * t : 0.5 * Math.pow(2.0 * t - 2.0, 3.0) + 1.0;\n}\nfunction cubicIn(t) {\n return t * t * t;\n}\nfunction cubicOut(t) {\n const f = t - 1.0;\n return f * f * f + 1.0;\n}\nfunction elasticInOut(t) {\n return t < 0.5\n ? 0.5 *\n Math.sin(((+13.0 * Math.PI) / 2) * 2.0 * t) *\n Math.pow(2.0, 10.0 * (2.0 * t - 1.0))\n : 0.5 *\n Math.sin(((-13.0 * Math.PI) / 2) * (2.0 * t - 1.0 + 1.0)) *\n Math.pow(2.0, -10.0 * (2.0 * t - 1.0)) +\n 1.0;\n}\nfunction elasticIn(t) {\n return Math.sin((13.0 * t * Math.PI) / 2) * Math.pow(2.0, 10.0 * (t - 1.0));\n}\nfunction elasticOut(t) {\n return (Math.sin((-13.0 * (t + 1.0) * Math.PI) / 2) * Math.pow(2.0, -10.0 * t) + 1.0);\n}\nfunction expoInOut(t) {\n return t === 0.0 || t === 1.0\n ? t\n : t < 0.5\n ? +0.5 * Math.pow(2.0, 20.0 * t - 10.0)\n : -0.5 * Math.pow(2.0, 10.0 - t * 20.0) + 1.0;\n}\nfunction expoIn(t) {\n return t === 0.0 ? t : Math.pow(2.0, 10.0 * (t - 1.0));\n}\nfunction expoOut(t) {\n return t === 1.0 ? t : 1.0 - Math.pow(2.0, -10.0 * t);\n}\nfunction quadInOut(t) {\n t /= 0.5;\n if (t < 1)\n return 0.5 * t * t;\n t--;\n return -0.5 * (t * (t - 2) - 1);\n}\nfunction quadIn(t) {\n return t * t;\n}\nfunction quadOut(t) {\n return -t * (t - 2.0);\n}\nfunction quartInOut(t) {\n return t < 0.5\n ? +8.0 * Math.pow(t, 4.0)\n : -8.0 * Math.pow(t - 1.0, 4.0) + 1.0;\n}\nfunction quartIn(t) {\n return Math.pow(t, 4.0);\n}\nfunction quartOut(t) {\n return Math.pow(t - 1.0, 3.0) * (1.0 - t) + 1.0;\n}\nfunction quintInOut(t) {\n if ((t *= 2) < 1)\n return 0.5 * t * t * t * t * t;\n return 0.5 * ((t -= 2) * t * t * t * t + 2);\n}\nfunction quintIn(t) {\n return t * t * t * t * t;\n}\nfunction quintOut(t) {\n return --t * t * t * t * t + 1;\n}\nfunction sineInOut(t) {\n return -0.5 * (Math.cos(Math.PI * t) - 1);\n}\nfunction sineIn(t) {\n const v = Math.cos(t * Math.PI * 0.5);\n if (Math.abs(v) < 1e-14)\n return 1;\n else\n return 1 - v;\n}\nfunction sineOut(t) {\n return Math.sin((t * Math.PI) / 2);\n}\n\nexport { backIn, backInOut, backOut, bounceIn, bounceInOut, bounceOut, circIn, circInOut, circOut, cubicIn, cubicInOut, cubicOut, elasticIn, elasticInOut, elasticOut, expoIn, expoInOut, expoOut, quadIn, quadInOut, quadOut, quartIn, quartInOut, quartOut, quintIn, quintInOut, quintOut, sineIn, sineInOut, sineOut };\n","import { cubicInOut, linear, cubicOut } from '../easing/index.mjs';\nimport { is_function, assign } from '../internal/index.mjs';\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\n\nfunction blur(node, { delay = 0, duration = 400, easing = cubicInOut, amount = 5, opacity = 0 } = {}) {\n const style = getComputedStyle(node);\n const target_opacity = +style.opacity;\n const f = style.filter === 'none' ? '' : style.filter;\n const od = target_opacity * (1 - opacity);\n return {\n delay,\n duration,\n easing,\n css: (_t, u) => `opacity: ${target_opacity - (od * u)}; filter: ${f} blur(${u * amount}px);`\n };\n}\nfunction fade(node, { delay = 0, duration = 400, easing = linear } = {}) {\n const o = +getComputedStyle(node).opacity;\n return {\n delay,\n duration,\n easing,\n css: t => `opacity: ${t * o}`\n };\n}\nfunction fly(node, { delay = 0, duration = 400, easing = cubicOut, x = 0, y = 0, opacity = 0 } = {}) {\n const style = getComputedStyle(node);\n const target_opacity = +style.opacity;\n const transform = style.transform === 'none' ? '' : style.transform;\n const od = target_opacity * (1 - opacity);\n return {\n delay,\n duration,\n easing,\n css: (t, u) => `\n\t\t\ttransform: ${transform} translate(${(1 - t) * x}px, ${(1 - t) * y}px);\n\t\t\topacity: ${target_opacity - (od * u)}`\n };\n}\nfunction slide(node, { delay = 0, duration = 400, easing = cubicOut } = {}) {\n const style = getComputedStyle(node);\n const opacity = +style.opacity;\n const height = parseFloat(style.height);\n const padding_top = parseFloat(style.paddingTop);\n const padding_bottom = parseFloat(style.paddingBottom);\n const margin_top = parseFloat(style.marginTop);\n const margin_bottom = parseFloat(style.marginBottom);\n const border_top_width = parseFloat(style.borderTopWidth);\n const border_bottom_width = parseFloat(style.borderBottomWidth);\n return {\n delay,\n duration,\n easing,\n css: t => 'overflow: hidden;' +\n `opacity: ${Math.min(t * 20, 1) * opacity};` +\n `height: ${t * height}px;` +\n `padding-top: ${t * padding_top}px;` +\n `padding-bottom: ${t * padding_bottom}px;` +\n `margin-top: ${t * margin_top}px;` +\n `margin-bottom: ${t * margin_bottom}px;` +\n `border-top-width: ${t * border_top_width}px;` +\n `border-bottom-width: ${t * border_bottom_width}px;`\n };\n}\nfunction scale(node, { delay = 0, duration = 400, easing = cubicOut, start = 0, opacity = 0 } = {}) {\n const style = getComputedStyle(node);\n const target_opacity = +style.opacity;\n const transform = style.transform === 'none' ? '' : style.transform;\n const sd = 1 - start;\n const od = target_opacity * (1 - opacity);\n return {\n delay,\n duration,\n easing,\n css: (_t, u) => `\n\t\t\ttransform: ${transform} scale(${1 - (sd * u)});\n\t\t\topacity: ${target_opacity - (od * u)}\n\t\t`\n };\n}\nfunction draw(node, { delay = 0, speed, duration, easing = cubicInOut } = {}) {\n let len = node.getTotalLength();\n const style = getComputedStyle(node);\n if (style.strokeLinecap !== 'butt') {\n len += parseInt(style.strokeWidth);\n }\n if (duration === undefined) {\n if (speed === undefined) {\n duration = 800;\n }\n else {\n duration = len / speed;\n }\n }\n else if (typeof duration === 'function') {\n duration = duration(len);\n }\n return {\n delay,\n duration,\n easing,\n css: (t, u) => `stroke-dasharray: ${t * len} ${u * len}`\n };\n}\nfunction crossfade(_a) {\n var { fallback } = _a, defaults = __rest(_a, [\"fallback\"]);\n const to_receive = new Map();\n const to_send = new Map();\n function crossfade(from, node, params) {\n const { delay = 0, duration = d => Math.sqrt(d) * 30, easing = cubicOut } = assign(assign({}, defaults), params);\n const to = node.getBoundingClientRect();\n const dx = from.left - to.left;\n const dy = from.top - to.top;\n const dw = from.width / to.width;\n const dh = from.height / to.height;\n const d = Math.sqrt(dx * dx + dy * dy);\n const style = getComputedStyle(node);\n const transform = style.transform === 'none' ? '' : style.transform;\n const opacity = +style.opacity;\n return {\n delay,\n duration: is_function(duration) ? duration(d) : duration,\n easing,\n css: (t, u) => `\n\t\t\t\topacity: ${t * opacity};\n\t\t\t\ttransform-origin: top left;\n\t\t\t\ttransform: ${transform} translate(${u * dx}px,${u * dy}px) scale(${t + (1 - t) * dw}, ${t + (1 - t) * dh});\n\t\t\t`\n };\n }\n function transition(items, counterparts, intro) {\n return (node, params) => {\n items.set(params.key, {\n rect: node.getBoundingClientRect()\n });\n return () => {\n if (counterparts.has(params.key)) {\n const { rect } = counterparts.get(params.key);\n counterparts.delete(params.key);\n return crossfade(rect, node, params);\n }\n // if the node is disappearing altogether\n // (i.e. wasn't claimed by the other list)\n // then we need to supply an outro\n items.delete(params.key);\n return fallback && fallback(node, params, intro);\n };\n };\n }\n return [\n transition(to_send, to_receive, false),\n transition(to_receive, to_send, true)\n ];\n}\n\nexport { blur, crossfade, draw, fade, fly, scale, slide };\n","export const MODE_DECADE = 0;\r\nexport const MODE_YEAR = 1;\r\nexport const MODE_MONTH = 2;\r\n\r\nexport function compute(currentDate, selectedDate, view, locale, weekStart) {\r\n // years 4 x 3\r\n if (view === MODE_DECADE) {\r\n const nextFrom = 11;\r\n const prevTo = 1;\r\n const todayMark = -1;\r\n const grid = [];\r\n let yearRow = [];\r\n let currYear = currentDate.getUTCFullYear() - (currentDate.getUTCFullYear() % 10) - 1;\r\n for (let i = 0; i < 12; i++) {\r\n yearRow.push(currYear + i);\r\n if (yearRow.length === 4) {\r\n grid.push(yearRow);\r\n yearRow = [];\r\n }\r\n }\r\n let selectionMark = null;\r\n if (!selectedDate) {\r\n selectedDate = new Date();\r\n }\r\n if (selectedDate.getUTCFullYear() >= currYear) {\r\n selectionMark = selectedDate.getUTCFullYear() % currYear;\r\n }\r\n\r\n return {\r\n grid, todayMark, nextFrom, prevTo, selectionMark\r\n }\r\n }\r\n\r\n // months 4 x 3\r\n if (view === MODE_YEAR) {\r\n let grid = [];\r\n let monthRow = [];\r\n let prevTo = 12;\r\n let nextFrom = 24;\r\n const ISO = currentDate.toISOString().split('T')[0].substring(0, 8);\r\n const dateNormalized = new Date(ISO + '01 00:00:00');\r\n const initYear = dateNormalized.getFullYear() - 1;\r\n dateNormalized.setFullYear(initYear);\r\n let todayMark = 0;\r\n for (let y = 0; y < 3; y++) {\r\n for (let i = 0; i < 12; i++) {\r\n dateNormalized.setUTCMonth(i);\r\n monthRow.push(locale.monthsShort[i % 12]);\r\n if (monthRow.length === 4) {\r\n grid.push(monthRow);\r\n monthRow = [];\r\n }\r\n }\r\n dateNormalized.setFullYear(dateNormalized.getFullYear() + 1);\r\n }\r\n let selectionMark = null;\r\n if (!selectedDate) {\r\n selectedDate = new Date();\r\n }\r\n if (selectedDate.getUTCFullYear() - initYear >= 0 && selectedDate.getUTCFullYear() - initYear <= 2) {\r\n selectionMark = selectedDate.getUTCMonth() + ((selectedDate.getUTCFullYear() - initYear || 0) * 12);\r\n }\r\n return {\r\n grid, todayMark, nextFrom, prevTo, selectionMark\r\n }\r\n } \r\n\r\n // days 7x6\r\n let d = currentDate || new Date(), // or currently selected date\r\n y = d.getUTCFullYear(),\r\n m = d.getUTCMonth(),\r\n dM = d.getUTCDate(),\r\n h = d.getUTCHours(),\r\n today = new Date();\r\n let prevMonth = UTCDate(y, m-1, 28, 0, 0, 0, 0),\r\n day = utils.getDaysInMonth(prevMonth.getUTCFullYear(), prevMonth.getUTCMonth());\r\n prevMonth.setUTCDate(day);\r\n prevMonth.setUTCDate(day - (prevMonth.getUTCDay() - weekStart + 7) % 7);\r\n\r\n let nextMonth = new Date(prevMonth);\r\n nextMonth.setUTCDate(nextMonth.getUTCDate() + 42);\r\n let nextMonthValue = nextMonth.valueOf();\r\n\r\n let grid = [];\r\n let dayRow = [];\r\n let todayMark = -1;\r\n let selectionMark = null;\r\n let prevTo = 0;\r\n let nextFrom = 42;\r\n\r\n let inc = 0;\r\n while(prevMonth.valueOf() < nextMonthValue) {\r\n inc++;\r\n dayRow.push(new Date(prevMonth));\r\n if (prevMonth.getUTCFullYear() < y || (prevMonth.getUTCFullYear() === y && prevMonth.getUTCMonth() < m)) {\r\n prevTo = inc;\r\n } else if (nextFrom === 42 && (prevMonth.getUTCFullYear() > y || (prevMonth.getUTCFullYear() === y && prevMonth.getUTCMonth() > m))) {\r\n nextFrom = inc - 1;\r\n }\r\n\r\n prevMonth.setUTCDate(prevMonth.getUTCDate() + 1);\r\n\r\n\r\n if (prevMonth.getUTCFullYear() === today.getUTCFullYear() &&\r\n prevMonth.getUTCMonth() === today.getUTCMonth() &&\r\n prevMonth.getUTCDate() === today.getUTCDate()\r\n ) {\r\n todayMark = inc;\r\n }\r\n if (!selectionMark && selectedDate\r\n && prevMonth.getUTCFullYear() === selectedDate.getUTCFullYear()\r\n && prevMonth.getUTCMonth() === selectedDate.getUTCMonth()\r\n && prevMonth.getUTCDate() === selectedDate.getUTCDate()\r\n ) {\r\n selectionMark = inc;\r\n }\r\n \r\n if (dayRow.length === 7) {\r\n grid.push(dayRow);\r\n dayRow = [];\r\n }\r\n }\r\n return { grid, todayMark, prevTo, nextFrom, selectionMark };\r\n}\r\n\r\nexport function moveGrid(newPos, view) {\r\n if (view === MODE_MONTH) {\r\n if (newPos < 0) {\r\n newPos = 42 + newPos;\r\n }\r\n return {\r\n x: newPos % 7,\r\n y: Math.floor(newPos / 7)\r\n }\r\n }\r\n}\r\n\r\nconst utils = {\r\n isLeapYear: function (year) {\r\n return (((year % 4 === 0) && (year % 100 !== 0)) || (year % 400 === 0))\r\n },\r\n getDaysInMonth: function (year, month) {\r\n return [31, (utils.isLeapYear(year) ? 29 : 28), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month]\r\n },\r\n}\r\n\r\nexport function UTCDate() {\r\n return new Date(Date.UTC.apply(Date, arguments));\r\n}\r\n\r\nexport function parseDate(date, format, i18n, type) {\r\n if (date instanceof Date) {\r\n const dateUTC = new Date(date.valueOf() - date.getTimezoneOffset() * 60000);\r\n dateUTC.setMilliseconds(0);\r\n return dateUTC;\r\n }\r\n if (/^\\d{4}\\-\\d{1,2}\\-\\d{1,2}$/.test(date)) {\r\n format = formatHelper.parseFormat('yyyy-mm-dd', type);\r\n } else \r\n if (/^\\d{4}\\-\\d{1,2}\\-\\d{1,2}[T ]\\d{1,2}\\:\\d{1,2}$/.test(date)) {\r\n format = formatHelper.parseFormat('yyyy-mm-dd hh:ii', type);\r\n } else \r\n if (/^\\d{4}\\-\\d{1,2}\\-\\d{1,2}[T ]\\d{1,2}\\:\\d{1,2}\\:\\d{1,2}[Z]{0,1}$/.test(date)) {\r\n format = formatHelper.parseFormat('yyyy-mm-dd hh:ii:ss', type);\r\n } else {\r\n format = formatHelper.parseFormat(format, type);\r\n }\r\n var parts = date && date.toString().match(formatHelper.nonpunctuation) || [],\r\n date = new Date(0, 0, 0, 0, 0, 0, 0),\r\n parsed = {},\r\n setters_order = ['hh', 'h', 'ii', 'i', 'ss', 's', 'yyyy', 'yy', 'M', 'MM', 'm', 'mm', 'D', 'DD', 'd', 'dd', 'H', 'HH', 'p', 'P', 'z', 'Z'],\r\n setters_map = {\r\n hh: function (d, v) {\r\n return d.setUTCHours(v);\r\n },\r\n h: function (d, v) {\r\n return d.setUTCHours(v);\r\n },\r\n HH: function (d, v) {\r\n return d.setUTCHours(v === 12 ? 0 : v);\r\n },\r\n H: function (d, v) {\r\n return d.setUTCHours(v === 12 ? 0 : v);\r\n },\r\n ii: function (d, v) {\r\n return d.setUTCMinutes(v);\r\n },\r\n i: function (d, v) {\r\n return d.setUTCMinutes(v);\r\n },\r\n ss: function (d, v) {\r\n return d.setUTCSeconds(v);\r\n },\r\n s: function (d, v) {\r\n return d.setUTCSeconds(v);\r\n },\r\n yyyy: function (d, v) {\r\n return d.setUTCFullYear(v);\r\n },\r\n yy: function (d, v) {\r\n return d.setUTCFullYear(2000 + v);\r\n },\r\n m: function (d, v) {\r\n v -= 1;\r\n while (v < 0) v += 12;\r\n v %= 12;\r\n d.setUTCMonth(v);\r\n while (d.getUTCMonth() !== v)\r\n if (isNaN(d.getUTCMonth()))\r\n return d;\r\n else\r\n d.setUTCDate(d.getUTCDate() - 1);\r\n return d;\r\n },\r\n d: function (d, v) {\r\n return d.setUTCDate(v);\r\n },\r\n p: function (d, v) {\r\n return d.setUTCHours(v === 1 ? d.getUTCHours() + 12 : d.getUTCHours());\r\n }\r\n },\r\n val, part;\r\n setters_map['M'] = setters_map['MM'] = setters_map['mm'] = setters_map['m'];\r\n setters_map['dd'] = setters_map['d'];\r\n setters_map['P'] = setters_map['p'];\r\n date = UTCDate(date.getFullYear(), date.getMonth(), date.getDate(), date.getUTCHours(), date.getUTCMinutes(), date.getSeconds());\r\n if (parts.length === format.parts.length) {\r\n for (var i = 0, cnt = format.parts.length; i < cnt; i++) {\r\n val = parseInt(parts[i], 10);\r\n part = format.parts[i];\r\n if (isNaN(val)) {\r\n switch (part) {\r\n case 'MM':\r\n val = i18n.months.indexOf(parts[i]) + 1;\r\n break;\r\n case 'M':\r\n val= i18n.monthsShort.indexOf(parts[i]) + 1;\r\n break;\r\n case 'p':\r\n case 'P':\r\n val = i18n.meridiem.indexOf(parts[i].toLowerCase());\r\n break;\r\n }\r\n }\r\n parsed[part] = val;\r\n }\r\n for (var i = 0, s; i < setters_order.length; i++) {\r\n s = setters_order[i];\r\n if (s in parsed && !isNaN(parsed[s]))\r\n setters_map[s](date, parsed[s])\r\n }\r\n }\r\n return date;\r\n}\r\n\r\nexport function formatDate(date, format, i18n, type) {\r\n if (date === null) {\r\n return '';\r\n }\r\n var val;\r\n if (type === 'standard') {\r\n val = {\r\n t: date.getTime(),\r\n // year\r\n yy: date.getUTCFullYear().toString().substring(2),\r\n yyyy: date.getUTCFullYear(),\r\n // month\r\n m: date.getUTCMonth() + 1,\r\n M: i18n.monthsShort[date.getUTCMonth()],\r\n MM: i18n.months[date.getUTCMonth()],\r\n // day\r\n d: date.getUTCDate(),\r\n D: i18n.daysShort[date.getUTCDay()],\r\n DD: i18n.days[date.getUTCDay()],\r\n p: (i18n.meridiem.length === 2 ? i18n.meridiem[date.getUTCHours() < 12 ? 0 : 1] : ''),\r\n // hour\r\n h: date.getUTCHours(),\r\n // minute\r\n i: date.getUTCMinutes(),\r\n // second\r\n s: date.getUTCSeconds(),\r\n // timezone\r\n z: date.toLocaleDateString(undefined, {day:'2-digit',timeZoneName: 'long' }).substring(4)\r\n };\r\n\r\n if (i18n.meridiem.length === 2) {\r\n val.H = (val.h % 12 === 0 ? 12 : val.h % 12);\r\n }\r\n else {\r\n val.H = val.h;\r\n }\r\n val.HH = (val.H < 10 ? '0' : '') + val.H;\r\n val.P = val.p.toUpperCase();\r\n val.Z = val.z;\r\n val.hh = (val.h < 10 ? '0' : '') + val.h;\r\n val.ii = (val.i < 10 ? '0' : '') + val.i;\r\n val.ss = (val.s < 10 ? '0' : '') + val.s;\r\n val.dd = (val.d < 10 ? '0' : '') + val.d;\r\n val.mm = (val.m < 10 ? '0' : '') + val.m;\r\n } else if (type === 'php') {\r\n // php format\r\n val = {\r\n // year\r\n y: date.getUTCFullYear().toString().substring(2),\r\n Y: date.getUTCFullYear(),\r\n // month\r\n F: i18n.months[date.getUTCMonth()],\r\n M: i18n.monthsShort[date.getUTCMonth()],\r\n n: date.getUTCMonth() + 1,\r\n t: utils.getDaysInMonth(date.getUTCFullYear(), date.getUTCMonth()),\r\n // day\r\n j: date.getUTCDate(),\r\n l: i18n.days[date.getUTCDay()],\r\n D: i18n.daysShort[date.getUTCDay()],\r\n w: date.getUTCDay(), // 0 -> 6\r\n N: (date.getUTCDay() === 0 ? 7 : date.getUTCDay()), // 1 -> 7\r\n S: (date.getUTCDate() % 10 <= i18n.suffix.length ? i18n.suffix[date.getUTCDate() % 10 - 1] : ''),\r\n // hour\r\n a: (i18n.meridiem.length === 2 ? i18n.meridiem[date.getUTCHours() < 12 ? 0 : 1] : ''),\r\n g: (date.getUTCHours() % 12 === 0 ? 12 : date.getUTCHours() % 12),\r\n G: date.getUTCHours(),\r\n // minute\r\n i: date.getUTCMinutes(),\r\n // second\r\n s: date.getUTCSeconds()\r\n };\r\n val.m = (val.n < 10 ? '0' : '') + val.n;\r\n val.d = (val.j < 10 ? '0' : '') + val.j;\r\n val.A = val.a.toString().toUpperCase();\r\n val.h = (val.g < 10 ? '0' : '') + val.g;\r\n val.H = (val.G < 10 ? '0' : '') + val.G;\r\n val.i = (val.i < 10 ? '0' : '') + val.i;\r\n val.s = (val.s < 10 ? '0' : '') + val.s;\r\n } else {\r\n throw new Error('Invalid format type.');\r\n }\r\n let dateArr = [];\r\n format = formatHelper.parseFormat(format, type);\r\n for (var i = 0, cnt = format.parts.length; i < cnt; i++) {\r\n if (format.separators.length) {\r\n dateArr.push(format.separators.shift());\r\n }\r\n dateArr.push(val[format.parts[i]]);\r\n }\r\n if (format.separators.length) {\r\n dateArr.push(format.separators.shift());\r\n }\r\n return dateArr.join('');\r\n}\r\n\r\nconst formatHelper = {\r\n validParts: function (type) {\r\n if (type === 'standard') {\r\n return /t|hh?|HH?|p|P|z|Z|ii?|ss?|dd?|DD?|mm?|MM?|yy(?:yy)?/g;\r\n } else if (type === 'php') {\r\n return /[dDjlNwzFmMnStyYaABgGhHis]/g;\r\n } else {\r\n throw new Error('Invalid format type.');\r\n }\r\n },\r\n nonpunctuation: /[^ -\\/:-@\\[-`{-~\\t\\n\\rTZ]+/g,\r\n parseFormat: function (format, type) {\r\n // IE treats \\0 as a string end in inputs (truncating the value),\r\n // so it's a bad format delimiter, anyway\r\n var separators = format.replace(this.validParts(type), '\\0').split('\\0'),\r\n parts = format.match(this.validParts(type));\r\n if (!separators || !separators.length || !parts || parts.length === 0) {\r\n throw new Error('Invalid date format.');\r\n }\r\n return {separators: separators, parts: parts};\r\n },\r\n}","import { cubicOut } from 'svelte/easing';\r\n\r\nexport function usePosition(el, { inputEl, visible, inputRect }) {\r\n if (!visible) {\r\n const calRect = el.getBoundingClientRect();\r\n const style = ['position: absolute', 'z-index: 12250'];\r\n style.push(inputRect.x + calRect.width > window.innerWidth\r\n ? `right: 1rem`\r\n : `left: ${inputRect.left}px`\r\n );\r\n if (calRect.height + calRect.top > (window.innerHeight + window.scrollY)) {\r\n style.push(`bottom: 1rem`);\r\n } else {\r\n style.push(`top: ${inputRect.top + inputRect.height + window.scrollY}px`);\r\n }\r\n el.style = style.join(';');\r\n el.hidden = false;\r\n document.body.appendChild(el);\r\n }\r\n el.hidden = false;\r\n\r\n function destroy() {\r\n if (el.parentNode) {\r\n el.parentNode.removeChild(el);\r\n }\r\n }\r\n\r\n return {\r\n destroy\r\n }\r\n}\r\n\r\nexport function scale(node, { delay = 0, duration = 400, easing = cubicOut, start = 0, end = 1, opacity = 0 } = {}) {\r\n const style = getComputedStyle(node);\r\n const target_opacity = +style.opacity;\r\n const transform = style.transform === 'none' ? '' : style.transform;\r\n const sd = 1 - start;\r\n const od = target_opacity * (1 - opacity);\r\n return {\r\n delay,\r\n duration,\r\n easing,\r\n css: (_t, u) => `\r\n transform: ${transform} scale(${end !== 1 ? start + end * u : 1 - (sd * u)});\r\n opacity: ${target_opacity - (od * u)};\r\n `\r\n };\r\n}","\r\n\r\n
\r\n \r\n
\r\n {#if enableTimeToggle && internalDate}\r\n \r\n {/if}\r\n \r\n \r\n
\r\n
\r\n
\r\n {#if currentView === MODE_DECADE}\r\n \r\n \r\n {#each dataset.grid as row, i}\r\n \r\n {#each row as year, j(j)}\r\n \r\n {/each}\r\n \r\n {/each}\r\n \r\n
\r\n { onClick(year)}}\r\n >{year}\r\n
\r\n {/if}\r\n {#if currentView === MODE_YEAR}\r\n \r\n onMonthTransitionTrigger && onMonthTransitionTrigger()}\r\n >\r\n {#each dataset.grid as row, i}\r\n \r\n {#each row as month, j(j)}\r\n \r\n {/each}\r\n \r\n {/each}\r\n \r\n
\r\n \r\n
\r\n {/if}\r\n {#if currentView === MODE_MONTH}\r\n \r\n \r\n \r\n {#each dayLabels as header}\r\n \r\n {/each}\r\n \r\n {#each dataset.grid as row, i }\r\n \r\n {#each row as currDate, j(j)}\r\n \r\n {/each}\r\n \r\n {/each}\r\n \r\n
{header}
\r\n \r\n
\r\n {/if}\r\n
\r\n\r\n\r\n","\r\n\r\n
\r\n
\r\n {#if hasDateComponent}\r\n \r\n {/if}\r\n \r\n :\r\n \r\n {#if showMeridian}\r\n
\r\n \r\n \r\n
\r\n {/if}\r\n
\r\n
{ handleMoveMove && onClick(e) }} on:mouseup={onToggleMove} bind:this={clockEl}\r\n class:is-minute-view={isMinuteView}\r\n >\r\n
\r\n
\r\n
\r\n
\r\n {#each pos as p, i(p.val)}\r\n \r\n {/each}\r\n {#if !showMeridian && !isMinuteView}\r\n {#each innerHours as p, i}\r\n \r\n {/each}\r\n {/if}\r\n
\r\n
\r\n\r\n","\r\n\r\n\r\n\r\n { !isFocused && onFocus() }}\r\n on:input\r\n on:change\r\n on:keydown={onKeyDown}\r\n>\r\n{#if visible || isFocused}\r\n
\r\n {#if currentMode === 'date'}\r\n \r\n {#if todayBtn || clearBtn}\r\n
\r\n {#if todayBtn}\r\n \r\n {/if}\r\n {#if clearBtn}\r\n \r\n {/if}\r\n
\r\n {/if}\r\n {:else}\r\n \r\n {/if}\r\n
\r\n{/if}\r\n\r\n\r\n","\n\n\n {@html elements}\n\n","var _a, _b;\r\nimport { writable } from \"svelte/store\";\r\nimport CrownIcon from \"./icons/crown-inline.svg\";\r\n// powered by https://stackoverflow.com/questions/13382516/getting-scroll-bar-width-using-javascript\r\nexport function getScrollbarWidth() {\r\n var _a;\r\n // Creating invisible container\r\n const outer = document.createElement('div');\r\n outer.style.visibility = 'hidden';\r\n outer.style.overflow = 'scroll'; // forcing scrollbar to appear\r\n outer.style.msOverflowStyle = 'scrollbar'; // needed for WinJS apps\r\n document.body.appendChild(outer);\r\n // Creating inner element and placing it in the container\r\n const inner = document.createElement('div');\r\n outer.appendChild(inner);\r\n // Calculating difference between container's full width and the child width\r\n const scrollbarWidth = (outer.offsetWidth - inner.offsetWidth);\r\n // Removing temporary elements from the DOM\r\n (_a = outer.parentNode) === null || _a === void 0 ? void 0 : _a.removeChild(outer);\r\n return scrollbarWidth;\r\n}\r\nexport const currentPackage = writable((_b = (_a = window.localStorage) === null || _a === void 0 ? void 0 : _a.getItem(\"currentPackage\")) !== null && _b !== void 0 ? _b : \"f838fafe-343e-414c-97d7-08db3f3501d9\");\r\ncurrentPackage.subscribe((currentPackage) => {\r\n var _a;\r\n (_a = window.localStorage) === null || _a === void 0 ? void 0 : _a.setItem(\"currentPackage\", currentPackage);\r\n});\r\nconst days = [\"\", \"Mo\", \"Di\", \"Mi\", \"Do\", \"Fr\", \"Sa\", \"So\"];\r\nexport function getDayLabel(id) {\r\n return days[id];\r\n}\r\nfunction getApiRequestHeaders(appSettings) {\r\n return new Headers(appSettings ? { \"X-AppSettings\": JSON.stringify(appSettings) } : {});\r\n}\r\nexport function getApiUrl() {\r\n return window.location.hostname === 'localhost' ? 'https://qrowns.com' : '';\r\n}\r\nexport function apiFetch(url, appSettings) {\r\n return fetch(`${getApiUrl()}${url}`, {\r\n headers: getApiRequestHeaders(appSettings),\r\n }).then(r => r.json());\r\n}\r\nexport function api(endpoint, path, query, appSettings) {\r\n const p = path ? ['', ...path].join('/') : '';\r\n const q = query ? '?' + Object.entries(query).map(e => e.join('=')).join('&') : '';\r\n return apiFetch(`/api/v2/${endpoint}${p}${q}`, appSettings);\r\n}\r\nlet categories = {};\r\nexport async function getCategories(appSettings) {\r\n var _a, _b;\r\n const pckg = (_a = appSettings === null || appSettings === void 0 ? void 0 : appSettings.Package) !== null && _a !== void 0 ? _a : \"none\";\r\n if (!((_b = categories[pckg]) !== null && _b !== void 0 ? _b : []).length) {\r\n categories[pckg] = await api(\"Categories\", undefined, { ExcludeEmpty: \"true\" }, appSettings);\r\n }\r\n return categories[pckg];\r\n}\r\nexport async function getNews({ url, query, withExperiences = false, appSettings }) {\r\n const r = await (url ? apiFetch(url, appSettings) : api(\"News\", undefined, query, appSettings));\r\n if (withExperiences) {\r\n r.list = await Promise.all(r.list.map(async (n) => {\r\n var _a;\r\n const experiences = (_a = (await apiFetch(n.experiencesUrl).then(r => r.list))) !== null && _a !== void 0 ? _a : [];\r\n return Object.assign(Object.assign({}, n), { experiences });\r\n }));\r\n }\r\n return {\r\n list: r.list,\r\n more: r.nextUrl ? () => getNews({ url: r.nextUrl, withExperiences }) : undefined\r\n };\r\n}\r\nexport async function getSingleNews(id) {\r\n var _a;\r\n const news = await api(\"News\", [id.toString()]);\r\n news.experiences = news.experiencesUrl ? (_a = (await apiFetch(news.experiencesUrl).then(r => r.list))) !== null && _a !== void 0 ? _a : [] : [];\r\n return news;\r\n}\r\nexport async function getExperiences({ url, query, appSettings }) {\r\n const r = await (url ? apiFetch(url, appSettings) : api(\"Experiences\", undefined, Object.assign({ \"IncludeFirstBinary\": \"true\" }, query), appSettings));\r\n return {\r\n list: r.list,\r\n more: r.nextUrl ? () => getExperiences({ url: r.nextUrl }) : undefined\r\n };\r\n}\r\nexport function getExperience(id) {\r\n return api(\"Experiences\", [id.toString()]);\r\n}\r\nexport async function getProducts() {\r\n return api(\"Products\", [], { \"IsManagedByExternalStore\": \"false\" });\r\n}\r\nlet packages;\r\nexport async function getPackages() {\r\n if (!packages) {\r\n packages = await api(\"Packages\", []);\r\n }\r\n return packages;\r\n}\r\nexport function kToCrown(s) {\r\n return s.replace(/\\[K\\]/g, `
\r\n ${CrownIcon}\r\n QRowns\r\n
`);\r\n}\r\nexport const categorySentences = [];\r\ncategorySentences[1] = { img: \"bg_category_SOCIAL.png\" };\r\ncategorySentences[3] = { img: \"bg_category_KULTUR.png\" };\r\ncategorySentences[4] = { img: \"bg_category_SPORT.png\" };\r\ncategorySentences[6] = { img: \"bg_category_WELLNESS.png\" };\r\ncategorySentences[9] = { img: \"bg_category_CASUAL.png\" };\r\ncategorySentences[10] = { img: \"bg_category_EXCITING.png\" };\r\nexport const showAppBanner = writable();\r\n","\r\n\r\n
\r\n {@html CrownIcon}\r\n QRowns\r\n
\r\n\r\n","\r\n\r\n
\r\n
\r\n {#if intro}\r\n {@html `${data.serviceType?.name} ${award}`}\r\n {:else}\r\n {data.title}\r\n {/if}\r\n
\r\n {#if intro || (data.bonusRequired ?? 0) > 1}\r\n

\r\n {#if titleOverride}\r\n {titleOverride}\r\n {:else if voucher}\r\n Gutschein\r\n {:else if !intro && data.discount?.name}\r\n {data.discount?.name}\r\n {:else}\r\n {data.title}\r\n {/if}\r\n

\r\n
\r\n {#if timeLeft}\r\n {timeLeft}\r\n {:else if !compact}\r\n {#if intro} \r\n {`${data.location?.street ?? \"\"} ${data.location?.postalCode ?? \"\"} ${data.location?.town ?? \"\"}`}\r\n {:else if (data.bonusRequired ?? 0) < 1}\r\n {#if (data.invoiceMin ?? 0) > 1}\r\n {`Ab ${(data.invoiceMin ?? 0).toLocaleString('de-DE', { style: 'currency', currency: 'EUR' }).replace(',00', '')} Rechnungssumme`}\r\n {:else}\r\n {@html [data.discount?.name, data.serviceDescription, price ? `Spare ${price}` : null].filter(Boolean).join(' | ')}\r\n {/if}\r\n {:else}\r\n {`FÜR ${data.bonusRequired}`} \r\n {/if}\r\n {/if}\r\n
\r\n {/if}\r\n
\r\n\r\n","\r\n\r\n","\r\n\r\n{#if data?.length}\r\n
\r\n

Weitere Erlebnisse

\r\n {#each data as item}\r\n \r\n \r\n \r\n {/each}\r\n
\r\n{/if}\r\n\r\n\r\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 &&\n typeof obj === 'object' &&\n 'constructor' in obj &&\n obj.constructor === Object);\n}\nfunction extend(target = {}, src = {}) {\n Object.keys(src).forEach((key) => {\n if (typeof target[key] === 'undefined')\n target[key] = src[key];\n else if (isObject(src[key]) &&\n isObject(target[key]) &&\n Object.keys(src[key]).length > 0) {\n extend(target[key], src[key]);\n }\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}\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 { extend, getDocument, getWindow, ssrDocument, ssrWindow };\n","/**\n * Dom7 4.0.4\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2022, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: January 11, 2022\n */\nimport { getWindow, getDocument } from 'ssr-window';\n\n/* eslint-disable no-proto */\nfunction makeReactive(obj) {\n const proto = obj.__proto__;\n Object.defineProperty(obj, '__proto__', {\n get() {\n return proto;\n },\n\n set(value) {\n proto.__proto__ = value;\n }\n\n });\n}\n\nclass Dom7 extends Array {\n constructor(items) {\n if (typeof items === 'number') {\n super(items);\n } else {\n super(...(items || []));\n makeReactive(this);\n }\n }\n\n}\n\nfunction arrayFlat(arr = []) {\n const res = [];\n arr.forEach(el => {\n if (Array.isArray(el)) {\n res.push(...arrayFlat(el));\n } else {\n res.push(el);\n }\n });\n return res;\n}\nfunction arrayFilter(arr, callback) {\n return Array.prototype.filter.call(arr, callback);\n}\nfunction arrayUnique(arr) {\n const uniqueArray = [];\n\n for (let i = 0; i < arr.length; i += 1) {\n if (uniqueArray.indexOf(arr[i]) === -1) uniqueArray.push(arr[i]);\n }\n\n return uniqueArray;\n}\nfunction toCamelCase(string) {\n return string.toLowerCase().replace(/-(.)/g, (match, group) => group.toUpperCase());\n}\n\n// eslint-disable-next-line\n\nfunction qsa(selector, context) {\n if (typeof selector !== 'string') {\n return [selector];\n }\n\n const a = [];\n const res = context.querySelectorAll(selector);\n\n for (let i = 0; i < res.length; i += 1) {\n a.push(res[i]);\n }\n\n return a;\n}\n\nfunction $(selector, context) {\n const window = getWindow();\n const document = getDocument();\n let arr = [];\n\n if (!context && selector instanceof Dom7) {\n return selector;\n }\n\n if (!selector) {\n return new Dom7(arr);\n }\n\n if (typeof selector === 'string') {\n const html = selector.trim();\n\n if (html.indexOf('<') >= 0 && html.indexOf('>') >= 0) {\n let toCreate = 'div';\n if (html.indexOf(' c.split(' ')));\n this.forEach(el => {\n el.classList.add(...classNames);\n });\n return this;\n}\n\nfunction removeClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n el.classList.remove(...classNames);\n });\n return this;\n}\n\nfunction toggleClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n this.forEach(el => {\n classNames.forEach(className => {\n el.classList.toggle(className);\n });\n });\n}\n\nfunction hasClass(...classes) {\n const classNames = arrayFlat(classes.map(c => c.split(' ')));\n return arrayFilter(this, el => {\n return classNames.filter(className => el.classList.contains(className)).length > 0;\n }).length > 0;\n}\n\nfunction attr(attrs, value) {\n if (arguments.length === 1 && typeof attrs === 'string') {\n // Get attr\n if (this[0]) return this[0].getAttribute(attrs);\n return undefined;\n } // Set attrs\n\n\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i].setAttribute(attrs, value);\n } else {\n // Object\n for (const attrName in attrs) {\n this[i][attrName] = attrs[attrName];\n this[i].setAttribute(attrName, attrs[attrName]);\n }\n }\n }\n\n return this;\n}\n\nfunction removeAttr(attr) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].removeAttribute(attr);\n }\n\n return this;\n}\n\nfunction prop(props, value) {\n if (arguments.length === 1 && typeof props === 'string') {\n // Get prop\n if (this[0]) return this[0][props];\n } else {\n // Set props\n for (let i = 0; i < this.length; i += 1) {\n if (arguments.length === 2) {\n // String\n this[i][props] = value;\n } else {\n // Object\n for (const propName in props) {\n this[i][propName] = props[propName];\n }\n }\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction data(key, value) {\n let el;\n\n if (typeof value === 'undefined') {\n el = this[0];\n if (!el) return undefined; // Get value\n\n if (el.dom7ElementDataStorage && key in el.dom7ElementDataStorage) {\n return el.dom7ElementDataStorage[key];\n }\n\n const dataKey = el.getAttribute(`data-${key}`);\n\n if (dataKey) {\n return dataKey;\n }\n\n return undefined;\n } // Set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n el = this[i];\n if (!el.dom7ElementDataStorage) el.dom7ElementDataStorage = {};\n el.dom7ElementDataStorage[key] = value;\n }\n\n return this;\n}\n\nfunction removeData(key) {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.dom7ElementDataStorage && el.dom7ElementDataStorage[key]) {\n el.dom7ElementDataStorage[key] = null;\n delete el.dom7ElementDataStorage[key];\n }\n }\n}\n\nfunction dataset() {\n const el = this[0];\n if (!el) return undefined;\n const dataset = {}; // eslint-disable-line\n\n if (el.dataset) {\n for (const dataKey in el.dataset) {\n dataset[dataKey] = el.dataset[dataKey];\n }\n } else {\n for (let i = 0; i < el.attributes.length; i += 1) {\n const attr = el.attributes[i];\n\n if (attr.name.indexOf('data-') >= 0) {\n dataset[toCamelCase(attr.name.split('data-')[1])] = attr.value;\n }\n }\n }\n\n for (const key in dataset) {\n if (dataset[key] === 'false') dataset[key] = false;else if (dataset[key] === 'true') dataset[key] = true;else if (parseFloat(dataset[key]) === dataset[key] * 1) dataset[key] *= 1;\n }\n\n return dataset;\n}\n\nfunction val(value) {\n if (typeof value === 'undefined') {\n // get value\n const el = this[0];\n if (!el) return undefined;\n\n if (el.multiple && el.nodeName.toLowerCase() === 'select') {\n const values = [];\n\n for (let i = 0; i < el.selectedOptions.length; i += 1) {\n values.push(el.selectedOptions[i].value);\n }\n\n return values;\n }\n\n return el.value;\n } // set value\n\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (Array.isArray(value) && el.multiple && el.nodeName.toLowerCase() === 'select') {\n for (let j = 0; j < el.options.length; j += 1) {\n el.options[j].selected = value.indexOf(el.options[j].value) >= 0;\n }\n } else {\n el.value = value;\n }\n }\n\n return this;\n}\n\nfunction value(value) {\n return this.val(value);\n}\n\nfunction transform(transform) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transform = transform;\n }\n\n return this;\n}\n\nfunction transition(duration) {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.transitionDuration = typeof duration !== 'string' ? `${duration}ms` : duration;\n }\n\n return this;\n}\n\nfunction on(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n\n function handleLiveEvent(e) {\n const target = e.target;\n if (!target) return;\n const eventData = e.target.dom7EventData || [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n if ($(target).is(targetSelector)) listener.apply(target, eventData);else {\n const parents = $(target).parents(); // eslint-disable-line\n\n for (let k = 0; k < parents.length; k += 1) {\n if ($(parents[k]).is(targetSelector)) listener.apply(parents[k], eventData);\n }\n }\n }\n\n function handleEvent(e) {\n const eventData = e && e.target ? e.target.dom7EventData || [] : [];\n\n if (eventData.indexOf(e) < 0) {\n eventData.unshift(e);\n }\n\n listener.apply(this, eventData);\n }\n\n const events = eventType.split(' ');\n let j;\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (!targetSelector) {\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7Listeners) el.dom7Listeners = {};\n if (!el.dom7Listeners[event]) el.dom7Listeners[event] = [];\n el.dom7Listeners[event].push({\n listener,\n proxyListener: handleEvent\n });\n el.addEventListener(event, handleEvent, capture);\n }\n } else {\n // Live events\n for (j = 0; j < events.length; j += 1) {\n const event = events[j];\n if (!el.dom7LiveListeners) el.dom7LiveListeners = {};\n if (!el.dom7LiveListeners[event]) el.dom7LiveListeners[event] = [];\n el.dom7LiveListeners[event].push({\n listener,\n proxyListener: handleLiveEvent\n });\n el.addEventListener(event, handleLiveEvent, capture);\n }\n }\n }\n\n return this;\n}\n\nfunction off(...args) {\n let [eventType, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventType, listener, capture] = args;\n targetSelector = undefined;\n }\n\n if (!capture) capture = false;\n const events = eventType.split(' ');\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n let handlers;\n\n if (!targetSelector && el.dom7Listeners) {\n handlers = el.dom7Listeners[event];\n } else if (targetSelector && el.dom7LiveListeners) {\n handlers = el.dom7LiveListeners[event];\n }\n\n if (handlers && handlers.length) {\n for (let k = handlers.length - 1; k >= 0; k -= 1) {\n const handler = handlers[k];\n\n if (listener && handler.listener === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (listener && handler.listener && handler.listener.dom7proxy && handler.listener.dom7proxy === listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n } else if (!listener) {\n el.removeEventListener(event, handler.proxyListener, capture);\n handlers.splice(k, 1);\n }\n }\n }\n }\n }\n\n return this;\n}\n\nfunction once(...args) {\n const dom = this;\n let [eventName, targetSelector, listener, capture] = args;\n\n if (typeof args[1] === 'function') {\n [eventName, listener, capture] = args;\n targetSelector = undefined;\n }\n\n function onceHandler(...eventArgs) {\n listener.apply(this, eventArgs);\n dom.off(eventName, targetSelector, onceHandler, capture);\n\n if (onceHandler.dom7proxy) {\n delete onceHandler.dom7proxy;\n }\n }\n\n onceHandler.dom7proxy = listener;\n return dom.on(eventName, targetSelector, onceHandler, capture);\n}\n\nfunction trigger(...args) {\n const window = getWindow();\n const events = args[0].split(' ');\n const eventData = args[1];\n\n for (let i = 0; i < events.length; i += 1) {\n const event = events[i];\n\n for (let j = 0; j < this.length; j += 1) {\n const el = this[j];\n\n if (window.CustomEvent) {\n const evt = new window.CustomEvent(event, {\n detail: eventData,\n bubbles: true,\n cancelable: true\n });\n el.dom7EventData = args.filter((data, dataIndex) => dataIndex > 0);\n el.dispatchEvent(evt);\n el.dom7EventData = [];\n delete el.dom7EventData;\n }\n }\n }\n\n return this;\n}\n\nfunction transitionEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('transitionend', fireCallBack);\n }\n\n if (callback) {\n dom.on('transitionend', fireCallBack);\n }\n\n return this;\n}\n\nfunction animationEnd(callback) {\n const dom = this;\n\n function fireCallBack(e) {\n if (e.target !== this) return;\n callback.call(this, e);\n dom.off('animationend', fireCallBack);\n }\n\n if (callback) {\n dom.on('animationend', fireCallBack);\n }\n\n return this;\n}\n\nfunction width() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerWidth;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('width'));\n }\n\n return null;\n}\n\nfunction outerWidth(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetWidth + parseFloat(styles.getPropertyValue('margin-right')) + parseFloat(styles.getPropertyValue('margin-left'));\n }\n\n return this[0].offsetWidth;\n }\n\n return null;\n}\n\nfunction height() {\n const window = getWindow();\n\n if (this[0] === window) {\n return window.innerHeight;\n }\n\n if (this.length > 0) {\n return parseFloat(this.css('height'));\n }\n\n return null;\n}\n\nfunction outerHeight(includeMargins) {\n if (this.length > 0) {\n if (includeMargins) {\n const styles = this.styles();\n return this[0].offsetHeight + parseFloat(styles.getPropertyValue('margin-top')) + parseFloat(styles.getPropertyValue('margin-bottom'));\n }\n\n return this[0].offsetHeight;\n }\n\n return null;\n}\n\nfunction offset() {\n if (this.length > 0) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\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 }\n\n return null;\n}\n\nfunction hide() {\n for (let i = 0; i < this.length; i += 1) {\n this[i].style.display = 'none';\n }\n\n return this;\n}\n\nfunction show() {\n const window = getWindow();\n\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.style.display === 'none') {\n el.style.display = '';\n }\n\n if (window.getComputedStyle(el, null).getPropertyValue('display') === 'none') {\n // Still not visible\n el.style.display = 'block';\n }\n }\n\n return this;\n}\n\nfunction styles() {\n const window = getWindow();\n if (this[0]) return window.getComputedStyle(this[0], null);\n return {};\n}\n\nfunction css(props, value) {\n const window = getWindow();\n let i;\n\n if (arguments.length === 1) {\n if (typeof props === 'string') {\n // .css('width')\n if (this[0]) return window.getComputedStyle(this[0], null).getPropertyValue(props);\n } else {\n // .css({ width: '100px' })\n for (i = 0; i < this.length; i += 1) {\n for (const prop in props) {\n this[i].style[prop] = props[prop];\n }\n }\n\n return this;\n }\n }\n\n if (arguments.length === 2 && typeof props === 'string') {\n // .css('width', '100px')\n for (i = 0; i < this.length; i += 1) {\n this[i].style[props] = value;\n }\n\n return this;\n }\n\n return this;\n}\n\nfunction each(callback) {\n if (!callback) return this;\n this.forEach((el, index) => {\n callback.apply(el, [el, index]);\n });\n return this;\n}\n\nfunction filter(callback) {\n const result = arrayFilter(this, callback);\n return $(result);\n}\n\nfunction html(html) {\n if (typeof html === 'undefined') {\n return this[0] ? this[0].innerHTML : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].innerHTML = html;\n }\n\n return this;\n}\n\nfunction text(text) {\n if (typeof text === 'undefined') {\n return this[0] ? this[0].textContent.trim() : null;\n }\n\n for (let i = 0; i < this.length; i += 1) {\n this[i].textContent = text;\n }\n\n return this;\n}\n\nfunction is(selector) {\n const window = getWindow();\n const document = getDocument();\n const el = this[0];\n let compareWith;\n let i;\n if (!el || typeof selector === 'undefined') return false;\n\n if (typeof selector === 'string') {\n if (el.matches) return el.matches(selector);\n if (el.webkitMatchesSelector) return el.webkitMatchesSelector(selector);\n if (el.msMatchesSelector) return el.msMatchesSelector(selector);\n compareWith = $(selector);\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n if (selector === document) {\n return el === document;\n }\n\n if (selector === window) {\n return el === window;\n }\n\n if (selector.nodeType || selector instanceof Dom7) {\n compareWith = selector.nodeType ? [selector] : selector;\n\n for (i = 0; i < compareWith.length; i += 1) {\n if (compareWith[i] === el) return true;\n }\n\n return false;\n }\n\n return false;\n}\n\nfunction index() {\n let child = this[0];\n let i;\n\n if (child) {\n i = 0; // eslint-disable-next-line\n\n while ((child = child.previousSibling) !== null) {\n if (child.nodeType === 1) i += 1;\n }\n\n return i;\n }\n\n return undefined;\n}\n\nfunction eq(index) {\n if (typeof index === 'undefined') return this;\n const length = this.length;\n\n if (index > length - 1) {\n return $([]);\n }\n\n if (index < 0) {\n const returnIndex = length + index;\n if (returnIndex < 0) return $([]);\n return $([this[returnIndex]]);\n }\n\n return $([this[index]]);\n}\n\nfunction append(...els) {\n let newChild;\n const document = getDocument();\n\n for (let k = 0; k < els.length; k += 1) {\n newChild = els[k];\n\n for (let i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n while (tempDiv.firstChild) {\n this[i].appendChild(tempDiv.firstChild);\n }\n } else if (newChild instanceof Dom7) {\n for (let j = 0; j < newChild.length; j += 1) {\n this[i].appendChild(newChild[j]);\n }\n } else {\n this[i].appendChild(newChild);\n }\n }\n }\n\n return this;\n}\n\nfunction appendTo(parent) {\n $(parent).append(this);\n return this;\n}\n\nfunction prepend(newChild) {\n const document = getDocument();\n let i;\n let j;\n\n for (i = 0; i < this.length; i += 1) {\n if (typeof newChild === 'string') {\n const tempDiv = document.createElement('div');\n tempDiv.innerHTML = newChild;\n\n for (j = tempDiv.childNodes.length - 1; j >= 0; j -= 1) {\n this[i].insertBefore(tempDiv.childNodes[j], this[i].childNodes[0]);\n }\n } else if (newChild instanceof Dom7) {\n for (j = 0; j < newChild.length; j += 1) {\n this[i].insertBefore(newChild[j], this[i].childNodes[0]);\n }\n } else {\n this[i].insertBefore(newChild, this[i].childNodes[0]);\n }\n }\n\n return this;\n}\n\nfunction prependTo(parent) {\n $(parent).prepend(this);\n return this;\n}\n\nfunction insertBefore(selector) {\n const before = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (before.length === 1) {\n before[0].parentNode.insertBefore(this[i], before[0]);\n } else if (before.length > 1) {\n for (let j = 0; j < before.length; j += 1) {\n before[j].parentNode.insertBefore(this[i].cloneNode(true), before[j]);\n }\n }\n }\n}\n\nfunction insertAfter(selector) {\n const after = $(selector);\n\n for (let i = 0; i < this.length; i += 1) {\n if (after.length === 1) {\n after[0].parentNode.insertBefore(this[i], after[0].nextSibling);\n } else if (after.length > 1) {\n for (let j = 0; j < after.length; j += 1) {\n after[j].parentNode.insertBefore(this[i].cloneNode(true), after[j].nextSibling);\n }\n }\n }\n}\n\nfunction next(selector) {\n if (this.length > 0) {\n if (selector) {\n if (this[0].nextElementSibling && $(this[0].nextElementSibling).is(selector)) {\n return $([this[0].nextElementSibling]);\n }\n\n return $([]);\n }\n\n if (this[0].nextElementSibling) return $([this[0].nextElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction nextAll(selector) {\n const nextEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.nextElementSibling) {\n const next = el.nextElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(next).is(selector)) nextEls.push(next);\n } else nextEls.push(next);\n\n el = next;\n }\n\n return $(nextEls);\n}\n\nfunction prev(selector) {\n if (this.length > 0) {\n const el = this[0];\n\n if (selector) {\n if (el.previousElementSibling && $(el.previousElementSibling).is(selector)) {\n return $([el.previousElementSibling]);\n }\n\n return $([]);\n }\n\n if (el.previousElementSibling) return $([el.previousElementSibling]);\n return $([]);\n }\n\n return $([]);\n}\n\nfunction prevAll(selector) {\n const prevEls = [];\n let el = this[0];\n if (!el) return $([]);\n\n while (el.previousElementSibling) {\n const prev = el.previousElementSibling; // eslint-disable-line\n\n if (selector) {\n if ($(prev).is(selector)) prevEls.push(prev);\n } else prevEls.push(prev);\n\n el = prev;\n }\n\n return $(prevEls);\n}\n\nfunction siblings(selector) {\n return this.nextAll(selector).add(this.prevAll(selector));\n}\n\nfunction parent(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode !== null) {\n if (selector) {\n if ($(this[i].parentNode).is(selector)) parents.push(this[i].parentNode);\n } else {\n parents.push(this[i].parentNode);\n }\n }\n }\n\n return $(parents);\n}\n\nfunction parents(selector) {\n const parents = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n let parent = this[i].parentNode; // eslint-disable-line\n\n while (parent) {\n if (selector) {\n if ($(parent).is(selector)) parents.push(parent);\n } else {\n parents.push(parent);\n }\n\n parent = parent.parentNode;\n }\n }\n\n return $(parents);\n}\n\nfunction closest(selector) {\n let closest = this; // eslint-disable-line\n\n if (typeof selector === 'undefined') {\n return $([]);\n }\n\n if (!closest.is(selector)) {\n closest = closest.parents(selector).eq(0);\n }\n\n return closest;\n}\n\nfunction find(selector) {\n const foundElements = [];\n\n for (let i = 0; i < this.length; i += 1) {\n const found = this[i].querySelectorAll(selector);\n\n for (let j = 0; j < found.length; j += 1) {\n foundElements.push(found[j]);\n }\n }\n\n return $(foundElements);\n}\n\nfunction children(selector) {\n const children = []; // eslint-disable-line\n\n for (let i = 0; i < this.length; i += 1) {\n const childNodes = this[i].children;\n\n for (let j = 0; j < childNodes.length; j += 1) {\n if (!selector || $(childNodes[j]).is(selector)) {\n children.push(childNodes[j]);\n }\n }\n }\n\n return $(children);\n}\n\nfunction remove() {\n for (let i = 0; i < this.length; i += 1) {\n if (this[i].parentNode) this[i].parentNode.removeChild(this[i]);\n }\n\n return this;\n}\n\nfunction detach() {\n return this.remove();\n}\n\nfunction add(...els) {\n const dom = this;\n let i;\n let j;\n\n for (i = 0; i < els.length; i += 1) {\n const toAdd = $(els[i]);\n\n for (j = 0; j < toAdd.length; j += 1) {\n dom.push(toAdd[j]);\n }\n }\n\n return dom;\n}\n\nfunction empty() {\n for (let i = 0; i < this.length; i += 1) {\n const el = this[i];\n\n if (el.nodeType === 1) {\n for (let j = 0; j < el.childNodes.length; j += 1) {\n if (el.childNodes[j].parentNode) {\n el.childNodes[j].parentNode.removeChild(el.childNodes[j]);\n }\n }\n\n el.textContent = '';\n }\n }\n\n return this;\n}\n\n// eslint-disable-next-line\n\nfunction scrollTo(...args) {\n const window = getWindow();\n let [left, top, duration, easing, callback] = args;\n\n if (args.length === 4 && typeof easing === 'function') {\n callback = easing;\n [left, top, duration, callback, easing] = args;\n }\n\n if (typeof easing === 'undefined') easing = 'swing';\n return this.each(function animate() {\n const el = this;\n let currentTop;\n let currentLeft;\n let maxTop;\n let maxLeft;\n let newTop;\n let newLeft;\n let scrollTop; // eslint-disable-line\n\n let scrollLeft; // eslint-disable-line\n\n let animateTop = top > 0 || top === 0;\n let animateLeft = left > 0 || left === 0;\n\n if (typeof easing === 'undefined') {\n easing = 'swing';\n }\n\n if (animateTop) {\n currentTop = el.scrollTop;\n\n if (!duration) {\n el.scrollTop = top;\n }\n }\n\n if (animateLeft) {\n currentLeft = el.scrollLeft;\n\n if (!duration) {\n el.scrollLeft = left;\n }\n }\n\n if (!duration) return;\n\n if (animateTop) {\n maxTop = el.scrollHeight - el.offsetHeight;\n newTop = Math.max(Math.min(top, maxTop), 0);\n }\n\n if (animateLeft) {\n maxLeft = el.scrollWidth - el.offsetWidth;\n newLeft = Math.max(Math.min(left, maxLeft), 0);\n }\n\n let startTime = null;\n if (animateTop && newTop === currentTop) animateTop = false;\n if (animateLeft && newLeft === currentLeft) animateLeft = false;\n\n function render(time = new Date().getTime()) {\n if (startTime === null) {\n startTime = time;\n }\n\n const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n const easeProgress = easing === 'linear' ? progress : 0.5 - Math.cos(progress * Math.PI) / 2;\n let done;\n if (animateTop) scrollTop = currentTop + easeProgress * (newTop - currentTop);\n if (animateLeft) scrollLeft = currentLeft + easeProgress * (newLeft - currentLeft);\n\n if (animateTop && newTop > currentTop && scrollTop >= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateTop && newTop < currentTop && scrollTop <= newTop) {\n el.scrollTop = newTop;\n done = true;\n }\n\n if (animateLeft && newLeft > currentLeft && scrollLeft >= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (animateLeft && newLeft < currentLeft && scrollLeft <= newLeft) {\n el.scrollLeft = newLeft;\n done = true;\n }\n\n if (done) {\n if (callback) callback();\n return;\n }\n\n if (animateTop) el.scrollTop = scrollTop;\n if (animateLeft) el.scrollLeft = scrollLeft;\n window.requestAnimationFrame(render);\n }\n\n window.requestAnimationFrame(render);\n });\n} // scrollTop(top, duration, easing, callback) {\n\n\nfunction scrollTop(...args) {\n let [top, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [top, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof top === 'undefined') {\n if (dom.length > 0) return dom[0].scrollTop;\n return null;\n }\n\n return dom.scrollTo(undefined, top, duration, easing, callback);\n}\n\nfunction scrollLeft(...args) {\n let [left, duration, easing, callback] = args;\n\n if (args.length === 3 && typeof easing === 'function') {\n [left, duration, callback, easing] = args;\n }\n\n const dom = this;\n\n if (typeof left === 'undefined') {\n if (dom.length > 0) return dom[0].scrollLeft;\n return null;\n }\n\n return dom.scrollTo(left, undefined, duration, easing, callback);\n}\n\n// eslint-disable-next-line\n\nfunction animate(initialProps, initialParams) {\n const window = getWindow();\n const els = this;\n const a = {\n props: Object.assign({}, initialProps),\n params: Object.assign({\n duration: 300,\n easing: 'swing' // or 'linear'\n\n /* Callbacks\n begin(elements)\n complete(elements)\n progress(elements, complete, remaining, start, tweenValue)\n */\n\n }, initialParams),\n elements: els,\n animating: false,\n que: [],\n\n easingProgress(easing, progress) {\n if (easing === 'swing') {\n return 0.5 - Math.cos(progress * Math.PI) / 2;\n }\n\n if (typeof easing === 'function') {\n return easing(progress);\n }\n\n return progress;\n },\n\n stop() {\n if (a.frameId) {\n window.cancelAnimationFrame(a.frameId);\n }\n\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n a.que = [];\n },\n\n done(complete) {\n a.animating = false;\n a.elements.each(el => {\n const element = el;\n delete element.dom7AnimateInstance;\n });\n if (complete) complete(els);\n\n if (a.que.length > 0) {\n const que = a.que.shift();\n a.animate(que[0], que[1]);\n }\n },\n\n animate(props, params) {\n if (a.animating) {\n a.que.push([props, params]);\n return a;\n }\n\n const elements = []; // Define & Cache Initials & Units\n\n a.elements.each((el, index) => {\n let initialFullValue;\n let initialValue;\n let unit;\n let finalValue;\n let finalFullValue;\n if (!el.dom7AnimateInstance) a.elements[index].dom7AnimateInstance = a;\n elements[index] = {\n container: el\n };\n Object.keys(props).forEach(prop => {\n initialFullValue = window.getComputedStyle(el, null).getPropertyValue(prop).replace(',', '.');\n initialValue = parseFloat(initialFullValue);\n unit = initialFullValue.replace(initialValue, '');\n finalValue = parseFloat(props[prop]);\n finalFullValue = props[prop] + unit;\n elements[index][prop] = {\n initialFullValue,\n initialValue,\n unit,\n finalValue,\n finalFullValue,\n currentValue: initialValue\n };\n });\n });\n let startTime = null;\n let time;\n let elementsDone = 0;\n let propsDone = 0;\n let done;\n let began = false;\n a.animating = true;\n\n function render() {\n time = new Date().getTime();\n let progress;\n let easeProgress; // let el;\n\n if (!began) {\n began = true;\n if (params.begin) params.begin(els);\n }\n\n if (startTime === null) {\n startTime = time;\n }\n\n if (params.progress) {\n // eslint-disable-next-line\n params.progress(els, Math.max(Math.min((time - startTime) / params.duration, 1), 0), startTime + params.duration - time < 0 ? 0 : startTime + params.duration - time, startTime);\n }\n\n elements.forEach(element => {\n const el = element;\n if (done || el.done) return;\n Object.keys(props).forEach(prop => {\n if (done || el.done) return;\n progress = Math.max(Math.min((time - startTime) / params.duration, 1), 0);\n easeProgress = a.easingProgress(params.easing, progress);\n const {\n initialValue,\n finalValue,\n unit\n } = el[prop];\n el[prop].currentValue = initialValue + easeProgress * (finalValue - initialValue);\n const currentValue = el[prop].currentValue;\n\n if (finalValue > initialValue && currentValue >= finalValue || finalValue < initialValue && currentValue <= finalValue) {\n el.container.style[prop] = finalValue + unit;\n propsDone += 1;\n\n if (propsDone === Object.keys(props).length) {\n el.done = true;\n elementsDone += 1;\n }\n\n if (elementsDone === elements.length) {\n done = true;\n }\n }\n\n if (done) {\n a.done(params.complete);\n return;\n }\n\n el.container.style[prop] = currentValue + unit;\n });\n });\n if (done) return; // Then call\n\n a.frameId = window.requestAnimationFrame(render);\n }\n\n a.frameId = window.requestAnimationFrame(render);\n return a;\n }\n\n };\n\n if (a.elements.length === 0) {\n return els;\n }\n\n let animateInstance;\n\n for (let i = 0; i < a.elements.length; i += 1) {\n if (a.elements[i].dom7AnimateInstance) {\n animateInstance = a.elements[i].dom7AnimateInstance;\n } else a.elements[i].dom7AnimateInstance = a;\n }\n\n if (!animateInstance) {\n animateInstance = a;\n }\n\n if (initialProps === 'stop') {\n animateInstance.stop();\n } else {\n animateInstance.animate(a.props, a.params);\n }\n\n return els;\n}\n\nfunction stop() {\n const els = this;\n\n for (let i = 0; i < els.length; i += 1) {\n if (els[i].dom7AnimateInstance) {\n els[i].dom7AnimateInstance.stop();\n }\n }\n}\n\nconst noTrigger = 'resize scroll'.split(' ');\n\nfunction shortcut(name) {\n function eventHandler(...args) {\n if (typeof args[0] === 'undefined') {\n for (let i = 0; i < this.length; i += 1) {\n if (noTrigger.indexOf(name) < 0) {\n if (name in this[i]) this[i][name]();else {\n $(this[i]).trigger(name);\n }\n }\n }\n\n return this;\n }\n\n return this.on(name, ...args);\n }\n\n return eventHandler;\n}\n\nconst click = shortcut('click');\nconst blur = shortcut('blur');\nconst focus = shortcut('focus');\nconst focusin = shortcut('focusin');\nconst focusout = shortcut('focusout');\nconst keyup = shortcut('keyup');\nconst keydown = shortcut('keydown');\nconst keypress = shortcut('keypress');\nconst submit = shortcut('submit');\nconst change = shortcut('change');\nconst mousedown = shortcut('mousedown');\nconst mousemove = shortcut('mousemove');\nconst mouseup = shortcut('mouseup');\nconst mouseenter = shortcut('mouseenter');\nconst mouseleave = shortcut('mouseleave');\nconst mouseout = shortcut('mouseout');\nconst mouseover = shortcut('mouseover');\nconst touchstart = shortcut('touchstart');\nconst touchend = shortcut('touchend');\nconst touchmove = shortcut('touchmove');\nconst resize = shortcut('resize');\nconst scroll = shortcut('scroll');\n\nexport default $;\nexport { $, add, addClass, animate, animationEnd, append, appendTo, attr, blur, change, children, click, closest, css, data, dataset, detach, each, empty, eq, filter, find, focus, focusin, focusout, hasClass, height, hide, html, index, insertAfter, insertBefore, is, keydown, keypress, keyup, mousedown, mouseenter, mouseleave, mousemove, mouseout, mouseover, mouseup, next, nextAll, off, offset, on, once, outerHeight, outerWidth, parent, parents, prepend, prependTo, prev, prevAll, prop, remove, removeAttr, removeClass, removeData, resize, scroll, scrollLeft, scrollTo, scrollTop, show, siblings, stop, styles, submit, text, toggleClass, touchend, touchmove, touchstart, transform, transition, transitionEnd, trigger, val, value, width };\n","import { $, addClass, removeClass, hasClass, toggleClass, attr, removeAttr, transform, transition, on, off, trigger, transitionEnd, outerWidth, outerHeight, styles, offset, css, each, html, text, is, index, eq, append, prepend, next, nextAll, prev, prevAll, parent, parents, closest, find, children, filter, remove } from 'dom7';\nconst Methods = {\n addClass,\n removeClass,\n hasClass,\n toggleClass,\n attr,\n removeAttr,\n transform,\n transition,\n on,\n off,\n trigger,\n transitionEnd,\n outerWidth,\n outerHeight,\n styles,\n offset,\n css,\n each,\n html,\n text,\n is,\n index,\n eq,\n append,\n prepend,\n next,\n nextAll,\n prev,\n prevAll,\n parent,\n parents,\n closest,\n find,\n children,\n filter,\n remove\n};\nObject.keys(Methods).forEach(methodName => {\n Object.defineProperty($.fn, methodName, {\n value: Methods[methodName],\n writable: true\n });\n});\nexport default $;","import { getWindow } from 'ssr-window';\n\nfunction deleteProps(obj) {\n const object = obj;\n Object.keys(object).forEach(key => {\n try {\n object[key] = null;\n } catch (e) {// no getter for object\n }\n\n try {\n delete object[key];\n } catch (e) {// something got wrong\n }\n });\n}\n\nfunction nextTick(callback, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n\n return setTimeout(callback, delay);\n}\n\nfunction now() {\n return Date.now();\n}\n\nfunction getComputedStyle(el) {\n const window = getWindow();\n let style;\n\n if (window.getComputedStyle) {\n style = window.getComputedStyle(el, null);\n }\n\n if (!style && el.currentStyle) {\n style = el.currentStyle;\n }\n\n if (!style) {\n style = el.style;\n }\n\n return style;\n}\n\nfunction getTranslate(el, axis) {\n if (axis === void 0) {\n axis = 'x';\n }\n\n const window = getWindow();\n let matrix;\n let curTransform;\n let transformMatrix;\n const curStyle = getComputedStyle(el, null);\n\n if (window.WebKitCSSMatrix) {\n curTransform = curStyle.transform || curStyle.webkitTransform;\n\n if (curTransform.split(',').length > 6) {\n curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n } // Some old versions of Webkit choke when 'none' is passed; pass\n // empty string instead in this case\n\n\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\n if (axis === 'x') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers\n else curTransform = parseFloat(matrix[4]);\n }\n\n if (axis === 'y') {\n // Latest Chrome and webkits Fix\n if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix\n else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers\n else curTransform = parseFloat(matrix[5]);\n }\n\n return curTransform || 0;\n}\n\nfunction isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\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\n return node && (node.nodeType === 1 || node.nodeType === 11);\n}\n\nfunction extend() {\n const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n\n for (let i = 1; i < arguments.length; i += 1) {\n const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n\n if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n\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\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\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\n return to;\n}\n\nfunction setCSSProperty(el, varName, varValue) {\n el.style.setProperty(varName, varValue);\n}\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\n const isOutOfBound = (current, target) => {\n return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n };\n\n const animate = () => {\n time = new Date().getTime();\n\n if (startTime === null) {\n startTime = time;\n }\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\n if (isOutOfBound(currentPosition, targetPosition)) {\n currentPosition = targetPosition;\n }\n\n swiper.wrapperEl.scrollTo({\n [side]: currentPosition\n });\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\n swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n };\n\n animate();\n}\n\nexport { animateCSSModeScroll, deleteProps, nextTick, now, getTranslate, isObject, extend, getComputedStyle, setCSSProperty };","import { getWindow, getDocument } from 'ssr-window';\nlet support;\n\nfunction calcSupport() {\n const window = getWindow();\n const document = getDocument();\n return {\n smoothScroll: document.documentElement && 'scrollBehavior' in document.documentElement.style,\n touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch),\n passiveListener: function checkPassiveListener() {\n let supportsPassive = false;\n\n try {\n const opts = Object.defineProperty({}, 'passive', {\n // eslint-disable-next-line\n get() {\n supportsPassive = true;\n }\n\n });\n window.addEventListener('testPassiveListener', null, opts);\n } catch (e) {// No support\n }\n\n return supportsPassive;\n }(),\n gestures: function checkGestures() {\n return 'ongesturestart' in window;\n }()\n };\n}\n\nfunction getSupport() {\n if (!support) {\n support = calcSupport();\n }\n\n return support;\n}\n\nexport { getSupport };","import { getWindow } from 'ssr-window';\nimport { getSupport } from './get-support.js';\nlet deviceCached;\n\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\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'; // iPadOs 13 fix\n\n const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n\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 } // Android\n\n\n if (android && !windows) {\n device.os = 'android';\n device.android = true;\n }\n\n if (ipad || iphone || ipod) {\n device.os = 'ios';\n device.ios = true;\n } // Export object\n\n\n return device;\n}\n\nfunction getDevice(overrides) {\n if (overrides === void 0) {\n overrides = {};\n }\n\n if (!deviceCached) {\n deviceCached = calcDevice(overrides);\n }\n\n return deviceCached;\n}\n\nexport { getDevice };","import { getWindow } from 'ssr-window';\nlet browser;\n\nfunction calcBrowser() {\n const window = getWindow();\n\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\n return {\n isSafari: isSafari(),\n isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n };\n}\n\nfunction getBrowser() {\n if (!browser) {\n browser = calcBrowser();\n }\n\n return browser;\n}\n\nexport { getBrowser };","/* eslint-disable no-underscore-dangle */\nexport default {\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\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\n function onceHandler() {\n self.off(events, onceHandler);\n\n if (onceHandler.__emitterProxy) {\n delete onceHandler.__emitterProxy;\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n handler.apply(self, args);\n }\n\n onceHandler.__emitterProxy = handler;\n return self.on(events, onceHandler, priority);\n },\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\n if (self.eventsAnyListeners.indexOf(handler) < 0) {\n self.eventsAnyListeners[method](handler);\n }\n\n return self;\n },\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\n if (index >= 0) {\n self.eventsAnyListeners.splice(index, 1);\n }\n\n return self;\n },\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\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\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\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\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\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};","import updateSize from './updateSize.js';\nimport updateSlides from './updateSlides.js';\nimport updateAutoHeight from './updateAutoHeight.js';\nimport updateSlidesOffset from './updateSlidesOffset.js';\nimport updateSlidesProgress from './updateSlidesProgress.js';\nimport updateProgress from './updateProgress.js';\nimport updateSlidesClasses from './updateSlidesClasses.js';\nimport updateActiveIndex from './updateActiveIndex.js';\nimport updateClickedSlide from './updateClickedSlide.js';\nexport default {\n updateSize,\n updateSlides,\n updateAutoHeight,\n updateSlidesOffset,\n updateSlidesProgress,\n updateProgress,\n updateSlidesClasses,\n updateActiveIndex,\n updateClickedSlide\n};","export default function updateSize() {\n const swiper = this;\n let width;\n let height;\n const $el = swiper.$el;\n\n if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n width = swiper.params.width;\n } else {\n width = $el[0].clientWidth;\n }\n\n if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n height = swiper.params.height;\n } else {\n height = $el[0].clientHeight;\n }\n\n if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n return;\n } // Subtract paddings\n\n\n width = width - parseInt($el.css('padding-left') || 0, 10) - parseInt($el.css('padding-right') || 0, 10);\n height = height - parseInt($el.css('padding-top') || 0, 10) - parseInt($el.css('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}","import { setCSSProperty } from '../../shared/utils.js';\nexport default function updateSlides() {\n const swiper = this;\n\n function getDirectionLabel(property) {\n if (swiper.isHorizontal()) {\n return property;\n } // prettier-ignore\n\n\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\n function getDirectionPropertyValue(node, label) {\n return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n }\n\n const params = swiper.params;\n const {\n $wrapperEl,\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 = $wrapperEl.children(`.${swiper.params.slideClass}`);\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\n if (typeof offsetBefore === 'function') {\n offsetBefore = params.slidesOffsetBefore.call(swiper);\n }\n\n let offsetAfter = params.slidesOffsetAfter;\n\n if (typeof offsetAfter === 'function') {\n offsetAfter = params.slidesOffsetAfter.call(swiper);\n }\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\n if (typeof swiperSize === 'undefined') {\n return;\n }\n\n if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n }\n\n swiper.virtualSize = -spaceBetween; // reset margins\n\n if (rtl) slides.css({\n marginLeft: '',\n marginBottom: '',\n marginTop: ''\n });else slides.css({\n marginRight: '',\n marginBottom: '',\n marginTop: ''\n }); // reset cssMode offsets\n\n if (params.centeredSlides && params.cssMode) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', '');\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-after', '');\n }\n\n const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n\n if (gridEnabled) {\n swiper.grid.initSlides(slidesLength);\n } // Calc slides\n\n\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\n for (let i = 0; i < slidesLength; i += 1) {\n slideSize = 0;\n const slide = slides.eq(i);\n\n if (gridEnabled) {\n swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n }\n\n if (slide.css('display') === 'none') continue; // eslint-disable-line\n\n if (params.slidesPerView === 'auto') {\n if (shouldResetSlideSize) {\n slides[i].style[getDirectionLabel('width')] = ``;\n }\n\n const slideStyles = getComputedStyle(slide[0]);\n const currentTransform = slide[0].style.transform;\n const currentWebKitTransform = slide[0].style.webkitTransform;\n\n if (currentTransform) {\n slide[0].style.transform = 'none';\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = 'none';\n }\n\n if (params.roundLengths) {\n slideSize = swiper.isHorizontal() ? slide.outerWidth(true) : slide.outerHeight(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\n if (boxSizing && boxSizing === 'border-box') {\n slideSize = width + marginLeft + marginRight;\n } else {\n const {\n clientWidth,\n offsetWidth\n } = slide[0];\n slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n }\n }\n\n if (currentTransform) {\n slide[0].style.transform = currentTransform;\n }\n\n if (currentWebKitTransform) {\n slide[0].style.webkitTransform = currentWebKitTransform;\n }\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\n if (slides[i]) {\n slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n }\n }\n\n if (slides[i]) {\n slides[i].swiperSlideSize = slideSize;\n }\n\n slidesSizesGrid.push(slideSize);\n\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\n swiper.virtualSize += slideSize + spaceBetween;\n prevSlideSize = slideSize;\n index += 1;\n }\n\n swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n\n if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n $wrapperEl.css({\n width: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (params.setWrapperSize) {\n $wrapperEl.css({\n [getDirectionLabel('width')]: `${swiper.virtualSize + params.spaceBetween}px`\n });\n }\n\n if (gridEnabled) {\n swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n } // Remove last grid elements depending on width\n\n\n if (!params.centeredSlides) {\n const newSlidesGrid = [];\n\n for (let i = 0; i < snapGrid.length; i += 1) {\n let slidesGridItem = snapGrid[i];\n if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n\n if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n newSlidesGrid.push(slidesGridItem);\n }\n }\n\n snapGrid = newSlidesGrid;\n\n if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n snapGrid.push(swiper.virtualSize - swiperSize);\n }\n }\n\n if (snapGrid.length === 0) snapGrid = [0];\n\n if (params.spaceBetween !== 0) {\n const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n slides.filter((_, slideIndex) => {\n if (!params.cssMode) return true;\n\n if (slideIndex === slides.length - 1) {\n return false;\n }\n\n return true;\n }).css({\n [key]: `${spaceBetween}px`\n });\n }\n\n if (params.centeredSlides && params.centeredSlidesBounds) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n const maxSnap = allSlidesSize - swiperSize;\n snapGrid = snapGrid.map(snap => {\n if (snap < 0) return -offsetBefore;\n if (snap > maxSnap) return maxSnap + offsetAfter;\n return snap;\n });\n }\n\n if (params.centerInsufficientSlides) {\n let allSlidesSize = 0;\n slidesSizesGrid.forEach(slideSizeValue => {\n allSlidesSize += slideSizeValue + (params.spaceBetween ? params.spaceBetween : 0);\n });\n allSlidesSize -= params.spaceBetween;\n\n if (allSlidesSize < swiperSize) {\n const allSlidesOffset = (swiperSize - allSlidesSize) / 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\n Object.assign(swiper, {\n slides,\n snapGrid,\n slidesGrid,\n slidesSizesGrid\n });\n\n if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n setCSSProperty(swiper.wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n setCSSProperty(swiper.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\n if (slidesLength !== previousSlidesLength) {\n swiper.emit('slidesLengthChange');\n }\n\n if (snapGrid.length !== previousSnapGridLength) {\n if (swiper.params.watchOverflow) swiper.checkOverflow();\n swiper.emit('snapGridLengthChange');\n }\n\n if (slidesGrid.length !== previousSlidesGridLength) {\n swiper.emit('slidesGridLengthChange');\n }\n\n if (params.watchSlidesProgress) {\n swiper.updateSlidesOffset();\n }\n\n if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n const hasClassBackfaceClassAdded = swiper.$el.hasClass(backFaceHiddenClass);\n\n if (slidesLength <= params.maxBackfaceHiddenSlides) {\n if (!hasClassBackfaceClassAdded) swiper.$el.addClass(backFaceHiddenClass);\n } else if (hasClassBackfaceClassAdded) {\n swiper.$el.removeClass(backFaceHiddenClass);\n }\n }\n}","import $ from '../../shared/dom.js';\nexport default function 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\n if (typeof speed === 'number') {\n swiper.setTransition(speed);\n } else if (speed === true) {\n swiper.setTransition(swiper.params.speed);\n }\n\n const getSlideByIndex = index => {\n if (isVirtual) {\n return swiper.slides.filter(el => parseInt(el.getAttribute('data-swiper-slide-index'), 10) === index)[0];\n }\n\n return swiper.slides.eq(index)[0];\n }; // Find slides currently in view\n\n\n if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n if (swiper.params.centeredSlides) {\n (swiper.visibleSlides || $([])).each(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 } // Find new height from highest slide in view\n\n\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 } // Update Height\n\n\n if (newHeight || newHeight === 0) swiper.$wrapperEl.css('height', `${newHeight}px`);\n}","export default function updateSlidesOffset() {\n const swiper = this;\n const slides = swiper.slides;\n\n for (let i = 0; i < slides.length; i += 1) {\n slides[i].swiperSlideOffset = swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop;\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateSlidesProgress(translate) {\n if (translate === void 0) {\n translate = this && this.translate || 0;\n }\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; // Visible Slides\n\n slides.removeClass(params.slideVisibleClass);\n swiper.visibleSlidesIndexes = [];\n swiper.visibleSlides = [];\n\n for (let i = 0; i < slides.length; i += 1) {\n const slide = slides[i];\n let slideOffset = slide.swiperSlideOffset;\n\n if (params.cssMode && params.centeredSlides) {\n slideOffset -= slides[0].swiperSlideOffset;\n }\n\n const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + params.spaceBetween);\n const slideBefore = -(offsetCenter - slideOffset);\n const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n\n if (isVisible) {\n swiper.visibleSlides.push(slide);\n swiper.visibleSlidesIndexes.push(i);\n slides.eq(i).addClass(params.slideVisibleClass);\n }\n\n slide.progress = rtl ? -slideProgress : slideProgress;\n slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n }\n\n swiper.visibleSlides = $(swiper.visibleSlides);\n}","export default function updateProgress(translate) {\n const swiper = this;\n\n if (typeof translate === 'undefined') {\n const multiplier = swiper.rtlTranslate ? -1 : 1; // eslint-disable-next-line\n\n translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n }\n\n const params = swiper.params;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n let {\n progress,\n isBeginning,\n isEnd\n } = swiper;\n const wasBeginning = isBeginning;\n const wasEnd = isEnd;\n\n if (translatesDiff === 0) {\n progress = 0;\n isBeginning = true;\n isEnd = true;\n } else {\n progress = (translate - swiper.minTranslate()) / translatesDiff;\n isBeginning = progress <= 0;\n isEnd = progress >= 1;\n }\n\n Object.assign(swiper, {\n progress,\n isBeginning,\n isEnd\n });\n if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n\n if (isBeginning && !wasBeginning) {\n swiper.emit('reachBeginning toEdge');\n }\n\n if (isEnd && !wasEnd) {\n swiper.emit('reachEnd toEdge');\n }\n\n if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n swiper.emit('fromEdge');\n }\n\n swiper.emit('progress', progress);\n}","export default function updateSlidesClasses() {\n const swiper = this;\n const {\n slides,\n params,\n $wrapperEl,\n activeIndex,\n realIndex\n } = swiper;\n const isVirtual = swiper.virtual && params.virtual.enabled;\n slides.removeClass(`${params.slideActiveClass} ${params.slideNextClass} ${params.slidePrevClass} ${params.slideDuplicateActiveClass} ${params.slideDuplicateNextClass} ${params.slideDuplicatePrevClass}`);\n let activeSlide;\n\n if (isVirtual) {\n activeSlide = swiper.$wrapperEl.find(`.${params.slideClass}[data-swiper-slide-index=\"${activeIndex}\"]`);\n } else {\n activeSlide = slides.eq(activeIndex);\n } // Active classes\n\n\n activeSlide.addClass(params.slideActiveClass);\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (activeSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${realIndex}\"]`).addClass(params.slideDuplicateActiveClass);\n }\n } // Next Slide\n\n\n let nextSlide = activeSlide.nextAll(`.${params.slideClass}`).eq(0).addClass(params.slideNextClass);\n\n if (params.loop && nextSlide.length === 0) {\n nextSlide = slides.eq(0);\n nextSlide.addClass(params.slideNextClass);\n } // Prev Slide\n\n\n let prevSlide = activeSlide.prevAll(`.${params.slideClass}`).eq(0).addClass(params.slidePrevClass);\n\n if (params.loop && prevSlide.length === 0) {\n prevSlide = slides.eq(-1);\n prevSlide.addClass(params.slidePrevClass);\n }\n\n if (params.loop) {\n // Duplicate to all looped slides\n if (nextSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${nextSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicateNextClass);\n }\n\n if (prevSlide.hasClass(params.slideDuplicateClass)) {\n $wrapperEl.children(`.${params.slideClass}:not(.${params.slideDuplicateClass})[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n } else {\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass}[data-swiper-slide-index=\"${prevSlide.attr('data-swiper-slide-index')}\"]`).addClass(params.slideDuplicatePrevClass);\n }\n }\n\n swiper.emitSlidesClasses();\n}","export default function updateActiveIndex(newActiveIndex) {\n const swiper = this;\n const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n const {\n slidesGrid,\n snapGrid,\n params,\n activeIndex: previousIndex,\n realIndex: previousRealIndex,\n snapIndex: previousSnapIndex\n } = swiper;\n let activeIndex = newActiveIndex;\n let snapIndex;\n\n if (typeof activeIndex === 'undefined') {\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 } // Normalize slideIndex\n\n\n if (params.normalizeSlideIndex) {\n if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n }\n }\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\n if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n\n if (activeIndex === previousIndex) {\n if (snapIndex !== previousSnapIndex) {\n swiper.snapIndex = snapIndex;\n swiper.emit('snapIndexChange');\n }\n\n return;\n } // Get real index\n\n\n const realIndex = parseInt(swiper.slides.eq(activeIndex).attr('data-swiper-slide-index') || activeIndex, 10);\n Object.assign(swiper, {\n snapIndex,\n realIndex,\n previousIndex,\n activeIndex\n });\n swiper.emit('activeIndexChange');\n swiper.emit('snapIndexChange');\n\n if (previousRealIndex !== realIndex) {\n swiper.emit('realIndexChange');\n }\n\n if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n swiper.emit('slideChange');\n }\n}","import $ from '../../shared/dom.js';\nexport default function updateClickedSlide(e) {\n const swiper = this;\n const params = swiper.params;\n const slide = $(e).closest(`.${params.slideClass}`)[0];\n let slideFound = false;\n let slideIndex;\n\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\n if (slide && slideFound) {\n swiper.clickedSlide = slide;\n\n if (swiper.virtual && swiper.params.virtual.enabled) {\n swiper.clickedIndex = parseInt($(slide).attr('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\n if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n swiper.slideToClickedSlide();\n }\n}","import getTranslate from './getTranslate.js';\nimport setTranslate from './setTranslate.js';\nimport minTranslate from './minTranslate.js';\nimport maxTranslate from './maxTranslate.js';\nimport translateTo from './translateTo.js';\nexport default {\n getTranslate,\n setTranslate,\n minTranslate,\n maxTranslate,\n translateTo\n};","import { getTranslate } from '../../shared/utils.js';\nexport default function getSwiperTranslate(axis) {\n if (axis === void 0) {\n axis = this.isHorizontal() ? 'x' : 'y';\n }\n\n const swiper = this;\n const {\n params,\n rtlTranslate: rtl,\n translate,\n $wrapperEl\n } = swiper;\n\n if (params.virtualTranslate) {\n return rtl ? -translate : translate;\n }\n\n if (params.cssMode) {\n return translate;\n }\n\n let currentTranslate = getTranslate($wrapperEl[0], axis);\n if (rtl) currentTranslate = -currentTranslate;\n return currentTranslate || 0;\n}","export default function setTranslate(translate, byController) {\n const swiper = this;\n const {\n rtlTranslate: rtl,\n params,\n $wrapperEl,\n wrapperEl,\n progress\n } = swiper;\n let x = 0;\n let y = 0;\n const z = 0;\n\n if (swiper.isHorizontal()) {\n x = rtl ? -translate : translate;\n } else {\n y = translate;\n }\n\n if (params.roundLengths) {\n x = Math.floor(x);\n y = Math.floor(y);\n }\n\n if (params.cssMode) {\n wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n } else if (!params.virtualTranslate) {\n $wrapperEl.transform(`translate3d(${x}px, ${y}px, ${z}px)`);\n }\n\n swiper.previousTranslate = swiper.translate;\n swiper.translate = swiper.isHorizontal() ? x : y; // Check if we need to update progress\n\n let newProgress;\n const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== progress) {\n swiper.updateProgress(translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, byController);\n}","export default function minTranslate() {\n return -this.snapGrid[0];\n}","export default function maxTranslate() {\n return -this.snapGrid[this.snapGrid.length - 1];\n}","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n if (translate === void 0) {\n translate = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (translateBounds === void 0) {\n translateBounds = true;\n }\n\n const swiper = this;\n const {\n params,\n wrapperEl\n } = swiper;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return false;\n }\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; // Update progress\n\n swiper.updateProgress(newTranslate);\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n\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\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: -newTranslate,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\n\n if (speed === 0) {\n swiper.setTransition(0);\n swiper.setTranslate(newTranslate);\n\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\n if (runCallbacks) {\n swiper.emit('beforeTransitionStart', speed, internal);\n swiper.emit('transitionStart');\n }\n\n if (!swiper.animating) {\n swiper.animating = true;\n\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[0].removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n swiper.onTranslateToWrapperTransitionEnd = null;\n delete swiper.onTranslateToWrapperTransitionEnd;\n\n if (runCallbacks) {\n swiper.emit('transitionEnd');\n }\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onTranslateToWrapperTransitionEnd);\n }\n }\n\n return true;\n}","export default function 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\n if (!dir) {\n if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n }\n\n swiper.emit(`transition${step}`);\n\n if (runCallbacks && activeIndex !== previousIndex) {\n if (dir === 'reset') {\n swiper.emit(`slideResetTransition${step}`);\n return;\n }\n\n swiper.emit(`slideChangeTransition${step}`);\n\n if (dir === 'next') {\n swiper.emit(`slideNextTransition${step}`);\n } else {\n swiper.emit(`slidePrevTransition${step}`);\n }\n }\n}","import setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\nexport default {\n setTransition,\n transitionStart,\n transitionEnd\n};","export default function setTransition(duration, byController) {\n const swiper = this;\n\n if (!swiper.params.cssMode) {\n swiper.$wrapperEl.transition(duration);\n }\n\n swiper.emit('setTransition', duration, byController);\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionStart(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n const {\n params\n } = swiper;\n if (params.cssMode) return;\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n transitionEmit({\n swiper,\n runCallbacks,\n direction,\n step: 'Start'\n });\n}","import transitionEmit from './transitionEmit.js';\nexport default function transitionEnd(runCallbacks, direction) {\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\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}","import slideTo from './slideTo.js';\nimport slideToLoop from './slideToLoop.js';\nimport slideNext from './slideNext.js';\nimport slidePrev from './slidePrev.js';\nimport slideReset from './slideReset.js';\nimport slideToClosest from './slideToClosest.js';\nimport slideToClickedSlide from './slideToClickedSlide.js';\nexport default {\n slideTo,\n slideToLoop,\n slideNext,\n slidePrev,\n slideReset,\n slideToClosest,\n slideToClickedSlide\n};","import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function slideTo(index, speed, runCallbacks, internal, initial) {\n if (index === void 0) {\n index = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (typeof index !== 'number' && typeof index !== 'string') {\n throw new Error(`The 'index' argument cannot have type other than 'number' or 'string'. [${typeof index}] given.`);\n }\n\n if (typeof index === 'string') {\n /**\n * The `index` argument converted from `string` to `number`.\n * @type {number}\n */\n const indexAsNumber = parseInt(index, 10);\n /**\n * Determines whether the `index` argument is a valid `number`\n * after being converted from the `string` type.\n * @type {boolean}\n */\n\n const isValidNumber = isFinite(indexAsNumber);\n\n if (!isValidNumber) {\n throw new Error(`The passed-in 'index' (string) couldn't be converted to 'number'. [${index}] given.`);\n } // Knowing that the converted `index` is a valid number,\n // we can update the original argument's value.\n\n\n index = indexAsNumber;\n }\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\n if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n return false;\n }\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\n if ((activeIndex || params.initialSlide || 0) === (previousIndex || 0) && runCallbacks) {\n swiper.emit('beforeSlideChangeStart');\n }\n\n const translate = -snapGrid[snapIndex]; // Update progress\n\n swiper.updateProgress(translate); // Normalize slideIndex\n\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\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 } // Directions locks\n\n\n if (swiper.initialized && slideIndex !== activeIndex) {\n if (!swiper.allowSlideNext && translate < swiper.translate && translate < swiper.minTranslate()) {\n return false;\n }\n\n if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n if ((activeIndex || 0) !== slideIndex) return false;\n }\n }\n\n let direction;\n if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; // Update Index\n\n if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n swiper.updateActiveIndex(slideIndex); // Update Height\n\n if (params.autoHeight) {\n swiper.updateAutoHeight();\n }\n\n swiper.updateSlidesClasses();\n\n if (params.effect !== 'slide') {\n swiper.setTranslate(translate);\n }\n\n if (direction !== 'reset') {\n swiper.transitionStart(runCallbacks, direction);\n swiper.transitionEnd(runCallbacks, direction);\n }\n\n return false;\n }\n\n if (params.cssMode) {\n const isH = swiper.isHorizontal();\n const t = rtl ? translate : -translate;\n\n if (speed === 0) {\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n if (isVirtual) {\n swiper.wrapperEl.style.scrollSnapType = 'none';\n swiper._immediateVirtual = true;\n }\n\n wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n\n if (isVirtual) {\n requestAnimationFrame(() => {\n swiper.wrapperEl.style.scrollSnapType = '';\n swiper._swiperImmediateVirtual = 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\n wrapperEl.scrollTo({\n [isH ? 'left' : 'top']: t,\n behavior: 'smooth'\n });\n }\n\n return true;\n }\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\n if (speed === 0) {\n swiper.transitionEnd(runCallbacks, direction);\n } else if (!swiper.animating) {\n swiper.animating = true;\n\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[0].removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].removeEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n swiper.onSlideToWrapperTransitionEnd = null;\n delete swiper.onSlideToWrapperTransitionEnd;\n swiper.transitionEnd(runCallbacks, direction);\n };\n }\n\n swiper.$wrapperEl[0].addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n swiper.$wrapperEl[0].addEventListener('webkitTransitionEnd', swiper.onSlideToWrapperTransitionEnd);\n }\n\n return true;\n}","export default function slideToLoop(index, speed, runCallbacks, internal) {\n if (index === void 0) {\n index = 0;\n }\n\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n let newIndex = index;\n\n if (swiper.params.loop) {\n newIndex += swiper.loopedSlides;\n }\n\n return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideNext(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n const {\n animating,\n enabled,\n params\n } = swiper;\n if (!enabled) return swiper;\n let perGroup = params.slidesPerGroup;\n\n if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n }\n\n const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n if (params.rewind && swiper.isEnd) {\n return swiper.slideTo(0, speed, runCallbacks, internal);\n }\n\n return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slidePrev(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n const {\n params,\n animating,\n snapGrid,\n slidesGrid,\n rtlTranslate,\n enabled\n } = swiper;\n if (!enabled) return swiper;\n\n if (params.loop) {\n if (animating && params.loopPreventsSlide) return false;\n swiper.loopFix(); // eslint-disable-next-line\n\n swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n }\n\n const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n\n function normalize(val) {\n if (val < 0) return -Math.floor(Math.abs(val));\n return Math.floor(val);\n }\n\n const normalizedTranslate = normalize(translate);\n const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n\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\n if (typeof prevSnapIndex !== 'undefined') {\n prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n }\n }\n\n let prevIndex = 0;\n\n if (typeof prevSnap !== 'undefined') {\n prevIndex = slidesGrid.indexOf(prevSnap);\n if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n\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\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 }\n\n return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideReset(speed, runCallbacks, internal) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n const swiper = this;\n return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}","/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed, runCallbacks, internal, threshold) {\n if (speed === void 0) {\n speed = this.params.speed;\n }\n\n if (runCallbacks === void 0) {\n runCallbacks = true;\n }\n\n if (threshold === void 0) {\n threshold = 0.5;\n }\n\n const swiper = this;\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\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\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\n if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n index -= swiper.params.slidesPerGroup;\n }\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}","import $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nexport default function slideToClickedSlide() {\n const swiper = this;\n const {\n params,\n $wrapperEl\n } = swiper;\n const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n let slideToIndex = swiper.clickedIndex;\n let realIndex;\n\n if (params.loop) {\n if (swiper.animating) return;\n realIndex = parseInt($(swiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n\n if (params.centeredSlides) {\n if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n swiper.loopFix();\n slideToIndex = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\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 = $wrapperEl.children(`.${params.slideClass}[data-swiper-slide-index=\"${realIndex}\"]:not(.${params.slideDuplicateClass})`).eq(0).index();\n nextTick(() => {\n swiper.slideTo(slideToIndex);\n });\n } else {\n swiper.slideTo(slideToIndex);\n }\n } else {\n swiper.slideTo(slideToIndex);\n }\n}","import loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\nexport default {\n loopCreate,\n loopFix,\n loopDestroy\n};","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loopCreate() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n $wrapperEl\n } = swiper; // Remove duplicated slides\n\n const $selector = $wrapperEl.children().length > 0 ? $($wrapperEl.children()[0].parentNode) : $wrapperEl;\n $selector.children(`.${params.slideClass}.${params.slideDuplicateClass}`).remove();\n let slides = $selector.children(`.${params.slideClass}`);\n\n if (params.loopFillGroupWithBlank) {\n const blankSlidesNum = params.slidesPerGroup - slides.length % params.slidesPerGroup;\n\n if (blankSlidesNum !== params.slidesPerGroup) {\n for (let i = 0; i < blankSlidesNum; i += 1) {\n const blankNode = $(document.createElement('div')).addClass(`${params.slideClass} ${params.slideBlankClass}`);\n $selector.append(blankNode);\n }\n\n slides = $selector.children(`.${params.slideClass}`);\n }\n }\n\n if (params.slidesPerView === 'auto' && !params.loopedSlides) params.loopedSlides = slides.length;\n swiper.loopedSlides = Math.ceil(parseFloat(params.loopedSlides || params.slidesPerView, 10));\n swiper.loopedSlides += params.loopAdditionalSlides;\n\n if (swiper.loopedSlides > slides.length) {\n swiper.loopedSlides = slides.length;\n }\n\n const prependSlides = [];\n const appendSlides = [];\n slides.each((el, index) => {\n const slide = $(el);\n\n if (index < swiper.loopedSlides) {\n appendSlides.push(el);\n }\n\n if (index < slides.length && index >= slides.length - swiper.loopedSlides) {\n prependSlides.push(el);\n }\n\n slide.attr('data-swiper-slide-index', index);\n });\n\n for (let i = 0; i < appendSlides.length; i += 1) {\n $selector.append($(appendSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n\n for (let i = prependSlides.length - 1; i >= 0; i -= 1) {\n $selector.prepend($(prependSlides[i].cloneNode(true)).addClass(params.slideDuplicateClass));\n }\n}","export default function loopFix() {\n const swiper = this;\n swiper.emit('beforeLoopFix');\n const {\n activeIndex,\n slides,\n loopedSlides,\n allowSlidePrev,\n allowSlideNext,\n snapGrid,\n rtlTranslate: rtl\n } = swiper;\n let newIndex;\n swiper.allowSlidePrev = true;\n swiper.allowSlideNext = true;\n const snapTranslate = -snapGrid[activeIndex];\n const diff = snapTranslate - swiper.getTranslate(); // Fix For Negative Oversliding\n\n if (activeIndex < loopedSlides) {\n newIndex = slides.length - loopedSlides * 3 + activeIndex;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n } else if (activeIndex >= slides.length - loopedSlides) {\n // Fix For Positive Oversliding\n newIndex = -slides.length + activeIndex + loopedSlides;\n newIndex += loopedSlides;\n const slideChanged = swiper.slideTo(newIndex, 0, false, true);\n\n if (slideChanged && diff !== 0) {\n swiper.setTranslate((rtl ? -swiper.translate : swiper.translate) - diff);\n }\n }\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n swiper.emit('loopFix');\n}","export default function loopDestroy() {\n const swiper = this;\n const {\n $wrapperEl,\n params,\n slides\n } = swiper;\n $wrapperEl.children(`.${params.slideClass}.${params.slideDuplicateClass},.${params.slideClass}.${params.slideBlankClass}`).remove();\n slides.removeAttr('data-swiper-slide-index');\n}","import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js'; // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\n\nfunction closestElement(selector, base) {\n if (base === void 0) {\n base = this;\n }\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\n if (!found && !el.getRootNode) {\n return null;\n }\n\n return found || __closestFrom(el.getRootNode().host);\n }\n\n return __closestFrom(base);\n}\n\nexport default function onTouchStart(event) {\n const swiper = this;\n const document = getDocument();\n const window = getWindow();\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n enabled\n } = swiper;\n if (!enabled) return;\n\n if (swiper.animating && params.preventInteractionOnTransition) {\n return;\n }\n\n if (!swiper.animating && params.cssMode && params.loop) {\n swiper.loopFix();\n }\n\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n let $targetEl = $(e.target);\n\n if (params.touchEventsTarget === 'wrapper') {\n if (!$targetEl.closest(swiper.wrapperEl).length) return;\n }\n\n data.isTouchEvent = e.type === 'touchstart';\n if (!data.isTouchEvent && 'which' in e && e.which === 3) return;\n if (!data.isTouchEvent && 'button' in e && e.button > 0) return;\n if (data.isTouched && data.isMoved) return; // change target el for shadow root component\n\n const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n\n if (swipingClassHasValue && e.target && e.target.shadowRoot && event.path && event.path[0]) {\n $targetEl = $(event.path[0]);\n }\n\n const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n const isTargetShadow = !!(e.target && e.target.shadowRoot); // use closestElement for shadow root element to get the actual closest for nested shadow root element\n\n if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, $targetEl[0]) : $targetEl.closest(noSwipingSelector)[0])) {\n swiper.allowClick = true;\n return;\n }\n\n if (params.swipeHandler) {\n if (!$targetEl.closest(params.swipeHandler)[0]) return;\n }\n\n touches.currentX = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n touches.currentY = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n const startX = touches.currentX;\n const startY = touches.currentY; // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n\n if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n if (edgeSwipeDetection === 'prevent') {\n event.preventDefault();\n } else {\n return;\n }\n }\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\n if (e.type !== 'touchstart') {\n let preventDefault = true;\n\n if ($targetEl.is(data.focusableElements)) {\n preventDefault = false;\n\n if ($targetEl[0].nodeName === 'SELECT') {\n data.isTouched = false;\n }\n }\n\n if (document.activeElement && $(document.activeElement).is(data.focusableElements) && document.activeElement !== $targetEl[0]) {\n document.activeElement.blur();\n }\n\n const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n\n if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !$targetEl[0].isContentEditable) {\n e.preventDefault();\n }\n }\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n swiper.freeMode.onTouchStart();\n }\n\n swiper.emit('touchStart', e);\n}","import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now } from '../../shared/utils.js';\nexport default function 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 let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (!data.isTouched) {\n if (data.startMoving && data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n return;\n }\n\n if (data.isTouchEvent && e.type !== 'touchmove') return;\n const targetTouch = e.type === 'touchmove' && e.targetTouches && (e.targetTouches[0] || e.changedTouches[0]);\n const pageX = e.type === 'touchmove' ? targetTouch.pageX : e.pageX;\n const pageY = e.type === 'touchmove' ? targetTouch.pageY : e.pageY;\n\n if (e.preventedByNestedSwiper) {\n touches.startX = pageX;\n touches.startY = pageY;\n return;\n }\n\n if (!swiper.allowTouchMove) {\n if (!$(e.target).is(data.focusableElements)) {\n swiper.allowClick = false;\n }\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\n return;\n }\n\n if (data.isTouchEvent && 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\n if (data.isTouchEvent && document.activeElement) {\n if (e.target === document.activeElement && $(e.target).is(data.focusableElements)) {\n data.isMoved = true;\n swiper.allowClick = false;\n return;\n }\n }\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchMove', e);\n }\n\n if (e.targetTouches && e.targetTouches.length > 1) return;\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\n if (typeof data.isScrolling === 'undefined') {\n let touchAngle;\n\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\n if (data.isScrolling) {\n swiper.emit('touchMoveOpposite', e);\n }\n\n if (typeof data.startMoving === 'undefined') {\n if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n data.startMoving = true;\n }\n }\n\n if (data.isScrolling) {\n data.isTouched = false;\n return;\n }\n\n if (!data.startMoving) {\n return;\n }\n\n swiper.allowClick = false;\n\n if (!params.cssMode && e.cancelable) {\n e.preventDefault();\n }\n\n if (params.touchMoveStopPropagation && !params.nested) {\n e.stopPropagation();\n }\n\n if (!data.isMoved) {\n if (params.loop && !params.cssMode) {\n swiper.loopFix();\n }\n\n data.startTranslate = swiper.getTranslate();\n swiper.setTransition(0);\n\n if (swiper.animating) {\n swiper.$wrapperEl.trigger('webkitTransitionEnd transitionend');\n }\n\n data.allowMomentumBounce = false; // Grab Cursor\n\n if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(true);\n }\n\n swiper.emit('sliderFirstMove', e);\n }\n\n swiper.emit('sliderMove', e);\n data.isMoved = true;\n let diff = swiper.isHorizontal() ? diffX : diffY;\n touches.diff = diff;\n diff *= params.touchRatio;\n if (rtl) diff = -diff;\n swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n data.currentTranslate = diff + data.startTranslate;\n let disableParentSwiper = true;\n let resistanceRatio = params.resistanceRatio;\n\n if (params.touchReleaseOnEdges) {\n resistanceRatio = 0;\n }\n\n if (diff > 0 && data.currentTranslate > swiper.minTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n } else if (diff < 0 && data.currentTranslate < swiper.maxTranslate()) {\n disableParentSwiper = false;\n if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n }\n\n if (disableParentSwiper) {\n e.preventedByNestedSwiper = true;\n } // Directions locks\n\n\n if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n data.currentTranslate = data.startTranslate;\n }\n\n if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n data.currentTranslate = data.startTranslate;\n } // Threshold\n\n\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\n if (!params.followFinger || params.cssMode) return; // Update active index in free mode\n\n if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n swiper.updateActiveIndex();\n swiper.updateSlidesClasses();\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n swiper.freeMode.onTouchMove();\n } // Update progress\n\n\n swiper.updateProgress(data.currentTranslate); // Update translate\n\n swiper.setTranslate(data.currentTranslate);\n}","import { now, nextTick } from '../../shared/utils.js';\nexport default function onTouchEnd(event) {\n const swiper = this;\n const data = swiper.touchEventsData;\n const {\n params,\n touches,\n rtlTranslate: rtl,\n slidesGrid,\n enabled\n } = swiper;\n if (!enabled) return;\n let e = event;\n if (e.originalEvent) e = e.originalEvent;\n\n if (data.allowTouchCallbacks) {\n swiper.emit('touchEnd', e);\n }\n\n data.allowTouchCallbacks = false;\n\n if (!data.isTouched) {\n if (data.isMoved && params.grabCursor) {\n swiper.setGrabCursor(false);\n }\n\n data.isMoved = false;\n data.startMoving = false;\n return;\n } // Return Grab Cursor\n\n\n if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n swiper.setGrabCursor(false);\n } // Time diff\n\n\n const touchEndTime = now();\n const timeDiff = touchEndTime - data.touchStartTime; // Tap, doubleTap, Click\n\n if (swiper.allowClick) {\n const pathTree = e.path || e.composedPath && e.composedPath();\n swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);\n swiper.emit('tap click', e);\n\n if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n swiper.emit('doubleTap doubleClick', e);\n }\n }\n\n data.lastClickTime = now();\n nextTick(() => {\n if (!swiper.destroyed) swiper.allowClick = true;\n });\n\n if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n return;\n }\n\n data.isTouched = false;\n data.isMoved = false;\n data.startMoving = false;\n let currentPos;\n\n if (params.followFinger) {\n currentPos = rtl ? swiper.translate : -swiper.translate;\n } else {\n currentPos = -data.currentTranslate;\n }\n\n if (params.cssMode) {\n return;\n }\n\n if (swiper.params.freeMode && params.freeMode.enabled) {\n swiper.freeMode.onTouchEnd({\n currentPos\n });\n return;\n } // Find current slide\n\n\n let stopIndex = 0;\n let groupSize = swiper.slidesSizesGrid[0];\n\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\n if (typeof slidesGrid[i + increment] !== 'undefined') {\n if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n stopIndex = i;\n groupSize = slidesGrid[i + increment] - slidesGrid[i];\n }\n } else if (currentPos >= slidesGrid[i]) {\n stopIndex = i;\n groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n }\n }\n\n let rewindFirstIndex = null;\n let rewindLastIndex = null;\n\n if (params.rewind) {\n if (swiper.isBeginning) {\n rewindLastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n } else if (swiper.isEnd) {\n rewindFirstIndex = 0;\n }\n } // Find current slide size\n\n\n const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n\n if (timeDiff > params.longSwipesMs) {\n // Long touches\n if (!params.longSwipes) {\n swiper.slideTo(swiper.activeIndex);\n return;\n }\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\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\n const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n\n if (!isNavButtonTarget) {\n if (swiper.swipeDirection === 'next') {\n swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n }\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}","export default function onResize() {\n const swiper = this;\n const {\n params,\n el\n } = swiper;\n if (el && el.offsetWidth === 0) return; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n } // Save locks\n\n\n const {\n allowSlideNext,\n allowSlidePrev,\n snapGrid\n } = swiper; // Disable locks on resize\n\n swiper.allowSlideNext = true;\n swiper.allowSlidePrev = true;\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateSlidesClasses();\n\n if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides) {\n swiper.slideTo(swiper.slides.length - 1, 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 swiper.autoplay.run();\n } // Return locks after resize\n\n\n swiper.allowSlidePrev = allowSlidePrev;\n swiper.allowSlideNext = allowSlideNext;\n\n if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n}","export default function onClick(e) {\n const swiper = this;\n if (!swiper.enabled) return;\n\n if (!swiper.allowClick) {\n if (swiper.params.preventClicks) e.preventDefault();\n\n if (swiper.params.preventClicksPropagation && swiper.animating) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n }\n}","export default function 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\n if (swiper.isHorizontal()) {\n swiper.translate = -wrapperEl.scrollLeft;\n } else {\n swiper.translate = -wrapperEl.scrollTop;\n } // eslint-disable-next-line\n\n\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\n if (translatesDiff === 0) {\n newProgress = 0;\n } else {\n newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n }\n\n if (newProgress !== swiper.progress) {\n swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n }\n\n swiper.emit('setTranslate', swiper.translate, false);\n}","import { getDocument } from 'ssr-window';\nimport onTouchStart from './onTouchStart.js';\nimport onTouchMove from './onTouchMove.js';\nimport onTouchEnd from './onTouchEnd.js';\nimport onResize from './onResize.js';\nimport onClick from './onClick.js';\nimport onScroll from './onScroll.js';\nlet dummyEventAttached = false;\n\nfunction dummyEventListener() {}\n\nconst events = (swiper, method) => {\n const document = getDocument();\n const {\n params,\n touchEvents,\n el,\n wrapperEl,\n device,\n support\n } = swiper;\n const capture = !!params.nested;\n const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n const swiperMethod = method; // Touch Events\n\n if (!support.touch) {\n el[domMethod](touchEvents.start, swiper.onTouchStart, false);\n document[domMethod](touchEvents.move, swiper.onTouchMove, capture);\n document[domMethod](touchEvents.end, swiper.onTouchEnd, false);\n } else {\n const passiveListener = touchEvents.start === 'touchstart' && support.passiveListener && params.passiveListeners ? {\n passive: true,\n capture: false\n } : false;\n el[domMethod](touchEvents.start, swiper.onTouchStart, passiveListener);\n el[domMethod](touchEvents.move, swiper.onTouchMove, support.passiveListener ? {\n passive: false,\n capture\n } : capture);\n el[domMethod](touchEvents.end, swiper.onTouchEnd, passiveListener);\n\n if (touchEvents.cancel) {\n el[domMethod](touchEvents.cancel, swiper.onTouchEnd, passiveListener);\n }\n } // Prevent Links Clicks\n\n\n if (params.preventClicks || params.preventClicksPropagation) {\n el[domMethod]('click', swiper.onClick, true);\n }\n\n if (params.cssMode) {\n wrapperEl[domMethod]('scroll', swiper.onScroll);\n } // Resize handler\n\n\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\nfunction attachEvents() {\n const swiper = this;\n const document = getDocument();\n const {\n params,\n support\n } = swiper;\n swiper.onTouchStart = onTouchStart.bind(swiper);\n swiper.onTouchMove = onTouchMove.bind(swiper);\n swiper.onTouchEnd = onTouchEnd.bind(swiper);\n\n if (params.cssMode) {\n swiper.onScroll = onScroll.bind(swiper);\n }\n\n swiper.onClick = onClick.bind(swiper);\n\n if (support.touch && !dummyEventAttached) {\n document.addEventListener('touchstart', dummyEventListener);\n dummyEventAttached = true;\n }\n\n events(swiper, 'on');\n}\n\nfunction detachEvents() {\n const swiper = this;\n events(swiper, 'off');\n}\n\nexport default {\n attachEvents,\n detachEvents\n};","import { extend } from '../../shared/utils.js';\n\nconst isGridEnabled = (swiper, params) => {\n return swiper.grid && params.grid && params.grid.rows > 1;\n};\n\nexport default function setBreakpoint() {\n const swiper = this;\n const {\n activeIndex,\n initialized,\n loopedSlides = 0,\n params,\n $el\n } = swiper;\n const breakpoints = params.breakpoints;\n if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; // Get breakpoint for window width and update parameters\n\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 wasEnabled = params.enabled;\n\n if (wasMultiRow && !isMultiRow) {\n $el.removeClass(`${params.containerModifierClass}grid ${params.containerModifierClass}grid-column`);\n swiper.emitContainerClasses();\n } else if (!wasMultiRow && isMultiRow) {\n $el.addClass(`${params.containerModifierClass}grid`);\n\n if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n $el.addClass(`${params.containerModifierClass}grid-column`);\n }\n\n swiper.emitContainerClasses();\n }\n\n const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\n if (directionChanged && initialized) {\n swiper.changeDirection();\n }\n\n extend(swiper.params, breakpointParams);\n const isEnabled = swiper.params.enabled;\n Object.assign(swiper, {\n allowTouchMove: swiper.params.allowTouchMove,\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev\n });\n\n if (wasEnabled && !isEnabled) {\n swiper.disable();\n } else if (!wasEnabled && isEnabled) {\n swiper.enable();\n }\n\n swiper.currentBreakpoint = breakpoint;\n swiper.emit('_beforeBreakpoint', breakpointParams);\n\n if (needsReLoop && initialized) {\n swiper.loopDestroy();\n swiper.loopCreate();\n swiper.updateSlides();\n swiper.slideTo(activeIndex - loopedSlides + swiper.loopedSlides, 0, false);\n }\n\n swiper.emit('breakpoint', breakpointParams);\n}","import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\nexport default {\n addClasses,\n removeClasses\n};","function 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}\n\nexport default function addClasses() {\n const swiper = this;\n const {\n classNames,\n params,\n rtl,\n $el,\n device,\n support\n } = swiper; // prettier-ignore\n\n const suffixes = prepareClasses(['initialized', params.direction, {\n 'pointer-events': !support.touch\n }, {\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.addClass([...classNames].join(' '));\n swiper.emitContainerClasses();\n}","export default function removeClasses() {\n const swiper = this;\n const {\n $el,\n classNames\n } = swiper;\n $el.removeClass(classNames.join(' '));\n swiper.emitContainerClasses();\n}","function checkOverflow() {\n const swiper = this;\n const {\n isLocked: wasLocked,\n params\n } = swiper;\n const {\n slidesOffsetBefore\n } = params;\n\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\n if (params.allowSlideNext === true) {\n swiper.allowSlideNext = !swiper.isLocked;\n }\n\n if (params.allowSlidePrev === true) {\n swiper.allowSlidePrev = !swiper.isLocked;\n }\n\n if (wasLocked && wasLocked !== swiper.isLocked) {\n swiper.isEnd = false;\n }\n\n if (wasLocked !== swiper.isLocked) {\n swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n }\n}\n\nexport default {\n checkOverflow\n};","export default {\n init: true,\n direction: 'horizontal',\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 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 // 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: 0,\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 // Images\n preloadImages: true,\n updateOnImagesReady: true,\n // loop\n loop: false,\n loopAdditionalSlides: 0,\n loopedSlides: null,\n loopFillGroupWithBlank: false,\n loopPreventsSlide: 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-invisible-blank',\n slideActiveClass: 'swiper-slide-active',\n slideDuplicateActiveClass: 'swiper-slide-duplicate-active',\n slideVisibleClass: 'swiper-slide-visible',\n slideDuplicateClass: 'swiper-slide-duplicate',\n slideNextClass: 'swiper-slide-next',\n slideDuplicateNextClass: 'swiper-slide-duplicate-next',\n slidePrevClass: 'swiper-slide-prev',\n slideDuplicatePrevClass: 'swiper-slide-duplicate-prev',\n wrapperClass: 'swiper-wrapper',\n // Callbacks\n runCallbacksOnInit: true,\n // Internals\n _emitClasses: false\n};","import { extend } from '../shared/utils.js';\nexport default function moduleExtendParams(params, allModulesParams) {\n return function extendParams(obj) {\n if (obj === void 0) {\n obj = {};\n }\n\n const moduleParamName = Object.keys(obj)[0];\n const moduleParams = obj[moduleParamName];\n\n if (typeof moduleParams !== 'object' || moduleParams === null) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n params[moduleParamName] = {\n auto: true\n };\n }\n\n if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n extend(allModulesParams, obj);\n return;\n }\n\n if (params[moduleParamName] === true) {\n params[moduleParamName] = {\n enabled: true\n };\n }\n\n if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n params[moduleParamName].enabled = true;\n }\n\n if (!params[moduleParamName]) params[moduleParamName] = {\n enabled: false\n };\n extend(allModulesParams, obj);\n };\n}","/* eslint no-param-reassign: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport $ from '../shared/dom.js';\nimport { extend, now, deleteProps } from '../shared/utils.js';\nimport { getSupport } from '../shared/get-support.js';\nimport { getDevice } from '../shared/get-device.js';\nimport { getBrowser } from '../shared/get-browser.js';\nimport Resize from './modules/resize/resize.js';\nimport Observer from './modules/observer/observer.js';\nimport eventsEmitter from './events-emitter.js';\nimport update from './update/index.js';\nimport translate from './translate/index.js';\nimport transition from './transition/index.js';\nimport slide from './slide/index.js';\nimport loop from './loop/index.js';\nimport grabCursor from './grab-cursor/index.js';\nimport events from './events/index.js';\nimport breakpoints from './breakpoints/index.js';\nimport classes from './classes/index.js';\nimport images from './images/index.js';\nimport checkOverflow from './check-overflow/index.js';\nimport defaults from './defaults.js';\nimport moduleExtendParams from './moduleExtendParams.js';\nconst prototypes = {\n eventsEmitter,\n update,\n translate,\n transition,\n slide,\n loop,\n grabCursor,\n events,\n breakpoints,\n checkOverflow,\n classes,\n images\n};\nconst extendedDefaults = {};\n\nclass Swiper {\n constructor() {\n let el;\n let params;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\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\n if (!params) params = {};\n params = extend({}, params);\n if (el && !params.el) params.el = el;\n\n if (params.el && $(params.el).length > 1) {\n const swipers = [];\n $(params.el).each(containerEl => {\n const newParams = extend({}, params, {\n el: containerEl\n });\n swipers.push(new Swiper(newParams));\n });\n return swipers;\n } // Swiper Instance\n\n\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\n if (params.modules && Array.isArray(params.modules)) {\n swiper.modules.push(...params.modules);\n }\n\n const allModulesParams = {};\n swiper.modules.forEach(mod => {\n mod({\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 }); // Extend defaults with modules params\n\n const swiperParams = extend({}, defaults, allModulesParams); // Extend defaults with passed params\n\n swiper.params = extend({}, swiperParams, extendedDefaults, params);\n swiper.originalParams = extend({}, swiper.params);\n swiper.passedParams = extend({}, params); // add event listeners\n\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\n if (swiper.params && swiper.params.onAny) {\n swiper.onAny(swiper.params.onAny);\n } // Save Dom lib\n\n\n swiper.$ = $; // Extend Swiper\n\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\n // isDirection\n isHorizontal() {\n return swiper.params.direction === 'horizontal';\n },\n\n isVertical() {\n return swiper.params.direction === 'vertical';\n },\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 // Locks\n allowSlideNext: swiper.params.allowSlideNext,\n allowSlidePrev: swiper.params.allowSlidePrev,\n // Touch Events\n touchEvents: function touchEvents() {\n const touch = ['touchstart', 'touchmove', 'touchend', 'touchcancel'];\n const desktop = ['pointerdown', 'pointermove', 'pointerup'];\n swiper.touchEventsTouch = {\n start: touch[0],\n move: touch[1],\n end: touch[2],\n cancel: touch[3]\n };\n swiper.touchEventsDesktop = {\n start: desktop[0],\n move: desktop[1],\n end: desktop[2]\n };\n return swiper.support.touch || !swiper.params.simulateTouch ? swiper.touchEventsTouch : swiper.touchEventsDesktop;\n }(),\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: now(),\n clickTimeout: undefined,\n // Velocities\n velocities: [],\n allowMomentumBounce: undefined,\n isTouchEvent: undefined,\n startMoving: undefined\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'); // Init\n\n if (swiper.params.init) {\n swiper.init();\n } // Return app instance\n\n\n return swiper;\n }\n\n enable() {\n const swiper = this;\n if (swiper.enabled) return;\n swiper.enabled = true;\n\n if (swiper.params.grabCursor) {\n swiper.setGrabCursor();\n }\n\n swiper.emit('enable');\n }\n\n disable() {\n const swiper = this;\n if (!swiper.enabled) return;\n swiper.enabled = false;\n\n if (swiper.params.grabCursor) {\n swiper.unsetGrabCursor();\n }\n\n swiper.emit('disable');\n }\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\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\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\n emitSlidesClasses() {\n const swiper = this;\n if (!swiper.params._emitClasses || !swiper.el) return;\n const updates = [];\n swiper.slides.each(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\n slidesPerViewDynamic(view, exact) {\n if (view === void 0) {\n view = 'current';\n }\n\n if (exact === void 0) {\n exact = false;\n }\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\n if (params.centeredSlides) {\n let slideSize = slides[activeIndex].swiperSlideSize;\n let breakLoop;\n\n for (let i = activeIndex + 1; i < slides.length; i += 1) {\n if (slides[i] && !breakLoop) {\n slideSize += slides[i].swiperSlideSize;\n spv += 1;\n if (slideSize > swiperSize) breakLoop = true;\n }\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\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\n if (slideInView) {\n spv += 1;\n }\n }\n }\n }\n\n return spv;\n }\n\n update() {\n const swiper = this;\n if (!swiper || swiper.destroyed) return;\n const {\n snapGrid,\n params\n } = swiper; // Breakpoints\n\n if (params.breakpoints) {\n swiper.setBreakpoint();\n }\n\n swiper.updateSize();\n swiper.updateSlides();\n swiper.updateProgress();\n swiper.updateSlidesClasses();\n\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\n let translated;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled) {\n setTranslate();\n\n if (swiper.params.autoHeight) {\n swiper.updateAutoHeight();\n }\n } else {\n if ((swiper.params.slidesPerView === 'auto' || swiper.params.slidesPerView > 1) && swiper.isEnd && !swiper.params.centeredSlides) {\n translated = swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n } else {\n translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n }\n\n if (!translated) {\n setTranslate();\n }\n }\n\n if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n swiper.checkOverflow();\n }\n\n swiper.emit('update');\n }\n\n changeDirection(newDirection, needUpdate) {\n if (needUpdate === void 0) {\n needUpdate = true;\n }\n\n const swiper = this;\n const currentDirection = swiper.params.direction;\n\n if (!newDirection) {\n // eslint-disable-next-line\n newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n }\n\n if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n return swiper;\n }\n\n swiper.$el.removeClass(`${swiper.params.containerModifierClass}${currentDirection}`).addClass(`${swiper.params.containerModifierClass}${newDirection}`);\n swiper.emitContainerClasses();\n swiper.params.direction = newDirection;\n swiper.slides.each(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\n mount(el) {\n const swiper = this;\n if (swiper.mounted) return true; // Find el\n\n const $el = $(el || swiper.params.el);\n el = $el[0];\n\n if (!el) {\n return false;\n }\n\n el.swiper = swiper;\n\n const getWrapperSelector = () => {\n return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n };\n\n const getWrapper = () => {\n if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n const res = $(el.shadowRoot.querySelector(getWrapperSelector())); // Children needs to return slot items\n\n res.children = options => $el.children(options);\n\n return res;\n }\n\n if (!$el.children) {\n return $($el).children(getWrapperSelector());\n }\n\n return $el.children(getWrapperSelector());\n }; // Find Wrapper\n\n\n let $wrapperEl = getWrapper();\n\n if ($wrapperEl.length === 0 && swiper.params.createElements) {\n const document = getDocument();\n const wrapper = document.createElement('div');\n $wrapperEl = $(wrapper);\n wrapper.className = swiper.params.wrapperClass;\n $el.append(wrapper);\n $el.children(`.${swiper.params.slideClass}`).each(slideEl => {\n $wrapperEl.append(slideEl);\n });\n }\n\n Object.assign(swiper, {\n $el,\n el,\n $wrapperEl,\n wrapperEl: $wrapperEl[0],\n mounted: true,\n // RTL\n rtl: el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl',\n rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || $el.css('direction') === 'rtl'),\n wrongRTL: $wrapperEl.css('display') === '-webkit-box'\n });\n return true;\n }\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'); // Set breakpoint\n\n if (swiper.params.breakpoints) {\n swiper.setBreakpoint();\n } // Add Classes\n\n\n swiper.addClasses(); // Create loop\n\n if (swiper.params.loop) {\n swiper.loopCreate();\n } // Update size\n\n\n swiper.updateSize(); // Update slides\n\n swiper.updateSlides();\n\n if (swiper.params.watchOverflow) {\n swiper.checkOverflow();\n } // Set Grab Cursor\n\n\n if (swiper.params.grabCursor && swiper.enabled) {\n swiper.setGrabCursor();\n }\n\n if (swiper.params.preloadImages) {\n swiper.preloadImages();\n } // Slide To Initial Slide\n\n\n if (swiper.params.loop) {\n swiper.slideTo(swiper.params.initialSlide + swiper.loopedSlides, 0, swiper.params.runCallbacksOnInit, false, true);\n } else {\n swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n } // Attach events\n\n\n swiper.attachEvents(); // Init Flag\n\n swiper.initialized = true; // Emit\n\n swiper.emit('init');\n swiper.emit('afterInit');\n return swiper;\n }\n\n destroy(deleteInstance, cleanStyles) {\n if (deleteInstance === void 0) {\n deleteInstance = true;\n }\n\n if (cleanStyles === void 0) {\n cleanStyles = true;\n }\n\n const swiper = this;\n const {\n params,\n $el,\n $wrapperEl,\n slides\n } = swiper;\n\n if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n return null;\n }\n\n swiper.emit('beforeDestroy'); // Init Flag\n\n swiper.initialized = false; // Detach events\n\n swiper.detachEvents(); // Destroy loop\n\n if (params.loop) {\n swiper.loopDestroy();\n } // Cleanup styles\n\n\n if (cleanStyles) {\n swiper.removeClasses();\n $el.removeAttr('style');\n $wrapperEl.removeAttr('style');\n\n if (slides && slides.length) {\n slides.removeClass([params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass].join(' ')).removeAttr('style').removeAttr('data-swiper-slide-index');\n }\n }\n\n swiper.emit('destroy'); // Detach emitter events\n\n Object.keys(swiper.eventsListeners).forEach(eventName => {\n swiper.off(eventName);\n });\n\n if (deleteInstance !== false) {\n swiper.$el[0].swiper = null;\n deleteProps(swiper);\n }\n\n swiper.destroyed = true;\n return null;\n }\n\n static extendDefaults(newDefaults) {\n extend(extendedDefaults, newDefaults);\n }\n\n static get extendedDefaults() {\n return extendedDefaults;\n }\n\n static get defaults() {\n return defaults;\n }\n\n static installModule(mod) {\n if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n const modules = Swiper.prototype.__modules__;\n\n if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n modules.push(mod);\n }\n }\n\n static use(module) {\n if (Array.isArray(module)) {\n module.forEach(m => Swiper.installModule(m));\n return Swiper;\n }\n\n Swiper.installModule(module);\n return Swiper;\n }\n\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]);\nexport default Swiper;","import setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\nexport default {\n setGrabCursor,\n unsetGrabCursor\n};","export default function setGrabCursor(moving) {\n const swiper = this;\n if (swiper.support.touch || !swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n el.style.cursor = 'move';\n el.style.cursor = moving ? 'grabbing' : 'grab';\n}","export default function unsetGrabCursor() {\n const swiper = this;\n\n if (swiper.support.touch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n return;\n }\n\n swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n}","import setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\nexport default {\n setBreakpoint,\n getBreakpoint\n};","import { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base, containerEl) {\n if (base === void 0) {\n base = 'window';\n }\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\n return {\n value: point,\n point\n };\n });\n points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n\n for (let i = 0; i < points.length; i += 1) {\n const {\n point,\n value\n } = points[i];\n\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\n return breakpoint || 'max';\n}","import loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\nexport default {\n loadImage,\n preloadImages\n};","import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function loadImage(imageEl, src, srcset, sizes, checkForComplete, callback) {\n const window = getWindow();\n let image;\n\n function onReady() {\n if (callback) callback();\n }\n\n const isPicture = $(imageEl).parent('picture')[0];\n\n if (!isPicture && (!imageEl.complete || !checkForComplete)) {\n if (src) {\n image = new window.Image();\n image.onload = onReady;\n image.onerror = onReady;\n\n if (sizes) {\n image.sizes = sizes;\n }\n\n if (srcset) {\n image.srcset = srcset;\n }\n\n if (src) {\n image.src = src;\n }\n } else {\n onReady();\n }\n } else {\n // image already loaded...\n onReady();\n }\n}","export default function preloadImages() {\n const swiper = this;\n swiper.imagesToLoad = swiper.$el.find('img');\n\n function onReady() {\n if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper.destroyed) return;\n if (swiper.imagesLoaded !== undefined) swiper.imagesLoaded += 1;\n\n if (swiper.imagesLoaded === swiper.imagesToLoad.length) {\n if (swiper.params.updateOnImagesReady) swiper.update();\n swiper.emit('imagesReady');\n }\n }\n\n for (let i = 0; i < swiper.imagesToLoad.length; i += 1) {\n const imageEl = swiper.imagesToLoad[i];\n swiper.loadImage(imageEl, imageEl.currentSrc || imageEl.getAttribute('src'), imageEl.srcset || imageEl.getAttribute('srcset'), imageEl.sizes || imageEl.getAttribute('sizes'), true, onReady);\n }\n}","import { getDocument } from 'ssr-window';\nexport default function createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n const document = getDocument();\n\n if (swiper.params.createElements) {\n Object.keys(checkProps).forEach(key => {\n if (!params[key] && params.auto === true) {\n let element = swiper.$el.children(`.${checkProps[key]}`)[0];\n\n if (!element) {\n element = document.createElement('div');\n element.className = checkProps[key];\n swiper.$el.append(element);\n }\n\n params[key] = element;\n originalParams[key] = element;\n }\n });\n }\n\n return params;\n}","import createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nimport $ from '../../shared/dom.js';\nexport default function 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 }\n });\n swiper.navigation = {\n nextEl: null,\n $nextEl: null,\n prevEl: null,\n $prevEl: null\n };\n\n function getEl(el) {\n let $el;\n\n if (el) {\n $el = $(el);\n\n if (swiper.params.uniqueNavElements && typeof el === 'string' && $el.length > 1 && swiper.$el.find(el).length === 1) {\n $el = swiper.$el.find(el);\n }\n }\n\n return $el;\n }\n\n function toggleEl($el, disabled) {\n const params = swiper.params.navigation;\n\n if ($el && $el.length > 0) {\n $el[disabled ? 'addClass' : 'removeClass'](params.disabledClass);\n if ($el[0] && $el[0].tagName === 'BUTTON') $el[0].disabled = disabled;\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](params.lockClass);\n }\n }\n }\n\n function update() {\n // Update Navigation Buttons\n if (swiper.params.loop) return;\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n toggleEl($prevEl, swiper.isBeginning && !swiper.params.rewind);\n toggleEl($nextEl, swiper.isEnd && !swiper.params.rewind);\n }\n\n function onPrevClick(e) {\n e.preventDefault();\n if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slidePrev();\n }\n\n function onNextClick(e) {\n e.preventDefault();\n if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n swiper.slideNext();\n }\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 const $nextEl = getEl(params.nextEl);\n const $prevEl = getEl(params.prevEl);\n\n if ($nextEl && $nextEl.length > 0) {\n $nextEl.on('click', onNextClick);\n }\n\n if ($prevEl && $prevEl.length > 0) {\n $prevEl.on('click', onPrevClick);\n }\n\n Object.assign(swiper.navigation, {\n $nextEl,\n nextEl: $nextEl && $nextEl[0],\n $prevEl,\n prevEl: $prevEl && $prevEl[0]\n });\n\n if (!swiper.enabled) {\n if ($nextEl) $nextEl.addClass(params.lockClass);\n if ($prevEl) $prevEl.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl && $nextEl.length) {\n $nextEl.off('click', onNextClick);\n $nextEl.removeClass(swiper.params.navigation.disabledClass);\n }\n\n if ($prevEl && $prevEl.length) {\n $prevEl.off('click', onPrevClick);\n $prevEl.removeClass(swiper.params.navigation.disabledClass);\n }\n }\n\n on('init', () => {\n init();\n update();\n });\n on('toEdge fromEdge lock unlock', () => {\n update();\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n\n if ($nextEl) {\n $nextEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n\n if ($prevEl) {\n $prevEl[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.navigation.lockClass);\n }\n });\n on('click', (_s, e) => {\n const {\n $nextEl,\n $prevEl\n } = swiper.navigation;\n const targetEl = e.target;\n\n if (swiper.params.navigation.hideOnClick && !$(targetEl).is($prevEl) && !$(targetEl).is($nextEl)) {\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\n if ($nextEl) {\n isHidden = $nextEl.hasClass(swiper.params.navigation.hiddenClass);\n } else if ($prevEl) {\n isHidden = $prevEl.hasClass(swiper.params.navigation.hiddenClass);\n }\n\n if (isHidden === true) {\n emit('navigationShow');\n } else {\n emit('navigationHide');\n }\n\n if ($nextEl) {\n $nextEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n\n if ($prevEl) {\n $prevEl.toggleClass(swiper.params.navigation.hiddenClass);\n }\n }\n });\n Object.assign(swiper.navigation, {\n update,\n init,\n destroy\n });\n}","export default function classesToSelector(classes) {\n if (classes === void 0) {\n classes = '';\n }\n\n return `.${classes.trim().replace(/([\\.:!\\/])/g, '\\\\$1') // eslint-disable-line\n .replace(/ /g, '.')}`;\n}","import $ from '../../shared/dom.js';\nimport classesToSelector from '../../shared/classes-to-selector.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function 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 }\n });\n swiper.pagination = {\n el: null,\n $el: null,\n bullets: []\n };\n let bulletSize;\n let dynamicBulletIndex = 0;\n\n function isPaginationDisabled() {\n return !swiper.params.pagination.el || !swiper.pagination.el || !swiper.pagination.$el || swiper.pagination.$el.length === 0;\n }\n\n function setSideBullets($bulletEl, position) {\n const {\n bulletActiveClass\n } = swiper.params.pagination;\n $bulletEl[position]().addClass(`${bulletActiveClass}-${position}`)[position]().addClass(`${bulletActiveClass}-${position}-${position}`);\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 const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n const $el = swiper.pagination.$el; // Current/Total\n\n let current;\n const total = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.loop) {\n current = Math.ceil((swiper.activeIndex - swiper.loopedSlides) / swiper.params.slidesPerGroup);\n\n if (current > slidesLength - 1 - swiper.loopedSlides * 2) {\n current -= slidesLength - swiper.loopedSlides * 2;\n }\n\n if (current > total - 1) current -= total;\n if (current < 0 && swiper.params.paginationType !== 'bullets') current = total + current;\n } else if (typeof swiper.snapIndex !== 'undefined') {\n current = swiper.snapIndex;\n } else {\n current = swiper.activeIndex || 0;\n } // Types\n\n\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\n if (params.dynamicBullets) {\n bulletSize = bullets.eq(0)[swiper.isHorizontal() ? 'outerWidth' : 'outerHeight'](true);\n $el.css(swiper.isHorizontal() ? 'width' : 'height', `${bulletSize * (params.dynamicMainBullets + 4)}px`);\n\n if (params.dynamicMainBullets > 1 && swiper.previousIndex !== undefined) {\n dynamicBulletIndex += current - (swiper.previousIndex - swiper.loopedSlides || 0);\n\n if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n dynamicBulletIndex = params.dynamicMainBullets - 1;\n } else if (dynamicBulletIndex < 0) {\n dynamicBulletIndex = 0;\n }\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\n bullets.removeClass(['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`).join(' '));\n\n if ($el.length > 1) {\n bullets.each(bullet => {\n const $bullet = $(bullet);\n const bulletIndex = $bullet.index();\n\n if (bulletIndex === current) {\n $bullet.addClass(params.bulletActiveClass);\n }\n\n if (params.dynamicBullets) {\n if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n $bullet.addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (bulletIndex === firstIndex) {\n setSideBullets($bullet, 'prev');\n }\n\n if (bulletIndex === lastIndex) {\n setSideBullets($bullet, 'next');\n }\n }\n });\n } else {\n const $bullet = bullets.eq(current);\n const bulletIndex = $bullet.index();\n $bullet.addClass(params.bulletActiveClass);\n\n if (params.dynamicBullets) {\n const $firstDisplayedBullet = bullets.eq(firstIndex);\n const $lastDisplayedBullet = bullets.eq(lastIndex);\n\n for (let i = firstIndex; i <= lastIndex; i += 1) {\n bullets.eq(i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n if (swiper.params.loop) {\n if (bulletIndex >= bullets.length) {\n for (let i = params.dynamicMainBullets; i >= 0; i -= 1) {\n bullets.eq(bullets.length - i).addClass(`${params.bulletActiveClass}-main`);\n }\n\n bullets.eq(bullets.length - params.dynamicMainBullets - 1).addClass(`${params.bulletActiveClass}-prev`);\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n } else {\n setSideBullets($firstDisplayedBullet, 'prev');\n setSideBullets($lastDisplayedBullet, 'next');\n }\n }\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.css(swiper.isHorizontal() ? offsetProp : 'top', `${bulletsOffset}px`);\n }\n }\n\n if (params.type === 'fraction') {\n $el.find(classesToSelector(params.currentClass)).text(params.formatFractionCurrent(current + 1));\n $el.find(classesToSelector(params.totalClass)).text(params.formatFractionTotal(total));\n }\n\n if (params.type === 'progressbar') {\n let progressbarDirection;\n\n if (params.progressbarOpposite) {\n progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n } else {\n progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n }\n\n const scale = (current + 1) / total;\n let scaleX = 1;\n let scaleY = 1;\n\n if (progressbarDirection === 'horizontal') {\n scaleX = scale;\n } else {\n scaleY = scale;\n }\n\n $el.find(classesToSelector(params.progressbarFillClass)).transform(`translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`).transition(swiper.params.speed);\n }\n\n if (params.type === 'custom' && params.renderCustom) {\n $el.html(params.renderCustom(swiper, current + 1, total));\n emit('paginationRender', $el[0]);\n } else {\n emit('paginationUpdate', $el[0]);\n }\n\n if (swiper.params.watchOverflow && swiper.enabled) {\n $el[swiper.isLocked ? 'addClass' : 'removeClass'](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.slides.length;\n const $el = swiper.pagination.$el;\n let paginationHTML = '';\n\n if (params.type === 'bullets') {\n let numberOfBullets = swiper.params.loop ? Math.ceil((slidesLength - swiper.loopedSlides * 2) / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n\n if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.loop && numberOfBullets > slidesLength) {\n numberOfBullets = slidesLength;\n }\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 paginationHTML += `<${params.bulletElement} class=\"${params.bulletClass}\">`;\n }\n }\n\n $el.html(paginationHTML);\n swiper.pagination.bullets = $el.find(classesToSelector(params.bulletClass));\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 = `` + ' / ' + ``;\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type === 'progressbar') {\n if (params.renderProgressbar) {\n paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n } else {\n paginationHTML = ``;\n }\n\n $el.html(paginationHTML);\n }\n\n if (params.type !== 'custom') {\n emit('paginationRender', swiper.pagination.$el[0]);\n }\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 = $(params.el);\n if ($el.length === 0) return;\n\n if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1) {\n $el = swiper.$el.find(params.el); // check if it belongs to another nested Swiper\n\n if ($el.length > 1) {\n $el = $el.filter(el => {\n if ($(el).parents('.swiper')[0] !== swiper.el) return false;\n return true;\n });\n }\n }\n\n if (params.type === 'bullets' && params.clickable) {\n $el.addClass(params.clickableClass);\n }\n\n $el.addClass(params.modifierClass + params.type);\n $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n\n if (params.type === 'bullets' && params.dynamicBullets) {\n $el.addClass(`${params.modifierClass}${params.type}-dynamic`);\n dynamicBulletIndex = 0;\n\n if (params.dynamicMainBullets < 1) {\n params.dynamicMainBullets = 1;\n }\n }\n\n if (params.type === 'progressbar' && params.progressbarOpposite) {\n $el.addClass(params.progressbarOppositeClass);\n }\n\n if (params.clickable) {\n $el.on('click', classesToSelector(params.bulletClass), function onClick(e) {\n e.preventDefault();\n let index = $(this).index() * swiper.params.slidesPerGroup;\n if (swiper.params.loop) index += swiper.loopedSlides;\n swiper.slideTo(index);\n });\n }\n\n Object.assign(swiper.pagination, {\n $el,\n el: $el[0]\n });\n\n if (!swiper.enabled) {\n $el.addClass(params.lockClass);\n }\n }\n\n function destroy() {\n const params = swiper.params.pagination;\n if (isPaginationDisabled()) return;\n const $el = swiper.pagination.$el;\n $el.removeClass(params.hiddenClass);\n $el.removeClass(params.modifierClass + params.type);\n $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n if (swiper.pagination.bullets && swiper.pagination.bullets.removeClass) swiper.pagination.bullets.removeClass(params.bulletActiveClass);\n\n if (params.clickable) {\n $el.off('click', classesToSelector(params.bulletClass));\n }\n }\n\n on('init', () => {\n init();\n render();\n update();\n });\n on('activeIndexChange', () => {\n if (swiper.params.loop) {\n update();\n } else if (typeof swiper.snapIndex === 'undefined') {\n update();\n }\n });\n on('snapIndexChange', () => {\n if (!swiper.params.loop) {\n update();\n }\n });\n on('slidesLengthChange', () => {\n if (swiper.params.loop) {\n render();\n update();\n }\n });\n on('snapGridLengthChange', () => {\n if (!swiper.params.loop) {\n render();\n update();\n }\n });\n on('destroy', () => {\n destroy();\n });\n on('enable disable', () => {\n const {\n $el\n } = swiper.pagination;\n\n if ($el) {\n $el[swiper.enabled ? 'removeClass' : 'addClass'](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 {\n $el\n } = swiper.pagination;\n\n if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && $el.length > 0 && !$(targetEl).hasClass(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.hasClass(swiper.params.pagination.hiddenClass);\n\n if (isHidden === true) {\n emit('paginationShow');\n } else {\n emit('paginationHide');\n }\n\n $el.toggleClass(swiper.params.pagination.hiddenClass);\n }\n });\n Object.assign(swiper.pagination, {\n render,\n update,\n init,\n destroy\n });\n}","/* eslint no-underscore-dangle: \"off\" */\n\n/* eslint no-use-before-define: \"off\" */\nimport { getDocument } from 'ssr-window';\nimport { nextTick } from '../../shared/utils.js';\nexport default function Autoplay(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n let timeout;\n swiper.autoplay = {\n running: false,\n paused: false\n };\n extendParams({\n autoplay: {\n enabled: false,\n delay: 3000,\n waitForTransition: true,\n disableOnInteraction: true,\n stopOnLastSlide: false,\n reverseDirection: false,\n pauseOnMouseEnter: false\n }\n });\n\n function run() {\n const $activeSlideEl = swiper.slides.eq(swiper.activeIndex);\n let delay = swiper.params.autoplay.delay;\n\n if ($activeSlideEl.attr('data-swiper-autoplay')) {\n delay = $activeSlideEl.attr('data-swiper-autoplay') || swiper.params.autoplay.delay;\n }\n\n clearTimeout(timeout);\n timeout = nextTick(() => {\n let autoplayResult;\n\n if (swiper.params.autoplay.reverseDirection) {\n if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isBeginning) {\n autoplayResult = swiper.slidePrev(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(swiper.slides.length - 1, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n } else if (swiper.params.loop) {\n swiper.loopFix();\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.isEnd) {\n autoplayResult = swiper.slideNext(swiper.params.speed, true, true);\n emit('autoplay');\n } else if (!swiper.params.autoplay.stopOnLastSlide) {\n autoplayResult = swiper.slideTo(0, swiper.params.speed, true, true);\n emit('autoplay');\n } else {\n stop();\n }\n\n if (swiper.params.cssMode && swiper.autoplay.running) run();else if (autoplayResult === false) {\n run();\n }\n }, delay);\n }\n\n function start() {\n if (typeof timeout !== 'undefined') return false;\n if (swiper.autoplay.running) return false;\n swiper.autoplay.running = true;\n emit('autoplayStart');\n run();\n return true;\n }\n\n function stop() {\n if (!swiper.autoplay.running) return false;\n if (typeof timeout === 'undefined') return false;\n\n if (timeout) {\n clearTimeout(timeout);\n timeout = undefined;\n }\n\n swiper.autoplay.running = false;\n emit('autoplayStop');\n return true;\n }\n\n function pause(speed) {\n if (!swiper.autoplay.running) return;\n if (swiper.autoplay.paused) return;\n if (timeout) clearTimeout(timeout);\n swiper.autoplay.paused = true;\n\n if (speed === 0 || !swiper.params.autoplay.waitForTransition) {\n swiper.autoplay.paused = false;\n run();\n } else {\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].addEventListener(event, onTransitionEnd);\n });\n }\n }\n\n function onVisibilityChange() {\n const document = getDocument();\n\n if (document.visibilityState === 'hidden' && swiper.autoplay.running) {\n pause();\n }\n\n if (document.visibilityState === 'visible' && swiper.autoplay.paused) {\n run();\n swiper.autoplay.paused = false;\n }\n }\n\n function onTransitionEnd(e) {\n if (!swiper || swiper.destroyed || !swiper.$wrapperEl) return;\n if (e.target !== swiper.$wrapperEl[0]) return;\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n swiper.autoplay.paused = false;\n\n if (!swiper.autoplay.running) {\n stop();\n } else {\n run();\n }\n }\n\n function onMouseEnter() {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n emit('autoplayPause');\n pause();\n }\n\n ['transitionend', 'webkitTransitionEnd'].forEach(event => {\n swiper.$wrapperEl[0].removeEventListener(event, onTransitionEnd);\n });\n }\n\n function onMouseLeave() {\n if (swiper.params.autoplay.disableOnInteraction) {\n return;\n }\n\n swiper.autoplay.paused = false;\n emit('autoplayResume');\n run();\n }\n\n function attachMouseEvents() {\n if (swiper.params.autoplay.pauseOnMouseEnter) {\n swiper.$el.on('mouseenter', onMouseEnter);\n swiper.$el.on('mouseleave', onMouseLeave);\n }\n }\n\n function detachMouseEvents() {\n swiper.$el.off('mouseenter', onMouseEnter);\n swiper.$el.off('mouseleave', onMouseLeave);\n }\n\n on('init', () => {\n if (swiper.params.autoplay.enabled) {\n start();\n const document = getDocument();\n document.addEventListener('visibilitychange', onVisibilityChange);\n attachMouseEvents();\n }\n });\n on('beforeTransitionStart', (_s, speed, internal) => {\n if (swiper.autoplay.running) {\n if (internal || !swiper.params.autoplay.disableOnInteraction) {\n swiper.autoplay.pause(speed);\n } else {\n stop();\n }\n }\n });\n on('sliderFirstMove', () => {\n if (swiper.autoplay.running) {\n if (swiper.params.autoplay.disableOnInteraction) {\n stop();\n } else {\n pause();\n }\n }\n });\n on('touchEnd', () => {\n if (swiper.params.cssMode && swiper.autoplay.paused && !swiper.params.autoplay.disableOnInteraction) {\n run();\n }\n });\n on('destroy', () => {\n detachMouseEvents();\n\n if (swiper.autoplay.running) {\n stop();\n }\n\n const document = getDocument();\n document.removeEventListener('visibilitychange', onVisibilityChange);\n });\n Object.assign(swiper.autoplay, {\n pause,\n run,\n start,\n stop\n });\n}","export default function effectTarget(effectParams, $slideEl) {\n if (effectParams.transformEl) {\n return $slideEl.find(effectParams.transformEl).css({\n 'backface-visibility': 'hidden',\n '-webkit-backface-visibility': 'hidden'\n });\n }\n\n return $slideEl;\n}","import effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nimport effectVirtualTransitionEnd from '../../shared/effect-virtual-transition-end.js';\nexport default function EffectFade(_ref) {\n let {\n swiper,\n extendParams,\n on\n } = _ref;\n extendParams({\n fadeEffect: {\n crossFade: false,\n transformEl: null\n }\n });\n\n const setTranslate = () => {\n const {\n slides\n } = swiper;\n const params = swiper.params.fadeEffect;\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = swiper.slides.eq(i);\n const offset = $slideEl[0].swiperSlideOffset;\n let tx = -offset;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n\n const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs($slideEl[0].progress), 0) : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n const $targetEl = effectTarget(params, $slideEl);\n $targetEl.css({\n opacity: slideOpacity\n }).transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n }\n };\n\n const setTransition = duration => {\n const {\n transformEl\n } = swiper.params.fadeEffect;\n const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n $transitionElements.transition(duration);\n effectVirtualTransitionEnd({\n swiper,\n duration,\n transformEl,\n allSlides: true\n });\n };\n\n effectInit({\n effect: 'fade',\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams: () => ({\n slidesPerView: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: !swiper.params.cssMode\n })\n });\n}","export default function effectInit(params) {\n const {\n effect,\n swiper,\n on,\n setTranslate,\n setTransition,\n overwriteParams,\n perspective,\n recreateShadows,\n getEffectParams\n } = params;\n on('beforeInit', () => {\n if (swiper.params.effect !== effect) return;\n swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n\n if (perspective && perspective()) {\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n }\n\n const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n Object.assign(swiper.params, overwriteParamsResult);\n Object.assign(swiper.originalParams, overwriteParamsResult);\n });\n on('setTranslate', () => {\n if (swiper.params.effect !== effect) return;\n setTranslate();\n });\n on('setTransition', (_s, duration) => {\n if (swiper.params.effect !== effect) return;\n setTransition(duration);\n });\n on('transitionEnd', () => {\n if (swiper.params.effect !== effect) return;\n\n if (recreateShadows) {\n if (!getEffectParams || !getEffectParams().slideShadows) return; // remove shadows\n\n swiper.slides.each(slideEl => {\n const $slideEl = swiper.$(slideEl);\n $slideEl.find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').remove();\n }); // create new one\n\n recreateShadows();\n }\n });\n let requireUpdateOnVirtual;\n on('virtualUpdate', () => {\n if (swiper.params.effect !== effect) return;\n\n if (!swiper.slides.length) {\n requireUpdateOnVirtual = true;\n }\n\n requestAnimationFrame(() => {\n if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n setTranslate();\n requireUpdateOnVirtual = false;\n }\n });\n });\n}","export default function effectVirtualTransitionEnd(_ref) {\n let {\n swiper,\n duration,\n transformEl,\n allSlides\n } = _ref;\n const {\n slides,\n activeIndex,\n $wrapperEl\n } = swiper;\n\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n let $transitionEndTarget;\n\n if (allSlides) {\n $transitionEndTarget = transformEl ? slides.find(transformEl) : slides;\n } else {\n $transitionEndTarget = transformEl ? slides.eq(activeIndex).find(transformEl) : slides.eq(activeIndex);\n }\n\n $transitionEndTarget.transitionEnd(() => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n}","function isObject(o) {\n return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\n\nfunction extend(target, src) {\n const noExtend = ['__proto__', 'constructor', 'prototype'];\n Object.keys(src).filter(key => noExtend.indexOf(key) < 0).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 if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]);\n } else {\n target[key] = src[key];\n }\n });\n}\n\nfunction needsNavigation(params) {\n if (params === void 0) {\n params = {};\n }\n\n return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined';\n}\n\nfunction needsPagination(params) {\n if (params === void 0) {\n params = {};\n }\n\n return params.pagination && typeof params.pagination.el === 'undefined';\n}\n\nfunction needsScrollbar(params) {\n if (params === void 0) {\n params = {};\n }\n\n return params.scrollbar && typeof params.scrollbar.el === 'undefined';\n}\n\nfunction uniqueClasses(classNames) {\n if (classNames === void 0) {\n classNames = '';\n }\n\n const classes = classNames.split(' ').map(c => c.trim()).filter(c => !!c);\n const unique = [];\n classes.forEach(c => {\n if (unique.indexOf(c) < 0) unique.push(c);\n });\n return unique.join(' ');\n}\n\nexport { isObject, extend, needsNavigation, needsPagination, needsScrollbar, uniqueClasses };","import { getWindow } from 'ssr-window';\nexport default function 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\n const resizeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('beforeResize');\n emit('resize');\n };\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\n if (newWidth !== width || newHeight !== height) {\n resizeHandler();\n }\n });\n });\n observer.observe(swiper.el);\n };\n\n const removeObserver = () => {\n if (animationFrame) {\n window.cancelAnimationFrame(animationFrame);\n }\n\n if (observer && observer.unobserve && swiper.el) {\n observer.unobserve(swiper.el);\n observer = null;\n }\n };\n\n const orientationChangeHandler = () => {\n if (!swiper || swiper.destroyed || !swiper.initialized) return;\n emit('orientationchange');\n };\n\n on('init', () => {\n if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n createObserver();\n return;\n }\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}","import { getWindow } from 'ssr-window';\nexport default function Observer(_ref) {\n let {\n swiper,\n extendParams,\n on,\n emit\n } = _ref;\n const observers = [];\n const window = getWindow();\n\n const attach = function (target, options) {\n if (options === void 0) {\n options = {};\n }\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 (mutations.length === 1) {\n emit('observerUpdate', mutations[0]);\n return;\n }\n\n const observerUpdate = function observerUpdate() {\n emit('observerUpdate', mutations[0]);\n };\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: typeof options.childList === 'undefined' ? true : options.childList,\n characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n });\n observers.push(observer);\n };\n\n const init = () => {\n if (!swiper.params.observer) return;\n\n if (swiper.params.observeParents) {\n const containerParents = swiper.$el.parents();\n\n for (let i = 0; i < containerParents.length; i += 1) {\n attach(containerParents[i]);\n }\n } // Observe container\n\n\n attach(swiper.$el[0], {\n childList: swiper.params.observeSlideChildren\n }); // Observe wrapper\n\n attach(swiper.$wrapperEl[0], {\n attributes: false\n });\n };\n\n const destroy = () => {\n observers.forEach(observer => {\n observer.disconnect();\n });\n observers.splice(0, observers.length);\n };\n\n extendParams({\n observer: false,\n observeParents: false,\n observeSlideChildren: false\n });\n on('init', init);\n on('destroy', destroy);\n}","/* underscore in name -> watch for changes */\nconst paramsList = ['modules', 'init', '_direction', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', '_spaceBetween', '_slidesPerView', 'maxBackfaceHiddenSlides', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_preloadImages', 'updateOnImagesReady', '_loop', '_loopAdditionalSlides', '_loopedSlides', '_loopFillGroupWithBlank', 'loopPreventsSlide', '_rewind', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideBlankClass', 'slideActiveClass', 'slideDuplicateActiveClass', 'slideVisibleClass', 'slideDuplicateClass', 'slideNextClass', 'slideDuplicateNextClass', 'slidePrevClass', 'slideDuplicatePrevClass', 'wrapperClass', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren', // modules\n'a11y', '_autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'lazy', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', '_virtual', 'zoom'];\nexport { paramsList };","import { isObject, extend } from './utils.js';\n\nfunction updateSwiper(_ref) {\n let {\n swiper,\n passedParams,\n changedParams,\n nextEl,\n prevEl,\n scrollbarEl,\n paginationEl\n } = _ref;\n const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction');\n const {\n params: currentParams,\n pagination,\n navigation,\n scrollbar,\n thumbs\n } = swiper;\n let needThumbsInit;\n let needControllerInit;\n let needPaginationInit;\n let needScrollbarInit;\n let needNavigationInit;\n\n if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) {\n needThumbsInit = true;\n }\n\n if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) {\n needControllerInit = true;\n }\n\n if (changedParams.includes('pagination') && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) {\n needPaginationInit = true;\n }\n\n if (changedParams.includes('scrollbar') && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) {\n needScrollbarInit = true;\n }\n\n if (changedParams.includes('navigation') && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) {\n needNavigationInit = true;\n }\n\n if (changedParams.includes('virtual')) {\n if (passedParams.virtual && passedParams.virtual.slides && swiper.virtual) {\n swiper.virtual.slides = passedParams.virtual.slides;\n swiper.virtual.update();\n }\n }\n\n const destroyModule = mod => {\n if (!swiper[mod]) return;\n swiper[mod].destroy();\n\n if (mod === 'navigation') {\n currentParams[mod].prevEl = undefined;\n currentParams[mod].nextEl = undefined;\n swiper[mod].prevEl = undefined;\n swiper[mod].nextEl = undefined;\n } else {\n currentParams[mod].el = undefined;\n swiper[mod].el = undefined;\n }\n };\n\n updateParams.forEach(key => {\n if (isObject(currentParams[key]) && isObject(passedParams[key])) {\n extend(currentParams[key], passedParams[key]);\n } else {\n const newValue = passedParams[key];\n\n if ((newValue === true || newValue === false) && (key === 'navigation' || key === 'pagination' || key === 'scrollbar')) {\n if (newValue === false) {\n destroyModule(key);\n }\n } else {\n currentParams[key] = passedParams[key];\n }\n }\n });\n\n if (needThumbsInit) {\n const initialized = thumbs.init();\n\n if (initialized) {\n thumbs.update(true);\n }\n }\n\n if (needControllerInit) {\n swiper.controller.control = currentParams.controller.control;\n }\n\n if (needPaginationInit) {\n if (paginationEl) currentParams.pagination.el = paginationEl;\n pagination.init();\n pagination.render();\n pagination.update();\n }\n\n if (needScrollbarInit) {\n if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl;\n scrollbar.init();\n scrollbar.updateSize();\n scrollbar.setTranslate();\n }\n\n if (needNavigationInit) {\n if (nextEl) currentParams.navigation.nextEl = nextEl;\n if (prevEl) currentParams.navigation.prevEl = prevEl;\n navigation.init();\n navigation.update();\n }\n\n if (changedParams.includes('allowSlideNext')) {\n swiper.allowSlideNext = passedParams.allowSlideNext;\n }\n\n if (changedParams.includes('allowSlidePrev')) {\n swiper.allowSlidePrev = passedParams.allowSlidePrev;\n }\n\n if (changedParams.includes('direction')) {\n swiper.changeDirection(passedParams.direction, false);\n }\n\n swiper.update();\n}\n\nexport { updateSwiper };","\n\n\n \n
\n \n \n \n
\n {#if needsNavigation(swiperParams)}\n
\n
\n {/if}\n {#if needsScrollbar(swiperParams)}\n
\n {/if}\n {#if needsPagination(swiperParams)}\n
\n {/if}\n \n
\n","import Swiper from 'swiper';\nimport { isObject, extend } from './utils.js';\nimport { paramsList } from './params-list.js';\n\nfunction getParams(obj) {\n if (obj === void 0) {\n obj = {};\n }\n\n const params = {\n on: {}\n };\n const passedParams = {};\n extend(params, Swiper.defaults);\n extend(params, Swiper.extendedDefaults);\n params._emitClasses = true;\n params.init = false;\n const rest = {};\n const allowedParams = paramsList.map(key => key.replace(/_/, ''));\n Object.keys(obj).forEach(key => {\n if (allowedParams.indexOf(key) >= 0) {\n if (isObject(obj[key])) {\n params[key] = {};\n passedParams[key] = {};\n extend(params[key], obj[key]);\n extend(passedParams[key], obj[key]);\n } else {\n params[key] = obj[key];\n passedParams[key] = obj[key];\n }\n } else if (key.search(/on[A-Z]/) === 0 && typeof obj[key] === 'function') {\n params.on[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key];\n } else {\n rest[key] = obj[key];\n }\n });\n ['navigation', 'pagination', 'scrollbar'].forEach(key => {\n if (params[key] === true) params[key] = {};\n if (params[key] === false) delete params[key];\n });\n return {\n params,\n passedParams,\n rest\n };\n}\n\nexport { getParams };","import Swiper from 'swiper';\nimport { needsNavigation, needsPagination, needsScrollbar } from './utils.js';\n\nfunction initSwiper(swiperParams) {\n return new Swiper(swiperParams);\n}\n\nfunction mountSwiper(_ref, swiperParams) {\n let {\n el,\n nextEl,\n prevEl,\n paginationEl,\n scrollbarEl,\n swiper\n } = _ref;\n\n if (needsNavigation(swiperParams) && nextEl && prevEl) {\n swiper.params.navigation.nextEl = nextEl;\n swiper.originalParams.navigation.nextEl = nextEl;\n swiper.params.navigation.prevEl = prevEl;\n swiper.originalParams.navigation.prevEl = prevEl;\n }\n\n if (needsPagination(swiperParams) && paginationEl) {\n swiper.params.pagination.el = paginationEl;\n swiper.originalParams.pagination.el = paginationEl;\n }\n\n if (needsScrollbar(swiperParams) && scrollbarEl) {\n swiper.params.scrollbar.el = scrollbarEl;\n swiper.originalParams.scrollbar.el = scrollbarEl;\n }\n\n swiper.init(el);\n}\n\nexport { initSwiper, mountSwiper };","import { isObject } from './utils.js';\nimport { paramsList } from './params-list.js';\n\nfunction getChangedParams(swiperParams, oldParams) {\n const keys = [];\n if (!oldParams) return keys;\n\n const addKey = key => {\n if (keys.indexOf(key) < 0) keys.push(key);\n };\n\n const watchParams = paramsList.filter(key => key[0] === '_').map(key => key.replace(/_/, ''));\n watchParams.forEach(key => {\n if (key in swiperParams && key in oldParams) {\n if (isObject(swiperParams[key]) && isObject(oldParams[key])) {\n const newKeys = Object.keys(swiperParams[key]);\n const oldKeys = Object.keys(oldParams[key]);\n\n if (newKeys.length !== oldKeys.length) {\n addKey(key);\n } else {\n newKeys.forEach(newKey => {\n if (swiperParams[key][newKey] !== oldParams[key][newKey]) {\n addKey(key);\n }\n });\n oldKeys.forEach(oldKey => {\n if (swiperParams[key][oldKey] !== oldParams[key][oldKey]) addKey(key);\n });\n }\n } else if (swiperParams[key] !== oldParams[key]) {\n addKey(key);\n }\n }\n });\n return keys;\n}\n\nexport { getChangedParams };","\n\n\n {#if zoom}\n \n \n
\n {:else}\n \n {/if}\n
\n","\r\n\r\n{#if images.length}\r\n
\r\n {#if images.length > 1}\r\n {#if slides}\r\n \r\n {#each images as image}\r\n \r\n
\r\n
\r\n \"\"\r\n {#if image.copyright}
{image.copyright ?? ''}
{/if}\r\n
\r\n {#if caption && image.title}
{image.title}
{/if}\r\n
\r\n
\r\n {/each}\r\n
\r\n {:else}\r\n {#each images as image}\r\n
\r\n
\r\n \"\"\r\n {#if image.copyright}
{image.copyright ?? ''}
{/if}\r\n
\r\n {#if caption && image.title}
{image.title}
{/if}\r\n
\r\n {/each}\r\n {/if}\r\n {:else}\r\n
\r\n
\r\n \"\"\r\n {#if images[0].copyright}
{images[0].copyright ?? ''}
{/if}\r\n
\r\n {#if caption && images[0]}
{images[0].title}
{/if}\r\n
\r\n {/if}\r\n
\r\n{/if}\r\n\r\n","export default function toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n\n var number = Number(dirtyNumber);\n\n if (isNaN(number)) {\n return number;\n }\n\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}","export default function requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}","import requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\n\nexport default function toDate(argument) {\n requiredArgs(1, arguments);\n var argStr = Object.prototype.toString.call(argument); // Clone the date\n\n if (argument instanceof Date || typeof argument === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule\"); // eslint-disable-next-line no-console\n\n console.warn(new Error().stack);\n }\n\n return new Date(NaN);\n }\n}","import toInteger from \"../_lib/toInteger/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\n\nexport default function addMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var timestamp = toDate(dirtyDate).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount);\n}","/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport default function getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the original date\n * @returns {Date} the start of a day\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\n\nexport default function startOfDay(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n date.setHours(0, 0, 0, 0);\n return date;\n}","import getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport startOfDay from \"../startOfDay/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000;\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of calendar days\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\n\nexport default function differenceInCalendarDays(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var startOfDayLeft = startOfDay(dirtyDateLeft);\n var startOfDayRight = startOfDay(dirtyDateRight);\n var timestampLeft = startOfDayLeft.getTime() - getTimezoneOffsetInMilliseconds(startOfDayLeft);\n var timestampRight = startOfDayRight.getTime() - getTimezoneOffsetInMilliseconds(startOfDayRight); // Round the number of days to the nearest integer\n // because the number of milliseconds in a day is not constant\n // (e.g. it's different in the day of the daylight saving time clock shift)\n\n return Math.round((timestampLeft - timestampRight) / MILLISECONDS_IN_DAY);\n}","/**\n * Days in 1 week.\n *\n * @name daysInWeek\n * @constant\n * @type {number}\n * @default\n */\nexport var daysInWeek = 7;\n/**\n * Maximum allowed time.\n *\n * @name maxTime\n * @constant\n * @type {number}\n * @default\n */\n\nexport var maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n/**\n * Milliseconds in 1 minute\n *\n * @name millisecondsInMinute\n * @constant\n * @type {number}\n * @default\n */\n\nexport var millisecondsInMinute = 60000;\n/**\n * Milliseconds in 1 hour\n *\n * @name millisecondsInHour\n * @constant\n * @type {number}\n * @default\n */\n\nexport var millisecondsInHour = 3600000;\n/**\n * Milliseconds in 1 second\n *\n * @name millisecondsInSecond\n * @constant\n * @type {number}\n * @default\n */\n\nexport var millisecondsInSecond = 1000;\n/**\n * Minimum allowed time.\n *\n * @name minTime\n * @constant\n * @type {number}\n * @default\n */\n\nexport var minTime = -maxTime;\n/**\n * Minutes in 1 hour\n *\n * @name minutesInHour\n * @constant\n * @type {number}\n * @default\n */\n\nexport var minutesInHour = 60;\n/**\n * Months in 1 quarter\n *\n * @name monthsInQuarter\n * @constant\n * @type {number}\n * @default\n */\n\nexport var monthsInQuarter = 3;\n/**\n * Months in 1 year\n *\n * @name monthsInYear\n * @constant\n * @type {number}\n * @default\n */\n\nexport var monthsInYear = 12;\n/**\n * Quarters in 1 year\n *\n * @name quartersInYear\n * @constant\n * @type {number}\n * @default\n */\n\nexport var quartersInYear = 4;\n/**\n * Seconds in 1 hour\n *\n * @name secondsInHour\n * @constant\n * @type {number}\n * @default\n */\n\nexport var secondsInHour = 3600;\n/**\n * Seconds in 1 minute\n *\n * @name secondsInMinute\n * @constant\n * @type {number}\n * @default\n */\n\nexport var secondsInMinute = 60;","import requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\n\nexport default function isDate(value) {\n requiredArgs(1, arguments);\n return value instanceof Date || typeof value === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}","import isDate from \"../isDate/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Now `isValid` doesn't throw an exception\n * if the first argument is not an instance of Date.\n * Instead, argument is converted beforehand using `toDate`.\n *\n * Examples:\n *\n * | `isValid` argument | Before v2.0.0 | v2.0.0 onward |\n * |---------------------------|---------------|---------------|\n * | `new Date()` | `true` | `true` |\n * | `new Date('2016-01-01')` | `true` | `true` |\n * | `new Date('')` | `false` | `false` |\n * | `new Date(1488370835081)` | `true` | `true` |\n * | `new Date(NaN)` | `false` | `false` |\n * | `'2016-01-01'` | `TypeError` | `false` |\n * | `''` | `TypeError` | `false` |\n * | `1488370835081` | `TypeError` | `true` |\n * | `NaN` | `TypeError` | `false` |\n *\n * We introduce this change to make *date-fns* consistent with ECMAScript behavior\n * that try to coerce arguments to the expected type\n * (which is also the case with other *date-fns* functions).\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\n\nexport default function isValid(dirtyDate) {\n requiredArgs(1, arguments);\n\n if (!isDate(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n\n var date = toDate(dirtyDate);\n return !isNaN(Number(date));\n}","import toDate from \"../toDate/index.js\";\nimport differenceInCalendarDays from \"../differenceInCalendarDays/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\"; // Like `compareAsc` but uses local time not UTC, which is needed\n// for accurate equality comparisons of UTC timestamps that end up\n// having the same representation in local time, e.g. one hour before\n// DST ends vs. the instant that DST ends.\n\nfunction compareLocalAsc(dateLeft, dateRight) {\n var diff = dateLeft.getFullYear() - dateRight.getFullYear() || dateLeft.getMonth() - dateRight.getMonth() || dateLeft.getDate() - dateRight.getDate() || dateLeft.getHours() - dateRight.getHours() || dateLeft.getMinutes() - dateRight.getMinutes() || dateLeft.getSeconds() - dateRight.getSeconds() || dateLeft.getMilliseconds() - dateRight.getMilliseconds();\n\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1; // Return 0 if diff is 0; return NaN if diff is NaN\n } else {\n return diff;\n }\n}\n/**\n * @name differenceInDays\n * @category Day Helpers\n * @summary Get the number of full days between the given dates.\n *\n * @description\n * Get the number of full day periods between two dates. Fractional days are\n * truncated towards zero.\n *\n * One \"full day\" is the distance between a local time in one day to the same\n * local time on the next or previous day. A full day can sometimes be less than\n * or more than 24 hours if a daylight savings change happens between two dates.\n *\n * To ignore DST and only measure exact 24-hour periods, use this instead:\n * `Math.floor(differenceInHours(dateLeft, dateRight)/24)|0`.\n *\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} dateLeft - the later date\n * @param {Date|Number} dateRight - the earlier date\n * @returns {Number} the number of full days according to the local timezone\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // How many full days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 365\n * // How many full days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 0\n * // How many full days are between\n * // 1 March 2020 0:00 and 1 June 2020 0:00 ?\n * // Note: because local time is used, the\n * // result will always be 92 days, even in\n * // time zones where DST starts and the\n * // period has only 92*24-1 hours.\n * const result = differenceInDays(\n * new Date(2020, 5, 1),\n * new Date(2020, 2, 1)\n * )\n//=> 92\n */\n\n\nexport default function differenceInDays(dirtyDateLeft, dirtyDateRight) {\n requiredArgs(2, arguments);\n var dateLeft = toDate(dirtyDateLeft);\n var dateRight = toDate(dirtyDateRight);\n var sign = compareLocalAsc(dateLeft, dateRight);\n var difference = Math.abs(differenceInCalendarDays(dateLeft, dateRight));\n dateLeft.setDate(dateLeft.getDate() - sign * difference); // Math.abs(diff in full days - diff in calendar days) === 1 if last calendar day is not full\n // If so, result must be decreased by 1 in absolute value\n\n var isLastDayNotFull = Number(compareLocalAsc(dateLeft, dateRight) === -sign);\n var result = sign * (difference - isLastDayNotFull); // Prevent negative zero\n\n return result === 0 ? 0 : result;\n}","var formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\n\nvar formatDistance = function (token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n\n return result;\n};\n\nexport default formatDistance;","export default function buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}","import buildFormatLongFn from \"../../../_lib/buildFormatLongFn/index.js\";\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nexport default formatLong;","var formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\n\nvar formatRelative = function (token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\n\nexport default formatRelative;","export default function buildLocalizeFn(args) {\n return function (dirtyIndex, dirtyOptions) {\n var options = dirtyOptions || {};\n var context = options.context ? String(options.context) : 'standalone';\n var valuesArray;\n\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n\n var _width = options.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex; // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n\n return valuesArray[index];\n };\n}","import buildLocalizeFn from \"../../../_lib/buildLocalizeFn/index.js\";\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n}; // Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\n\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\n\nvar ordinalNumber = function (dirtyNumber, _options) {\n var number = Number(dirtyNumber); // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n\n case 2:\n return number + 'nd';\n\n case 3:\n return number + 'rd';\n }\n }\n\n return number + 'th';\n};\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function (quarter) {\n return quarter - 1;\n }\n }),\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nexport default localize;","export default function buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\n\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n\n return undefined;\n}","import buildMatchFn from \"../../../_lib/buildMatchFn/index.js\";\nimport buildMatchPatternFn from \"../../../_lib/buildMatchPatternFn/index.js\";\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function (value) {\n return parseInt(value, 10);\n }\n }),\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function (index) {\n return index + 1;\n }\n }),\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nexport default match;","export default function buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}","import formatDistance from \"./_lib/formatDistance/index.js\";\nimport formatLong from \"./_lib/formatLong/index.js\";\nimport formatRelative from \"./_lib/formatRelative/index.js\";\nimport localize from \"./_lib/localize/index.js\";\nimport match from \"./_lib/match/index.js\";\n\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0\n /* Sunday */\n ,\n firstWeekContainsDate: 1\n }\n};\nexport default locale;","import toInteger from \"../_lib/toInteger/index.js\";\nimport addMilliseconds from \"../addMilliseconds/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\n\nexport default function subMilliseconds(dirtyDate, dirtyAmount) {\n requiredArgs(2, arguments);\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount);\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_DAY = 86400000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCDayOfYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import getUTCISOWeekYear from \"../getUTCISOWeekYear/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCISOWeekYear(dirtyDate) {\n requiredArgs(1, arguments);\n var year = getUTCISOWeekYear(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCISOWeek from \"../startOfUTCISOWeek/index.js\";\nimport startOfUTCISOWeekYear from \"../startOfUTCISOWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCISOWeek(dirtyDate) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCISOWeek(date).getTime() - startOfUTCISOWeekYear(date).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeek(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeekYear(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var year = date.getUTCFullYear();\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, dirtyOptions);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, dirtyOptions);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}","import getUTCWeekYear from \"../getUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport toInteger from \"../toInteger/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function startOfUTCWeekYear(dirtyDate, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale && locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate);\n var year = getUTCWeekYear(dirtyDate, dirtyOptions);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, dirtyOptions);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport startOfUTCWeek from \"../startOfUTCWeek/index.js\";\nimport startOfUTCWeekYear from \"../startOfUTCWeekYear/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nvar MILLISECONDS_IN_WEEK = 604800000; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function getUTCWeek(dirtyDate, options) {\n requiredArgs(1, arguments);\n var date = toDate(dirtyDate);\n var diff = startOfUTCWeek(date, options).getTime() - startOfUTCWeekYear(date, options).getTime(); // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}","export default function addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n\n while (output.length < targetLength) {\n output = '0' + output;\n }\n\n return sign + output;\n}","import addLeadingZeros from \"../../addLeadingZeros/index.js\";\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nvar formatters = {\n // Year\n y: function (date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function (date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n // Day of the month\n d: function (date, token) {\n return addLeadingZeros(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function (date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n\n case 'aaa':\n return dayPeriodEnumValue;\n\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function (date, token) {\n return addLeadingZeros(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function (date, token) {\n return addLeadingZeros(date.getUTCHours(), token.length);\n },\n // Minute\n m: function (date, token) {\n return addLeadingZeros(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function (date, token) {\n return addLeadingZeros(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function (date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, token.length);\n }\n};\nexport default formatters;","import getUTCDayOfYear from \"../../../_lib/getUTCDayOfYear/index.js\";\nimport getUTCISOWeek from \"../../../_lib/getUTCISOWeek/index.js\";\nimport getUTCISOWeekYear from \"../../../_lib/getUTCISOWeekYear/index.js\";\nimport getUTCWeek from \"../../../_lib/getUTCWeek/index.js\";\nimport getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport addLeadingZeros from \"../../addLeadingZeros/index.js\";\nimport lightFormatters from \"../lightFormatters/index.js\";\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function (date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear(); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n\n return lightFormatters.y(date, token);\n },\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options); // Returns 1 for 1 BC (which is year 0 in JavaScript)\n\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear; // Two digit year\n\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n } // Ordinal number\n\n\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n } // Padding\n\n\n return addLeadingZeros(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function (date, token) {\n var isoWeekYear = getUTCISOWeekYear(date); // Padding\n\n return addLeadingZeros(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length);\n },\n // Quarter\n Q: function (date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'QQ':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function (date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n\n case 'qq':\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function (date, token, localize) {\n var month = date.getUTCMonth();\n\n switch (token) {\n case 'M':\n case 'MM':\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function (date, token, localize) {\n var month = date.getUTCMonth();\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n\n case 'LL':\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function (date, token, localize, options) {\n var week = getUTCWeek(date, options);\n\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n\n return addLeadingZeros(week, token.length);\n },\n // ISO week of year\n I: function (date, token, localize) {\n var isoWeek = getUTCISOWeek(date);\n\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n // Day of the month\n d: function (date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n\n return lightFormatters.d(date, token);\n },\n // Day of year\n D: function (date, token, localize) {\n var dayOfYear = getUTCDayOfYear(date);\n\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n // Day of week\n E: function (date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function (date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function (date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return lightFormatters.h(date, token);\n },\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n\n return lightFormatters.H(date, token);\n },\n // Hour [0-11]\n K: function (date, token, localize) {\n var hours = date.getUTCHours() % 12;\n\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n // Hour [1-24]\n k: function (date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n // Minute\n m: function (date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n\n return lightFormatters.m(date, token);\n },\n // Second\n s: function (date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n\n return lightFormatters.s(date, token);\n },\n // Fraction of second\n S: function (date, token) {\n return lightFormatters.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return 'Z';\n }\n\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function (date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length);\n }\n};\n\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n\n if (minutes === 0) {\n return sign + String(hours);\n }\n\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n\n return formatTimezone(offset, dirtyDelimiter);\n}\n\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n\nexport default formatters;","function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n}\n\nfunction timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n}\n\nfunction dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n var dateTimeFormat;\n\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n}\n\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nexport default longFormatters;","var protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nexport function isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nexport function isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nexport function throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://git.io/fxCyr\"));\n }\n}","import isValid from \"../isValid/index.js\";\nimport defaultLocale from \"../locale/en-US/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport formatters from \"../_lib/format/formatters/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\"; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\n\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://git.io/fxCyr\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The second argument is now required for the sake of explicitness.\n *\n * ```javascript\n * // Before v2.0.0\n * format(new Date(2016, 0, 1))\n *\n * // v2.0.0 onward\n * format(new Date(2016, 0, 1), \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\")\n * ```\n *\n * - New format string API for `format` function\n * which is based on [Unicode Technical Standard #35](https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table).\n * See [this post](https://blog.date-fns.org/post/unicode-tokens-in-date-fns-v2-sreatyki91jg) for more details.\n *\n * - Characters are now escaped using single quote symbols (`'`) instead of square brackets.\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://git.io/fxCyr\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * var result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nexport default function format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n requiredArgs(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var options = dirtyOptions || {};\n var locale = options.locale || defaultLocale;\n var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n\n var originalDate = toDate(dirtyDate);\n\n if (!isValid(originalDate)) {\n throw new RangeError('Invalid time value');\n } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n\n\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong, formatterOptions);\n }\n\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n\n var firstCharacter = substring[0];\n\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n\n var formatter = formatters[firstCharacter];\n\n if (formatter) {\n if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, dirtyDate);\n }\n\n if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(substring)) {\n throwProtectedError(substring, dirtyFormatStr, dirtyDate);\n }\n\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n\n return substring;\n }).join('');\n return result;\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","export default function assign(target, dirtyObject) {\n if (target == null) {\n throw new TypeError('assign requires that input parameter not be null or undefined');\n }\n\n dirtyObject = dirtyObject || {};\n\n for (var property in dirtyObject) {\n if (Object.prototype.hasOwnProperty.call(dirtyObject, property)) {\n target[property] = dirtyObject[property];\n }\n }\n\n return target;\n}","import toDate from \"../toDate/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * @param {Date|Number} date - the date that should be after the other one to return true\n * @param {Date|Number} dateToCompare - the date to compare with\n * @returns {Boolean} the first date is after the second date\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * var result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\n\nexport default function isAfter(dirtyDate, dirtyDateToCompare) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var dateToCompare = toDate(dirtyDateToCompare);\n return date.getTime() > dateToCompare.getTime();\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCDay(dirtyDate, dirtyDay, dirtyOptions) {\n requiredArgs(2, arguments);\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n var date = toDate(dirtyDate);\n var day = toInteger(dirtyDay);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}","import getUTCWeekYear from \"../../../_lib/getUTCWeekYear/index.js\";\nimport setUTCDay from \"../../../_lib/setUTCDay/index.js\";\nimport setUTCISODay from \"../../../_lib/setUTCISODay/index.js\";\nimport setUTCISOWeek from \"../../../_lib/setUTCISOWeek/index.js\";\nimport setUTCWeek from \"../../../_lib/setUTCWeek/index.js\";\nimport startOfUTCISOWeek from \"../../../_lib/startOfUTCISOWeek/index.js\";\nimport startOfUTCWeek from \"../../../_lib/startOfUTCWeek/index.js\";\nvar MILLISECONDS_IN_HOUR = 3600000;\nvar MILLISECONDS_IN_MINUTE = 60000;\nvar MILLISECONDS_IN_SECOND = 1000;\nvar numericPatterns = {\n month: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n date: /^(3[0-1]|[0-2]?\\d)/,\n // 0 to 31\n dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/,\n // 0 to 366\n week: /^(5[0-3]|[0-4]?\\d)/,\n // 0 to 53\n hour23h: /^(2[0-3]|[0-1]?\\d)/,\n // 0 to 23\n hour24h: /^(2[0-4]|[0-1]?\\d)/,\n // 0 to 24\n hour11h: /^(1[0-1]|0?\\d)/,\n // 0 to 11\n hour12h: /^(1[0-2]|0?\\d)/,\n // 0 to 12\n minute: /^[0-5]?\\d/,\n // 0 to 59\n second: /^[0-5]?\\d/,\n // 0 to 59\n singleDigit: /^\\d/,\n // 0 to 9\n twoDigits: /^\\d{1,2}/,\n // 0 to 99\n threeDigits: /^\\d{1,3}/,\n // 0 to 999\n fourDigits: /^\\d{1,4}/,\n // 0 to 9999\n anyDigitsSigned: /^-?\\d+/,\n singleDigitSigned: /^-?\\d/,\n // 0 to 9, -0 to -9\n twoDigitsSigned: /^-?\\d{1,2}/,\n // 0 to 99, -0 to -99\n threeDigitsSigned: /^-?\\d{1,3}/,\n // 0 to 999, -0 to -999\n fourDigitsSigned: /^-?\\d{1,4}/ // 0 to 9999, -0 to -9999\n\n};\nvar timezonePatterns = {\n basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/\n};\n\nfunction parseNumericPattern(pattern, string, valueCallback) {\n var matchResult = string.match(pattern);\n\n if (!matchResult) {\n return null;\n }\n\n var value = parseInt(matchResult[0], 10);\n return {\n value: valueCallback ? valueCallback(value) : value,\n rest: string.slice(matchResult[0].length)\n };\n}\n\nfunction parseTimezonePattern(pattern, string) {\n var matchResult = string.match(pattern);\n\n if (!matchResult) {\n return null;\n } // Input is 'Z'\n\n\n if (matchResult[0] === 'Z') {\n return {\n value: 0,\n rest: string.slice(1)\n };\n }\n\n var sign = matchResult[1] === '+' ? 1 : -1;\n var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n return {\n value: sign * (hours * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE + seconds * MILLISECONDS_IN_SECOND),\n rest: string.slice(matchResult[0].length)\n };\n}\n\nfunction parseAnyDigitsSigned(string, valueCallback) {\n return parseNumericPattern(numericPatterns.anyDigitsSigned, string, valueCallback);\n}\n\nfunction parseNDigits(n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigit, string, valueCallback);\n\n case 2:\n return parseNumericPattern(numericPatterns.twoDigits, string, valueCallback);\n\n case 3:\n return parseNumericPattern(numericPatterns.threeDigits, string, valueCallback);\n\n case 4:\n return parseNumericPattern(numericPatterns.fourDigits, string, valueCallback);\n\n default:\n return parseNumericPattern(new RegExp('^\\\\d{1,' + n + '}'), string, valueCallback);\n }\n}\n\nfunction parseNDigitsSigned(n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigitSigned, string, valueCallback);\n\n case 2:\n return parseNumericPattern(numericPatterns.twoDigitsSigned, string, valueCallback);\n\n case 3:\n return parseNumericPattern(numericPatterns.threeDigitsSigned, string, valueCallback);\n\n case 4:\n return parseNumericPattern(numericPatterns.fourDigitsSigned, string, valueCallback);\n\n default:\n return parseNumericPattern(new RegExp('^-?\\\\d{1,' + n + '}'), string, valueCallback);\n }\n}\n\nfunction dayPeriodEnumToHours(enumValue) {\n switch (enumValue) {\n case 'morning':\n return 4;\n\n case 'evening':\n return 17;\n\n case 'pm':\n case 'noon':\n case 'afternoon':\n return 12;\n\n case 'am':\n case 'midnight':\n case 'night':\n default:\n return 0;\n }\n}\n\nfunction normalizeTwoDigitYear(twoDigitYear, currentYear) {\n var isCommonEra = currentYear > 0; // Absolute number of the current year:\n // 1 -> 1 AC\n // 0 -> 1 BC\n // -1 -> 2 BC\n\n var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n var result;\n\n if (absCurrentYear <= 50) {\n result = twoDigitYear || 100;\n } else {\n var rangeEnd = absCurrentYear + 50;\n var rangeEndCentury = Math.floor(rangeEnd / 100) * 100;\n var isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n }\n\n return isCommonEra ? result : 1 - result;\n}\n\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; // User for validation\n\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O* | Timezone (GMT) |\n * | p | | P | |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z* | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n */\n\n\nvar parsers = {\n // Era\n G: {\n priority: 140,\n parse: function (string, token, match, _options) {\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return match.era(string, {\n width: 'abbreviated'\n }) || match.era(string, {\n width: 'narrow'\n });\n // A, B\n\n case 'GGGGG':\n return match.era(string, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n\n case 'GGGG':\n default:\n return match.era(string, {\n width: 'wide'\n }) || match.era(string, {\n width: 'abbreviated'\n }) || match.era(string, {\n width: 'narrow'\n });\n }\n },\n set: function (date, flags, value, _options) {\n flags.era = value;\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['R', 'u', 't', 'T']\n },\n // Year\n y: {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n priority: 130,\n parse: function (string, token, match, _options) {\n var valueCallback = function (year) {\n return {\n year: year,\n isTwoDigitYear: token === 'yy'\n };\n };\n\n switch (token) {\n case 'y':\n return parseNDigits(4, string, valueCallback);\n\n case 'yo':\n return match.ordinalNumber(string, {\n unit: 'year',\n valueCallback: valueCallback\n });\n\n default:\n return parseNDigits(token.length, string, valueCallback);\n }\n },\n validate: function (_date, value, _options) {\n return value.isTwoDigitYear || value.year > 0;\n },\n set: function (date, flags, value, _options) {\n var currentYear = date.getUTCFullYear();\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n }\n\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'u', 'w', 'I', 'i', 'e', 'c', 't', 'T']\n },\n // Local week-numbering year\n Y: {\n priority: 130,\n parse: function (string, token, match, _options) {\n var valueCallback = function (year) {\n return {\n year: year,\n isTwoDigitYear: token === 'YY'\n };\n };\n\n switch (token) {\n case 'Y':\n return parseNDigits(4, string, valueCallback);\n\n case 'Yo':\n return match.ordinalNumber(string, {\n unit: 'year',\n valueCallback: valueCallback\n });\n\n default:\n return parseNDigits(token.length, string, valueCallback);\n }\n },\n validate: function (_date, value, _options) {\n return value.isTwoDigitYear || value.year > 0;\n },\n set: function (date, flags, value, options) {\n var currentYear = getUTCWeekYear(date, options);\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n }\n\n var year = !('era' in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options);\n },\n incompatibleTokens: ['y', 'R', 'u', 'Q', 'q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']\n },\n // ISO week-numbering year\n R: {\n priority: 130,\n parse: function (string, token, _match, _options) {\n if (token === 'R') {\n return parseNDigitsSigned(4, string);\n }\n\n return parseNDigitsSigned(token.length, string);\n },\n set: function (_date, _flags, value, _options) {\n var firstWeekOfYear = new Date(0);\n firstWeekOfYear.setUTCFullYear(value, 0, 4);\n firstWeekOfYear.setUTCHours(0, 0, 0, 0);\n return startOfUTCISOWeek(firstWeekOfYear);\n },\n incompatibleTokens: ['G', 'y', 'Y', 'u', 'Q', 'q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']\n },\n // Extended year\n u: {\n priority: 130,\n parse: function (string, token, _match, _options) {\n if (token === 'u') {\n return parseNDigitsSigned(4, string);\n }\n\n return parseNDigitsSigned(token.length, string);\n },\n set: function (date, _flags, value, _options) {\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['G', 'y', 'Y', 'R', 'w', 'I', 'i', 'e', 'c', 't', 'T']\n },\n // Quarter\n Q: {\n priority: 120,\n parse: function (string, token, match, _options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n case 'QQ':\n // 01, 02, 03, 04\n return parseNDigits(token.length, string);\n // 1st, 2nd, 3rd, 4th\n\n case 'Qo':\n return match.ordinalNumber(string, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'QQQ':\n return match.quarter(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'QQQQQ':\n return match.quarter(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'QQQQ':\n default:\n return match.quarter(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.quarter(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 4;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Stand-alone quarter\n q: {\n priority: 120,\n parse: function (string, token, match, _options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n case 'qq':\n // 01, 02, 03, 04\n return parseNDigits(token.length, string);\n // 1st, 2nd, 3rd, 4th\n\n case 'qo':\n return match.ordinalNumber(string, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n\n case 'qqq':\n return match.quarter(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n\n case 'qqqqq':\n return match.quarter(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n\n case 'qqqq':\n default:\n return match.quarter(string, {\n width: 'wide',\n context: 'standalone'\n }) || match.quarter(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.quarter(string, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 4;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'Q', 'M', 'L', 'w', 'I', 'd', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Month\n M: {\n priority: 110,\n parse: function (string, token, match, _options) {\n var valueCallback = function (value) {\n return value - 1;\n };\n\n switch (token) {\n // 1, 2, ..., 12\n case 'M':\n return parseNumericPattern(numericPatterns.month, string, valueCallback);\n // 01, 02, ..., 12\n\n case 'MM':\n return parseNDigits(2, string, valueCallback);\n // 1st, 2nd, ..., 12th\n\n case 'Mo':\n return match.ordinalNumber(string, {\n unit: 'month',\n valueCallback: valueCallback\n });\n // Jan, Feb, ..., Dec\n\n case 'MMM':\n return match.month(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // J, F, ..., D\n\n case 'MMMMM':\n return match.month(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n\n case 'MMMM':\n default:\n return match.month(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.month(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.month(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 11;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'L', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Stand-alone month\n L: {\n priority: 110,\n parse: function (string, token, match, _options) {\n var valueCallback = function (value) {\n return value - 1;\n };\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return parseNumericPattern(numericPatterns.month, string, valueCallback);\n // 01, 02, ..., 12\n\n case 'LL':\n return parseNDigits(2, string, valueCallback);\n // 1st, 2nd, ..., 12th\n\n case 'Lo':\n return match.ordinalNumber(string, {\n unit: 'month',\n valueCallback: valueCallback\n });\n // Jan, Feb, ..., Dec\n\n case 'LLL':\n return match.month(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // J, F, ..., D\n\n case 'LLLLL':\n return match.month(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n\n case 'LLLL':\n default:\n return match.month(string, {\n width: 'wide',\n context: 'standalone'\n }) || match.month(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.month(string, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 11;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'M', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Local week of year\n w: {\n priority: 100,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'w':\n return parseNumericPattern(numericPatterns.week, string);\n\n case 'wo':\n return match.ordinalNumber(string, {\n unit: 'week'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 53;\n },\n set: function (date, _flags, value, options) {\n return startOfUTCWeek(setUTCWeek(date, value, options), options);\n },\n incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'i', 't', 'T']\n },\n // ISO week of year\n I: {\n priority: 100,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'I':\n return parseNumericPattern(numericPatterns.week, string);\n\n case 'Io':\n return match.ordinalNumber(string, {\n unit: 'week'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 53;\n },\n set: function (date, _flags, value, options) {\n return startOfUTCISOWeek(setUTCISOWeek(date, value, options), options);\n },\n incompatibleTokens: ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'e', 'c', 't', 'T']\n },\n // Day of the month\n d: {\n priority: 90,\n subPriority: 1,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'd':\n return parseNumericPattern(numericPatterns.date, string);\n\n case 'do':\n return match.ordinalNumber(string, {\n unit: 'date'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (date, value, _options) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n var month = date.getUTCMonth();\n\n if (isLeapYear) {\n return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];\n } else {\n return value >= 1 && value <= DAYS_IN_MONTH[month];\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCDate(value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'w', 'I', 'D', 'i', 'e', 'c', 't', 'T']\n },\n // Day of year\n D: {\n priority: 90,\n subPriority: 1,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'D':\n case 'DD':\n return parseNumericPattern(numericPatterns.dayOfYear, string);\n\n case 'Do':\n return match.ordinalNumber(string, {\n unit: 'date'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (date, value, _options) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex(year);\n\n if (isLeapYear) {\n return value >= 1 && value <= 366;\n } else {\n return value >= 1 && value <= 365;\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMonth(0, value);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['Y', 'R', 'q', 'Q', 'M', 'L', 'w', 'I', 'd', 'E', 'i', 'e', 'c', 't', 'T']\n },\n // Day of week\n E: {\n priority: 90,\n parse: function (string, token, match, _options) {\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n\n case 'EEEEE':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'EEEEEE':\n return match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n\n case 'EEEE':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 6;\n },\n set: function (date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['D', 'i', 'e', 'c', 't', 'T']\n },\n // Local day of week\n e: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n\n switch (token) {\n // 3\n case 'e':\n case 'ee':\n // 03\n return parseNDigits(token.length, string, valueCallback);\n // 3rd\n\n case 'eo':\n return match.ordinalNumber(string, {\n unit: 'day',\n valueCallback: valueCallback\n });\n // Tue\n\n case 'eee':\n return match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // T\n\n case 'eeeee':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n\n case 'eeeeee':\n return match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tuesday\n\n case 'eeee':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.day(string, {\n width: 'short',\n context: 'formatting'\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 6;\n },\n set: function (date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'c', 't', 'T']\n },\n // Stand-alone local day of week\n c: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays;\n };\n\n switch (token) {\n // 3\n case 'c':\n case 'cc':\n // 03\n return parseNDigits(token.length, string, valueCallback);\n // 3rd\n\n case 'co':\n return match.ordinalNumber(string, {\n unit: 'day',\n valueCallback: valueCallback\n });\n // Tue\n\n case 'ccc':\n return match.day(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(string, {\n width: 'short',\n context: 'standalone'\n }) || match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // T\n\n case 'ccccc':\n return match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n\n case 'cccccc':\n return match.day(string, {\n width: 'short',\n context: 'standalone'\n }) || match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tuesday\n\n case 'cccc':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'standalone'\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'standalone'\n }) || match.day(string, {\n width: 'short',\n context: 'standalone'\n }) || match.day(string, {\n width: 'narrow',\n context: 'standalone'\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 6;\n },\n set: function (date, _flags, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['y', 'R', 'u', 'q', 'Q', 'M', 'L', 'I', 'd', 'D', 'E', 'i', 'e', 't', 'T']\n },\n // ISO day of week\n i: {\n priority: 90,\n parse: function (string, token, match, _options) {\n var valueCallback = function (value) {\n if (value === 0) {\n return 7;\n }\n\n return value;\n };\n\n switch (token) {\n // 2\n case 'i':\n case 'ii':\n // 02\n return parseNDigits(token.length, string);\n // 2nd\n\n case 'io':\n return match.ordinalNumber(string, {\n unit: 'day'\n });\n // Tue\n\n case 'iii':\n return match.day(string, {\n width: 'abbreviated',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n // T\n\n case 'iiiii':\n return match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n // Tu\n\n case 'iiiiii':\n return match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n // Tuesday\n\n case 'iiii':\n default:\n return match.day(string, {\n width: 'wide',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'abbreviated',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'short',\n context: 'formatting',\n valueCallback: valueCallback\n }) || match.day(string, {\n width: 'narrow',\n context: 'formatting',\n valueCallback: valueCallback\n });\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 7;\n },\n set: function (date, _flags, value, options) {\n date = setUTCISODay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['y', 'Y', 'u', 'q', 'Q', 'M', 'L', 'w', 'd', 'D', 'E', 'e', 'c', 't', 'T']\n },\n // AM or PM\n a: {\n priority: 80,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaaa':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'aaaa':\n default:\n return match.dayPeriod(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['b', 'B', 'H', 'k', 't', 'T']\n },\n // AM, PM, midnight\n b: {\n priority: 80,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbbb':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'bbbb':\n default:\n return match.dayPeriod(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'B', 'H', 'k', 't', 'T']\n },\n // in the morning, in the afternoon, in the evening, at night\n B: {\n priority: 80,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBBB':\n return match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n\n case 'BBBB':\n default:\n return match.dayPeriod(string, {\n width: 'wide',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'abbreviated',\n context: 'formatting'\n }) || match.dayPeriod(string, {\n width: 'narrow',\n context: 'formatting'\n });\n }\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'b', 't', 'T']\n },\n // Hour [1-12]\n h: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'h':\n return parseNumericPattern(numericPatterns.hour12h, string);\n\n case 'ho':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 12;\n },\n set: function (date, _flags, value, _options) {\n var isPM = date.getUTCHours() >= 12;\n\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else if (!isPM && value === 12) {\n date.setUTCHours(0, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n\n return date;\n },\n incompatibleTokens: ['H', 'K', 'k', 't', 'T']\n },\n // Hour [0-23]\n H: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'H':\n return parseNumericPattern(numericPatterns.hour23h, string);\n\n case 'Ho':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 23;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCHours(value, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'b', 'h', 'K', 'k', 't', 'T']\n },\n // Hour [0-11]\n K: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'K':\n return parseNumericPattern(numericPatterns.hour11h, string);\n\n case 'Ko':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 11;\n },\n set: function (date, _flags, value, _options) {\n var isPM = date.getUTCHours() >= 12;\n\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n\n return date;\n },\n incompatibleTokens: ['h', 'H', 'k', 't', 'T']\n },\n // Hour [1-24]\n k: {\n priority: 70,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'k':\n return parseNumericPattern(numericPatterns.hour24h, string);\n\n case 'ko':\n return match.ordinalNumber(string, {\n unit: 'hour'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 1 && value <= 24;\n },\n set: function (date, _flags, value, _options) {\n var hours = value <= 24 ? value % 24 : value;\n date.setUTCHours(hours, 0, 0, 0);\n return date;\n },\n incompatibleTokens: ['a', 'b', 'h', 'H', 'K', 't', 'T']\n },\n // Minute\n m: {\n priority: 60,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 'm':\n return parseNumericPattern(numericPatterns.minute, string);\n\n case 'mo':\n return match.ordinalNumber(string, {\n unit: 'minute'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 59;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMinutes(value, 0, 0);\n return date;\n },\n incompatibleTokens: ['t', 'T']\n },\n // Second\n s: {\n priority: 50,\n parse: function (string, token, match, _options) {\n switch (token) {\n case 's':\n return parseNumericPattern(numericPatterns.second, string);\n\n case 'so':\n return match.ordinalNumber(string, {\n unit: 'second'\n });\n\n default:\n return parseNDigits(token.length, string);\n }\n },\n validate: function (_date, value, _options) {\n return value >= 0 && value <= 59;\n },\n set: function (date, _flags, value, _options) {\n date.setUTCSeconds(value, 0);\n return date;\n },\n incompatibleTokens: ['t', 'T']\n },\n // Fraction of second\n S: {\n priority: 30,\n parse: function (string, token, _match, _options) {\n var valueCallback = function (value) {\n return Math.floor(value * Math.pow(10, -token.length + 3));\n };\n\n return parseNDigits(token.length, string, valueCallback);\n },\n set: function (date, _flags, value, _options) {\n date.setUTCMilliseconds(value);\n return date;\n },\n incompatibleTokens: ['t', 'T']\n },\n // Timezone (ISO-8601. +00:00 is `'Z'`)\n X: {\n priority: 10,\n parse: function (string, token, _match, _options) {\n switch (token) {\n case 'X':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string);\n\n case 'XX':\n return parseTimezonePattern(timezonePatterns.basic, string);\n\n case 'XXXX':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string);\n\n case 'XXXXX':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string);\n\n case 'XXX':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string);\n }\n },\n set: function (date, flags, value, _options) {\n if (flags.timestampIsSet) {\n return date;\n }\n\n return new Date(date.getTime() - value);\n },\n incompatibleTokens: ['t', 'T', 'x']\n },\n // Timezone (ISO-8601)\n x: {\n priority: 10,\n parse: function (string, token, _match, _options) {\n switch (token) {\n case 'x':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string);\n\n case 'xx':\n return parseTimezonePattern(timezonePatterns.basic, string);\n\n case 'xxxx':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string);\n\n case 'xxxxx':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string);\n\n case 'xxx':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string);\n }\n },\n set: function (date, flags, value, _options) {\n if (flags.timestampIsSet) {\n return date;\n }\n\n return new Date(date.getTime() - value);\n },\n incompatibleTokens: ['t', 'T', 'X']\n },\n // Seconds timestamp\n t: {\n priority: 40,\n parse: function (string, _token, _match, _options) {\n return parseAnyDigitsSigned(string);\n },\n set: function (_date, _flags, value, _options) {\n return [new Date(value * 1000), {\n timestampIsSet: true\n }];\n },\n incompatibleTokens: '*'\n },\n // Milliseconds timestamp\n T: {\n priority: 20,\n parse: function (string, _token, _match, _options) {\n return parseAnyDigitsSigned(string);\n },\n set: function (_date, _flags, value, _options) {\n return [new Date(value), {\n timestampIsSet: true\n }];\n },\n incompatibleTokens: '*'\n }\n};\nexport default parsers;","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCWeek from \"../getUTCWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCWeek(dirtyDate, dirtyWeek, options) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var week = toInteger(dirtyWeek);\n var diff = getUTCWeek(date, options) - week;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","import toInteger from \"../toInteger/index.js\";\nimport toDate from \"../../toDate/index.js\";\nimport getUTCISOWeek from \"../getUTCISOWeek/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCISOWeek(dirtyDate, dirtyISOWeek) {\n requiredArgs(2, arguments);\n var date = toDate(dirtyDate);\n var isoWeek = toInteger(dirtyISOWeek);\n var diff = getUTCISOWeek(date) - isoWeek;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date;\n}","import toDate from \"../../toDate/index.js\";\nimport requiredArgs from \"../requiredArgs/index.js\";\nimport toInteger from \"../toInteger/index.js\"; // This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\n\nexport default function setUTCISODay(dirtyDate, dirtyDay) {\n requiredArgs(2, arguments);\n var day = toInteger(dirtyDay);\n\n if (day % 7 === 0) {\n day = day - 7;\n }\n\n var weekStartsOn = 1;\n var date = toDate(dirtyDate);\n var currentDay = date.getUTCDay();\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}","import defaultLocale from \"../locale/en-US/index.js\";\nimport subMilliseconds from \"../subMilliseconds/index.js\";\nimport toDate from \"../toDate/index.js\";\nimport assign from \"../_lib/assign/index.js\";\nimport longFormatters from \"../_lib/format/longFormatters/index.js\";\nimport getTimezoneOffsetInMilliseconds from \"../_lib/getTimezoneOffsetInMilliseconds/index.js\";\nimport { isProtectedDayOfYearToken, isProtectedWeekYearToken, throwProtectedError } from \"../_lib/protectedTokens/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\nimport parsers from \"./_lib/parsers/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nvar TIMEZONE_UNIT_PRIORITY = 10; // This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\n\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g; // This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\n\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar notWhitespaceRegExp = /\\S/;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * parse('23 AM', 'HH a', new Date())\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 7 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 7 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Sun | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Seconds timestamp | 40 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Fraction of second | 30 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Milliseconds timestamp | 20 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 10 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 10 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Long localized date | NA | P | 05/29/1453 | 5,8 |\n * | | | PP | May 29, 1453 | |\n * | | | PPP | May 29th, 1453 | |\n * | | | PPPP | Sunday, May 29th, 1453 | 2,5,8 |\n * | Long localized time | NA | p | 12:00 AM | 5,8 |\n * | | | pp | 12:00:00 AM | |\n * | Combination of date and time | NA | Pp | 05/29/1453, 12:00 AM | |\n * | | | PPpp | May 29, 1453, 12:00:00 AM | |\n * | | | PPPpp | May 29th, 1453 at ... | |\n * | | | PPPPpp | Sunday, May 29th, 1453 at ... | 2,5,8 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `parse` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `referenceDate`:\n *\n * `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n * `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n * while `uu` will just assign the year as is:\n *\n * `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n * `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n * and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 7. `D` and `DD` tokens represent days of the year but they are ofthen confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://git.io/fxCyr\n *\n * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n * on the given locale.\n *\n * using `en-US` locale: `P` => `MM/dd/yyyy`\n * using `en-US` locale: `p` => `hh:mm a`\n * using `pt-BR` locale: `P` => `dd/MM/yyyy`\n * using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `referenceDate` which works as a context of parsing.\n *\n * `referenceDate` must be passed for correct work of the function.\n * If you're not sure which `referenceDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `referenceDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `referenceDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - Old `parse` was renamed to `toDate`.\n * Now `parse` is a new function which parses a string using a provided format.\n *\n * ```javascript\n * // Before v2.0.0\n * parse('2016-01-01')\n *\n * // v2.0.0 onward (toDate no longer accepts a string)\n * toDate(1392098430000) // Unix to timestamp\n * toDate(new Date(2014, 1, 11, 11, 30, 30)) // Cloning the date\n * parse('2016-01-01', 'yyyy-MM-dd', new Date())\n * ```\n *\n * @param {String} dateString - the string to parse\n * @param {String} formatString - the string of tokens\n * @param {Date|Number} referenceDate - defines values missing from the parsed dateString\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://git.io/fxCyr\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://git.io/fxCyr\n * @returns {Date} the parsed date\n * @throws {TypeError} 3 arguments required\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://git.io/fxCyr\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse('02/11/2014', 'MM/dd/yyyy', new Date())\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse('28-a de februaro', \"do 'de' MMMM\", new Date(2010, 0, 1), {\n * locale: eo\n * })\n * //=> Sun Feb 28 2010 00:00:00\n */\n\nexport default function parse(dirtyDateString, dirtyFormatString, dirtyReferenceDate, dirtyOptions) {\n requiredArgs(3, arguments);\n var dateString = String(dirtyDateString);\n var formatString = String(dirtyFormatString);\n var options = dirtyOptions || {};\n var locale = options.locale || defaultLocale;\n\n if (!locale.match) {\n throw new RangeError('locale must contain match property');\n }\n\n var localeFirstWeekContainsDate = locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate = localeFirstWeekContainsDate == null ? 1 : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate = options.firstWeekContainsDate == null ? defaultFirstWeekContainsDate : toInteger(options.firstWeekContainsDate); // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn); // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n\n if (formatString === '') {\n if (dateString === '') {\n return toDate(dirtyReferenceDate);\n } else {\n return new Date(NaN);\n }\n }\n\n var subFnOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale\n }; // If timezone isn't specified, it will be set to the system timezone\n\n var setters = [{\n priority: TIMEZONE_UNIT_PRIORITY,\n subPriority: -1,\n set: dateToSystemTimezone,\n index: 0\n }];\n var i;\n var tokens = formatString.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong, subFnOptions);\n }\n\n return substring;\n }).join('').match(formattingTokensRegExp);\n var usedTokens = [];\n\n for (i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (!options.useAdditionalWeekYearTokens && isProtectedWeekYearToken(token)) {\n throwProtectedError(token, formatString, dirtyDateString);\n }\n\n if (!options.useAdditionalDayOfYearTokens && isProtectedDayOfYearToken(token)) {\n throwProtectedError(token, formatString, dirtyDateString);\n }\n\n var firstCharacter = token[0];\n var parser = parsers[firstCharacter];\n\n if (parser) {\n var incompatibleTokens = parser.incompatibleTokens;\n\n if (Array.isArray(incompatibleTokens)) {\n var incompatibleToken = void 0;\n\n for (var _i = 0; _i < usedTokens.length; _i++) {\n var usedToken = usedTokens[_i].token;\n\n if (incompatibleTokens.indexOf(usedToken) !== -1 || usedToken === firstCharacter) {\n incompatibleToken = usedTokens[_i];\n break;\n }\n }\n\n if (incompatibleToken) {\n throw new RangeError(\"The format string mustn't contain `\".concat(incompatibleToken.fullToken, \"` and `\").concat(token, \"` at the same time\"));\n }\n } else if (parser.incompatibleTokens === '*' && usedTokens.length) {\n throw new RangeError(\"The format string mustn't contain `\".concat(token, \"` and any other token at the same time\"));\n }\n\n usedTokens.push({\n token: firstCharacter,\n fullToken: token\n });\n var parseResult = parser.parse(dateString, token, locale.match, subFnOptions);\n\n if (!parseResult) {\n return new Date(NaN);\n }\n\n setters.push({\n priority: parser.priority,\n subPriority: parser.subPriority || 0,\n set: parser.set,\n validate: parser.validate,\n value: parseResult.value,\n index: setters.length\n });\n dateString = parseResult.rest;\n } else {\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n } // Replace two single quote characters with one single quote character\n\n\n if (token === \"''\") {\n token = \"'\";\n } else if (firstCharacter === \"'\") {\n token = cleanEscapedString(token);\n } // Cut token from string, or, if string doesn't match the token, return Invalid Date\n\n\n if (dateString.indexOf(token) === 0) {\n dateString = dateString.slice(token.length);\n } else {\n return new Date(NaN);\n }\n }\n } // Check if the remaining input contains something other than whitespace\n\n\n if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {\n return new Date(NaN);\n }\n\n var uniquePrioritySetters = setters.map(function (setter) {\n return setter.priority;\n }).sort(function (a, b) {\n return b - a;\n }).filter(function (priority, index, array) {\n return array.indexOf(priority) === index;\n }).map(function (priority) {\n return setters.filter(function (setter) {\n return setter.priority === priority;\n }).sort(function (a, b) {\n return b.subPriority - a.subPriority;\n });\n }).map(function (setterArray) {\n return setterArray[0];\n });\n var date = toDate(dirtyReferenceDate);\n\n if (isNaN(date)) {\n return new Date(NaN);\n } // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/37\n\n\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n var flags = {};\n\n for (i = 0; i < uniquePrioritySetters.length; i++) {\n var setter = uniquePrioritySetters[i];\n\n if (setter.validate && !setter.validate(utcDate, setter.value, subFnOptions)) {\n return new Date(NaN);\n }\n\n var result = setter.set(utcDate, flags, setter.value, subFnOptions); // Result is tuple (date, flags)\n\n if (result[0]) {\n utcDate = result[0];\n assign(flags, result[1]); // Result is date\n } else {\n utcDate = result;\n }\n }\n\n return utcDate;\n}\n\nfunction dateToSystemTimezone(date, flags) {\n if (flags.timestampIsSet) {\n return date;\n }\n\n var convertedDate = new Date(0);\n convertedDate.setFullYear(date.getUTCFullYear(), date.getUTCMonth(), date.getUTCDate());\n convertedDate.setHours(date.getUTCHours(), date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds());\n return convertedDate;\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}","import { millisecondsInHour, millisecondsInMinute } from \"../constants/index.js\";\nimport requiredArgs from \"../_lib/requiredArgs/index.js\";\nimport toInteger from \"../_lib/toInteger/index.js\";\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The previous `parse` implementation was renamed to `parseISO`.\n *\n * ```javascript\n * // Before v2.0.0\n * parse('2016-01-01')\n *\n * // v2.0.0 onward\n * parseISO('2016-01-01')\n * ```\n *\n * - `parseISO` now validates separate date and time values in ISO-8601 strings\n * and returns `Invalid Date` if the date is invalid.\n *\n * ```javascript\n * parseISO('2018-13-32')\n * //=> Invalid Date\n * ```\n *\n * - `parseISO` now doesn't fall back to `new Date` constructor\n * if it fails to parse a string argument. Instead, it returns `Invalid Date`.\n *\n * @param {String} argument - the value to convert\n * @param {Object} [options] - an object with options.\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * const result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * const result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\n\nexport default function parseISO(argument, dirtyOptions) {\n requiredArgs(1, arguments);\n var options = dirtyOptions || {};\n var additionalDigits = options.additionalDigits == null ? 2 : toInteger(options.additionalDigits);\n\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError('additionalDigits must be 0, 1 or 2');\n }\n\n if (!(typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]')) {\n return new Date(NaN);\n }\n\n var dateStrings = splitDateString(argument);\n var date;\n\n if (dateStrings.date) {\n var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n }\n\n if (!date || isNaN(date.getTime())) {\n return new Date(NaN);\n }\n\n var timestamp = date.getTime();\n var time = 0;\n var offset;\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n\n if (isNaN(time)) {\n return new Date(NaN);\n }\n }\n\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n\n if (isNaN(offset)) {\n return new Date(NaN);\n }\n } else {\n var dirtyDate = new Date(timestamp + time); // js parsed string assuming it's in UTC timezone\n // but we need it to be parsed in our timezone\n // so we use utc values to build date in our timezone.\n // Year values from 0 to 99 map to the years 1900 to 1999\n // so set year explicitly with setFullYear.\n\n var result = new Date(0);\n result.setFullYear(dirtyDate.getUTCFullYear(), dirtyDate.getUTCMonth(), dirtyDate.getUTCDate());\n result.setHours(dirtyDate.getUTCHours(), dirtyDate.getUTCMinutes(), dirtyDate.getUTCSeconds(), dirtyDate.getUTCMilliseconds());\n return result;\n }\n\n return new Date(timestamp + time + offset);\n}\nvar patterns = {\n dateTimeDelimiter: /[T ]/,\n timeZoneDelimiter: /[Z ]/i,\n timezone: /([Z+-].*)$/\n};\nvar dateRegex = /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nvar timeRegex = /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nvar timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\n\nfunction splitDateString(dateString) {\n var dateStrings = {};\n var array = dateString.split(patterns.dateTimeDelimiter);\n var timeString; // The regex match should only return at maximum two array elements.\n // [date], [time], or [date, time].\n\n if (array.length > 2) {\n return dateStrings;\n }\n\n if (/:/.test(array[0])) {\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n\n if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n timeString = dateString.substr(dateStrings.date.length, dateString.length);\n }\n }\n\n if (timeString) {\n var token = patterns.timezone.exec(timeString);\n\n if (token) {\n dateStrings.time = timeString.replace(token[1], '');\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n\n return dateStrings;\n}\n\nfunction parseYear(dateString, additionalDigits) {\n var regex = new RegExp('^(?:(\\\\d{4}|[+-]\\\\d{' + (4 + additionalDigits) + '})|(\\\\d{2}|[+-]\\\\d{' + (2 + additionalDigits) + '})$)');\n var captures = dateString.match(regex); // Invalid ISO-formatted year\n\n if (!captures) return {\n year: NaN,\n restDateString: ''\n };\n var year = captures[1] ? parseInt(captures[1]) : null;\n var century = captures[2] ? parseInt(captures[2]) : null; // either year or century is null, not both\n\n return {\n year: century === null ? year : century * 100,\n restDateString: dateString.slice((captures[1] || captures[2]).length)\n };\n}\n\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) return new Date(NaN);\n var captures = dateString.match(dateRegex); // Invalid ISO-formatted string\n\n if (!captures) return new Date(NaN);\n var isWeekDate = !!captures[4];\n var dayOfYear = parseDateUnit(captures[1]);\n var month = parseDateUnit(captures[2]) - 1;\n var day = parseDateUnit(captures[3]);\n var week = parseDateUnit(captures[4]);\n var dayOfWeek = parseDateUnit(captures[5]) - 1;\n\n if (isWeekDate) {\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN);\n }\n\n return dayOfISOWeekYear(year, week, dayOfWeek);\n } else {\n var date = new Date(0);\n\n if (!validateDate(year, month, day) || !validateDayOfYearDate(year, dayOfYear)) {\n return new Date(NaN);\n }\n\n date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n return date;\n }\n}\n\nfunction parseDateUnit(value) {\n return value ? parseInt(value) : 1;\n}\n\nfunction parseTime(timeString) {\n var captures = timeString.match(timeRegex);\n if (!captures) return NaN; // Invalid ISO-formatted time\n\n var hours = parseTimeUnit(captures[1]);\n var minutes = parseTimeUnit(captures[2]);\n var seconds = parseTimeUnit(captures[3]);\n\n if (!validateTime(hours, minutes, seconds)) {\n return NaN;\n }\n\n return hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * 1000;\n}\n\nfunction parseTimeUnit(value) {\n return value && parseFloat(value.replace(',', '.')) || 0;\n}\n\nfunction parseTimezone(timezoneString) {\n if (timezoneString === 'Z') return 0;\n var captures = timezoneString.match(timezoneRegex);\n if (!captures) return 0;\n var sign = captures[1] === '+' ? -1 : 1;\n var hours = parseInt(captures[2]);\n var minutes = captures[3] && parseInt(captures[3]) || 0;\n\n if (!validateTimezone(hours, minutes)) {\n return NaN;\n }\n\n return sign * (hours * millisecondsInHour + minutes * millisecondsInMinute);\n}\n\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n var date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n var fourthOfJanuaryDay = date.getUTCDay() || 7;\n var diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n} // Validation functions\n// February is null to handle the leap year (using ||)\n\n\nvar daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || year % 4 === 0 && year % 100 !== 0;\n}\n\nfunction validateDate(year, month, date) {\n return month >= 0 && month <= 11 && date >= 1 && date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28));\n}\n\nfunction validateDayOfYearDate(year, dayOfYear) {\n return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\n\nfunction validateWeekDate(_year, week, day) {\n return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\n\nfunction validateTime(hours, minutes, seconds) {\n if (hours === 24) {\n return minutes === 0 && seconds === 0;\n }\n\n return seconds >= 0 && seconds < 60 && minutes >= 0 && minutes < 60 && hours >= 0 && hours < 25;\n}\n\nfunction validateTimezone(_hours, minutes) {\n return minutes >= 0 && minutes <= 59;\n}","\r\n\r\n","\r\n\r\n
\r\n\r\n","\r\n\r\n{#if href}\r\n{label}\r\n{:else if to}\r\n{label}\r\n{:else if type}\r\n\r\n{:else if dummy}\r\n
{label}
\r\n{:else}\r\n\r\n{/if}\r\n","\r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n","\r\n\r\n{#if show}\r\n\r\n{/if}\r\n\r\n","
\r\n \r\n
\r\n\r\n","\r\n\r\n
\r\n \r\n
\r\n\r\n","\r\n\r\n\r\n{#if (bonusFactor ?? 0) > 1}\r\n
{bonusFactor}
\r\n{/if} \r\n\r\n","\r\n\r\n
\r\n {#if data.firstBinary}\r\n \r\n
\r\n \r\n \"\"\r\n
\r\n
\r\n {/if}\r\n \r\n {#if !compact}\r\n \r\n
\r\n

{data.teaser}

\r\n {#if data.openingText != \"keine\"}\r\n
\r\n {#if data.openingText}\r\n
{data.openingText}
\r\n {:else}\r\n
    \r\n
  • \r\n \r\n {#each (data?.openingTimes ?? []) as day}\r\n {getDayLabel(day.weekDay)}\r\n {/each}\r\n
  • \r\n {#if day.some(s => !!s)}\r\n
  • \r\n {data.titleDay ?? \"Lunch\"}\r\n {#each day as d}\r\n \r\n {/each}\r\n
  • \r\n {/if}\r\n {#if late.some(s => !!s)}\r\n
  • \r\n {data.titleLate ?? \"Dinner\"}\r\n {#each late as d}\r\n \r\n {/each} \r\n
  • \r\n {/if}\r\n
\r\n {/if}\r\n {/if}\r\n \r\n
\r\n
\r\n {/if}\r\n {#if links}\r\n \r\n {/if}\r\n
\r\n\r\n","\r\n\r\n\r\n{#if data}\r\n {#each data as item}\r\n \r\n {/each}\r\n{/if}\r\n\r\n{#if links}\r\n
\r\n \r\n
\r\n{/if}\r\n\r\n","\r\n\r\n
\r\n \r\n
\r\n

\r\n {news.title}\r\n

\r\n
\r\n {isAfter(newsDate, new Date()) ? format( newsDate , \"'ab' dd.MM.yyyy\") : newsDateEnd ? format( newsDateEnd , \"'bis' dd.MM.yyyy\") : \"Aktuell\"}\r\n
\r\n
\r\n
\r\n {#if news.teaser}

{@html news.teaser}

{/if}\r\n {@html news.text}\r\n
\r\n
\r\n\r\n\r\n","\r\n\r\n{#if data}\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n {#if (data.bonusRequired ?? 0) > 0}\r\n
\r\n
{`Für ${data.bonusRequired} `}
\r\n
{data.discount?.name}
\r\n
{data.serviceDescription}
\r\n {#if price}
{`Spare ${price}`}
{/if}\r\n
\r\n {/if}\r\n {#if (data.bonusFactor ?? 0) > 1 || (data.bonusRequired ?? 0) > 0}\r\n
\r\n {#if (data.bonusFactor ?? 0) > 1}\r\n Sammle {data.bonusFactor} je {(data.loyalityBonusPer ?? 0).toLocaleString('de-DE', { style: 'currency', currency: 'EUR' }).replace(',00', ',-')} Einkaufswert bei diesem Partner \r\n {:else if (data.bonusRequired ?? 0) > 0}\r\n Rechnung scannen - sammeln \r\n {/if}\r\n
\r\n {/if}\r\n\r\n {#if (data.invoiceMin ?? 0) > 2}\r\n
\r\n Für Rechnungen ab {(data.invoiceMin ?? 0).toLocaleString('de-DE', { style: 'currency', currency: 'EUR' }).replace(',00', '')}\r\n
\r\n {/if}\r\n
\r\n {@html kToCrown(data.text ?? \"\")}\r\n
\r\n {#if data.complementary && isOnboarding}\r\n
\r\n
\r\n {@html data.complementary}\r\n
\r\n {/if}\r\n
\r\n {#if news.length}\r\n
\r\n {#each news as n}\r\n \r\n {/each}\r\n
\r\n {/if}\r\n
\r\n \r\n
\r\n {#if showBanner}\r\n
\r\n {#if showMobileBanner}\r\n {@html variant.mobile}\r\n {:else}\r\n {@html variant.desktop}\r\n {/if}\r\n
\r\n {/if}\r\n {#if data.embeddedUrl}\r\n
\r\n
\r\n
\r\n {/if}\r\n
\r\n {#if data.infoLink}\r\n
\r\n \r\n {/if}\r\n
\r\n
\r\n Adresse
\r\n {data.location.name}
\r\n {#if data.location.venue}{data.location.venue}
{/if}\r\n {#if data.location.street}{data.location.street}
{/if}\r\n {data.location.postalCode ?? \"\"} {data.location.town ?? \"\"}\r\n
\r\n \r\n
\r\n {#if (data.bonusRequired ?? 0) > 0}\r\n
\r\n
\r\n
{`Für ${data.bonusRequired} `}
\r\n
{data.discount?.name}
\r\n
{data.serviceDescription}
\r\n {#if price}
{`Spare ${price}`}
{/if}\r\n
\r\n
\r\n
\r\n {/if}\r\n {#if data.openingText !== \"keine\"}\r\n
\r\n

Öffnungszeiten {#if !isFree && !!data.bonusRequired}Einlösezeiten{/if}

\r\n
    \r\n {#each data.openingTimes as time}\r\n
  • \r\n \r\n {#if time.date}\r\n {format(parseISO(time.date), \"dd.MM.\")}\r\n {:else}\r\n {getDayLabel(time.weekDay)}\r\n {/if}\r\n \r\n \r\n {#if time.dayState}\r\n {#if time.dayState === \"Closed\"}\r\n geschlossen\r\n {:else if time.dayState === \"Conditional\"}\r\n {data.openingText}\r\n {:else if time.dayState === \"Discount\"}\r\n {time.dayFrom} - {time.dayTo}\r\n {:else}\r\n {time.dayFrom} - {time.dayTo}\r\n {/if}\r\n {/if}\r\n\r\n {#if time.lateState}\r\n /\r\n {#if time.lateState === \"Closed\"}\r\n geschlossen\r\n {:else if time.lateState === \"Conditional\"}\r\n {data.openingText}\r\n {:else if time.lateState === \"Discount\"}\r\n {time.lateFrom} - {time.lateTo}\r\n {:else}\r\n {time.lateFrom} - {time.lateTo}\r\n {/if}\r\n {/if}\r\n \r\n
  • \r\n {/each}\r\n
\r\n
\r\n {/if}\r\n {#if (data.bonusRequired ?? 0) > 0}\r\n
\r\n {#if !isFree}{/if}\r\n \r\n

{@html data.legalText ?? \"\"}

\r\n
Alle Angebote nur in der QROWNS App gültig. Hier downloaden
\r\n
\r\n {/if}\r\n
\r\n {#if data.location?.phone || data.location?.email || data.webLinkUrl}\r\n

Kontakt & Reservierung

\r\n
\r\n {#if data.location.phone}{/if}\r\n {#if data.location.email}{/if}\r\n {#if data.webLinkUrl}www.{/if}\r\n
\r\n

\r\n {[data.location.phone, data.location.email].filter(Boolean).join(' | ')}
{data.webLinkUrl?.replace(/https?:\\/\\//, '').split(\"/\")[0] ?? ''}\r\n

\r\n {/if}\r\n \r\n
\r\n {#if !hasAlternatives && categorySlug}\r\n
\r\n \r\n
\r\n {/if}\r\n
\r\n\r\n showRedeem = false}\r\n/>\r\n\r\n{/if}\r\n\r\n","\r\n\r\n{#if show}\r\n
\r\n
\r\n \r\n \r\n
\r\n
MyZity.Vienna
\r\n
Silber
\r\n
Endet am 28.12.2021
\r\n \r\n
Meine Ersparnisse
\r\n
€ 1.279,-
\r\n \r\n
\r\n
\r\n \r\n
\r\n
MyZity.Vienna
\r\n
Gold
\r\n
Endet am 28.12.2021
\r\n \r\n
Meine Ersparnisse
\r\n
€ 1.279,-
\r\n \r\n
\r\n
\r\n \r\n
\r\n
MyZity.Vienna
\r\n
Smaragd
\r\n
Endet am 28.12.2021
\r\n \r\n
Meine Ersparnisse
\r\n
€ 1.279,-
\r\n \r\n
\r\n
\r\n \r\n
\r\n
MyZity.Vienna
\r\n
Rubin
\r\n
Endet am 28.12.2021
\r\n \r\n
Meine Ersparnisse
\r\n
€ 1.279,-
\r\n \r\n
\r\n
\r\n \r\n
\r\n

Reserviert

\r\n
\r\n \r\n
\r\n
\r\n{/if}\r\n\r\n","\r\n\r\n{#if show}\r\n
\r\n \r\n
\r\n{/if}\r\n\r\n","\r\n\r\n\r\n \r\n \r\n \r\n\r\n\r\n","\r\n\r\n \r\n\r\n
\r\n {#if $showAppBanner}\r\n
\r\n
\r\n
\r\n
\r\n ciity - Stadt für 2\r\n Erlebnisgutscheine\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n LADEN — Im App Store\r\n
\r\n \r\n
\r\n {/if}\r\n
0} \r\n class:top-bar--transparent-on-top={transparentOnTop}\r\n class:top-bar--offset={$showAppBanner}\r\n class:top-bar--open={showMenu}\r\n class:top-bar--center={center}\r\n >\r\n
\r\n
\"ciity.club
\r\n \r\n {#if menu}\r\n \r\n {/if}\r\n
\r\n
\r\n 0} />\r\n 0} on:close={toggleMenu} />\r\n
\r\n\r\n","\r\n\r\n
\r\n
\r\n
\r\n\t
\r\n
\r\n\t{#if footer}\r\n
\r\n\t\t
\r\n\t\t\t
\"ciity.club
\r\n\t\t\t\r\n {#if registerUrl}\r\n
\r\n \r\n
\r\n {/if}\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t
\r\n\t\t\r\n\t\t
\r\n\t\t\t
{@html `© WUNDERWERK ${(new Date()).getFullYear()}`}
\r\n\t\t\t
\r\n\t\t\t\tNutzungsbedingungen\r\n\t\t\t\tDatenschutz\r\n\t\t\t\tImpressum\r\n\t\t\t\tNach oben\r\n\t\t\t
\r\n\t\t
\r\n\t
\r\n\t{/if}\r\n
\r\n\r\n","\r\n\r\nTop of page\r\n\r\n","\r\n\r\n
\r\n\r\n\r\n {#if data}\r\n \r\n {/if}\r\n\r\n\r\n\r\n","import { writable } from '../store/index.mjs';\nimport { now, loop, assign } from '../internal/index.mjs';\nimport { linear } from '../easing/index.mjs';\n\nfunction is_date(obj) {\n return Object.prototype.toString.call(obj) === '[object Date]';\n}\n\nfunction tick_spring(ctx, last_value, current_value, target_value) {\n if (typeof current_value === 'number' || is_date(current_value)) {\n // @ts-ignore\n const delta = target_value - current_value;\n // @ts-ignore\n const velocity = (current_value - last_value) / (ctx.dt || 1 / 60); // guard div by 0\n const spring = ctx.opts.stiffness * delta;\n const damper = ctx.opts.damping * velocity;\n const acceleration = (spring - damper) * ctx.inv_mass;\n const d = (velocity + acceleration) * ctx.dt;\n if (Math.abs(d) < ctx.opts.precision && Math.abs(delta) < ctx.opts.precision) {\n return target_value; // settled\n }\n else {\n ctx.settled = false; // signal loop to keep ticking\n // @ts-ignore\n return is_date(current_value) ?\n new Date(current_value.getTime() + d) : current_value + d;\n }\n }\n else if (Array.isArray(current_value)) {\n // @ts-ignore\n return current_value.map((_, i) => tick_spring(ctx, last_value[i], current_value[i], target_value[i]));\n }\n else if (typeof current_value === 'object') {\n const next_value = {};\n for (const k in current_value) {\n // @ts-ignore\n next_value[k] = tick_spring(ctx, last_value[k], current_value[k], target_value[k]);\n }\n // @ts-ignore\n return next_value;\n }\n else {\n throw new Error(`Cannot spring ${typeof current_value} values`);\n }\n}\nfunction spring(value, opts = {}) {\n const store = writable(value);\n const { stiffness = 0.15, damping = 0.8, precision = 0.01 } = opts;\n let last_time;\n let task;\n let current_token;\n let last_value = value;\n let target_value = value;\n let inv_mass = 1;\n let inv_mass_recovery_rate = 0;\n let cancel_task = false;\n function set(new_value, opts = {}) {\n target_value = new_value;\n const token = current_token = {};\n if (value == null || opts.hard || (spring.stiffness >= 1 && spring.damping >= 1)) {\n cancel_task = true; // cancel any running animation\n last_time = now();\n last_value = new_value;\n store.set(value = target_value);\n return Promise.resolve();\n }\n else if (opts.soft) {\n const rate = opts.soft === true ? .5 : +opts.soft;\n inv_mass_recovery_rate = 1 / (rate * 60);\n inv_mass = 0; // infinite mass, unaffected by spring forces\n }\n if (!task) {\n last_time = now();\n cancel_task = false;\n task = loop(now => {\n if (cancel_task) {\n cancel_task = false;\n task = null;\n return false;\n }\n inv_mass = Math.min(inv_mass + inv_mass_recovery_rate, 1);\n const ctx = {\n inv_mass,\n opts: spring,\n settled: true,\n dt: (now - last_time) * 60 / 1000\n };\n const next_value = tick_spring(ctx, last_value, value, target_value);\n last_time = now;\n last_value = value;\n store.set(value = next_value);\n if (ctx.settled) {\n task = null;\n }\n return !ctx.settled;\n });\n }\n return new Promise(fulfil => {\n task.promise.then(() => {\n if (token === current_token)\n fulfil();\n });\n });\n }\n const spring = {\n set,\n update: (fn, opts) => set(fn(target_value, value), opts),\n subscribe: store.subscribe,\n stiffness,\n damping,\n precision\n };\n return spring;\n}\n\nfunction get_interpolator(a, b) {\n if (a === b || a !== a)\n return () => a;\n const type = typeof a;\n if (type !== typeof b || Array.isArray(a) !== Array.isArray(b)) {\n throw new Error('Cannot interpolate values of different type');\n }\n if (Array.isArray(a)) {\n const arr = b.map((bi, i) => {\n return get_interpolator(a[i], bi);\n });\n return t => arr.map(fn => fn(t));\n }\n if (type === 'object') {\n if (!a || !b)\n throw new Error('Object cannot be null');\n if (is_date(a) && is_date(b)) {\n a = a.getTime();\n b = b.getTime();\n const delta = b - a;\n return t => new Date(a + t * delta);\n }\n const keys = Object.keys(b);\n const interpolators = {};\n keys.forEach(key => {\n interpolators[key] = get_interpolator(a[key], b[key]);\n });\n return t => {\n const result = {};\n keys.forEach(key => {\n result[key] = interpolators[key](t);\n });\n return result;\n };\n }\n if (type === 'number') {\n const delta = b - a;\n return t => a + t * delta;\n }\n throw new Error(`Cannot interpolate ${type} values`);\n}\nfunction tweened(value, defaults = {}) {\n const store = writable(value);\n let task;\n let target_value = value;\n function set(new_value, opts) {\n if (value == null) {\n store.set(value = new_value);\n return Promise.resolve();\n }\n target_value = new_value;\n let previous_task = task;\n let started = false;\n let { delay = 0, duration = 400, easing = linear, interpolate = get_interpolator } = assign(assign({}, defaults), opts);\n if (duration === 0) {\n if (previous_task) {\n previous_task.abort();\n previous_task = null;\n }\n store.set(value = target_value);\n return Promise.resolve();\n }\n const start = now() + delay;\n let fn;\n task = loop(now => {\n if (now < start)\n return true;\n if (!started) {\n fn = interpolate(value, new_value);\n if (typeof duration === 'function')\n duration = duration(value, new_value);\n started = true;\n }\n if (previous_task) {\n previous_task.abort();\n previous_task = null;\n }\n const elapsed = now - start;\n if (elapsed > duration) {\n store.set(value = new_value);\n return false;\n }\n // @ts-ignore\n store.set(value = fn(easing(elapsed / duration)));\n return true;\n });\n return task.promise;\n }\n return {\n set,\n update: (fn, opts) => set(fn(target_value, value), opts),\n subscribe: store.subscribe\n };\n}\n\nexport { spring, tweened };\n","const DEFAULT_DELAY = 300;\nconst DEFAULT_MIN_SWIPE_DISTANCE = 60; // in pixels\n\nconst DEFAULT_TOUCH_ACTION = 'none';\n\nfunction addEventListener(node, event, handler) {\n node.addEventListener(event, handler);\n return () => node.removeEventListener(event, handler);\n}\n\nfunction getCenterOfTwoPoints(node, activeEvents) {\n const rect = node.getBoundingClientRect();\n const xDistance = Math.abs(activeEvents[0].clientX - activeEvents[1].clientX);\n const yDistance = Math.abs(activeEvents[0].clientY - activeEvents[1].clientY);\n const minX = Math.min(activeEvents[0].clientX, activeEvents[1].clientX);\n const minY = Math.min(activeEvents[0].clientY, activeEvents[1].clientY);\n const centerX = minX + xDistance / 2;\n const centerY = minY + yDistance / 2;\n const x = Math.round(centerX - rect.left);\n const y = Math.round(centerY - rect.top);\n return {\n x,\n y\n };\n}\n\nfunction removeEvent(event, activeEvents) {\n return activeEvents.filter(activeEvent => {\n return event.pointerId !== activeEvent.pointerId;\n });\n}\n\nfunction dispatch(node, gestureName, event, activeEvents, pointerType) {\n node.dispatchEvent(new CustomEvent(`${gestureName}${pointerType}`, {\n detail: {\n event,\n pointersCount: activeEvents.length\n }\n }));\n}\n\nfunction setPointerControls(gestureName, node, onMoveCallback, onDownCallback, onUpCallback, touchAction = DEFAULT_TOUCH_ACTION) {\n node.style.touchAction = touchAction;\n let activeEvents = [];\n\n function handlePointerdown(event) {\n activeEvents.push(event);\n dispatch(node, gestureName, event, activeEvents, 'down');\n onDownCallback?.(activeEvents, event);\n const pointerId = event.pointerId;\n\n function onup(e) {\n if (pointerId === e.pointerId) {\n activeEvents = removeEvent(e, activeEvents);\n\n if (!activeEvents.length) {\n removeEventHandlers();\n }\n\n dispatch(node, gestureName, e, activeEvents, 'up');\n onUpCallback?.(activeEvents, e);\n }\n }\n\n function removeEventHandlers() {\n removePointermoveHandler();\n removeLostpointercaptureHandler();\n removepointerupHandler();\n removepointerleaveHandler();\n }\n\n const removePointermoveHandler = addEventListener(node, 'pointermove', e => {\n activeEvents = activeEvents.map(activeEvent => {\n return e.pointerId === activeEvent.pointerId ? e : activeEvent;\n });\n dispatch(node, gestureName, e, activeEvents, 'move');\n onMoveCallback?.(activeEvents, e);\n });\n const removeLostpointercaptureHandler = addEventListener(node, 'lostpointercapture', e => {\n onup(e);\n });\n const removepointerupHandler = addEventListener(node, 'pointerup', e => {\n onup(e);\n });\n const removepointerleaveHandler = addEventListener(node, 'pointerleave', e => {\n activeEvents = [];\n removeEventHandlers();\n dispatch(node, gestureName, e, activeEvents, 'up');\n onUpCallback?.(activeEvents, e);\n });\n }\n\n const removePointerdownHandler = addEventListener(node, 'pointerdown', handlePointerdown);\n return {\n destroy: () => {\n removePointerdownHandler();\n }\n };\n}\n\nfunction pan(node, parameters = {\n delay: DEFAULT_DELAY\n}) {\n const gestureName = 'pan';\n let startTime;\n let target;\n\n function onDown(activeEvents, event) {\n startTime = Date.now();\n target = event.target;\n }\n\n function onMove(activeEvents, event) {\n if (activeEvents.length === 1 && Date.now() - startTime > parameters.delay) {\n const rect = node.getBoundingClientRect();\n const x = Math.round(event.clientX - rect.left);\n const y = Math.round(event.clientY - rect.top);\n\n if (x >= 0 && y >= 0 && x <= rect.width && y <= rect.height) {\n node.dispatchEvent(new CustomEvent(gestureName, {\n detail: {\n x,\n y,\n target\n }\n }));\n }\n }\n }\n\n return setPointerControls(gestureName, node, onMove, onDown, null);\n}\n\nfunction getPointersDistance(activeEvents) {\n return Math.hypot(activeEvents[0].clientX - activeEvents[1].clientX, activeEvents[0].clientY - activeEvents[1].clientY);\n}\n\nfunction pinch(node) {\n const gestureName = 'pinch';\n let prevDistance = null;\n let initDistance = 0;\n let pinchCenter;\n\n function onUp(activeEvents) {\n if (activeEvents.length === 1) {\n prevDistance = null;\n }\n }\n\n function onDown(activeEvents) {\n if (activeEvents.length === 2) {\n initDistance = getPointersDistance(activeEvents);\n pinchCenter = getCenterOfTwoPoints(node, activeEvents);\n }\n }\n\n function onMove(activeEvents) {\n if (activeEvents.length === 2) {\n const curDistance = getPointersDistance(activeEvents);\n\n if (prevDistance !== null && curDistance !== prevDistance) {\n const scale = curDistance / initDistance;\n node.dispatchEvent(new CustomEvent(gestureName, {\n detail: {\n scale,\n center: pinchCenter\n }\n }));\n }\n\n prevDistance = curDistance;\n }\n }\n\n return setPointerControls(gestureName, node, onMove, onDown, onUp);\n}\n\nfunction press(node, parameters) {\n parameters = {\n timeframe: DEFAULT_DELAY,\n triggerBeforeFinished: false,\n ...parameters\n };\n node.style.userSelect = 'none';\n\n node.oncontextmenu = e => {\n e.preventDefault();\n };\n\n const gestureName = 'press';\n let startTime;\n let clientX;\n let clientY;\n let clientMoved = {\n x: 0,\n y: 0\n };\n let timeout;\n let triggeredOnTimeout = false;\n\n function onUp(activeEvents, event) {\n clearTimeout(timeout);\n\n if (!triggeredOnTimeout) {\n onDone(event.clientX, event.clientY, event);\n }\n }\n\n function onMove(activeEvents, event) {\n clientMoved.x = event.clientX;\n clientMoved.y = event.clientY;\n }\n\n function onDown(activeEvents, event) {\n clientX = event.clientX;\n clientY = event.clientY;\n startTime = Date.now();\n triggeredOnTimeout = false;\n\n if (parameters.triggerBeforeFinished) {\n timeout = setTimeout(() => {\n triggeredOnTimeout = true;\n clientMoved.x = event.clientX;\n clientMoved.y = event.clientY;\n onDone(clientMoved.x, clientMoved.y, event);\n }, parameters.timeframe + 1);\n }\n }\n\n function onDone(eventX, eventY, event) {\n if (Math.abs(eventX - clientX) < 4 && Math.abs(eventY - clientY) < 4 && Date.now() - startTime > parameters.timeframe) {\n const rect = node.getBoundingClientRect();\n const x = Math.round(eventX - rect.left);\n const y = Math.round(eventY - rect.top);\n node.dispatchEvent(new CustomEvent(gestureName, {\n detail: {\n x,\n y,\n target: event.target\n }\n }));\n }\n }\n\n const onSharedDestroy = setPointerControls(gestureName, node, onMove, onDown, onUp);\n return {\n destroy: () => {\n onSharedDestroy.destroy();\n clearTimeout(timeout);\n }\n };\n}\n\nfunction getPointersAngleDeg(activeEvents) {\n // instead of hell lot of conditions we use an object mapping\n const quadrantsMap = {\n left: {\n top: 360,\n bottom: 180\n },\n right: {\n top: 0,\n bottom: 180\n }\n };\n const width = activeEvents[1].clientX - activeEvents[0].clientX;\n const height = activeEvents[0].clientY - activeEvents[1].clientY;\n /*\n In quadrants 1 and 3 allworks as expected. \n In quadrants 2 and 4, either height or width is negative,\n so we get negative angle. It is even the other of the two angles.\n As sum in triangle is 180 deg, we can simply sum the negative angle with 90 deg\n and get the right angle's positive value. Then add 90 for each quadrant above 1st.\n This way we dont need to code our own arc cotangent fn (it does not exist in JS)\n */\n\n const angle = Math.atan(width / height) / (Math.PI / 180);\n const halfQuadrant = width > 0 ? quadrantsMap.right : quadrantsMap.left;\n const quadrantAngleBonus = height > 0 ? halfQuadrant.top : halfQuadrant.bottom;\n return angle + quadrantAngleBonus;\n}\n\nfunction rotate(node) {\n const gestureName = 'rotate';\n let prevAngle = null;\n let initAngle = 0;\n let rotationCenter;\n\n function onUp(activeEvents) {\n if (activeEvents.length === 1) {\n prevAngle = null;\n }\n }\n\n function onDown(activeEvents) {\n if (activeEvents.length === 2) {\n activeEvents = activeEvents.sort((a, b) => {\n return a.clientX - b.clientX;\n });\n rotationCenter = getCenterOfTwoPoints(node, activeEvents);\n initAngle = getPointersAngleDeg(activeEvents);\n }\n }\n\n function onMove(activeEvents) {\n if (activeEvents.length === 2) {\n const curAngle = getPointersAngleDeg(activeEvents);\n\n if (prevAngle !== null && curAngle !== prevAngle) {\n // Make sure we start at zero, doesnt matter what is the initial angle of fingers\n let rotation = curAngle - initAngle; // instead of showing 180 - 360, we will show negative -180 - 0\n\n if (rotation > 180) {\n rotation -= 360;\n }\n\n node.dispatchEvent(new CustomEvent(gestureName, {\n detail: {\n rotation,\n center: rotationCenter\n }\n }));\n }\n\n prevAngle = curAngle;\n }\n }\n\n return setPointerControls(gestureName, node, onMove, onDown, onUp);\n}\n\nfunction swipe(node, parameters = {\n timeframe: DEFAULT_DELAY,\n minSwipeDistance: DEFAULT_MIN_SWIPE_DISTANCE,\n touchAction: DEFAULT_TOUCH_ACTION\n}) {\n const gestureName = 'swipe';\n let startTime;\n let clientX;\n let clientY;\n let target;\n\n function onDown(activeEvents, event) {\n clientX = event.clientX;\n clientY = event.clientY;\n startTime = Date.now();\n\n if (activeEvents.length === 1) {\n target = event.target;\n }\n }\n\n function onUp(activeEvents, event) {\n if (event.type === 'pointerup' && activeEvents.length === 0 && Date.now() - startTime < parameters.timeframe) {\n const x = event.clientX - clientX;\n const y = event.clientY - clientY;\n const absX = Math.abs(x);\n const absY = Math.abs(y);\n let direction = null;\n\n if (absX >= 2 * absY && absX > parameters.minSwipeDistance) {\n // horizontal (by *2 we eliminate diagonal movements)\n direction = x > 0 ? 'right' : 'left';\n } else if (absY >= 2 * absX && absY > parameters.minSwipeDistance) {\n // vertical (by *2 we eliminate diagonal movements)\n direction = y > 0 ? 'bottom' : 'top';\n }\n\n if (direction) {\n node.dispatchEvent(new CustomEvent(gestureName, {\n detail: {\n direction,\n target\n }\n }));\n }\n }\n }\n\n return setPointerControls(gestureName, node, null, onDown, onUp, parameters.touchAction);\n}\n\nfunction tap(node, parameters = {\n timeframe: DEFAULT_DELAY\n}) {\n const gestureName = 'tap';\n let startTime;\n let clientX;\n let clientY;\n\n function onUp(activeEvents, event) {\n if (Math.abs(event.clientX - clientX) < 4 && Math.abs(event.clientY - clientY) < 4 && Date.now() - startTime < parameters.timeframe) {\n const rect = node.getBoundingClientRect();\n const x = Math.round(event.clientX - rect.left);\n const y = Math.round(event.clientY - rect.top);\n node.dispatchEvent(new CustomEvent(gestureName, {\n detail: {\n x,\n y,\n target: event.target\n }\n }));\n }\n }\n\n function onDown(activeEvents, event) {\n clientX = event.clientX;\n clientY = event.clientY;\n startTime = Date.now();\n }\n\n return setPointerControls(gestureName, node, null, onDown, onUp);\n}\n\nexport { DEFAULT_DELAY, DEFAULT_MIN_SWIPE_DISTANCE, DEFAULT_TOUCH_ACTION, getCenterOfTwoPoints, pan, pinch, press, rotate, setPointerControls, swipe, tap };\n","\r\n\r\n\r\n
\r\n {#each list as item}\r\n \r\n {/each}\r\n
\r\n\r\n","\r\n\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n","\r\n\r\n\r\n\r\n\r\n Datum\r\n {value?.split('.').slice(0, -1).join('.')}\r\n
e.stopPropagation()}>\r\n {#if show}\r\n \r\n {/if}\r\n
\r\n
\r\n\r\n","\r\n\r\n\r\n\r\n\r\n Zeit\r\n {value}\r\n
e.stopPropagation()}>\r\n {#if show}\r\n \r\n {/if}\r\n
\r\n
\r\n\r\n","\r\n\r\n\r\n\r\n\r\n Sortierung\r\n {label}\r\n
e.stopPropagation()}>\r\n {#if show}\r\n
    \r\n {#each options as o}\r\n
  • select(o.value)}>{o.label}
  • \r\n {/each}\r\n
\r\n {/if}\r\n
\r\n
\r\n\r\n","\r\n\r\n
\r\n \r\n \r\n \r\n
\r\n\r\n","\r\n\r\n
\r\n
\r\n
{categoryName}
\r\n

{@html kToCrown(categoryTitle)}

\r\n
\r\n
\r\n\r\n","\r\n\r\n
\r\n\r\n\r\n\t
\r\n\t\t{#if category}\r\n\t\t\r\n\t\t{/if}\r\n\t\t\r\n\t
\r\n\t\r\n
\r\n\r\n\r\n","\r\n\r\n
\r\n
\r\n {#if home || list}\r\n \r\n {/if}\r\n {#if data.binaries && data.binaries[0]}\r\n
\r\n {data.binaries[0].title}\r\n {#if !home && data.binaries[0].copyright}
{data.binaries[0].copyright}
{/if}\r\n
\r\n {/if}\r\n
\r\n {#if !home}
{data.category?.name}{date}
{/if}\r\n {@html kToCrown(data.title)}\r\n
\r\n {#if !home && data.embeddedUrl}\r\n
\r\n
\r\n
\r\n {/if}\r\n {#if !home && showText}\r\n
\r\n {#if data.text}
{@html kToCrown(data.text)}
{/if}\r\n
\r\n {:else if data.teaser && home}\r\n
\r\n {@html kToCrown(data.teaser)}\r\n
\r\n {/if}\r\n
\r\n {#if showOffer && data.experiences?.length}\r\n
\r\n \r\n \r\n \r\n
\r\n {/if}\r\n
\r\n\r\n","\r\n\r\n
\r\n\r\n\r\n\t{#if data}\r\n\t\r\n\t{/if}\r\n\r\n\r\n\r\n","\r\n\r\n\r\n
\r\n {#each news as n}\r\n \r\n {/each}\r\n
\r\n\r\n","\r\n\r\n
\r\n\r\n\r\n\t\r\n\t\r\n\r\n\r\n\r\n","\r\n\r\n
\r\n\r\n\r\n\t\r\n\t\r\n\r\n\r\n\r\n","\r\n\r\n
\r\n \r\n {#each slides as slide}\r\n \r\n
\r\n
\r\n
\r\n
\r\n

\r\n {slide.title}\r\n

\r\n
\r\n

\r\n {slide.teaser}\r\n

\r\n \r\n
\r\n
Jetzt Gratis Downloaden
\r\n \"Laden\r\n \"Jetzt\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {/each}\r\n
\r\n
\r\n\r\n","\r\n\r\n
1} \r\n style={`--bg: ${bg}; margin-top: ${mt * 1.5}rem; margin-bottom: ${mb * 1.5}rem;` + (colTemplate ? `--colTemplate: ${colTemplate};` : `--columns: ${cols};` + maxWidth ? `max-width: ${maxWidth};` : '')}\r\n>\r\n {#if wrap}\r\n
1} style={`background: ${wrap};`}>
\r\n {:else}\r\n \r\n {/if}\r\n
\r\n\r\n","\r\n\r\n
\r\n

\r\n \r\n
\r\n\r\n","\r\n\r\n{#if show}\r\n\r\n{/if}\r\n\r\n","\r\n\r\n
\r\n
\r\n
So geht QROWNS
\r\n

sammeln

\r\n
\r\n Sammle mit QR-Codes von Rechnungen, Produkten und Werbekampagnen. \r\n

\r\n Sammle mit deinen Freunden, auf Instagram oder erfülle spannende Challenges.\r\n
\r\n

einlösen

\r\n
Wähle deine Wunschprämie, löse ein und spare mit Gutscheinen bis zu 50%. Jede Prämie ist einmal pro Jahr einlösbar.
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \"Mobile\r\n
\r\n appstore = null} />\r\n
\r\n\r\n","\r\n\r\n
\r\n
\r\n

Über Uns

\r\n

\r\n QROWNS ist das größte, vom Umsatz unabhänige Multi-Partner-Programm Österreichs mit über 100 Prämien von Partnern aus Kultur, Kulinarik, Wellness, Sport und Freizeit.\r\n

\r\n
\r\n
\r\n

Kontakt

\r\n
\r\n Telefon\r\n +43 1 361 66 77 32 \r\n \r\n E-Mail\r\n hello@QROWNS.com\r\n\r\n Folge Uns\r\n
\r\n Instagram\r\n   \r\n Twitter\r\n
\r\n
\r\n
\r\n \r\n appstore = null} />\r\n
\r\n\r\n","\r\n\r\n
\r\n
\r\n {#each packages as p}\r\n \r\n {/each}\r\n
\r\n
\r\n\r\n","\r\n\r\n
\r\n\r\n\r\n\r\n\r\n \r\n
\r\n \r\n AKTUELL
\r\n News & Offers\r\n
\r\n
\r\n {#if news.length}\r\n \r\n {#each news as n}\r\n \r\n \r\n \r\n {/each}\r\n \r\n {/if}\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n {#each categories.slice(0,1) as category, i}\r\n \r\n {category.name}
\r\n {@html kToCrown(category.title ?? \"\")}\r\n \r\n {category.teaser ?? \"\"}\r\n \r\n
\r\n \r\n\r\n \r\n {/each}\r\n
\r\n\r\n

Prämien

\r\n
\r\n {#each categories.slice(1) as category, i}\r\n \r\n {category.name}
\r\n {category.title ?? \"\"}\r\n \r\n {category.teaser ?? \"\"}\r\n \r\n
\r\n \r\n\r\n {#if i < categories.length - 3}
{/if}\r\n {/each}\r\n
\r\n \r\n
\r\n\r\n\r\n","\r\n\r\n
\r\n\r\n\r\n
\r\n

Impressum

\r\n WUNDERWERK Online GmbH
\r\n Neubaugasse 4 / 7-9 I A-1070 Wien | Austria
\r\n FN381515b | ATU67321739
\r\n
\r\n Geschäftsführender Gesellschafter:
\r\n Mag. Bernhard Seikmann
\r\n
\r\n daswunderwerk.com\r\n
\r\n
\r\n\r\n\r\n","\r\n\r\n
\r\n\r\n\r\n
\r\n

Datenschutz­erklärung

\r\n

Der Schutz Ihrer Daten bei der Nutzung der App ist uns ein wichtiges Anliegen. Daher gehen wir mit den uns anvertrauten Daten verantwortungsvoll um.

\r\n

Nutzung Ihrer Daten
QROWNS verwaltet ein Kundenkonto, das durch Ihre Telefonnummer identifiziert wird. Die Telefonnummer wird dabei in verschlüsselter Form gespeichert und dient ausschließlich der Identifikation. Mit ihrem Kundenkonto sind eventuell aktivierte QROWNS-Abos sowie gesammelte QROWNS (Kronen) und bereits eingelöste Prämien und Gutscheine verbunden. Der Abwicklung der Abos (Kauf, Verlängerung, Storno) erfolgt über die jeweilige App-Store Plattform (Google Play bzw. Apple App Store). Dabei werden keine personenbezogenen Daten übermittelt.
\r\n Es werden nur die für den Zweck der App minimal notwendigen Daten verarbeitet und gespeichert. Es erfolgt keine Weitergabe personenbezogener Daten an Dritte, weder zu kommerziellen noch zu nichtkommerziellen Zwecken. Die Daten werden nicht für Werbezwecke genützt und es findet keine Verknüpfung mit technischen Zugriffsdaten statt.

\r\n

Automatisch erfasste Daten
Bei Aktionen und Abruf von Daten werden Zugriffsdaten über diesen Vorgang auf unserem Server in einer technischen Protokolldatei gespeichert. Es werden dabei keine personenbezogenen Daten erfasst. Die Daten werden anonymisiert – und daher ohne Personenbezug – gespeichert. Erfasst werden Informationen zur Aktion (Datum, Uhrzeit, Art der Aktion) und gegebenenfalls Parameter. Dies erfolgt für Zwecke der Datensicherheit und zur Problemanalyse. Protokolldateien werden regelmäßig gelöscht. Eine Weitergabe an Dritte – weder zu kommerziellen noch zu nichtkommerziellen Zwecken – findet nicht statt.

\r\n

Sicherheit Ihrer Daten
Wir ergreifen sachgemäße und angemessene Schritte, um Ihre Daten vor unbefugtem Zugriff sowie unbefugter Verwendung, Offenlegung, Änderung und Zerstörung zu schützen. Dazu bedienen wir uns neben aktuellen Technologien (bspw. SSL-Verschlüsselung für die Datenübertragungen) auch gängiger Datenschutzvorgaben (bspw. Datenminimierung).

\r\n

Ort der Datenspeicherung
Daten, die von uns erfasst werden, werden ausschließlich in Rechenzentren in Österreich verarbeitet. Wir ergreifen Maßnahmen, um sicherzustellen, dass die Daten, die wir im Rahmen dieser Datenschutzregelungen erfassen, gemäß den Bestimmungen dieser Datenschutzregelungen und des geltenden Rechts verarbeitet werden, unabhängig davon, wo sich die Daten befinden.

\r\n

Links
Die App kann Links auf Websites enthalten, einschließlich Links zu Websites externer Content-Provider, für die möglicherweise andere Datenschutzbestimmungen gelten. Wir übernehmen keinerlei Verantwortung für die Datenschutzpraktiken der per Link verbundenen Websites.

\r\n

Ihre Betroffenenrechte laut Art. 13 DSGVO
Informationspflicht bei Erhebung von personenbezogenen Daten bei der betroffenen Person Informationspflicht, wenn die personenbezogenen Daten nicht bei der betroffenen Person erhoben wurden
\r\n - Auskunftsrecht
\r\n - Recht auf Berichtigung
\r\n - Recht auf Löschung (\"Recht auf Vergessenwerden\")
\r\n - Recht auf Einschränkung der Verarbeitung
\r\n - Recht auf Datenübertragbarkeit
\r\n - Widerspruchsrecht
\r\n

\r\n\r\n

Kontaktinformationen
\r\n QROWNS.COM
\r\n by WUNDERWERK Online GmbH
\r\n Neubaugasse 4/7-9
\r\n 1070 Wien
\r\n hello@qrowns.com\r\n

\r\n
\r\n
\r\n\r\n\r\n","\r\n\r\n
\r\n\r\n\r\n
\r\n

Nutzungs­bedingungen

\r\n

Diese Nutzungsvereinbarung und die damit verbundenen Datenschutzrichtlinien regeln die Inanspruchnahme der Plattform QROWNS via App oder online auf QROWNS.COM zwischen Ihnen als natürlicher oder juristischer Person (\"Nutzer\", “Abonnent”, “Ihnen” oder \"Sie\") und der WUNDERWERK Online GmbH (“wir” oder “uns”). Durch den Zugriff und Nutzung bestätigen Sie, dass Sie diese Nutzungsbedingungen und Datenschutzrichtlinien akzeptieren.

\r\n

Wir betreiben diese Plattform zur Information über Freizeitangebote aus dem Bereich Kunst, Kulinarik, Wellness, Sport, Infotainment und Unterhaltung und die damit verbundenen Aktionen und Rabatte (“Gutscheine”) zum Bezug der Leistung zu vergünstigten Konditionen.

\r\n

Die Informationen über Angebote werden von uns dem Nutzer unentgeltlich zum Abruf bereitgestellt. Die Angebote stellen keine Kaufempfehlungen von uns dar. Die bereitgestellten Informationen wie Leistungsbeschreibungen, Adressen, Öffnungszeiten, Preise, Rabatte, Ersparnisse und Kontaktdaten zu Angeboten dienen allein zu Informationszwecken, ohne dass sich der Nutzer auf die Aktualität, Richtigkeit oder Vollständigkeit der Informationen berufen oder verlassen kann. Bilder dienen allein der exemplarischen Darstellung, ohne dass daraus Rückschlüsse auf die tatsächliche Leistung des Angebots gezogen werden können.

\r\n

Wir sind lediglich der Vermittler zwischen Partnern (bzw. deren Angeboten) und Nutzern. Nutzer, die von Partnern als Kunden gewonnen werden, sind alleine Kunden des Partner. Mit der Inanspruchnahme einer Leistung entsteht eine eigenständige Rechtsbeziehung zwischen dem Nutzer und dem Partner, die unabhängig von einer sonstigen Rechtsbeziehung zwischen uns und dem Nutzer ist. Ansprüche im Zusammenhang mit dem Erwerb eines Angebots bestehen ausschließlich gegenüber dem jeweiligen Partner. Wir übernehmen keine Gewähr für die Angebote und die damit verbundenen Leistungen von Partnern.

\r\n

Wir behalten uns vor, Änderungen oder Ergänzungen der bereitgestellten Angebote, Informationen oder Daten jederzeit ohne Ankündigung vorzunehmen, sowie das Recht, Inhalte, einzelne Services oder den Service selbst jederzeit zu unterbrechen und vorübergehend oder dauernd einzustellen. Daraus entstehen dem Nutzer weder Schadenersatz- noch Gewährleistungsansprüche.

\r\n

Wir können nach eigenem Ermessen Updates für die Plattform entwickeln und bereitstellen, die Upgrades, Fehlerbehebungen und/oder neue Funktionen enthalten können. Die Updates können Inhalte und Funktionen ändern oder ganz löschen. Wir sind nicht verpflichtet, Updates zur Verfügung zu stellen oder bestimmte Merkmale oder Funktionen bereitzustellen. Sie sind verpflichtet, alle Aktualisierungen unverzüglich herunterzuladen und zu installieren.

\r\n

Wir übernehmen keine Verantwortung für Inhalte oder die Funktionsfähigkeit, Fehlerfreiheit oder Rechtmäßigkeit von Webseiten Dritter, auf die mittels Link verwiesen wird. An dieser Stelle wird ausdrücklich erklärt, dass wir keinerlei Einfluss auf die Gestaltung und die Inhalte der gelinkten Seiten haben. Wir distanzieren uns aus diesem Grunde ausdrücklich von allen Inhalten aller gelinkten Seiten und machen uns die Inhalte nicht zu eigen. Diese Erklärung gilt für alle von uns gezeigten Links und für alle Inhalte der Seiten.

\r\n

Unsere Inhalte sind urheberrechtlich geschützt. Die Vervielfältigung, Änderung, Verbreitung oder Speicherung von Informationen oder Daten, insbesondere von Texten, Textteilen oder Bildmaterial bedarf unserer vorherigen Zustimmung. Zitate sind nur unter Nennung von QROWNS oder QROWNS.COM erlaubt.

\r\n

Um QROWNS sammeln und Prämien/Gutscheine einlösen zu können, ist eine Anmeldung erforderlich.

\r\n

Zur Anmeldung wird eine gültige Telefonnummer benötigt. Die Telefonnummer dient allein der Anmeldung und Identifikation eines Nutzers, wird verschlüsselt gespeichert und wird weder für Werbezwecke verwendet, noch an Dritte weitergegeben.

\r\n

Ein Abo ist ist für die Gültigkeitsdauer des Abos gültig. Alle Abos verlängern sich zum Ablaufdatum automatisch um den genannten Zeitraum. Nach der Kündigung haben Sie bis zum Ende ihres Abrechnungszeitraums weiterhin die Möglichkeit, den Dienst zu benutzen. Wenn Sie Ihre Mitgliedschaft kündigen, wird Ihr Konto am Ende des laufenden Abrechnungszeitraums automatisch geschlossen.

\r\n

Jeder Gutschein steht jedem Abonnenten nur einmal innerhalb eines Jahres zur Verfügung. Wir behalten uns das Recht vor, Angebote und Gutscheine jederzeit zu entfernen und/oder zu ändern und können in keiner Weise verantwortlich oder haftbar gemacht werden, wenn ein Gutschein entfernt oder geändert wird.

\r\n

Angebote gelten nur für die angegebene Leistung am angegebenen Ort zur angegebenen Einlösezeit, sind nicht exklusiv und nicht in Verbindung mit anderen Rabattangeboten oder Treueprogrammen gültig.

\r\n

Angebote sind nur bei dem genannten Partner einlösbar. Angebote sind pro Partner und nicht pro Verkaufsstelle verfügbar.

\r\n

Angebote gelten nur für normale Tarife/Preise und können nicht in Verbindung mit anderen Rabattaktionen oder Treueprogrammen genutzt werden. Entgelte für Zusatzleistungen, die nicht Teil des Angebot sind, sind nicht im Angebot enthalten und sind gesondert zu entrichten. Angebote sind nicht gegen Bargeld einlösbar.

\r\n

Die Bedingungen für die Einlösung von Gutscheinen (“Einlösebedingungen”) können von Angebot zu Angebot variieren. Bitte informieren Sie sich beim jeweiligen Angebot über die konkreten Einlösebedingungen. Für bestimmte Angebote und/oder Aktivitäten kann eine vorherige Buchung erforderlich sein.

\r\n

Wir haften nicht für die Schließung von Geschäften oder die Weigerung von Händlern, Gutscheine zu akzeptieren; wir werden uns jedoch bemühen, die Situation so weit wie möglich zu bereinigen. Sollte sich ein Händler oder ein Veranstaltungsort weigern, ein Angebot zu akzeptieren, wenden Sie sich bitte an den Kundendienst.

\r\n

Die unbefugte Vervielfältigung, der Weiterverkauf oder die Änderung eines Angebots durch den Nutzer oder Abonnenten ist verboten. Bei Zuwiderhandlung behalten wir uns das Recht vor, das betreffende Benutzerkonto des Abonnenten ohne Rückerstattung der Kosten zu sperren, die Nutzung der Plattform zu untersagen, sowie weitere rechtliche Schritte einzuleiten.

\r\n

Es gelten ausschließlich die angeführten Nutzungsbedingungen. Entgegenstehende oder von diesen Nutzungsbedingungen abweichende Bedingungen werden von uns nicht anerkannt. Sollten sich einzelne Bestimmungen dieser Nutzungsbedingungen als ungültig, unrechtmäßig oder nicht vollstreckbar erweisen, bleiben die Gültigkeit, Rechtmäßigkeit und Vollstreckbarkeit der übrigen Bestimmungen davon unberührt. Die ungültige Bestimmung ist so umzudeuten oder so zu ergänzen oder zu ersetzen, dass der hierbei beabsichtigte wirtschaftliche Zweck soweit wie möglich erreicht wird.

\r\n

Wien, Mai 2023

\r\n
\r\n
\r\n\r\n\r\n","\r\n\r\n
\r\n \r\n
\r\n\r\n","\r\n\r\n\r\n
\r\n
\r\n
\r\n
\r\n

\r\n \r\n

\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n","\r\n\r\n
\r\n
\r\n
QRowns und Prämien
\r\n

IHRE
VORTEILE
MIT
QROWNS

\r\n
\r\n

Mehr Aufmerksamkeit für Ihre Werbebotschaft. Egal ob Nachhaltigkeit, Gewinnspiel oder Promotion: Die Botschaft hinter Ihrem QR-Code weckt Interesse.

\r\n

Hoher Kaufanreiz Die Aussicht auf attraktive Prämien bietet für jeden Kunden einen zusätzlichen Anreiz zum Einkauf.

\r\n

Punkte statt % Belohnen Sie Ihre Kunden mit statt Prozenten. So setzen Sie einen Anreiz für Ihr Angebot ohne laufende Rabatte.

\r\n

100% erfolgsorientiert Volle Kontrolle über Ihr Werbebudget mit Cost per Scan: Sie zahlen nur für Kundenkontakte, die den QR Ihres Produktes gescannt haben.

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

Prämien

\r\n

Amazon
Apple
Cineplexx
Eversports
Google Play
GrowMyTree
Jollydays
Lieferando
Oeticket
Spotify
uva.

\r\n
\r\n
\r\n
\r\n
\r\n\r\n","\r\n\r\n
\r\n \r\n
\r\n\r\n","\r\n\r\n
\r\n {#if !animated}\r\n

So geht QROWNS

\r\n {/if}\r\n
\r\n \r\n
\r\n \r\n \"qr\r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n\r\n","\r\n\r\n
\r\n\r\n\r\n \r\n \r\n Der Mehrwert
\r\n für Ihren QR\r\n
\r\n

\r\n Erlebnisreiche Werbung mit Call-to-Action.
\r\n So erzeugen sie mit Ihrem QR-Code mehr
\r\n Aufmerksamkeit, Interesse und Umsatz.\r\n

\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n Das ist QRowns\r\n QROWNS belohnt das Scannen Ihrer QR-Codes mit Kronen, die gegen Prämien von Kino bis Shopping eingetauscht werden können. Durch den Mehrwert erhalten Ihre Botschaften mehr Aufmerksamkeit und Interesse und einen direkten Anreiz, Ihr Produkt zu kaufen. Mit QROWNS werben Sie 100% erfolgsorientiert. Sie zahlen nur für Kundenkontakte, die den QR Ihres Produktes gescannt haben.\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n\r\n
\r\n \r\n QR-Code Challenges\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n Was kostet QRowns?\r\n Nichts, nur Ihr Engagement. Die QRowns Partnerschaft ist kostenlos. Sie erhalten alle Leistungen sowie Platzierung und Werbewert gratis und können damit Kundenbindung, Auslastung und Umsatz ohne Kosten erhöhen.\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n\r\n","\r\n\r\n
\r\n\r\n\r\n \r\n \r\n Hol dir 100 Gäste
für dein Restaurant.\r\n
\r\n

\r\n Lust auf volle Tische,
\r\n glückliche Gäste und
\r\n mehr Umsatz ohne Aufwand?\r\n

\r\n \r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n \r\n So einfach gewinnst du Gäste\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n
QRowns und Prämien
\r\n

DEINE
VORTEILE
MIT
QROWNS

\r\n
\r\n

Hoher Anreiz Das Sammeln von QROWNS bietet für jeden Kunden einen großen Anreiz, sich für dein Restaurant zu entscheiden.

\r\n

Punkte statt % Du belohnst deine Gäste mit QROWNS statt Prozenten und behältst so deinen vollen Umsatz und Gewinn.

\r\n

100% erfolgsorientiert Volle Kontrolle über dein Budget. Du zahlst nur für Gäste, mit denen du einen Umsatz erzielt hast.

\r\n

0% Aufwand Gäste scannen nach dem Bezahlen einfach den QR-Code der Rechnung. Du oder dein Personal haben keinen Aufwand.

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

Prämien

\r\n

Amazon
Apple
Cineplexx
Eversports
Google Play
GrowMyTree
Jollydays
Lieferando
Oeticket
Spotify
uva.

\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n SO EINFACH GEWINNST DU GÄSTE\r\n \r\n
\r\n
\"Partner
\r\n
\r\n Zum Start erhältst du die offiziellen QROWNS Menükarten-Sticker* zur Information deiner Gäste. Zum Sammeln von QROWNS scannen die Gäste lediglich den QR der Rechnung mit der QROWNS App. Wer zahlt, sammelt! \r\n
*Auf Wunsch stellen wir dir gerne weitere Streuartikel vom Untersetzer bis zum Tischset kostenlos zur Verfügung.
\r\n
\r\n
\"Partner
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n Redaktionelle Werbung\r\n \r\n
Wir berichten über dein Restaurant und sorgen für mehr Aufmerksamkeit.
\r\n \r\n
\"\"
\r\n
\"\"
\r\n
\"\"
\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n Social Media Werbung\r\n \r\n
Über 5000 kulinarische Follower auf @wien.restaurants warten auf deinen Post.
\r\n \r\n \"instagram\r\n \"instagram\r\n \"instagram\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n

\r\n Wähle dein QROWNS Werbepaket\r\n

\r\n
für 100 Rechnungen
\r\n

\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
PromoListeBeitragInstaHome
100 x1
Promo
Liste
Beitrag
Instagram
Home
€49,-
100 x5
Promo
Liste
Beitrag
Instagram
Home
€100,-
100 x10
Promo
Liste
Beitrag
Instagram
Home
€200,-
100 x25
Promo
Liste
Beitrag
Instagram
Home
€400,-
100 x50
Promo
Liste
Beitrag
Instagram
Home
€600,-
\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n\r\n\r\n","\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n

\r\n Prämien für
\r\n ihr Prämien
\r\n Programm\r\n

\r\n
\r\n

\r\n Premium-Erlebnisse aus Kultur, Kulinarik und
Freizeit für Ihr Kundenbindungsprogramm.\r\n

\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n

\r\n Erlebnisse
\r\n für mehr
\r\n Kundenbindung\r\n

\r\n
\r\n

\r\n Das attraktive Add-on für Ihr Loyalityprogramm.
Erlebnisgutscheine ohne Aufwand und Kosten.\r\n

\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n","\r\n\r\n
\r\n
\r\n
QRowns und Prämien
\r\n

IHRE
VORTEILE

\r\n
\r\n

Neue Zielgruppen Erweitern Sie Ihr Bonusprogramm über Ihr eigenes Angebot hinaus und bieten Sie Kunden zusätzlich einzigartige Premium-Erlebnisse aus Kultur, Kulinarik, Wellness, Sport und Freizeit.

\r\n

Gewinnspanne schützen Belohnen Sie Kunden mit Prämien statt Prozenten. Statt Rabatten auf das eigene Sortiment erhalten Ihre Kunden Freizeiterlebnisse zum Vorteilspreis als Prämie. Auf diese Weise verringern Sie eigene Rabatte und schützen so Ihre Gewinnspanne.

\r\n

Ohne Aufwand QROWNS übernimmt den Aufwand der Partnerakquise und -betreuung und kümmert sich um das gesamte Erlebnismanagement - von der Auswahl, über das Handling bis hin zur technischen Abwicklung. Sie haben keinerlei Aufwand.

\r\n

100% automatisiert Die QROWNS API Schnittstelle bietet die Möglichkeit einer schnell umsetzbaren eigenen Anwendungsprogrammierung, mit der die Übergabe von Punkten zu 100% automatisiert wird.

\r\n

100% anonym Die Übertragung von Punkten erfolgt ohne den Austausch weiterer Userdaten. Die Übertragung erfolgt allein über die Eingabe der Telefonnummer, die gleichzeitig die QROWNS ID des Users darstellt und verschlüsselt übermittelt und gespeichert wird.

\r\n

Keine Kosten QROWNS ist kostenlos. Sie erhalten alle Leistungen wie Partnermanagement, Erlebnismanagement sowie die gesamte technische Betreuung als Kooperationspartner ohne Kosten.

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n appstore = null} />\r\n
\r\n\r\n","\r\n\r\n
\r\n\r\n\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n Das ist QRowns\r\n QRowns bietet Prämien für Prämienprogramme von Unternehmen. Anstelle von eigegen Rabatten, kann der Kunden gesammelte Punkte gegen QRowns tauschen und damit über 100 attraktive Erlebnisse aus Kultur, Kulinarik und Freizeit erleben. QRowns erweitert ihr Prämienprogramm für neue Zielgruppen und schützt die Gewinnspanne ohne Aufwand und Kosten.\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n Ausgewählte Erlebnisprämien\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n Was kostet QRowns?\r\n Nichts. QRowns Premium ist kostenlos. Sie erhalten alle Leistungen sowie Platzierung und Werbewert gratis und können damit Ihr Prämienangebot ohne Aufwand und Kosten erhöhen.\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n\r\n\r\n","\r\n\r\n
\r\n\r\n\r\n
\r\n \r\n
\r\n

\r\n \"QROWNS,\r\n

\r\n \r\n
\r\n
\r\n
\r\n
\r\n

\r\n Die Bonus App, die überall sammelt.\r\n

\r\n
\r\n
Jetzt gratis downloaden
\r\n \"Laden\r\n \"Jetzt\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n

Sammle mit jeder Rechnung

Scanne jede Rechnung und sammle in den von dir besuchten Geschäften und Lokalen.

\r\n

\r\n

Sammle gratis

Sammle gratis auf Instagram, TikTok, auf Webseiten, in Zeitungen, Zeitschriften uva.

\r\n

\r\n

Mehr Cashback

Erhalte ein Vielfaches an Cashback in Form von Gutscheinen und ohne Kontonummer.

\r\n

\r\n

No Big Data

100% anonym und privat. Keine Daten. Kein Tracking. Keine personalisierte Werbung.

\r\n\r\n \r\n
Prämien
\r\n \r\n\r\n
\r\n
\r\n

Gratis Kinokarten

\r\n \"Symbolbild\"\r\n

Gratis Kinokarten in deinem Cineplexx Lieblingskino für einen Film deiner Wahl.

\r\n
\r\n
\r\n
\r\n

Wert­gutscheine

\r\n \"Symbolbild\"\r\n

Spare mit OETICKET, trainiere gratis mit EVERSPORTS, erlebe Abenteuer mit JOLLYDAYS.

\r\n
\r\n
\r\n
\r\n

Shopping Gutscheine

\r\n \"Symbolbild\"\r\n

Wertkarten und Online Codes von Amazon, Apple, Google, H&M, IKEA, Zalando uvm.

\r\n
\r\n
\r\n
\r\n

1+1 gratis Gutscheine

\r\n \"Symbolbild\"\r\n

Wähle aus über 100 Prämien aus Kulinarik, Kultur, Wellness, Sport und Freizeit in Wien.

\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n
Neu! Jetzt gratis downloaden.
\r\n \"Laden\r\n \"Jetzt\r\n
\r\n
\r\n\r\n \r\n\r\n\r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n","\r\n\r\n
\r\n\r\n\r\n
\r\n \r\n
\r\n

\r\n \"5\r\n

\r\n \r\n
\r\n
\r\n
\r\n
\r\n

\r\n Exklusiv für TIPI-Leser!\r\n

\r\n

QROWNS-App downloaden und QR-Code in der TIPI-Ausgabe Sommer 2023 scannen.\r\n

\r\n
\r\n
Jetzt gratis downloaden
\r\n \"Laden\r\n \"Jetzt\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n

Die Bonus App, die überall sammelt.

\r\n

Sammle mit jeder Rechnung

\r\n

Scanne jede Rechnung und sammle in den von dir besuchten Geschäften und Lokalen.

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

Sammle gratis

\r\n

Sammle gratis auf Instagram, TikTok, auf Webseiten, in Zeitungen, Zeitschriften uva.

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

Mehr Cashback

\r\n

Erhalte ein Vielfaches an Cashback in Form von Gutscheinen und ohne Kontonummer.

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

No Big Data

\r\n

100% anonym und privat. Keine Daten. Kein Tracking. Keine personalisierte Werbung.

\r\n
\r\n
\r\n \r\n
Prämien
\r\n \r\n\r\n
\r\n
\r\n

Gratis Kinokarten

\r\n \"Symbolbild\"\r\n

Gratis Kinokarten in deinem Cineplexx Lieblingskino für einen Film deiner Wahl.

\r\n
\r\n
\r\n
\r\n

Wert­gutscheine

\r\n \"Symbolbild\"\r\n

Spare mit OETICKET, trainiere gratis mit EVERSPORTS, erlebe Abenteuer mit JOLLYDAYS.

\r\n
\r\n
\r\n
\r\n

Shopping Gutscheine

\r\n \"Symbolbild\"\r\n

Wertkarten und Online Codes von Amazon, Apple, Google, H&M, IKEA, Zalando uvm.

\r\n
\r\n
\r\n
\r\n

1+1 gratis Gutscheine

\r\n \"Symbolbild\"\r\n

Wähle aus über 100 Prämien aus Kulinarik, Kultur, Wellness, Sport und Freizeit in Wien.

\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n
Neu! Jetzt gratis downloaden.
\r\n \"Laden\r\n \"Jetzt\r\n
\r\n
\r\n\r\n \r\n\r\n\r\n
\r\n\r\n\r\n\r\n\r\n\r\n","\r\n\r\n
\r\n\r\n\r\n
\r\n \r\n
\r\n

\r\n \"5\r\n

\r\n \r\n
\r\n
\r\n
\r\n
\r\n

\r\n Exklusiv für .dot-Leser!\r\n

\r\n

QROWNS-App downloaden und QR-Code in der .dot-Ausgabe 096 scannen.\r\n

\r\n
\r\n
Jetzt gratis downloaden
\r\n \"Laden\r\n \"Jetzt\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n

Die Bonus App, die überall sammelt.

\r\n

Sammle mit jeder Rechnung

\r\n

Scanne jede Rechnung und sammle in den von dir besuchten Geschäften und Lokalen.

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

Sammle gratis

\r\n

Sammle gratis auf Instagram, TikTok, auf Webseiten, in Zeitungen, Zeitschriften uva.

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

Mehr Cashback

\r\n

Erhalte ein Vielfaches an Cashback in Form von Gutscheinen und ohne Kontonummer.

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

No Big Data

\r\n

100% anonym und privat. Keine Daten. Kein Tracking. Keine personalisierte Werbung.

\r\n
\r\n
\r\n\r\n \r\n
Prämien
\r\n \r\n\r\n
\r\n
\r\n

Gratis Kinokarten

\r\n \"Symbolbild\"\r\n

Gratis Kinokarten in deinem Cineplexx Lieblingskino für einen Film deiner Wahl.

\r\n
\r\n
\r\n
\r\n

Wert­gutscheine

\r\n \"Symbolbild\"\r\n

Spare mit OETICKET, trainiere gratis mit EVERSPORTS, erlebe Abenteuer mit JOLLYDAYS.

\r\n
\r\n
\r\n
\r\n

Shopping Gutscheine

\r\n \"Symbolbild\"\r\n

Wertkarten und Online Codes von Amazon, Apple, Google, H&M, IKEA, Zalando uvm.

\r\n
\r\n
\r\n
\r\n

1+1 gratis Gutscheine

\r\n \"Symbolbild\"\r\n

Wähle aus über 100 Prämien aus Kulinarik, Kultur, Wellness, Sport und Freizeit in Wien.

\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n
Neu! Jetzt gratis downloaden.
\r\n \"Laden\r\n \"Jetzt\r\n
\r\n
\r\n\r\n \r\n\r\n\r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n","\r\n\r\n
\r\n\r\n\r\n
\r\n \r\n
\r\n

\r\n \"5\r\n

\r\n \r\n
\r\n
\r\n
\r\n
\r\n

\r\n So geht's\r\n

\r\n

QROWNS-App downloaden und QR-Code in der Preisliste scannen.\r\n

\r\n
\r\n
Jetzt gratis downloaden
\r\n \"Laden\r\n \"Jetzt\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n

Die Bonus App, die überall sammelt.

\r\n

Sammle mit jeder Rechnung

\r\n

Scanne jede Rechnung und sammle in den von dir besuchten Geschäften und Lokalen.

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

Sammle gratis

\r\n

Sammle gratis auf Instagram, TikTok, auf Webseiten, in Zeitungen, Zeitschriften uva.

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

Mehr Cashback

\r\n

Erhalte ein Vielfaches an Cashback in Form von Gutscheinen und ohne Kontonummer.

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

No Big Data

\r\n

100% anonym und privat. Keine Daten. Kein Tracking. Keine personalisierte Werbung.

\r\n
\r\n
\r\n\r\n \r\n
Prämien
\r\n \r\n\r\n
\r\n
\r\n

Gratis Kinokarten

\r\n \"Symbolbild\"\r\n

Gratis Kinokarten in deinem Cineplexx Lieblingskino für einen Film deiner Wahl.

\r\n
\r\n
\r\n
\r\n

Wert­gutscheine

\r\n \"Symbolbild\"\r\n

Spare mit OETICKET, trainiere gratis mit EVERSPORTS, erlebe Abenteuer mit JOLLYDAYS.

\r\n
\r\n
\r\n
\r\n

Shopping Gutscheine

\r\n \"Symbolbild\"\r\n

Wertkarten und Online Codes von Amazon, Apple, Google, H&M, IKEA, Zalando uvm.

\r\n
\r\n
\r\n
\r\n

1+1 gratis Gutscheine

\r\n \"Symbolbild\"\r\n

Wähle aus über 100 Prämien aus Kulinarik, Kultur, Wellness, Sport und Freizeit in Wien.

\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n
Neu! Jetzt gratis downloaden.
\r\n \"Laden\r\n \"Jetzt\r\n
\r\n
\r\n\r\n \r\n\r\n\r\n
\r\n\r\n\r\n\r\n\r\n\r\n","\r\n\r\n
\r\n\r\n\r\n
\r\n \r\n
\r\n

\r\n \"5\r\n
\"tvheute
\r\n

\r\n \r\n
\r\n
\r\n
\r\n
\r\n

\r\n 5 für tvheute-Leser!\r\n

\r\n

QROWNS-App downloaden, QR-Code mit der App scannen oder Code \"tvheute\" manuell eingeben.\r\n

\r\n
\r\n
Jetzt gratis downloaden
\r\n \"Laden\r\n \"Jetzt\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n

Die Cashback App, die überall sammelt.

\r\n

Sammle mit jeder Rechnung

\r\n

Scanne jede Rechnung und sammle in den von dir besuchten Geschäften und Lokalen.

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

Sammle mit Produkten

\r\n

Scanne den QR Code von ausgewählten Produkten.

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

Sammle gratis

\r\n

Sammle gratis in Medien, auf Plakaten, auf Instragram uva.

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

Mehr Cashback

\r\n

Erhalte ein Vielfaches an Cashback mit Gutscheinen.

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

Ohne Kontonummer

\r\n

Erhalte Cash in Gutscheinen.
Kein Konto erforderlich.

\r\n
\r\n
\r\n\r\n \r\n
Prämien
\r\n \r\n\r\n
\r\n
\r\n

Gratis Kinokarten

\r\n \"Symbolbild\"\r\n

Gratis Kinokarten in deinem Cineplexx Lieblingskino für einen Film deiner Wahl.

\r\n
\r\n
\r\n
\r\n

Wert­gutscheine

\r\n \"Symbolbild\"\r\n

Spare mit OETICKET, trainiere gratis mit EVERSPORTS, erlebe Abenteuer mit JOLLYDAYS.

\r\n
\r\n
\r\n
\r\n

Shopping Gutscheine

\r\n \"Symbolbild\"\r\n

Wertkarten und Online Codes von Amazon, Apple, Google, H&M, IKEA, Zalando uvm.

\r\n
\r\n
\r\n
\r\n

1+1 gratis Gutscheine

\r\n \"Symbolbild\"\r\n

Wähle aus über 100 Prämien aus Kulinarik, Kultur, Wellness, Sport und Freizeit in Wien.

\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n
Neu! Jetzt gratis downloaden.
\r\n \"Laden\r\n \"Jetzt\r\n
\r\n
\r\n\r\n \r\n\r\n\r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n","\r\n\r\n
\r\n\r\n\r\n
\r\n \r\n
\r\n

\r\n \"Plant\r\n

\r\n \r\n
\r\n
\r\n
\r\n
\r\n

\r\n Pflanze einen Baum
in 10 Tagen!\r\n

\r\n

QROWNS-App downloaden und QR-Code der SmartCard aus der edubag scannen.\r\n

\r\n
\r\n
Jetzt gratis downloaden
\r\n \"Laden\r\n \"Jetzt\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n

Die Bonus App, die überall sammelt.

\r\n

Sammle mit jeder Rechnung

\r\n

Scanne jede Rechnung und sammle in den von dir besuchten Geschäften und Lokalen.

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

Sammle gratis

\r\n

Sammle gratis auf Instagram, TikTok, auf Webseiten, in Zeitungen, Zeitschriften uva.

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

Mehr Cashback

\r\n

Erhalte ein Vielfaches an Cashback in Form von Gutscheinen und ohne Kontonummer.

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

No Big Data

\r\n

100% anonym und privat. Keine Daten. Kein Tracking. Keine personalisierte Werbung.

\r\n
\r\n
\r\n \r\n
Prämien
\r\n \r\n\r\n
\r\n
\r\n

Gratis Kinokarten

\r\n \"Symbolbild\"\r\n

Gratis Kinokarten in deinem Cineplexx Lieblingskino für einen Film deiner Wahl.

\r\n
\r\n
\r\n
\r\n

Wert­gutscheine

\r\n \"Symbolbild\"\r\n

Spare mit OETICKET, trainiere gratis mit EVERSPORTS, erlebe Abenteuer mit JOLLYDAYS.

\r\n
\r\n
\r\n
\r\n

Shopping Gutscheine

\r\n \"Symbolbild\"\r\n

Wertkarten und Online Codes von Amazon, Apple, Google, H&M, IKEA, Zalando uvm.

\r\n
\r\n
\r\n
\r\n

1+1 gratis Gutscheine

\r\n \"Symbolbild\"\r\n

Wähle aus über 100 Prämien aus Kulinarik, Kultur, Wellness, Sport und Freizeit in Wien.

\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n
Neu! Jetzt gratis downloaden.
\r\n \"Laden\r\n \"Jetzt\r\n
\r\n
\r\n\r\n \r\n\r\n\r\n
\r\n\r\n\r\n\r\n\r\n\r\n","\r\n\r\n\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\t\r\n\r\n\r\n","import App from './App.svelte';\r\n\r\nconst app = new App({\r\n\ttarget: document.body,\r\n\tprops: {}\r\n});\r\n\r\nexport default app;"],"names":["noop","identity","x","assign","tar","src","k","run","fn","blank_object","Object","create","run_all","fns","forEach","is_function","thing","safe_not_equal","a","b","src_url_equal_anchor","src_url_equal","element_src","url","document","createElement","href","subscribe","store","callbacks","unsub","unsubscribe","get_store_value","value","_","component_subscribe","component","callback","$$","on_destroy","push","create_slot","definition","ctx","$$scope","slot_ctx","get_slot_context","slice","get_slot_changes","dirty","lets","undefined","merged","len","Math","max","length","i","update_slot_base","slot","slot_definition","slot_changes","get_slot_context_fn","slot_context","p","get_all_dirty_from_scope","exclude_internal_props","props","result","compute_rest_props","keys","rest","Set","has","null_to_empty","set_store_value","ret","set","action_destroyer","action_result","destroy","is_client","window","now","performance","Date","raf","cb","requestAnimationFrame","tasks","run_tasks","task","c","delete","f","size","loop","promise","Promise","fulfill","add","abort","append","target","node","appendChild","get_root_for_style","root","getRootNode","ownerDocument","host","append_empty_stylesheet","style_element","element","style","head","append_stylesheet","sheet","insert","anchor","insertBefore","detach","parentNode","removeChild","destroy_each","iterations","detaching","d","name","svg_element","createElementNS","text","data","createTextNode","space","empty","listen","event","handler","options","addEventListener","removeEventListener","prevent_default","preventDefault","call","this","attr","attribute","removeAttribute","getAttribute","setAttribute","set_attributes","attributes","descriptors","getOwnPropertyDescriptors","__proto__","key","cssText","set_svg_attributes","set_data","wholeText","set_style","important","removeProperty","setProperty","toggle_class","toggle","classList","custom_event","type","detail","bubbles","cancelable","e","createEvent","initCustomEvent","HtmlTag","constructor","is_svg","n","html","h","m","nodeName","t","innerHTML","Array","from","childNodes","managed_styles","Map","current_component","active","create_rule","duration","delay","ease","uid","step","keyframes","rule","str","hash","charCodeAt","doc","stylesheet","rules","get","info","create_style_information","insertRule","cssRules","animation","delete_rule","previous","split","next","filter","anim","indexOf","deleted","join","deleteRule","clear","set_current_component","get_current_component","Error","onMount","on_mount","afterUpdate","after_update","onDestroy","createEventDispatcher","defaultPrevented","setContext","context","getContext","bubble","dirty_components","binding_callbacks","render_callbacks","flush_callbacks","resolved_promise","resolve","update_scheduled","schedule_update","then","flush","tick","add_render_callback","add_flush_callback","seen_callbacks","flushidx","saved_component","update","pop","fragment","before_update","wait","dispatch","direction","kind","dispatchEvent","outroing","outros","group_outros","r","check_outros","transition_in","block","local","transition_out","o","null_transition","create_in_transition","params","animation_name","config","running","cleanup","go","easing","css","start_time","end_time","started","start","invalidate","end","create_out_transition","group","reset","create_bidirectional_transition","intro","running_program","pending_program","clear_animation","init","program","abs","globals","globalThis","global","destroy_block","lookup","outro_and_destroy_block","update_keyed_each","old_blocks","get_key","dynamic","list","create_each_block","get_context","old_indexes","new_blocks","new_lookup","deltas","child_ctx","will_move","did_move","first","new_block","old_block","new_key","old_key","get_spread_update","levels","updates","to_null_out","accounted_for","get_spread_object","spread_props","bind","index","bound","create_component","mount_component","customElement","new_on_destroy","map","destroy_component","instance","create_fragment","not_equal","append_styles","parent_component","on_disconnect","skip_bound","ready","fill","make_dirty","hydrate","nodes","children","l","SvelteComponent","$destroy","$on","splice","$set","$$props","obj","$$set","isUndefined","isFunction","isNumber","createCounter","isSSR","addListener","subscriber_queue","writable","stop","subscribers","new_value","run_queue","subscriber","derived","stores","initial_value","single","isArray","stores_array","auto","inited","values","pending","sync","unsubscribers","createKey","ctxName","LOCATION","ROUTER","ROUTE","ROUTE_PARAMS","FOCUS_ELEM","paramRegex","startsWith","string","search","substr","isSplat","segment","stripSlashes","replace","segmentize","uri","filterFalsy","segments","Boolean","addQuery","pathname","query","normalizePath","path","pathFragments","joinedSegments","labels","createLabel","labelId","createMessage","message","originId","origin","to","basepath","createIdentifier","originMsg","label","createMessageHandler","args","fail","warn","console","rankRoute","route","score","default","fullPath","reduce","acc","nextScore","isRootSegment","test","isDynamic","SEGMENT_POINTS","pick","routes","bestMatch","defaultMatch","uriPathname","uriSegments","isRootUri","ranked","sort","rankRoutes","missed","createMatch","routeSegments","routeSegment","uriSegment","splatName","decodeURIComponent","dynamicMatch","exec","match","normalizeLocation","location","state","baseSegments","pathSegments","shift","normalizeUrlFragment","frag","createLocation","searchIndex","hashIndex","hasSearchIndex","hasHashIndex","pathnameAndSearch","resolveLink","routeBase","appBase","base","toPathname","toQuery","basePathname","toSegments","concat","allSegments","extractBaseUri","routePath","routeMatch","POP","getLocation","source","encodeURI","decodeURI","history","_key","createStackFrame","canUseDOM","isEmbeddedPage","globalHistory","listeners","action","notifyListeners","listenerFns","listener","unlisten","navigate","keyedState","random","toString","substring","createHistory","initialPathname","stack","entries","pushState","title","replaceState","newIndex","createMemorySource","focusCandidate","initialNavigation","pushFocusCandidate","item","level","routerIdA","routerIdB","routerMarkers","querySelectorAll","currentId","Number","dataset","svnavRouter","isAbove","routerId","focus","elem","TABINDEX","hasAttribute","blurListener","activeElement","isEndMarker","id","svnavRouteEnd","selector","parent","querySelector","handleFocus","focusElement","current","nextElementSibling","tagName","heading","queryHeading","documentElement","createTriggerFocus","a11yConfig","announcementText","manageFocus","announceNavigation","announcements","meta","announcementMessage","createAnnouncement","if_block","div","create_if_block","createId","defaultBasepath","primary","a11y","initialBasepath","normalizedBasepath","locationContext","routerContext","isTopLevelRouter","activeRoute","hasActiveRoute","prevLocation","$location","triggerFocus","createRouteFilter","routeId","routeList","routeItem","changedHistory","normalizedLocation","registerRoute","matchingRoute","prevRoutes","nextRoutes","unregisterRoute","$routes","hasHash","shouldManageFocus","$prevLocation","$activeRoute","usePreflightCheck","componentId","ctxKey","ctxProviderId","toReadonly","useLocation","useHistory","useRouteBase","_route","useResolve","div0","div1","parentBase","ssrMatch","useNavigate","isDefault","rawBase","$parentBase","updatedRoute","$$invalidate","isActive","activeParams","a_levels","getProps","isPartiallyCurrent","isCurrent","ariaCurrent","dynamicProps","$$restProps","button","metaKey","altKey","ctrlKey","shiftKey","shouldNavigate","settings","theme","mode","format","formatType","weekStart","visible","inputClasses","todayBtnClasses","clearBtnClasses","todayBtn","clearBtn","autoclose","clearToggle","i18n","days","daysShort","daysMin","months","monthsShort","meridiem","suffix","timeView","backToDate","cubicOut","fade","linear","getComputedStyle","opacity","fly","y","target_opacity","transform","od","u","compute","currentDate","selectedDate","view","locale","nextFrom","prevTo","todayMark","grid","yearRow","currYear","getUTCFullYear","selectionMark","monthRow","ISO","toISOString","dateNormalized","initYear","getFullYear","setFullYear","setUTCMonth","getUTCMonth","getUTCDate","getUTCHours","today","prevMonth","UTCDate","day","utils","getDaysInMonth","setUTCDate","getUTCDay","nextMonth","nextMonthValue","valueOf","dayRow","inc","moveGrid","newPos","floor","isLeapYear","year","month","UTC","apply","arguments","parseDate","date","dateUTC","getTimezoneOffset","setMilliseconds","formatHelper","parseFormat","val","part","parts","nonpunctuation","parsed","setters_order","setters_map","hh","v","setUTCHours","HH","H","ii","setUTCMinutes","ss","setUTCSeconds","s","yyyy","setUTCFullYear","yy","isNaN","getMonth","getDate","getUTCMinutes","getSeconds","cnt","parseInt","toLowerCase","formatDate","getTime","M","MM","D","DD","getUTCSeconds","z","toLocaleDateString","timeZoneName","P","toUpperCase","Z","dd","mm","Y","F","j","w","N","S","g","G","A","dateArr","separators","validParts","usePosition","el","inputEl","inputRect","calRect","getBoundingClientRect","width","innerWidth","left","height","top","innerHeight","scrollY","hidden","body","scale","sd","_t","button_title_value","svg","each_value_5","table","tbody","tbody_outro","td","t_value","tr","each_value_3","each_value","tbody_intro","th","disabled","button_disabled_value","if_block0","create_if_block_3","if_block1","create_if_block_2","if_block2","create_if_block_1","if_block3","button0","button1","button2","div2","startDate","endDate","enableTimeToggle","handleShiftNav","monthChange","tzOffset","activeDate","tmpDate","tmpData","currentView","onChangeMonth","onClick","internalDate","viewDelta","viewChanged","onMonthTransitionTrigger","multiplier","onTransformChangeMonth","setYear","newInternalDate","setMinutes","getMinutes","swapTransition","dayLabels","tableCaption","showCaption","num","pos","setMonth","currDate","button0_data_value_value","button_style_value","button_data_value_value","button_transition","each_blocks","div5","span","div4","div3","t1","t1_value","t5","t5_value","div5_intro","clockEl","showMeridian","hasDateComponent","isMinuteView","handleMoveMove","innerDate","canSelect","positions","offset","valueForZero","minuteView","hourAdded","coeff","xCoeff","yCoeff","setter","meridianSwitch","rect","clientX","clientY","cntX","cntY","quadrant","sqrt","beta","asin","PI","degree","setTimeout","selectedHour","isPM","selectedMinutes","handCss","innerHours","asMeridian","selected","$$value","div_transition","time_changes","includes","create_if_block_4","input","placeholder","required","initialDate","pickerOnly","positionFn","validatorAction","prevValue","currentFormat","getHours","timeEl","isFocused","inputAction","inputActionParams","calendarEl","preventClose","preventCloseTimer","resolvedMode","currentMode","onDate","onBlur","Event","onClear","onFocus","internalVisibility","todayHours","todayMinutes","clearTimeout","handleGridNav","makeTick","minuteSwitch","extractViewBox","res","viewBox","color","stroke","elements","_a","_b","currentPackage","localStorage","getItem","setItem","getDayLabel","getApiRequestHeaders","appSettings","Headers","JSON","stringify","getApiUrl","hostname","apiFetch","fetch","headers","json","api","endpoint","packages","categories","async","getCategories","pckg","Package","ExcludeEmpty","getNews","withExperiences","all","experiences","experiencesUrl","more","nextUrl","getExperiences","IncludeFirstBinary","getPackages","kToCrown","CrownIcon","categorySentences","img","showAppBanner","mobile","raw_value","serviceType","html_tag","create_if_block_6","create_if_block_7","discount","create_if_block_8","h2","bonusRequired","t0_value","strong","t0","invoiceMin","create_if_block_5","street","postalCode","town","serviceDescription","toLocaleString","currency","create_if_block_9","_c","_d","ghost","invert","compact","timeLeft","sticky","voucher","titleOverride","className","award","quantity","toLocaleLowerCase","price","priceFrom","link_spread_levels","ato","h3","clink_changes","partner","exclude","hasItems","PartnerId","NotIds","Take","$currentPackage","isObject","extend","ssrDocument","blur","getElementById","initEvent","getElementsByTagName","importNode","protocol","getDocument","ssrWindow","navigator","userAgent","back","CustomEvent","getPropertyValue","Image","screen","matchMedia","cancelAnimationFrame","getWindow","win","Dom7","items","super","proto","defineProperty","makeReactive","arrayFlat","arr","arrayFilter","prototype","$","trim","toCreate","tempParent","qsa","nodeType","uniqueArray","arrayUnique","Methods","addClass","classes","classNames","removeClass","remove","hasClass","contains","toggleClass","attrs","attrName","removeAttr","transition","transitionDuration","on","eventType","targetSelector","capture","handleLiveEvent","eventData","dom7EventData","unshift","is","parents","handleEvent","events","dom7LiveListeners","proxyListener","dom7Listeners","off","handlers","dom7proxy","trigger","evt","dataIndex","transitionEnd","dom","fireCallBack","outerWidth","includeMargins","styles","offsetWidth","parseFloat","outerHeight","offsetHeight","box","clientTop","clientLeft","scrollTop","scrollLeft","scrollX","prop","each","textContent","compareWith","matches","webkitMatchesSelector","msMatchesSelector","child","previousSibling","eq","returnIndex","els","newChild","tempDiv","firstChild","prepend","nextAll","nextEls","prev","previousElementSibling","prevAll","prevEls","closest","find","foundElements","found","nextTick","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","WebKitCSSMatrix","webkitTransform","MozTransform","OTransform","MsTransform","msTransform","m41","m42","isNode","HTMLElement","noExtend","nextSource","keysArray","nextIndex","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","animate","progress","min","easeProgress","cos","currentPosition","scrollTo","overflow","support","deviceCached","browser","getSupport","smoothScroll","touch","DocumentTouch","passiveListener","supportsPassive","opts","gestures","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","screenHeight","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","isSafari","isWebView","calcBrowser","methodName","eventsEmitter","priority","self","eventsListeners","destroyed","method","once","onceHandler","__emitterProxy","_len","onAny","eventsAnyListeners","offAny","eventHandler","emit","_len2","_key2","updateSize","$el","clientWidth","clientHeight","isHorizontal","isVertical","updateSlides","getDirectionLabel","property","marginRight","getDirectionPropertyValue","$wrapperEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","rows","slideSize","initSlides","shouldResetSlideSize","slidesPerView","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","swiperSlideSize","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","visibleSlides","ceil","activeIndex","swiperSlideOffset","offsetLeft","offsetTop","updateSlidesProgress","offsetCenter","slideVisibleClass","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","originalProgress","updateProgress","translatesDiff","maxTranslate","isBeginning","isEnd","wasBeginning","wasEnd","autoHeight","updateSlidesClasses","realIndex","activeSlide","slideActiveClass","slideNextClass","slidePrevClass","slideDuplicateActiveClass","slideDuplicateNextClass","slideDuplicatePrevClass","slideDuplicateClass","nextSlide","prevSlide","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","normalizeSlideIndex","skip","initialized","runCallbacksOnInit","updateClickedSlide","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","transitionStart","slideTo","initial","indexAsNumber","isFinite","initialSlide","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","_immediateVirtual","_swiperImmediateVirtual","onSlideToWrapperTransitionEnd","slideToLoop","loopedSlides","slideNext","perGroup","slidesPerGroupAuto","slidesPerViewDynamic","increment","loopPreventsSlide","loopFix","_clientLeft","rewind","slidePrev","normalize","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","loopCreate","$selector","loopFillGroupWithBlank","blankSlidesNum","blankNode","slideBlankClass","loopAdditionalSlides","prependSlides","appendSlides","cloneNode","diff","loopDestroy","onTouchStart","touchEventsData","touches","originalEvent","$targetEl","touchEventsTarget","isTouchEvent","which","isTouched","isMoved","noSwipingClass","shadowRoot","noSwipingSelector","isTargetShadow","noSwiping","__closestFrom","assignedSlot","closestElement","allowClick","swipeHandler","currentX","targetTouches","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","diffX","diffY","touchAngle","atan2","touchMoveStopPropagation","nested","stopPropagation","startTranslate","allowMomentumBounce","grabCursor","setGrabCursor","touchRatio","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","composedPath","lastClickTime","currentPos","stopIndex","groupSize","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","autoplay","paused","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","dummyEventAttached","dummyEventListener","touchEvents","domMethod","swiperMethod","passiveListeners","passive","move","cancel","updateOnWindowResize","events$1","attachEvents","detachEvents","isGridEnabled","addClasses","suffixes","prefix","resultClasses","prepareClasses","autoheight","centered","emitContainerClasses","removeClasses","defaults","resizeObserver","createElements","breakpointsBase","simulateTouch","uniqueNavElements","preloadImages","updateOnImagesReady","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","prototypes","moving","isLocked","cursor","unsetGrabCursor","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","directionChanged","needsReLoop","changeDirection","isEnabled","disable","enable","containerEl","currentHeight","points","point","minRatio","wasLocked","lastSlideIndex","lastSlideRightEdge","images","loadImage","imageEl","srcset","sizes","checkForComplete","image","onReady","complete","onload","onerror","imagesLoaded","imagesToLoad","currentSrc","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","desktop","touchEventsTouch","touchEventsDesktop","clickTimeout","velocities","setProgress","cls","getSlideClasses","slideEl","exact","spv","breakLoop","translateValue","translated","newDirection","needUpdate","currentDirection","mount","mounted","getWrapperSelector","getWrapper","wrapper","deleteInstance","cleanStyles","object","deleteProps","static","newDefaults","module","installModule","createElementIfNotDefined","checkProps","Navigation","getEl","toggleEl","disabledClass","lockClass","$nextEl","$prevEl","onPrevClick","onNextClick","hideOnClick","hiddenClass","_s","targetEl","pagination","clickable","isHidden","classesToSelector","Pagination","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","$bulletEl","position","total","paginationType","firstIndex","midIndex","bullet","$bullet","bulletIndex","$firstDisplayedBullet","$lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","offsetProp","progressbarDirection","scaleX","scaleY","render","paginationHTML","numberOfBullets","Autoplay","timeout","$activeSlideEl","autoplayResult","reverseDirection","stopOnLastSlide","pause","waitForTransition","onTransitionEnd","onVisibilityChange","visibilityState","onMouseEnter","disableOnInteraction","onMouseLeave","pauseOnMouseEnter","effectTarget","effectParams","$slideEl","transformEl","EffectFade","fadeEffect","crossFade","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","overwriteParamsResult","slideShadows","effectInit","tx","ty","slideOpacity","allSlides","$transitionEndTarget","eventTriggered","triggerEvents","effectVirtualTransitionEnd","needsNavigation","needsPagination","needsScrollbar","scrollbar","uniqueClasses","unique","prototypeGroup","protoMethod","Swiper$1","use","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","paramsList","updateSwiper","changedParams","scrollbarEl","paginationEl","updateParams","currentParams","thumbs","needThumbsInit","needControllerInit","needPaginationInit","needScrollbarInit","needNavigationInit","controller","control","newValue","show_if_2","show_if_1","show_if","class","div1_class_value","paramsData","restProps","containerClasses","breakpointChanged","swiperInstance","oldPassedParams","swiperEl","virtualData","calcParams","allowedParams","getParams","_beforeBreakpoint","_containerClasses","_swiper","initSwiper","extendWith","cache","renderExternal","onSwiper","lazy","load","setVirtualData","renderExternalUpdate","mountSwiper","oldParams","addKey","newKeys","oldKeys","newKey","oldKey","getChangedParams","div_data_swiper_zoom_value","div_class_value","zoom","virtualIndex","slideClasses","eventAttached","updateClasses","attachEvent","slideData","isVisible","isDuplicate","isPrev","isNext","copyright","img_src_value","figure","figcaption","caption","header","resolution","toInteger","dirtyNumber","NaN","requiredArgs","TypeError","toDate","argument","argStr","addMilliseconds","dirtyDate","dirtyAmount","timestamp","amount","getTimezoneOffsetInMilliseconds","utcDate","getMilliseconds","startOfDay","setHours","MILLISECONDS_IN_DAY","differenceInCalendarDays","dirtyDateLeft","dirtyDateRight","startOfDayLeft","startOfDayRight","timestampLeft","timestampRight","round","millisecondsInHour","isDate","isValid","compareLocalAsc","dateLeft","dateRight","differenceInDays","sign","difference","setDate","isLastDayNotFull","formatDistanceLocale","lessThanXSeconds","one","other","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","buildFormatLongFn","String","defaultWidth","formats","formatLong","full","long","medium","short","dateTime","formatRelativeLocale","lastWeek","yesterday","tomorrow","nextWeek","buildLocalizeFn","dirtyIndex","dirtyOptions","valuesArray","formattingValues","defaultFormattingWidth","_defaultWidth","_width","argumentCallback","localize","ordinalNumber","_options","rem100","era","narrow","abbreviated","wide","quarter","dayPeriod","am","pm","midnight","noon","morning","afternoon","evening","night","buildMatchFn","matchPattern","matchPatterns","defaultMatchWidth","matchResult","matchedString","parsePatterns","defaultParseWidth","findIndex","pattern","findKey","valueCallback","predicate","hasOwnProperty","array","parsePattern","parseResult","any","code","formatDistance","token","count","tokenValue","addSuffix","comparison","formatRelative","_date","_baseDate","weekStartsOn","firstWeekContainsDate","subMilliseconds","startOfUTCISOWeek","getUTCISOWeekYear","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfUTCISOWeekYear","fourthOfJanuary","MILLISECONDS_IN_WEEK","getUTCISOWeek","startOfUTCWeek","localeWeekStartsOn","defaultWeekStartsOn","RangeError","getUTCWeekYear","localeFirstWeekContainsDate","defaultFirstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","startOfUTCWeekYear","firstWeek","getUTCWeek","addLeadingZeros","targetLength","output","formatters","signedYear","numberOfDigits","milliseconds","getUTCMilliseconds","pow","dayPeriodEnum","unit","lightFormatters","signedWeekYear","weekYear","R","Q","q","L","week","I","isoWeek","dayOfYear","startOfYearTimestamp","getUTCDayOfYear","E","dayOfWeek","localDayOfWeek","isoDayOfWeek","dayPeriodEnumValue","hours","B","K","X","_localize","timezoneOffset","_originalDate","formatTimezoneWithOptionalMinutes","formatTimezone","O","formatTimezoneShort","originalDate","T","dirtyDelimiter","absOffset","minutes","delimiter","dateLongFormatter","timeLongFormatter","longFormatters","dateTimeFormat","datePattern","timePattern","protectedDayOfYearTokens","protectedWeekYearTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","throwProtectedError","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","dirtyFormatStr","formatStr","defaultLocale","formatterOptions","firstCharacter","longFormatter","cleanEscapedString","formatter","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","dirtyObject","isAfter","dirtyDateToCompare","dateToCompare","setUTCDay","dirtyDay","currentDay","remainder","dayIndex","numericPatterns","timezonePatterns","parseNumericPattern","parseTimezonePattern","parseAnyDigitsSigned","parseNDigits","RegExp","parseNDigitsSigned","dayPeriodEnumToHours","enumValue","normalizeTwoDigitYear","twoDigitYear","currentYear","isCommonEra","absCurrentYear","rangeEnd","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","isLeapYearIndex","parsers","parse","flags","incompatibleTokens","isTwoDigitYear","validate","normalizedTwoDigitYear","_match","_flags","firstWeekOfYear","dirtyWeek","setUTCWeek","dirtyISOWeek","setUTCISOWeek","subPriority","wholeWeekDays","setUTCISODay","setUTCMilliseconds","timestampIsSet","_token","notWhitespaceRegExp","dirtyDateString","dirtyFormatString","dirtyReferenceDate","dateString","formatString","subFnOptions","setters","dateToSystemTimezone","tokens","usedTokens","parser","incompatibleToken","_i","usedToken","fullToken","uniquePrioritySetters","setterArray","convertedDate","parseISO","additionalDigits","dateStrings","splitDateString","parseYearResult","parseYear","restDateString","parseTime","timezone","parseTimezone","patterns","dateTimeDelimiter","timeZoneDelimiter","dateRegex","timeRegex","timezoneRegex","timeString","regex","captures","century","isWeekDate","parseDateUnit","_year","validateWeekDate","isoWeekYear","fourthOfJanuaryDay","dayOfISOWeekYear","daysInMonths","validateDate","validateDayOfYearDate","parseTimeUnit","seconds","validateTime","timezoneString","_hours","validateTimezone","dateStart","dateEnd","hr","variant","mt","mb","bg","dummy","clazz","aside","div2_transition","t2","t2_value","div4_transition","show","handleClose","bonusFactor","firstBinary","absolute","bonusfactor_changes","openingText","some","func_1","func","each_value_2","openingTimes","ul","li","weekDay","titleDay","titleLate","teaser","article","article_id_value","links","late","dayState","lateState","category","Category","binaries","experiencedetailsimage_changes","t3","t3_value","content","news","collapsed","contentHeight","newsDate","newsDateEnd","scrollHeight","t20_value","t22_value","create_if_block_33","create_if_block_30","create_if_block_29","complementary","create_if_block_28","if_block4","create_if_block_27","create_if_block_26","create_if_block_25","if_block6","embeddedUrl","create_if_block_24","if_block7","infoLink","create_if_block_23","venue","create_if_block_22","create_if_block_21","if_block10","create_if_block_19","if_block12","if_block13","phone","email","webLinkUrl","partnerId","if_block14","br0","br1","div6","if_block5","t16","t16_value","t20","t22","experiencealternatives_changes","t4_value","create_if_block_34","t4","QRIcon","loyalityBonusPer","blockquote","blockquote_data_instgrm_permalink_value","br","create_if_block_20","hr_changes","create_if_block_18","create_if_block_14","create_if_block_15","create_if_block_16","dayFrom","dayTo","em","create_if_block_10","create_if_block_11","create_if_block_12","lateFrom","lateTo","create_if_block_17","create_if_block_13","span0","span1","legalText","t6_value","t6","a_href_value","topexperiences_changes","newsId","showMobileBanner","showRedeem","topImages","bottomImages","isOnboarding","hasAlternatives","categorySlug","primaryCategory","slug","variants","instgrm","Embeds","process","ExperienceId","gallery","fromEntries","register","isFree","tag","scrolled","each_value_1","nav","li0","li1","li2","li3","each_blocks_3","each_blocks_2","each_blocks_1","cntExperiences","categoriesWien","span3","span3_style_value","span2","open","Star","usermenu_changes","navigation_changes","menu","center","transparentOnTop","showMenu","showUser","isIOS","$showAppBanner","registerUrl","footer_1","padding","footer","registerFocus","lazyElement","_resolve","unmounted","innerUnsubscribe","useFocus","getExperience","is_date","tick_spring","last_value","current_value","target_value","delta","dt","stiffness","damping","inv_mass","precision","settled","next_value","spring","last_time","current_token","inv_mass_recovery_rate","cancel_task","hard","soft","rate","fulfil","gestureName","activeEvents","pointerType","pointersCount","getPointersDistance","hypot","pinch","pinchCenter","prevDistance","initDistance","onMoveCallback","onDownCallback","onUpCallback","touchAction","removePointerdownHandler","pointerId","onup","activeEvent","removeEvent","removeEventHandlers","removePointermoveHandler","removeLostpointercaptureHandler","removepointerupHandler","removepointerleaveHandler","setPointerControls","curDistance","xDistance","yDistance","centerX","centerY","getCenterOfTwoPoints","pinchEnabled","previousQuery","startSize","RefTime","Search","order","Order","$size","right","clearable","ignoreNext","value$1","filteritem_changes","close","select","filteritemdate_props","filteritemtime_props","filteritemorder_props","filteritemdate_changes","filteritemtime_changes","filteritemorder_changes","$$self","section","h1","_e","_f","categoryName","categoryTitle","categoryImage","cat","filterDefaults","fil","encodeURIComponent","img_alt_value","home","showText","showOffer","preview","getSingleNews","MaxFutureHours","MaxPastHours","div0_style_value","img0","img0_src_value","img1","img1_src_value","a0","a1","button_changes","NewsMenu","loadSlides","cols","colTemplate","wrap","maxWidth","inverted","bigText","margin","div3_transition","h20","h21","appsoonmodal_changes","appstore","Hr","loadData","packageChange","fullWidth","cover","p0","p1","p2","strong2","p3","black","animated","img2","img2_src_value","a2","a3","a4","a5","a6","a7","a8","a9","a10","a11","a12","a13","a14","a15","a16","a17","a18","a19","a20","a21","a22","a23","a24","a25","a26","a27","a28","a29","a30","a31","a32","a33","a34","a35","a36","a37","a38","a39","div27","thead","tr1","td0","td1","td2","td3","td4","td5","td6","td7","tr2","td8","td9","td10","div7","td11","div8","td12","div9","td13","div10","td14","div11","td15","tr3","td16","td17","td18","div12","td19","div13","td20","div14","td21","div15","td22","div16","td23","tr4","td24","td25","td26","div17","td27","div18","td28","div19","td29","div20","td30","div21","td31","tr5","td32","td33","td34","div22","td35","div23","td36","div24","td37","div25","td38","div26","td39","hr0","hr1","hr2","section1","baseLink","makeBody","package","packageLinks","img3","img3_src_value","h30","h31","h32","h33","Header","nobr0","News","NewsList","PreviewList","Experience","Experiences","Imprint","DataPrivacy","UseTerms","PartnerInfo","PartnerInfoRestaurants","PremiumPartnerInfo","Landing","Tipi","Dot","B2B","TVHeute","Plantatree","Home"],"mappings":"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"}