{ "version": 3, "sources": ["external-global-plugin:three", "../../src/js/shaders/index.ts", "../../node_modules/@splidejs/splide/dist/js/splide.esm.js", "../../src/js/classes/Renderer.ts", "../../src/js/classes/Material.ts", "../../src/js/constants/defaults.ts", "../../src/js/utils/clamp/clamp.ts", "../../src/js/classes/ShaderCarousel.ts", "../../src/js/constants/events.ts", "../../src/js/components/BackgroundShaderCarousel.ts", "../../src/js/core/SplideShaderCarousel.ts", "../../src/js/build/browser.ts"], "sourcesContent": ["module.exports = THREE", "export { default as dissolveShader } from './fragment/dissolve.frag?raw';\r\nexport { default as maskShader } from './fragment/mask.frag?raw';\r\nexport { default as wipeShader } from './fragment/wipe.frag?raw';", "function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\n\n/*!\n * Splide.js\n * Version : 4.0.7\n * License : MIT\n * Copyright: 2022 Naotoshi Fujita\n */\nvar MEDIA_PREFERS_REDUCED_MOTION = \"(prefers-reduced-motion: reduce)\";\nvar CREATED = 1;\nvar MOUNTED = 2;\nvar IDLE = 3;\nvar MOVING = 4;\nvar SCROLLING = 5;\nvar DRAGGING = 6;\nvar DESTROYED = 7;\nvar STATES = {\n CREATED: CREATED,\n MOUNTED: MOUNTED,\n IDLE: IDLE,\n MOVING: MOVING,\n SCROLLING: SCROLLING,\n DRAGGING: DRAGGING,\n DESTROYED: DESTROYED\n};\n\nfunction empty(array) {\n array.length = 0;\n}\n\nfunction slice(arrayLike, start, end) {\n return Array.prototype.slice.call(arrayLike, start, end);\n}\n\nfunction apply(func) {\n return func.bind.apply(func, [null].concat(slice(arguments, 1)));\n}\n\nvar nextTick = setTimeout;\n\nvar noop = function noop() {};\n\nfunction raf(func) {\n return requestAnimationFrame(func);\n}\n\nfunction typeOf(type, subject) {\n return typeof subject === type;\n}\n\nfunction isObject(subject) {\n return !isNull(subject) && typeOf(\"object\", subject);\n}\n\nvar isArray = Array.isArray;\nvar isFunction = apply(typeOf, \"function\");\nvar isString = apply(typeOf, \"string\");\nvar isUndefined = apply(typeOf, \"undefined\");\n\nfunction isNull(subject) {\n return subject === null;\n}\n\nfunction isHTMLElement(subject) {\n return subject instanceof HTMLElement;\n}\n\nfunction toArray(value) {\n return isArray(value) ? value : [value];\n}\n\nfunction forEach(values, iteratee) {\n toArray(values).forEach(iteratee);\n}\n\nfunction includes(array, value) {\n return array.indexOf(value) > -1;\n}\n\nfunction push(array, items) {\n array.push.apply(array, toArray(items));\n return array;\n}\n\nfunction toggleClass(elm, classes, add) {\n if (elm) {\n forEach(classes, function (name) {\n if (name) {\n elm.classList[add ? \"add\" : \"remove\"](name);\n }\n });\n }\n}\n\nfunction addClass(elm, classes) {\n toggleClass(elm, isString(classes) ? classes.split(\" \") : classes, true);\n}\n\nfunction append(parent, children) {\n forEach(children, parent.appendChild.bind(parent));\n}\n\nfunction before(nodes, ref) {\n forEach(nodes, function (node) {\n var parent = (ref || node).parentNode;\n\n if (parent) {\n parent.insertBefore(node, ref);\n }\n });\n}\n\nfunction matches(elm, selector) {\n return isHTMLElement(elm) && (elm[\"msMatchesSelector\"] || elm.matches).call(elm, selector);\n}\n\nfunction children(parent, selector) {\n var children2 = parent ? slice(parent.children) : [];\n return selector ? children2.filter(function (child) {\n return matches(child, selector);\n }) : children2;\n}\n\nfunction child(parent, selector) {\n return selector ? children(parent, selector)[0] : parent.firstElementChild;\n}\n\nvar ownKeys = Object.keys;\n\nfunction forOwn(object, iteratee, right) {\n if (object) {\n var keys = ownKeys(object);\n keys = right ? keys.reverse() : keys;\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n\n if (key !== \"__proto__\") {\n if (iteratee(object[key], key) === false) {\n break;\n }\n }\n }\n }\n\n return object;\n}\n\nfunction assign(object) {\n slice(arguments, 1).forEach(function (source) {\n forOwn(source, function (value, key) {\n object[key] = source[key];\n });\n });\n return object;\n}\n\nfunction merge(object) {\n slice(arguments, 1).forEach(function (source) {\n forOwn(source, function (value, key) {\n if (isArray(value)) {\n object[key] = value.slice();\n } else if (isObject(value)) {\n object[key] = merge({}, isObject(object[key]) ? object[key] : {}, value);\n } else {\n object[key] = value;\n }\n });\n });\n return object;\n}\n\nfunction omit(object, keys) {\n toArray(keys || ownKeys(object)).forEach(function (key) {\n delete object[key];\n });\n}\n\nfunction removeAttribute(elms, attrs) {\n forEach(elms, function (elm) {\n forEach(attrs, function (attr) {\n elm && elm.removeAttribute(attr);\n });\n });\n}\n\nfunction setAttribute(elms, attrs, value) {\n if (isObject(attrs)) {\n forOwn(attrs, function (value2, name) {\n setAttribute(elms, name, value2);\n });\n } else {\n forEach(elms, function (elm) {\n isNull(value) || value === \"\" ? removeAttribute(elm, attrs) : elm.setAttribute(attrs, String(value));\n });\n }\n}\n\nfunction create(tag, attrs, parent) {\n var elm = document.createElement(tag);\n\n if (attrs) {\n isString(attrs) ? addClass(elm, attrs) : setAttribute(elm, attrs);\n }\n\n parent && append(parent, elm);\n return elm;\n}\n\nfunction style(elm, prop, value) {\n if (isUndefined(value)) {\n return getComputedStyle(elm)[prop];\n }\n\n if (!isNull(value)) {\n elm.style[prop] = \"\" + value;\n }\n}\n\nfunction display(elm, display2) {\n style(elm, \"display\", display2);\n}\n\nfunction focus(elm) {\n elm[\"setActive\"] && elm[\"setActive\"]() || elm.focus({\n preventScroll: true\n });\n}\n\nfunction getAttribute(elm, attr) {\n return elm.getAttribute(attr);\n}\n\nfunction hasClass(elm, className) {\n return elm && elm.classList.contains(className);\n}\n\nfunction rect(target) {\n return target.getBoundingClientRect();\n}\n\nfunction remove(nodes) {\n forEach(nodes, function (node) {\n if (node && node.parentNode) {\n node.parentNode.removeChild(node);\n }\n });\n}\n\nfunction parseHtml(html) {\n return child(new DOMParser().parseFromString(html, \"text/html\").body);\n}\n\nfunction prevent(e, stopPropagation) {\n e.preventDefault();\n\n if (stopPropagation) {\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n}\n\nfunction query(parent, selector) {\n return parent && parent.querySelector(selector);\n}\n\nfunction queryAll(parent, selector) {\n return selector ? slice(parent.querySelectorAll(selector)) : [];\n}\n\nfunction removeClass(elm, classes) {\n toggleClass(elm, classes, false);\n}\n\nfunction timeOf(e) {\n return e.timeStamp;\n}\n\nfunction unit(value) {\n return isString(value) ? value : value ? value + \"px\" : \"\";\n}\n\nvar PROJECT_CODE = \"splide\";\nvar DATA_ATTRIBUTE = \"data-\" + PROJECT_CODE;\n\nfunction assert(condition, message) {\n if (!condition) {\n throw new Error(\"[\" + PROJECT_CODE + \"] \" + (message || \"\"));\n }\n}\n\nvar min = Math.min,\n max = Math.max,\n floor = Math.floor,\n ceil = Math.ceil,\n abs = Math.abs;\n\nfunction approximatelyEqual(x, y, epsilon) {\n return abs(x - y) < epsilon;\n}\n\nfunction between(number, minOrMax, maxOrMin, exclusive) {\n var minimum = min(minOrMax, maxOrMin);\n var maximum = max(minOrMax, maxOrMin);\n return exclusive ? minimum < number && number < maximum : minimum <= number && number <= maximum;\n}\n\nfunction clamp(number, x, y) {\n var minimum = min(x, y);\n var maximum = max(x, y);\n return min(max(minimum, number), maximum);\n}\n\nfunction sign(x) {\n return +(x > 0) - +(x < 0);\n}\n\nfunction camelToKebab(string) {\n return string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\n}\n\nfunction format(string, replacements) {\n forEach(replacements, function (replacement) {\n string = string.replace(\"%s\", \"\" + replacement);\n });\n return string;\n}\n\nfunction pad(number) {\n return number < 10 ? \"0\" + number : \"\" + number;\n}\n\nvar ids = {};\n\nfunction uniqueId(prefix) {\n return \"\" + prefix + pad(ids[prefix] = (ids[prefix] || 0) + 1);\n}\n\nfunction EventBinder() {\n var listeners = [];\n\n function bind(targets, events, callback, options) {\n forEachEvent(targets, events, function (target, event, namespace) {\n var isEventTarget = (\"addEventListener\" in target);\n var remover = isEventTarget ? target.removeEventListener.bind(target, event, callback, options) : target[\"removeListener\"].bind(target, callback);\n isEventTarget ? target.addEventListener(event, callback, options) : target[\"addListener\"](callback);\n listeners.push([target, event, namespace, callback, remover]);\n });\n }\n\n function unbind(targets, events, callback) {\n forEachEvent(targets, events, function (target, event, namespace) {\n listeners = listeners.filter(function (listener) {\n if (listener[0] === target && listener[1] === event && listener[2] === namespace && (!callback || listener[3] === callback)) {\n listener[4]();\n return false;\n }\n\n return true;\n });\n });\n }\n\n function dispatch(target, type, detail) {\n var e;\n var bubbles = true;\n\n if (typeof CustomEvent === \"function\") {\n e = new CustomEvent(type, {\n bubbles: bubbles,\n detail: detail\n });\n } else {\n e = document.createEvent(\"CustomEvent\");\n e.initCustomEvent(type, bubbles, false, detail);\n }\n\n target.dispatchEvent(e);\n return e;\n }\n\n function forEachEvent(targets, events, iteratee) {\n forEach(targets, function (target) {\n target && forEach(events, function (events2) {\n events2.split(\" \").forEach(function (eventNS) {\n var fragment = eventNS.split(\".\");\n iteratee(target, fragment[0], fragment[1]);\n });\n });\n });\n }\n\n function destroy() {\n listeners.forEach(function (data) {\n data[4]();\n });\n empty(listeners);\n }\n\n return {\n bind: bind,\n unbind: unbind,\n dispatch: dispatch,\n destroy: destroy\n };\n}\n\nvar EVENT_MOUNTED = \"mounted\";\nvar EVENT_READY = \"ready\";\nvar EVENT_MOVE = \"move\";\nvar EVENT_MOVED = \"moved\";\nvar EVENT_SHIFTED = \"shifted\";\nvar EVENT_CLICK = \"click\";\nvar EVENT_ACTIVE = \"active\";\nvar EVENT_INACTIVE = \"inactive\";\nvar EVENT_VISIBLE = \"visible\";\nvar EVENT_HIDDEN = \"hidden\";\nvar EVENT_SLIDE_KEYDOWN = \"slide:keydown\";\nvar EVENT_REFRESH = \"refresh\";\nvar EVENT_UPDATED = \"updated\";\nvar EVENT_RESIZE = \"resize\";\nvar EVENT_RESIZED = \"resized\";\nvar EVENT_DRAG = \"drag\";\nvar EVENT_DRAGGING = \"dragging\";\nvar EVENT_DRAGGED = \"dragged\";\nvar EVENT_SCROLL = \"scroll\";\nvar EVENT_SCROLLED = \"scrolled\";\nvar EVENT_DESTROY = \"destroy\";\nvar EVENT_ARROWS_MOUNTED = \"arrows:mounted\";\nvar EVENT_ARROWS_UPDATED = \"arrows:updated\";\nvar EVENT_PAGINATION_MOUNTED = \"pagination:mounted\";\nvar EVENT_PAGINATION_UPDATED = \"pagination:updated\";\nvar EVENT_NAVIGATION_MOUNTED = \"navigation:mounted\";\nvar EVENT_AUTOPLAY_PLAY = \"autoplay:play\";\nvar EVENT_AUTOPLAY_PLAYING = \"autoplay:playing\";\nvar EVENT_AUTOPLAY_PAUSE = \"autoplay:pause\";\nvar EVENT_LAZYLOAD_LOADED = \"lazyload:loaded\";\n\nfunction EventInterface(Splide2) {\n var bus = Splide2 ? Splide2.event.bus : document.createDocumentFragment();\n var binder = EventBinder();\n\n function on(events, callback) {\n binder.bind(bus, toArray(events).join(\" \"), function (e) {\n callback.apply(callback, isArray(e.detail) ? e.detail : []);\n });\n }\n\n function emit(event) {\n binder.dispatch(bus, event, slice(arguments, 1));\n }\n\n if (Splide2) {\n Splide2.event.on(EVENT_DESTROY, binder.destroy);\n }\n\n return assign(binder, {\n bus: bus,\n on: on,\n off: apply(binder.unbind, bus),\n emit: emit\n });\n}\n\nfunction RequestInterval(interval, onInterval, onUpdate, limit) {\n var now = Date.now;\n var startTime;\n var rate = 0;\n var id;\n var paused = true;\n var count = 0;\n\n function update() {\n if (!paused) {\n rate = interval ? min((now() - startTime) / interval, 1) : 1;\n onUpdate && onUpdate(rate);\n\n if (rate >= 1) {\n onInterval();\n startTime = now();\n\n if (limit && ++count >= limit) {\n return pause();\n }\n }\n\n raf(update);\n }\n }\n\n function start(resume) {\n !resume && cancel();\n startTime = now() - (resume ? rate * interval : 0);\n paused = false;\n raf(update);\n }\n\n function pause() {\n paused = true;\n }\n\n function rewind() {\n startTime = now();\n rate = 0;\n\n if (onUpdate) {\n onUpdate(rate);\n }\n }\n\n function cancel() {\n id && cancelAnimationFrame(id);\n rate = 0;\n id = 0;\n paused = true;\n }\n\n function set(time) {\n interval = time;\n }\n\n function isPaused() {\n return paused;\n }\n\n return {\n start: start,\n rewind: rewind,\n pause: pause,\n cancel: cancel,\n set: set,\n isPaused: isPaused\n };\n}\n\nfunction State(initialState) {\n var state = initialState;\n\n function set(value) {\n state = value;\n }\n\n function is(states) {\n return includes(toArray(states), state);\n }\n\n return {\n set: set,\n is: is\n };\n}\n\nfunction Throttle(func, duration) {\n var interval;\n\n function throttled() {\n if (!interval) {\n interval = RequestInterval(duration || 0, function () {\n func();\n interval = null;\n }, null, 1);\n interval.start();\n }\n }\n\n return throttled;\n}\n\nfunction Media(Splide2, Components2, options) {\n var state = Splide2.state;\n var breakpoints = options.breakpoints || {};\n var reducedMotion = options.reducedMotion || {};\n var binder = EventBinder();\n var queries = [];\n\n function setup() {\n var isMin = options.mediaQuery === \"min\";\n ownKeys(breakpoints).sort(function (n, m) {\n return isMin ? +n - +m : +m - +n;\n }).forEach(function (key) {\n register(breakpoints[key], \"(\" + (isMin ? \"min\" : \"max\") + \"-width:\" + key + \"px)\");\n });\n register(reducedMotion, MEDIA_PREFERS_REDUCED_MOTION);\n update();\n }\n\n function destroy(completely) {\n if (completely) {\n binder.destroy();\n }\n }\n\n function register(options2, query) {\n var queryList = matchMedia(query);\n binder.bind(queryList, \"change\", update);\n queries.push([options2, queryList]);\n }\n\n function update() {\n var destroyed = state.is(DESTROYED);\n var direction = options.direction;\n var merged = queries.reduce(function (merged2, entry) {\n return merge(merged2, entry[1].matches ? entry[0] : {});\n }, {});\n omit(options);\n set(merged);\n\n if (options.destroy) {\n Splide2.destroy(options.destroy === \"completely\");\n } else if (destroyed) {\n destroy(true);\n Splide2.mount();\n } else {\n direction !== options.direction && Splide2.refresh();\n }\n }\n\n function reduce(enable) {\n if (matchMedia(MEDIA_PREFERS_REDUCED_MOTION).matches) {\n enable ? merge(options, reducedMotion) : omit(options, ownKeys(reducedMotion));\n }\n }\n\n function set(opts, user) {\n merge(options, opts);\n user && merge(Object.getPrototypeOf(options), opts);\n\n if (!state.is(CREATED)) {\n Splide2.emit(EVENT_UPDATED, options);\n }\n }\n\n return {\n setup: setup,\n destroy: destroy,\n reduce: reduce,\n set: set\n };\n}\n\nvar ARROW = \"Arrow\";\nvar ARROW_LEFT = ARROW + \"Left\";\nvar ARROW_RIGHT = ARROW + \"Right\";\nvar ARROW_UP = ARROW + \"Up\";\nvar ARROW_DOWN = ARROW + \"Down\";\nvar LTR = \"ltr\";\nvar RTL = \"rtl\";\nvar TTB = \"ttb\";\nvar ORIENTATION_MAP = {\n width: [\"height\"],\n left: [\"top\", \"right\"],\n right: [\"bottom\", \"left\"],\n x: [\"y\"],\n X: [\"Y\"],\n Y: [\"X\"],\n ArrowLeft: [ARROW_UP, ARROW_RIGHT],\n ArrowRight: [ARROW_DOWN, ARROW_LEFT]\n};\n\nfunction Direction(Splide2, Components2, options) {\n function resolve(prop, axisOnly, direction) {\n direction = direction || options.direction;\n var index = direction === RTL && !axisOnly ? 1 : direction === TTB ? 0 : -1;\n return ORIENTATION_MAP[prop] && ORIENTATION_MAP[prop][index] || prop.replace(/width|left|right/i, function (match, offset) {\n var replacement = ORIENTATION_MAP[match.toLowerCase()][index] || match;\n return offset > 0 ? replacement.charAt(0).toUpperCase() + replacement.slice(1) : replacement;\n });\n }\n\n function orient(value) {\n return value * (options.direction === RTL ? 1 : -1);\n }\n\n return {\n resolve: resolve,\n orient: orient\n };\n}\n\nvar ROLE = \"role\";\nvar TAB_INDEX = \"tabindex\";\nvar DISABLED = \"disabled\";\nvar ARIA_PREFIX = \"aria-\";\nvar ARIA_CONTROLS = ARIA_PREFIX + \"controls\";\nvar ARIA_CURRENT = ARIA_PREFIX + \"current\";\nvar ARIA_SELECTED = ARIA_PREFIX + \"selected\";\nvar ARIA_LABEL = ARIA_PREFIX + \"label\";\nvar ARIA_LABELLEDBY = ARIA_PREFIX + \"labelledby\";\nvar ARIA_HIDDEN = ARIA_PREFIX + \"hidden\";\nvar ARIA_ORIENTATION = ARIA_PREFIX + \"orientation\";\nvar ARIA_ROLEDESCRIPTION = ARIA_PREFIX + \"roledescription\";\nvar ARIA_LIVE = ARIA_PREFIX + \"live\";\nvar ARIA_BUSY = ARIA_PREFIX + \"busy\";\nvar ARIA_ATOMIC = ARIA_PREFIX + \"atomic\";\nvar ALL_ATTRIBUTES = [ROLE, TAB_INDEX, DISABLED, ARIA_CONTROLS, ARIA_CURRENT, ARIA_LABEL, ARIA_LABELLEDBY, ARIA_HIDDEN, ARIA_ORIENTATION, ARIA_ROLEDESCRIPTION];\nvar CLASS_ROOT = PROJECT_CODE;\nvar CLASS_TRACK = PROJECT_CODE + \"__track\";\nvar CLASS_LIST = PROJECT_CODE + \"__list\";\nvar CLASS_SLIDE = PROJECT_CODE + \"__slide\";\nvar CLASS_CLONE = CLASS_SLIDE + \"--clone\";\nvar CLASS_CONTAINER = CLASS_SLIDE + \"__container\";\nvar CLASS_ARROWS = PROJECT_CODE + \"__arrows\";\nvar CLASS_ARROW = PROJECT_CODE + \"__arrow\";\nvar CLASS_ARROW_PREV = CLASS_ARROW + \"--prev\";\nvar CLASS_ARROW_NEXT = CLASS_ARROW + \"--next\";\nvar CLASS_PAGINATION = PROJECT_CODE + \"__pagination\";\nvar CLASS_PAGINATION_PAGE = CLASS_PAGINATION + \"__page\";\nvar CLASS_PROGRESS = PROJECT_CODE + \"__progress\";\nvar CLASS_PROGRESS_BAR = CLASS_PROGRESS + \"__bar\";\nvar CLASS_TOGGLE = PROJECT_CODE + \"__toggle\";\nvar CLASS_TOGGLE_PLAY = CLASS_TOGGLE + \"__play\";\nvar CLASS_TOGGLE_PAUSE = CLASS_TOGGLE + \"__pause\";\nvar CLASS_SPINNER = PROJECT_CODE + \"__spinner\";\nvar CLASS_SR = PROJECT_CODE + \"__sr\";\nvar CLASS_INITIALIZED = \"is-initialized\";\nvar CLASS_ACTIVE = \"is-active\";\nvar CLASS_PREV = \"is-prev\";\nvar CLASS_NEXT = \"is-next\";\nvar CLASS_VISIBLE = \"is-visible\";\nvar CLASS_LOADING = \"is-loading\";\nvar CLASS_FOCUS_IN = \"is-focus-in\";\nvar STATUS_CLASSES = [CLASS_ACTIVE, CLASS_VISIBLE, CLASS_PREV, CLASS_NEXT, CLASS_LOADING, CLASS_FOCUS_IN];\nvar CLASSES = {\n slide: CLASS_SLIDE,\n clone: CLASS_CLONE,\n arrows: CLASS_ARROWS,\n arrow: CLASS_ARROW,\n prev: CLASS_ARROW_PREV,\n next: CLASS_ARROW_NEXT,\n pagination: CLASS_PAGINATION,\n page: CLASS_PAGINATION_PAGE,\n spinner: CLASS_SPINNER\n};\n\nfunction closest(from, selector) {\n if (isFunction(from.closest)) {\n return from.closest(selector);\n }\n\n var elm = from;\n\n while (elm && elm.nodeType === 1) {\n if (matches(elm, selector)) {\n break;\n }\n\n elm = elm.parentElement;\n }\n\n return elm;\n}\n\nvar FRICTION = 5;\nvar LOG_INTERVAL = 200;\nvar POINTER_DOWN_EVENTS = \"touchstart mousedown\";\nvar POINTER_MOVE_EVENTS = \"touchmove mousemove\";\nvar POINTER_UP_EVENTS = \"touchend touchcancel mouseup click\";\n\nfunction Elements(Splide2, Components2, options) {\n var _EventInterface = EventInterface(Splide2),\n on = _EventInterface.on,\n bind = _EventInterface.bind;\n\n var root = Splide2.root;\n var i18n = options.i18n;\n var elements = {};\n var slides = [];\n var rootClasses = [];\n var trackClasses = [];\n var track;\n var list;\n var isUsingKey;\n\n function setup() {\n collect();\n init();\n update();\n }\n\n function mount() {\n on(EVENT_REFRESH, destroy);\n on(EVENT_REFRESH, setup);\n on(EVENT_UPDATED, update);\n bind(document, POINTER_DOWN_EVENTS + \" keydown\", function (e) {\n isUsingKey = e.type === \"keydown\";\n }, {\n capture: true\n });\n bind(root, \"focusin\", function () {\n toggleClass(root, CLASS_FOCUS_IN, !!isUsingKey);\n });\n }\n\n function destroy(completely) {\n var attrs = ALL_ATTRIBUTES.concat(\"style\");\n empty(slides);\n removeClass(root, rootClasses);\n removeClass(track, trackClasses);\n removeAttribute([track, list], attrs);\n removeAttribute(root, completely ? attrs : [\"style\", ARIA_ROLEDESCRIPTION]);\n }\n\n function update() {\n removeClass(root, rootClasses);\n removeClass(track, trackClasses);\n rootClasses = getClasses(CLASS_ROOT);\n trackClasses = getClasses(CLASS_TRACK);\n addClass(root, rootClasses);\n addClass(track, trackClasses);\n setAttribute(root, ARIA_LABEL, options.label);\n setAttribute(root, ARIA_LABELLEDBY, options.labelledby);\n }\n\n function collect() {\n track = find(\".\" + CLASS_TRACK);\n list = child(track, \".\" + CLASS_LIST);\n assert(track && list, \"A track/list element is missing.\");\n push(slides, children(list, \".\" + CLASS_SLIDE + \":not(.\" + CLASS_CLONE + \")\"));\n forOwn({\n arrows: CLASS_ARROWS,\n pagination: CLASS_PAGINATION,\n prev: CLASS_ARROW_PREV,\n next: CLASS_ARROW_NEXT,\n bar: CLASS_PROGRESS_BAR,\n toggle: CLASS_TOGGLE\n }, function (className, key) {\n elements[key] = find(\".\" + className);\n });\n assign(elements, {\n root: root,\n track: track,\n list: list,\n slides: slides\n });\n }\n\n function init() {\n var id = root.id || uniqueId(PROJECT_CODE);\n var role = options.role;\n root.id = id;\n track.id = track.id || id + \"-track\";\n list.id = list.id || id + \"-list\";\n\n if (!getAttribute(root, ROLE) && root.tagName !== \"SECTION\" && role) {\n setAttribute(root, ROLE, role);\n }\n\n setAttribute(root, ARIA_ROLEDESCRIPTION, i18n.carousel);\n setAttribute(list, ROLE, \"presentation\");\n }\n\n function find(selector) {\n var elm = query(root, selector);\n return elm && closest(elm, \".\" + CLASS_ROOT) === root ? elm : void 0;\n }\n\n function getClasses(base) {\n return [base + \"--\" + options.type, base + \"--\" + options.direction, options.drag && base + \"--draggable\", options.isNavigation && base + \"--nav\", base === CLASS_ROOT && CLASS_ACTIVE];\n }\n\n return assign(elements, {\n setup: setup,\n mount: mount,\n destroy: destroy\n });\n}\n\nvar SLIDE = \"slide\";\nvar LOOP = \"loop\";\nvar FADE = \"fade\";\n\nfunction Slide$1(Splide2, index, slideIndex, slide) {\n var event = EventInterface(Splide2);\n var on = event.on,\n emit = event.emit,\n bind = event.bind;\n var Components = Splide2.Components,\n root = Splide2.root,\n options = Splide2.options;\n var isNavigation = options.isNavigation,\n updateOnMove = options.updateOnMove,\n i18n = options.i18n,\n pagination = options.pagination,\n slideFocus = options.slideFocus;\n var resolve = Components.Direction.resolve;\n var styles = getAttribute(slide, \"style\");\n var label = getAttribute(slide, ARIA_LABEL);\n var isClone = slideIndex > -1;\n var container = child(slide, \".\" + CLASS_CONTAINER);\n var focusableNodes = queryAll(slide, options.focusableNodes || \"\");\n var destroyed;\n\n function mount() {\n if (!isClone) {\n slide.id = root.id + \"-slide\" + pad(index + 1);\n setAttribute(slide, ROLE, pagination ? \"tabpanel\" : \"group\");\n setAttribute(slide, ARIA_ROLEDESCRIPTION, i18n.slide);\n setAttribute(slide, ARIA_LABEL, label || format(i18n.slideLabel, [index + 1, Splide2.length]));\n }\n\n listen();\n }\n\n function listen() {\n bind(slide, \"click\", apply(emit, EVENT_CLICK, self));\n bind(slide, \"keydown\", apply(emit, EVENT_SLIDE_KEYDOWN, self));\n on([EVENT_MOVED, EVENT_SHIFTED, EVENT_SCROLLED], update);\n on(EVENT_NAVIGATION_MOUNTED, initNavigation);\n\n if (updateOnMove) {\n on(EVENT_MOVE, onMove);\n }\n }\n\n function destroy() {\n destroyed = true;\n event.destroy();\n removeClass(slide, STATUS_CLASSES);\n removeAttribute(slide, ALL_ATTRIBUTES);\n setAttribute(slide, \"style\", styles);\n setAttribute(slide, ARIA_LABEL, label || \"\");\n }\n\n function initNavigation() {\n var controls = Splide2.splides.map(function (target) {\n var Slide2 = target.splide.Components.Slides.getAt(index);\n return Slide2 ? Slide2.slide.id : \"\";\n }).join(\" \");\n setAttribute(slide, ARIA_LABEL, format(i18n.slideX, (isClone ? slideIndex : index) + 1));\n setAttribute(slide, ARIA_CONTROLS, controls);\n setAttribute(slide, ROLE, slideFocus ? \"button\" : \"\");\n slideFocus && removeAttribute(slide, ARIA_ROLEDESCRIPTION);\n }\n\n function onMove() {\n if (!destroyed) {\n update();\n }\n }\n\n function update() {\n if (!destroyed) {\n var curr = Splide2.index;\n updateActivity();\n updateVisibility();\n toggleClass(slide, CLASS_PREV, index === curr - 1);\n toggleClass(slide, CLASS_NEXT, index === curr + 1);\n }\n }\n\n function updateActivity() {\n var active = isActive();\n\n if (active !== hasClass(slide, CLASS_ACTIVE)) {\n toggleClass(slide, CLASS_ACTIVE, active);\n setAttribute(slide, ARIA_CURRENT, isNavigation && active || \"\");\n emit(active ? EVENT_ACTIVE : EVENT_INACTIVE, self);\n }\n }\n\n function updateVisibility() {\n var visible = isVisible();\n var hidden = !visible && (!isActive() || isClone);\n\n if (!Splide2.state.is([MOVING, SCROLLING])) {\n setAttribute(slide, ARIA_HIDDEN, hidden || \"\");\n }\n\n setAttribute(focusableNodes, TAB_INDEX, hidden ? -1 : \"\");\n\n if (slideFocus) {\n setAttribute(slide, TAB_INDEX, hidden ? -1 : 0);\n }\n\n if (visible !== hasClass(slide, CLASS_VISIBLE)) {\n toggleClass(slide, CLASS_VISIBLE, visible);\n emit(visible ? EVENT_VISIBLE : EVENT_HIDDEN, self);\n }\n\n if (!visible && document.activeElement === slide) {\n var Slide2 = Components.Slides.getAt(Splide2.index);\n Slide2 && focus(Slide2.slide);\n }\n }\n\n function style$1(prop, value, useContainer) {\n style(useContainer && container || slide, prop, value);\n }\n\n function isActive() {\n var curr = Splide2.index;\n return curr === index || options.cloneStatus && curr === slideIndex;\n }\n\n function isVisible() {\n if (Splide2.is(FADE)) {\n return isActive();\n }\n\n var trackRect = rect(Components.Elements.track);\n var slideRect = rect(slide);\n var left = resolve(\"left\", true);\n var right = resolve(\"right\", true);\n return floor(trackRect[left]) <= ceil(slideRect[left]) && floor(slideRect[right]) <= ceil(trackRect[right]);\n }\n\n function isWithin(from, distance) {\n var diff = abs(from - index);\n\n if (!isClone && (options.rewind || Splide2.is(LOOP))) {\n diff = min(diff, Splide2.length - diff);\n }\n\n return diff <= distance;\n }\n\n var self = {\n index: index,\n slideIndex: slideIndex,\n slide: slide,\n container: container,\n isClone: isClone,\n mount: mount,\n destroy: destroy,\n update: update,\n style: style$1,\n isWithin: isWithin\n };\n return self;\n}\n\nfunction Slides(Splide2, Components2, options) {\n var _EventInterface2 = EventInterface(Splide2),\n on = _EventInterface2.on,\n emit = _EventInterface2.emit,\n bind = _EventInterface2.bind;\n\n var _Components2$Elements = Components2.Elements,\n slides = _Components2$Elements.slides,\n list = _Components2$Elements.list;\n var Slides2 = [];\n\n function mount() {\n init();\n on(EVENT_REFRESH, destroy);\n on(EVENT_REFRESH, init);\n on([EVENT_MOUNTED, EVENT_REFRESH], function () {\n Slides2.sort(function (Slide1, Slide2) {\n return Slide1.index - Slide2.index;\n });\n });\n }\n\n function init() {\n slides.forEach(function (slide, index) {\n register(slide, index, -1);\n });\n }\n\n function destroy() {\n forEach$1(function (Slide2) {\n Slide2.destroy();\n });\n empty(Slides2);\n }\n\n function update() {\n forEach$1(function (Slide2) {\n Slide2.update();\n });\n }\n\n function register(slide, index, slideIndex) {\n var object = Slide$1(Splide2, index, slideIndex, slide);\n object.mount();\n Slides2.push(object);\n }\n\n function get(excludeClones) {\n return excludeClones ? filter(function (Slide2) {\n return !Slide2.isClone;\n }) : Slides2;\n }\n\n function getIn(page) {\n var Controller = Components2.Controller;\n var index = Controller.toIndex(page);\n var max = Controller.hasFocus() ? 1 : options.perPage;\n return filter(function (Slide2) {\n return between(Slide2.index, index, index + max - 1);\n });\n }\n\n function getAt(index) {\n return filter(index)[0];\n }\n\n function add(items, index) {\n forEach(items, function (slide) {\n if (isString(slide)) {\n slide = parseHtml(slide);\n }\n\n if (isHTMLElement(slide)) {\n var ref = slides[index];\n ref ? before(slide, ref) : append(list, slide);\n addClass(slide, options.classes.slide);\n observeImages(slide, apply(emit, EVENT_RESIZE));\n }\n });\n emit(EVENT_REFRESH);\n }\n\n function remove$1(matcher) {\n remove(filter(matcher).map(function (Slide2) {\n return Slide2.slide;\n }));\n emit(EVENT_REFRESH);\n }\n\n function forEach$1(iteratee, excludeClones) {\n get(excludeClones).forEach(iteratee);\n }\n\n function filter(matcher) {\n return Slides2.filter(isFunction(matcher) ? matcher : function (Slide2) {\n return isString(matcher) ? matches(Slide2.slide, matcher) : includes(toArray(matcher), Slide2.index);\n });\n }\n\n function style(prop, value, useContainer) {\n forEach$1(function (Slide2) {\n Slide2.style(prop, value, useContainer);\n });\n }\n\n function observeImages(elm, callback) {\n var images = queryAll(elm, \"img\");\n var length = images.length;\n\n if (length) {\n images.forEach(function (img) {\n bind(img, \"load error\", function () {\n if (! --length) {\n callback();\n }\n });\n });\n } else {\n callback();\n }\n }\n\n function getLength(excludeClones) {\n return excludeClones ? slides.length : Slides2.length;\n }\n\n function isEnough() {\n return Slides2.length > options.perPage;\n }\n\n return {\n mount: mount,\n destroy: destroy,\n update: update,\n register: register,\n get: get,\n getIn: getIn,\n getAt: getAt,\n add: add,\n remove: remove$1,\n forEach: forEach$1,\n filter: filter,\n style: style,\n getLength: getLength,\n isEnough: isEnough\n };\n}\n\nfunction Layout(Splide2, Components2, options) {\n var _EventInterface3 = EventInterface(Splide2),\n on = _EventInterface3.on,\n bind = _EventInterface3.bind,\n emit = _EventInterface3.emit;\n\n var Slides = Components2.Slides;\n var resolve = Components2.Direction.resolve;\n var _Components2$Elements2 = Components2.Elements,\n root = _Components2$Elements2.root,\n track = _Components2$Elements2.track,\n list = _Components2$Elements2.list;\n var getAt = Slides.getAt,\n styleSlides = Slides.style;\n var vertical;\n var rootRect;\n\n function mount() {\n init();\n bind(window, \"resize load\", Throttle(apply(emit, EVENT_RESIZE)));\n on([EVENT_UPDATED, EVENT_REFRESH], init);\n on(EVENT_RESIZE, resize);\n }\n\n function init() {\n rootRect = null;\n vertical = options.direction === TTB;\n style(root, \"maxWidth\", unit(options.width));\n style(track, resolve(\"paddingLeft\"), cssPadding(false));\n style(track, resolve(\"paddingRight\"), cssPadding(true));\n resize();\n }\n\n function resize() {\n var newRect = rect(root);\n\n if (!rootRect || rootRect.width !== newRect.width || rootRect.height !== newRect.height) {\n style(track, \"height\", cssTrackHeight());\n styleSlides(resolve(\"marginRight\"), unit(options.gap));\n styleSlides(\"width\", cssSlideWidth());\n styleSlides(\"height\", cssSlideHeight(), true);\n rootRect = newRect;\n emit(EVENT_RESIZED);\n }\n }\n\n function cssPadding(right) {\n var padding = options.padding;\n var prop = resolve(right ? \"right\" : \"left\");\n return padding && unit(padding[prop] || (isObject(padding) ? 0 : padding)) || \"0px\";\n }\n\n function cssTrackHeight() {\n var height = \"\";\n\n if (vertical) {\n height = cssHeight();\n assert(height, \"height or heightRatio is missing.\");\n height = \"calc(\" + height + \" - \" + cssPadding(false) + \" - \" + cssPadding(true) + \")\";\n }\n\n return height;\n }\n\n function cssHeight() {\n return unit(options.height || rect(list).width * options.heightRatio);\n }\n\n function cssSlideWidth() {\n return options.autoWidth ? null : unit(options.fixedWidth) || (vertical ? \"\" : cssSlideSize());\n }\n\n function cssSlideHeight() {\n return unit(options.fixedHeight) || (vertical ? options.autoHeight ? null : cssSlideSize() : cssHeight());\n }\n\n function cssSlideSize() {\n var gap = unit(options.gap);\n return \"calc((100%\" + (gap && \" + \" + gap) + \")/\" + (options.perPage || 1) + (gap && \" - \" + gap) + \")\";\n }\n\n function listSize() {\n return rect(list)[resolve(\"width\")];\n }\n\n function slideSize(index, withoutGap) {\n var Slide = getAt(index || 0);\n return Slide ? rect(Slide.slide)[resolve(\"width\")] + (withoutGap ? 0 : getGap()) : 0;\n }\n\n function totalSize(index, withoutGap) {\n var Slide = getAt(index);\n\n if (Slide) {\n var right = rect(Slide.slide)[resolve(\"right\")];\n var left = rect(list)[resolve(\"left\")];\n return abs(right - left) + (withoutGap ? 0 : getGap());\n }\n\n return 0;\n }\n\n function sliderSize() {\n return totalSize(Splide2.length - 1, true) - totalSize(-1, true);\n }\n\n function getGap() {\n var Slide = getAt(0);\n return Slide && parseFloat(style(Slide.slide, resolve(\"marginRight\"))) || 0;\n }\n\n function getPadding(right) {\n return parseFloat(style(track, resolve(\"padding\" + (right ? \"Right\" : \"Left\")))) || 0;\n }\n\n return {\n mount: mount,\n listSize: listSize,\n slideSize: slideSize,\n sliderSize: sliderSize,\n totalSize: totalSize,\n getPadding: getPadding\n };\n}\n\nvar MULTIPLIER = 2;\n\nfunction Clones(Splide2, Components2, options) {\n var _EventInterface4 = EventInterface(Splide2),\n on = _EventInterface4.on,\n emit = _EventInterface4.emit;\n\n var Elements = Components2.Elements,\n Slides = Components2.Slides;\n var resolve = Components2.Direction.resolve;\n var clones = [];\n var cloneCount;\n\n function mount() {\n init();\n on(EVENT_REFRESH, destroy);\n on(EVENT_REFRESH, init);\n on([EVENT_UPDATED, EVENT_RESIZE], observe);\n }\n\n function init() {\n if (cloneCount = computeCloneCount()) {\n generate(cloneCount);\n emit(EVENT_RESIZE);\n }\n }\n\n function destroy() {\n remove(clones);\n empty(clones);\n }\n\n function observe() {\n if (cloneCount < computeCloneCount()) {\n emit(EVENT_REFRESH);\n }\n }\n\n function generate(count) {\n var slides = Slides.get().slice();\n var length = slides.length;\n\n if (length) {\n while (slides.length < count) {\n push(slides, slides);\n }\n\n push(slides.slice(-count), slides.slice(0, count)).forEach(function (Slide, index) {\n var isHead = index < count;\n var clone = cloneDeep(Slide.slide, index);\n isHead ? before(clone, slides[0].slide) : append(Elements.list, clone);\n push(clones, clone);\n Slides.register(clone, index - count + (isHead ? 0 : length), Slide.index);\n });\n }\n }\n\n function cloneDeep(elm, index) {\n var clone = elm.cloneNode(true);\n addClass(clone, options.classes.clone);\n clone.id = Splide2.root.id + \"-clone\" + pad(index + 1);\n return clone;\n }\n\n function computeCloneCount() {\n var clones2 = options.clones;\n\n if (!Splide2.is(LOOP)) {\n clones2 = 0;\n } else if (!clones2) {\n var fixedSize = options[resolve(\"fixedWidth\")] && Components2.Layout.slideSize(0);\n var fixedCount = fixedSize && ceil(rect(Elements.track)[resolve(\"width\")] / fixedSize);\n clones2 = fixedCount || options[resolve(\"autoWidth\")] && Splide2.length || options.perPage * MULTIPLIER;\n }\n\n return clones2;\n }\n\n return {\n mount: mount,\n destroy: destroy\n };\n}\n\nfunction Move(Splide2, Components2, options) {\n var _EventInterface5 = EventInterface(Splide2),\n on = _EventInterface5.on,\n emit = _EventInterface5.emit;\n\n var set = Splide2.state.set;\n var _Components2$Layout = Components2.Layout,\n slideSize = _Components2$Layout.slideSize,\n getPadding = _Components2$Layout.getPadding,\n totalSize = _Components2$Layout.totalSize,\n listSize = _Components2$Layout.listSize,\n sliderSize = _Components2$Layout.sliderSize;\n var _Components2$Directio = Components2.Direction,\n resolve = _Components2$Directio.resolve,\n orient = _Components2$Directio.orient;\n var _Components2$Elements3 = Components2.Elements,\n list = _Components2$Elements3.list,\n track = _Components2$Elements3.track;\n var Transition;\n\n function mount() {\n Transition = Components2.Transition;\n on([EVENT_MOUNTED, EVENT_RESIZED, EVENT_UPDATED, EVENT_REFRESH], reposition);\n }\n\n function reposition() {\n if (!Components2.Controller.isBusy()) {\n Components2.Scroll.cancel();\n jump(Splide2.index);\n Components2.Slides.update();\n }\n }\n\n function move(dest, index, prev, callback) {\n if (dest !== index && canShift(dest > prev)) {\n cancel();\n translate(shift(getPosition(), dest > prev), true);\n }\n\n set(MOVING);\n emit(EVENT_MOVE, index, prev, dest);\n Transition.start(index, function () {\n set(IDLE);\n emit(EVENT_MOVED, index, prev, dest);\n callback && callback();\n });\n }\n\n function jump(index) {\n translate(toPosition(index, true));\n }\n\n function translate(position, preventLoop) {\n if (!Splide2.is(FADE)) {\n var destination = preventLoop ? position : loop(position);\n style(list, \"transform\", \"translate\" + resolve(\"X\") + \"(\" + destination + \"px)\");\n position !== destination && emit(EVENT_SHIFTED);\n }\n }\n\n function loop(position) {\n if (Splide2.is(LOOP)) {\n var index = toIndex(position);\n var exceededMax = index > Components2.Controller.getEnd();\n var exceededMin = index < 0;\n\n if (exceededMin || exceededMax) {\n position = shift(position, exceededMax);\n }\n }\n\n return position;\n }\n\n function shift(position, backwards) {\n var excess = position - getLimit(backwards);\n var size = sliderSize();\n position -= orient(size * (ceil(abs(excess) / size) || 1)) * (backwards ? 1 : -1);\n return position;\n }\n\n function cancel() {\n translate(getPosition());\n Transition.cancel();\n }\n\n function toIndex(position) {\n var Slides = Components2.Slides.get();\n var index = 0;\n var minDistance = Infinity;\n\n for (var i = 0; i < Slides.length; i++) {\n var slideIndex = Slides[i].index;\n var distance = abs(toPosition(slideIndex, true) - position);\n\n if (distance <= minDistance) {\n minDistance = distance;\n index = slideIndex;\n } else {\n break;\n }\n }\n\n return index;\n }\n\n function toPosition(index, trimming) {\n var position = orient(totalSize(index - 1) - offset(index));\n return trimming ? trim(position) : position;\n }\n\n function getPosition() {\n var left = resolve(\"left\");\n return rect(list)[left] - rect(track)[left] + orient(getPadding(false));\n }\n\n function trim(position) {\n if (options.trimSpace && Splide2.is(SLIDE)) {\n position = clamp(position, 0, orient(sliderSize() - listSize()));\n }\n\n return position;\n }\n\n function offset(index) {\n var focus = options.focus;\n return focus === \"center\" ? (listSize() - slideSize(index, true)) / 2 : +focus * slideSize(index) || 0;\n }\n\n function getLimit(max) {\n return toPosition(max ? Components2.Controller.getEnd() : 0, !!options.trimSpace);\n }\n\n function canShift(backwards) {\n var shifted = orient(shift(getPosition(), backwards));\n return backwards ? shifted >= 0 : shifted <= list[resolve(\"scrollWidth\")] - rect(track)[resolve(\"width\")];\n }\n\n function exceededLimit(max, position) {\n position = isUndefined(position) ? getPosition() : position;\n var exceededMin = max !== true && orient(position) < orient(getLimit(false));\n var exceededMax = max !== false && orient(position) > orient(getLimit(true));\n return exceededMin || exceededMax;\n }\n\n return {\n mount: mount,\n move: move,\n jump: jump,\n translate: translate,\n shift: shift,\n cancel: cancel,\n toIndex: toIndex,\n toPosition: toPosition,\n getPosition: getPosition,\n getLimit: getLimit,\n exceededLimit: exceededLimit,\n reposition: reposition\n };\n}\n\nfunction Controller(Splide2, Components2, options) {\n var _EventInterface6 = EventInterface(Splide2),\n on = _EventInterface6.on;\n\n var Move = Components2.Move;\n var getPosition = Move.getPosition,\n getLimit = Move.getLimit,\n toPosition = Move.toPosition;\n var _Components2$Slides = Components2.Slides,\n isEnough = _Components2$Slides.isEnough,\n getLength = _Components2$Slides.getLength;\n var isLoop = Splide2.is(LOOP);\n var isSlide = Splide2.is(SLIDE);\n var getNext = apply(getAdjacent, false);\n var getPrev = apply(getAdjacent, true);\n var currIndex = options.start || 0;\n var prevIndex = currIndex;\n var slideCount;\n var perMove;\n var perPage;\n\n function mount() {\n init();\n on([EVENT_UPDATED, EVENT_REFRESH], init);\n }\n\n function init() {\n slideCount = getLength(true);\n perMove = options.perMove;\n perPage = options.perPage;\n var index = clamp(currIndex, 0, slideCount - 1);\n\n if (index !== currIndex) {\n currIndex = index;\n Move.reposition();\n }\n }\n\n function go(control, allowSameIndex, callback) {\n if (!isBusy()) {\n var dest = parse(control);\n var index = loop(dest);\n\n if (index > -1 && (allowSameIndex || index !== currIndex)) {\n setIndex(index);\n Move.move(dest, index, prevIndex, callback);\n }\n }\n }\n\n function scroll(destination, duration, snap, callback) {\n Components2.Scroll.scroll(destination, duration, snap, function () {\n setIndex(loop(Move.toIndex(getPosition())));\n callback && callback();\n });\n }\n\n function parse(control) {\n var index = currIndex;\n\n if (isString(control)) {\n var _ref = control.match(/([+\\-<>])(\\d+)?/) || [],\n indicator = _ref[1],\n number = _ref[2];\n\n if (indicator === \"+\" || indicator === \"-\") {\n index = computeDestIndex(currIndex + +(\"\" + indicator + (+number || 1)), currIndex);\n } else if (indicator === \">\") {\n index = number ? toIndex(+number) : getNext(true);\n } else if (indicator === \"<\") {\n index = getPrev(true);\n }\n } else {\n index = isLoop ? control : clamp(control, 0, getEnd());\n }\n\n return index;\n }\n\n function getAdjacent(prev, destination) {\n var number = perMove || (hasFocus() ? 1 : perPage);\n var dest = computeDestIndex(currIndex + number * (prev ? -1 : 1), currIndex, !(perMove || hasFocus()));\n\n if (dest === -1 && isSlide) {\n if (!approximatelyEqual(getPosition(), getLimit(!prev), 1)) {\n return prev ? 0 : getEnd();\n }\n }\n\n return destination ? dest : loop(dest);\n }\n\n function computeDestIndex(dest, from, snapPage) {\n if (isEnough()) {\n var end = getEnd();\n var index = computeMovableDestIndex(dest);\n\n if (index !== dest) {\n from = dest;\n dest = index;\n snapPage = false;\n }\n\n if (dest < 0 || dest > end) {\n if (!perMove && (between(0, dest, from, true) || between(end, from, dest, true))) {\n dest = toIndex(toPage(dest));\n } else {\n if (isLoop) {\n dest = snapPage ? dest < 0 ? -(slideCount % perPage || perPage) : slideCount : dest;\n } else if (options.rewind) {\n dest = dest < 0 ? end : 0;\n } else {\n dest = -1;\n }\n }\n } else {\n if (snapPage && dest !== from) {\n dest = toIndex(toPage(from) + (dest < from ? -1 : 1));\n }\n }\n } else {\n dest = -1;\n }\n\n return dest;\n }\n\n function computeMovableDestIndex(dest) {\n if (isSlide && options.trimSpace === \"move\" && dest !== currIndex) {\n var position = getPosition();\n\n while (position === toPosition(dest, true) && between(dest, 0, Splide2.length - 1, !options.rewind)) {\n dest < currIndex ? --dest : ++dest;\n }\n }\n\n return dest;\n }\n\n function loop(index) {\n return isLoop ? (index + slideCount) % slideCount || 0 : index;\n }\n\n function getEnd() {\n return max(slideCount - (hasFocus() || isLoop && perMove ? 1 : perPage), 0);\n }\n\n function toIndex(page) {\n return clamp(hasFocus() ? page : perPage * page, 0, getEnd());\n }\n\n function toPage(index) {\n return hasFocus() ? index : floor((index >= getEnd() ? slideCount - 1 : index) / perPage);\n }\n\n function toDest(destination) {\n var closest = Move.toIndex(destination);\n return isSlide ? clamp(closest, 0, getEnd()) : closest;\n }\n\n function setIndex(index) {\n if (index !== currIndex) {\n prevIndex = currIndex;\n currIndex = index;\n }\n }\n\n function getIndex(prev) {\n return prev ? prevIndex : currIndex;\n }\n\n function hasFocus() {\n return !isUndefined(options.focus) || options.isNavigation;\n }\n\n function isBusy() {\n return Splide2.state.is([MOVING, SCROLLING]) && !!options.waitForTransition;\n }\n\n return {\n mount: mount,\n go: go,\n scroll: scroll,\n getNext: getNext,\n getPrev: getPrev,\n getAdjacent: getAdjacent,\n getEnd: getEnd,\n setIndex: setIndex,\n getIndex: getIndex,\n toIndex: toIndex,\n toPage: toPage,\n toDest: toDest,\n hasFocus: hasFocus,\n isBusy: isBusy\n };\n}\n\nvar XML_NAME_SPACE = \"http://www.w3.org/2000/svg\";\nvar PATH = \"m15.5 0.932-4.3 4.38 14.5 14.6-14.5 14.5 4.3 4.4 14.6-14.6 4.4-4.3-4.4-4.4-14.6-14.6z\";\nvar SIZE = 40;\n\nfunction Arrows(Splide2, Components2, options) {\n var event = EventInterface(Splide2);\n var on = event.on,\n bind = event.bind,\n emit = event.emit;\n var classes = options.classes,\n i18n = options.i18n;\n var Elements = Components2.Elements,\n Controller = Components2.Controller;\n var userArrows = Elements.arrows,\n track = Elements.track;\n var wrapper = userArrows;\n var prev = Elements.prev;\n var next = Elements.next;\n var created;\n var wrapperClasses;\n var arrows = {};\n\n function mount() {\n init();\n on(EVENT_UPDATED, remount);\n }\n\n function remount() {\n destroy();\n mount();\n }\n\n function init() {\n var enabled = options.arrows;\n\n if (enabled && !(prev && next)) {\n createArrows();\n }\n\n if (prev && next) {\n assign(arrows, {\n prev: prev,\n next: next\n });\n display(wrapper, enabled ? \"\" : \"none\");\n addClass(wrapper, wrapperClasses = CLASS_ARROWS + \"--\" + options.direction);\n\n if (enabled) {\n listen();\n update();\n setAttribute([prev, next], ARIA_CONTROLS, track.id);\n emit(EVENT_ARROWS_MOUNTED, prev, next);\n }\n }\n }\n\n function destroy() {\n event.destroy();\n removeClass(wrapper, wrapperClasses);\n\n if (created) {\n remove(userArrows ? [prev, next] : wrapper);\n prev = next = null;\n } else {\n removeAttribute([prev, next], ALL_ATTRIBUTES);\n }\n }\n\n function listen() {\n on([EVENT_MOVED, EVENT_REFRESH, EVENT_SCROLLED], update);\n bind(next, \"click\", apply(go, \">\"));\n bind(prev, \"click\", apply(go, \"<\"));\n }\n\n function go(control) {\n Controller.go(control, true);\n }\n\n function createArrows() {\n wrapper = userArrows || create(\"div\", classes.arrows);\n prev = createArrow(true);\n next = createArrow(false);\n created = true;\n append(wrapper, [prev, next]);\n !userArrows && before(wrapper, track);\n }\n\n function createArrow(prev2) {\n var arrow = \"\";\n };\n\n _proto3.html = function html() {\n var _this$config = this.config,\n rootClass = _this$config.rootClass,\n listTag = _this$config.listTag,\n arrows = _this$config.arrows,\n beforeTrack = _this$config.beforeTrack,\n afterTrack = _this$config.afterTrack,\n slider = _this$config.slider,\n beforeSlider = _this$config.beforeSlider,\n afterSlider = _this$config.afterSlider;\n var html = \"\";\n html += \"
\";\n html += \"\";\n\n if (slider) {\n html += beforeSlider || \"\";\n html += \"
\";\n }\n\n html += beforeTrack || \"\";\n\n if (arrows) {\n html += this.renderArrows();\n }\n\n html += \"
\";\n html += \"<\" + listTag + \" class=\\\"splide__list\\\">\";\n html += this.renderSlides();\n html += \"\";\n html += \"
\";\n html += afterTrack || \"\";\n\n if (slider) {\n html += \"
\";\n html += afterSlider || \"\";\n }\n\n html += \"
\";\n return html;\n };\n\n return SplideRenderer;\n}();\n\nexport { CLASSES, CLASS_ACTIVE, CLASS_ARROW, CLASS_ARROWS, CLASS_ARROW_NEXT, CLASS_ARROW_PREV, CLASS_CLONE, CLASS_CONTAINER, CLASS_FOCUS_IN, CLASS_INITIALIZED, CLASS_LIST, CLASS_LOADING, CLASS_NEXT, CLASS_PAGINATION, CLASS_PAGINATION_PAGE, CLASS_PREV, CLASS_PROGRESS, CLASS_PROGRESS_BAR, CLASS_ROOT, CLASS_SLIDE, CLASS_SPINNER, CLASS_SR, CLASS_TOGGLE, CLASS_TOGGLE_PAUSE, CLASS_TOGGLE_PLAY, CLASS_TRACK, CLASS_VISIBLE, DEFAULTS, EVENT_ACTIVE, EVENT_ARROWS_MOUNTED, EVENT_ARROWS_UPDATED, EVENT_AUTOPLAY_PAUSE, EVENT_AUTOPLAY_PLAY, EVENT_AUTOPLAY_PLAYING, EVENT_CLICK, EVENT_DESTROY, EVENT_DRAG, EVENT_DRAGGED, EVENT_DRAGGING, EVENT_HIDDEN, EVENT_INACTIVE, EVENT_LAZYLOAD_LOADED, EVENT_MOUNTED, EVENT_MOVE, EVENT_MOVED, EVENT_NAVIGATION_MOUNTED, EVENT_PAGINATION_MOUNTED, EVENT_PAGINATION_UPDATED, EVENT_READY, EVENT_REFRESH, EVENT_RESIZE, EVENT_RESIZED, EVENT_SCROLL, EVENT_SCROLLED, EVENT_SHIFTED, EVENT_SLIDE_KEYDOWN, EVENT_UPDATED, EVENT_VISIBLE, EventBinder, EventInterface, FADE, LOOP, LTR, RTL, RequestInterval, SLIDE, STATUS_CLASSES, Splide, SplideRenderer, State, TTB, Throttle, Splide as default };\n", "import { Mesh, PerspectiveCamera, PlaneBufferGeometry, Scene, WebGLRenderer } from 'three';\r\nimport { Material } from 'three/src/materials/Material';\r\nimport { Texture } from 'three/src/textures/Texture';\r\n\r\n\r\n/**\r\n * The class for creating WebGLRenderer with a plain mesh which is responsive.\r\n *\r\n * @since 0.0.1\r\n */\r\nexport class Renderer {\r\n /**\r\n * The canvas element to render the scene to.\r\n */\r\n protected readonly canvas: HTMLCanvasElement;\r\n\r\n /**\r\n * A WebGLRenderer instance.\r\n */\r\n protected readonly renderer: WebGLRenderer;\r\n\r\n /**\r\n * A Mesh instance.\r\n */\r\n protected readonly mesh: Mesh;\r\n\r\n /**\r\n * A PerspectiveCamera instance.\r\n */\r\n protected readonly camera: PerspectiveCamera;\r\n\r\n /**\r\n * A Scene instance.\r\n */\r\n protected readonly scene = new Scene();\r\n\r\n /**\r\n * A geometry.\r\n */\r\n protected readonly geometry = new PlaneBufferGeometry( 1, 1 );\r\n\r\n /**\r\n * The ResponsiveMesh constructor.\r\n *\r\n * @param canvas - A canvas element.\r\n * @param material - A Material instance.\r\n */\r\n constructor( canvas: HTMLCanvasElement, material: Material | Material[] ) {\r\n this.renderer = this.createRenderer( canvas );\r\n this.canvas = canvas;\r\n this.camera = this.createCamera();\r\n this.mesh = new Mesh( this.geometry, material );\r\n\r\n this.scene.add( this.mesh );\r\n }\r\n\r\n /**\r\n * Decode textures beforehand.\r\n *\r\n * @param textures - Textures to initialize.\r\n */\r\n decode( textures: Texture[] ): void {\r\n textures.forEach( texture => {\r\n this.renderer.initTexture( texture );\r\n } );\r\n }\r\n\r\n /**\r\n * Renders the scene to the canvas.\r\n */\r\n render(): void {\r\n this.renderer.render( this.scene, this.camera );\r\n }\r\n\r\n /**\r\n * Sets the dimension.\r\n *\r\n * @param width - Width.\r\n * @param height - Height.\r\n */\r\n setSize( width: number, height: number ): void {\r\n const aspect = ( width / height ) || 1;\r\n const [ viewWidth, viewHeight ] = this.computeViewDimension( aspect );\r\n\r\n this.mesh.scale.set( viewWidth, viewHeight, 1 );\r\n this.renderer.setSize( width, height );\r\n this.camera.aspect = aspect;\r\n this.camera.updateProjectionMatrix();\r\n }\r\n\r\n /**\r\n * Creates and initializes the renderer.\r\n *\r\n * @param canvas - A canvas element to render the scene to.\r\n *\r\n * @return A created WebGLRenderer instance.\r\n */\r\n protected createRenderer( canvas: HTMLCanvasElement ): WebGLRenderer {\r\n const renderer = new WebGLRenderer( { canvas } );\r\n renderer.setPixelRatio( window.devicePixelRatio );\r\n return renderer;\r\n }\r\n\r\n /**\r\n * Creates a camera.\r\n *\r\n * @return A created PerspectiveCamera instance.\r\n */\r\n protected createCamera(): PerspectiveCamera {\r\n const camera = new PerspectiveCamera( 45, 1, 1, 10000 );\r\n camera.position.z = 50;\r\n return camera;\r\n }\r\n\r\n /**\r\n * Computes the view dimension so that the mesh fills up the camera.\r\n *\r\n * @param aspect - Aspect ratio.\r\n */\r\n protected computeViewDimension( aspect: number ): [ number, number ] {\r\n const { camera } = this;\r\n const fovRad = ( camera.fov * Math.PI ) / 180;\r\n const height = Math.abs( camera.position.z * Math.tan( fovRad / 2 ) * 2 );\r\n return [ height * aspect, height ];\r\n }\r\n}", "import { ShaderMaterial, TextureLoader, Vector2, VideoTexture } from 'three';\r\nimport { IUniform } from 'three/src/renderers/shaders/UniformsLib';\r\nimport { Texture } from 'three/src/textures/Texture';\r\nimport { MaterialParameters, TextureSource } from '../types';\r\n\r\n\r\n/**\r\n * The class for handling the shader and changing textures.\r\n *\r\n * @since 0.0.1\r\n */\r\nexport class Material {\r\n /**\r\n * The ShaderMaterial instance.\r\n */\r\n readonly material: ShaderMaterial;\r\n\r\n /**\r\n * Stores Texture instances.\r\n */\r\n readonly textures: Array<{ texture: Texture, ratio: Vector2 }> = [];\r\n\r\n /**\r\n * An object with uniforms for the shader.\r\n */\r\n protected readonly uniforms: { [ uniform: string ]: IUniform } = {\r\n tTexture : { value: null },\r\n tNextTexture: { value: null },\r\n tMask : { value: null },\r\n fIntensity : { value: 0.5 },\r\n fProgress : { value: 0 },\r\n vUVOffset : { value: new Vector2( 1, 1 ) },\r\n vRatio : { value: new Vector2( 1, 1 ) },\r\n vNextRatio : { value: new Vector2( 1, 1 ) },\r\n };\r\n\r\n /**\r\n * Stores provided sources.\r\n */\r\n protected sources: TextureSource[];\r\n\r\n /**\r\n * A mask URL.\r\n */\r\n protected mask: string | undefined;\r\n\r\n /**\r\n * The current texture index.\r\n */\r\n protected index = 0;\r\n\r\n /**\r\n * The next texture index.\r\n */\r\n protected nextIndex = 0;\r\n\r\n /**\r\n * The Material constructor.\r\n *\r\n * @param vertexShader - A vertex shader.\r\n * @param fragmentShader - A fragment shader.\r\n * @param sources - Optional. An array with image URLs.\r\n * @param mask - Optional. A mask URL.\r\n */\r\n constructor( vertexShader: string, fragmentShader: string, sources: TextureSource[] = [], mask?: string ) {\r\n this.material = new ShaderMaterial( {\r\n vertexShader,\r\n fragmentShader,\r\n uniforms: this.uniforms,\r\n } );\r\n\r\n this.sources = sources;\r\n this.mask = mask;\r\n }\r\n\r\n /**\r\n * Destroys the instance.\r\n */\r\n destroy(): void {\r\n this.sources.length = 0;\r\n }\r\n\r\n /**\r\n * Adds image URLs.\r\n * This muse be called before `load()`.\r\n *\r\n * @param sources - An array with texture sources.\r\n */\r\n add( sources: TextureSource[] ): void {\r\n this.sources.push( ...sources );\r\n }\r\n\r\n /**\r\n * Starts loading textures.\r\n *\r\n * @return A promise that is resolved with Texture instances when all images get ready.\r\n */\r\n load(): Promise {\r\n return this.loadMask().then( () => {\r\n return this.loadSources()\r\n .then( textures => {\r\n this.textures.push( ...textures.map( texture => ( { texture, ratio: new Vector2( 1, 1 ) } ) ) );\r\n this.uniforms.tTexture.value = textures[ 0 ] || null;\r\n return textures;\r\n } );\r\n } );\r\n }\r\n\r\n /**\r\n * Updates the dimension used in the shader.\r\n *\r\n * @param width - The carousel width.\r\n * @param height - The carousel height.\r\n */\r\n setSize( width: number, height: number ): void {\r\n this.textures.forEach( ( texture, index ) => {\r\n const aspect = ( width / height ) || 1;\r\n const [ imageWidth, imageHeight ] = this.getTextureDimension( texture.texture );\r\n\r\n texture.ratio = new Vector2(\r\n Math.min( aspect / ( imageWidth / imageHeight ), 1.0 ),\r\n Math.min( ( 1 / aspect ) / ( imageHeight / imageWidth ), 1.0 )\r\n );\r\n\r\n if ( index === this.index ) {\r\n this.uniforms.vRatio.value = texture.ratio;\r\n }\r\n\r\n if ( index === this.nextIndex ) {\r\n this.uniforms.vNextRatio.value = texture.ratio;\r\n }\r\n } );\r\n }\r\n\r\n /**\r\n * Sets a new index and updates textures in the shader.\r\n *\r\n * @param index - A new index.\r\n * @param reverse - Optional. Explicitly sets the transition direction.\r\n */\r\n setIndex( index: number, reverse?: boolean ): void {\r\n const { textures, index: curr } = this;\r\n\r\n if ( 0 <= index && index < textures.length && curr !== index ) {\r\n const auto = reverse === undefined;\r\n\r\n if ( ( auto && curr > index ) || reverse ) {\r\n this.setProgress( 1 );\r\n this.setTexture( index, curr );\r\n this.nextIndex = curr;\r\n } else {\r\n this.setProgress( 0 );\r\n this.setTexture( curr, index );\r\n this.nextIndex = index;\r\n }\r\n\r\n this.index = index;\r\n }\r\n }\r\n\r\n /**\r\n * Returns the current texture index.\r\n */\r\n getIndex(): number {\r\n return this.index;\r\n }\r\n\r\n /**\r\n * Applies current and next textures and aspect ratios.\r\n *\r\n * @param curr - A current index.\r\n * @param next - A next index.\r\n */\r\n setTexture( curr: number, next: number ): void {\r\n const currTexture = this.textures[ curr ];\r\n const nextTexture = this.textures[ next ];\r\n\r\n if ( currTexture && nextTexture ) {\r\n const { uniforms } = this;\r\n\r\n uniforms.tTexture.value = currTexture.texture;\r\n uniforms.vRatio.value = currTexture.ratio;\r\n uniforms.tNextTexture.value = nextTexture.texture;\r\n uniforms.vNextRatio.value = nextTexture.ratio;\r\n }\r\n }\r\n\r\n /**\r\n * Sets transition progress (0-1).\r\n *\r\n * @param progress - Progress rate.\r\n */\r\n setProgress( progress: number ): void {\r\n this.uniforms.fProgress.value = progress;\r\n }\r\n\r\n /**\r\n * Sets material parameters.\r\n *\r\n * @param params - Parameters to update.\r\n */\r\n setParams( params: MaterialParameters ): void {\r\n const { intensity = 0.5, uvOffset = [ 1, 1 ] } = params;\r\n this.uniforms.fIntensity.value = intensity;\r\n this.uniforms.vUVOffset.value = uvOffset;\r\n }\r\n\r\n /**\r\n * Returns the number of textures.\r\n */\r\n getLength(): number {\r\n return this.textures.length;\r\n }\r\n\r\n /**\r\n * Load sources and create textures.\r\n *\r\n * @return A promise resolved when sources are loaded.\r\n */\r\n protected loadSources(): Promise {\r\n return Promise.all( this.sources.map( source => {\r\n if ( source instanceof HTMLVideoElement ) {\r\n return this.loadVideo( source );\r\n }\r\n\r\n return new TextureLoader()\r\n .loadAsync( source instanceof HTMLImageElement ? source.src : source )\r\n .then( texture => {\r\n texture.needsUpdate = true;\r\n return texture;\r\n } );\r\n } ) );\r\n }\r\n\r\n /**\r\n * Loads the video texture.\r\n * 2 means `HAVE_CURRENT_DATA`.\r\n *\r\n * @link https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/readyState\r\n *\r\n * @param video - A video element.\r\n *\r\n * @return A promise resolved when the texture is available.\r\n */\r\n protected loadVideo( video: HTMLVideoElement ): Promise {\r\n return new Promise( resolve => {\r\n const texture = new VideoTexture( video );\r\n texture.needsUpdate = true;\r\n\r\n if ( video.readyState >= 2 ) {\r\n resolve( texture );\r\n } else {\r\n video.addEventListener( 'canplay', function onCanplay() {\r\n resolve( texture );\r\n video.removeEventListener( 'canplay', onCanplay );\r\n } );\r\n }\r\n } );\r\n }\r\n\r\n /**\r\n * Loads the mask texture if available.\r\n *\r\n * @return A promise resolved when the texture is loaded.\r\n */\r\n protected loadMask(): Promise {\r\n if ( ! this.mask ) {\r\n return Promise.resolve();\r\n }\r\n\r\n return new TextureLoader().loadAsync( this.mask ).then( mask => {\r\n this.uniforms.tMask.value = mask;\r\n } );\r\n }\r\n\r\n /**\r\n * Returns the dimension of the provided texture.\r\n *\r\n * @param texture - A Texture instance.\r\n *\r\n * @return A tuple as `[ width, height ]`.\r\n */\r\n protected getTextureDimension( texture: Texture ): [ number, number ] {\r\n const { image } = texture;\r\n return image instanceof HTMLVideoElement\r\n ? [ image.videoWidth, image.videoHeight ]\r\n : [ image.width, image.height ];\r\n }\r\n}", "import { SplideShaderCarouselOptions } from '../types';\r\n\r\n/**\r\n * Default options.\r\n *\r\n * @since 0.0.1\r\n */\r\nexport const DEFAULTS: SplideShaderCarouselOptions = {\r\n awaitInit: true,\r\n};", "/**\r\n * Clamps the number.\r\n *\r\n * @param value - A value to clamp.\r\n * @param min - A min number.\r\n * @param max - A max number.\r\n *\r\n * @return A clamped number.\r\n */\r\nexport function clamp( value: number, min: number, max: number ): number {\r\n return Math.max( Math.min( value, max ), min );\r\n}", "import vertexShader from '../shaders/vertex/general.vert?raw';\r\nimport {\r\n EventInterface,\r\n EventInterfaceObject,\r\n RequestInterval,\r\n RequestIntervalInterface,\r\n Throttle,\r\n} from '@splidejs/splide';\r\nimport { Renderer } from './Renderer';\r\nimport { Material } from './Material';\r\nimport { ShaderCarouselOptions, TextureSource } from '../types';\r\nimport { DEFAULTS } from '../constants/defaults';\r\nimport { clamp } from '../utils';\r\n\r\n\r\n/**\r\n * The class for building a carousel with using the GLSL shader for transition.\r\n *\r\n * @since 0.0.1\r\n */\r\nexport class ShaderCarousel {\r\n /**\r\n * The canvas element to render the carousel to.\r\n */\r\n readonly canvas: HTMLCanvasElement;\r\n\r\n /**\r\n * A Renderer instance.\r\n */\r\n readonly renderer: Renderer;\r\n\r\n /**\r\n * A custom material instance.\r\n */\r\n readonly material: Material;\r\n\r\n /**\r\n * An EventInterfaceObject instance.\r\n */\r\n protected readonly event: EventInterfaceObject;\r\n\r\n /**\r\n * Holds options.\r\n */\r\n protected readonly options: ShaderCarouselOptions;\r\n\r\n /**\r\n * The active RequestInterval instance.\r\n */\r\n protected interval: RequestIntervalInterface | undefined;\r\n\r\n /**\r\n * The ShaderCarousel constructor.\r\n *\r\n * @param canvas - A canvas element to render the carousel.\r\n * @param fragmentShader - A fragment shader.\r\n * @param options - Optional. An object with options.\r\n */\r\n constructor( canvas: HTMLCanvasElement, fragmentShader: string, options: ShaderCarouselOptions = {} ) {\r\n this.canvas = canvas;\r\n this.options = Object.assign( {}, DEFAULTS, options );\r\n this.event = EventInterface();\r\n this.material = new Material( options.vertexShader || vertexShader, fragmentShader, options.sources, options.mask );\r\n this.renderer = new Renderer( canvas, this.material.material );\r\n }\r\n\r\n /**\r\n * Mounts the carousel.\r\n *\r\n * @param sources - Optional. An array with texture sources.\r\n * @param onReady - Optional. Called when all image are loaded.\r\n */\r\n mount( sources?: TextureSource[], onReady?: () => void ): void {\r\n sources && this.material.add( sources );\r\n\r\n const { preDecoding } = this.options;\r\n\r\n this.material.load()\r\n .then( () => {\r\n this.resize();\r\n preDecoding === 'load' && this.decode();\r\n preDecoding === 'nearby' && this.decodeAround();\r\n onReady && onReady();\r\n } )\r\n .catch( console.error );\r\n\r\n this.resize();\r\n this.listen();\r\n }\r\n\r\n\r\n /**\r\n * Asynchronously mounts the carousel.\r\n *\r\n * @param sources - Optional. An array with texture sources.\r\n *\r\n * @return A promise resolved when all images are loaded.\r\n */\r\n mountAsync( sources?: TextureSource[] ): Promise {\r\n return new Promise( resolve => {\r\n this.mount( sources, resolve );\r\n } );\r\n }\r\n\r\n /**\r\n * Destroys the instance.\r\n */\r\n destroy(): void {\r\n this.event.destroy();\r\n this.material.destroy();\r\n }\r\n\r\n /**\r\n * Goes to the specified index.\r\n *\r\n * @param index - An index to go.\r\n * @param reverse - Optional. Explicitly sets the transition direction.\r\n */\r\n go( index: number, reverse?: boolean ): void {\r\n const auto = reverse === undefined;\r\n const curr = this.material.getIndex();\r\n index = clamp( index, 0, this.getLength() - 1 );\r\n\r\n if ( index !== curr ) {\r\n this.material.setIndex( index, reverse );\r\n this.transition( ( auto && curr > index ) || !! reverse );\r\n }\r\n }\r\n\r\n /**\r\n * Resizes the slider to fit the content to the parent element.\r\n */\r\n resize(): void {\r\n const width = this.getWidth();\r\n const height = this.getHeight();\r\n\r\n if ( width && height ) {\r\n this.renderer.setSize( width, height );\r\n this.material.setSize( width, height );\r\n }\r\n\r\n this.render();\r\n }\r\n\r\n /**\r\n * Manually sets the progress.\r\n *\r\n * @internal\r\n *\r\n * @param progress - Progress rate to set from 0 to 1.\r\n */\r\n setProgress( progress: number ): void {\r\n this.material.setProgress( clamp( progress, 0, 1 ) );\r\n }\r\n\r\n /**\r\n * Returns the current width.\r\n *\r\n * @return The current width. If the parent of the canvas is not available, this always returns 0.\r\n */\r\n getWidth(): number {\r\n return this.canvas.parentElement?.clientWidth || 0;\r\n }\r\n\r\n /**\r\n * Returns the current height.\r\n *\r\n * @return The current height. If the parent of the canvas is not available, this always returns 0.\r\n */\r\n getHeight(): number {\r\n return this.canvas.parentElement?.clientHeight || 0;\r\n }\r\n\r\n /**\r\n * Returns the number of textures.\r\n */\r\n getLength(): number {\r\n return this.material.getLength();\r\n }\r\n\r\n /**\r\n * Manually decodes textures beforehand.\r\n */\r\n protected decode(): void {\r\n this.renderer.decode( this.material.textures.map( texture => texture.texture ) );\r\n }\r\n\r\n /**\r\n * Manually decodes textures around the current texture.\r\n */\r\n protected decodeAround(): void {\r\n const { material } = this;\r\n const length = material.getLength();\r\n\r\n if ( length ) {\r\n const { textures } = this.material;\r\n const index = material.getIndex();\r\n const next = ( index + 1 ) % length;\r\n const prev = ( index - 1 + length ) % length;\r\n\r\n this.renderer.decode( [ textures[ next ].texture, textures[ prev ].texture ] );\r\n }\r\n }\r\n\r\n /**\r\n * Renders the scene to the canvas.\r\n */\r\n protected render(): void {\r\n this.renderer.render();\r\n }\r\n\r\n /**\r\n * Listens to some events.\r\n * Needs to resize the canvas and the scene when the window is resized.\r\n */\r\n protected listen(): void {\r\n this.event.bind( window, 'resize', Throttle( () => {\r\n this.resize();\r\n this.render();\r\n } ) );\r\n }\r\n\r\n /**\r\n * Changes the carousel forwards or backwards.\r\n *\r\n * @param reverse - Determines whether to go to the prev slide or the next one.\r\n */\r\n protected transition( reverse: boolean ): void {\r\n if ( this.interval ) {\r\n this.interval.cancel();\r\n }\r\n\r\n const { speed = 1000 } = this.options;\r\n\r\n this.interval = RequestInterval(\r\n speed,\r\n this.onTransitionEnd.bind( this ),\r\n this.onProgress.bind( this, reverse ),\r\n 1\r\n );\r\n\r\n this.interval.start();\r\n }\r\n\r\n /**\r\n * Called every time when the progress rate changes.\r\n * Do not forget to call the render method to update the shader.\r\n *\r\n * @param reverse - `true` will be passed for backwards transition.\r\n * @param progress - Progress rate.\r\n */\r\n protected onProgress( reverse: boolean, progress: number ): void {\r\n const { easingFunc = t => 1 - Math.pow( 1 - t, 4 ) } = this.options;\r\n progress = easingFunc( progress );\r\n this.setProgress( reverse ? 1 - progress : progress );\r\n this.render();\r\n }\r\n\r\n /**\r\n * Called when transition ends.\r\n */\r\n protected onTransitionEnd(): void {\r\n this.interval = undefined;\r\n this.options.preDecoding === 'nearby' && this.decodeAround();\r\n }\r\n}", "export const EVENT_SHADER_CAROUSEL_INITIALIZED = 'shaderCarousel:initialized';\r\nexport const EVENT_SHADER_CAROUSEL_READY = 'shaderCarousel:ready';\r\nexport const EVENT_SHADER_CAROUSEL_ERROR = 'shaderCarousel:error';", "import {\r\n BaseComponent,\r\n CLASS_INITIALIZED,\r\n CLASS_LOADING,\r\n CLASS_SR,\r\n Components,\r\n EventInterface,\r\n LOOP,\r\n SlideComponent,\r\n} from '@splidejs/splide';\r\nimport { SplideShaderCarousel as Splide } from '../core/SplideShaderCarousel';\r\nimport { SplideShaderCarouselOptions as Options, TextureSource } from '../types';\r\nimport { ShaderCarousel } from '../classes/ShaderCarousel';\r\nimport { EVENT_SHADER_CAROUSEL_ERROR, EVENT_SHADER_CAROUSEL_READY } from '../constants/events';\r\nimport { DEFAULTS } from '../constants/defaults';\r\n\r\n\r\n/**\r\n * The component for displaying a shader carousel as a background of the foreground carousel.\r\n *\r\n * @constructor\r\n * @since 0.0.1\r\n *\r\n * @param Splide - A SplideShaderCarousel instance.\r\n * @param Components - A collection of components.\r\n * @param options - Options.\r\n *\r\n * @return A BackgroundShaderCarousel object.\r\n */\r\nexport function BackgroundShaderCarousel( Splide: Splide, Components: Components, options: Options ): BaseComponent {\r\n const { on, emit } = EventInterface( Splide );\r\n const { track } = Components.Elements;\r\n const canvas = document.createElement( 'canvas' );\r\n\r\n /**\r\n * The ShaderCarousel instance.\r\n */\r\n let shaderCarousel: ShaderCarousel | undefined;\r\n\r\n /**\r\n * Stores texture sources.\r\n */\r\n const sources: TextureSource[] = [];\r\n\r\n /**\r\n * Keeps image elements used for shader textures.\r\n */\r\n const images: HTMLImageElement[] = [];\r\n\r\n /**\r\n * Stores SR fields.\r\n */\r\n const srFields: HTMLSpanElement[] = [];\r\n\r\n /**\r\n * Called when the component is mounted.\r\n */\r\n function mount(): void {\r\n initCanvas();\r\n initCarousel();\r\n initSources();\r\n initMaterial();\r\n mountCarousel();\r\n }\r\n\r\n /**\r\n * Mounts the shader carousel.\r\n */\r\n function mountCarousel(): void {\r\n if ( sources.length > 1 ) {\r\n const { classList } = Splide.root;\r\n classList.add( CLASS_LOADING );\r\n\r\n shaderCarousel?.mountAsync( sources )\r\n .then( () => {\r\n canvas.style.visibility = 'visible';\r\n classList.add( CLASS_INITIALIZED );\r\n classList.remove( CLASS_LOADING );\r\n emit( EVENT_SHADER_CAROUSEL_READY );\r\n } )\r\n .catch( e => {\r\n emit( EVENT_SHADER_CAROUSEL_ERROR );\r\n throw new Error( e );\r\n } );\r\n\r\n listen();\r\n } else {\r\n console.error( 'Requires at least 2 images.' );\r\n emit( EVENT_SHADER_CAROUSEL_ERROR );\r\n }\r\n }\r\n\r\n /**\r\n * Listens to some events.\r\n */\r\n function listen(): void {\r\n on( 'move', ( index, prev ) => {\r\n const { length } = Splide;\r\n let reverse;\r\n\r\n if ( options.continuous || Splide.is( LOOP ) ) {\r\n if ( prev === length - 1 && index === 0 ) {\r\n reverse = false;\r\n } else if ( prev === 0 && index === length - 1 ) {\r\n reverse = true;\r\n }\r\n }\r\n\r\n shaderCarousel?.go( index, reverse );\r\n } );\r\n }\r\n\r\n /**\r\n * Destroys the component.\r\n */\r\n function destroy(): void {\r\n track.removeChild( canvas );\r\n\r\n srFields.forEach( field => {\r\n field.parentElement?.removeChild( field );\r\n } );\r\n\r\n images.forEach( img => {\r\n img.style.display = '';\r\n } );\r\n\r\n sources.length = 0;\r\n srFields.length = 0;\r\n images.length = 0;\r\n\r\n shaderCarousel?.destroy();\r\n shaderCarousel = undefined;\r\n }\r\n\r\n /**\r\n * Initializes the canvas element.\r\n */\r\n function initCanvas(): void {\r\n const { style } = canvas;\r\n\r\n style.position = 'absolute';\r\n style.zIndex = '-1';\r\n style.top = '0';\r\n style.left = '0';\r\n style.visibility = 'hidden';\r\n\r\n track.appendChild( canvas );\r\n }\r\n\r\n /**\r\n * Creates and initializes a shader carousel.\r\n */\r\n function initCarousel(): void {\r\n shaderCarousel = new ShaderCarousel( canvas, Splide.fragmentShader, {\r\n speed : options.speed,\r\n mask : options.mask,\r\n easingFunc : options.easingFunc || DEFAULTS.easingFunc,\r\n preDecoding : options.preDecoding,\r\n vertexShader: options.vertexShader,\r\n } );\r\n }\r\n\r\n /**\r\n * Initializes sources.\r\n * If sources are not provided by options, finds them in all slides.\r\n */\r\n function initSources(): void {\r\n const { sources: sourcesOption } = options;\r\n\r\n if ( sourcesOption && sourcesOption.length ) {\r\n sources.push( ...sourcesOption );\r\n } else {\r\n Components.Slides.forEach( initSlide );\r\n }\r\n }\r\n\r\n /**\r\n * Initializes each slide.\r\n *\r\n * @param Slide A Slide component.\r\n */\r\n function initSlide( Slide: SlideComponent ): void {\r\n const img = Slide.slide.querySelector( 'img' );\r\n\r\n if ( img ) {\r\n const { alt } = img;\r\n\r\n if ( alt && options.keepAlt ) {\r\n const span = document.createElement( 'span' );\r\n span.textContent = alt;\r\n span.classList.add( CLASS_SR );\r\n img.parentElement?.insertBefore( span, img );\r\n srFields.push( span );\r\n }\r\n\r\n if ( ! Slide.isClone ) {\r\n sources.push( img.src );\r\n images.push( img );\r\n }\r\n\r\n img.style.display = 'none';\r\n }\r\n }\r\n\r\n /**\r\n * Initializes material parameters.\r\n */\r\n function initMaterial(): void {\r\n const { material } = options;\r\n\r\n if ( material ) {\r\n shaderCarousel?.material.setParams( {\r\n intensity: material.intensity,\r\n uvOffset : material.uvOffset,\r\n } );\r\n }\r\n }\r\n\r\n return {\r\n mount,\r\n destroy,\r\n };\r\n}", "import Splide, { CLASS_INITIALIZED, ComponentConstructor, EventInterface } from '@splidejs/splide';\r\nimport { SplideShaderCarouselOptions as Options } from '../types';\r\nimport { BackgroundShaderCarousel } from '../components/BackgroundShaderCarousel';\r\nimport { EVENT_SHADER_CAROUSEL_ERROR, EVENT_SHADER_CAROUSEL_READY } from '../constants/events';\r\nimport { DEFAULTS } from '../constants/defaults';\r\n\r\n\r\n/**\r\n * The frontend class for a Splide carousel with shader transition.\r\n *\r\n * @since 0.0.1\r\n */\r\nexport class SplideShaderCarousel extends Splide {\r\n /**\r\n * Checks if WebGL is supported or not.\r\n *\r\n * @return `true` if webGL is available, or otherwise `false`.\r\n */\r\n static isAvailable(): boolean {\r\n try {\r\n const canvas = document.createElement( 'canvas' );\r\n const context = canvas.getContext( 'webgl' ) || canvas.getContext( 'experimental-webgl' );\r\n return !! ( WebGLRenderingContext && context );\r\n } catch ( e ) {\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * Keeps the fragment shader.\r\n */\r\n readonly fragmentShader: string;\r\n\r\n /**\r\n * The SplideShaderTransition constructor.\r\n *\r\n * @param target - The selector for the target element, or the element itself.\r\n * @param fragmentShader - The fragment shader.\r\n * @param options - Optional. An object with options.\r\n */\r\n constructor( target: string | HTMLElement, fragmentShader: string, options?: Options ) {\r\n super( target, Object.assign( {}, DEFAULTS, options ) );\r\n this.fragmentShader = fragmentShader;\r\n }\r\n\r\n /**\r\n * Initializes the instance.\r\n *\r\n * @param Extensions - Optional. An object with extensions.\r\n */\r\n mount( Extensions: Record = {} ): this {\r\n super.mount( Object.assign( Extensions, { BackgroundShaderCarousel } ) ); // @todo unsafe\r\n\r\n if ( this.options.awaitInit ) {\r\n this.root.classList.remove( CLASS_INITIALIZED );\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Asynchronously mounts the component.\r\n * The returned promise will be resolved when all textures are loaded and the shader gets ready to render the scene.\r\n *\r\n * @param Extensions - Optional. An object with extensions.\r\n *\r\n * @return A promise when the shader gets ready.\r\n */\r\n mountAsync( Extensions?: Record ): Promise {\r\n return new Promise( ( resolve, reject ) => {\r\n this.mount( Extensions );\r\n const { on } = EventInterface( this );\r\n on( EVENT_SHADER_CAROUSEL_READY, resolve );\r\n on( EVENT_SHADER_CAROUSEL_ERROR, reject );\r\n } );\r\n }\r\n}", "import * as shaders from '../shaders';\r\nimport { SplideShaderCarousel as Core } from '../';\r\n\r\n\r\n/**\r\n * Lets the compiler know the global variable.\r\n */\r\ndeclare global {\r\n interface Window {\r\n SplideShaderCarousel: typeof SplideShaderCarousel;\r\n }\r\n}\r\n\r\n/**\r\n * Provides some data as static variables\r\n *\r\n * @since 0.0.1\r\n */\r\nclass SplideShaderCarousel extends Core {\r\n /**\r\n * Stores all shaders.\r\n */\r\n static shaders = shaders;\r\n}\r\n\r\n/**\r\n * Exposes the class as the global object.\r\n */\r\nwindow.SplideShaderCarousel = SplideShaderCarousel;\r\n"], "mappings": "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", "names": [] }