{
  "version": 3,
  "sources": ["../../../node_modules/@rails/actioncable/src/adapters.js", "../../../node_modules/@rails/actioncable/src/logger.js", "../../../node_modules/@rails/actioncable/src/connection_monitor.js", "../../../node_modules/@rails/actioncable/src/internal.js", "../../../node_modules/@rails/actioncable/src/connection.js", "../../../node_modules/@rails/actioncable/src/subscription.js", "../../../node_modules/@rails/actioncable/src/subscription_guarantor.js", "../../../node_modules/@rails/actioncable/src/subscriptions.js", "../../../node_modules/@rails/actioncable/src/consumer.js", "../../../node_modules/@rails/actioncable/src/index.js", "../../../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/modules/resize/resize.js", "../../../node_modules/swiper/core/modules/observer/observer.js", "../../../node_modules/swiper/core/events-emitter.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/update/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/translate/index.js", "../../../node_modules/swiper/core/transition/setTransition.js", "../../../node_modules/swiper/core/transition/transitionEmit.js", "../../../node_modules/swiper/core/transition/transitionStart.js", "../../../node_modules/swiper/core/transition/transitionEnd.js", "../../../node_modules/swiper/core/transition/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/slide/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/loop/index.js", "../../../node_modules/swiper/core/grab-cursor/setGrabCursor.js", "../../../node_modules/swiper/core/grab-cursor/unsetGrabCursor.js", "../../../node_modules/swiper/core/grab-cursor/index.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/breakpoints/getBreakpoint.js", "../../../node_modules/swiper/core/breakpoints/index.js", "../../../node_modules/swiper/core/classes/addClasses.js", "../../../node_modules/swiper/core/classes/removeClasses.js", "../../../node_modules/swiper/core/classes/index.js", "../../../node_modules/swiper/core/images/loadImage.js", "../../../node_modules/swiper/core/images/preloadImages.js", "../../../node_modules/swiper/core/images/index.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/modules/virtual/virtual.js", "../../../node_modules/swiper/modules/keyboard/keyboard.js", "../../../node_modules/swiper/modules/mousewheel/mousewheel.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/scrollbar/scrollbar.js", "../../../node_modules/swiper/modules/parallax/parallax.js", "../../../node_modules/swiper/modules/zoom/zoom.js", "../../../node_modules/swiper/modules/lazy/lazy.js", "../../../node_modules/swiper/modules/controller/controller.js", "../../../node_modules/swiper/modules/a11y/a11y.js", "../../../node_modules/swiper/modules/history/history.js", "../../../node_modules/swiper/modules/hash-navigation/hash-navigation.js", "../../../node_modules/swiper/modules/autoplay/autoplay.js", "../../../node_modules/swiper/modules/thumbs/thumbs.js", "../../../node_modules/swiper/modules/free-mode/free-mode.js", "../../../node_modules/swiper/modules/grid/grid.js", "../../../node_modules/swiper/modules/manipulation/methods/appendSlide.js", "../../../node_modules/swiper/modules/manipulation/methods/prependSlide.js", "../../../node_modules/swiper/modules/manipulation/methods/addSlide.js", "../../../node_modules/swiper/modules/manipulation/methods/removeSlide.js", "../../../node_modules/swiper/modules/manipulation/methods/removeAllSlides.js", "../../../node_modules/swiper/modules/manipulation/manipulation.js", "../../../node_modules/swiper/shared/effect-init.js", "../../../node_modules/swiper/shared/effect-target.js", "../../../node_modules/swiper/shared/effect-virtual-transition-end.js", "../../../node_modules/swiper/modules/effect-fade/effect-fade.js", "../../../node_modules/swiper/modules/effect-cube/effect-cube.js", "../../../node_modules/swiper/shared/create-shadow.js", "../../../node_modules/swiper/modules/effect-flip/effect-flip.js", "../../../node_modules/swiper/modules/effect-coverflow/effect-coverflow.js", "../../../node_modules/swiper/modules/effect-creative/effect-creative.js", "../../../node_modules/swiper/modules/effect-cards/effect-cards.js", "../../../node_modules/swiper/swiper.esm.js", "../../../node_modules/aos/dist/aos.js", "../../../node_modules/@fancyapps/ui/dist/fancybox/fancybox.esm.js", "../../../node_modules/@hotwired/turbo/dist/turbo.es2017-esm.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/snakeize.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable_stream_source_element.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/fetch_requests.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/index.js", "../../javascript/application.js", "../../../node_modules/@hotwired/stimulus/dist/stimulus.js", "../../javascript/controllers/application.js", "../../javascript/controllers/aos_controller.js", "../../../node_modules/just-extend/index.esm.js", "../../../node_modules/dropzone/dist/src/dropzone.js", "../../../node_modules/dropzone/dist/src/emitter.js", "../../../node_modules/dropzone/dist/src/options.js", "../../../node_modules/dropzone/dist/node_modules/@parcel/runtime-js/lib/bundles/runtime-044f6de40395a564.js", "../../../node_modules/@rails/activestorage/app/assets/javascripts/activestorage.esm.js", "../../javascript/helpers/index.js", "../../javascript/controllers/dropzone_controller.js", "../../javascript/controllers/hello_controller.js", "../../javascript/controllers/map_controller.js", "../../javascript/controllers/swiper_controller.js", "../../javascript/controllers/swiper_thumb_controller.js", "../../javascript/controllers/pointer_controller.js", "../../javascript/controllers/fancybox_controller.js", "../../javascript/controllers/index.js"],
  "sourcesContent": ["export default {\n  logger: self.console,\n  WebSocket: self.WebSocket\n}\n", "import adapters from \"./adapters\"\n\n// The logger is disabled by default. You can enable it with:\n//\n//   ActionCable.logger.enabled = true\n//\n//   Example:\n//\n//   import * as ActionCable from '@rails/actioncable'\n//\n//   ActionCable.logger.enabled = true\n//   ActionCable.logger.log('Connection Established.')\n//\n\nexport default {\n  log(...messages) {\n    if (this.enabled) {\n      messages.push(Date.now())\n      adapters.logger.log(\"[ActionCable]\", ...messages)\n    }\n  },\n}\n", "import logger from \"./logger\"\n\n// Responsible for ensuring the cable connection is in good health by validating the heartbeat pings sent from the server, and attempting\n// revival reconnections if things go astray. Internal class, not intended for direct user manipulation.\n\nconst now = () => new Date().getTime()\n\nconst secondsSince = time => (now() - time) / 1000\n\nclass ConnectionMonitor {\n  constructor(connection) {\n    this.visibilityDidChange = this.visibilityDidChange.bind(this)\n    this.connection = connection\n    this.reconnectAttempts = 0\n  }\n\n  start() {\n    if (!this.isRunning()) {\n      this.startedAt = now()\n      delete this.stoppedAt\n      this.startPolling()\n      addEventListener(\"visibilitychange\", this.visibilityDidChange)\n      logger.log(`ConnectionMonitor started. stale threshold = ${this.constructor.staleThreshold} s`)\n    }\n  }\n\n  stop() {\n    if (this.isRunning()) {\n      this.stoppedAt = now()\n      this.stopPolling()\n      removeEventListener(\"visibilitychange\", this.visibilityDidChange)\n      logger.log(\"ConnectionMonitor stopped\")\n    }\n  }\n\n  isRunning() {\n    return this.startedAt && !this.stoppedAt\n  }\n\n  recordPing() {\n    this.pingedAt = now()\n  }\n\n  recordConnect() {\n    this.reconnectAttempts = 0\n    this.recordPing()\n    delete this.disconnectedAt\n    logger.log(\"ConnectionMonitor recorded connect\")\n  }\n\n  recordDisconnect() {\n    this.disconnectedAt = now()\n    logger.log(\"ConnectionMonitor recorded disconnect\")\n  }\n\n  // Private\n\n  startPolling() {\n    this.stopPolling()\n    this.poll()\n  }\n\n  stopPolling() {\n    clearTimeout(this.pollTimeout)\n  }\n\n  poll() {\n    this.pollTimeout = setTimeout(() => {\n      this.reconnectIfStale()\n      this.poll()\n    }\n    , this.getPollInterval())\n  }\n\n  getPollInterval() {\n    const { staleThreshold, reconnectionBackoffRate } = this.constructor\n    const backoff = Math.pow(1 + reconnectionBackoffRate, Math.min(this.reconnectAttempts, 10))\n    const jitterMax = this.reconnectAttempts === 0 ? 1.0 : reconnectionBackoffRate\n    const jitter = jitterMax * Math.random()\n    return staleThreshold * 1000 * backoff * (1 + jitter)\n  }\n\n  reconnectIfStale() {\n    if (this.connectionIsStale()) {\n      logger.log(`ConnectionMonitor detected stale connection. reconnectAttempts = ${this.reconnectAttempts}, time stale = ${secondsSince(this.refreshedAt)} s, stale threshold = ${this.constructor.staleThreshold} s`)\n      this.reconnectAttempts++\n      if (this.disconnectedRecently()) {\n        logger.log(`ConnectionMonitor skipping reopening recent disconnect. time disconnected = ${secondsSince(this.disconnectedAt)} s`)\n      } else {\n        logger.log(\"ConnectionMonitor reopening\")\n        this.connection.reopen()\n      }\n    }\n  }\n\n  get refreshedAt() {\n    return this.pingedAt ? this.pingedAt : this.startedAt\n  }\n\n  connectionIsStale() {\n    return secondsSince(this.refreshedAt) > this.constructor.staleThreshold\n  }\n\n  disconnectedRecently() {\n    return this.disconnectedAt && (secondsSince(this.disconnectedAt) < this.constructor.staleThreshold)\n  }\n\n  visibilityDidChange() {\n    if (document.visibilityState === \"visible\") {\n      setTimeout(() => {\n        if (this.connectionIsStale() || !this.connection.isOpen()) {\n          logger.log(`ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = ${document.visibilityState}`)\n          this.connection.reopen()\n        }\n      }\n      , 200)\n    }\n  }\n\n}\n\nConnectionMonitor.staleThreshold = 6 // Server::Connections::BEAT_INTERVAL * 2 (missed two pings)\nConnectionMonitor.reconnectionBackoffRate = 0.15\n\nexport default ConnectionMonitor\n", "export default {\n  \"message_types\": {\n    \"welcome\": \"welcome\",\n    \"disconnect\": \"disconnect\",\n    \"ping\": \"ping\",\n    \"confirmation\": \"confirm_subscription\",\n    \"rejection\": \"reject_subscription\"\n  },\n  \"disconnect_reasons\": {\n    \"unauthorized\": \"unauthorized\",\n    \"invalid_request\": \"invalid_request\",\n    \"server_restart\": \"server_restart\"\n  },\n  \"default_mount_path\": \"/cable\",\n  \"protocols\": [\n    \"actioncable-v1-json\",\n    \"actioncable-unsupported\"\n  ]\n}\n", "import adapters from \"./adapters\"\nimport ConnectionMonitor from \"./connection_monitor\"\nimport INTERNAL from \"./internal\"\nimport logger from \"./logger\"\n\n// Encapsulate the cable connection held by the consumer. This is an internal class not intended for direct user manipulation.\n\nconst {message_types, protocols} = INTERNAL\nconst supportedProtocols = protocols.slice(0, protocols.length - 1)\n\nconst indexOf = [].indexOf\n\nclass Connection {\n  constructor(consumer) {\n    this.open = this.open.bind(this)\n    this.consumer = consumer\n    this.subscriptions = this.consumer.subscriptions\n    this.monitor = new ConnectionMonitor(this)\n    this.disconnected = true\n  }\n\n  send(data) {\n    if (this.isOpen()) {\n      this.webSocket.send(JSON.stringify(data))\n      return true\n    } else {\n      return false\n    }\n  }\n\n  open() {\n    if (this.isActive()) {\n      logger.log(`Attempted to open WebSocket, but existing socket is ${this.getState()}`)\n      return false\n    } else {\n      logger.log(`Opening WebSocket, current state is ${this.getState()}, subprotocols: ${protocols}`)\n      if (this.webSocket) { this.uninstallEventHandlers() }\n      this.webSocket = new adapters.WebSocket(this.consumer.url, protocols)\n      this.installEventHandlers()\n      this.monitor.start()\n      return true\n    }\n  }\n\n  close({allowReconnect} = {allowReconnect: true}) {\n    if (!allowReconnect) { this.monitor.stop() }\n    // Avoid closing websockets in a \"connecting\" state due to Safari 15.1+ bug. See: https://github.com/rails/rails/issues/43835#issuecomment-1002288478\n    if (this.isOpen()) {\n      return this.webSocket.close()\n    }\n  }\n\n  reopen() {\n    logger.log(`Reopening WebSocket, current state is ${this.getState()}`)\n    if (this.isActive()) {\n      try {\n        return this.close()\n      } catch (error) {\n        logger.log(\"Failed to reopen WebSocket\", error)\n      }\n      finally {\n        logger.log(`Reopening WebSocket in ${this.constructor.reopenDelay}ms`)\n        setTimeout(this.open, this.constructor.reopenDelay)\n      }\n    } else {\n      return this.open()\n    }\n  }\n\n  getProtocol() {\n    if (this.webSocket) {\n      return this.webSocket.protocol\n    }\n  }\n\n  isOpen() {\n    return this.isState(\"open\")\n  }\n\n  isActive() {\n    return this.isState(\"open\", \"connecting\")\n  }\n\n  // Private\n\n  isProtocolSupported() {\n    return indexOf.call(supportedProtocols, this.getProtocol()) >= 0\n  }\n\n  isState(...states) {\n    return indexOf.call(states, this.getState()) >= 0\n  }\n\n  getState() {\n    if (this.webSocket) {\n      for (let state in adapters.WebSocket) {\n        if (adapters.WebSocket[state] === this.webSocket.readyState) {\n          return state.toLowerCase()\n        }\n      }\n    }\n    return null\n  }\n\n  installEventHandlers() {\n    for (let eventName in this.events) {\n      const handler = this.events[eventName].bind(this)\n      this.webSocket[`on${eventName}`] = handler\n    }\n  }\n\n  uninstallEventHandlers() {\n    for (let eventName in this.events) {\n      this.webSocket[`on${eventName}`] = function() {}\n    }\n  }\n\n}\n\nConnection.reopenDelay = 500\n\nConnection.prototype.events = {\n  message(event) {\n    if (!this.isProtocolSupported()) { return }\n    const {identifier, message, reason, reconnect, type} = JSON.parse(event.data)\n    switch (type) {\n      case message_types.welcome:\n        this.monitor.recordConnect()\n        return this.subscriptions.reload()\n      case message_types.disconnect:\n        logger.log(`Disconnecting. Reason: ${reason}`)\n        return this.close({allowReconnect: reconnect})\n      case message_types.ping:\n        return this.monitor.recordPing()\n      case message_types.confirmation:\n        this.subscriptions.confirmSubscription(identifier)\n        return this.subscriptions.notify(identifier, \"connected\")\n      case message_types.rejection:\n        return this.subscriptions.reject(identifier)\n      default:\n        return this.subscriptions.notify(identifier, \"received\", message)\n    }\n  },\n\n  open() {\n    logger.log(`WebSocket onopen event, using '${this.getProtocol()}' subprotocol`)\n    this.disconnected = false\n    if (!this.isProtocolSupported()) {\n      logger.log(\"Protocol is unsupported. Stopping monitor and disconnecting.\")\n      return this.close({allowReconnect: false})\n    }\n  },\n\n  close(event) {\n    logger.log(\"WebSocket onclose event\")\n    if (this.disconnected) { return }\n    this.disconnected = true\n    this.monitor.recordDisconnect()\n    return this.subscriptions.notifyAll(\"disconnected\", {willAttemptReconnect: this.monitor.isRunning()})\n  },\n\n  error() {\n    logger.log(\"WebSocket onerror event\")\n  }\n}\n\nexport default Connection\n", "// A new subscription is created through the ActionCable.Subscriptions instance available on the consumer.\n// It provides a number of callbacks and a method for calling remote procedure calls on the corresponding\n// Channel instance on the server side.\n//\n// An example demonstrates the basic functionality:\n//\n//   App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\", {\n//     connected() {\n//       // Called once the subscription has been successfully completed\n//     },\n//\n//     disconnected({ willAttemptReconnect: boolean }) {\n//       // Called when the client has disconnected with the server.\n//       // The object will have an `willAttemptReconnect` property which\n//       // says whether the client has the intention of attempting\n//       // to reconnect.\n//     },\n//\n//     appear() {\n//       this.perform('appear', {appearing_on: this.appearingOn()})\n//     },\n//\n//     away() {\n//       this.perform('away')\n//     },\n//\n//     appearingOn() {\n//       $('main').data('appearing-on')\n//     }\n//   })\n//\n// The methods #appear and #away forward their intent to the remote AppearanceChannel instance on the server\n// by calling the `perform` method with the first parameter being the action (which maps to AppearanceChannel#appear/away).\n// The second parameter is a hash that'll get JSON encoded and made available on the server in the data parameter.\n//\n// This is how the server component would look:\n//\n//   class AppearanceChannel < ApplicationActionCable::Channel\n//     def subscribed\n//       current_user.appear\n//     end\n//\n//     def unsubscribed\n//       current_user.disappear\n//     end\n//\n//     def appear(data)\n//       current_user.appear on: data['appearing_on']\n//     end\n//\n//     def away\n//       current_user.away\n//     end\n//   end\n//\n// The \"AppearanceChannel\" name is automatically mapped between the client-side subscription creation and the server-side Ruby class name.\n// The AppearanceChannel#appear/away public methods are exposed automatically to client-side invocation through the perform method.\n\nconst extend = function(object, properties) {\n  if (properties != null) {\n    for (let key in properties) {\n      const value = properties[key]\n      object[key] = value\n    }\n  }\n  return object\n}\n\nexport default class Subscription {\n  constructor(consumer, params = {}, mixin) {\n    this.consumer = consumer\n    this.identifier = JSON.stringify(params)\n    extend(this, mixin)\n  }\n\n  // Perform a channel action with the optional data passed as an attribute\n  perform(action, data = {}) {\n    data.action = action\n    return this.send(data)\n  }\n\n  send(data) {\n    return this.consumer.send({command: \"message\", identifier: this.identifier, data: JSON.stringify(data)})\n  }\n\n  unsubscribe() {\n    return this.consumer.subscriptions.remove(this)\n  }\n}\n", "import logger from \"./logger\"\n\n// Responsible for ensuring channel subscribe command is confirmed, retrying until confirmation is received.\n// Internal class, not intended for direct user manipulation.\n\nclass SubscriptionGuarantor {\n  constructor(subscriptions) {\n    this.subscriptions = subscriptions\n    this.pendingSubscriptions = []\n  }\n\n  guarantee(subscription) {\n    if(this.pendingSubscriptions.indexOf(subscription) == -1){ \n      logger.log(`SubscriptionGuarantor guaranteeing ${subscription.identifier}`)\n      this.pendingSubscriptions.push(subscription) \n    }\n    else {\n      logger.log(`SubscriptionGuarantor already guaranteeing ${subscription.identifier}`)\n    }\n    this.startGuaranteeing()\n  }\n\n  forget(subscription) {\n    logger.log(`SubscriptionGuarantor forgetting ${subscription.identifier}`)\n    this.pendingSubscriptions = (this.pendingSubscriptions.filter((s) => s !== subscription))\n  }\n\n  startGuaranteeing() {\n    this.stopGuaranteeing()\n    this.retrySubscribing()\n  }\n  \n  stopGuaranteeing() {\n    clearTimeout(this.retryTimeout)\n  }\n\n  retrySubscribing() {\n    this.retryTimeout = setTimeout(() => {\n      if (this.subscriptions && typeof(this.subscriptions.subscribe) === \"function\") {\n        this.pendingSubscriptions.map((subscription) => {\n          logger.log(`SubscriptionGuarantor resubscribing ${subscription.identifier}`)\n          this.subscriptions.subscribe(subscription)\n        })\n      }\n    }\n    , 500)\n  }\n}\n\nexport default SubscriptionGuarantor", "import Subscription from \"./subscription\"\nimport SubscriptionGuarantor from \"./subscription_guarantor\"\nimport logger from \"./logger\"\n\n// Collection class for creating (and internally managing) channel subscriptions.\n// The only method intended to be triggered by the user is ActionCable.Subscriptions#create,\n// and it should be called through the consumer like so:\n//\n//   App = {}\n//   App.cable = ActionCable.createConsumer(\"ws://example.com/accounts/1\")\n//   App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\")\n//\n// For more details on how you'd configure an actual channel subscription, see ActionCable.Subscription.\n\nexport default class Subscriptions {\n  constructor(consumer) {\n    this.consumer = consumer\n    this.guarantor = new SubscriptionGuarantor(this)\n    this.subscriptions = []\n  }\n\n  create(channelName, mixin) {\n    const channel = channelName\n    const params = typeof channel === \"object\" ? channel : {channel}\n    const subscription = new Subscription(this.consumer, params, mixin)\n    return this.add(subscription)\n  }\n\n  // Private\n\n  add(subscription) {\n    this.subscriptions.push(subscription)\n    this.consumer.ensureActiveConnection()\n    this.notify(subscription, \"initialized\")\n    this.subscribe(subscription)\n    return subscription\n  }\n\n  remove(subscription) {\n    this.forget(subscription)\n    if (!this.findAll(subscription.identifier).length) {\n      this.sendCommand(subscription, \"unsubscribe\")\n    }\n    return subscription\n  }\n\n  reject(identifier) {\n    return this.findAll(identifier).map((subscription) => {\n      this.forget(subscription)\n      this.notify(subscription, \"rejected\")\n      return subscription\n    })\n  }\n\n  forget(subscription) {\n    this.guarantor.forget(subscription)\n    this.subscriptions = (this.subscriptions.filter((s) => s !== subscription))\n    return subscription\n  }\n\n  findAll(identifier) {\n    return this.subscriptions.filter((s) => s.identifier === identifier)\n  }\n\n  reload() {\n    return this.subscriptions.map((subscription) =>\n      this.subscribe(subscription))\n  }\n\n  notifyAll(callbackName, ...args) {\n    return this.subscriptions.map((subscription) =>\n      this.notify(subscription, callbackName, ...args))\n  }\n\n  notify(subscription, callbackName, ...args) {\n    let subscriptions\n    if (typeof subscription === \"string\") {\n      subscriptions = this.findAll(subscription)\n    } else {\n      subscriptions = [subscription]\n    }\n\n    return subscriptions.map((subscription) =>\n      (typeof subscription[callbackName] === \"function\" ? subscription[callbackName](...args) : undefined))\n  }\n\n  subscribe(subscription) {\n    if (this.sendCommand(subscription, \"subscribe\")) {\n      this.guarantor.guarantee(subscription)\n    }\n  }\n\n  confirmSubscription(identifier) {\n    logger.log(`Subscription confirmed ${identifier}`)\n    this.findAll(identifier).map((subscription) =>\n      this.guarantor.forget(subscription))\n  }\n\n  sendCommand(subscription, command) {\n    const {identifier} = subscription\n    return this.consumer.send({command, identifier})\n  }\n}\n", "import Connection from \"./connection\"\nimport Subscriptions from \"./subscriptions\"\n\n// The ActionCable.Consumer establishes the connection to a server-side Ruby Connection object. Once established,\n// the ActionCable.ConnectionMonitor will ensure that its properly maintained through heartbeats and checking for stale updates.\n// The Consumer instance is also the gateway to establishing subscriptions to desired channels through the #createSubscription\n// method.\n//\n// The following example shows how this can be set up:\n//\n//   App = {}\n//   App.cable = ActionCable.createConsumer(\"ws://example.com/accounts/1\")\n//   App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\")\n//\n// For more details on how you'd configure an actual channel subscription, see ActionCable.Subscription.\n//\n// When a consumer is created, it automatically connects with the server.\n//\n// To disconnect from the server, call\n//\n//   App.cable.disconnect()\n//\n// and to restart the connection:\n//\n//   App.cable.connect()\n//\n// Any channel subscriptions which existed prior to disconnecting will\n// automatically resubscribe.\n\nexport default class Consumer {\n  constructor(url) {\n    this._url = url\n    this.subscriptions = new Subscriptions(this)\n    this.connection = new Connection(this)\n  }\n\n  get url() {\n    return createWebSocketURL(this._url)\n  }\n\n  send(data) {\n    return this.connection.send(data)\n  }\n\n  connect() {\n    return this.connection.open()\n  }\n\n  disconnect() {\n    return this.connection.close({allowReconnect: false})\n  }\n\n  ensureActiveConnection() {\n    if (!this.connection.isActive()) {\n      return this.connection.open()\n    }\n  }\n}\n\nexport function createWebSocketURL(url) {\n  if (typeof url === \"function\") {\n    url = url()\n  }\n\n  if (url && !/^wss?:/i.test(url)) {\n    const a = document.createElement(\"a\")\n    a.href = url\n    // Fix populating Location properties in IE. Otherwise, protocol will be blank.\n    a.href = a.href\n    a.protocol = a.protocol.replace(\"http\", \"ws\")\n    return a.href\n  } else {\n    return url\n  }\n}\n", "import Connection from \"./connection\"\nimport ConnectionMonitor from \"./connection_monitor\"\nimport Consumer, { createWebSocketURL } from \"./consumer\"\nimport INTERNAL from \"./internal\"\nimport Subscription from \"./subscription\"\nimport Subscriptions from \"./subscriptions\"\nimport SubscriptionGuarantor from \"./subscription_guarantor\"\nimport adapters from \"./adapters\"\nimport logger from \"./logger\"\n\nexport {\n  Connection,\n  ConnectionMonitor,\n  Consumer,\n  INTERNAL,\n  Subscription,\n  Subscriptions,\n  SubscriptionGuarantor,\n  adapters,\n  createWebSocketURL,\n  logger,\n}\n\nexport function createConsumer(url = getConfig(\"url\") || INTERNAL.default_mount_path) {\n  return new Consumer(url)\n}\n\nexport function getConfig(name) {\n  const element = document.head.querySelector(`meta[name='action-cable-${name}']`)\n  if (element) {\n    return element.getAttribute(\"content\")\n  }\n}\n", "/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n    return (obj !== null &&\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.6\n * Minimalistic JavaScript library for DOM manipulation, with a jQuery-compatible API\n * https://framework7.io/docs/dom7.html\n *\n * Copyright 2023, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: February 2, 2023\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('<li') === 0) toCreate = 'ul';\n      if (html.indexOf('<tr') === 0) toCreate = 'tbody';\n      if (html.indexOf('<td') === 0 || html.indexOf('<th') === 0) toCreate = 'tr';\n      if (html.indexOf('<tbody') === 0) toCreate = 'table';\n      if (html.indexOf('<option') === 0) toCreate = 'select';\n      const tempParent = document.createElement(toCreate);\n      tempParent.innerHTML = html;\n\n      for (let i = 0; i < tempParent.childNodes.length; i += 1) {\n        arr.push(tempParent.childNodes[i]);\n      }\n    } else {\n      arr = qsa(selector.trim(), context || document);\n    } // arr = qsa(selector, document);\n\n  } else if (selector.nodeType || selector === window || selector === document) {\n    arr.push(selector);\n  } else if (Array.isArray(selector)) {\n    if (selector instanceof Dom7) return selector;\n    arr = selector;\n  }\n\n  return new Dom7(arrayUnique(arr));\n}\n\n$.fn = Dom7.prototype;\n\n// eslint-disable-next-line\n\nfunction addClass(...classes) {\n  const classNames = arrayFlat(classes.map(c => 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 transitionStart(callback) {\n  const dom = this;\n\n  function fireCallBack(e) {\n    if (e.target !== this) return;\n    callback.call(this, e);\n    dom.off('transitionstart', fireCallBack);\n  }\n\n  if (callback) {\n    dom.on('transitionstart', fireCallBack);\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, transitionStart, 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 = 0) {\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 = 'x') {\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(...args) {\n  const to = Object(args[0]);\n  const noExtend = ['__proto__', 'constructor', 'prototype'];\n\n  for (let i = 1; i < args.length; i += 1) {\n    const nextSource = args[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({\n  swiper,\n  targetPosition,\n  side\n}) {\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({\n  userAgent\n} = {}) {\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 (!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 };", "import { getWindow } from 'ssr-window';\nexport default function Resize({\n  swiper,\n  on,\n  emit\n}) {\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(({\n          contentBoxSize,\n          contentRect,\n          target\n        }) => {\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({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  const observers = [];\n  const window = getWindow();\n\n  const attach = (target, options = {}) => {\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}", "/* 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(...args) {\n      self.off(events, onceHandler);\n\n      if (onceHandler.__emitterProxy) {\n        delete onceHandler.__emitterProxy;\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(...args) {\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    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};", "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 = this && this.translate || 0) {\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 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};", "import { getTranslate } from '../../shared/utils.js';\nexport default function getSwiperTranslate(axis = this.isHorizontal() ? 'x' : 'y') {\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 = 0, speed = this.params.speed, runCallbacks = true, translateBounds = true, internal) {\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}", "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};", "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}", "export default function transitionEmit({\n  swiper,\n  runCallbacks,\n  direction,\n  step\n}) {\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 transitionEmit from './transitionEmit.js';\nexport default function transitionStart(runCallbacks = true, direction) {\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 = true, direction) {\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 setTransition from './setTransition.js';\nimport transitionStart from './transitionStart.js';\nimport transitionEnd from './transitionEnd.js';\nexport default {\n  setTransition,\n  transitionStart,\n  transitionEnd\n};", "import { animateCSSModeScroll } from '../../shared/utils.js';\nexport default function slideTo(index = 0, speed = this.params.speed, runCallbacks = true, internal, initial) {\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  const translate = -snapGrid[snapIndex]; // 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  if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n    swiper.emit('beforeSlideChangeStart');\n  } // Update progress\n\n\n  swiper.updateProgress(translate);\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 = 0, speed = this.params.speed, runCallbacks = true, internal) {\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 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 = this.params.speed, runCallbacks = true, internal) {\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 = this.params.speed, runCallbacks = true, internal) {\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 = this.params.speed, runCallbacks = true, internal) {\n  const swiper = this;\n  return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}", "/* eslint no-unused-vars: \"off\" */\nexport default function slideToClosest(speed = this.params.speed, runCallbacks = true, internal, threshold = 0.5) {\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 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 { 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 && swiper.params.loopedSlidesLimit) {\n    swiper.loopedSlides = slides.length;\n  }\n\n  const prependSlides = [];\n  const appendSlides = [];\n  slides.each((el, index) => {\n    const slide = $(el);\n    slide.attr('data-swiper-slide-index', index);\n  });\n\n  for (let i = 0; i < swiper.loopedSlides; i += 1) {\n    const index = i - Math.floor(i / slides.length) * slides.length;\n    appendSlides.push(slides.eq(index)[0]);\n    prependSlides.unshift(slides.eq(slides.length - index - 1)[0]);\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 loopCreate from './loopCreate.js';\nimport loopFix from './loopFix.js';\nimport loopDestroy from './loopDestroy.js';\nexport default {\n  loopCreate,\n  loopFix,\n  loopDestroy\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 setGrabCursor from './setGrabCursor.js';\nimport unsetGrabCursor from './unsetGrabCursor.js';\nexport default {\n  setGrabCursor,\n  unsetGrabCursor\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 = this) {\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 !== ''; // eslint-disable-next-line\n\n  const eventPath = event.composedPath ? event.composedPath() : event.path;\n\n  if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n    $targetEl = $(eventPath[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  } // Toggle navigation, pagination, scrollbar\n\n\n  ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n    const wasModuleEnabled = params[prop] && params[prop].enabled;\n    const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n\n    if (wasModuleEnabled && !isModuleEnabled) {\n      swiper[prop].disable();\n    }\n\n    if (!wasModuleEnabled && isModuleEnabled) {\n      swiper[prop].enable();\n    }\n  });\n  const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n  const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n\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 { getWindow } from 'ssr-window';\nexport default function getBreakpoint(breakpoints, base = 'window', containerEl) {\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 setBreakpoint from './setBreakpoint.js';\nimport getBreakpoint from './getBreakpoint.js';\nexport default {\n  setBreakpoint,\n  getBreakpoint\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}", "import addClasses from './addClasses.js';\nimport removeClasses from './removeClasses.js';\nexport default {\n  addClasses,\n  removeClasses\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 loadImage from './loadImage.js';\nimport preloadImages from './preloadImages.js';\nexport default {\n  loadImage,\n  preloadImages\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  loopedSlidesLimit: true,\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    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(...args) {\n    let el;\n    let params;\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      }); // eslint-disable-next-line no-constructor-return\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    // eslint-disable-next-line no-constructor-return\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 = 'current', exact = false) {\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 = true) {\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  changeLanguageDirection(direction) {\n    const swiper = this;\n    if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n    swiper.rtl = direction === 'rtl';\n    swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n\n    if (swiper.rtl) {\n      swiper.$el.addClass(`${swiper.params.containerModifierClass}rtl`);\n      swiper.el.dir = 'rtl';\n    } else {\n      swiper.$el.removeClass(`${swiper.params.containerModifierClass}rtl`);\n      swiper.el.dir = 'ltr';\n    }\n\n    swiper.update();\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 = true, cleanStyles = true) {\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 $ from '../../shared/dom.js';\nimport { setCSSProperty } from '../../shared/utils.js';\nexport default function Virtual({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  extendParams({\n    virtual: {\n      enabled: false,\n      slides: [],\n      cache: true,\n      renderSlide: null,\n      renderExternal: null,\n      renderExternalUpdate: true,\n      addSlidesBefore: 0,\n      addSlidesAfter: 0\n    }\n  });\n  let cssModeTimeout;\n  swiper.virtual = {\n    cache: {},\n    from: undefined,\n    to: undefined,\n    slides: [],\n    offset: 0,\n    slidesGrid: []\n  };\n\n  function renderSlide(slide, index) {\n    const params = swiper.params.virtual;\n\n    if (params.cache && swiper.virtual.cache[index]) {\n      return swiper.virtual.cache[index];\n    }\n\n    const $slideEl = params.renderSlide ? $(params.renderSlide.call(swiper, slide, index)) : $(`<div class=\"${swiper.params.slideClass}\" data-swiper-slide-index=\"${index}\">${slide}</div>`);\n    if (!$slideEl.attr('data-swiper-slide-index')) $slideEl.attr('data-swiper-slide-index', index);\n    if (params.cache) swiper.virtual.cache[index] = $slideEl;\n    return $slideEl;\n  }\n\n  function update(force) {\n    const {\n      slidesPerView,\n      slidesPerGroup,\n      centeredSlides\n    } = swiper.params;\n    const {\n      addSlidesBefore,\n      addSlidesAfter\n    } = swiper.params.virtual;\n    const {\n      from: previousFrom,\n      to: previousTo,\n      slides,\n      slidesGrid: previousSlidesGrid,\n      offset: previousOffset\n    } = swiper.virtual;\n\n    if (!swiper.params.cssMode) {\n      swiper.updateActiveIndex();\n    }\n\n    const activeIndex = swiper.activeIndex || 0;\n    let offsetProp;\n    if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n    let slidesAfter;\n    let slidesBefore;\n\n    if (centeredSlides) {\n      slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n      slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n    } else {\n      slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n      slidesBefore = slidesPerGroup + addSlidesBefore;\n    }\n\n    const from = Math.max((activeIndex || 0) - slidesBefore, 0);\n    const to = Math.min((activeIndex || 0) + slidesAfter, slides.length - 1);\n    const offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n    Object.assign(swiper.virtual, {\n      from,\n      to,\n      offset,\n      slidesGrid: swiper.slidesGrid\n    });\n\n    function onRendered() {\n      swiper.updateSlides();\n      swiper.updateProgress();\n      swiper.updateSlidesClasses();\n\n      if (swiper.lazy && swiper.params.lazy.enabled) {\n        swiper.lazy.load();\n      }\n\n      emit('virtualUpdate');\n    }\n\n    if (previousFrom === from && previousTo === to && !force) {\n      if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n        swiper.slides.css(offsetProp, `${offset}px`);\n      }\n\n      swiper.updateProgress();\n      emit('virtualUpdate');\n      return;\n    }\n\n    if (swiper.params.virtual.renderExternal) {\n      swiper.params.virtual.renderExternal.call(swiper, {\n        offset,\n        from,\n        to,\n        slides: function getSlides() {\n          const slidesToRender = [];\n\n          for (let i = from; i <= to; i += 1) {\n            slidesToRender.push(slides[i]);\n          }\n\n          return slidesToRender;\n        }()\n      });\n\n      if (swiper.params.virtual.renderExternalUpdate) {\n        onRendered();\n      } else {\n        emit('virtualUpdate');\n      }\n\n      return;\n    }\n\n    const prependIndexes = [];\n    const appendIndexes = [];\n\n    if (force) {\n      swiper.$wrapperEl.find(`.${swiper.params.slideClass}`).remove();\n    } else {\n      for (let i = previousFrom; i <= previousTo; i += 1) {\n        if (i < from || i > to) {\n          swiper.$wrapperEl.find(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${i}\"]`).remove();\n        }\n      }\n    }\n\n    for (let i = 0; i < slides.length; i += 1) {\n      if (i >= from && i <= to) {\n        if (typeof previousTo === 'undefined' || force) {\n          appendIndexes.push(i);\n        } else {\n          if (i > previousTo) appendIndexes.push(i);\n          if (i < previousFrom) prependIndexes.push(i);\n        }\n      }\n    }\n\n    appendIndexes.forEach(index => {\n      swiper.$wrapperEl.append(renderSlide(slides[index], index));\n    });\n    prependIndexes.sort((a, b) => b - a).forEach(index => {\n      swiper.$wrapperEl.prepend(renderSlide(slides[index], index));\n    });\n    swiper.$wrapperEl.children('.swiper-slide').css(offsetProp, `${offset}px`);\n    onRendered();\n  }\n\n  function appendSlide(slides) {\n    if (typeof slides === 'object' && 'length' in slides) {\n      for (let i = 0; i < slides.length; i += 1) {\n        if (slides[i]) swiper.virtual.slides.push(slides[i]);\n      }\n    } else {\n      swiper.virtual.slides.push(slides);\n    }\n\n    update(true);\n  }\n\n  function prependSlide(slides) {\n    const activeIndex = swiper.activeIndex;\n    let newActiveIndex = activeIndex + 1;\n    let numberOfNewSlides = 1;\n\n    if (Array.isArray(slides)) {\n      for (let i = 0; i < slides.length; i += 1) {\n        if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n      }\n\n      newActiveIndex = activeIndex + slides.length;\n      numberOfNewSlides = slides.length;\n    } else {\n      swiper.virtual.slides.unshift(slides);\n    }\n\n    if (swiper.params.virtual.cache) {\n      const cache = swiper.virtual.cache;\n      const newCache = {};\n      Object.keys(cache).forEach(cachedIndex => {\n        const $cachedEl = cache[cachedIndex];\n        const cachedElIndex = $cachedEl.attr('data-swiper-slide-index');\n\n        if (cachedElIndex) {\n          $cachedEl.attr('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);\n        }\n\n        newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = $cachedEl;\n      });\n      swiper.virtual.cache = newCache;\n    }\n\n    update(true);\n    swiper.slideTo(newActiveIndex, 0);\n  }\n\n  function removeSlide(slidesIndexes) {\n    if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n    let activeIndex = swiper.activeIndex;\n\n    if (Array.isArray(slidesIndexes)) {\n      for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n        swiper.virtual.slides.splice(slidesIndexes[i], 1);\n\n        if (swiper.params.virtual.cache) {\n          delete swiper.virtual.cache[slidesIndexes[i]];\n        }\n\n        if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n        activeIndex = Math.max(activeIndex, 0);\n      }\n    } else {\n      swiper.virtual.slides.splice(slidesIndexes, 1);\n\n      if (swiper.params.virtual.cache) {\n        delete swiper.virtual.cache[slidesIndexes];\n      }\n\n      if (slidesIndexes < activeIndex) activeIndex -= 1;\n      activeIndex = Math.max(activeIndex, 0);\n    }\n\n    update(true);\n    swiper.slideTo(activeIndex, 0);\n  }\n\n  function removeAllSlides() {\n    swiper.virtual.slides = [];\n\n    if (swiper.params.virtual.cache) {\n      swiper.virtual.cache = {};\n    }\n\n    update(true);\n    swiper.slideTo(0, 0);\n  }\n\n  on('beforeInit', () => {\n    if (!swiper.params.virtual.enabled) return;\n    swiper.virtual.slides = swiper.params.virtual.slides;\n    swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n    swiper.params.watchSlidesProgress = true;\n    swiper.originalParams.watchSlidesProgress = true;\n\n    if (!swiper.params.initialSlide) {\n      update();\n    }\n  });\n  on('setTranslate', () => {\n    if (!swiper.params.virtual.enabled) return;\n\n    if (swiper.params.cssMode && !swiper._immediateVirtual) {\n      clearTimeout(cssModeTimeout);\n      cssModeTimeout = setTimeout(() => {\n        update();\n      }, 100);\n    } else {\n      update();\n    }\n  });\n  on('init update resize', () => {\n    if (!swiper.params.virtual.enabled) return;\n\n    if (swiper.params.cssMode) {\n      setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n    }\n  });\n  Object.assign(swiper.virtual, {\n    appendSlide,\n    prependSlide,\n    removeSlide,\n    removeAllSlides,\n    update\n  });\n}", "/* eslint-disable consistent-return */\nimport { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function Keyboard({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  const document = getDocument();\n  const window = getWindow();\n  swiper.keyboard = {\n    enabled: false\n  };\n  extendParams({\n    keyboard: {\n      enabled: false,\n      onlyInViewport: true,\n      pageUpDown: true\n    }\n  });\n\n  function handle(event) {\n    if (!swiper.enabled) return;\n    const {\n      rtlTranslate: rtl\n    } = swiper;\n    let e = event;\n    if (e.originalEvent) e = e.originalEvent; // jquery fix\n\n    const kc = e.keyCode || e.charCode;\n    const pageUpDown = swiper.params.keyboard.pageUpDown;\n    const isPageUp = pageUpDown && kc === 33;\n    const isPageDown = pageUpDown && kc === 34;\n    const isArrowLeft = kc === 37;\n    const isArrowRight = kc === 39;\n    const isArrowUp = kc === 38;\n    const isArrowDown = kc === 40; // Directions locks\n\n    if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n      return false;\n    }\n\n    if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\n      return false;\n    }\n\n    if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n      return undefined;\n    }\n\n    if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n      return undefined;\n    }\n\n    if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n      let inView = false; // Check that swiper should be inside of visible area of window\n\n      if (swiper.$el.parents(`.${swiper.params.slideClass}`).length > 0 && swiper.$el.parents(`.${swiper.params.slideActiveClass}`).length === 0) {\n        return undefined;\n      }\n\n      const $el = swiper.$el;\n      const swiperWidth = $el[0].clientWidth;\n      const swiperHeight = $el[0].clientHeight;\n      const windowWidth = window.innerWidth;\n      const windowHeight = window.innerHeight;\n      const swiperOffset = swiper.$el.offset();\n      if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n      const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];\n\n      for (let i = 0; i < swiperCoord.length; i += 1) {\n        const point = swiperCoord[i];\n\n        if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n          if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n\n          inView = true;\n        }\n      }\n\n      if (!inView) return undefined;\n    }\n\n    if (swiper.isHorizontal()) {\n      if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n        if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n      }\n\n      if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n      if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n    } else {\n      if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n        if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n      }\n\n      if (isPageDown || isArrowDown) swiper.slideNext();\n      if (isPageUp || isArrowUp) swiper.slidePrev();\n    }\n\n    emit('keyPress', kc);\n    return undefined;\n  }\n\n  function enable() {\n    if (swiper.keyboard.enabled) return;\n    $(document).on('keydown', handle);\n    swiper.keyboard.enabled = true;\n  }\n\n  function disable() {\n    if (!swiper.keyboard.enabled) return;\n    $(document).off('keydown', handle);\n    swiper.keyboard.enabled = false;\n  }\n\n  on('init', () => {\n    if (swiper.params.keyboard.enabled) {\n      enable();\n    }\n  });\n  on('destroy', () => {\n    if (swiper.keyboard.enabled) {\n      disable();\n    }\n  });\n  Object.assign(swiper.keyboard, {\n    enable,\n    disable\n  });\n}", "/* eslint-disable consistent-return */\nimport { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { now, nextTick } from '../../shared/utils.js';\nexport default function Mousewheel({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  const window = getWindow();\n  extendParams({\n    mousewheel: {\n      enabled: false,\n      releaseOnEdges: false,\n      invert: false,\n      forceToAxis: false,\n      sensitivity: 1,\n      eventsTarget: 'container',\n      thresholdDelta: null,\n      thresholdTime: null\n    }\n  });\n  swiper.mousewheel = {\n    enabled: false\n  };\n  let timeout;\n  let lastScrollTime = now();\n  let lastEventBeforeSnap;\n  const recentWheelEvents = [];\n\n  function normalize(e) {\n    // Reasonable defaults\n    const PIXEL_STEP = 10;\n    const LINE_HEIGHT = 40;\n    const PAGE_HEIGHT = 800;\n    let sX = 0;\n    let sY = 0; // spinX, spinY\n\n    let pX = 0;\n    let pY = 0; // pixelX, pixelY\n    // Legacy\n\n    if ('detail' in e) {\n      sY = e.detail;\n    }\n\n    if ('wheelDelta' in e) {\n      sY = -e.wheelDelta / 120;\n    }\n\n    if ('wheelDeltaY' in e) {\n      sY = -e.wheelDeltaY / 120;\n    }\n\n    if ('wheelDeltaX' in e) {\n      sX = -e.wheelDeltaX / 120;\n    } // side scrolling on FF with DOMMouseScroll\n\n\n    if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n      sX = sY;\n      sY = 0;\n    }\n\n    pX = sX * PIXEL_STEP;\n    pY = sY * PIXEL_STEP;\n\n    if ('deltaY' in e) {\n      pY = e.deltaY;\n    }\n\n    if ('deltaX' in e) {\n      pX = e.deltaX;\n    }\n\n    if (e.shiftKey && !pX) {\n      // if user scrolls with shift he wants horizontal scroll\n      pX = pY;\n      pY = 0;\n    }\n\n    if ((pX || pY) && e.deltaMode) {\n      if (e.deltaMode === 1) {\n        // delta in LINE units\n        pX *= LINE_HEIGHT;\n        pY *= LINE_HEIGHT;\n      } else {\n        // delta in PAGE units\n        pX *= PAGE_HEIGHT;\n        pY *= PAGE_HEIGHT;\n      }\n    } // Fall-back if spin cannot be determined\n\n\n    if (pX && !sX) {\n      sX = pX < 1 ? -1 : 1;\n    }\n\n    if (pY && !sY) {\n      sY = pY < 1 ? -1 : 1;\n    }\n\n    return {\n      spinX: sX,\n      spinY: sY,\n      pixelX: pX,\n      pixelY: pY\n    };\n  }\n\n  function handleMouseEnter() {\n    if (!swiper.enabled) return;\n    swiper.mouseEntered = true;\n  }\n\n  function handleMouseLeave() {\n    if (!swiper.enabled) return;\n    swiper.mouseEntered = false;\n  }\n\n  function animateSlider(newEvent) {\n    if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {\n      // Prevent if delta of wheel scroll delta is below configured threshold\n      return false;\n    }\n\n    if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {\n      // Prevent if time between scrolls is below configured threshold\n      return false;\n    } // If the movement is NOT big enough and\n    // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n    //   Don't go any further (avoid insignificant scroll movement).\n\n\n    if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n      // Return false as a default\n      return true;\n    } // If user is scrolling towards the end:\n    //   If the slider hasn't hit the latest slide or\n    //   if the slider is a loop and\n    //   if the slider isn't moving right now:\n    //     Go to next slide and\n    //     emit a scroll event.\n    // Else (the user is scrolling towards the beginning) and\n    // if the slider hasn't hit the first slide or\n    // if the slider is a loop and\n    // if the slider isn't moving right now:\n    //   Go to prev slide and\n    //   emit a scroll event.\n\n\n    if (newEvent.direction < 0) {\n      if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n        swiper.slideNext();\n        emit('scroll', newEvent.raw);\n      }\n    } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n      swiper.slidePrev();\n      emit('scroll', newEvent.raw);\n    } // If you got here is because an animation has been triggered so store the current time\n\n\n    lastScrollTime = new window.Date().getTime(); // Return false as a default\n\n    return false;\n  }\n\n  function releaseScroll(newEvent) {\n    const params = swiper.params.mousewheel;\n\n    if (newEvent.direction < 0) {\n      if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n        // Return true to animate scroll on edges\n        return true;\n      }\n    } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n      // Return true to animate scroll on edges\n      return true;\n    }\n\n    return false;\n  }\n\n  function handle(event) {\n    let e = event;\n    let disableParentSwiper = true;\n    if (!swiper.enabled) return;\n    const params = swiper.params.mousewheel;\n\n    if (swiper.params.cssMode) {\n      e.preventDefault();\n    }\n\n    let target = swiper.$el;\n\n    if (swiper.params.mousewheel.eventsTarget !== 'container') {\n      target = $(swiper.params.mousewheel.eventsTarget);\n    }\n\n    if (!swiper.mouseEntered && !target[0].contains(e.target) && !params.releaseOnEdges) return true;\n    if (e.originalEvent) e = e.originalEvent; // jquery fix\n\n    let delta = 0;\n    const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n    const data = normalize(e);\n\n    if (params.forceToAxis) {\n      if (swiper.isHorizontal()) {\n        if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;\n      } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;\n    } else {\n      delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n    }\n\n    if (delta === 0) return true;\n    if (params.invert) delta = -delta; // Get the scroll positions\n\n    let positions = swiper.getTranslate() + delta * params.sensitivity;\n    if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n    if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); // When loop is true:\n    //     the disableParentSwiper will be true.\n    // When loop is false:\n    //     if the scroll positions is not on edge,\n    //     then the disableParentSwiper will be true.\n    //     if the scroll on edge positions,\n    //     then the disableParentSwiper will be false.\n\n    disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n    if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n\n    if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n      // Register the new event in a variable which stores the relevant data\n      const newEvent = {\n        time: now(),\n        delta: Math.abs(delta),\n        direction: Math.sign(delta),\n        raw: event\n      }; // Keep the most recent events\n\n      if (recentWheelEvents.length >= 2) {\n        recentWheelEvents.shift(); // only store the last N events\n      }\n\n      const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n      recentWheelEvents.push(newEvent); // If there is at least one previous recorded event:\n      //   If direction has changed or\n      //   if the scroll is quicker than the previous one:\n      //     Animate the slider.\n      // Else (this is the first time the wheel is moved):\n      //     Animate the slider.\n\n      if (prevEvent) {\n        if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n          animateSlider(newEvent);\n        }\n      } else {\n        animateSlider(newEvent);\n      } // If it's time to release the scroll:\n      //   Return now so you don't hit the preventDefault.\n\n\n      if (releaseScroll(newEvent)) {\n        return true;\n      }\n    } else {\n      // Freemode or scrollContainer:\n      // If we recently snapped after a momentum scroll, then ignore wheel events\n      // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n      // or if it's a new scroll (larger delta or inverse sign as last event before\n      // an end-of-momentum snap).\n      const newEvent = {\n        time: now(),\n        delta: Math.abs(delta),\n        direction: Math.sign(delta)\n      };\n      const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\n\n      if (!ignoreWheelEvents) {\n        lastEventBeforeSnap = undefined;\n\n        if (swiper.params.loop) {\n          swiper.loopFix();\n        }\n\n        let position = swiper.getTranslate() + delta * params.sensitivity;\n        const wasBeginning = swiper.isBeginning;\n        const wasEnd = swiper.isEnd;\n        if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n        if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n        swiper.setTransition(0);\n        swiper.setTranslate(position);\n        swiper.updateProgress();\n        swiper.updateActiveIndex();\n        swiper.updateSlidesClasses();\n\n        if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\n          swiper.updateSlidesClasses();\n        }\n\n        if (swiper.params.freeMode.sticky) {\n          // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n          // the end of a momentum scroll by storing recent (N=15?) wheel events.\n          // 1. do all N events have decreasing or same (absolute value) delta?\n          // 2. did all N events arrive in the last M (M=500?) msecs?\n          // 3. does the earliest event have an (absolute value) delta that's\n          //    at least P (P=1?) larger than the most recent event's delta?\n          // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n          // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n          // Snap immediately and ignore remaining wheel events in this scroll.\n          // See comment above for \"remaining wheel events in this scroll\" determination.\n          // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n          clearTimeout(timeout);\n          timeout = undefined;\n\n          if (recentWheelEvents.length >= 15) {\n            recentWheelEvents.shift(); // only store the last N events\n          }\n\n          const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n          const firstEvent = recentWheelEvents[0];\n          recentWheelEvents.push(newEvent);\n\n          if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n            // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n            recentWheelEvents.splice(0);\n          } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\n            // We're at the end of the deceleration of a momentum scroll, so there's no need\n            // to wait for more events. Snap ASAP on the next tick.\n            // Also, because there's some remaining momentum we'll bias the snap in the\n            // direction of the ongoing scroll because it's better UX for the scroll to snap\n            // in the same direction as the scroll instead of reversing to snap.  Therefore,\n            // if it's already scrolled more than 20% in the current direction, keep going.\n            const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n            lastEventBeforeSnap = newEvent;\n            recentWheelEvents.splice(0);\n            timeout = nextTick(() => {\n              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n            }, 0); // no delay; move on next tick\n          }\n\n          if (!timeout) {\n            // if we get here, then we haven't detected the end of a momentum scroll, so\n            // we'll consider a scroll \"complete\" when there haven't been any wheel events\n            // for 500ms.\n            timeout = nextTick(() => {\n              const snapToThreshold = 0.5;\n              lastEventBeforeSnap = newEvent;\n              recentWheelEvents.splice(0);\n              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n            }, 500);\n          }\n        } // Emit event\n\n\n        if (!ignoreWheelEvents) emit('scroll', e); // Stop autoplay\n\n        if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); // Return page scroll on edge positions\n\n        if (position === swiper.minTranslate() || position === swiper.maxTranslate()) return true;\n      }\n    }\n\n    if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n    return false;\n  }\n\n  function events(method) {\n    let target = swiper.$el;\n\n    if (swiper.params.mousewheel.eventsTarget !== 'container') {\n      target = $(swiper.params.mousewheel.eventsTarget);\n    }\n\n    target[method]('mouseenter', handleMouseEnter);\n    target[method]('mouseleave', handleMouseLeave);\n    target[method]('wheel', handle);\n  }\n\n  function enable() {\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.removeEventListener('wheel', handle);\n      return true;\n    }\n\n    if (swiper.mousewheel.enabled) return false;\n    events('on');\n    swiper.mousewheel.enabled = true;\n    return true;\n  }\n\n  function disable() {\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.addEventListener(event, handle);\n      return true;\n    }\n\n    if (!swiper.mousewheel.enabled) return false;\n    events('off');\n    swiper.mousewheel.enabled = false;\n    return true;\n  }\n\n  on('init', () => {\n    if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n      disable();\n    }\n\n    if (swiper.params.mousewheel.enabled) enable();\n  });\n  on('destroy', () => {\n    if (swiper.params.cssMode) {\n      enable();\n    }\n\n    if (swiper.mousewheel.enabled) disable();\n  });\n  Object.assign(swiper.mousewheel, {\n    enable,\n    disable\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({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  extendParams({\n    navigation: {\n      nextEl: null,\n      prevEl: null,\n      hideOnClick: false,\n      disabledClass: 'swiper-button-disabled',\n      hiddenClass: 'swiper-button-hidden',\n      lockClass: 'swiper-button-lock',\n      navigationDisabledClass: 'swiper-navigation-disabled'\n    }\n  });\n  swiper.navigation = {\n    nextEl: null,\n    $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    emit('navigationPrev');\n  }\n\n  function onNextClick(e) {\n    e.preventDefault();\n    if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n    swiper.slideNext();\n    emit('navigationNext');\n  }\n\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    if (swiper.params.navigation.enabled === false) {\n      // eslint-disable-next-line\n      disable();\n    } else {\n      init();\n      update();\n    }\n  });\n  on('toEdge fromEdge lock unlock', () => {\n    update();\n  });\n  on('destroy', () => {\n    destroy();\n  });\n  on('enable disable', () => {\n    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\n  const enable = () => {\n    swiper.$el.removeClass(swiper.params.navigation.navigationDisabledClass);\n    init();\n    update();\n  };\n\n  const disable = () => {\n    swiper.$el.addClass(swiper.params.navigation.navigationDisabledClass);\n    destroy();\n  };\n\n  Object.assign(swiper.navigation, {\n    enable,\n    disable,\n    update,\n    init,\n    destroy\n  });\n}", "export default function classesToSelector(classes = '') {\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({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  const pfx = 'swiper-pagination';\n  extendParams({\n    pagination: {\n      el: null,\n      bulletElement: 'span',\n      clickable: false,\n      hideOnClick: false,\n      renderBullet: null,\n      renderProgressbar: null,\n      renderFraction: null,\n      renderCustom: null,\n      progressbarOpposite: false,\n      type: 'bullets',\n      // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n      dynamicBullets: false,\n      dynamicMainBullets: 1,\n      formatFractionCurrent: number => number,\n      formatFractionTotal: number => number,\n      bulletClass: `${pfx}-bullet`,\n      bulletActiveClass: `${pfx}-bullet-active`,\n      modifierClass: `${pfx}-`,\n      currentClass: `${pfx}-current`,\n      totalClass: `${pfx}-total`,\n      hiddenClass: `${pfx}-hidden`,\n      progressbarFillClass: `${pfx}-progressbar-fill`,\n      progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n      clickableClass: `${pfx}-clickable`,\n      lockClass: `${pfx}-lock`,\n      horizontalClass: `${pfx}-horizontal`,\n      verticalClass: `${pfx}-vertical`,\n      paginationDisabledClass: `${pfx}-disabled`\n    }\n  });\n  swiper.pagination = {\n    el: null,\n    $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}\"></${params.bulletElement}>`;\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 = `<span class=\"${params.currentClass}\"></span>` + ' / ' + `<span class=\"${params.totalClass}\"></span>`;\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 = `<span class=\"${params.progressbarFillClass}\"></span>`;\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    if (swiper.params.pagination.enabled === false) {\n      // eslint-disable-next-line\n      disable();\n    } else {\n      init();\n      render();\n      update();\n    }\n  });\n  on('activeIndexChange', () => {\n    if (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 && $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\n  const enable = () => {\n    swiper.$el.removeClass(swiper.params.pagination.paginationDisabledClass);\n\n    if (swiper.pagination.$el) {\n      swiper.pagination.$el.removeClass(swiper.params.pagination.paginationDisabledClass);\n    }\n\n    init();\n    render();\n    update();\n  };\n\n  const disable = () => {\n    swiper.$el.addClass(swiper.params.pagination.paginationDisabledClass);\n\n    if (swiper.pagination.$el) {\n      swiper.pagination.$el.addClass(swiper.params.pagination.paginationDisabledClass);\n    }\n\n    destroy();\n  };\n\n  Object.assign(swiper.pagination, {\n    enable,\n    disable,\n    render,\n    update,\n    init,\n    destroy\n  });\n}", "import { getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { nextTick } from '../../shared/utils.js';\nimport createElementIfNotDefined from '../../shared/create-element-if-not-defined.js';\nexport default function Scrollbar({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  const document = getDocument();\n  let isTouched = false;\n  let timeout = null;\n  let dragTimeout = null;\n  let dragStartPos;\n  let dragSize;\n  let trackSize;\n  let divider;\n  extendParams({\n    scrollbar: {\n      el: null,\n      dragSize: 'auto',\n      hide: false,\n      draggable: false,\n      snapOnRelease: true,\n      lockClass: 'swiper-scrollbar-lock',\n      dragClass: 'swiper-scrollbar-drag',\n      scrollbarDisabledClass: 'swiper-scrollbar-disabled',\n      horizontalClass: `swiper-scrollbar-horizontal`,\n      verticalClass: `swiper-scrollbar-vertical`\n    }\n  });\n  swiper.scrollbar = {\n    el: null,\n    dragEl: null,\n    $el: null,\n    $dragEl: null\n  };\n\n  function setTranslate() {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    const {\n      scrollbar,\n      rtlTranslate: rtl,\n      progress\n    } = swiper;\n    const {\n      $dragEl,\n      $el\n    } = scrollbar;\n    const params = swiper.params.scrollbar;\n    let newSize = dragSize;\n    let newPos = (trackSize - dragSize) * progress;\n\n    if (rtl) {\n      newPos = -newPos;\n\n      if (newPos > 0) {\n        newSize = dragSize - newPos;\n        newPos = 0;\n      } else if (-newPos + dragSize > trackSize) {\n        newSize = trackSize + newPos;\n      }\n    } else if (newPos < 0) {\n      newSize = dragSize + newPos;\n      newPos = 0;\n    } else if (newPos + dragSize > trackSize) {\n      newSize = trackSize - newPos;\n    }\n\n    if (swiper.isHorizontal()) {\n      $dragEl.transform(`translate3d(${newPos}px, 0, 0)`);\n      $dragEl[0].style.width = `${newSize}px`;\n    } else {\n      $dragEl.transform(`translate3d(0px, ${newPos}px, 0)`);\n      $dragEl[0].style.height = `${newSize}px`;\n    }\n\n    if (params.hide) {\n      clearTimeout(timeout);\n      $el[0].style.opacity = 1;\n      timeout = setTimeout(() => {\n        $el[0].style.opacity = 0;\n        $el.transition(400);\n      }, 1000);\n    }\n  }\n\n  function setTransition(duration) {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    swiper.scrollbar.$dragEl.transition(duration);\n  }\n\n  function updateSize() {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    const {\n      scrollbar\n    } = swiper;\n    const {\n      $dragEl,\n      $el\n    } = scrollbar;\n    $dragEl[0].style.width = '';\n    $dragEl[0].style.height = '';\n    trackSize = swiper.isHorizontal() ? $el[0].offsetWidth : $el[0].offsetHeight;\n    divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n\n    if (swiper.params.scrollbar.dragSize === 'auto') {\n      dragSize = trackSize * divider;\n    } else {\n      dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n    }\n\n    if (swiper.isHorizontal()) {\n      $dragEl[0].style.width = `${dragSize}px`;\n    } else {\n      $dragEl[0].style.height = `${dragSize}px`;\n    }\n\n    if (divider >= 1) {\n      $el[0].style.display = 'none';\n    } else {\n      $el[0].style.display = '';\n    }\n\n    if (swiper.params.scrollbar.hide) {\n      $el[0].style.opacity = 0;\n    }\n\n    if (swiper.params.watchOverflow && swiper.enabled) {\n      scrollbar.$el[swiper.isLocked ? 'addClass' : 'removeClass'](swiper.params.scrollbar.lockClass);\n    }\n  }\n\n  function getPointerPosition(e) {\n    if (swiper.isHorizontal()) {\n      return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientX : e.clientX;\n    }\n\n    return e.type === 'touchstart' || e.type === 'touchmove' ? e.targetTouches[0].clientY : e.clientY;\n  }\n\n  function setDragPosition(e) {\n    const {\n      scrollbar,\n      rtlTranslate: rtl\n    } = swiper;\n    const {\n      $el\n    } = scrollbar;\n    let positionRatio;\n    positionRatio = (getPointerPosition(e) - $el.offset()[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n    positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n\n    if (rtl) {\n      positionRatio = 1 - positionRatio;\n    }\n\n    const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n    swiper.updateProgress(position);\n    swiper.setTranslate(position);\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n\n  function onDragStart(e) {\n    const params = swiper.params.scrollbar;\n    const {\n      scrollbar,\n      $wrapperEl\n    } = swiper;\n    const {\n      $el,\n      $dragEl\n    } = scrollbar;\n    isTouched = true;\n    dragStartPos = e.target === $dragEl[0] || e.target === $dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n    e.preventDefault();\n    e.stopPropagation();\n    $wrapperEl.transition(100);\n    $dragEl.transition(100);\n    setDragPosition(e);\n    clearTimeout(dragTimeout);\n    $el.transition(0);\n\n    if (params.hide) {\n      $el.css('opacity', 1);\n    }\n\n    if (swiper.params.cssMode) {\n      swiper.$wrapperEl.css('scroll-snap-type', 'none');\n    }\n\n    emit('scrollbarDragStart', e);\n  }\n\n  function onDragMove(e) {\n    const {\n      scrollbar,\n      $wrapperEl\n    } = swiper;\n    const {\n      $el,\n      $dragEl\n    } = scrollbar;\n    if (!isTouched) return;\n    if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n    setDragPosition(e);\n    $wrapperEl.transition(0);\n    $el.transition(0);\n    $dragEl.transition(0);\n    emit('scrollbarDragMove', e);\n  }\n\n  function onDragEnd(e) {\n    const params = swiper.params.scrollbar;\n    const {\n      scrollbar,\n      $wrapperEl\n    } = swiper;\n    const {\n      $el\n    } = scrollbar;\n    if (!isTouched) return;\n    isTouched = false;\n\n    if (swiper.params.cssMode) {\n      swiper.$wrapperEl.css('scroll-snap-type', '');\n      $wrapperEl.transition('');\n    }\n\n    if (params.hide) {\n      clearTimeout(dragTimeout);\n      dragTimeout = nextTick(() => {\n        $el.css('opacity', 0);\n        $el.transition(400);\n      }, 1000);\n    }\n\n    emit('scrollbarDragEnd', e);\n\n    if (params.snapOnRelease) {\n      swiper.slideToClosest();\n    }\n  }\n\n  function events(method) {\n    const {\n      scrollbar,\n      touchEventsTouch,\n      touchEventsDesktop,\n      params,\n      support\n    } = swiper;\n    const $el = scrollbar.$el;\n    if (!$el) return;\n    const target = $el[0];\n    const activeListener = support.passiveListener && params.passiveListeners ? {\n      passive: false,\n      capture: false\n    } : false;\n    const passiveListener = support.passiveListener && params.passiveListeners ? {\n      passive: true,\n      capture: false\n    } : false;\n    if (!target) return;\n    const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n\n    if (!support.touch) {\n      target[eventMethod](touchEventsDesktop.start, onDragStart, activeListener);\n      document[eventMethod](touchEventsDesktop.move, onDragMove, activeListener);\n      document[eventMethod](touchEventsDesktop.end, onDragEnd, passiveListener);\n    } else {\n      target[eventMethod](touchEventsTouch.start, onDragStart, activeListener);\n      target[eventMethod](touchEventsTouch.move, onDragMove, activeListener);\n      target[eventMethod](touchEventsTouch.end, onDragEnd, passiveListener);\n    }\n  }\n\n  function enableDraggable() {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    events('on');\n  }\n\n  function disableDraggable() {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    events('off');\n  }\n\n  function init() {\n    const {\n      scrollbar,\n      $el: $swiperEl\n    } = swiper;\n    swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n      el: 'swiper-scrollbar'\n    });\n    const params = swiper.params.scrollbar;\n    if (!params.el) return;\n    let $el = $(params.el);\n\n    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && $el.length > 1 && $swiperEl.find(params.el).length === 1) {\n      $el = $swiperEl.find(params.el);\n    }\n\n    $el.addClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n    let $dragEl = $el.find(`.${swiper.params.scrollbar.dragClass}`);\n\n    if ($dragEl.length === 0) {\n      $dragEl = $(`<div class=\"${swiper.params.scrollbar.dragClass}\"></div>`);\n      $el.append($dragEl);\n    }\n\n    Object.assign(scrollbar, {\n      $el,\n      el: $el[0],\n      $dragEl,\n      dragEl: $dragEl[0]\n    });\n\n    if (params.draggable) {\n      enableDraggable();\n    }\n\n    if ($el) {\n      $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n    }\n  }\n\n  function destroy() {\n    const params = swiper.params.scrollbar;\n    const $el = swiper.scrollbar.$el;\n\n    if ($el) {\n      $el.removeClass(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n    }\n\n    disableDraggable();\n  }\n\n  on('init', () => {\n    if (swiper.params.scrollbar.enabled === false) {\n      // eslint-disable-next-line\n      disable();\n    } else {\n      init();\n      updateSize();\n      setTranslate();\n    }\n  });\n  on('update resize observerUpdate lock unlock', () => {\n    updateSize();\n  });\n  on('setTranslate', () => {\n    setTranslate();\n  });\n  on('setTransition', (_s, duration) => {\n    setTransition(duration);\n  });\n  on('enable disable', () => {\n    const {\n      $el\n    } = swiper.scrollbar;\n\n    if ($el) {\n      $el[swiper.enabled ? 'removeClass' : 'addClass'](swiper.params.scrollbar.lockClass);\n    }\n  });\n  on('destroy', () => {\n    destroy();\n  });\n\n  const enable = () => {\n    swiper.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass);\n\n    if (swiper.scrollbar.$el) {\n      swiper.scrollbar.$el.removeClass(swiper.params.scrollbar.scrollbarDisabledClass);\n    }\n\n    init();\n    updateSize();\n    setTranslate();\n  };\n\n  const disable = () => {\n    swiper.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass);\n\n    if (swiper.scrollbar.$el) {\n      swiper.scrollbar.$el.addClass(swiper.params.scrollbar.scrollbarDisabledClass);\n    }\n\n    destroy();\n  };\n\n  Object.assign(swiper.scrollbar, {\n    enable,\n    disable,\n    updateSize,\n    setTranslate,\n    init,\n    destroy\n  });\n}", "import $ from '../../shared/dom.js';\nexport default function Parallax({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    parallax: {\n      enabled: false\n    }\n  });\n\n  const setTransform = (el, progress) => {\n    const {\n      rtl\n    } = swiper;\n    const $el = $(el);\n    const rtlFactor = rtl ? -1 : 1;\n    const p = $el.attr('data-swiper-parallax') || '0';\n    let x = $el.attr('data-swiper-parallax-x');\n    let y = $el.attr('data-swiper-parallax-y');\n    const scale = $el.attr('data-swiper-parallax-scale');\n    const opacity = $el.attr('data-swiper-parallax-opacity');\n\n    if (x || y) {\n      x = x || '0';\n      y = y || '0';\n    } else if (swiper.isHorizontal()) {\n      x = p;\n      y = '0';\n    } else {\n      y = p;\n      x = '0';\n    }\n\n    if (x.indexOf('%') >= 0) {\n      x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n    } else {\n      x = `${x * progress * rtlFactor}px`;\n    }\n\n    if (y.indexOf('%') >= 0) {\n      y = `${parseInt(y, 10) * progress}%`;\n    } else {\n      y = `${y * progress}px`;\n    }\n\n    if (typeof opacity !== 'undefined' && opacity !== null) {\n      const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n      $el[0].style.opacity = currentOpacity;\n    }\n\n    if (typeof scale === 'undefined' || scale === null) {\n      $el.transform(`translate3d(${x}, ${y}, 0px)`);\n    } else {\n      const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n      $el.transform(`translate3d(${x}, ${y}, 0px) scale(${currentScale})`);\n    }\n  };\n\n  const setTranslate = () => {\n    const {\n      $el,\n      slides,\n      progress,\n      snapGrid\n    } = swiper;\n    $el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => {\n      setTransform(el, progress);\n    });\n    slides.each((slideEl, slideIndex) => {\n      let slideProgress = slideEl.progress;\n\n      if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n        slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n      }\n\n      slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n      $(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(el => {\n        setTransform(el, slideProgress);\n      });\n    });\n  };\n\n  const setTransition = (duration = swiper.params.speed) => {\n    const {\n      $el\n    } = swiper;\n    $el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(parallaxEl => {\n      const $parallaxEl = $(parallaxEl);\n      let parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;\n      if (duration === 0) parallaxDuration = 0;\n      $parallaxEl.transition(parallaxDuration);\n    });\n  };\n\n  on('beforeInit', () => {\n    if (!swiper.params.parallax.enabled) return;\n    swiper.params.watchSlidesProgress = true;\n    swiper.originalParams.watchSlidesProgress = true;\n  });\n  on('init', () => {\n    if (!swiper.params.parallax.enabled) return;\n    setTranslate();\n  });\n  on('setTranslate', () => {\n    if (!swiper.params.parallax.enabled) return;\n    setTranslate();\n  });\n  on('setTransition', (_swiper, duration) => {\n    if (!swiper.params.parallax.enabled) return;\n    setTransition(duration);\n  });\n}", "import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nimport { getTranslate } from '../../shared/utils.js';\nexport default function Zoom({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  const window = getWindow();\n  extendParams({\n    zoom: {\n      enabled: false,\n      maxRatio: 3,\n      minRatio: 1,\n      toggle: true,\n      containerClass: 'swiper-zoom-container',\n      zoomedSlideClass: 'swiper-slide-zoomed'\n    }\n  });\n  swiper.zoom = {\n    enabled: false\n  };\n  let currentScale = 1;\n  let isScaling = false;\n  let gesturesEnabled;\n  let fakeGestureTouched;\n  let fakeGestureMoved;\n  const gesture = {\n    $slideEl: undefined,\n    slideWidth: undefined,\n    slideHeight: undefined,\n    $imageEl: undefined,\n    $imageWrapEl: undefined,\n    maxRatio: 3\n  };\n  const image = {\n    isTouched: undefined,\n    isMoved: undefined,\n    currentX: undefined,\n    currentY: undefined,\n    minX: undefined,\n    minY: undefined,\n    maxX: undefined,\n    maxY: undefined,\n    width: undefined,\n    height: undefined,\n    startX: undefined,\n    startY: undefined,\n    touchesStart: {},\n    touchesCurrent: {}\n  };\n  const velocity = {\n    x: undefined,\n    y: undefined,\n    prevPositionX: undefined,\n    prevPositionY: undefined,\n    prevTime: undefined\n  };\n  let scale = 1;\n  Object.defineProperty(swiper.zoom, 'scale', {\n    get() {\n      return scale;\n    },\n\n    set(value) {\n      if (scale !== value) {\n        const imageEl = gesture.$imageEl ? gesture.$imageEl[0] : undefined;\n        const slideEl = gesture.$slideEl ? gesture.$slideEl[0] : undefined;\n        emit('zoomChange', value, imageEl, slideEl);\n      }\n\n      scale = value;\n    }\n\n  });\n\n  function getDistanceBetweenTouches(e) {\n    if (e.targetTouches.length < 2) return 1;\n    const x1 = e.targetTouches[0].pageX;\n    const y1 = e.targetTouches[0].pageY;\n    const x2 = e.targetTouches[1].pageX;\n    const y2 = e.targetTouches[1].pageY;\n    const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n    return distance;\n  } // Events\n\n\n  function onGestureStart(e) {\n    const support = swiper.support;\n    const params = swiper.params.zoom;\n    fakeGestureTouched = false;\n    fakeGestureMoved = false;\n\n    if (!support.gestures) {\n      if (e.type !== 'touchstart' || e.type === 'touchstart' && e.targetTouches.length < 2) {\n        return;\n      }\n\n      fakeGestureTouched = true;\n      gesture.scaleStart = getDistanceBetweenTouches(e);\n    }\n\n    if (!gesture.$slideEl || !gesture.$slideEl.length) {\n      gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n      if (gesture.$slideEl.length === 0) gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n      gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);\n      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n      gesture.maxRatio = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n\n      if (gesture.$imageWrapEl.length === 0) {\n        gesture.$imageEl = undefined;\n        return;\n      }\n    }\n\n    if (gesture.$imageEl) {\n      gesture.$imageEl.transition(0);\n    }\n\n    isScaling = true;\n  }\n\n  function onGestureChange(e) {\n    const support = swiper.support;\n    const params = swiper.params.zoom;\n    const zoom = swiper.zoom;\n\n    if (!support.gestures) {\n      if (e.type !== 'touchmove' || e.type === 'touchmove' && e.targetTouches.length < 2) {\n        return;\n      }\n\n      fakeGestureMoved = true;\n      gesture.scaleMove = getDistanceBetweenTouches(e);\n    }\n\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) {\n      if (e.type === 'gesturechange') onGestureStart(e);\n      return;\n    }\n\n    if (support.gestures) {\n      zoom.scale = e.scale * currentScale;\n    } else {\n      zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n    }\n\n    if (zoom.scale > gesture.maxRatio) {\n      zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n    }\n\n    if (zoom.scale < params.minRatio) {\n      zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n    }\n\n    gesture.$imageEl.transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n  }\n\n  function onGestureEnd(e) {\n    const device = swiper.device;\n    const support = swiper.support;\n    const params = swiper.params.zoom;\n    const zoom = swiper.zoom;\n\n    if (!support.gestures) {\n      if (!fakeGestureTouched || !fakeGestureMoved) {\n        return;\n      }\n\n      if (e.type !== 'touchend' || e.type === 'touchend' && e.changedTouches.length < 2 && !device.android) {\n        return;\n      }\n\n      fakeGestureTouched = false;\n      fakeGestureMoved = false;\n    }\n\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n    gesture.$imageEl.transition(swiper.params.speed).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n    currentScale = zoom.scale;\n    isScaling = false;\n    if (zoom.scale === 1) gesture.$slideEl = undefined;\n  }\n\n  function onTouchStart(e) {\n    const device = swiper.device;\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    if (image.isTouched) return;\n    if (device.android && e.cancelable) e.preventDefault();\n    image.isTouched = true;\n    image.touchesStart.x = e.type === 'touchstart' ? e.targetTouches[0].pageX : e.pageX;\n    image.touchesStart.y = e.type === 'touchstart' ? e.targetTouches[0].pageY : e.pageY;\n  }\n\n  function onTouchMove(e) {\n    const zoom = swiper.zoom;\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n    swiper.allowClick = false;\n    if (!image.isTouched || !gesture.$slideEl) return;\n\n    if (!image.isMoved) {\n      image.width = gesture.$imageEl[0].offsetWidth;\n      image.height = gesture.$imageEl[0].offsetHeight;\n      image.startX = getTranslate(gesture.$imageWrapEl[0], 'x') || 0;\n      image.startY = getTranslate(gesture.$imageWrapEl[0], 'y') || 0;\n      gesture.slideWidth = gesture.$slideEl[0].offsetWidth;\n      gesture.slideHeight = gesture.$slideEl[0].offsetHeight;\n      gesture.$imageWrapEl.transition(0);\n    } // Define if we need image drag\n\n\n    const scaledWidth = image.width * zoom.scale;\n    const scaledHeight = image.height * zoom.scale;\n    if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n    image.maxX = -image.minX;\n    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n    image.maxY = -image.minY;\n    image.touchesCurrent.x = e.type === 'touchmove' ? e.targetTouches[0].pageX : e.pageX;\n    image.touchesCurrent.y = e.type === 'touchmove' ? e.targetTouches[0].pageY : e.pageY;\n\n    if (!image.isMoved && !isScaling) {\n      if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n        image.isTouched = false;\n        return;\n      }\n\n      if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n        image.isTouched = false;\n        return;\n      }\n    }\n\n    if (e.cancelable) {\n      e.preventDefault();\n    }\n\n    e.stopPropagation();\n    image.isMoved = true;\n    image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX;\n    image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY;\n\n    if (image.currentX < image.minX) {\n      image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n    }\n\n    if (image.currentX > image.maxX) {\n      image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n    }\n\n    if (image.currentY < image.minY) {\n      image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n    }\n\n    if (image.currentY > image.maxY) {\n      image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n    } // Velocity\n\n\n    if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n    if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n    if (!velocity.prevTime) velocity.prevTime = Date.now();\n    velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n    velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n    if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n    if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n    velocity.prevPositionX = image.touchesCurrent.x;\n    velocity.prevPositionY = image.touchesCurrent.y;\n    velocity.prevTime = Date.now();\n    gesture.$imageWrapEl.transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n  }\n\n  function onTouchEnd() {\n    const zoom = swiper.zoom;\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0) return;\n\n    if (!image.isTouched || !image.isMoved) {\n      image.isTouched = false;\n      image.isMoved = false;\n      return;\n    }\n\n    image.isTouched = false;\n    image.isMoved = false;\n    let momentumDurationX = 300;\n    let momentumDurationY = 300;\n    const momentumDistanceX = velocity.x * momentumDurationX;\n    const newPositionX = image.currentX + momentumDistanceX;\n    const momentumDistanceY = velocity.y * momentumDurationY;\n    const newPositionY = image.currentY + momentumDistanceY; // Fix duration\n\n    if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n    if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n    const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n    image.currentX = newPositionX;\n    image.currentY = newPositionY; // Define if we need image drag\n\n    const scaledWidth = image.width * zoom.scale;\n    const scaledHeight = image.height * zoom.scale;\n    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n    image.maxX = -image.minX;\n    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n    image.maxY = -image.minY;\n    image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n    image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n    gesture.$imageWrapEl.transition(momentumDuration).transform(`translate3d(${image.currentX}px, ${image.currentY}px,0)`);\n  }\n\n  function onTransitionEnd() {\n    const zoom = swiper.zoom;\n\n    if (gesture.$slideEl && swiper.previousIndex !== swiper.activeIndex) {\n      if (gesture.$imageEl) {\n        gesture.$imageEl.transform('translate3d(0,0,0) scale(1)');\n      }\n\n      if (gesture.$imageWrapEl) {\n        gesture.$imageWrapEl.transform('translate3d(0,0,0)');\n      }\n\n      zoom.scale = 1;\n      currentScale = 1;\n      gesture.$slideEl = undefined;\n      gesture.$imageEl = undefined;\n      gesture.$imageWrapEl = undefined;\n    }\n  }\n\n  function zoomIn(e) {\n    const zoom = swiper.zoom;\n    const params = swiper.params.zoom;\n\n    if (!gesture.$slideEl) {\n      if (e && e.target) {\n        gesture.$slideEl = $(e.target).closest(`.${swiper.params.slideClass}`);\n      }\n\n      if (!gesture.$slideEl) {\n        if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n          gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n        } else {\n          gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n        }\n      }\n\n      gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);\n      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n    }\n\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return;\n\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.style.overflow = 'hidden';\n      swiper.wrapperEl.style.touchAction = 'none';\n    }\n\n    gesture.$slideEl.addClass(`${params.zoomedSlideClass}`);\n    let touchX;\n    let touchY;\n    let offsetX;\n    let offsetY;\n    let diffX;\n    let diffY;\n    let translateX;\n    let translateY;\n    let imageWidth;\n    let imageHeight;\n    let scaledWidth;\n    let scaledHeight;\n    let translateMinX;\n    let translateMinY;\n    let translateMaxX;\n    let translateMaxY;\n    let slideWidth;\n    let slideHeight;\n\n    if (typeof image.touchesStart.x === 'undefined' && e) {\n      touchX = e.type === 'touchend' ? e.changedTouches[0].pageX : e.pageX;\n      touchY = e.type === 'touchend' ? e.changedTouches[0].pageY : e.pageY;\n    } else {\n      touchX = image.touchesStart.x;\n      touchY = image.touchesStart.y;\n    }\n\n    zoom.scale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n    currentScale = gesture.$imageWrapEl.attr('data-swiper-zoom') || params.maxRatio;\n\n    if (e) {\n      slideWidth = gesture.$slideEl[0].offsetWidth;\n      slideHeight = gesture.$slideEl[0].offsetHeight;\n      offsetX = gesture.$slideEl.offset().left + window.scrollX;\n      offsetY = gesture.$slideEl.offset().top + window.scrollY;\n      diffX = offsetX + slideWidth / 2 - touchX;\n      diffY = offsetY + slideHeight / 2 - touchY;\n      imageWidth = gesture.$imageEl[0].offsetWidth;\n      imageHeight = gesture.$imageEl[0].offsetHeight;\n      scaledWidth = imageWidth * zoom.scale;\n      scaledHeight = imageHeight * zoom.scale;\n      translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n      translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n      translateMaxX = -translateMinX;\n      translateMaxY = -translateMinY;\n      translateX = diffX * zoom.scale;\n      translateY = diffY * zoom.scale;\n\n      if (translateX < translateMinX) {\n        translateX = translateMinX;\n      }\n\n      if (translateX > translateMaxX) {\n        translateX = translateMaxX;\n      }\n\n      if (translateY < translateMinY) {\n        translateY = translateMinY;\n      }\n\n      if (translateY > translateMaxY) {\n        translateY = translateMaxY;\n      }\n    } else {\n      translateX = 0;\n      translateY = 0;\n    }\n\n    gesture.$imageWrapEl.transition(300).transform(`translate3d(${translateX}px, ${translateY}px,0)`);\n    gesture.$imageEl.transition(300).transform(`translate3d(0,0,0) scale(${zoom.scale})`);\n  }\n\n  function zoomOut() {\n    const zoom = swiper.zoom;\n    const params = swiper.params.zoom;\n\n    if (!gesture.$slideEl) {\n      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n        gesture.$slideEl = swiper.$wrapperEl.children(`.${swiper.params.slideActiveClass}`);\n      } else {\n        gesture.$slideEl = swiper.slides.eq(swiper.activeIndex);\n      }\n\n      gesture.$imageEl = gesture.$slideEl.find(`.${params.containerClass}`).eq(0).find('picture, img, svg, canvas, .swiper-zoom-target').eq(0);\n      gesture.$imageWrapEl = gesture.$imageEl.parent(`.${params.containerClass}`);\n    }\n\n    if (!gesture.$imageEl || gesture.$imageEl.length === 0 || !gesture.$imageWrapEl || gesture.$imageWrapEl.length === 0) return;\n\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.style.overflow = '';\n      swiper.wrapperEl.style.touchAction = '';\n    }\n\n    zoom.scale = 1;\n    currentScale = 1;\n    gesture.$imageWrapEl.transition(300).transform('translate3d(0,0,0)');\n    gesture.$imageEl.transition(300).transform('translate3d(0,0,0) scale(1)');\n    gesture.$slideEl.removeClass(`${params.zoomedSlideClass}`);\n    gesture.$slideEl = undefined;\n  } // Toggle Zoom\n\n\n  function zoomToggle(e) {\n    const zoom = swiper.zoom;\n\n    if (zoom.scale && zoom.scale !== 1) {\n      // Zoom Out\n      zoomOut();\n    } else {\n      // Zoom In\n      zoomIn(e);\n    }\n  }\n\n  function getListeners() {\n    const support = swiper.support;\n    const passiveListener = swiper.touchEvents.start === 'touchstart' && support.passiveListener && swiper.params.passiveListeners ? {\n      passive: true,\n      capture: false\n    } : false;\n    const activeListenerWithCapture = support.passiveListener ? {\n      passive: false,\n      capture: true\n    } : true;\n    return {\n      passiveListener,\n      activeListenerWithCapture\n    };\n  }\n\n  function getSlideSelector() {\n    return `.${swiper.params.slideClass}`;\n  }\n\n  function toggleGestures(method) {\n    const {\n      passiveListener\n    } = getListeners();\n    const slideSelector = getSlideSelector();\n    swiper.$wrapperEl[method]('gesturestart', slideSelector, onGestureStart, passiveListener);\n    swiper.$wrapperEl[method]('gesturechange', slideSelector, onGestureChange, passiveListener);\n    swiper.$wrapperEl[method]('gestureend', slideSelector, onGestureEnd, passiveListener);\n  }\n\n  function enableGestures() {\n    if (gesturesEnabled) return;\n    gesturesEnabled = true;\n    toggleGestures('on');\n  }\n\n  function disableGestures() {\n    if (!gesturesEnabled) return;\n    gesturesEnabled = false;\n    toggleGestures('off');\n  } // Attach/Detach Events\n\n\n  function enable() {\n    const zoom = swiper.zoom;\n    if (zoom.enabled) return;\n    zoom.enabled = true;\n    const support = swiper.support;\n    const {\n      passiveListener,\n      activeListenerWithCapture\n    } = getListeners();\n    const slideSelector = getSlideSelector(); // Scale image\n\n    if (support.gestures) {\n      swiper.$wrapperEl.on(swiper.touchEvents.start, enableGestures, passiveListener);\n      swiper.$wrapperEl.on(swiper.touchEvents.end, disableGestures, passiveListener);\n    } else if (swiper.touchEvents.start === 'touchstart') {\n      swiper.$wrapperEl.on(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener);\n      swiper.$wrapperEl.on(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture);\n      swiper.$wrapperEl.on(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n\n      if (swiper.touchEvents.cancel) {\n        swiper.$wrapperEl.on(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener);\n      }\n    } // Move image\n\n\n    swiper.$wrapperEl.on(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture);\n  }\n\n  function disable() {\n    const zoom = swiper.zoom;\n    if (!zoom.enabled) return;\n    const support = swiper.support;\n    zoom.enabled = false;\n    const {\n      passiveListener,\n      activeListenerWithCapture\n    } = getListeners();\n    const slideSelector = getSlideSelector(); // Scale image\n\n    if (support.gestures) {\n      swiper.$wrapperEl.off(swiper.touchEvents.start, enableGestures, passiveListener);\n      swiper.$wrapperEl.off(swiper.touchEvents.end, disableGestures, passiveListener);\n    } else if (swiper.touchEvents.start === 'touchstart') {\n      swiper.$wrapperEl.off(swiper.touchEvents.start, slideSelector, onGestureStart, passiveListener);\n      swiper.$wrapperEl.off(swiper.touchEvents.move, slideSelector, onGestureChange, activeListenerWithCapture);\n      swiper.$wrapperEl.off(swiper.touchEvents.end, slideSelector, onGestureEnd, passiveListener);\n\n      if (swiper.touchEvents.cancel) {\n        swiper.$wrapperEl.off(swiper.touchEvents.cancel, slideSelector, onGestureEnd, passiveListener);\n      }\n    } // Move image\n\n\n    swiper.$wrapperEl.off(swiper.touchEvents.move, `.${swiper.params.zoom.containerClass}`, onTouchMove, activeListenerWithCapture);\n  }\n\n  on('init', () => {\n    if (swiper.params.zoom.enabled) {\n      enable();\n    }\n  });\n  on('destroy', () => {\n    disable();\n  });\n  on('touchStart', (_s, e) => {\n    if (!swiper.zoom.enabled) return;\n    onTouchStart(e);\n  });\n  on('touchEnd', (_s, e) => {\n    if (!swiper.zoom.enabled) return;\n    onTouchEnd(e);\n  });\n  on('doubleTap', (_s, e) => {\n    if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n      zoomToggle(e);\n    }\n  });\n  on('transitionEnd', () => {\n    if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n      onTransitionEnd();\n    }\n  });\n  on('slideChange', () => {\n    if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n      onTransitionEnd();\n    }\n  });\n  Object.assign(swiper.zoom, {\n    enable,\n    disable,\n    in: zoomIn,\n    out: zoomOut,\n    toggle: zoomToggle\n  });\n}", "import { getWindow } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function Lazy({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\n  extendParams({\n    lazy: {\n      checkInView: false,\n      enabled: false,\n      loadPrevNext: false,\n      loadPrevNextAmount: 1,\n      loadOnTransitionStart: false,\n      scrollingElement: '',\n      elementClass: 'swiper-lazy',\n      loadingClass: 'swiper-lazy-loading',\n      loadedClass: 'swiper-lazy-loaded',\n      preloaderClass: 'swiper-lazy-preloader'\n    }\n  });\n  swiper.lazy = {};\n  let scrollHandlerAttached = false;\n  let initialImageLoaded = false;\n\n  function loadInSlide(index, loadInDuplicate = true) {\n    const params = swiper.params.lazy;\n    if (typeof index === 'undefined') return;\n    if (swiper.slides.length === 0) return;\n    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n    const $slideEl = isVirtual ? swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${index}\"]`) : swiper.slides.eq(index);\n    const $images = $slideEl.find(`.${params.elementClass}:not(.${params.loadedClass}):not(.${params.loadingClass})`);\n\n    if ($slideEl.hasClass(params.elementClass) && !$slideEl.hasClass(params.loadedClass) && !$slideEl.hasClass(params.loadingClass)) {\n      $images.push($slideEl[0]);\n    }\n\n    if ($images.length === 0) return;\n    $images.each(imageEl => {\n      const $imageEl = $(imageEl);\n      $imageEl.addClass(params.loadingClass);\n      const background = $imageEl.attr('data-background');\n      const src = $imageEl.attr('data-src');\n      const srcset = $imageEl.attr('data-srcset');\n      const sizes = $imageEl.attr('data-sizes');\n      const $pictureEl = $imageEl.parent('picture');\n      swiper.loadImage($imageEl[0], src || background, srcset, sizes, false, () => {\n        if (typeof swiper === 'undefined' || swiper === null || !swiper || swiper && !swiper.params || swiper.destroyed) return;\n\n        if (background) {\n          $imageEl.css('background-image', `url(\"${background}\")`);\n          $imageEl.removeAttr('data-background');\n        } else {\n          if (srcset) {\n            $imageEl.attr('srcset', srcset);\n            $imageEl.removeAttr('data-srcset');\n          }\n\n          if (sizes) {\n            $imageEl.attr('sizes', sizes);\n            $imageEl.removeAttr('data-sizes');\n          }\n\n          if ($pictureEl.length) {\n            $pictureEl.children('source').each(sourceEl => {\n              const $source = $(sourceEl);\n\n              if ($source.attr('data-srcset')) {\n                $source.attr('srcset', $source.attr('data-srcset'));\n                $source.removeAttr('data-srcset');\n              }\n            });\n          }\n\n          if (src) {\n            $imageEl.attr('src', src);\n            $imageEl.removeAttr('data-src');\n          }\n        }\n\n        $imageEl.addClass(params.loadedClass).removeClass(params.loadingClass);\n        $slideEl.find(`.${params.preloaderClass}`).remove();\n\n        if (swiper.params.loop && loadInDuplicate) {\n          const slideOriginalIndex = $slideEl.attr('data-swiper-slide-index');\n\n          if ($slideEl.hasClass(swiper.params.slideDuplicateClass)) {\n            const originalSlide = swiper.$wrapperEl.children(`[data-swiper-slide-index=\"${slideOriginalIndex}\"]:not(.${swiper.params.slideDuplicateClass})`);\n            loadInSlide(originalSlide.index(), false);\n          } else {\n            const duplicatedSlide = swiper.$wrapperEl.children(`.${swiper.params.slideDuplicateClass}[data-swiper-slide-index=\"${slideOriginalIndex}\"]`);\n            loadInSlide(duplicatedSlide.index(), false);\n          }\n        }\n\n        emit('lazyImageReady', $slideEl[0], $imageEl[0]);\n\n        if (swiper.params.autoHeight) {\n          swiper.updateAutoHeight();\n        }\n      });\n      emit('lazyImageLoad', $slideEl[0], $imageEl[0]);\n    });\n  }\n\n  function load() {\n    const {\n      $wrapperEl,\n      params: swiperParams,\n      slides,\n      activeIndex\n    } = swiper;\n    const isVirtual = swiper.virtual && swiperParams.virtual.enabled;\n    const params = swiperParams.lazy;\n    let slidesPerView = swiperParams.slidesPerView;\n\n    if (slidesPerView === 'auto') {\n      slidesPerView = 0;\n    }\n\n    function slideExist(index) {\n      if (isVirtual) {\n        if ($wrapperEl.children(`.${swiperParams.slideClass}[data-swiper-slide-index=\"${index}\"]`).length) {\n          return true;\n        }\n      } else if (slides[index]) return true;\n\n      return false;\n    }\n\n    function slideIndex(slideEl) {\n      if (isVirtual) {\n        return $(slideEl).attr('data-swiper-slide-index');\n      }\n\n      return $(slideEl).index();\n    }\n\n    if (!initialImageLoaded) initialImageLoaded = true;\n\n    if (swiper.params.watchSlidesProgress) {\n      $wrapperEl.children(`.${swiperParams.slideVisibleClass}`).each(slideEl => {\n        const index = isVirtual ? $(slideEl).attr('data-swiper-slide-index') : $(slideEl).index();\n        loadInSlide(index);\n      });\n    } else if (slidesPerView > 1) {\n      for (let i = activeIndex; i < activeIndex + slidesPerView; i += 1) {\n        if (slideExist(i)) loadInSlide(i);\n      }\n    } else {\n      loadInSlide(activeIndex);\n    }\n\n    if (params.loadPrevNext) {\n      if (slidesPerView > 1 || params.loadPrevNextAmount && params.loadPrevNextAmount > 1) {\n        const amount = params.loadPrevNextAmount;\n        const spv = Math.ceil(slidesPerView);\n        const maxIndex = Math.min(activeIndex + spv + Math.max(amount, spv), slides.length);\n        const minIndex = Math.max(activeIndex - Math.max(spv, amount), 0); // Next Slides\n\n        for (let i = activeIndex + spv; i < maxIndex; i += 1) {\n          if (slideExist(i)) loadInSlide(i);\n        } // Prev Slides\n\n\n        for (let i = minIndex; i < activeIndex; i += 1) {\n          if (slideExist(i)) loadInSlide(i);\n        }\n      } else {\n        const nextSlide = $wrapperEl.children(`.${swiperParams.slideNextClass}`);\n        if (nextSlide.length > 0) loadInSlide(slideIndex(nextSlide));\n        const prevSlide = $wrapperEl.children(`.${swiperParams.slidePrevClass}`);\n        if (prevSlide.length > 0) loadInSlide(slideIndex(prevSlide));\n      }\n    }\n  }\n\n  function checkInViewOnLoad() {\n    const window = getWindow();\n    if (!swiper || swiper.destroyed) return;\n    const $scrollElement = swiper.params.lazy.scrollingElement ? $(swiper.params.lazy.scrollingElement) : $(window);\n    const isWindow = $scrollElement[0] === window;\n    const scrollElementWidth = isWindow ? window.innerWidth : $scrollElement[0].offsetWidth;\n    const scrollElementHeight = isWindow ? window.innerHeight : $scrollElement[0].offsetHeight;\n    const swiperOffset = swiper.$el.offset();\n    const {\n      rtlTranslate: rtl\n    } = swiper;\n    let inView = false;\n    if (rtl) swiperOffset.left -= swiper.$el[0].scrollLeft;\n    const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiper.width, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiper.height], [swiperOffset.left + swiper.width, swiperOffset.top + swiper.height]];\n\n    for (let i = 0; i < swiperCoord.length; i += 1) {\n      const point = swiperCoord[i];\n\n      if (point[0] >= 0 && point[0] <= scrollElementWidth && point[1] >= 0 && point[1] <= scrollElementHeight) {\n        if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n\n        inView = true;\n      }\n    }\n\n    const passiveListener = swiper.touchEvents.start === 'touchstart' && swiper.support.passiveListener && swiper.params.passiveListeners ? {\n      passive: true,\n      capture: false\n    } : false;\n\n    if (inView) {\n      load();\n      $scrollElement.off('scroll', checkInViewOnLoad, passiveListener);\n    } else if (!scrollHandlerAttached) {\n      scrollHandlerAttached = true;\n      $scrollElement.on('scroll', checkInViewOnLoad, passiveListener);\n    }\n  }\n\n  on('beforeInit', () => {\n    if (swiper.params.lazy.enabled && swiper.params.preloadImages) {\n      swiper.params.preloadImages = false;\n    }\n  });\n  on('init', () => {\n    if (swiper.params.lazy.enabled) {\n      if (swiper.params.lazy.checkInView) {\n        checkInViewOnLoad();\n      } else {\n        load();\n      }\n    }\n  });\n  on('scroll', () => {\n    if (swiper.params.freeMode && swiper.params.freeMode.enabled && !swiper.params.freeMode.sticky) {\n      load();\n    }\n  });\n  on('scrollbarDragMove resize _freeModeNoMomentumRelease', () => {\n    if (swiper.params.lazy.enabled) {\n      if (swiper.params.lazy.checkInView) {\n        checkInViewOnLoad();\n      } else {\n        load();\n      }\n    }\n  });\n  on('transitionStart', () => {\n    if (swiper.params.lazy.enabled) {\n      if (swiper.params.lazy.loadOnTransitionStart || !swiper.params.lazy.loadOnTransitionStart && !initialImageLoaded) {\n        if (swiper.params.lazy.checkInView) {\n          checkInViewOnLoad();\n        } else {\n          load();\n        }\n      }\n    }\n  });\n  on('transitionEnd', () => {\n    if (swiper.params.lazy.enabled && !swiper.params.lazy.loadOnTransitionStart) {\n      if (swiper.params.lazy.checkInView) {\n        checkInViewOnLoad();\n      } else {\n        load();\n      }\n    }\n  });\n  on('slideChange', () => {\n    const {\n      lazy,\n      cssMode,\n      watchSlidesProgress,\n      touchReleaseOnEdges,\n      resistanceRatio\n    } = swiper.params;\n\n    if (lazy.enabled && (cssMode || watchSlidesProgress && (touchReleaseOnEdges || resistanceRatio === 0))) {\n      load();\n    }\n  });\n  on('destroy', () => {\n    if (!swiper.$el) return;\n    swiper.$el.find(`.${swiper.params.lazy.loadingClass}`).removeClass(swiper.params.lazy.loadingClass);\n  });\n  Object.assign(swiper.lazy, {\n    load,\n    loadInSlide\n  });\n}", "/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nimport { nextTick } from '../../shared/utils.js';\nexport default function Controller({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    controller: {\n      control: undefined,\n      inverse: false,\n      by: 'slide' // or 'container'\n\n    }\n  });\n  swiper.controller = {\n    control: undefined\n  };\n\n  function LinearSpline(x, y) {\n    const binarySearch = function search() {\n      let maxIndex;\n      let minIndex;\n      let guess;\n      return (array, val) => {\n        minIndex = -1;\n        maxIndex = array.length;\n\n        while (maxIndex - minIndex > 1) {\n          guess = maxIndex + minIndex >> 1;\n\n          if (array[guess] <= val) {\n            minIndex = guess;\n          } else {\n            maxIndex = guess;\n          }\n        }\n\n        return maxIndex;\n      };\n    }();\n\n    this.x = x;\n    this.y = y;\n    this.lastIndex = x.length - 1; // Given an x value (x2), return the expected y2 value:\n    // (x1,y1) is the known point before given value,\n    // (x3,y3) is the known point after given value.\n\n    let i1;\n    let i3;\n\n    this.interpolate = function interpolate(x2) {\n      if (!x2) return 0; // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n\n      i3 = binarySearch(this.x, x2);\n      i1 = i3 - 1; // We have our indexes i1 & i3, so we can calculate already:\n      // y2 := ((x2\u2212x1) \u00D7 (y3\u2212y1)) \u00F7 (x3\u2212x1) + y1\n\n      return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n    };\n\n    return this;\n  } // xxx: for now i will just save one spline function to to\n\n\n  function getInterpolateFunction(c) {\n    if (!swiper.controller.spline) {\n      swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n    }\n  }\n\n  function setTranslate(_t, byController) {\n    const controlled = swiper.controller.control;\n    let multiplier;\n    let controlledTranslate;\n    const Swiper = swiper.constructor;\n\n    function setControlledTranslate(c) {\n      // this will create an Interpolate function based on the snapGrids\n      // x is the Grid of the scrolled scroller and y will be the controlled scroller\n      // it makes sense to create this only once and recall it for the interpolation\n      // the function does a lot of value caching for performance\n      const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n\n      if (swiper.params.controller.by === 'slide') {\n        getInterpolateFunction(c); // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n        // but it did not work out\n\n        controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n      }\n\n      if (!controlledTranslate || swiper.params.controller.by === 'container') {\n        multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n        controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n      }\n\n      if (swiper.params.controller.inverse) {\n        controlledTranslate = c.maxTranslate() - controlledTranslate;\n      }\n\n      c.updateProgress(controlledTranslate);\n      c.setTranslate(controlledTranslate, swiper);\n      c.updateActiveIndex();\n      c.updateSlidesClasses();\n    }\n\n    if (Array.isArray(controlled)) {\n      for (let i = 0; i < controlled.length; i += 1) {\n        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n          setControlledTranslate(controlled[i]);\n        }\n      }\n    } else if (controlled instanceof Swiper && byController !== controlled) {\n      setControlledTranslate(controlled);\n    }\n  }\n\n  function setTransition(duration, byController) {\n    const Swiper = swiper.constructor;\n    const controlled = swiper.controller.control;\n    let i;\n\n    function setControlledTransition(c) {\n      c.setTransition(duration, swiper);\n\n      if (duration !== 0) {\n        c.transitionStart();\n\n        if (c.params.autoHeight) {\n          nextTick(() => {\n            c.updateAutoHeight();\n          });\n        }\n\n        c.$wrapperEl.transitionEnd(() => {\n          if (!controlled) return;\n\n          if (c.params.loop && swiper.params.controller.by === 'slide') {\n            c.loopFix();\n          }\n\n          c.transitionEnd();\n        });\n      }\n    }\n\n    if (Array.isArray(controlled)) {\n      for (i = 0; i < controlled.length; i += 1) {\n        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n          setControlledTransition(controlled[i]);\n        }\n      }\n    } else if (controlled instanceof Swiper && byController !== controlled) {\n      setControlledTransition(controlled);\n    }\n  }\n\n  function removeSpline() {\n    if (!swiper.controller.control) return;\n\n    if (swiper.controller.spline) {\n      swiper.controller.spline = undefined;\n      delete swiper.controller.spline;\n    }\n  }\n\n  on('beforeInit', () => {\n    swiper.controller.control = swiper.params.controller.control;\n  });\n  on('update', () => {\n    removeSpline();\n  });\n  on('resize', () => {\n    removeSpline();\n  });\n  on('observerUpdate', () => {\n    removeSpline();\n  });\n  on('setTranslate', (_s, translate, byController) => {\n    if (!swiper.controller.control) return;\n    swiper.controller.setTranslate(translate, byController);\n  });\n  on('setTransition', (_s, duration, byController) => {\n    if (!swiper.controller.control) return;\n    swiper.controller.setTransition(duration, byController);\n  });\n  Object.assign(swiper.controller, {\n    setTranslate,\n    setTransition\n  });\n}", "import classesToSelector from '../../shared/classes-to-selector.js';\nimport $ from '../../shared/dom.js';\nexport default function A11y({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    a11y: {\n      enabled: true,\n      notificationClass: 'swiper-notification',\n      prevSlideMessage: 'Previous slide',\n      nextSlideMessage: 'Next slide',\n      firstSlideMessage: 'This is the first slide',\n      lastSlideMessage: 'This is the last slide',\n      paginationBulletMessage: 'Go to slide {{index}}',\n      slideLabelMessage: '{{index}} / {{slidesLength}}',\n      containerMessage: null,\n      containerRoleDescriptionMessage: null,\n      itemRoleDescriptionMessage: null,\n      slideRole: 'group',\n      id: null\n    }\n  });\n  swiper.a11y = {\n    clicked: false\n  };\n  let liveRegion = null;\n\n  function notify(message) {\n    const notification = liveRegion;\n    if (notification.length === 0) return;\n    notification.html('');\n    notification.html(message);\n  }\n\n  function getRandomNumber(size = 16) {\n    const randomChar = () => Math.round(16 * Math.random()).toString(16);\n\n    return 'x'.repeat(size).replace(/x/g, randomChar);\n  }\n\n  function makeElFocusable($el) {\n    $el.attr('tabIndex', '0');\n  }\n\n  function makeElNotFocusable($el) {\n    $el.attr('tabIndex', '-1');\n  }\n\n  function addElRole($el, role) {\n    $el.attr('role', role);\n  }\n\n  function addElRoleDescription($el, description) {\n    $el.attr('aria-roledescription', description);\n  }\n\n  function addElControls($el, controls) {\n    $el.attr('aria-controls', controls);\n  }\n\n  function addElLabel($el, label) {\n    $el.attr('aria-label', label);\n  }\n\n  function addElId($el, id) {\n    $el.attr('id', id);\n  }\n\n  function addElLive($el, live) {\n    $el.attr('aria-live', live);\n  }\n\n  function disableEl($el) {\n    $el.attr('aria-disabled', true);\n  }\n\n  function enableEl($el) {\n    $el.attr('aria-disabled', false);\n  }\n\n  function onEnterOrSpaceKey(e) {\n    if (e.keyCode !== 13 && e.keyCode !== 32) return;\n    const params = swiper.params.a11y;\n    const $targetEl = $(e.target);\n\n    if (swiper.navigation && swiper.navigation.$nextEl && $targetEl.is(swiper.navigation.$nextEl)) {\n      if (!(swiper.isEnd && !swiper.params.loop)) {\n        swiper.slideNext();\n      }\n\n      if (swiper.isEnd) {\n        notify(params.lastSlideMessage);\n      } else {\n        notify(params.nextSlideMessage);\n      }\n    }\n\n    if (swiper.navigation && swiper.navigation.$prevEl && $targetEl.is(swiper.navigation.$prevEl)) {\n      if (!(swiper.isBeginning && !swiper.params.loop)) {\n        swiper.slidePrev();\n      }\n\n      if (swiper.isBeginning) {\n        notify(params.firstSlideMessage);\n      } else {\n        notify(params.prevSlideMessage);\n      }\n    }\n\n    if (swiper.pagination && $targetEl.is(classesToSelector(swiper.params.pagination.bulletClass))) {\n      $targetEl[0].click();\n    }\n  }\n\n  function updateNavigation() {\n    if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n    const {\n      $nextEl,\n      $prevEl\n    } = swiper.navigation;\n\n    if ($prevEl && $prevEl.length > 0) {\n      if (swiper.isBeginning) {\n        disableEl($prevEl);\n        makeElNotFocusable($prevEl);\n      } else {\n        enableEl($prevEl);\n        makeElFocusable($prevEl);\n      }\n    }\n\n    if ($nextEl && $nextEl.length > 0) {\n      if (swiper.isEnd) {\n        disableEl($nextEl);\n        makeElNotFocusable($nextEl);\n      } else {\n        enableEl($nextEl);\n        makeElFocusable($nextEl);\n      }\n    }\n  }\n\n  function hasPagination() {\n    return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n  }\n\n  function hasClickablePagination() {\n    return hasPagination() && swiper.params.pagination.clickable;\n  }\n\n  function updatePagination() {\n    const params = swiper.params.a11y;\n    if (!hasPagination()) return;\n    swiper.pagination.bullets.each(bulletEl => {\n      const $bulletEl = $(bulletEl);\n\n      if (swiper.params.pagination.clickable) {\n        makeElFocusable($bulletEl);\n\n        if (!swiper.params.pagination.renderBullet) {\n          addElRole($bulletEl, 'button');\n          addElLabel($bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, $bulletEl.index() + 1));\n        }\n      }\n\n      if ($bulletEl.is(`.${swiper.params.pagination.bulletActiveClass}`)) {\n        $bulletEl.attr('aria-current', 'true');\n      } else {\n        $bulletEl.removeAttr('aria-current');\n      }\n    });\n  }\n\n  const initNavEl = ($el, wrapperId, message) => {\n    makeElFocusable($el);\n\n    if ($el[0].tagName !== 'BUTTON') {\n      addElRole($el, 'button');\n      $el.on('keydown', onEnterOrSpaceKey);\n    }\n\n    addElLabel($el, message);\n    addElControls($el, wrapperId);\n  };\n\n  const handlePointerDown = () => {\n    swiper.a11y.clicked = true;\n  };\n\n  const handlePointerUp = () => {\n    requestAnimationFrame(() => {\n      requestAnimationFrame(() => {\n        if (!swiper.destroyed) {\n          swiper.a11y.clicked = false;\n        }\n      });\n    });\n  };\n\n  const handleFocus = e => {\n    if (swiper.a11y.clicked) return;\n    const slideEl = e.target.closest(`.${swiper.params.slideClass}`);\n    if (!slideEl || !swiper.slides.includes(slideEl)) return;\n    const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n    const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);\n    if (isActive || isVisible) return;\n    if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;\n\n    if (swiper.isHorizontal()) {\n      swiper.el.scrollLeft = 0;\n    } else {\n      swiper.el.scrollTop = 0;\n    }\n\n    swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n  };\n\n  const initSlides = () => {\n    const params = swiper.params.a11y;\n\n    if (params.itemRoleDescriptionMessage) {\n      addElRoleDescription($(swiper.slides), params.itemRoleDescriptionMessage);\n    }\n\n    if (params.slideRole) {\n      addElRole($(swiper.slides), params.slideRole);\n    }\n\n    const slidesLength = swiper.params.loop ? swiper.slides.filter(el => !el.classList.contains(swiper.params.slideDuplicateClass)).length : swiper.slides.length;\n\n    if (params.slideLabelMessage) {\n      swiper.slides.each((slideEl, index) => {\n        const $slideEl = $(slideEl);\n        const slideIndex = swiper.params.loop ? parseInt($slideEl.attr('data-swiper-slide-index'), 10) : index;\n        const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n        addElLabel($slideEl, ariaLabelMessage);\n      });\n    }\n  };\n\n  const init = () => {\n    const params = swiper.params.a11y;\n    swiper.$el.append(liveRegion); // Container\n\n    const $containerEl = swiper.$el;\n\n    if (params.containerRoleDescriptionMessage) {\n      addElRoleDescription($containerEl, params.containerRoleDescriptionMessage);\n    }\n\n    if (params.containerMessage) {\n      addElLabel($containerEl, params.containerMessage);\n    } // Wrapper\n\n\n    const $wrapperEl = swiper.$wrapperEl;\n    const wrapperId = params.id || $wrapperEl.attr('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n    const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n    addElId($wrapperEl, wrapperId);\n    addElLive($wrapperEl, live); // Slide\n\n    initSlides(); // Navigation\n\n    let $nextEl;\n    let $prevEl;\n\n    if (swiper.navigation && swiper.navigation.$nextEl) {\n      $nextEl = swiper.navigation.$nextEl;\n    }\n\n    if (swiper.navigation && swiper.navigation.$prevEl) {\n      $prevEl = swiper.navigation.$prevEl;\n    }\n\n    if ($nextEl && $nextEl.length) {\n      initNavEl($nextEl, wrapperId, params.nextSlideMessage);\n    }\n\n    if ($prevEl && $prevEl.length) {\n      initNavEl($prevEl, wrapperId, params.prevSlideMessage);\n    } // Pagination\n\n\n    if (hasClickablePagination()) {\n      swiper.pagination.$el.on('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey);\n    } // Tab focus\n\n\n    swiper.$el.on('focus', handleFocus, true);\n    swiper.$el.on('pointerdown', handlePointerDown, true);\n    swiper.$el.on('pointerup', handlePointerUp, true);\n  };\n\n  function destroy() {\n    if (liveRegion && liveRegion.length > 0) liveRegion.remove();\n    let $nextEl;\n    let $prevEl;\n\n    if (swiper.navigation && swiper.navigation.$nextEl) {\n      $nextEl = swiper.navigation.$nextEl;\n    }\n\n    if (swiper.navigation && swiper.navigation.$prevEl) {\n      $prevEl = swiper.navigation.$prevEl;\n    }\n\n    if ($nextEl) {\n      $nextEl.off('keydown', onEnterOrSpaceKey);\n    }\n\n    if ($prevEl) {\n      $prevEl.off('keydown', onEnterOrSpaceKey);\n    } // Pagination\n\n\n    if (hasClickablePagination()) {\n      swiper.pagination.$el.off('keydown', classesToSelector(swiper.params.pagination.bulletClass), onEnterOrSpaceKey);\n    } // Tab focus\n\n\n    swiper.$el.off('focus', handleFocus, true);\n    swiper.$el.off('pointerdown', handlePointerDown, true);\n    swiper.$el.off('pointerup', handlePointerUp, true);\n  }\n\n  on('beforeInit', () => {\n    liveRegion = $(`<span class=\"${swiper.params.a11y.notificationClass}\" aria-live=\"assertive\" aria-atomic=\"true\"></span>`);\n  });\n  on('afterInit', () => {\n    if (!swiper.params.a11y.enabled) return;\n    init();\n  });\n  on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\n    if (!swiper.params.a11y.enabled) return;\n    initSlides();\n  });\n  on('fromEdge toEdge afterInit lock unlock', () => {\n    if (!swiper.params.a11y.enabled) return;\n    updateNavigation();\n  });\n  on('paginationUpdate', () => {\n    if (!swiper.params.a11y.enabled) return;\n    updatePagination();\n  });\n  on('destroy', () => {\n    if (!swiper.params.a11y.enabled) return;\n    destroy();\n  });\n}", "import { getWindow } from 'ssr-window';\nexport default function History({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    history: {\n      enabled: false,\n      root: '',\n      replaceState: false,\n      key: 'slides',\n      keepQuery: false\n    }\n  });\n  let initialized = false;\n  let paths = {};\n\n  const slugify = text => {\n    return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n  };\n\n  const getPathValues = urlOverride => {\n    const window = getWindow();\n    let location;\n\n    if (urlOverride) {\n      location = new URL(urlOverride);\n    } else {\n      location = window.location;\n    }\n\n    const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');\n    const total = pathArray.length;\n    const key = pathArray[total - 2];\n    const value = pathArray[total - 1];\n    return {\n      key,\n      value\n    };\n  };\n\n  const setHistory = (key, index) => {\n    const window = getWindow();\n    if (!initialized || !swiper.params.history.enabled) return;\n    let location;\n\n    if (swiper.params.url) {\n      location = new URL(swiper.params.url);\n    } else {\n      location = window.location;\n    }\n\n    const slide = swiper.slides.eq(index);\n    let value = slugify(slide.attr('data-history'));\n\n    if (swiper.params.history.root.length > 0) {\n      let root = swiper.params.history.root;\n      if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n      value = `${root}/${key}/${value}`;\n    } else if (!location.pathname.includes(key)) {\n      value = `${key}/${value}`;\n    }\n\n    if (swiper.params.history.keepQuery) {\n      value += location.search;\n    }\n\n    const currentState = window.history.state;\n\n    if (currentState && currentState.value === value) {\n      return;\n    }\n\n    if (swiper.params.history.replaceState) {\n      window.history.replaceState({\n        value\n      }, null, value);\n    } else {\n      window.history.pushState({\n        value\n      }, null, value);\n    }\n  };\n\n  const scrollToSlide = (speed, value, runCallbacks) => {\n    if (value) {\n      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n        const slide = swiper.slides.eq(i);\n        const slideHistory = slugify(slide.attr('data-history'));\n\n        if (slideHistory === value && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n          const index = slide.index();\n          swiper.slideTo(index, speed, runCallbacks);\n        }\n      }\n    } else {\n      swiper.slideTo(0, speed, runCallbacks);\n    }\n  };\n\n  const setHistoryPopState = () => {\n    paths = getPathValues(swiper.params.url);\n    scrollToSlide(swiper.params.speed, paths.value, false);\n  };\n\n  const init = () => {\n    const window = getWindow();\n    if (!swiper.params.history) return;\n\n    if (!window.history || !window.history.pushState) {\n      swiper.params.history.enabled = false;\n      swiper.params.hashNavigation.enabled = true;\n      return;\n    }\n\n    initialized = true;\n    paths = getPathValues(swiper.params.url);\n    if (!paths.key && !paths.value) return;\n    scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n\n    if (!swiper.params.history.replaceState) {\n      window.addEventListener('popstate', setHistoryPopState);\n    }\n  };\n\n  const destroy = () => {\n    const window = getWindow();\n\n    if (!swiper.params.history.replaceState) {\n      window.removeEventListener('popstate', setHistoryPopState);\n    }\n  };\n\n  on('init', () => {\n    if (swiper.params.history.enabled) {\n      init();\n    }\n  });\n  on('destroy', () => {\n    if (swiper.params.history.enabled) {\n      destroy();\n    }\n  });\n  on('transitionEnd _freeModeNoMomentumRelease', () => {\n    if (initialized) {\n      setHistory(swiper.params.history.key, swiper.activeIndex);\n    }\n  });\n  on('slideChange', () => {\n    if (initialized && swiper.params.cssMode) {\n      setHistory(swiper.params.history.key, swiper.activeIndex);\n    }\n  });\n}", "import { getWindow, getDocument } from 'ssr-window';\nimport $ from '../../shared/dom.js';\nexport default function HashNavigation({\n  swiper,\n  extendParams,\n  emit,\n  on\n}) {\n  let initialized = false;\n  const document = getDocument();\n  const window = getWindow();\n  extendParams({\n    hashNavigation: {\n      enabled: false,\n      replaceState: false,\n      watchState: false\n    }\n  });\n\n  const onHashChange = () => {\n    emit('hashChange');\n    const newHash = document.location.hash.replace('#', '');\n    const activeSlideHash = swiper.slides.eq(swiper.activeIndex).attr('data-hash');\n\n    if (newHash !== activeSlideHash) {\n      const newIndex = swiper.$wrapperEl.children(`.${swiper.params.slideClass}[data-hash=\"${newHash}\"]`).index();\n      if (typeof newIndex === 'undefined') return;\n      swiper.slideTo(newIndex);\n    }\n  };\n\n  const setHash = () => {\n    if (!initialized || !swiper.params.hashNavigation.enabled) return;\n\n    if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n      window.history.replaceState(null, null, `#${swiper.slides.eq(swiper.activeIndex).attr('data-hash')}` || '');\n      emit('hashSet');\n    } else {\n      const slide = swiper.slides.eq(swiper.activeIndex);\n      const hash = slide.attr('data-hash') || slide.attr('data-history');\n      document.location.hash = hash || '';\n      emit('hashSet');\n    }\n  };\n\n  const init = () => {\n    if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n    initialized = true;\n    const hash = document.location.hash.replace('#', '');\n\n    if (hash) {\n      const speed = 0;\n\n      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n        const slide = swiper.slides.eq(i);\n        const slideHash = slide.attr('data-hash') || slide.attr('data-history');\n\n        if (slideHash === hash && !slide.hasClass(swiper.params.slideDuplicateClass)) {\n          const index = slide.index();\n          swiper.slideTo(index, speed, swiper.params.runCallbacksOnInit, true);\n        }\n      }\n    }\n\n    if (swiper.params.hashNavigation.watchState) {\n      $(window).on('hashchange', onHashChange);\n    }\n  };\n\n  const destroy = () => {\n    if (swiper.params.hashNavigation.watchState) {\n      $(window).off('hashchange', onHashChange);\n    }\n  };\n\n  on('init', () => {\n    if (swiper.params.hashNavigation.enabled) {\n      init();\n    }\n  });\n  on('destroy', () => {\n    if (swiper.params.hashNavigation.enabled) {\n      destroy();\n    }\n  });\n  on('transitionEnd _freeModeNoMomentumRelease', () => {\n    if (initialized) {\n      setHash();\n    }\n  });\n  on('slideChange', () => {\n    if (initialized && swiper.params.cssMode) {\n      setHash();\n    }\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({\n  swiper,\n  extendParams,\n  on,\n  emit\n}) {\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    if (!swiper.size) {\n      swiper.autoplay.running = false;\n      swiper.autoplay.paused = false;\n      return;\n    }\n\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}", "import { isObject } from '../../shared/utils.js';\nimport $ from '../../shared/dom.js';\nexport default function Thumb({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    thumbs: {\n      swiper: null,\n      multipleActiveThumbs: true,\n      autoScrollOffset: 0,\n      slideThumbActiveClass: 'swiper-slide-thumb-active',\n      thumbsContainerClass: 'swiper-thumbs'\n    }\n  });\n  let initialized = false;\n  let swiperCreated = false;\n  swiper.thumbs = {\n    swiper: null\n  };\n\n  function onThumbClick() {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n    const clickedIndex = thumbsSwiper.clickedIndex;\n    const clickedSlide = thumbsSwiper.clickedSlide;\n    if (clickedSlide && $(clickedSlide).hasClass(swiper.params.thumbs.slideThumbActiveClass)) return;\n    if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n    let slideToIndex;\n\n    if (thumbsSwiper.params.loop) {\n      slideToIndex = parseInt($(thumbsSwiper.clickedSlide).attr('data-swiper-slide-index'), 10);\n    } else {\n      slideToIndex = clickedIndex;\n    }\n\n    if (swiper.params.loop) {\n      let currentIndex = swiper.activeIndex;\n\n      if (swiper.slides.eq(currentIndex).hasClass(swiper.params.slideDuplicateClass)) {\n        swiper.loopFix(); // eslint-disable-next-line\n\n        swiper._clientLeft = swiper.$wrapperEl[0].clientLeft;\n        currentIndex = swiper.activeIndex;\n      }\n\n      const prevIndex = swiper.slides.eq(currentIndex).prevAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n      const nextIndex = swiper.slides.eq(currentIndex).nextAll(`[data-swiper-slide-index=\"${slideToIndex}\"]`).eq(0).index();\n      if (typeof prevIndex === 'undefined') slideToIndex = nextIndex;else if (typeof nextIndex === 'undefined') slideToIndex = prevIndex;else if (nextIndex - currentIndex < currentIndex - prevIndex) slideToIndex = nextIndex;else slideToIndex = prevIndex;\n    }\n\n    swiper.slideTo(slideToIndex);\n  }\n\n  function init() {\n    const {\n      thumbs: thumbsParams\n    } = swiper.params;\n    if (initialized) return false;\n    initialized = true;\n    const SwiperClass = swiper.constructor;\n\n    if (thumbsParams.swiper instanceof SwiperClass) {\n      swiper.thumbs.swiper = thumbsParams.swiper;\n      Object.assign(swiper.thumbs.swiper.originalParams, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false\n      });\n      Object.assign(swiper.thumbs.swiper.params, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false\n      });\n    } else if (isObject(thumbsParams.swiper)) {\n      const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n      Object.assign(thumbsSwiperParams, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false\n      });\n      swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n      swiperCreated = true;\n    }\n\n    swiper.thumbs.swiper.$el.addClass(swiper.params.thumbs.thumbsContainerClass);\n    swiper.thumbs.swiper.on('tap', onThumbClick);\n    return true;\n  }\n\n  function update(initial) {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n    const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; // Activate thumbs\n\n    let thumbsToActivate = 1;\n    const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n\n    if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n      thumbsToActivate = swiper.params.slidesPerView;\n    }\n\n    if (!swiper.params.thumbs.multipleActiveThumbs) {\n      thumbsToActivate = 1;\n    }\n\n    thumbsToActivate = Math.floor(thumbsToActivate);\n    thumbsSwiper.slides.removeClass(thumbActiveClass);\n\n    if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n      for (let i = 0; i < thumbsToActivate; i += 1) {\n        thumbsSwiper.$wrapperEl.children(`[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).addClass(thumbActiveClass);\n      }\n    } else {\n      for (let i = 0; i < thumbsToActivate; i += 1) {\n        thumbsSwiper.slides.eq(swiper.realIndex + i).addClass(thumbActiveClass);\n      }\n    }\n\n    const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n    const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n\n    if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n      let currentThumbsIndex = thumbsSwiper.activeIndex;\n      let newThumbsIndex;\n      let direction;\n\n      if (thumbsSwiper.params.loop) {\n        if (thumbsSwiper.slides.eq(currentThumbsIndex).hasClass(thumbsSwiper.params.slideDuplicateClass)) {\n          thumbsSwiper.loopFix(); // eslint-disable-next-line\n\n          thumbsSwiper._clientLeft = thumbsSwiper.$wrapperEl[0].clientLeft;\n          currentThumbsIndex = thumbsSwiper.activeIndex;\n        } // Find actual thumbs index to slide to\n\n\n        const prevThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).prevAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0).index();\n        const nextThumbsIndex = thumbsSwiper.slides.eq(currentThumbsIndex).nextAll(`[data-swiper-slide-index=\"${swiper.realIndex}\"]`).eq(0).index();\n\n        if (typeof prevThumbsIndex === 'undefined') {\n          newThumbsIndex = nextThumbsIndex;\n        } else if (typeof nextThumbsIndex === 'undefined') {\n          newThumbsIndex = prevThumbsIndex;\n        } else if (nextThumbsIndex - currentThumbsIndex === currentThumbsIndex - prevThumbsIndex) {\n          newThumbsIndex = thumbsSwiper.params.slidesPerGroup > 1 ? nextThumbsIndex : currentThumbsIndex;\n        } else if (nextThumbsIndex - currentThumbsIndex < currentThumbsIndex - prevThumbsIndex) {\n          newThumbsIndex = nextThumbsIndex;\n        } else {\n          newThumbsIndex = prevThumbsIndex;\n        }\n\n        direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n      } else {\n        newThumbsIndex = swiper.realIndex;\n        direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n      }\n\n      if (useOffset) {\n        newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n      }\n\n      if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n        if (thumbsSwiper.params.centeredSlides) {\n          if (newThumbsIndex > currentThumbsIndex) {\n            newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n          } else {\n            newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n          }\n        } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) {// newThumbsIndex = newThumbsIndex - slidesPerView + 1;\n        }\n\n        thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n      }\n    }\n  }\n\n  on('beforeInit', () => {\n    const {\n      thumbs\n    } = swiper.params;\n    if (!thumbs || !thumbs.swiper) return;\n    init();\n    update(true);\n  });\n  on('slideChange update resize observerUpdate', () => {\n    update();\n  });\n  on('setTransition', (_s, duration) => {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n    thumbsSwiper.setTransition(duration);\n  });\n  on('beforeDestroy', () => {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n\n    if (swiperCreated) {\n      thumbsSwiper.destroy();\n    }\n  });\n  Object.assign(swiper.thumbs, {\n    init,\n    update\n  });\n}", "import { now } from '../../shared/utils.js';\nexport default function freeMode({\n  swiper,\n  extendParams,\n  emit,\n  once\n}) {\n  extendParams({\n    freeMode: {\n      enabled: false,\n      momentum: true,\n      momentumRatio: 1,\n      momentumBounce: true,\n      momentumBounceRatio: 1,\n      momentumVelocityRatio: 1,\n      sticky: false,\n      minimumVelocity: 0.02\n    }\n  });\n\n  function onTouchStart() {\n    const translate = swiper.getTranslate();\n    swiper.setTranslate(translate);\n    swiper.setTransition(0);\n    swiper.touchEventsData.velocities.length = 0;\n    swiper.freeMode.onTouchEnd({\n      currentPos: swiper.rtl ? swiper.translate : -swiper.translate\n    });\n  }\n\n  function onTouchMove() {\n    const {\n      touchEventsData: data,\n      touches\n    } = swiper; // Velocity\n\n    if (data.velocities.length === 0) {\n      data.velocities.push({\n        position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n        time: data.touchStartTime\n      });\n    }\n\n    data.velocities.push({\n      position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n      time: now()\n    });\n  }\n\n  function onTouchEnd({\n    currentPos\n  }) {\n    const {\n      params,\n      $wrapperEl,\n      rtlTranslate: rtl,\n      snapGrid,\n      touchEventsData: data\n    } = swiper; // Time diff\n\n    const touchEndTime = now();\n    const timeDiff = touchEndTime - data.touchStartTime;\n\n    if (currentPos < -swiper.minTranslate()) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n\n    if (currentPos > -swiper.maxTranslate()) {\n      if (swiper.slides.length < snapGrid.length) {\n        swiper.slideTo(snapGrid.length - 1);\n      } else {\n        swiper.slideTo(swiper.slides.length - 1);\n      }\n\n      return;\n    }\n\n    if (params.freeMode.momentum) {\n      if (data.velocities.length > 1) {\n        const lastMoveEvent = data.velocities.pop();\n        const velocityEvent = data.velocities.pop();\n        const distance = lastMoveEvent.position - velocityEvent.position;\n        const time = lastMoveEvent.time - velocityEvent.time;\n        swiper.velocity = distance / time;\n        swiper.velocity /= 2;\n\n        if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n          swiper.velocity = 0;\n        } // this implies that the user stopped moving a finger then released.\n        // There would be no events with distance zero, so the last event is stale.\n\n\n        if (time > 150 || now() - lastMoveEvent.time > 300) {\n          swiper.velocity = 0;\n        }\n      } else {\n        swiper.velocity = 0;\n      }\n\n      swiper.velocity *= params.freeMode.momentumVelocityRatio;\n      data.velocities.length = 0;\n      let momentumDuration = 1000 * params.freeMode.momentumRatio;\n      const momentumDistance = swiper.velocity * momentumDuration;\n      let newPosition = swiper.translate + momentumDistance;\n      if (rtl) newPosition = -newPosition;\n      let doBounce = false;\n      let afterBouncePosition;\n      const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n      let needsLoopFix;\n\n      if (newPosition < swiper.maxTranslate()) {\n        if (params.freeMode.momentumBounce) {\n          if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n            newPosition = swiper.maxTranslate() - bounceAmount;\n          }\n\n          afterBouncePosition = swiper.maxTranslate();\n          doBounce = true;\n          data.allowMomentumBounce = true;\n        } else {\n          newPosition = swiper.maxTranslate();\n        }\n\n        if (params.loop && params.centeredSlides) needsLoopFix = true;\n      } else if (newPosition > swiper.minTranslate()) {\n        if (params.freeMode.momentumBounce) {\n          if (newPosition - swiper.minTranslate() > bounceAmount) {\n            newPosition = swiper.minTranslate() + bounceAmount;\n          }\n\n          afterBouncePosition = swiper.minTranslate();\n          doBounce = true;\n          data.allowMomentumBounce = true;\n        } else {\n          newPosition = swiper.minTranslate();\n        }\n\n        if (params.loop && params.centeredSlides) needsLoopFix = true;\n      } else if (params.freeMode.sticky) {\n        let nextSlide;\n\n        for (let j = 0; j < snapGrid.length; j += 1) {\n          if (snapGrid[j] > -newPosition) {\n            nextSlide = j;\n            break;\n          }\n        }\n\n        if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n          newPosition = snapGrid[nextSlide];\n        } else {\n          newPosition = snapGrid[nextSlide - 1];\n        }\n\n        newPosition = -newPosition;\n      }\n\n      if (needsLoopFix) {\n        once('transitionEnd', () => {\n          swiper.loopFix();\n        });\n      } // Fix duration\n\n\n      if (swiper.velocity !== 0) {\n        if (rtl) {\n          momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n        } else {\n          momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n        }\n\n        if (params.freeMode.sticky) {\n          // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n          // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n          // It's easy to see this when simulating touch with mouse events. To fix this,\n          // limit single-slide swipes to the default slide duration. This also has the\n          // nice side effect of matching slide speed if the user stopped moving before\n          // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n          // For faster swipes, also apply limits (albeit higher ones).\n          const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n          const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n\n          if (moveDistance < currentSlideSize) {\n            momentumDuration = params.speed;\n          } else if (moveDistance < 2 * currentSlideSize) {\n            momentumDuration = params.speed * 1.5;\n          } else {\n            momentumDuration = params.speed * 2.5;\n          }\n        }\n      } else if (params.freeMode.sticky) {\n        swiper.slideToClosest();\n        return;\n      }\n\n      if (params.freeMode.momentumBounce && doBounce) {\n        swiper.updateProgress(afterBouncePosition);\n        swiper.setTransition(momentumDuration);\n        swiper.setTranslate(newPosition);\n        swiper.transitionStart(true, swiper.swipeDirection);\n        swiper.animating = true;\n        $wrapperEl.transitionEnd(() => {\n          if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n          emit('momentumBounce');\n          swiper.setTransition(params.speed);\n          setTimeout(() => {\n            swiper.setTranslate(afterBouncePosition);\n            $wrapperEl.transitionEnd(() => {\n              if (!swiper || swiper.destroyed) return;\n              swiper.transitionEnd();\n            });\n          }, 0);\n        });\n      } else if (swiper.velocity) {\n        emit('_freeModeNoMomentumRelease');\n        swiper.updateProgress(newPosition);\n        swiper.setTransition(momentumDuration);\n        swiper.setTranslate(newPosition);\n        swiper.transitionStart(true, swiper.swipeDirection);\n\n        if (!swiper.animating) {\n          swiper.animating = true;\n          $wrapperEl.transitionEnd(() => {\n            if (!swiper || swiper.destroyed) return;\n            swiper.transitionEnd();\n          });\n        }\n      } else {\n        swiper.updateProgress(newPosition);\n      }\n\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    } else if (params.freeMode.sticky) {\n      swiper.slideToClosest();\n      return;\n    } else if (params.freeMode) {\n      emit('_freeModeNoMomentumRelease');\n    }\n\n    if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n      swiper.updateProgress();\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    }\n  }\n\n  Object.assign(swiper, {\n    freeMode: {\n      onTouchStart,\n      onTouchMove,\n      onTouchEnd\n    }\n  });\n}", "export default function Grid({\n  swiper,\n  extendParams\n}) {\n  extendParams({\n    grid: {\n      rows: 1,\n      fill: 'column'\n    }\n  });\n  let slidesNumberEvenToRows;\n  let slidesPerRow;\n  let numFullColumns;\n\n  const initSlides = slidesLength => {\n    const {\n      slidesPerView\n    } = swiper.params;\n    const {\n      rows,\n      fill\n    } = swiper.params.grid;\n    slidesPerRow = slidesNumberEvenToRows / rows;\n    numFullColumns = Math.floor(slidesLength / rows);\n\n    if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n      slidesNumberEvenToRows = slidesLength;\n    } else {\n      slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n    }\n\n    if (slidesPerView !== 'auto' && fill === 'row') {\n      slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n    }\n  };\n\n  const updateSlide = (i, slide, slidesLength, getDirectionLabel) => {\n    const {\n      slidesPerGroup,\n      spaceBetween\n    } = swiper.params;\n    const {\n      rows,\n      fill\n    } = swiper.params.grid; // Set slides order\n\n    let newSlideOrderIndex;\n    let column;\n    let row;\n\n    if (fill === 'row' && slidesPerGroup > 1) {\n      const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n      const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n      const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);\n      row = Math.floor(slideIndexInGroup / columnsInGroup);\n      column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n      newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;\n      slide.css({\n        '-webkit-order': newSlideOrderIndex,\n        order: newSlideOrderIndex\n      });\n    } else if (fill === 'column') {\n      column = Math.floor(i / rows);\n      row = i - column * rows;\n\n      if (column > numFullColumns || column === numFullColumns && row === rows - 1) {\n        row += 1;\n\n        if (row >= rows) {\n          row = 0;\n          column += 1;\n        }\n      }\n    } else {\n      row = Math.floor(i / slidesPerRow);\n      column = i - row * slidesPerRow;\n    }\n\n    slide.css(getDirectionLabel('margin-top'), row !== 0 ? spaceBetween && `${spaceBetween}px` : '');\n  };\n\n  const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => {\n    const {\n      spaceBetween,\n      centeredSlides,\n      roundLengths\n    } = swiper.params;\n    const {\n      rows\n    } = swiper.params.grid;\n    swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n    swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n    swiper.$wrapperEl.css({\n      [getDirectionLabel('width')]: `${swiper.virtualSize + spaceBetween}px`\n    });\n\n    if (centeredSlides) {\n      snapGrid.splice(0, snapGrid.length);\n      const newSlidesGrid = [];\n\n      for (let i = 0; i < snapGrid.length; i += 1) {\n        let slidesGridItem = snapGrid[i];\n        if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n        if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n      }\n\n      snapGrid.push(...newSlidesGrid);\n    }\n  };\n\n  swiper.grid = {\n    initSlides,\n    updateSlide,\n    updateWrapperSize\n  };\n}", "export default function appendSlide(slides) {\n  const swiper = this;\n  const {\n    $wrapperEl,\n    params\n  } = swiper;\n\n  if (params.loop) {\n    swiper.loopDestroy();\n  }\n\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) $wrapperEl.append(slides[i]);\n    }\n  } else {\n    $wrapperEl.append(slides);\n  }\n\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n\n  if (!params.observer) {\n    swiper.update();\n  }\n}", "export default function prependSlide(slides) {\n  const swiper = this;\n  const {\n    params,\n    $wrapperEl,\n    activeIndex\n  } = swiper;\n\n  if (params.loop) {\n    swiper.loopDestroy();\n  }\n\n  let newActiveIndex = activeIndex + 1;\n\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) $wrapperEl.prepend(slides[i]);\n    }\n\n    newActiveIndex = activeIndex + slides.length;\n  } else {\n    $wrapperEl.prepend(slides);\n  }\n\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n\n  if (!params.observer) {\n    swiper.update();\n  }\n\n  swiper.slideTo(newActiveIndex, 0, false);\n}", "export default function addSlide(index, slides) {\n  const swiper = this;\n  const {\n    $wrapperEl,\n    params,\n    activeIndex\n  } = swiper;\n  let activeIndexBuffer = activeIndex;\n\n  if (params.loop) {\n    activeIndexBuffer -= swiper.loopedSlides;\n    swiper.loopDestroy();\n    swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n  }\n\n  const baseLength = swiper.slides.length;\n\n  if (index <= 0) {\n    swiper.prependSlide(slides);\n    return;\n  }\n\n  if (index >= baseLength) {\n    swiper.appendSlide(slides);\n    return;\n  }\n\n  let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n  const slidesBuffer = [];\n\n  for (let i = baseLength - 1; i >= index; i -= 1) {\n    const currentSlide = swiper.slides.eq(i);\n    currentSlide.remove();\n    slidesBuffer.unshift(currentSlide);\n  }\n\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) $wrapperEl.append(slides[i]);\n    }\n\n    newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n  } else {\n    $wrapperEl.append(slides);\n  }\n\n  for (let i = 0; i < slidesBuffer.length; i += 1) {\n    $wrapperEl.append(slidesBuffer[i]);\n  }\n\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n\n  if (!params.observer) {\n    swiper.update();\n  }\n\n  if (params.loop) {\n    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n  } else {\n    swiper.slideTo(newActiveIndex, 0, false);\n  }\n}", "export default function removeSlide(slidesIndexes) {\n  const swiper = this;\n  const {\n    params,\n    $wrapperEl,\n    activeIndex\n  } = swiper;\n  let activeIndexBuffer = activeIndex;\n\n  if (params.loop) {\n    activeIndexBuffer -= swiper.loopedSlides;\n    swiper.loopDestroy();\n    swiper.slides = $wrapperEl.children(`.${params.slideClass}`);\n  }\n\n  let newActiveIndex = activeIndexBuffer;\n  let indexToRemove;\n\n  if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n    for (let i = 0; i < slidesIndexes.length; i += 1) {\n      indexToRemove = slidesIndexes[i];\n      if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n      if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n    }\n\n    newActiveIndex = Math.max(newActiveIndex, 0);\n  } else {\n    indexToRemove = slidesIndexes;\n    if (swiper.slides[indexToRemove]) swiper.slides.eq(indexToRemove).remove();\n    if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n    newActiveIndex = Math.max(newActiveIndex, 0);\n  }\n\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n\n  if (!params.observer) {\n    swiper.update();\n  }\n\n  if (params.loop) {\n    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n  } else {\n    swiper.slideTo(newActiveIndex, 0, false);\n  }\n}", "export default function removeAllSlides() {\n  const swiper = this;\n  const slidesIndexes = [];\n\n  for (let i = 0; i < swiper.slides.length; i += 1) {\n    slidesIndexes.push(i);\n  }\n\n  swiper.removeSlide(slidesIndexes);\n}", "import appendSlide from './methods/appendSlide.js';\nimport prependSlide from './methods/prependSlide.js';\nimport addSlide from './methods/addSlide.js';\nimport removeSlide from './methods/removeSlide.js';\nimport removeAllSlides from './methods/removeAllSlides.js';\nexport default function Manipulation({\n  swiper\n}) {\n  Object.assign(swiper, {\n    appendSlide: appendSlide.bind(swiper),\n    prependSlide: prependSlide.bind(swiper),\n    addSlide: addSlide.bind(swiper),\n    removeSlide: removeSlide.bind(swiper),\n    removeAllSlides: removeAllSlides.bind(swiper)\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 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}", "export default function effectVirtualTransitionEnd({\n  swiper,\n  duration,\n  transformEl,\n  allSlides\n}) {\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}", "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({\n  swiper,\n  extendParams,\n  on\n}) {\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}", "import $ from '../../shared/dom.js';\nimport effectInit from '../../shared/effect-init.js';\nexport default function EffectCube({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    cubeEffect: {\n      slideShadows: true,\n      shadow: true,\n      shadowOffset: 20,\n      shadowScale: 0.94\n    }\n  });\n\n  const createSlideShadows = ($slideEl, progress, isHorizontal) => {\n    let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n    let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n    if (shadowBefore.length === 0) {\n      shadowBefore = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}\"></div>`);\n      $slideEl.append(shadowBefore);\n    }\n\n    if (shadowAfter.length === 0) {\n      shadowAfter = $(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}\"></div>`);\n      $slideEl.append(shadowAfter);\n    }\n\n    if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n    if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n  };\n\n  const recreateShadows = () => {\n    // create new ones\n    const isHorizontal = swiper.isHorizontal();\n    swiper.slides.each(slideEl => {\n      const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n      createSlideShadows($(slideEl), progress, isHorizontal);\n    });\n  };\n\n  const setTranslate = () => {\n    const {\n      $el,\n      $wrapperEl,\n      slides,\n      width: swiperWidth,\n      height: swiperHeight,\n      rtlTranslate: rtl,\n      size: swiperSize,\n      browser\n    } = swiper;\n    const params = swiper.params.cubeEffect;\n    const isHorizontal = swiper.isHorizontal();\n    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n    let wrapperRotate = 0;\n    let $cubeShadowEl;\n\n    if (params.shadow) {\n      if (isHorizontal) {\n        $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n\n        if ($cubeShadowEl.length === 0) {\n          $cubeShadowEl = $('<div class=\"swiper-cube-shadow\"></div>');\n          $wrapperEl.append($cubeShadowEl);\n        }\n\n        $cubeShadowEl.css({\n          height: `${swiperWidth}px`\n        });\n      } else {\n        $cubeShadowEl = $el.find('.swiper-cube-shadow');\n\n        if ($cubeShadowEl.length === 0) {\n          $cubeShadowEl = $('<div class=\"swiper-cube-shadow\"></div>');\n          $el.append($cubeShadowEl);\n        }\n      }\n    }\n\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = slides.eq(i);\n      let slideIndex = i;\n\n      if (isVirtual) {\n        slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n      }\n\n      let slideAngle = slideIndex * 90;\n      let round = Math.floor(slideAngle / 360);\n\n      if (rtl) {\n        slideAngle = -slideAngle;\n        round = Math.floor(-slideAngle / 360);\n      }\n\n      const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n      let tx = 0;\n      let ty = 0;\n      let tz = 0;\n\n      if (slideIndex % 4 === 0) {\n        tx = -round * 4 * swiperSize;\n        tz = 0;\n      } else if ((slideIndex - 1) % 4 === 0) {\n        tx = 0;\n        tz = -round * 4 * swiperSize;\n      } else if ((slideIndex - 2) % 4 === 0) {\n        tx = swiperSize + round * 4 * swiperSize;\n        tz = swiperSize;\n      } else if ((slideIndex - 3) % 4 === 0) {\n        tx = -swiperSize;\n        tz = 3 * swiperSize + swiperSize * 4 * round;\n      }\n\n      if (rtl) {\n        tx = -tx;\n      }\n\n      if (!isHorizontal) {\n        ty = tx;\n        tx = 0;\n      }\n\n      const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n\n      if (progress <= 1 && progress > -1) {\n        wrapperRotate = slideIndex * 90 + progress * 90;\n        if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n      }\n\n      $slideEl.transform(transform);\n\n      if (params.slideShadows) {\n        createSlideShadows($slideEl, progress, isHorizontal);\n      }\n    }\n\n    $wrapperEl.css({\n      '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n      'transform-origin': `50% 50% -${swiperSize / 2}px`\n    });\n\n    if (params.shadow) {\n      if (isHorizontal) {\n        $cubeShadowEl.transform(`translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`);\n      } else {\n        const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n        const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n        const scale1 = params.shadowScale;\n        const scale2 = params.shadowScale / multiplier;\n        const offset = params.shadowOffset;\n        $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`);\n      }\n    }\n\n    const zFactor = browser.isSafari || browser.isWebView ? -swiperSize / 2 : 0;\n    $wrapperEl.transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`);\n    $wrapperEl[0].style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);\n  };\n\n  const setTransition = duration => {\n    const {\n      $el,\n      slides\n    } = swiper;\n    slides.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n\n    if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n      $el.find('.swiper-cube-shadow').transition(duration);\n    }\n  };\n\n  effectInit({\n    effect: 'cube',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    recreateShadows,\n    getEffectParams: () => swiper.params.cubeEffect,\n    perspective: () => true,\n    overwriteParams: () => ({\n      slidesPerView: 1,\n      slidesPerGroup: 1,\n      watchSlidesProgress: true,\n      resistanceRatio: 0,\n      spaceBetween: 0,\n      centeredSlides: false,\n      virtualTranslate: true\n    })\n  });\n}", "import $ from './dom.js';\nexport default function createShadow(params, $slideEl, side) {\n  const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}`;\n  const $shadowContainer = params.transformEl ? $slideEl.find(params.transformEl) : $slideEl;\n  let $shadowEl = $shadowContainer.children(`.${shadowClass}`);\n\n  if (!$shadowEl.length) {\n    $shadowEl = $(`<div class=\"swiper-slide-shadow${side ? `-${side}` : ''}\"></div>`);\n    $shadowContainer.append($shadowEl);\n  }\n\n  return $shadowEl;\n}", "import $ from '../../shared/dom.js';\nimport createShadow from '../../shared/create-shadow.js';\nimport 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 EffectFlip({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    flipEffect: {\n      slideShadows: true,\n      limitRotation: true,\n      transformEl: null\n    }\n  });\n\n  const createSlideShadows = ($slideEl, progress, params) => {\n    let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n    let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n    if (shadowBefore.length === 0) {\n      shadowBefore = createShadow(params, $slideEl, swiper.isHorizontal() ? 'left' : 'top');\n    }\n\n    if (shadowAfter.length === 0) {\n      shadowAfter = createShadow(params, $slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n    }\n\n    if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n    if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n  };\n\n  const recreateShadows = () => {\n    // Set shadows\n    const params = swiper.params.flipEffect;\n    swiper.slides.each(slideEl => {\n      const $slideEl = $(slideEl);\n      let progress = $slideEl[0].progress;\n\n      if (swiper.params.flipEffect.limitRotation) {\n        progress = Math.max(Math.min(slideEl.progress, 1), -1);\n      }\n\n      createSlideShadows($slideEl, progress, params);\n    });\n  };\n\n  const setTranslate = () => {\n    const {\n      slides,\n      rtlTranslate: rtl\n    } = swiper;\n    const params = swiper.params.flipEffect;\n\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = slides.eq(i);\n      let progress = $slideEl[0].progress;\n\n      if (swiper.params.flipEffect.limitRotation) {\n        progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n      }\n\n      const offset = $slideEl[0].swiperSlideOffset;\n      const rotate = -180 * progress;\n      let rotateY = rotate;\n      let rotateX = 0;\n      let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n      let ty = 0;\n\n      if (!swiper.isHorizontal()) {\n        ty = tx;\n        tx = 0;\n        rotateX = -rotateY;\n        rotateY = 0;\n      } else if (rtl) {\n        rotateY = -rotateY;\n      }\n\n      $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n      if (params.slideShadows) {\n        createSlideShadows($slideEl, progress, params);\n      }\n\n      const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n      const $targetEl = effectTarget(params, $slideEl);\n      $targetEl.transform(transform);\n    }\n  };\n\n  const setTransition = duration => {\n    const {\n      transformEl\n    } = swiper.params.flipEffect;\n    const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n    $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n    effectVirtualTransitionEnd({\n      swiper,\n      duration,\n      transformEl\n    });\n  };\n\n  effectInit({\n    effect: 'flip',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    recreateShadows,\n    getEffectParams: () => swiper.params.flipEffect,\n    perspective: () => true,\n    overwriteParams: () => ({\n      slidesPerView: 1,\n      slidesPerGroup: 1,\n      watchSlidesProgress: true,\n      spaceBetween: 0,\n      virtualTranslate: !swiper.params.cssMode\n    })\n  });\n}", "import createShadow from '../../shared/create-shadow.js';\nimport effectInit from '../../shared/effect-init.js';\nimport effectTarget from '../../shared/effect-target.js';\nexport default function EffectCoverflow({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    coverflowEffect: {\n      rotate: 50,\n      stretch: 0,\n      depth: 100,\n      scale: 1,\n      modifier: 1,\n      slideShadows: true,\n      transformEl: null\n    }\n  });\n\n  const setTranslate = () => {\n    const {\n      width: swiperWidth,\n      height: swiperHeight,\n      slides,\n      slidesSizesGrid\n    } = swiper;\n    const params = swiper.params.coverflowEffect;\n    const isHorizontal = swiper.isHorizontal();\n    const transform = swiper.translate;\n    const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n    const rotate = isHorizontal ? params.rotate : -params.rotate;\n    const translate = params.depth; // Each slide offset from center\n\n    for (let i = 0, length = slides.length; i < length; i += 1) {\n      const $slideEl = slides.eq(i);\n      const slideSize = slidesSizesGrid[i];\n      const slideOffset = $slideEl[0].swiperSlideOffset;\n      const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;\n      const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;\n      let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n      let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; // var rotateZ = 0\n\n      let translateZ = -translate * Math.abs(offsetMultiplier);\n      let stretch = params.stretch; // Allow percentage to make a relative stretch for responsive sliders\n\n      if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n        stretch = parseFloat(params.stretch) / 100 * slideSize;\n      }\n\n      let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n      let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n      let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); // Fix for ultra small values\n\n      if (Math.abs(translateX) < 0.001) translateX = 0;\n      if (Math.abs(translateY) < 0.001) translateY = 0;\n      if (Math.abs(translateZ) < 0.001) translateZ = 0;\n      if (Math.abs(rotateY) < 0.001) rotateY = 0;\n      if (Math.abs(rotateX) < 0.001) rotateX = 0;\n      if (Math.abs(scale) < 0.001) scale = 0;\n      const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px)  rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n      const $targetEl = effectTarget(params, $slideEl);\n      $targetEl.transform(slideTransform);\n      $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n\n      if (params.slideShadows) {\n        // Set shadows\n        let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n        let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n\n        if ($shadowBeforeEl.length === 0) {\n          $shadowBeforeEl = createShadow(params, $slideEl, isHorizontal ? 'left' : 'top');\n        }\n\n        if ($shadowAfterEl.length === 0) {\n          $shadowAfterEl = createShadow(params, $slideEl, isHorizontal ? 'right' : 'bottom');\n        }\n\n        if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n        if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n      }\n    }\n  };\n\n  const setTransition = duration => {\n    const {\n      transformEl\n    } = swiper.params.coverflowEffect;\n    const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n    $transitionElements.transition(duration).find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').transition(duration);\n  };\n\n  effectInit({\n    effect: 'coverflow',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    perspective: () => true,\n    overwriteParams: () => ({\n      watchSlidesProgress: true\n    })\n  });\n}", "import createShadow from '../../shared/create-shadow.js';\nimport 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 EffectCreative({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    creativeEffect: {\n      transformEl: null,\n      limitProgress: 1,\n      shadowPerProgress: false,\n      progressMultiplier: 1,\n      perspective: true,\n      prev: {\n        translate: [0, 0, 0],\n        rotate: [0, 0, 0],\n        opacity: 1,\n        scale: 1\n      },\n      next: {\n        translate: [0, 0, 0],\n        rotate: [0, 0, 0],\n        opacity: 1,\n        scale: 1\n      }\n    }\n  });\n\n  const getTranslateValue = value => {\n    if (typeof value === 'string') return value;\n    return `${value}px`;\n  };\n\n  const setTranslate = () => {\n    const {\n      slides,\n      $wrapperEl,\n      slidesSizesGrid\n    } = swiper;\n    const params = swiper.params.creativeEffect;\n    const {\n      progressMultiplier: multiplier\n    } = params;\n    const isCenteredSlides = swiper.params.centeredSlides;\n\n    if (isCenteredSlides) {\n      const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n      $wrapperEl.transform(`translateX(calc(50% - ${margin}px))`);\n    }\n\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = slides.eq(i);\n      const slideProgress = $slideEl[0].progress;\n      const progress = Math.min(Math.max($slideEl[0].progress, -params.limitProgress), params.limitProgress);\n      let originalProgress = progress;\n\n      if (!isCenteredSlides) {\n        originalProgress = Math.min(Math.max($slideEl[0].originalProgress, -params.limitProgress), params.limitProgress);\n      }\n\n      const offset = $slideEl[0].swiperSlideOffset;\n      const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n      const r = [0, 0, 0];\n      let custom = false;\n\n      if (!swiper.isHorizontal()) {\n        t[1] = t[0];\n        t[0] = 0;\n      }\n\n      let data = {\n        translate: [0, 0, 0],\n        rotate: [0, 0, 0],\n        scale: 1,\n        opacity: 1\n      };\n\n      if (progress < 0) {\n        data = params.next;\n        custom = true;\n      } else if (progress > 0) {\n        data = params.prev;\n        custom = true;\n      } // set translate\n\n\n      t.forEach((value, index) => {\n        t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\n      }); // set rotates\n\n      r.forEach((value, index) => {\n        r[index] = data.rotate[index] * Math.abs(progress * multiplier);\n      });\n      $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n      const translateString = t.join(', ');\n      const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;\n      const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n      const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;\n      const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; // Set shadows\n\n      if (custom && data.shadow || !custom) {\n        let $shadowEl = $slideEl.children('.swiper-slide-shadow');\n\n        if ($shadowEl.length === 0 && data.shadow) {\n          $shadowEl = createShadow(params, $slideEl);\n        }\n\n        if ($shadowEl.length) {\n          const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\n          $shadowEl[0].style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n        }\n      }\n\n      const $targetEl = effectTarget(params, $slideEl);\n      $targetEl.transform(transform).css({\n        opacity: opacityString\n      });\n\n      if (data.origin) {\n        $targetEl.css('transform-origin', data.origin);\n      }\n    }\n  };\n\n  const setTransition = duration => {\n    const {\n      transformEl\n    } = swiper.params.creativeEffect;\n    const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n    $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n    effectVirtualTransitionEnd({\n      swiper,\n      duration,\n      transformEl,\n      allSlides: true\n    });\n  };\n\n  effectInit({\n    effect: 'creative',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    perspective: () => swiper.params.creativeEffect.perspective,\n    overwriteParams: () => ({\n      watchSlidesProgress: true,\n      virtualTranslate: !swiper.params.cssMode\n    })\n  });\n}", "import createShadow from '../../shared/create-shadow.js';\nimport 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 EffectCards({\n  swiper,\n  extendParams,\n  on\n}) {\n  extendParams({\n    cardsEffect: {\n      slideShadows: true,\n      transformEl: null,\n      rotate: true,\n      perSlideRotate: 2,\n      perSlideOffset: 8\n    }\n  });\n\n  const setTranslate = () => {\n    const {\n      slides,\n      activeIndex\n    } = swiper;\n    const params = swiper.params.cardsEffect;\n    const {\n      startTranslate,\n      isTouched\n    } = swiper.touchEventsData;\n    const currentTranslate = swiper.translate;\n\n    for (let i = 0; i < slides.length; i += 1) {\n      const $slideEl = slides.eq(i);\n      const slideProgress = $slideEl[0].progress;\n      const progress = Math.min(Math.max(slideProgress, -4), 4);\n      let offset = $slideEl[0].swiperSlideOffset;\n\n      if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n        swiper.$wrapperEl.transform(`translateX(${swiper.minTranslate()}px)`);\n      }\n\n      if (swiper.params.centeredSlides && swiper.params.cssMode) {\n        offset -= slides[0].swiperSlideOffset;\n      }\n\n      let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n      let tY = 0;\n      const tZ = -100 * Math.abs(progress);\n      let scale = 1;\n      let rotate = -params.perSlideRotate * progress;\n      let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;\n      const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;\n      const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\n      const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;\n\n      if (isSwipeToNext || isSwipeToPrev) {\n        const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n        rotate += -28 * progress * subProgress;\n        scale += -0.5 * subProgress;\n        tXAdd += 96 * subProgress;\n        tY = `${-25 * subProgress * Math.abs(progress)}%`;\n      }\n\n      if (progress < 0) {\n        // next\n        tX = `calc(${tX}px + (${tXAdd * Math.abs(progress)}%))`;\n      } else if (progress > 0) {\n        // prev\n        tX = `calc(${tX}px + (-${tXAdd * Math.abs(progress)}%))`;\n      } else {\n        tX = `${tX}px`;\n      }\n\n      if (!swiper.isHorizontal()) {\n        const prevY = tY;\n        tY = tX;\n        tX = prevY;\n      }\n\n      const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n      const transform = `\n        translate3d(${tX}, ${tY}, ${tZ}px)\n        rotateZ(${params.rotate ? rotate : 0}deg)\n        scale(${scaleString})\n      `;\n\n      if (params.slideShadows) {\n        // Set shadows\n        let $shadowEl = $slideEl.find('.swiper-slide-shadow');\n\n        if ($shadowEl.length === 0) {\n          $shadowEl = createShadow(params, $slideEl);\n        }\n\n        if ($shadowEl.length) $shadowEl[0].style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n      }\n\n      $slideEl[0].style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n      const $targetEl = effectTarget(params, $slideEl);\n      $targetEl.transform(transform);\n    }\n  };\n\n  const setTransition = duration => {\n    const {\n      transformEl\n    } = swiper.params.cardsEffect;\n    const $transitionElements = transformEl ? swiper.slides.find(transformEl) : swiper.slides;\n    $transitionElements.transition(duration).find('.swiper-slide-shadow').transition(duration);\n    effectVirtualTransitionEnd({\n      swiper,\n      duration,\n      transformEl\n    });\n  };\n\n  effectInit({\n    effect: 'cards',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    perspective: () => true,\n    overwriteParams: () => ({\n      watchSlidesProgress: true,\n      virtualTranslate: !swiper.params.cssMode\n    })\n  });\n}", "/**\n * Swiper 8.4.7\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2023 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: January 30, 2023\n */\n\nexport { default as Swiper, default } from './core/core.js';\nexport { default as Virtual } from './modules/virtual/virtual.js';\nexport { default as Keyboard } from './modules/keyboard/keyboard.js';\nexport { default as Mousewheel } from './modules/mousewheel/mousewheel.js';\nexport { default as Navigation } from './modules/navigation/navigation.js';\nexport { default as Pagination } from './modules/pagination/pagination.js';\nexport { default as Scrollbar } from './modules/scrollbar/scrollbar.js';\nexport { default as Parallax } from './modules/parallax/parallax.js';\nexport { default as Zoom } from './modules/zoom/zoom.js';\nexport { default as Lazy } from './modules/lazy/lazy.js';\nexport { default as Controller } from './modules/controller/controller.js';\nexport { default as A11y } from './modules/a11y/a11y.js';\nexport { default as History } from './modules/history/history.js';\nexport { default as HashNavigation } from './modules/hash-navigation/hash-navigation.js';\nexport { default as Autoplay } from './modules/autoplay/autoplay.js';\nexport { default as Thumbs } from './modules/thumbs/thumbs.js';\nexport { default as FreeMode } from './modules/free-mode/free-mode.js';\nexport { default as Grid } from './modules/grid/grid.js';\nexport { default as Manipulation } from './modules/manipulation/manipulation.js';\nexport { default as EffectFade } from './modules/effect-fade/effect-fade.js';\nexport { default as EffectCube } from './modules/effect-cube/effect-cube.js';\nexport { default as EffectFlip } from './modules/effect-flip/effect-flip.js';\nexport { default as EffectCoverflow } from './modules/effect-coverflow/effect-coverflow.js';\nexport { default as EffectCreative } from './modules/effect-creative/effect-creative.js';\nexport { default as EffectCards } from './modules/effect-cards/effect-cards.js';", "!function(e,t){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define([],t):\"object\"==typeof exports?exports.AOS=t():e.AOS=t()}(this,function(){return function(e){function t(o){if(n[o])return n[o].exports;var i=n[o]={exports:{},id:o,loaded:!1};return e[o].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p=\"dist/\",t(0)}([function(e,t,n){\"use strict\";function o(e){return e&&e.__esModule?e:{default:e}}var i=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},r=n(1),a=(o(r),n(6)),u=o(a),c=n(7),s=o(c),f=n(8),d=o(f),l=n(9),p=o(l),m=n(10),b=o(m),v=n(11),y=o(v),g=n(14),h=o(g),w=[],k=!1,x={offset:120,delay:0,easing:\"ease\",duration:400,disable:!1,once:!1,startEvent:\"DOMContentLoaded\",throttleDelay:99,debounceDelay:50,disableMutationObserver:!1},j=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(e&&(k=!0),k)return w=(0,y.default)(w,x),(0,b.default)(w,x.once),w},O=function(){w=(0,h.default)(),j()},M=function(){w.forEach(function(e,t){e.node.removeAttribute(\"data-aos\"),e.node.removeAttribute(\"data-aos-easing\"),e.node.removeAttribute(\"data-aos-duration\"),e.node.removeAttribute(\"data-aos-delay\")})},S=function(e){return e===!0||\"mobile\"===e&&p.default.mobile()||\"phone\"===e&&p.default.phone()||\"tablet\"===e&&p.default.tablet()||\"function\"==typeof e&&e()===!0},_=function(e){x=i(x,e),w=(0,h.default)();var t=document.all&&!window.atob;return S(x.disable)||t?M():(x.disableMutationObserver||d.default.isSupported()||(console.info('\\n      aos: MutationObserver is not supported on this browser,\\n      code mutations observing has been disabled.\\n      You may have to call \"refreshHard()\" by yourself.\\n    '),x.disableMutationObserver=!0),document.querySelector(\"body\").setAttribute(\"data-aos-easing\",x.easing),document.querySelector(\"body\").setAttribute(\"data-aos-duration\",x.duration),document.querySelector(\"body\").setAttribute(\"data-aos-delay\",x.delay),\"DOMContentLoaded\"===x.startEvent&&[\"complete\",\"interactive\"].indexOf(document.readyState)>-1?j(!0):\"load\"===x.startEvent?window.addEventListener(x.startEvent,function(){j(!0)}):document.addEventListener(x.startEvent,function(){j(!0)}),window.addEventListener(\"resize\",(0,s.default)(j,x.debounceDelay,!0)),window.addEventListener(\"orientationchange\",(0,s.default)(j,x.debounceDelay,!0)),window.addEventListener(\"scroll\",(0,u.default)(function(){(0,b.default)(w,x.once)},x.throttleDelay)),x.disableMutationObserver||d.default.ready(\"[data-aos]\",O),w)};e.exports={init:_,refresh:j,refreshHard:O}},function(e,t){},,,,,function(e,t){(function(t){\"use strict\";function n(e,t,n){function o(t){var n=b,o=v;return b=v=void 0,k=t,g=e.apply(o,n)}function r(e){return k=e,h=setTimeout(f,t),M?o(e):g}function a(e){var n=e-w,o=e-k,i=t-n;return S?j(i,y-o):i}function c(e){var n=e-w,o=e-k;return void 0===w||n>=t||n<0||S&&o>=y}function f(){var e=O();return c(e)?d(e):void(h=setTimeout(f,a(e)))}function d(e){return h=void 0,_&&b?o(e):(b=v=void 0,g)}function l(){void 0!==h&&clearTimeout(h),k=0,b=w=v=h=void 0}function p(){return void 0===h?g:d(O())}function m(){var e=O(),n=c(e);if(b=arguments,v=this,w=e,n){if(void 0===h)return r(w);if(S)return h=setTimeout(f,t),o(w)}return void 0===h&&(h=setTimeout(f,t)),g}var b,v,y,g,h,w,k=0,M=!1,S=!1,_=!0;if(\"function\"!=typeof e)throw new TypeError(s);return t=u(t)||0,i(n)&&(M=!!n.leading,S=\"maxWait\"in n,y=S?x(u(n.maxWait)||0,t):y,_=\"trailing\"in n?!!n.trailing:_),m.cancel=l,m.flush=p,m}function o(e,t,o){var r=!0,a=!0;if(\"function\"!=typeof e)throw new TypeError(s);return i(o)&&(r=\"leading\"in o?!!o.leading:r,a=\"trailing\"in o?!!o.trailing:a),n(e,t,{leading:r,maxWait:t,trailing:a})}function i(e){var t=\"undefined\"==typeof e?\"undefined\":c(e);return!!e&&(\"object\"==t||\"function\"==t)}function r(e){return!!e&&\"object\"==(\"undefined\"==typeof e?\"undefined\":c(e))}function a(e){return\"symbol\"==(\"undefined\"==typeof e?\"undefined\":c(e))||r(e)&&k.call(e)==d}function u(e){if(\"number\"==typeof e)return e;if(a(e))return f;if(i(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=i(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(l,\"\");var n=m.test(e);return n||b.test(e)?v(e.slice(2),n?2:8):p.test(e)?f:+e}var c=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},s=\"Expected a function\",f=NaN,d=\"[object Symbol]\",l=/^\\s+|\\s+$/g,p=/^[-+]0x[0-9a-f]+$/i,m=/^0b[01]+$/i,b=/^0o[0-7]+$/i,v=parseInt,y=\"object\"==(\"undefined\"==typeof t?\"undefined\":c(t))&&t&&t.Object===Object&&t,g=\"object\"==(\"undefined\"==typeof self?\"undefined\":c(self))&&self&&self.Object===Object&&self,h=y||g||Function(\"return this\")(),w=Object.prototype,k=w.toString,x=Math.max,j=Math.min,O=function(){return h.Date.now()};e.exports=o}).call(t,function(){return this}())},function(e,t){(function(t){\"use strict\";function n(e,t,n){function i(t){var n=b,o=v;return b=v=void 0,O=t,g=e.apply(o,n)}function r(e){return O=e,h=setTimeout(f,t),M?i(e):g}function u(e){var n=e-w,o=e-O,i=t-n;return S?x(i,y-o):i}function s(e){var n=e-w,o=e-O;return void 0===w||n>=t||n<0||S&&o>=y}function f(){var e=j();return s(e)?d(e):void(h=setTimeout(f,u(e)))}function d(e){return h=void 0,_&&b?i(e):(b=v=void 0,g)}function l(){void 0!==h&&clearTimeout(h),O=0,b=w=v=h=void 0}function p(){return void 0===h?g:d(j())}function m(){var e=j(),n=s(e);if(b=arguments,v=this,w=e,n){if(void 0===h)return r(w);if(S)return h=setTimeout(f,t),i(w)}return void 0===h&&(h=setTimeout(f,t)),g}var b,v,y,g,h,w,O=0,M=!1,S=!1,_=!0;if(\"function\"!=typeof e)throw new TypeError(c);return t=a(t)||0,o(n)&&(M=!!n.leading,S=\"maxWait\"in n,y=S?k(a(n.maxWait)||0,t):y,_=\"trailing\"in n?!!n.trailing:_),m.cancel=l,m.flush=p,m}function o(e){var t=\"undefined\"==typeof e?\"undefined\":u(e);return!!e&&(\"object\"==t||\"function\"==t)}function i(e){return!!e&&\"object\"==(\"undefined\"==typeof e?\"undefined\":u(e))}function r(e){return\"symbol\"==(\"undefined\"==typeof e?\"undefined\":u(e))||i(e)&&w.call(e)==f}function a(e){if(\"number\"==typeof e)return e;if(r(e))return s;if(o(e)){var t=\"function\"==typeof e.valueOf?e.valueOf():e;e=o(t)?t+\"\":t}if(\"string\"!=typeof e)return 0===e?e:+e;e=e.replace(d,\"\");var n=p.test(e);return n||m.test(e)?b(e.slice(2),n?2:8):l.test(e)?s:+e}var u=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},c=\"Expected a function\",s=NaN,f=\"[object Symbol]\",d=/^\\s+|\\s+$/g,l=/^[-+]0x[0-9a-f]+$/i,p=/^0b[01]+$/i,m=/^0o[0-7]+$/i,b=parseInt,v=\"object\"==(\"undefined\"==typeof t?\"undefined\":u(t))&&t&&t.Object===Object&&t,y=\"object\"==(\"undefined\"==typeof self?\"undefined\":u(self))&&self&&self.Object===Object&&self,g=v||y||Function(\"return this\")(),h=Object.prototype,w=h.toString,k=Math.max,x=Math.min,j=function(){return g.Date.now()};e.exports=n}).call(t,function(){return this}())},function(e,t){\"use strict\";function n(e){var t=void 0,o=void 0,i=void 0;for(t=0;t<e.length;t+=1){if(o=e[t],o.dataset&&o.dataset.aos)return!0;if(i=o.children&&n(o.children))return!0}return!1}function o(){return window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver}function i(){return!!o()}function r(e,t){var n=window.document,i=o(),r=new i(a);u=t,r.observe(n.documentElement,{childList:!0,subtree:!0,removedNodes:!0})}function a(e){e&&e.forEach(function(e){var t=Array.prototype.slice.call(e.addedNodes),o=Array.prototype.slice.call(e.removedNodes),i=t.concat(o);if(n(i))return u()})}Object.defineProperty(t,\"__esModule\",{value:!0});var u=function(){};t.default={isSupported:i,ready:r}},function(e,t){\"use strict\";function n(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function o(){return navigator.userAgent||navigator.vendor||window.opera||\"\"}Object.defineProperty(t,\"__esModule\",{value:!0});var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(t,n,o){return n&&e(t.prototype,n),o&&e(t,o),t}}(),r=/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i,a=/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i,u=/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i,c=/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i,s=function(){function e(){n(this,e)}return i(e,[{key:\"phone\",value:function(){var e=o();return!(!r.test(e)&&!a.test(e.substr(0,4)))}},{key:\"mobile\",value:function(){var e=o();return!(!u.test(e)&&!c.test(e.substr(0,4)))}},{key:\"tablet\",value:function(){return this.mobile()&&!this.phone()}}]),e}();t.default=new s},function(e,t){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=function(e,t,n){var o=e.node.getAttribute(\"data-aos-once\");t>e.position?e.node.classList.add(\"aos-animate\"):\"undefined\"!=typeof o&&(\"false\"===o||!n&&\"true\"!==o)&&e.node.classList.remove(\"aos-animate\")},o=function(e,t){var o=window.pageYOffset,i=window.innerHeight;e.forEach(function(e,r){n(e,i+o,t)})};t.default=o},function(e,t,n){\"use strict\";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(12),r=o(i),a=function(e,t){return e.forEach(function(e,n){e.node.classList.add(\"aos-init\"),e.position=(0,r.default)(e.node,t.offset)}),e};t.default=a},function(e,t,n){\"use strict\";function o(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,\"__esModule\",{value:!0});var i=n(13),r=o(i),a=function(e,t){var n=0,o=0,i=window.innerHeight,a={offset:e.getAttribute(\"data-aos-offset\"),anchor:e.getAttribute(\"data-aos-anchor\"),anchorPlacement:e.getAttribute(\"data-aos-anchor-placement\")};switch(a.offset&&!isNaN(a.offset)&&(o=parseInt(a.offset)),a.anchor&&document.querySelectorAll(a.anchor)&&(e=document.querySelectorAll(a.anchor)[0]),n=(0,r.default)(e).top,a.anchorPlacement){case\"top-bottom\":break;case\"center-bottom\":n+=e.offsetHeight/2;break;case\"bottom-bottom\":n+=e.offsetHeight;break;case\"top-center\":n+=i/2;break;case\"bottom-center\":n+=i/2+e.offsetHeight;break;case\"center-center\":n+=i/2+e.offsetHeight/2;break;case\"top-top\":n+=i;break;case\"bottom-top\":n+=e.offsetHeight+i;break;case\"center-top\":n+=e.offsetHeight/2+i}return a.anchorPlacement||a.offset||isNaN(t)||(o=t),n+o};t.default=a},function(e,t){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=function(e){for(var t=0,n=0;e&&!isNaN(e.offsetLeft)&&!isNaN(e.offsetTop);)t+=e.offsetLeft-(\"BODY\"!=e.tagName?e.scrollLeft:0),n+=e.offsetTop-(\"BODY\"!=e.tagName?e.scrollTop:0),e=e.offsetParent;return{top:n,left:t}};t.default=n},function(e,t){\"use strict\";Object.defineProperty(t,\"__esModule\",{value:!0});var n=function(e){return e=e||document.querySelectorAll(\"[data-aos]\"),Array.prototype.map.call(e,function(e){return{node:e}})};t.default=n}])});", "const t=t=>\"object\"==typeof t&&null!==t&&t.constructor===Object&&\"[object Object]\"===Object.prototype.toString.call(t),e=(i,...n)=>{const s=n.length;for(let o=0;o<s;o++){const s=n[o]||{};Object.entries(s).forEach((([n,s])=>{const o=Array.isArray(s)?[]:{};i[n]||Object.assign(i,{[n]:o}),t(s)?Object.assign(i[n],e(o,s)):Array.isArray(s)?Object.assign(i,{[n]:[...s]}):Object.assign(i,{[n]:s})}))}return i},i=function(t){return(new DOMParser).parseFromString(t,\"text/html\").body.firstChild},n=t=>t&&null!==t&&t instanceof Element&&\"nodeType\"in t,s=function(t){const e=window.pageYOffset,i=window.pageYOffset+window.innerHeight;if(!n(t))return 0;const s=t.getBoundingClientRect(),o=s.y+window.pageYOffset,a=s.y+s.height+window.pageYOffset;if(e>a||i<o)return 0;if(e<o&&i>a)return 100;if(o<e&&a>i)return 100;let r=s.height;o<e&&(r-=window.pageYOffset-o),a>i&&(r-=a-i);const l=r/window.innerHeight*100;return Math.round(l)},o=!(\"undefined\"==typeof window||!window.document||!window.document.createElement);let a;const r=[\"a[href]\",\"area[href]\",'input:not([disabled]):not([type=\"hidden\"]):not([aria-hidden])',\"select:not([disabled]):not([aria-hidden])\",\"textarea:not([disabled]):not([aria-hidden])\",\"button:not([disabled]):not([aria-hidden]):not(.fancybox-focus-guard)\",\"iframe\",\"object\",\"embed\",\"video\",\"audio\",\"[contenteditable]\",'[tabindex]:not([tabindex^=\"-\"]):not([disabled]):not([aria-hidden])'].join(\",\"),l=t=>{if(t&&o){void 0===a&&document.createElement(\"div\").focus({get preventScroll(){return a=!0,!1}});try{if(a)t.focus({preventScroll:!0});else{const e=window.pageXOffset||document.body.scrollTop,i=window.pageYOffset||document.body.scrollLeft;t.focus(),document.body.scrollTo({top:e,left:i,behavior:\"auto\"})}}catch(t){}}},c='<div class=\"f-spinner\"><svg viewBox=\"0 0 50 50\"><circle cx=\"25\" cy=\"25\" r=\"20\"></circle><circle cx=\"25\" cy=\"25\" r=\"20\"></circle></svg></div>',h={PANUP:\"Move up\",PANDOWN:\"Move down\",PANLEFT:\"Move left\",PANRIGHT:\"Move right\",ZOOMIN:\"Zoom in\",ZOOMOUT:\"Zoom out\",TOGGLEZOOM:\"Toggle zoom level\",TOGGLE1TO1:\"Toggle zoom level\",ITERATEZOOM:\"Toggle zoom level\",ROTATECCW:\"Rotate counterclockwise\",ROTATECW:\"Rotate clockwise\",FLIPX:\"Flip horizontally\",FLIPY:\"Flip vertically\",FITX:\"Fit horizontally\",FITY:\"Fit vertically\",RESET:\"Reset\",TOGGLEFS:\"Toggle fullscreen\"},d={dragToClose:!0,hideScrollbar:!0,Carousel:{classes:{container:\"fancybox__carousel\",viewport:\"fancybox__viewport\",track:\"fancybox__track\",slide:\"fancybox__slide\"}},contentClick:\"toggleZoom\",contentDblClick:!1,backdropClick:\"close\",animated:!0,idle:3500,showClass:\"f-zoomInUp\",hideClass:\"f-fadeOut\",commonCaption:!1,parentEl:null,startIndex:0,l10n:Object.assign(Object.assign({},h),{CLOSE:\"Close\",NEXT:\"Next\",PREV:\"Previous\",MODAL:\"You can close this modal content with the ESC key\",ERROR:\"Something Went Wrong, Please Try Again Later\",IMAGE_ERROR:\"Image Not Found\",ELEMENT_NOT_FOUND:\"HTML Element Not Found\",AJAX_NOT_FOUND:\"Error Loading AJAX : Not Found\",AJAX_FORBIDDEN:\"Error Loading AJAX : Forbidden\",IFRAME_ERROR:\"Error Loading Page\",TOGGLE_ZOOM:\"Toggle zoom level\",TOGGLE_THUMBS:\"Toggle thumbnails\",TOGGLE_SLIDESHOW:\"Toggle slideshow\",TOGGLE_FULLSCREEN:\"Toggle full-screen mode\",DOWNLOAD:\"Download\"}),tpl:{closeButton:'<button data-fancybox-close class=\"f-button is-close-btn\" title=\"{{CLOSE}}\"><svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" tabindex=\"-1\"><path d=\"M20 20L4 4m16 0L4 20\"/></svg></button>',main:'<div class=\"fancybox__container\" role=\"dialog\" aria-modal=\"true\" aria-label=\"{{MODAL}}\" tabindex=\"-1\">\\n    <div class=\"fancybox__backdrop\"></div>\\n    <div class=\"fancybox__carousel\"></div>\\n    <div class=\"fancybox__footer\"></div>\\n  </div>'},groupAll:!1,groupAttr:\"data-fancybox\",defaultType:\"image\",defaultDisplay:\"block\",autoFocus:!0,trapFocus:!0,placeFocusBack:!0,closeButton:\"auto\",keyboard:{Escape:\"close\",Delete:\"close\",Backspace:\"close\",PageUp:\"next\",PageDown:\"prev\",ArrowUp:\"prev\",ArrowDown:\"next\",ArrowRight:\"next\",ArrowLeft:\"prev\"},Fullscreen:{autoStart:!1},compact:()=>window.matchMedia(\"(max-width: 578px), (max-height: 578px)\").matches,wheel:\"zoom\"};var u,p;!function(t){t[t.Init=0]=\"Init\",t[t.Ready=1]=\"Ready\",t[t.Closing=2]=\"Closing\",t[t.CustomClosing=3]=\"CustomClosing\",t[t.Destroy=4]=\"Destroy\"}(u||(u={})),function(t){t[t.Loading=0]=\"Loading\",t[t.Opening=1]=\"Opening\",t[t.Ready=2]=\"Ready\",t[t.Closing=3]=\"Closing\"}(p||(p={}));const m=function(t,e){return t.split(\".\").reduce(((t,e)=>\"object\"==typeof t?t[e]:void 0),e)};class f{constructor(t={}){Object.defineProperty(this,\"options\",{enumerable:!0,configurable:!0,writable:!0,value:t}),Object.defineProperty(this,\"events\",{enumerable:!0,configurable:!0,writable:!0,value:new Map}),this.setOptions(t);for(const t of Object.getOwnPropertyNames(Object.getPrototypeOf(this)))t.startsWith(\"on\")&&\"function\"==typeof this[t]&&(this[t]=this[t].bind(this))}setOptions(t){this.options=t?e({},this.constructor.defaults,t):{};for(const[t,e]of Object.entries(this.option(\"on\")||{}))this.on(t,e)}option(t,...e){let i=m(t,this.options);return i&&\"function\"==typeof i&&(i=i.call(this,this,...e)),i}optionFor(t,e,i,...n){let s=m(e,t);var o;\"string\"!=typeof(o=s)||isNaN(o)||isNaN(parseFloat(o))||(s=parseFloat(s)),\"true\"===s&&(s=!0),\"false\"===s&&(s=!1),s&&\"function\"==typeof s&&(s=s.call(this,this,t,...n));let a=m(e,this.options);return a&&\"function\"==typeof a?s=a.call(this,this,t,...n,s):void 0===s&&(s=a),void 0===s?i:s}cn(t){const e=this.options.classes;return e&&e[t]||\"\"}localize(t,e=[]){t=String(t).replace(/\\{\\{(\\w+).?(\\w+)?\\}\\}/g,((t,e,i)=>{let n=\"\";return i?n=this.option(`${e[0]+e.toLowerCase().substring(1)}.l10n.${i}`):e&&(n=this.option(`l10n.${e}`)),n||(n=t),n}));for(let i=0;i<e.length;i++)t=t.split(e[i][0]).join(e[i][1]);return t=t.replace(/\\{\\{(.*?)\\}\\}/g,((t,e)=>e))}on(t,e){let i=[];\"string\"==typeof t?i=t.split(\" \"):Array.isArray(t)&&(i=t),this.events||(this.events=new Map),i.forEach((t=>{let i=this.events.get(t);i||(this.events.set(t,[]),i=[]),i.includes(e)||i.push(e),this.events.set(t,i)}))}off(t,e){let i=[];\"string\"==typeof t?i=t.split(\" \"):Array.isArray(t)&&(i=t),i.forEach((t=>{const i=this.events.get(t);if(Array.isArray(i)){const t=i.indexOf(e);t>-1&&i.splice(t,1)}}))}emit(t,...e){[...this.events.get(t)||[]].forEach((t=>t(this,...e))),\"*\"!==t&&this.emit(\"*\",t,...e)}}Object.defineProperty(f,\"version\",{enumerable:!0,configurable:!0,writable:!0,value:\"5.0.11\"}),Object.defineProperty(f,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:{}});class g extends f{constructor(t={}){super(t),Object.defineProperty(this,\"plugins\",{enumerable:!0,configurable:!0,writable:!0,value:{}})}attachPlugins(t={}){const e=new Map;for(const[i,n]of Object.entries(t)){const t=this.option(i),s=this.plugins[i];s||!1===t?s&&!1===t&&(s.detach(),delete this.plugins[i]):e.set(i,new n(this,t||{}))}for(const[t,i]of e)this.plugins[t]=i,i.attach();this.emit(\"attachPlugins\")}detachPlugins(){for(const t of Object.values(this.plugins))t.detach();return this.plugins={},this.emit(\"detachPlugins\"),this}}class b extends f{constructor(t,e){super(e),Object.defineProperty(this,\"instance\",{enumerable:!0,configurable:!0,writable:!0,value:t})}attach(){}detach(){}}const v=()=>{queueMicrotask((()=>{(()=>{const{slug:t,index:e}=y.parseURL(),i=xt.getInstance();if(i&&!1!==i.option(\"Hash\")){const n=i.carousel;if(t&&n){for(let e of n.slides)if(e.slug&&e.slug===t)return n.slideTo(e.index);if(t===i.option(\"slug\"))return n.slideTo(e-1);const s=i.getSlide(),o=s&&s.triggerEl&&s.triggerEl.dataset;if(o&&o.fancybox===t)return n.slideTo(e-1)}y.hasSilentClose=!0,i.close()}y.startFromUrl()})()}))};class y extends b{constructor(){super(...arguments),Object.defineProperty(this,\"origHash\",{enumerable:!0,configurable:!0,writable:!0,value:\"\"}),Object.defineProperty(this,\"timer\",{enumerable:!0,configurable:!0,writable:!0,value:null})}onChange(){const t=this.instance,e=t.carousel;this.timer&&clearTimeout(this.timer);const i=t.getSlide();if(!e||!i)return;const n=t.isOpeningSlide(i),s=new URL(document.URL).hash;let o,a=i.slug||void 0;o=a||this.instance.option(\"slug\"),!o&&i.triggerEl&&i.triggerEl.dataset&&(o=i.triggerEl.dataset.fancybox);let r=\"\";o&&\"true\"!==o&&(r=\"#\"+o+(!a&&e.slides.length>1?\"-\"+(i.index+1):\"\")),n&&(this.origHash=s!==r?s:\"\"),r&&s!==r&&(this.timer=setTimeout((()=>{try{window.history[n?\"pushState\":\"replaceState\"]({},document.title,window.location.pathname+window.location.search+r)}catch(t){}}),300))}onClose(){if(this.timer&&clearTimeout(this.timer),!0!==y.hasSilentClose)try{window.history.replaceState({},document.title,window.location.pathname+window.location.search+(this.origHash||\"\"))}catch(t){}}attach(){this.instance.on(\"Carousel.ready\",this.onChange),this.instance.on(\"Carousel.change\",this.onChange),this.instance.on(\"close\",this.onClose)}detach(){this.instance.off(\"Carousel.ready\",this.onChange),this.instance.off(\"Carousel.change\",this.onChange),this.instance.off(\"close\",this.onClose)}static parseURL(){const t=window.location.hash.slice(1),e=t.split(\"-\"),i=e[e.length-1],n=i&&/^\\+?\\d+$/.test(i)&&parseInt(e.pop()||\"1\",10)||1;return{hash:t,slug:e.join(\"-\"),index:n}}static startFromUrl(){if(y.hasSilentClose=!1,xt.getInstance()||!1===xt.defaults.Hash)return;const{hash:t,slug:e,index:i}=y.parseURL();if(!e)return;let n=document.querySelector(`[data-slug=\"${t}\"]`);if(n&&n.dispatchEvent(new CustomEvent(\"click\",{bubbles:!0,cancelable:!0})),xt.getInstance())return;const s=document.querySelectorAll(`[data-fancybox=\"${e}\"]`);s.length&&(n=s[i-1],n&&n.dispatchEvent(new CustomEvent(\"click\",{bubbles:!0,cancelable:!0})))}static destroy(){window.removeEventListener(\"hashchange\",v,!1)}}function w(){window.addEventListener(\"hashchange\",v,!1),setTimeout((()=>{y.startFromUrl()}),500)}Object.defineProperty(y,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:{}}),Object.defineProperty(y,\"hasSilentClose\",{enumerable:!0,configurable:!0,writable:!0,value:!1}),o&&(/complete|interactive|loaded/.test(document.readyState)?w():document.addEventListener(\"DOMContentLoaded\",w));const x=(t,e=1e4)=>(t=parseFloat(t+\"\")||0,Math.round((t+Number.EPSILON)*e)/e),E=function(t){if(!(t&&t instanceof Element&&t.offsetParent))return!1;const e=t.scrollHeight>t.clientHeight,i=window.getComputedStyle(t).overflowY,n=-1!==i.indexOf(\"hidden\"),s=-1!==i.indexOf(\"visible\");return e&&!n&&!s},S=function(t,e){return!(!t||t===document.body||e&&t===e)&&(E(t)?t:S(t.parentElement,e))},P=t=>`${t||\"\"}`.split(\" \").filter((t=>!!t)),M=(t,e,i)=>{P(e).forEach((e=>{t&&t.classList.toggle(e,i||!1)}))};class C{constructor(t){Object.defineProperty(this,\"pageX\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,\"pageY\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,\"clientX\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,\"clientY\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,\"id\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,\"time\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,\"nativePointer\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.nativePointer=t,this.pageX=t.pageX,this.pageY=t.pageY,this.clientX=t.clientX,this.clientY=t.clientY,this.id=self.Touch&&t instanceof Touch?t.identifier:-1,this.time=Date.now()}}const T={passive:!1};class O{constructor(t,{start:e=(()=>!0),move:i=(()=>{}),end:n=(()=>{})}){Object.defineProperty(this,\"element\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,\"startCallback\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,\"moveCallback\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,\"endCallback\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,\"currentPointers\",{enumerable:!0,configurable:!0,writable:!0,value:[]}),Object.defineProperty(this,\"startPointers\",{enumerable:!0,configurable:!0,writable:!0,value:[]}),this.element=t,this.startCallback=e,this.moveCallback=i,this.endCallback=n;for(const t of[\"onPointerStart\",\"onTouchStart\",\"onMove\",\"onTouchEnd\",\"onPointerEnd\",\"onWindowBlur\"])this[t]=this[t].bind(this);this.element.addEventListener(\"mousedown\",this.onPointerStart,T),this.element.addEventListener(\"touchstart\",this.onTouchStart,T),this.element.addEventListener(\"touchmove\",this.onMove,T),this.element.addEventListener(\"touchend\",this.onTouchEnd),this.element.addEventListener(\"touchcancel\",this.onTouchEnd)}onPointerStart(t){if(!t.buttons||0!==t.button)return;const e=new C(t);this.currentPointers.some((t=>t.id===e.id))||this.triggerPointerStart(e,t)&&(window.addEventListener(\"mousemove\",this.onMove),window.addEventListener(\"mouseup\",this.onPointerEnd),window.addEventListener(\"blur\",this.onWindowBlur))}onTouchStart(t){for(const e of Array.from(t.changedTouches||[]))this.triggerPointerStart(new C(e),t);window.addEventListener(\"blur\",this.onWindowBlur)}onMove(t){const e=this.currentPointers.slice(),i=\"changedTouches\"in t?Array.from(t.changedTouches||[]).map((t=>new C(t))):[new C(t)],n=[];for(const t of i){const e=this.currentPointers.findIndex((e=>e.id===t.id));e<0||(n.push(t),this.currentPointers[e]=t)}n.length&&this.moveCallback(t,this.currentPointers.slice(),e)}onPointerEnd(t){t.buttons>0&&0!==t.button||(this.triggerPointerEnd(t,new C(t)),window.removeEventListener(\"mousemove\",this.onMove),window.removeEventListener(\"mouseup\",this.onPointerEnd),window.removeEventListener(\"blur\",this.onWindowBlur))}onTouchEnd(t){for(const e of Array.from(t.changedTouches||[]))this.triggerPointerEnd(t,new C(e))}triggerPointerStart(t,e){return!!this.startCallback(e,t,this.currentPointers.slice())&&(this.currentPointers.push(t),this.startPointers.push(t),!0)}triggerPointerEnd(t,e){const i=this.currentPointers.findIndex((t=>t.id===e.id));i<0||(this.currentPointers.splice(i,1),this.startPointers.splice(i,1),this.endCallback(t,e,this.currentPointers.slice()))}onWindowBlur(){this.clear()}clear(){for(;this.currentPointers.length;){const t=this.currentPointers[this.currentPointers.length-1];this.currentPointers.splice(this.currentPointers.length-1,1),this.startPointers.splice(this.currentPointers.length-1,1),this.endCallback(new Event(\"touchend\",{bubbles:!0,cancelable:!0,clientX:t.clientX,clientY:t.clientY}),t,this.currentPointers.slice())}}stop(){this.element.removeEventListener(\"mousedown\",this.onPointerStart,T),this.element.removeEventListener(\"touchstart\",this.onTouchStart,T),this.element.removeEventListener(\"touchmove\",this.onMove,T),this.element.removeEventListener(\"touchend\",this.onTouchEnd),this.element.removeEventListener(\"touchcancel\",this.onTouchEnd),window.removeEventListener(\"mousemove\",this.onMove),window.removeEventListener(\"mouseup\",this.onPointerEnd),window.removeEventListener(\"blur\",this.onWindowBlur)}}function A(t,e){return e?Math.sqrt(Math.pow(e.clientX-t.clientX,2)+Math.pow(e.clientY-t.clientY,2)):0}function z(t,e){return e?{clientX:(t.clientX+e.clientX)/2,clientY:(t.clientY+e.clientY)/2}:t}var L;!function(t){t[t.Init=0]=\"Init\",t[t.Error=1]=\"Error\",t[t.Ready=2]=\"Ready\",t[t.Panning=3]=\"Panning\",t[t.Mousemove=4]=\"Mousemove\",t[t.Destroy=5]=\"Destroy\"}(L||(L={}));const R=[\"a\",\"b\",\"c\",\"d\",\"e\",\"f\"],k={content:null,width:\"auto\",height:\"auto\",panMode:\"drag\",touch:!0,dragMinThreshold:3,lockAxis:!1,mouseMoveFactor:1,mouseMoveFriction:.12,zoom:!0,pinchToZoom:!0,panOnlyZoomed:\"auto\",minScale:1,maxScale:2,friction:.25,dragFriction:.35,decelFriction:.05,click:\"toggleZoom\",dblClick:!1,wheel:\"zoom\",wheelLimit:7,spinner:!0,bounds:\"auto\",infinite:!1,rubberband:!0,bounce:!0,maxVelocity:75,transformParent:!1,classes:{content:\"f-panzoom__content\",isLoading:\"is-loading\",canZoomIn:\"can-zoom_in\",canZoomOut:\"can-zoom_out\",isDraggable:\"is-draggable\",isDragging:\"is-dragging\",inFullscreen:\"in-fullscreen\",htmlHasFullscreen:\"with-panzoom-in-fullscreen\"},l10n:h},I=(t,e)=>{t&&P(e).forEach((e=>{t.classList.remove(e)}))},D=(t,e)=>{t&&P(e).forEach((e=>{t.classList.add(e)}))},F={a:1,b:0,c:0,d:1,e:0,f:0};let j=null,H=null;class B extends g{get isTouchDevice(){return null===H&&(H=window.matchMedia(\"(hover: none)\").matches),H}get isMobile(){return null===j&&(j=/iPhone|iPad|iPod|Android/i.test(navigator.userAgent)),j}get panMode(){return\"mousemove\"!==this.options.panMode||this.isTouchDevice?\"drag\":\"mousemove\"}get panOnlyZoomed(){const t=this.options.panOnlyZoomed;return\"auto\"===t?this.isTouchDevice:t}get isInfinite(){return this.option(\"infinite\")}get angle(){return 180*Math.atan2(this.current.b,this.current.a)/Math.PI||0}get targetAngle(){return 180*Math.atan2(this.target.b,this.target.a)/Math.PI||0}get scale(){const{a:t,b:e}=this.current;return Math.sqrt(t*t+e*e)||1}get targetScale(){const{a:t,b:e}=this.target;return Math.sqrt(t*t+e*e)||1}get minScale(){return this.option(\"minScale\")||1}get fullScale(){const{contentRect:t}=this;return t.fullWidth/t.fitWidth||1}get maxScale(){return this.fullScale*(this.option(\"maxScale\")||1)||1}get coverScale(){const{containerRect:t,contentRect:e}=this,i=Math.max(t.height/e.fitHeight,t.width/e.fitWidth)||1;return Math.min(this.fullScale,i)}get isScaling(){return Math.abs(this.targetScale-this.scale)>1e-5&&!this.isResting}get isContentLoading(){const t=this.content;return!!(t&&t instanceof HTMLImageElement)&&!t.complete}get isResting(){if(this.isBouncingX||this.isBouncingY)return!1;for(const t of R){const e=\"e\"==t||\"f\"===t?.001:1e-5;if(Math.abs(this.target[t]-this.current[t])>e)return!1}return!(!this.ignoreBounds&&!this.checkBounds().inBounds)}constructor(t,e={},n={}){var s;if(super(e),Object.defineProperty(this,\"pointerTracker\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"resizeObserver\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"updateTimer\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"clickTimer\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"rAF\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"isTicking\",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,\"friction\",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,\"ignoreBounds\",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,\"isBouncingX\",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,\"isBouncingY\",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,\"clicks\",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,\"trackingPoints\",{enumerable:!0,configurable:!0,writable:!0,value:[]}),Object.defineProperty(this,\"wheelDelta\",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,\"pwd\",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,\"pwt\",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,\"prevMouseMoveEvent\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,\"state\",{enumerable:!0,configurable:!0,writable:!0,value:L.Init}),Object.defineProperty(this,\"isDragging\",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,\"container\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,\"content\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,\"spinner\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"containerRect\",{enumerable:!0,configurable:!0,writable:!0,value:{width:0,height:0,innerWidth:0,innerHeight:0}}),Object.defineProperty(this,\"contentRect\",{enumerable:!0,configurable:!0,writable:!0,value:{top:0,right:0,bottom:0,left:0,fullWidth:0,fullHeight:0,fitWidth:0,fitHeight:0,width:0,height:0}}),Object.defineProperty(this,\"dragStart\",{enumerable:!0,configurable:!0,writable:!0,value:{x:0,y:0,top:0,left:0,time:0}}),Object.defineProperty(this,\"dragOffset\",{enumerable:!0,configurable:!0,writable:!0,value:{x:0,y:0,time:0}}),Object.defineProperty(this,\"current\",{enumerable:!0,configurable:!0,writable:!0,value:Object.assign({},F)}),Object.defineProperty(this,\"target\",{enumerable:!0,configurable:!0,writable:!0,value:Object.assign({},F)}),Object.defineProperty(this,\"velocity\",{enumerable:!0,configurable:!0,writable:!0,value:{a:0,b:0,c:0,d:0,e:0,f:0}}),Object.defineProperty(this,\"lockedAxis\",{enumerable:!0,configurable:!0,writable:!0,value:!1}),!t)throw new Error(\"Container Element Not Found\");if(this.container=t,this.initContent(),this.attachPlugins(Object.assign(Object.assign({},B.Plugins),n)),this.emit(\"init\"),this.isContentLoading){const e=this.content;if(this.option(\"spinner\")){t.classList.add(this.cn(\"isLoading\"));const n=i(c);t.contains(e)?this.spinner=(null===(s=e.parentElement)||void 0===s?void 0:s.insertBefore(n,e))||null:this.spinner=t.appendChild(n)}this.emit(\"beforeLoad\"),e.addEventListener(\"load\",this.onLoad),e.addEventListener(\"error\",this.onError)}else queueMicrotask((()=>{this.enable()}))}initContent(){const{container:t}=this,e=this.cn(\"content\");let i=this.option(\"content\")||t.querySelector(`.${e}`);if(i||(i=t.querySelector(\"img\")||t.firstElementChild,i&&D(i,e)),!i)throw new Error(\"No content found\");this.content=i}onLoad(){this.spinner&&(this.spinner.remove(),this.spinner=null),this.option(\"spinner\")&&this.container.classList.remove(this.cn(\"isLoading\")),this.emit(\"afterLoad\"),this.state===L.Init&&this.enable()}onError(){this.state!==L.Destroy&&(this.spinner&&(this.spinner.remove(),this.spinner=null),this.stop(),this.detachEvents(),this.state=L.Error,this.emit(\"error\"))}attachObserver(){var t;const e=()=>Math.abs(this.containerRect.width-this.container.getBoundingClientRect().width)>.1||Math.abs(this.containerRect.height-this.container.getBoundingClientRect().height)>.1;this.resizeObserver||void 0===window.ResizeObserver||(this.resizeObserver=new ResizeObserver((()=>{this.updateTimer||(e()?(this.onResize(),this.isMobile&&(this.updateTimer=setTimeout((()=>{e()&&this.onResize(),this.updateTimer=null}),500))):this.updateTimer&&(clearTimeout(this.updateTimer),this.updateTimer=null))}))),null===(t=this.resizeObserver)||void 0===t||t.observe(this.container)}detachObserver(){var t;null===(t=this.resizeObserver)||void 0===t||t.disconnect()}attachEvents(){const{container:t}=this;t.addEventListener(\"click\",this.onClick,{passive:!1,capture:!1}),t.addEventListener(\"wheel\",this.onWheel,{passive:!1}),this.pointerTracker=new O(t,{start:this.onPointerDown,move:this.onPointerMove,end:this.onPointerUp}),document.addEventListener(\"mousemove\",this.onMouseMove)}detachEvents(){var t;const{container:e}=this;e.removeEventListener(\"click\",this.onClick,{passive:!1,capture:!1}),e.removeEventListener(\"wheel\",this.onWheel,{passive:!1}),null===(t=this.pointerTracker)||void 0===t||t.stop(),this.pointerTracker=null,document.removeEventListener(\"mousemove\",this.onMouseMove),document.removeEventListener(\"keydown\",this.onKeydown,!0),this.clickTimer&&(clearTimeout(this.clickTimer),this.clickTimer=null),this.updateTimer&&(clearTimeout(this.updateTimer),this.updateTimer=null)}animate(){this.setTargetForce();const t=this.option(\"maxVelocity\");for(const e of R)this.friction?(this.velocity[e]*=1-this.friction,t&&!this.isScaling&&(this.velocity[e]=Math.max(Math.min(this.velocity[e],t),-1*t)),this.current[e]+=this.velocity[e]):this.current[e]=this.target[e];this.setTransform(),this.setEdgeForce(),!this.isResting||this.isDragging?this.rAF=requestAnimationFrame((()=>this.animate())):this.stop(\"current\")}setTargetForce(){for(const t of R)\"e\"===t&&this.isBouncingX||\"f\"===t&&this.isBouncingY||(this.velocity[t]=(1/(1-this.friction)-1)*(this.target[t]-this.current[t]))}checkBounds(t=0,e=0){const{current:i}=this,n=i.e+t,s=i.f+e,o=this.getBounds(),{x:a,y:r}=o,l=a.min,c=a.max,h=r.min,d=r.max;let u=0,p=0;return l!==1/0&&n<l?u=l-n:c!==1/0&&n>c&&(u=c-n),h!==1/0&&s<h?p=h-s:d!==1/0&&s>d&&(p=d-s),Math.abs(u)<.001&&(u=0),Math.abs(p)<.001&&(p=0),Object.assign(Object.assign({},o),{xDiff:u,yDiff:p,inBounds:!u&&!p})}clampTargetBounds(){const{target:t}=this,{x:e,y:i}=this.getBounds();e.min!==1/0&&(t.e=Math.max(t.e,e.min)),e.max!==1/0&&(t.e=Math.min(t.e,e.max)),i.min!==1/0&&(t.f=Math.max(t.f,i.min)),i.max!==1/0&&(t.f=Math.min(t.f,i.max))}calculateContentDim(t=this.current){const{content:e,contentRect:i}=this,{fitWidth:n,fitHeight:s,fullWidth:o,fullHeight:a}=i;let r=o,l=a;if(this.option(\"zoom\")||0!==this.angle){const i=!(e instanceof HTMLImageElement)&&(\"none\"===window.getComputedStyle(e).maxWidth||\"none\"===window.getComputedStyle(e).maxHeight),c=i?o:n,h=i?a:s,d=this.getMatrix(t),u=new DOMPoint(0,0).matrixTransform(d),p=new DOMPoint(0+c,0).matrixTransform(d),m=new DOMPoint(0+c,0+h).matrixTransform(d),f=new DOMPoint(0,0+h).matrixTransform(d),g=Math.abs(m.x-u.x),b=Math.abs(m.y-u.y),v=Math.abs(f.x-p.x),y=Math.abs(f.y-p.y);r=Math.max(g,v),l=Math.max(b,y)}return{contentWidth:r,contentHeight:l}}setEdgeForce(){if(this.ignoreBounds||this.isDragging||\"mousemove\"===this.panMode||this.targetScale<this.scale)return this.isBouncingX=!1,void(this.isBouncingY=!1);const{target:t}=this,{x:e,y:i,xDiff:n,yDiff:s}=this.checkBounds();const o=this.option(\"maxVelocity\");let a=this.velocity.e,r=this.velocity.f;0!==n?(this.isBouncingX=!0,n*a<=0?a+=.14*n:(a=.14*n,e.min!==1/0&&(this.target.e=Math.max(t.e,e.min)),e.max!==1/0&&(this.target.e=Math.min(t.e,e.max))),o&&(a=Math.max(Math.min(a,o),-1*o))):this.isBouncingX=!1,0!==s?(this.isBouncingY=!0,s*r<=0?r+=.14*s:(r=.14*s,i.min!==1/0&&(this.target.f=Math.max(t.f,i.min)),i.max!==1/0&&(this.target.f=Math.min(t.f,i.max))),o&&(r=Math.max(Math.min(r,o),-1*o))):this.isBouncingY=!1,this.isBouncingX&&(this.velocity.e=a),this.isBouncingY&&(this.velocity.f=r)}enable(){const{content:t}=this,e=new DOMMatrixReadOnly(window.getComputedStyle(t).transform);for(const t of R)this.current[t]=this.target[t]=e[t];this.updateMetrics(),this.attachObserver(),this.attachEvents(),this.state=L.Ready,this.emit(\"ready\")}onClick(t){var e;this.isDragging&&(null===(e=this.pointerTracker)||void 0===e||e.clear(),this.trackingPoints=[],this.startDecelAnim());const i=t.target;if(!i||t.defaultPrevented)return;if(i&&i.hasAttribute(\"disabled\"))return t.preventDefault(),void t.stopPropagation();if((()=>{const t=window.getSelection();return t&&\"Range\"===t.type})()&&!i.closest(\"button\"))return;const s=i.closest(\"[data-panzoom-action]\"),o=i.closest(\"[data-panzoom-change]\"),a=s||o,r=a&&n(a)?a.dataset:null;if(r){const e=r.panzoomChange,i=r.panzoomAction;if((e||i)&&t.preventDefault(),e){let t={};try{t=JSON.parse(e)}catch(t){console&&console.warn(\"The given data was not valid JSON\")}return void this.applyChange(t)}if(i)return void(this[i]&&this[i]())}if((Math.abs(this.dragOffset.x)>3||Math.abs(this.dragOffset.y)>3)&&Date.now()-this.dragStart.time<300)return t.preventDefault(),void t.stopPropagation();const l=this.content.getBoundingClientRect();if(this.dragStart.time&&!this.canZoomOut()&&(Math.abs(l.x-this.dragStart.x)>2||Math.abs(l.y-this.dragStart.y)>2))return;this.dragStart.time=0;const c=e=>{!this.option(\"zoom\")||Math.abs(this.velocity.a)>.3||e&&\"string\"==typeof e&&/(iterateZoom)|(toggle(Zoom|Full|Cover|Max)|(zoomTo(Fit|Cover|Max)))/.test(e)&&\"function\"==typeof this[e]&&(t.preventDefault(),this[e]({event:t}))},h=this.option(\"click\",t),d=this.option(\"dblClick\",t);d?(this.clicks++,1==this.clicks&&(this.clickTimer=setTimeout((()=>{1===this.clicks?(this.emit(\"click\",t),!t.defaultPrevented&&h&&c(h)):(this.emit(\"dblClick\",t),t.defaultPrevented||c(d)),this.clicks=0,this.clickTimer=null}),350))):(this.emit(\"click\",t),!t.defaultPrevented&&h&&c(h))}addTrackingPoint(t){const e=this.trackingPoints.filter((t=>t.time>Date.now()-100));e.push(t),this.trackingPoints=e}onPointerDown(t,e,i){var n;this.pwt=0,this.dragOffset={x:0,y:0,time:0},this.trackingPoints=[];const s=this.content.getBoundingClientRect();if(this.dragStart={x:s.x,y:s.y,top:s.top,left:s.left,time:Date.now()},this.clickTimer)return!1;if(\"mousemove\"===this.panMode&&this.targetScale>1)return t.preventDefault(),t.stopPropagation(),!1;if(!i.length){const e=t.composedPath()[0];if([\"A\",\"TEXTAREA\",\"OPTION\",\"INPUT\",\"SELECT\",\"VIDEO\"].includes(e.nodeName)||e.closest(\"[contenteditable]\")||e.closest(\"[data-selectable]\")||e.closest(\"[data-panzoom-change]\")||e.closest(\"[data-panzoom-action]\"))return!1;null===(n=window.getSelection())||void 0===n||n.removeAllRanges()}return\"mousedown\"===t.type&&t.preventDefault(),x(this.targetScale,1e3)===x(this.minScale,1e3)?(this.stop(),this.target.e=this.current.e,this.target.f=this.current.f):this.stop(\"target\"),this.isDragging=!0,this.addTrackingPoint(e),this.emit(\"touchStart\",t),!0}onPointerMove(t,e,i){if(!1===this.option(\"touch\",t))return;if(!this.isDragging)return;if(e.length<2&&this.panOnlyZoomed&&x(this.targetScale)<=x(this.minScale))return;if(this.emit(\"touchMove\",t),t.defaultPrevented)return;this.addTrackingPoint(e[0]);const{content:n}=this,s=z(i[0],i[1]),o=z(e[0],e[1]);let a=0,r=0;if(e.length>1){const t=n.getBoundingClientRect();a=s.clientX-t.left-.5*t.width,r=s.clientY-t.top-.5*t.height}const l=A(i[0],i[1]),c=A(e[0],e[1]);let h=l?c/l:1,d=o.clientX-s.clientX,u=o.clientY-s.clientY;this.dragOffset.x+=d,this.dragOffset.y+=u,this.dragOffset.time=Date.now()-this.dragStart.time;let p=x(this.targetScale)===x(this.minScale)&&this.option(\"lockAxis\");if(p&&!this.lockedAxis)if(\"xy\"===p||\"y\"===p||\"touchmove\"===t.type){if(Math.abs(this.dragOffset.x)<6&&Math.abs(this.dragOffset.y)<6)return void t.preventDefault();const e=Math.abs(180*Math.atan2(this.dragOffset.y,this.dragOffset.x)/Math.PI);this.lockedAxis=e>45&&e<135?\"y\":\"x\",this.dragOffset.x=0,this.dragOffset.y=0,d=0,u=0}else this.lockedAxis=p;if(S(t.target,this.content)&&(p=\"x\",this.dragOffset.y=0),p&&\"xy\"!==p&&this.lockedAxis!==p&&x(this.targetScale)===x(this.minScale))return;t.cancelable&&t.preventDefault(),this.container.classList.add(this.cn(\"isDragging\"));const m=this.checkBounds(d,u);this.option(\"rubberband\")?(\"x\"!==this.isInfinite&&(m.xDiff>0&&d<0||m.xDiff<0&&d>0)&&(d*=Math.max(0,.5-Math.abs(.75/this.contentRect.fitWidth*m.xDiff))),\"y\"!==this.isInfinite&&(m.yDiff>0&&u<0||m.yDiff<0&&u>0)&&(u*=Math.max(0,.5-Math.abs(.75/this.contentRect.fitHeight*m.yDiff)))):(m.xDiff&&(d=0),m.yDiff&&(u=0));const f=this.targetScale,g=this.minScale,b=this.maxScale;f<.5*g&&(h=Math.max(h,g)),f>1.5*b&&(h=Math.min(h,b)),\"y\"===this.lockedAxis&&x(f)===x(g)&&(d=0),\"x\"===this.lockedAxis&&x(f)===x(g)&&(u=0),this.applyChange({originX:a,originY:r,panX:d,panY:u,scale:h,friction:this.option(\"dragFriction\"),ignoreBounds:!0})}onPointerUp(t,e,i){if(i.length)return this.dragOffset.x=0,this.dragOffset.y=0,void(this.trackingPoints=[]);this.container.classList.remove(this.cn(\"isDragging\")),this.isDragging&&(this.addTrackingPoint(e),this.panOnlyZoomed&&this.contentRect.width-this.contentRect.fitWidth<1&&this.contentRect.height-this.contentRect.fitHeight<1&&(this.trackingPoints=[]),S(t.target,this.content)&&\"y\"===this.lockedAxis&&(this.trackingPoints=[]),this.emit(\"touchEnd\",t),this.isDragging=!1,this.lockedAxis=!1,this.state!==L.Destroy&&(t.defaultPrevented||this.startDecelAnim()))}startDecelAnim(){this.rAF&&(cancelAnimationFrame(this.rAF),this.rAF=null),this.isBouncingX=!1,this.isBouncingY=!1;for(const t of R)this.velocity[t]=0,this.target[t]=this.current[t];I(this.container,\"is-scaling\"),I(this.container,\"is-animating\"),this.isTicking=!1;const{trackingPoints:t}=this,e=t[0],i=t[t.length-1];let n=0,s=0,o=0;i&&e&&(n=i.clientX-e.clientX,s=i.clientY-e.clientY,o=i.time-e.time);let a=0,r=0,l=0,c=0,h=this.option(\"decelFriction\");const d=this.targetScale;if((d<this.minScale-1e-5||d>this.maxScale+1e-5)&&(h=.35),o>0){l=Math.abs(n)>3?n/(o/30):0,c=Math.abs(s)>3?s/(o/30):0;const t=this.option(\"maxVelocity\");t&&(l=Math.max(Math.min(l,t),-1*t),c=Math.max(Math.min(c,t),-1*t))}l&&(a=l/(1/(1-h)-1)),c&&(r=c/(1/(1-h)-1)),(\"y\"===this.option(\"lockAxis\")||\"xy\"===this.option(\"lockAxis\")&&\"y\"===this.lockedAxis&&x(d)===this.minScale)&&(a=l=0),(\"x\"===this.option(\"lockAxis\")||\"xy\"===this.option(\"lockAxis\")&&\"x\"===this.lockedAxis&&x(d)===this.minScale)&&(r=c=0);const u=this.dragOffset.x,p=this.dragOffset.y,m=this.option(\"dragMinThreshold\")||0;Math.abs(u)<m&&Math.abs(p)<m&&(a=r=0,l=c=0),this.applyChange({panX:a,panY:r,friction:h}),this.emit(\"decel\",l,c,u,p)}onWheel(t){const e=t.wheelDeltaY?t.wheelDeltaY===-3*t.deltaY:0===t.deltaMode;var i=[t.deltaX,t.deltaY,t.detail].reduce((function(t,e){return Math.abs(e)>Math.abs(t)?e:t}));const n=Math.max(-1,Math.min(1,i)),s=Date.now(),o=this.pwt,a=this.pwd;if(o&&s-o<(e?300:150)&&(e&&a===n||!e&&a!==n))return void t.preventDefault();if(this.pwd=n,this.pwt=s,this.emit(\"wheel\",t,n),\"mousemove\"===this.panMode)return;if(t.defaultPrevented)return;const r=this.option(\"wheel\");\"pan\"===r?(t.preventDefault(),this.panOnlyZoomed&&!this.canZoomOut()||this.applyChange({panY:100*n,bounce:!1})):\"zoom\"===r&&!1!==this.option(\"zoom\")&&this.zoomWithWheel(t)}onMouseMove(t){this.panWithMouse(t)}onKeydown(t){\"Escape\"===t.key&&this.toggleFS()}onResize(){this.updateMetrics(),this.checkBounds().inBounds||this.requestTick()}setTransform(){this.emit(\"beforeTransform\");const{current:t,target:e,content:i,contentRect:n}=this,s=Object.assign({},F);for(const i of R){const n=\"e\"==i||\"f\"===i?1e3:1e5;s[i]=x(t[i],n),Math.abs(e[i]-t[i])<(\"e\"==i||\"f\"===i?.51:.001)&&(this.current[i]=e[i])}const{a:o,b:a,c:r,d:l,e:c,f:h}=s,d=`matrix(${o}, ${a}, ${r}, ${l}, ${c}, ${h})`,u=(this.option(\"transformParent\")?i.parentElement:null)||i;if(u.style.transform===d)return;u.style.transform=d;const{contentWidth:p,contentHeight:m}=this.calculateContentDim();n.width=p,n.height=m,this.emit(\"afterTransform\")}updateMetrics(t=!1){if(!this||this.state===L.Destroy)return;const{container:e,containerRect:i,content:n}=this,s=i.innerWidth,o=i.innerHeight,a=e.getBoundingClientRect(),r=getComputedStyle(this.container),l=a.width,c=a.height,h=parseFloat(r.paddingTop)+parseFloat(r.paddingBottom),d=parseFloat(r.paddingLeft)+parseFloat(r.paddingRight);this.containerRect={width:l,height:c,innerWidth:l-d,innerHeight:c-h};let u=this.option(\"width\")||\"auto\",p=this.option(\"height\")||\"auto\";\"auto\"===u&&(u=parseFloat(n.dataset.width||\"\")||(t=>{let e=0;return e=t instanceof HTMLImageElement?t.naturalWidth:t instanceof SVGElement?t.width.baseVal.value:t.offsetWidth,Math.max(e,t.scrollWidth)})(n)),\"auto\"===p&&(p=parseFloat(n.dataset.height||\"\")||(t=>{let e=0;return e=t instanceof HTMLImageElement?t.naturalHeight:t instanceof SVGElement?t.height.baseVal.value:t.offsetHeight,Math.max(e,t.scrollHeight)})(n));const m=(this.option(\"transformParent\")?n.parentElement:null)||n,f=m.getAttribute(\"style\")||\"\";m.style.setProperty(\"transform\",\"none\",\"important\"),n instanceof HTMLImageElement&&(m.style.width=\"\",m.style.height=\"\"),m.offsetHeight;const g=n.getBoundingClientRect();let b=g.width,v=g.height,y=0,w=0;if(n instanceof HTMLImageElement&&({width:b,height:v,top:y,left:w}=((t,e,i,n)=>{const s=i/n;return s>t/e?(i=t,n=t/s):(i=e*s,n=e),{width:i,height:n,top:.5*(e-n),left:.5*(t-i)}})(g.width,g.height,u,p)),this.contentRect=Object.assign(Object.assign({},this.contentRect),{top:g.top-a.top+y,bottom:a.bottom-g.bottom+y,left:g.left-a.left+w,right:a.right-g.right+w,fitWidth:b,fitHeight:v,width:b,height:v,fullWidth:u,fullHeight:p}),m.style.cssText=f,n instanceof HTMLImageElement&&(m.style.width=`${b}px`,m.style.height=`${v}px`),this.setTransform(),!0!==t){let t=\"\";Math.abs(l-s)>1&&(t+=\"x\"),Math.abs(c-o)>1&&(t+=\"y\"),t&&this.emit(\"refresh\",t)}this.ignoreBounds||(x(this.targetScale)<x(this.minScale)?this.zoomTo(this.minScale,{friction:0}):this.targetScale>this.maxScale?this.zoomTo(this.maxScale,{friction:0}):this.state===L.Init||this.checkBounds().inBounds||this.requestTick()),this.updateControls()}getBounds(){const t=this.option(\"bounds\");if(\"auto\"!==t)return t;const{contentWidth:e,contentHeight:i}=this.calculateContentDim(this.target);let n=0,s=0,o=0,a=0;const r=this.option(\"infinite\");if(!0===r||this.lockedAxis&&r===this.lockedAxis)n=-1/0,o=1/0,s=-1/0,a=1/0;else{let{containerRect:t,contentRect:r}=this,l=x(this.contentRect.fitWidth*this.targetScale,1e3),c=x(this.contentRect.fitHeight*this.targetScale,1e3),{innerWidth:h,innerHeight:d}=t;if(this.containerRect.width===l&&(h=t.width),this.containerRect.width===c&&(d=t.height),e>h){o=.5*(e-h),n=-1*o;let t=.5*(r.right-r.left);n+=t,o+=t}if(this.contentRect.fitWidth>h&&e<h&&(n-=.5*(this.contentRect.fitWidth-h),o-=.5*(this.contentRect.fitWidth-h)),i>d){a=.5*(i-d),s=-1*a;let t=.5*(r.bottom-r.top);s+=t,a+=t}this.contentRect.fitHeight>d&&i<d&&(n-=.5*(this.contentRect.fitHeight-d),o-=.5*(this.contentRect.fitHeight-d))}return{x:{min:n,max:o},y:{min:s,max:a}}}updateControls(){const t=this,e=t.container,{panMode:i,contentRect:n,fullScale:s,targetScale:o,coverScale:a,maxScale:r,minScale:l}=t;let c={toggleMax:o-l<.5*(r-l)?r:l,toggleCover:o-l<.5*(a-l)?a:l,toggleZoom:o-l<.5*(s-l)?s:l}[t.option(\"click\")||\"\"]||l,h=t.canZoomIn(),d=t.canZoomOut(),u=d&&\"drag\"===i;x(o)<x(l)&&!this.panOnlyZoomed&&(u=!0),(x(n.width,1)>x(n.fitWidth,1)||x(n.height,1)>x(n.fitHeight,1))&&(u=!0),x(n.width*o,1)<x(n.fitWidth,1)&&(u=!1),\"mousemove\"===i&&(u=!1);let p=h&&x(c)>x(o),m=!p&&!u&&d&&x(c)<x(o);M(e,this.cn(\"canZoomIn\"),p),M(e,this.cn(\"canZoomOut\"),m),M(e,this.cn(\"isDraggable\"),u);for(const t of e.querySelectorAll('[data-panzoom-action=\"zoomIn\"]'))h?(t.removeAttribute(\"disabled\"),t.removeAttribute(\"tabindex\")):(t.setAttribute(\"disabled\",\"\"),t.setAttribute(\"tabindex\",\"-1\"));for(const t of e.querySelectorAll('[data-panzoom-action=\"zoomOut\"]'))d?(t.removeAttribute(\"disabled\"),t.removeAttribute(\"tabindex\")):(t.setAttribute(\"disabled\",\"\"),t.setAttribute(\"tabindex\",\"-1\"));for(const t of e.querySelectorAll('[data-panzoom-action=\"toggleZoom\"],[data-panzoom-action=\"iterateZoom\"]')){h||d?(t.removeAttribute(\"disabled\"),t.removeAttribute(\"tabindex\")):(t.setAttribute(\"disabled\",\"\"),t.setAttribute(\"tabindex\",\"-1\"));const e=t.querySelector(\"g\");e&&(e.style.display=h?\"\":\"none\")}}panTo({x:t=this.target.e,y:e=this.target.f,scale:i=this.targetScale,friction:n=this.option(\"friction\"),angle:s=0,originX:o=0,originY:a=0,flipX:r=!1,flipY:l=!1,ignoreBounds:c=!1}){this.state!==L.Destroy&&this.applyChange({panX:t-this.target.e,panY:e-this.target.f,scale:i/this.targetScale,angle:s,originX:o,originY:a,friction:n,flipX:r,flipY:l,ignoreBounds:c})}applyChange({panX:t=0,panY:e=0,scale:i=1,angle:n=0,originX:s=-this.current.e,originY:o=-this.current.f,friction:a=this.option(\"friction\"),flipX:r=!1,flipY:l=!1,ignoreBounds:c=!1,bounce:h=this.option(\"bounce\")}){const d=this.state;if(d===L.Init||d===L.Destroy)return;this.rAF&&(cancelAnimationFrame(this.rAF),this.rAF=null),this.isBouncingX=!1,this.isBouncingY=!1;for(const t of R)this.velocity[t]=0;this.friction=a||0,this.ignoreBounds=c;const{current:u}=this,p=u.e,m=u.f,f=this.getMatrix(this.target);let g=(new DOMMatrix).translate(p,m).translate(s,o).translate(t,e);if(this.option(\"zoom\")){if(!c){const t=this.targetScale,e=this.minScale,n=this.maxScale;t*i<e&&(i=e/t),t*i>n&&(i=n/t)}g=g.scale(i)}g=g.translate(-s,-o).translate(-p,-m).multiply(f),n&&(g=g.rotate(n)),r&&(g=g.scale(-1,1)),l&&(g=g.scale(1,-1));for(const t of R)\"a\"!=t&&\"d\"!=t||!(g[t]>this.minScale+1e-5||g[t]<this.minScale-1e-5)?this.target[t]=x(g[t],1e3):this.target[t]=g[t];(this.targetScale<this.scale||Math.abs(i-1)>.1||\"mousemove\"===this.panMode||!1===h)&&!c&&this.clampTargetBounds(),this.isResting||(this.state=L.Panning,this.requestTick())}stop(t=!1){if(this.state===L.Init||this.state===L.Destroy)return;const e=this.isTicking;this.rAF&&(cancelAnimationFrame(this.rAF),this.rAF=null),this.isBouncingX=!1,this.isBouncingY=!1;for(const e of R)this.velocity[e]=0,\"current\"===t?this.current[e]=this.target[e]:\"target\"===t&&(this.target[e]=this.current[e]);this.setTransform(),I(this.container,\"is-scaling\"),I(this.container,\"is-animating\"),this.isTicking=!1,this.state=L.Ready,e&&(this.emit(\"endAnimation\"),this.updateControls())}requestTick(){this.isTicking||(this.emit(\"startAnimation\"),this.updateControls(),D(this.container,\"is-animating\"),this.isScaling&&D(this.container,\"is-scaling\")),this.isTicking=!0,this.rAF||(this.rAF=requestAnimationFrame((()=>this.animate())))}panWithMouse(t,e=this.option(\"mouseMoveFriction\")){if(this.prevMouseMoveEvent=t,\"mousemove\"!==this.panMode||!t)return;if(x(this.targetScale)<=x(this.minScale))return;this.emit(\"mouseMove\",t);const{container:i,containerRect:n,contentRect:s}=this,o=n.width,a=n.height,r=i.getBoundingClientRect(),l=(t.clientX||0)-r.left,c=(t.clientY||0)-r.top;let{contentWidth:h,contentHeight:d}=this.calculateContentDim(this.target);const u=this.option(\"mouseMoveFactor\");u>1&&(h!==o&&(h*=u),d!==a&&(d*=u));let p=.5*(h-o)-l/o*100/100*(h-o);p+=.5*(s.right-s.left);let m=.5*(d-a)-c/a*100/100*(d-a);m+=.5*(s.bottom-s.top),this.applyChange({panX:p-this.target.e,panY:m-this.target.f,friction:e})}zoomWithWheel(t){if(this.state===L.Destroy||this.state===L.Init)return;const e=Math.abs(t.deltaY)<100&&Math.abs(t.deltaX)<100?75:50,i=Math.max(-1,Math.min(1,-t.deltaY||-t.deltaX||-t.detail)),n=this.targetScale,s=this.maxScale,o=this.minScale;let a=n*(100+i*e)/100;a<o&&n<=o?(this.wheelDelta+=Math.abs(i),a=o):a>s&&n>=s?(this.wheelDelta+=Math.abs(i),a=s):(this.wheelDelta=0,a=Math.max(Math.min(a,s),o)),this.wheelDelta>this.option(\"wheelLimit\")||(t.preventDefault(),a!==n&&this.zoomTo(a,{event:t}))}canZoomIn(){return this.option(\"zoom\")&&(x(this.contentRect.width,1)<x(this.contentRect.fitWidth,1)||x(this.targetScale)<x(this.maxScale))}canZoomOut(){return this.option(\"zoom\")&&x(this.targetScale)>x(this.minScale)}zoomIn(t=1.25,e){this.zoomTo(this.targetScale*t,e)}zoomOut(t=.8,e){this.zoomTo(this.targetScale*t,e)}zoomToFit(t){this.zoomTo(\"fit\",t)}zoomToCover(t){this.zoomTo(\"cover\",t)}zoomToFull(t){this.zoomTo(\"full\",t)}zoomToMax(t){this.zoomTo(\"max\",t)}toggleZoom(t){this.zoomTo(this.targetScale-this.minScale<.5*(this.fullScale-this.minScale)?\"full\":\"fit\",t)}toggleMax(t){this.zoomTo(this.targetScale-this.minScale<.5*(this.maxScale-this.minScale)?\"max\":\"fit\",t)}toggleCover(t){this.zoomTo(this.targetScale-this.minScale<.5*(this.coverScale-this.minScale)?\"cover\":\"fit\",t)}iterateZoom(t){this.zoomTo(\"next\",t)}zoomTo(t=1,{friction:e=\"auto\",originX:i=0,originY:n=0,event:s}={}){if(this.isContentLoading||this.state===L.Destroy)return;this.stop();const{targetScale:o}=this;let a=1;if(\"mousemove\"===this.panMode&&(s=this.prevMouseMoveEvent||s),s){const t=this.content.getBoundingClientRect(),e=s.clientX||0,o=s.clientY||0;i=e-t.left-.5*t.width,n=o-t.top-.5*t.height}const r=this.fullScale,l=this.maxScale;let c=this.coverScale;\"number\"==typeof t?a=t/o:(\"next\"===t&&(r-c<.2&&(c=r),t=o<r-1e-5?\"full\":o<l-1e-5?\"max\":\"fit\"),a=\"full\"===t?r/o||1:\"cover\"===t?c/o||1:\"max\"===t?l/o||1:1/o||1),e=\"auto\"===e?a>1?.15:.25:e,this.applyChange({scale:a,originX:i,originY:n,friction:e}),s&&\"mousemove\"===this.panMode&&this.panWithMouse(s,e)}rotateCCW(){this.applyChange({angle:-90})}rotateCW(){this.applyChange({angle:90})}flipX(){this.applyChange({flipX:!0})}flipY(){this.applyChange({flipY:!0})}fitX(){this.stop(\"target\");const{containerRect:t,contentRect:e,target:i}=this;this.applyChange({panX:.5*t.width-(e.left+.5*e.fitWidth)-i.e,panY:.5*t.height-(e.top+.5*e.fitHeight)-i.f,scale:t.width/e.fitWidth/this.targetScale,originX:0,originY:0,ignoreBounds:!0})}fitY(){this.stop(\"target\");const{containerRect:t,contentRect:e,target:i}=this;this.applyChange({panX:.5*t.width-(e.left+.5*e.fitWidth)-i.e,panY:.5*t.height-(e.top+.5*e.fitHeight)-i.f,scale:t.height/e.fitHeight/this.targetScale,originX:0,originY:0,ignoreBounds:!0})}toggleFS(){const{container:t}=this,e=this.cn(\"inFullscreen\"),i=this.cn(\"htmlHasFullscreen\");t.classList.toggle(e);const n=t.classList.contains(e);n?(document.documentElement.classList.add(i),document.addEventListener(\"keydown\",this.onKeydown,!0)):(document.documentElement.classList.remove(i),document.removeEventListener(\"keydown\",this.onKeydown,!0)),this.updateMetrics(),this.emit(n?\"enterFS\":\"exitFS\")}getMatrix(t=this.current){const{a:e,b:i,c:n,d:s,e:o,f:a}=t;return new DOMMatrix([e,i,n,s,o,a])}reset(t){if(this.state!==L.Init&&this.state!==L.Destroy){this.stop(\"current\");for(const t of R)this.target[t]=F[t];this.target.a=this.minScale,this.target.d=this.minScale,this.isResting||(this.friction=void 0===t?this.option(\"friction\"):t,this.state=L.Panning,this.requestTick())}}destroy(){this.stop(),this.state=L.Destroy,this.detachEvents(),this.detachObserver();const{container:t,content:e}=this,i=this.option(\"classes\")||{};for(const e of Object.values(i))t.classList.remove(e+\"\");e&&(e.removeEventListener(\"load\",this.onLoad),e.removeEventListener(\"error\",this.onError)),this.detachPlugins()}}Object.defineProperty(B,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:k}),Object.defineProperty(B,\"Plugins\",{enumerable:!0,configurable:!0,writable:!0,value:{}});const _=t=>new Promise(((e,i)=>{const n=new Image;n.onload=e,n.onerror=i,n.src=t}));class N extends b{onCreateSlide(t,e,i){const n=this.instance,s=n.optionFor(i,\"src\")||\"\",{el:o,type:a}=i;o&&\"image\"===a&&\"string\"==typeof s&&this.setContent(i,s).then((t=>{if(n.isClosing())return;const e=i.contentEl,s=i.imageEl,o=i.thumbElSrc,a=this.optionFor(i,\"initialSize\"),r=this.optionFor(i,\"zoom\"),l={event:n.prevMouseMoveEvent||n.options.event,friction:r?.12:0};if(e&&s&&o&&n.isOpeningSlide(i)&&this.getZoomInfo(i)){let t=document.createElement(\"img\");D(t,\"fancybox-ghost\"),e.appendChild(t),t.src=o,setTimeout((()=>{n.animate(t,\"f-fadeFastOut\",(()=>{t&&(t.remove(),t=null)}))}),333),_(o).then((()=>{i.state=p.Opening,this.instance.emit(\"reveal\",i),this.zoomIn(i).then((()=>{this.instance.done(i)}),(()=>{n.hideLoading(i)}))}),(()=>{n.hideLoading(i),n.revealContent(i)}))}else{let e=n.optionFor(i,\"showClass\")||void 0,s=!0;n.isOpeningSlide(i)&&(\"full\"===a?t.zoomToFull(l):\"cover\"===a?t.zoomToCover(l):\"max\"===a?t.zoomToMax(l):s=!1,t.stop(\"current\")),s&&e&&(e=\"f-fadeIn\"),n.revealContent(i,e)}}),(()=>{n.setError(i,\"{{IMAGE_ERROR}}\")}))}onRemoveSlide(t,e,i){i.panzoom&&i.panzoom.destroy(),i.panzoom=void 0,i.imageEl=void 0}onChange(t,e,i,n){for(const t of e.slides){const e=t.panzoom;e&&t.index!==i&&e.reset(.35)}}onClose(){const t=this.instance,e=t.container,i=t.getSlide();if(!e||!e.parentElement||!i)return;const{el:n,contentEl:s,panzoom:o}=i,a=i.thumbElSrc;if(!n||!a||!s||!o||o.isContentLoading||o.state===L.Init||o.state===L.Destroy)return;o.updateMetrics();let r=this.getZoomInfo(i);if(!r)return;this.instance.state=u.CustomClosing,n.classList.remove(\"is-zooming-in\"),n.classList.add(\"is-zooming-out\"),s.style.backgroundImage=`url('${a}')`,_(a).then((()=>{n.classList.add(\"hide-image\")}),(()=>{}));const l=e.getBoundingClientRect();Object.assign(e.style,{position:\"absolute\",top:`${window.pageYOffset}px`,left:`${window.pageXOffset}px`,bottom:\"auto\",right:\"auto\",width:`${l.width}px`,height:`${l.height}px`,overflow:\"hidden\"});const{x:c,y:h,scale:d,opacity:p}=r;if(p){const t=((t,e,i,n)=>{const s=e-t,o=n-i;return e=>i+((e-t)/s*o||0)})(o.scale,d,1,0);o.on(\"afterTransform\",(()=>{s.style.opacity=t(o.scale)+\"\"}))}o.on(\"endAnimation\",(()=>{t.destroy()})),o.target.a=d,o.target.b=0,o.target.c=0,o.target.d=d,o.panTo({x:c,y:h,scale:d,friction:p?.2:.33,ignoreBounds:!0}),o.isResting&&t.destroy()}setContent(t,i){return new Promise(((n,s)=>{var o,a;const r=this.instance,l=t.el;if(!l)return void s();r.showLoading(t);const c=document.createElement(\"img\");if(c.classList.add(\"fancybox-image\"),c.src=i||\"\",c.alt=(null===(o=t.caption)||void 0===o?void 0:o.replace(/<[^>]+>/gi,\"\").substring(0,1e3))||`Image ${t.index+1} of ${null===(a=r.carousel)||void 0===a?void 0:a.pages.length}`,c.draggable=!1,t.srcset&&c.setAttribute(\"srcset\",t.srcset),t.sizes&&c.setAttribute(\"sizes\",t.sizes),t.imageEl=c,r.setContent(t,c,!1),this.option(\"protected\")){l.addEventListener(\"contextmenu\",(t=>{t.preventDefault()}));const e=t.contentEl;if(e){const t=document.createElement(\"div\");D(t,\"fancybox-protected\"),e.append(t)}}t.panzoom=new B(l,e({},this.option(\"Panzoom\")||{},{content:c,width:r.optionFor(t,\"width\",\"auto\"),height:r.optionFor(t,\"height\",\"auto\"),wheel:()=>{const t=r.option(\"wheel\");return(\"zoom\"===t||\"pan\"==t)&&t},click:(e,i)=>{var n,s;if(r.isCompact||r.isClosing())return!1;if(t.index!==(null===(n=r.getSlide())||void 0===n?void 0:n.index))return!1;let o=!i||i.target&&(null===(s=t.contentEl)||void 0===s?void 0:s.contains(i.target));return r.option(o?\"contentClick\":\"backdropClick\")||!1},dblClick:()=>r.isCompact?\"toggleZoom\":r.option(\"contentDblClick\")||!1,spinner:!1,panOnlyZoomed:!0,wheelLimit:1/0,transformParent:!0,on:{ready:t=>{n(t)},error:()=>{s()},destroy:()=>{s()}}}))}))}zoomIn(t){return new Promise(((e,i)=>{const{panzoom:n,contentEl:s,el:o}=t;n&&n.updateMetrics();const a=this.getZoomInfo(t);if(!(a&&o&&s&&n))return void i();const{x:r,y:l,scale:c,opacity:h}=a,d=()=>{t.state!==p.Closing&&(h&&(s.style.opacity=Math.max(Math.min(1,1-(1-n.scale)/(1-c)),0)+\"\"),n.scale>=1&&n.scale>n.targetScale-.1&&e(n))},u=t=>{t.scale<.99||t.scale>1.01||(s.style.opacity=\"\",o.classList.remove(\"is-zooming-in\"),t.off(\"endAnimation\",u),t.off(\"touchStart\",u),t.off(\"afterTransform\",d),e(t))};n.on(\"endAnimation\",u),n.on(\"touchStart\",u),n.on(\"afterTransform\",d),n.on([\"error\",\"destroy\"],(()=>{i()})),n.panTo({x:r,y:l,scale:c,friction:0,ignoreBounds:!0}),n.stop(\"current\");const m=this.instance,f={event:\"mousemove\"===n.panMode?m.prevMouseMoveEvent||m.options.event:void 0},g=this.optionFor(t,\"initialSize\");D(o,\"is-zooming-in\"),m.hideLoading(t),\"full\"===g?n.zoomToFull(f):\"cover\"===g?n.zoomToCover(f):\"max\"===g?n.zoomToMax(f):n.reset(.165)}))}getZoomInfo(t){const{el:e,imageEl:i,thumbEl:n,panzoom:o}=t;if(!e||!i||!n||!o||s(n)<3||!this.optionFor(t,\"zoom\")||this.instance.state===u.Destroy)return!1;const{top:a,left:r,width:l,height:c}=n.getBoundingClientRect();let{top:h,left:d,fitWidth:p,fitHeight:m}=o.contentRect;if(!(l&&c&&p&&m))return!1;const f=l/p,g=o.container.getBoundingClientRect();h+=g.top,d+=g.left;const b=-1*(d+.5*p-(r+.5*l)),v=-1*(h+.5*m-(a+.5*c));let y=this.option(\"zoomOpacity\")||!1;return\"auto\"===y&&(y=Math.abs(l/c-p/m)>.1),{x:b,y:v,scale:f,opacity:y}}attach(){this.instance.on(\"Carousel.change\",this.onChange),this.instance.on(\"Carousel.createSlide\",this.onCreateSlide),this.instance.on(\"Carousel.removeSlide\",this.onRemoveSlide),this.instance.on(\"close\",this.onClose)}detach(){this.instance.off(\"Carousel.change\",this.onChange),this.instance.off(\"Carousel.createSlide\",this.onCreateSlide),this.instance.off(\"Carousel.removeSlide\",this.onRemoveSlide),this.instance.off(\"close\",this.onClose)}}Object.defineProperty(N,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:{initialSize:\"fit\",Panzoom:{maxScale:1},protected:!1,zoom:!0,zoomOpacity:\"auto\"}});const W=(t,e={})=>{const i=new URL(t),n=new URLSearchParams(i.search),s=new URLSearchParams;for(const[t,i]of[...n,...Object.entries(e)]){let e=i.toString();\"t\"===t?s.set(\"start\",parseInt(e).toString()):s.set(t,e)}let o=s.toString(),a=t.match(/#t=((.*)?\\d+s)/);return a&&(o+=`#t=${a[1]}`),o},$={ajax:null,autoSize:!0,preload:!0,videoAutoplay:!0,videoRatio:16/9,videoTpl:'<video class=\"fancybox__html5video\" playsinline controls controlsList=\"nodownload\" poster=\"{{poster}}\">\\n  <source src=\"{{src}}\" type=\"{{format}}\" />Sorry, your browser doesn\\'t support embedded videos.</video>',videoFormat:\"\",vimeo:{byline:1,color:\"00adef\",controls:1,dnt:1,muted:0},youtube:{controls:1,enablejsapi:1,nocookie:1,rel:0,fs:1}},X=[\"image\",\"html\",\"ajax\",\"inline\",\"clone\",\"iframe\",\"map\",\"pdf\",\"html5video\",\"youtube\",\"vimeo\",\"video\"];class Y extends b{onInitSlide(t,e,i){this.processType(i)}onCreateSlide(t,e,i){this.setContent(i)}onRemoveSlide(t,e,i){i.closeBtnEl&&(i.closeBtnEl.remove(),i.closeBtnEl=void 0),i.xhr&&(i.xhr.abort(),i.xhr=null),i.iframeEl&&(i.iframeEl.onload=i.iframeEl.onerror=null,i.iframeEl.src=\"//about:blank\",i.iframeEl=null);const n=i.contentEl,s=i.placeholderEl;if(\"inline\"===i.type&&n&&s)n.classList.remove(\"fancybox__content\"),\"none\"!==n.style.display&&(n.style.display=\"none\"),s.parentNode&&s.parentNode.insertBefore(n,s),s.remove(),i.placeholderEl=null;else for(;i.el&&i.el.firstChild;)i.el.removeChild(i.el.firstChild)}onSelectSlide(t,e,i){i.state===p.Ready&&this.playVideo()}onUnselectSlide(t,e,i){var n,s;if(\"html5video\"===i.type){try{null===(s=null===(n=i.el)||void 0===n?void 0:n.querySelector(\"video\"))||void 0===s||s.pause()}catch(t){}return}let o;\"vimeo\"===i.type?o={method:\"pause\",value:\"true\"}:\"youtube\"===i.type&&(o={event:\"command\",func:\"pauseVideo\"}),o&&i.iframeEl&&i.iframeEl.contentWindow&&i.iframeEl.contentWindow.postMessage(JSON.stringify(o),\"*\"),i.poller&&clearTimeout(i.poller)}onDone(t,e){t.isCurrentSlide(e)&&!t.isClosing()&&this.playVideo()}onRefresh(t,e){e.slides.forEach((t=>{t.el&&(this.setAspectRatio(t),this.resizeIframe(t))}))}onMessage(t){try{let e=JSON.parse(t.data);if(\"https://player.vimeo.com\"===t.origin){if(\"ready\"===e.event)for(let e of Array.from(document.getElementsByClassName(\"fancybox__iframe\")))e instanceof HTMLIFrameElement&&e.contentWindow===t.source&&(e.dataset.ready=\"true\")}else if(t.origin.match(/^https:\\/\\/(www.)?youtube(-nocookie)?.com$/)&&\"onReady\"===e.event){const t=document.getElementById(e.id);t&&(t.dataset.ready=\"true\")}}catch(t){}}loadAjaxContent(t){const e=this.instance.optionFor(t,\"src\")||\"\";this.instance.showLoading(t);const i=this.instance,n=new XMLHttpRequest;i.showLoading(t),n.onreadystatechange=function(){n.readyState===XMLHttpRequest.DONE&&i.state===u.Ready&&(i.hideLoading(t),200===n.status?i.setContent(t,n.responseText):i.setError(t,404===n.status?\"{{AJAX_NOT_FOUND}}\":\"{{AJAX_FORBIDDEN}}\"))};const s=t.ajax||null;n.open(s?\"POST\":\"GET\",e+\"\"),n.setRequestHeader(\"Content-Type\",\"application/x-www-form-urlencoded\"),n.setRequestHeader(\"X-Requested-With\",\"XMLHttpRequest\"),n.send(s),t.xhr=n}setInlineContent(t){let e=null;if(n(t.src))e=t.src;else if(\"string\"==typeof t.src){const i=t.src.split(\"#\",2).pop();e=i?document.getElementById(i):null}if(e){if(\"clone\"===t.type||e.closest(\".fancybox__slide\")){e=e.cloneNode(!0);const i=e.dataset.animationName;i&&(e.classList.remove(i),delete e.dataset.animationName);let n=e.getAttribute(\"id\");n=n?`${n}--clone`:`clone-${this.instance.id}-${t.index}`,e.setAttribute(\"id\",n)}else if(e.parentNode){const i=document.createElement(\"div\");i.classList.add(\"fancybox-placeholder\"),e.parentNode.insertBefore(i,e),t.placeholderEl=i}this.instance.setContent(t,e)}else this.instance.setError(t,\"{{ELEMENT_NOT_FOUND}}\")}setIframeContent(t){const{src:e,el:i}=t;if(!e||\"string\"!=typeof e||!i)return;const n=this.instance,s=document.createElement(\"iframe\");s.className=\"fancybox__iframe\",s.setAttribute(\"id\",`fancybox__iframe_${n.id}_${t.index}`),s.setAttribute(\"allow\",\"autoplay; fullscreen\"),s.setAttribute(\"scrolling\",\"auto\"),s.onerror=()=>{n.setError(t,\"{{IFRAME_ERROR}}\")},t.iframeEl=s;const o=this.optionFor(t,\"preload\");if(i.classList.add(\"is-loading\"),\"iframe\"!==t.type||!1===o)return s.setAttribute(\"src\",t.src+\"\"),this.resizeIframe(t),void n.setContent(t,s);n.showLoading(t),s.onload=()=>{if(!s.src.length)return;const e=\"true\"!==s.dataset.ready;s.dataset.ready=\"true\",this.resizeIframe(t),e?n.revealContent(t):n.hideLoading(t)},s.setAttribute(\"src\",e),n.setContent(t,s,!1)}resizeIframe(t){const e=t.iframeEl,i=null==e?void 0:e.parentElement;if(!e||!i)return;let n=t.autoSize,s=t.width||0,o=t.height||0;s&&o&&(n=!1);const a=i&&i.style;if(!1!==t.preload&&!1!==n&&a)try{const t=window.getComputedStyle(i),n=parseFloat(t.paddingLeft)+parseFloat(t.paddingRight),r=parseFloat(t.paddingTop)+parseFloat(t.paddingBottom),l=e.contentWindow;if(l){const t=l.document,e=t.getElementsByTagName(\"html\")[0],i=t.body;a.width=\"\",i.style.overflow=\"hidden\",s=s||e.scrollWidth+n,a.width=`${s}px`,i.style.overflow=\"\",a.flex=\"0 0 auto\",a.height=`${i.scrollHeight}px`,o=e.scrollHeight+r}}catch(t){}if(s||o){const t={flex:\"0 1 auto\",width:\"\",height:\"\"};s&&(t.width=`${s}px`),o&&(t.height=`${o}px`),Object.assign(a,t)}}playVideo(){const t=this.instance.getSlide();if(!t)return;const{el:e}=t;if(!e||!e.offsetParent)return;if(!this.optionFor(t,\"videoAutoplay\"))return;if(\"html5video\"===t.type)try{const t=e.querySelector(\"video\");if(t){const e=t.play();void 0!==e&&e.then((()=>{})).catch((e=>{t.muted=!0,t.play()}))}}catch(t){}if(\"youtube\"!==t.type&&\"vimeo\"!==t.type)return;const i=()=>{if(t.iframeEl&&t.iframeEl.contentWindow){let e;if(\"true\"===t.iframeEl.dataset.ready)return e=\"youtube\"===t.type?{event:\"command\",func:\"playVideo\"}:{method:\"play\",value:\"true\"},e&&t.iframeEl.contentWindow.postMessage(JSON.stringify(e),\"*\"),void(t.poller=void 0);\"youtube\"===t.type&&(e={event:\"listening\",id:t.iframeEl.getAttribute(\"id\")},t.iframeEl.contentWindow.postMessage(JSON.stringify(e),\"*\"))}t.poller=setTimeout(i,250)};i()}processType(t){if(t.html)return t.type=\"html\",t.src=t.html,void(t.html=\"\");const e=this.instance.optionFor(t,\"src\",\"\");if(!e||\"string\"!=typeof e)return;let i=t.type,n=null;if(n=e.match(/(youtube\\.com|youtu\\.be|youtube\\-nocookie\\.com)\\/(?:watch\\?(?:.*&)?v=|v\\/|u\\/|embed\\/?)?(videoseries\\?list=(?:.*)|[\\w-]{11}|\\?listType=(?:.*)&list=(?:.*))(?:.*)/i)){const s=this.optionFor(t,\"youtube\"),{nocookie:o}=s,a=function(t,e){var i={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.indexOf(n)<0&&(i[n]=t[n]);if(null!=t&&\"function\"==typeof Object.getOwnPropertySymbols){var s=0;for(n=Object.getOwnPropertySymbols(t);s<n.length;s++)e.indexOf(n[s])<0&&Object.prototype.propertyIsEnumerable.call(t,n[s])&&(i[n[s]]=t[n[s]])}return i}(s,[\"nocookie\"]),r=`www.youtube${o?\"-nocookie\":\"\"}.com`,l=W(e,a),c=encodeURIComponent(n[2]);t.videoId=c,t.src=`https://${r}/embed/${c}?${l}`,t.thumbSrc=t.thumbSrc||`https://i.ytimg.com/vi/${c}/mqdefault.jpg`,i=\"youtube\"}else if(n=e.match(/^.+vimeo.com\\/(?:\\/)?([\\d]+)((\\/|\\?h=)([a-z0-9]+))?(.*)?/)){const s=W(e,this.optionFor(t,\"vimeo\")),o=encodeURIComponent(n[1]),a=n[4]||\"\";t.videoId=o,t.src=`https://player.vimeo.com/video/${o}?${a?`h=${a}${s?\"&\":\"\"}`:\"\"}${s}`,i=\"vimeo\"}if(!i&&t.triggerEl){const e=t.triggerEl.dataset.type;X.includes(e)&&(i=e)}i||\"string\"==typeof e&&(\"#\"===e.charAt(0)?i=\"inline\":(n=e.match(/\\.(mp4|mov|ogv|webm)((\\?|#).*)?$/i))?(i=\"html5video\",t.videoFormat=t.videoFormat||\"video/\"+(\"ogv\"===n[1]?\"ogg\":n[1])):e.match(/(^data:image\\/[a-z0-9+\\/=]*,)|(\\.(jp(e|g|eg)|gif|png|bmp|webp|svg|ico)((\\?|#).*)?$)/i)?i=\"image\":e.match(/\\.(pdf)((\\?|#).*)?$/i)?i=\"pdf\":(n=e.match(/(?:maps\\.)?google\\.([a-z]{2,3}(?:\\.[a-z]{2})?)\\/(?:(?:(?:maps\\/(?:place\\/(?:.*)\\/)?\\@(.*),(\\d+.?\\d+?)z))|(?:\\?ll=))(.*)?/i))?(t.src=`https://maps.google.${n[1]}/?ll=${(n[2]?n[2]+\"&z=\"+Math.floor(parseFloat(n[3]))+(n[4]?n[4].replace(/^\\//,\"&\"):\"\"):n[4]+\"\").replace(/\\?/,\"&\")}&output=${n[4]&&n[4].indexOf(\"layer=c\")>0?\"svembed\":\"embed\"}`,i=\"map\"):(n=e.match(/(?:maps\\.)?google\\.([a-z]{2,3}(?:\\.[a-z]{2})?)\\/(?:maps\\/search\\/)(.*)/i))&&(t.src=`https://maps.google.${n[1]}/maps?q=${n[2].replace(\"query=\",\"q=\").replace(\"api=1\",\"\")}&output=embed`,i=\"map\")),i=i||this.instance.option(\"defaultType\"),t.type=i,\"image\"===i&&(t.thumbSrc=t.thumbSrc||t.src)}setContent(t){const e=this.instance.optionFor(t,\"src\")||\"\";if(t&&t.type&&e){switch(t.type){case\"html\":this.instance.setContent(t,e);break;case\"html5video\":const i=this.option(\"videoTpl\");i&&this.instance.setContent(t,i.replace(/\\{\\{src\\}\\}/gi,e+\"\").replace(/\\{\\{format\\}\\}/gi,this.optionFor(t,\"videoFormat\")||\"\").replace(/\\{\\{poster\\}\\}/gi,t.poster||t.thumbSrc||\"\"));break;case\"inline\":case\"clone\":this.setInlineContent(t);break;case\"ajax\":this.loadAjaxContent(t);break;case\"pdf\":case\"map\":case\"youtube\":case\"vimeo\":t.preload=!1;case\"iframe\":this.setIframeContent(t)}this.setAspectRatio(t)}}setAspectRatio(t){var e;const i=t.contentEl,n=this.optionFor(t,\"videoRatio\"),s=null===(e=t.el)||void 0===e?void 0:e.getBoundingClientRect();if(!(i&&s&&n&&1!==n&&t.type&&[\"video\",\"youtube\",\"vimeo\",\"html5video\"].includes(t.type)))return;const o=s.width,a=s.height;i.style.aspectRatio=n+\"\",i.style.width=o/a>n?\"auto\":\"\",i.style.height=o/a>n?\"\":\"auto\"}attach(){this.instance.on(\"Carousel.initSlide\",this.onInitSlide),this.instance.on(\"Carousel.createSlide\",this.onCreateSlide),this.instance.on(\"Carousel.removeSlide\",this.onRemoveSlide),this.instance.on(\"Carousel.selectSlide\",this.onSelectSlide),this.instance.on(\"Carousel.unselectSlide\",this.onUnselectSlide),this.instance.on(\"Carousel.Panzoom.refresh\",this.onRefresh),this.instance.on(\"done\",this.onDone),window.addEventListener(\"message\",this.onMessage)}detach(){this.instance.off(\"Carousel.initSlide\",this.onInitSlide),this.instance.off(\"Carousel.createSlide\",this.onCreateSlide),this.instance.off(\"Carousel.removeSlide\",this.onRemoveSlide),this.instance.off(\"Carousel.selectSlide\",this.onSelectSlide),this.instance.off(\"Carousel.unselectSlide\",this.onUnselectSlide),this.instance.off(\"Carousel.Panzoom.refresh\",this.onRefresh),this.instance.off(\"done\",this.onDone),window.removeEventListener(\"message\",this.onMessage)}}Object.defineProperty(Y,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:$});class q extends b{constructor(){super(...arguments),Object.defineProperty(this,\"state\",{enumerable:!0,configurable:!0,writable:!0,value:\"ready\"}),Object.defineProperty(this,\"inHover\",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,\"timer\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"progressBar\",{enumerable:!0,configurable:!0,writable:!0,value:null})}get isActive(){return\"ready\"!==this.state}onReady(t){this.option(\"autoStart\")&&(t.isInfinite||t.page<t.pages.length-1)&&this.start()}onChange(){var t;(null===(t=this.instance.panzoom)||void 0===t?void 0:t.isResting)||(this.removeProgressBar(),this.pause())}onSettle(){this.resume()}onVisibilityChange(){\"visible\"===document.visibilityState?this.resume():this.pause()}onMouseEnter(){this.inHover=!0,this.pause()}onMouseLeave(){var t;this.inHover=!1,(null===(t=this.instance.panzoom)||void 0===t?void 0:t.isResting)&&this.resume()}onTimerEnd(){\"play\"===this.state&&(this.instance.isInfinite||this.instance.page!==this.instance.pages.length-1?this.instance.slideNext():this.instance.slideTo(0))}removeProgressBar(){this.progressBar&&(this.progressBar.remove(),this.progressBar=null)}createProgressBar(){var t;if(!this.option(\"showProgress\"))return null;this.removeProgressBar();const e=this.instance,i=(null===(t=e.pages[e.page])||void 0===t?void 0:t.slides)||[];let n=this.option(\"progressParentEl\");if(n||(n=(1===i.length?i[0].el:null)||e.viewport),!n)return null;const s=document.createElement(\"div\");return D(s,\"f-progress\"),n.prepend(s),this.progressBar=s,s.offsetHeight,s}set(){if(this.instance.pages.length<2)return;if(this.progressBar)return;const t=this.option(\"timeout\");this.state=\"play\",D(this.instance.container,\"has-autoplay\");let e=this.createProgressBar();e&&(e.style.transitionDuration=`${t}ms`,e.style.transform=\"scaleX(1)\"),this.timer=setTimeout((()=>{this.timer=null,this.inHover||this.onTimerEnd()}),t),this.emit(\"set\")}clear(){this.timer&&(clearTimeout(this.timer),this.timer=null),this.removeProgressBar()}start(){if(this.set(),this.option(\"pauseOnHover\")){const t=this.instance.container;t.addEventListener(\"mouseenter\",this.onMouseEnter,!1),t.addEventListener(\"mouseleave\",this.onMouseLeave,!1)}document.addEventListener(\"visibilitychange\",this.onVisibilityChange,!1)}stop(){const t=this.instance.container;this.clear(),this.state=\"ready\",t.removeEventListener(\"mouseenter\",this.onMouseEnter,!1),t.removeEventListener(\"mouseleave\",this.onMouseLeave,!1),document.removeEventListener(\"visibilitychange\",this.onVisibilityChange,!1),I(t,\"has-autoplay\"),this.emit(\"stop\")}pause(){\"play\"===this.state&&(this.state=\"pause\",this.clear(),this.emit(\"pause\"))}resume(){const t=this.instance;if(t.isInfinite||t.page!==t.pages.length-1)if(\"play\"!==this.state){if(\"pause\"===this.state&&!this.inHover){const t=new Event(\"resume\",{bubbles:!0,cancelable:!0});this.emit(\"resume\",event),t.defaultPrevented||this.set()}}else this.set();else this.stop()}toggle(){\"play\"===this.state||\"pause\"===this.state?this.stop():this.set()}attach(){this.instance.on(\"ready\",this.onReady),this.instance.on(\"Panzoom.startAnimation\",this.onChange),this.instance.on(\"Panzoom.endAnimation\",this.onSettle),this.instance.on(\"Panzoom.touchMove\",this.onChange)}detach(){this.instance.off(\"ready\",this.onReady),this.instance.off(\"Panzoom.startAnimation\",this.onChange),this.instance.off(\"Panzoom.endAnimation\",this.onSettle),this.instance.off(\"Panzoom.touchMove\",this.onChange),this.stop()}}Object.defineProperty(q,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:{autoStart:!0,pauseOnHover:!0,progressParentEl:null,showProgress:!0,timeout:3e3}});class Z extends b{constructor(){super(...arguments),Object.defineProperty(this,\"ref\",{enumerable:!0,configurable:!0,writable:!0,value:null})}onPrepare(t){const i=t.carousel;if(!i)return;const n=t.container;n&&(i.options.Autoplay=e(this.option(\"Autoplay\")||{},{pauseOnHover:!1,autoStart:!1,timeout:this.option(\"timeout\"),progressParentEl:()=>n.querySelector(\".fancybox__toolbar [data-fancybox-toggle-slideshow]\")||n,on:{set:e=>{var i;n.classList.add(\"has-slideshow\"),(null===(i=t.getSlide())||void 0===i?void 0:i.state)!==p.Ready&&e.pause()},stop:()=>{n.classList.remove(\"has-slideshow\"),t.isCompact||t.endIdle()},resume:(e,i)=>{var n,s,o;!i||!i.cancelable||(null===(n=t.getSlide())||void 0===n?void 0:n.state)===p.Ready&&(null===(o=null===(s=t.carousel)||void 0===s?void 0:s.panzoom)||void 0===o?void 0:o.isResting)||i.preventDefault()}}}),i.attachPlugins({Autoplay:q}),this.ref=i.plugins.Autoplay)}onReady(t){const e=t.carousel,i=this.ref;e&&i&&this.option(\"playOnStart\")&&(e.isInfinite||e.page<e.pages.length-1)&&i.start()}onDone(t,e){const i=this.ref;if(!i)return;const n=e.panzoom;n&&n.on(\"startAnimation\",(()=>{t.isCurrentSlide(e)&&i.stop()})),t.isCurrentSlide(e)&&i.resume()}onKeydown(t,e){var i;const n=this.ref;n&&e===this.option(\"key\")&&\"BUTTON\"!==(null===(i=document.activeElement)||void 0===i?void 0:i.nodeName)&&n.toggle()}attach(){this.instance.on(\"Carousel.init\",this.onPrepare),this.instance.on(\"Carousel.ready\",this.onReady),this.instance.on(\"done\",this.onDone),this.instance.on(\"keydown\",this.onKeydown)}detach(){this.instance.off(\"Carousel.init\",this.onPrepare),this.instance.off(\"Carousel.ready\",this.onReady),this.instance.off(\"done\",this.onDone),this.instance.off(\"keydown\",this.onKeydown)}}Object.defineProperty(Z,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:{key:\" \",playOnStart:!1,timeout:3e3}});const V={classes:{container:\"f-thumbs f-carousel__thumbs\",viewport:\"f-thumbs__viewport\",track:\"f-thumbs__track\",slide:\"f-thumbs__slide\",isResting:\"is-resting\",isSelected:\"is-selected\",isLoading:\"is-loading\",hasThumbs:\"has-thumbs\"},minCount:2,parentEl:null,thumbTpl:'<button class=\"f-thumbs__slide__button\" tabindex=\"0\" type=\"button\" aria-label=\"{{GOTO}}\" data-carousel-index=\"%i\"><img class=\"f-thumbs__slide__img\" data-lazy-src=\"{{%s}}\" alt=\"\" /></button>',type:\"modern\"};var U;!function(t){t[t.Init=0]=\"Init\",t[t.Ready=1]=\"Ready\",t[t.Hidden=2]=\"Hidden\",t[t.Disabled=3]=\"Disabled\"}(U||(U={}));let G=class extends b{constructor(){super(...arguments),Object.defineProperty(this,\"type\",{enumerable:!0,configurable:!0,writable:!0,value:\"modern\"}),Object.defineProperty(this,\"container\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"track\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"carousel\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"panzoom\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"thumbWidth\",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,\"thumbClipWidth\",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,\"thumbHeight\",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,\"thumbGap\",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,\"thumbExtraGap\",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,\"shouldCenter\",{enumerable:!0,configurable:!0,writable:!0,value:!0}),Object.defineProperty(this,\"state\",{enumerable:!0,configurable:!0,writable:!0,value:U.Init})}formatThumb(t,e){return this.instance.localize(e,[[\"%i\",t.index],[\"%d\",t.index+1],[\"%s\",t.thumbSrc||\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7\"]])}getSlides(){const t=[],e=this.option(\"thumbTpl\")||\"\";if(e)for(const i of this.instance.slides||[]){let n=\"\";i.type&&(n=`for-${i.type}`,i.type&&[\"video\",\"youtube\",\"vimeo\",\"html5video\"].includes(i.type)&&(n+=\" for-video\")),t.push({html:this.formatThumb(i,e),customClass:n})}return t}onInitSlide(t,e){const i=e.el;i&&(e.thumbSrc=i.dataset.thumbSrc||e.thumbSrc||\"\",e.thumbClipWidth=parseFloat(i.dataset.thumbClipWidth||\"\")||e.thumbClipWidth||0,e.thumbHeight=parseFloat(i.dataset.thumbHeight||\"\")||e.thumbHeight||0)}onInitSlides(){this.state===U.Init&&this.build()}onRefreshM(){this.refreshModern()}onChangeM(){\"modern\"===this.type&&(this.shouldCenter=!0,this.centerModern())}onClickModern(t){t.preventDefault(),t.stopPropagation();const e=this.instance,i=e.page,n=t=>{if(t){const e=t.closest(\"[data-carousel-index]\");if(e)return parseInt(e.dataset.carouselIndex||\"\",10)||0}return-1},s=(t,e)=>{const i=document.elementFromPoint(t,e);return i?n(i):-1};let o=n(t.target);o<0&&(o=s(t.clientX+this.thumbGap,t.clientY),o===i&&(o=i-1)),o<0&&(o=s(t.clientX-this.thumbGap,t.clientY),o===i&&(o=i+1)),o<0&&(o=(e=>{let n=s(t.clientX-e,t.clientY),a=s(t.clientX+e,t.clientY);return o<0&&n===i&&(o=i+1),o<0&&a===i&&(o=i-1),o})(this.thumbExtraGap)),o===i?this.centerModern():o>-1&&o<e.pages.length&&e.slideTo(o)}onTransformM(){if(\"modern\"!==this.type)return;const{instance:t,container:e,track:i}=this,n=t.panzoom;if(!(e&&i&&n&&this.panzoom))return;M(e,this.cn(\"isResting\"),n.state!==L.Init&&n.isResting);const s=this.thumbGap,o=this.thumbExtraGap,a=this.thumbClipWidth;let r=0,l=0,c=0;for(const e of t.slides){let i=e.index,n=e.thumbSlideEl;if(!n)continue;M(n,this.cn(\"isSelected\"),i===t.page),l=1-Math.abs(t.getProgress(i)),n.style.setProperty(\"--progress\",l?l+\"\":\"\");const h=.5*((e.thumbWidth||0)-a);r+=s,r+=h,l&&(r-=l*(h+o)),n.style.setProperty(\"--shift\",r-s+\"\"),r+=h,l&&(r-=l*(h+o)),r-=s,0===i&&(c=o*l)}i&&(i.style.setProperty(\"--left\",c+\"\"),i.style.setProperty(\"--width\",r+c+s+o*l+\"\")),this.shouldCenter&&this.centerModern()}buildClassic(){const{container:t,track:i}=this,n=this.getSlides();if(!t||!i||!n)return;const s=new this.instance.constructor(t,e({track:i,infinite:!1,center:!0,fill:!0,dragFree:!0,slidesPerPage:1,transition:!1,Dots:!1,Navigation:!1,Sync:{},classes:{container:\"f-thumbs\",viewport:\"f-thumbs__viewport\",track:\"f-thumbs__track\",slide:\"f-thumbs__slide\"}},this.option(\"Carousel\")||{},{Sync:{target:this.instance},slides:n}));this.carousel=s,this.track=i,s.on(\"ready\",(()=>{this.emit(\"ready\")}))}buildModern(){if(\"modern\"!==this.type)return;const{container:t,track:e,instance:n}=this,s=this.option(\"thumbTpl\")||\"\";if(!t||!e||!s)return;D(t,\"is-horizontal\"),this.updateModern();for(const t of n.slides||[]){const n=document.createElement(\"div\");if(D(n,this.cn(\"slide\")),t.type){let e=`for-${t.type}`;[\"video\",\"youtube\",\"vimeo\",\"html5video\"].includes(t.type)&&(e+=\" for-video\"),D(n,e)}n.appendChild(i(this.formatThumb(t,s))),t.thumbSlideEl=n,e.appendChild(n),this.resizeModernSlide(t)}const o=new n.constructor.Panzoom(t,{content:e,lockAxis:\"x\",zoom:!1,panOnlyZoomed:!1,bounds:()=>{let t=0,e=0,i=n.slides[0],s=n.slides[n.slides.length-1],o=n.slides[n.page];return i&&s&&o&&(e=-1*this.getModernThumbPos(0),0!==n.page&&(e+=.5*(i.thumbWidth||0)),t=-1*this.getModernThumbPos(n.slides.length-1),n.page!==n.slides.length-1&&(t+=(s.thumbWidth||0)-(o.thumbWidth||0)-.5*(s.thumbWidth||0))),{x:{min:t,max:e},y:{min:0,max:0}}}});o.on(\"touchStart\",((t,e)=>{this.shouldCenter=!1})),o.on(\"click\",((t,e)=>this.onClickModern(e))),o.on(\"ready\",(()=>{this.centerModern(),this.emit(\"ready\")})),o.on([\"afterTransform\",\"refresh\"],(t=>{this.lazyLoadModern()})),this.panzoom=o,this.refreshModern()}updateModern(){if(\"modern\"!==this.type)return;const{container:t}=this;t&&(this.thumbGap=parseFloat(getComputedStyle(t).getPropertyValue(\"--f-thumb-gap\"))||0,this.thumbExtraGap=parseFloat(getComputedStyle(t).getPropertyValue(\"--f-thumb-extra-gap\"))||0,this.thumbWidth=parseFloat(getComputedStyle(t).getPropertyValue(\"--f-thumb-width\"))||40,this.thumbClipWidth=parseFloat(getComputedStyle(t).getPropertyValue(\"--f-thumb-clip-width\"))||40,this.thumbHeight=parseFloat(getComputedStyle(t).getPropertyValue(\"--f-thumb-height\"))||40)}refreshModern(){var t;if(\"modern\"===this.type){this.updateModern();for(const t of this.instance.slides||[])this.resizeModernSlide(t);this.onTransformM(),null===(t=this.panzoom)||void 0===t||t.updateMetrics(!0),this.centerModern(0)}}centerModern(t){const e=this.instance,{container:i,panzoom:n}=this;if(!i||!n||n.state===L.Init)return;const s=e.page;let o=this.getModernThumbPos(s),a=o;for(let t=e.page-3;t<e.page+3;t++){if(t<0||t>e.pages.length-1||t===e.page)continue;const i=1-Math.abs(e.getProgress(t));i>0&&i<1&&(a+=i*(this.getModernThumbPos(t)-o))}let r=100;void 0===t&&(t=.2,e.inTransition.size>0&&(t=.12),Math.abs(-1*n.current.e-a)>n.containerRect.width&&(t=.5,r=0)),n.options.maxVelocity=r,n.applyChange({panX:x(-1*a-n.target.e,1e3),friction:null===e.prevPage?0:t})}lazyLoadModern(){const{instance:t,panzoom:e}=this;if(!e)return;const n=-1*e.current.e||0;let s=this.getModernThumbPos(t.page);if(e.state!==L.Init||0===s)for(const s of t.slides||[]){const t=s.thumbSlideEl;if(!t)continue;const o=t.querySelector(\"img[data-lazy-src]\"),a=s.index,r=this.getModernThumbPos(a),l=n-.5*e.containerRect.innerWidth,h=l+e.containerRect.innerWidth;if(!o||r<l||r>h)continue;let d=o.dataset.lazySrc;if(!d||!d.length)continue;if(delete o.dataset.lazySrc,o.src=d,o.complete)continue;D(t,this.cn(\"isLoading\"));const u=i(c);t.appendChild(u),o.addEventListener(\"load\",(()=>{t.offsetParent&&(t.classList.remove(this.cn(\"isLoading\")),u.remove())}),!1)}}resizeModernSlide(t){if(\"modern\"!==this.type)return;if(!t.thumbSlideEl)return;const e=t.thumbClipWidth&&t.thumbHeight?Math.round(this.thumbHeight*(t.thumbClipWidth/t.thumbHeight)):this.thumbWidth;t.thumbWidth=e}getModernThumbPos(t){const e=this.instance.slides[t],i=this.panzoom;if(!i||!i.contentRect.fitWidth)return 0;let n=i.containerRect.innerWidth,s=i.contentRect.width;2===this.instance.slides.length&&(t-=1,s=2*this.thumbClipWidth);let o=t*(this.thumbClipWidth+this.thumbGap)+this.thumbExtraGap+.5*(e.thumbWidth||0);return o-=s>n?.5*n:.5*s,x(o||0,1)}build(){const t=this.instance,e=t.container,i=this.option(\"minCount\")||0;if(i){let e=0;for(const i of t.slides||[])i.thumbSrc&&e++;if(e<i)return this.cleanup(),void(this.state=U.Disabled)}const n=this.option(\"type\");if([\"modern\",\"classic\"].indexOf(n)<0)return void(this.state=U.Disabled);this.type=n;const s=document.createElement(\"div\");D(s,this.cn(\"container\")),D(s,`is-${n}`);const o=this.option(\"parentEl\");o?o.appendChild(s):e.after(s),this.container=s,D(e,this.cn(\"hasThumbs\"));const a=document.createElement(\"div\");D(a,this.cn(\"track\")),s.appendChild(a),this.track=a,\"classic\"===n?this.buildClassic():this.buildModern(),this.state=U.Ready,s.addEventListener(\"click\",(e=>{setTimeout((()=>{var e;null===(e=null==s?void 0:s.querySelector(`[data-carousel-index=\"${t.page}\"]`))||void 0===e||e.focus()}),100)}))}cleanup(){this.carousel&&this.carousel.destroy(),this.carousel=null,this.panzoom&&this.panzoom.destroy(),this.panzoom=null,this.container&&this.container.remove(),this.container=null,this.track=null,this.state=U.Init,I(this.instance.container,this.cn(\"hasThumbs\"))}attach(){this.instance.on(\"initSlide\",this.onInitSlide),this.instance.on(\"initSlides\",this.onInitSlides),this.instance.on(\"Panzoom.afterTransform\",this.onTransformM),this.instance.on(\"Panzoom.refresh\",this.onRefreshM),this.instance.on(\"change\",this.onChangeM)}detach(){this.instance.off(\"initSlide\",this.onInitSlide),this.instance.off(\"initSlides\",this.onInitSlides),this.instance.off(\"Panzoom.afterTransform\",this.onTransformM),this.instance.off(\"Panzoom.refresh\",this.onRefreshM),this.instance.off(\"change\",this.onChangeM),this.cleanup()}};Object.defineProperty(G,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:V});const K=Object.assign(Object.assign({},V),{key:\"t\",showOnStart:!0,parentEl:null});class J extends b{constructor(){super(...arguments),Object.defineProperty(this,\"ref\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"hidden\",{enumerable:!0,configurable:!0,writable:!0,value:!1})}get isEnabled(){const t=this.ref;return t&&t.state!==U.Disabled}get isHidden(){return this.hidden}onInit(){const t=this.instance,i=t.carousel;if(!i)return;const n=this.option(\"parentEl\")||t.footer||t.container;n&&(i.options.Thumbs=e({},this.options,{parentEl:n,classes:{container:\"f-thumbs fancybox__thumbs\"},Carousel:{Sync:{friction:t.option(\"Carousel.friction\")},on:{click:(t,e)=>{e.stopPropagation()}}},on:{ready:t=>{const e=t.container;e&&this.hidden&&(this.refresh(),e.style.transition=\"none\",this.hide(),e.offsetHeight,queueMicrotask((()=>{e.style.transition=\"\",this.show()})))}}}),i.attachPlugins({Thumbs:G}),this.ref=i.plugins.Thumbs,this.option(\"showOnStart\")||(this.ref.state=U.Hidden,this.hidden=!0))}onResize(){var t;const e=null===(t=this.ref)||void 0===t?void 0:t.container;e&&(e.style.maxHeight=\"\")}onKeydown(t,e){const i=this.option(\"key\");i&&i===e&&this.toggle()}toggle(){const t=this.ref;t&&t.state!==U.Disabled&&(t.state!==U.Hidden?this.hidden?this.show():this.hide():t.build())}show(){const t=this.ref,e=t&&t.state!==U.Disabled&&t.container;e&&(this.refresh(),e.offsetHeight,e.removeAttribute(\"aria-hidden\"),e.classList.remove(\"is-hidden\"),this.hidden=!1)}hide(){const t=this.ref,e=t&&t.container;e&&(this.refresh(),e.offsetHeight,e.classList.add(\"is-hidden\"),e.setAttribute(\"aria-hidden\",\"true\")),this.hidden=!0}refresh(){const t=this.ref;if(!t||t.state===U.Disabled)return;const e=t.container,i=(null==e?void 0:e.firstChild)||null;e&&i&&i.childNodes.length&&(e.style.maxHeight=`${i.getBoundingClientRect().height}px`)}attach(){this.instance.on(\"Carousel.init\",this.onInit),this.instance.on(\"resize\",this.onResize),this.instance.on(\"keydown\",this.onKeydown)}detach(){this.instance.off(\"Carousel.init\",this.onInit),this.instance.off(\"resize\",this.onResize),this.instance.off(\"keydown\",this.onKeydown)}}Object.defineProperty(J,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:K});const Q={panLeft:{icon:'<svg><path d=\"M5 12h14M5 12l6 6M5 12l6-6\"/></svg>',change:{panX:-100}},panRight:{icon:'<svg><path d=\"M5 12h14M13 18l6-6M13 6l6 6\"/></svg>',change:{panX:100}},panUp:{icon:'<svg><path d=\"M12 5v14M18 11l-6-6M6 11l6-6\"/></svg>',change:{panY:-100}},panDown:{icon:'<svg><path d=\"M12 5v14M18 13l-6 6M6 13l6 6\"/></svg>',change:{panY:100}},zoomIn:{icon:'<svg><circle cx=\"11\" cy=\"11\" r=\"7.5\"/><path d=\"m21 21-4.35-4.35M11 8v6M8 11h6\"/></svg>',action:\"zoomIn\"},zoomOut:{icon:'<svg><circle cx=\"11\" cy=\"11\" r=\"7.5\"/><path d=\"m21 21-4.35-4.35M8 11h6\"/></svg>',action:\"zoomOut\"},toggle1to1:{icon:'<svg><path d=\"M3.51 3.07c5.74.02 11.48-.02 17.22.02 1.37.1 2.34 1.64 2.18 3.13 0 4.08.02 8.16 0 12.23-.1 1.54-1.47 2.64-2.79 2.46-5.61-.01-11.24.02-16.86-.01-1.36-.12-2.33-1.65-2.17-3.14 0-4.07-.02-8.16 0-12.23.1-1.36 1.22-2.48 2.42-2.46Z\"/><path d=\"M5.65 8.54h1.49v6.92m8.94-6.92h1.49v6.92M11.5 9.4v.02m0 5.18v0\"/></svg>',action:\"toggleZoom\"},toggleZoom:{icon:'<svg><g><line x1=\"11\" y1=\"8\" x2=\"11\" y2=\"14\"></line></g><circle cx=\"11\" cy=\"11\" r=\"7.5\"/><path d=\"m21 21-4.35-4.35M8 11h6\"/></svg>',action:\"toggleZoom\"},iterateZoom:{icon:'<svg><g><line x1=\"11\" y1=\"8\" x2=\"11\" y2=\"14\"></line></g><circle cx=\"11\" cy=\"11\" r=\"7.5\"/><path d=\"m21 21-4.35-4.35M8 11h6\"/></svg>',action:\"iterateZoom\"},rotateCCW:{icon:'<svg><path d=\"M15 4.55a8 8 0 0 0-6 14.9M9 15v5H4M18.37 7.16v.01M13 19.94v.01M16.84 18.37v.01M19.37 15.1v.01M19.94 11v.01\"/></svg>',action:\"rotateCCW\"},rotateCW:{icon:'<svg><path d=\"M9 4.55a8 8 0 0 1 6 14.9M15 15v5h5M5.63 7.16v.01M4.06 11v.01M4.63 15.1v.01M7.16 18.37v.01M11 19.94v.01\"/></svg>',action:\"rotateCW\"},flipX:{icon:'<svg style=\"stroke-width: 1.3\"><path d=\"M12 3v18M16 7v10h5L16 7M8 7v10H3L8 7\"/></svg>',action:\"flipX\"},flipY:{icon:'<svg style=\"stroke-width: 1.3\"><path d=\"M3 12h18M7 16h10L7 21v-5M7 8h10L7 3v5\"/></svg>',action:\"flipY\"},fitX:{icon:'<svg><path d=\"M4 12V6a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v6M10 18H3M21 18h-7M6 15l-3 3 3 3M18 15l3 3-3 3\"/></svg>',action:\"fitX\"},fitY:{icon:'<svg><path d=\"M12 20H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h6M18 14v7M18 3v7M15 18l3 3 3-3M15 6l3-3 3 3\"/></svg>',action:\"fitY\"},reset:{icon:'<svg><path d=\"M20 11A8.1 8.1 0 0 0 4.5 9M4 5v4h4M4 13a8.1 8.1 0 0 0 15.5 2m.5 4v-4h-4\"/></svg>',action:\"reset\"},toggleFS:{icon:'<svg><g><path d=\"M14.5 9.5 21 3m0 0h-6m6 0v6M3 21l6.5-6.5M3 21v-6m0 6h6\"/></g><g><path d=\"m14 10 7-7m-7 7h6m-6 0V4M3 21l7-7m0 0v6m0-6H4\"/></g></svg>',action:\"toggleFS\"}};var tt;!function(t){t[t.Init=0]=\"Init\",t[t.Ready=1]=\"Ready\",t[t.Disabled=2]=\"Disabled\"}(tt||(tt={}));const et={absolute:\"auto\",display:{left:[\"infobar\"],middle:[],right:[\"iterateZoom\",\"slideshow\",\"fullscreen\",\"thumbs\",\"close\"]},enabled:\"auto\",items:{infobar:{tpl:'<div class=\"fancybox__infobar\" tabindex=\"-1\"><span data-fancybox-current-index></span>/<span data-fancybox-count></span></div>'},download:{tpl:'<a class=\"f-button\" title=\"{{DOWNLOAD}}\" data-fancybox-download href=\"javasript:;\"><svg><path d=\"M4 17v2a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2M7 11l5 5 5-5M12 4v12\"/></svg></a>'},prev:{tpl:'<button class=\"f-button\" title=\"{{PREV}}\" data-fancybox-prev><svg><path d=\"m15 6-6 6 6 6\"/></svg></button>'},next:{tpl:'<button class=\"f-button\" title=\"{{NEXT}}\" data-fancybox-next><svg><path d=\"m9 6 6 6-6 6\"/></svg></button>'},slideshow:{tpl:'<button class=\"f-button\" title=\"{{TOGGLE_SLIDESHOW}}\" data-fancybox-toggle-slideshow><svg><g><path d=\"M8 4v16l13 -8z\"></path></g><g><path d=\"M8 4v15M17 4v15\"/></g></svg></button>'},fullscreen:{tpl:'<button class=\"f-button\" title=\"{{TOGGLE_FULLSCREEN}}\" data-fancybox-toggle-fullscreen><svg><g><path d=\"M4 8V6a2 2 0 0 1 2-2h2M4 16v2a2 2 0 0 0 2 2h2M16 4h2a2 2 0 0 1 2 2v2M16 20h2a2 2 0 0 0 2-2v-2\"/></g><g><path d=\"M15 19v-2a2 2 0 0 1 2-2h2M15 5v2a2 2 0 0 0 2 2h2M5 15h2a2 2 0 0 1 2 2v2M5 9h2a2 2 0 0 0 2-2V5\"/></g></svg></button>'},thumbs:{tpl:'<button class=\"f-button\" title=\"{{TOGGLE_THUMBS}}\" data-fancybox-toggle-thumbs><svg><circle cx=\"5.5\" cy=\"5.5\" r=\"1\"/><circle cx=\"12\" cy=\"5.5\" r=\"1\"/><circle cx=\"18.5\" cy=\"5.5\" r=\"1\"/><circle cx=\"5.5\" cy=\"12\" r=\"1\"/><circle cx=\"12\" cy=\"12\" r=\"1\"/><circle cx=\"18.5\" cy=\"12\" r=\"1\"/><circle cx=\"5.5\" cy=\"18.5\" r=\"1\"/><circle cx=\"12\" cy=\"18.5\" r=\"1\"/><circle cx=\"18.5\" cy=\"18.5\" r=\"1\"/></svg></button>'},close:{tpl:'<button class=\"f-button\" title=\"{{CLOSE}}\" data-fancybox-close><svg><path d=\"m19.5 4.5-15 15M4.5 4.5l15 15\"/></svg></button>'}},parentEl:null},it={tabindex:\"-1\",width:\"24\",height:\"24\",viewBox:\"0 0 24 24\",xmlns:\"http://www.w3.org/2000/svg\"};class nt extends b{constructor(){super(...arguments),Object.defineProperty(this,\"state\",{enumerable:!0,configurable:!0,writable:!0,value:tt.Init}),Object.defineProperty(this,\"container\",{enumerable:!0,configurable:!0,writable:!0,value:null})}onReady(t){var e;if(!t.carousel)return;let i=this.option(\"display\"),n=this.option(\"absolute\"),s=this.option(\"enabled\");if(\"auto\"===s){const t=this.instance.carousel;let e=0;if(t)for(const i of t.slides)(i.panzoom||\"image\"===i.type)&&e++;e||(s=!1)}s||(i=void 0);let o=0;const a={left:[],middle:[],right:[]};if(i)for(const t of[\"left\",\"middle\",\"right\"])for(const n of i[t]){const i=this.createEl(n);i&&(null===(e=a[t])||void 0===e||e.push(i),o++)}let r=null;if(o&&(r=this.createContainer()),r){for(const[t,e]of Object.entries(a)){const i=document.createElement(\"div\");D(i,\"fancybox__toolbar__column is-\"+t);for(const t of e)i.appendChild(t);\"auto\"!==n||\"middle\"!==t||e.length||(n=!0),r.appendChild(i)}!0===n&&D(r,\"is-absolute\"),this.state=tt.Ready,this.onRefresh()}else this.state=tt.Disabled}onClick(t){var e,i;const s=this.instance,o=s.getSlide(),a=null==o?void 0:o.panzoom,r=t.target,l=r&&n(r)?r.dataset:null;if(!l)return;if(void 0!==l.fancyboxToggleThumbs)return t.preventDefault(),t.stopPropagation(),void(null===(e=s.plugins.Thumbs)||void 0===e||e.toggle());if(void 0!==l.fancyboxToggleFullscreen)return t.preventDefault(),t.stopPropagation(),void this.instance.toggleFullscreen();if(void 0!==l.fancyboxToggleSlideshow){t.preventDefault(),t.stopPropagation();const e=null===(i=s.carousel)||void 0===i?void 0:i.plugins.Autoplay;let n=e.isActive;return a&&\"mousemove\"===a.panMode&&!n&&a.reset(),void(n?e.stop():e.start())}const c=l.panzoomAction,h=l.panzoomChange;if((h||c)&&(t.preventDefault(),t.stopPropagation()),h){let t={};try{t=JSON.parse(h)}catch(t){}a&&a.applyChange(t)}else c&&a&&a[c]&&a[c]()}onChange(){this.onRefresh()}onRefresh(){if(this.instance.isClosing())return;const t=this.container;if(!t)return;const e=this.instance.getSlide();if(!e||e.state!==p.Ready)return;const i=e&&!e.error&&e.panzoom;for(const e of t.querySelectorAll(\"[data-panzoom-action]\"))i?(e.removeAttribute(\"disabled\"),e.removeAttribute(\"tabindex\")):(e.setAttribute(\"disabled\",\"\"),e.setAttribute(\"tabindex\",\"-1\"));let n=i&&i.canZoomIn(),s=i&&i.canZoomOut();for(const e of t.querySelectorAll('[data-panzoom-action=\"zoomIn\"]'))n?(e.removeAttribute(\"disabled\"),e.removeAttribute(\"tabindex\")):(e.setAttribute(\"disabled\",\"\"),e.setAttribute(\"tabindex\",\"-1\"));for(const e of t.querySelectorAll('[data-panzoom-action=\"zoomOut\"]'))s?(e.removeAttribute(\"disabled\"),e.removeAttribute(\"tabindex\")):(e.setAttribute(\"disabled\",\"\"),e.setAttribute(\"tabindex\",\"-1\"));for(const e of t.querySelectorAll('[data-panzoom-action=\"toggleZoom\"],[data-panzoom-action=\"iterateZoom\"]')){s||n?(e.removeAttribute(\"disabled\"),e.removeAttribute(\"tabindex\")):(e.setAttribute(\"disabled\",\"\"),e.setAttribute(\"tabindex\",\"-1\"));const t=e.querySelector(\"g\");t&&(t.style.display=n?\"\":\"none\")}}onDone(t,e){var i;null===(i=e.panzoom)||void 0===i||i.on(\"afterTransform\",(()=>{this.instance.isCurrentSlide(e)&&this.onRefresh()})),this.instance.isCurrentSlide(e)&&this.onRefresh()}createContainer(){const t=this.instance.container;if(!t)return null;const e=this.option(\"parentEl\")||t,i=document.createElement(\"div\");return D(i,\"fancybox__toolbar\"),e.prepend(i),i.addEventListener(\"click\",this.onClick,{passive:!1,capture:!0}),t&&D(t,\"has-toolbar\"),this.container=i,i}createEl(t){var e;const n=this.instance.carousel;if(!n)return null;if(\"toggleFS\"===t)return null;if(\"fullscreen\"===t&&!this.instance.fsAPI)return null;let s=null;const o=n.slides.length||0;let a=0,r=0;for(const t of n.slides)(t.panzoom||\"image\"===t.type)&&a++,(\"image\"===t.type||t.downloadSrc)&&r++;if(o<2&&[\"infobar\",\"prev\",\"next\"].includes(t))return s;if(void 0!==Q[t]&&!a)return null;if(\"download\"===t&&!r)return null;if(\"thumbs\"===t){const t=this.instance.plugins.Thumbs;if(!t||!t.isEnabled)return null}if(\"slideshow\"===t){if(!(null===(e=this.instance.carousel)||void 0===e?void 0:e.plugins.Autoplay)||o<2)return null}if(void 0!==Q[t]){const e=Q[t];s=document.createElement(\"button\"),s.setAttribute(\"title\",this.instance.localize(`{{${t.toUpperCase()}}}`)),D(s,\"f-button\"),e.action&&(s.dataset.panzoomAction=e.action),e.change&&(s.dataset.panzoomChange=JSON.stringify(e.change)),s.appendChild(i(this.instance.localize(e.icon)))}else{const e=(this.option(\"items\")||[])[t];e&&(s=i(this.instance.localize(e.tpl)),\"function\"==typeof e.click&&s.addEventListener(\"click\",(t=>{t.preventDefault(),t.stopPropagation(),\"function\"==typeof e.click&&e.click.call(this,this,t)})))}const l=null==s?void 0:s.querySelector(\"svg\");if(l)for(const[t,e]of Object.entries(it))l.getAttribute(t)||l.setAttribute(t,String(e));return s}removeContainer(){var t;const e=this.container;e&&e.removeEventListener(\"click\",this.onClick,{passive:!1,capture:!0}),null===(t=this.container)||void 0===t||t.remove(),this.container=null,this.state=tt.Disabled;const i=this.instance.container;i&&I(i,\"has-toolbar\")}attach(){this.instance.on(\"Carousel.initSlides\",this.onReady),this.instance.on(\"done\",this.onDone),this.instance.on(\"reveal\",this.onChange),this.instance.on(\"Carousel.change\",this.onChange),this.onReady(this.instance)}detach(){this.instance.off(\"Carousel.initSlides\",this.onReady),this.instance.off(\"done\",this.onDone),this.instance.off(\"reveal\",this.onChange),this.instance.off(\"Carousel.change\",this.onChange),this.removeContainer()}}Object.defineProperty(nt,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:et});const st={Hash:y,Html:Y,Images:N,Slideshow:Z,Thumbs:J,Toolbar:nt},ot=function(t,e){let i=!0;return(...n)=>{i&&(i=!1,t(...n),setTimeout((()=>{i=!0}),e))}},at=(t,e)=>{let i=[];return t.childNodes.forEach((t=>{t.nodeType!==Node.ELEMENT_NODE||e&&!t.matches(e)||i.push(t)})),i},rt={viewport:null,track:null,enabled:!0,slides:[],axis:\"x\",transition:\"fade\",preload:1,slidesPerPage:\"auto\",initialPage:0,friction:.12,Panzoom:{decelFriction:.12},center:!0,infinite:!0,fill:!0,dragFree:!1,adaptiveHeight:!1,direction:\"ltr\",classes:{container:\"f-carousel\",viewport:\"f-carousel__viewport\",track:\"f-carousel__track\",slide:\"f-carousel__slide\",isLTR:\"is-ltr\",isRTL:\"is-rtl\",isHorizontal:\"is-horizontal\",isVertical:\"is-vertical\",inTransition:\"in-transition\",isSelected:\"is-selected\"},l10n:{NEXT:\"Next slide\",PREV:\"Previous slide\",GOTO:\"Go to slide #%d\"}};var lt;!function(t){t[t.Init=0]=\"Init\",t[t.Ready=1]=\"Ready\",t[t.Destroy=2]=\"Destroy\"}(lt||(lt={}));const ct=t=>{if(\"string\"==typeof t&&(t={html:t}),!(t instanceof String||t instanceof HTMLElement)){const e=t.thumb;void 0!==e&&(\"string\"==typeof e&&(t.thumbSrc=e),e instanceof HTMLImageElement&&(t.thumbEl=e,t.thumbElSrc=e.src,t.thumbSrc=e.src),delete t.thumb)}return Object.assign({html:\"\",el:null,isDom:!1,class:\"\",index:-1,dim:0,gap:0,pos:0,transition:!1},t)},ht=(t={})=>Object.assign({index:-1,slides:[],dim:0,pos:-1},t),dt={classes:{list:\"f-carousel__dots\",isDynamic:\"is-dynamic\",hasDots:\"has-dots\",dot:\"f-carousel__dot\",isBeforePrev:\"is-before-prev\",isPrev:\"is-prev\",isCurrent:\"is-current\",isNext:\"is-next\",isAfterNext:\"is-after-next\"},dotTpl:'<button type=\"button\" data-carousel-page=\"%i\" aria-label=\"{{GOTO}}\"><span class=\"f-carousel__dot\" aria-hidden=\"true\"></span></button>',dynamicFrom:11,maxCount:1/0,minCount:2};class ut extends b{constructor(){super(...arguments),Object.defineProperty(this,\"isDynamic\",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,\"list\",{enumerable:!0,configurable:!0,writable:!0,value:null})}onRefresh(){this.refresh()}build(){let t=this.list;return t||(t=document.createElement(\"ul\"),D(t,this.cn(\"list\")),t.setAttribute(\"role\",\"tablist\"),this.instance.container.appendChild(t),D(this.instance.container,this.cn(\"hasDots\")),this.list=t),t}refresh(){var t;const e=this.instance.pages.length,i=Math.min(2,this.option(\"minCount\")),n=Math.max(2e3,this.option(\"maxCount\")),s=this.option(\"dynamicFrom\");if(e<i||e>n)return void this.cleanup();const o=\"number\"==typeof s&&e>5&&e>=s,a=!this.list||this.isDynamic!==o||this.list.children.length!==e;a&&this.cleanup();const r=this.build();if(M(r,this.cn(\"isDynamic\"),!!o),a)for(let t=0;t<e;t++)r.append(this.createItem(t));let l,c=0;for(const e of[...r.children]){const i=c===this.instance.page;i&&(l=e),M(e,this.cn(\"isCurrent\"),i),null===(t=e.children[0])||void 0===t||t.setAttribute(\"aria-selected\",i?\"true\":\"false\");for(const t of[\"isBeforePrev\",\"isPrev\",\"isNext\",\"isAfterNext\"])I(e,this.cn(t));c++}if(l=l||r.firstChild,o&&l){const t=l.previousElementSibling,e=t&&t.previousElementSibling;D(t,this.cn(\"isPrev\")),D(e,this.cn(\"isBeforePrev\"));const i=l.nextElementSibling,n=i&&i.nextElementSibling;D(i,this.cn(\"isNext\")),D(n,this.cn(\"isAfterNext\"))}this.isDynamic=o}createItem(t=0){var e;const n=document.createElement(\"li\");n.setAttribute(\"role\",\"presentation\");const s=i(this.instance.localize(this.option(\"dotTpl\"),[[\"%d\",t+1]]).replace(/\\%i/g,t+\"\"));return n.appendChild(s),null===(e=n.children[0])||void 0===e||e.setAttribute(\"role\",\"tab\"),n}cleanup(){this.list&&(this.list.remove(),this.list=null),this.isDynamic=!1,I(this.instance.container,this.cn(\"hasDots\"))}attach(){this.instance.on([\"refresh\",\"change\"],this.onRefresh)}detach(){this.instance.off([\"refresh\",\"change\"],this.onRefresh),this.cleanup()}}Object.defineProperty(ut,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:dt});class pt extends b{constructor(){super(...arguments),Object.defineProperty(this,\"container\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"prev\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"next\",{enumerable:!0,configurable:!0,writable:!0,value:null})}onRefresh(){const t=this.instance,e=t.pages.length,i=t.page;if(e<2)return void this.cleanup();this.build();let n=this.prev,s=this.next;n&&s&&(n.removeAttribute(\"disabled\"),s.removeAttribute(\"disabled\"),t.isInfinite||(i<=0&&n.setAttribute(\"disabled\",\"\"),i>=e-1&&s.setAttribute(\"disabled\",\"\")))}createButton(t){const e=this.instance,i=document.createElement(\"button\");i.setAttribute(\"tabindex\",\"0\"),i.setAttribute(\"title\",e.localize(`{{${t.toUpperCase()}}}`)),D(i,this.cn(\"button\")+\" \"+this.cn(\"next\"===t?\"isNext\":\"isPrev\"));const n=e.isRTL?\"next\"===t?\"prev\":\"next\":t;var s;return i.innerHTML=e.localize(this.option(`${n}Tpl`)),i.dataset[`carousel${s=t,s?s.match(\"^[a-z]\")?s.charAt(0).toUpperCase()+s.substring(1):s:\"\"}`]=\"true\",i}build(){let t=this.container;t||(this.container=t=document.createElement(\"div\"),D(t,this.cn(\"container\")),this.instance.container.appendChild(t)),this.next||(this.next=t.appendChild(this.createButton(\"next\"))),this.prev||(this.prev=t.appendChild(this.createButton(\"prev\")))}cleanup(){this.prev&&this.prev.remove(),this.next&&this.next.remove(),this.container&&this.container.remove(),this.prev=null,this.next=null,this.container=null}attach(){this.instance.on([\"refresh\",\"change\"],this.onRefresh)}detach(){this.instance.off([\"refresh\",\"change\"],this.onRefresh),this.cleanup()}}Object.defineProperty(pt,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:{classes:{container:\"f-carousel__nav\",button:\"f-button\",isNext:\"is-next\",isPrev:\"is-prev\"},nextTpl:'<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" tabindex=\"-1\"><path d=\"M9 3l9 9-9 9\"/></svg>',prevTpl:'<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" tabindex=\"-1\"><path d=\"M15 3l-9 9 9 9\"/></svg>'}});class mt extends b{constructor(){super(...arguments),Object.defineProperty(this,\"selectedIndex\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"target\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"nav\",{enumerable:!0,configurable:!0,writable:!0,value:null})}addAsTargetFor(t){this.target=this.instance,this.nav=t,this.attachEvents()}addAsNavFor(t){this.nav=this.instance,this.target=t,this.attachEvents()}attachEvents(){this.nav&&this.target&&(this.nav.options.initialSlide=this.target.options.initialPage,this.nav.on(\"ready\",this.onNavReady),this.nav.state===lt.Ready&&this.onNavReady(this.nav),this.target.on(\"ready\",this.onTargetReady),this.target.state===lt.Ready&&this.onTargetReady(this.target))}onNavReady(t){t.on(\"createSlide\",this.onNavCreateSlide),t.on(\"Panzoom.click\",this.onNavClick),t.on(\"Panzoom.touchEnd\",this.onNavTouch),this.onTargetChange()}onTargetReady(t){t.on(\"change\",this.onTargetChange),t.on(\"Panzoom.refresh\",this.onTargetChange),this.onTargetChange()}onNavClick(t,e,i){i.pointerType||this.onNavTouch(t,t.panzoom,i)}onNavTouch(t,e,i){var n,s;if(Math.abs(e.dragOffset.x)>3||Math.abs(e.dragOffset.y)>3)return;const o=i.target,{nav:a,target:r}=this;if(!a||!r||!o)return;const l=o.closest(\"[data-index]\");if(i.stopPropagation(),i.preventDefault(),!l)return;const c=parseInt(l.dataset.index||\"\",10)||0,h=r.getPageForSlide(c),d=a.getPageForSlide(c);a.slideTo(d),r.slideTo(h,{friction:null===(s=null===(n=this.nav)||void 0===n?void 0:n.plugins)||void 0===s?void 0:s.Sync.option(\"friction\")}),this.markSelectedSlide(c)}onNavCreateSlide(t,e){e.index===this.selectedIndex&&this.markSelectedSlide(e.index)}onTargetChange(){const{target:t,nav:e}=this;if(!t||!e)return;if(e.state!==lt.Ready||t.state!==lt.Ready)return;const i=t.pages[t.page].slides[0].index,n=e.getPageForSlide(i);this.markSelectedSlide(i),e.slideTo(n)}markSelectedSlide(t){const{nav:e}=this;e&&e.state===lt.Ready&&(this.selectedIndex=t,[...e.slides].map((e=>{e.el&&e.el.classList[e.index===t?\"add\":\"remove\"](\"is-nav-selected\")})))}attach(){let t=this.options.target,e=this.options.nav;t?this.addAsNavFor(t):e&&this.addAsTargetFor(e)}detach(){this.nav&&(this.nav.off(\"ready\",this.onNavReady),this.nav.off(\"createSlide\",this.onNavCreateSlide),this.nav.off(\"Panzoom.click\",this.onNavClick),this.nav.off(\"Panzoom.touchEnd\",this.onNavTouch)),this.nav=null,this.target&&(this.target.off(\"ready\",this.onTargetReady),this.target.off(\"refresh\",this.onTargetChange),this.target.off(\"change\",this.onTargetChange)),this.target=null}}Object.defineProperty(mt,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:{friction:.35}});const ft={Navigation:pt,Dots:ut,Sync:mt};class gt extends g{get axis(){return this.isHorizontal?\"e\":\"f\"}get isEnabled(){return this.state===lt.Ready}get isInfinite(){let t=!1;const e=this.contentDim,i=this.viewportDim;return this.pages.length>=2&&e>1.5*i&&(t=this.option(\"infinite\")),t}get isRTL(){return\"rtl\"===this.option(\"direction\")}get isHorizontal(){return\"x\"===this.option(\"axis\")}constructor(t,e={},i={}){if(super(),Object.defineProperty(this,\"userOptions\",{enumerable:!0,configurable:!0,writable:!0,value:{}}),Object.defineProperty(this,\"userPlugins\",{enumerable:!0,configurable:!0,writable:!0,value:{}}),Object.defineProperty(this,\"bp\",{enumerable:!0,configurable:!0,writable:!0,value:\"\"}),Object.defineProperty(this,\"state\",{enumerable:!0,configurable:!0,writable:!0,value:lt.Init}),Object.defineProperty(this,\"page\",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,\"prevPage\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"container\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,\"viewport\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"track\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"slides\",{enumerable:!0,configurable:!0,writable:!0,value:[]}),Object.defineProperty(this,\"pages\",{enumerable:!0,configurable:!0,writable:!0,value:[]}),Object.defineProperty(this,\"panzoom\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"inTransition\",{enumerable:!0,configurable:!0,writable:!0,value:new Set}),Object.defineProperty(this,\"contentDim\",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,\"viewportDim\",{enumerable:!0,configurable:!0,writable:!0,value:0}),\"string\"==typeof t&&(t=document.querySelector(t)),!t||!n(t))throw new Error(\"No Element found\");this.container=t,this.slideNext=ot(this.slideNext.bind(this),150),this.slidePrev=ot(this.slidePrev.bind(this),150),this.userOptions=e,this.userPlugins=i,queueMicrotask((()=>{this.processOptions()}))}processOptions(){const i=e({},gt.defaults,this.userOptions);let n=\"\";const s=i.breakpoints;if(s&&t(s))for(const[o,a]of Object.entries(s))window.matchMedia(o).matches&&t(a)&&(n+=o,e(i,a));n===this.bp&&this.state!==lt.Init||(this.bp=n,this.state===lt.Ready&&(i.initialSlide=this.pages[this.page].slides[0].index),this.state!==lt.Init&&this.destroy(),super.setOptions(i),!1===this.option(\"enabled\")?this.attachEvents():setTimeout((()=>{this.init()}),0))}init(){this.state=lt.Init,this.emit(\"init\"),this.attachPlugins(Object.assign(Object.assign({},gt.Plugins),this.userPlugins)),this.initLayout(),this.initSlides(),this.updateMetrics(),this.setInitialPosition(),this.initPanzoom(),this.attachEvents(),this.state=lt.Ready,this.emit(\"ready\")}initLayout(){const{container:t}=this,e=this.option(\"classes\");D(t,this.cn(\"container\")),M(t,e.isLTR,!this.isRTL),M(t,e.isRTL,this.isRTL),M(t,e.isVertical,!this.isHorizontal),M(t,e.isHorizontal,this.isHorizontal);let i=this.option(\"viewport\")||t.querySelector(`.${e.viewport}`);i||(i=document.createElement(\"div\"),D(i,e.viewport),i.append(...at(t,`.${e.slide}`)),t.prepend(i));let n=this.option(\"track\")||t.querySelector(`.${e.track}`);n||(n=document.createElement(\"div\"),D(n,e.track),n.append(...Array.from(i.childNodes))),n.setAttribute(\"aria-live\",\"polite\"),i.contains(n)||i.prepend(n),this.viewport=i,this.track=n,this.emit(\"initLayout\")}initSlides(){const{track:t}=this;if(t){this.slides=[],[...at(t,`.${this.cn(\"slide\")}`)].forEach((t=>{if(n(t)){const e=ct({el:t,isDom:!0,index:this.slides.length});this.slides.push(e),this.emit(\"initSlide\",e,this.slides.length)}}));for(let t of this.option(\"slides\",[])){const e=ct(t);e.index=this.slides.length,this.slides.push(e),this.emit(\"initSlide\",e,this.slides.length)}this.emit(\"initSlides\")}}setInitialPage(){let t=0;const e=this.option(\"initialSlide\");t=\"number\"==typeof e?this.getPageForSlide(e):parseInt(this.option(\"initialPage\",0)+\"\",10)||0,this.page=t}setInitialPosition(){if(!this.track||!this.pages.length)return;const t=this.isHorizontal;let e=this.page;this.pages[e]||(this.page=e=0);const i=this.pages[e].pos*(this.isRTL&&t?1:-1),n=t?`${i}px`:\"0\",s=t?\"0\":`${i}px`;this.track.style.transform=`translate3d(${n}, ${s}, 0) scale(1)`,this.option(\"adaptiveHeight\")&&this.setViewportHeight()}initPanzoom(){this.panzoom&&(this.panzoom.destroy(),this.panzoom=null);const t=this.option(\"Panzoom\")||{};this.panzoom=new B(this.viewport,e({},{content:this.track,zoom:!1,panOnlyZoomed:!1,lockAxis:this.isHorizontal?\"x\":\"y\",infinite:this.isInfinite,click:!1,dblClick:!1,touch:t=>!(this.pages.length<2&&!t.options.infinite),bounds:()=>this.getBounds(),maxVelocity:t=>Math.abs(t.target[this.axis]-t.current[this.axis])<2*this.viewportDim?100:0},t)),this.panzoom.on(\"*\",((t,e,...i)=>{this.emit(`Panzoom.${e}`,t,...i)})),this.panzoom.on(\"decel\",this.onDecel),this.panzoom.on(\"refresh\",this.onRefresh),this.panzoom.on(\"beforeTransform\",this.onBeforeTransform),this.panzoom.on(\"endAnimation\",this.onEndAnimation)}attachEvents(){const t=this.container;t&&(t.addEventListener(\"click\",this.onClick,{passive:!1,capture:!1}),t.addEventListener(\"slideTo\",this.onSlideTo)),window.addEventListener(\"resize\",this.onResize)}createPages(){let t=[];const{contentDim:e,viewportDim:i}=this,n=this.option(\"slidesPerPage\");if(\"number\"==typeof n&&e>i){for(let e=0;e<this.slides.length;e+=n)t.push(ht({index:e,slides:this.slides.slice(e,e+n)}));return t}let s=0,o=0;for(const e of this.slides)(!t.length||o+e.dim>i)&&(t.push(ht()),s=t.length-1,o=0),o+=e.dim+e.gap,t[s].slides.push(e);return t}processPages(){const t=this.pages,{contentDim:e,viewportDim:i}=this,n=this.option(\"center\"),s=this.option(\"fill\"),o=s&&n&&e>i&&!this.isInfinite;if(t.forEach(((t,s)=>{t.index=s,t.pos=t.slides[0].pos,t.dim=0;for(const[e,i]of t.slides.entries())t.dim+=i.dim,e<t.slides.length-1&&(t.dim+=i.gap);o&&t.pos+.5*t.dim<.5*i?t.pos=0:o&&t.pos+.5*t.dim>=e-.5*i?t.pos=e-i:n&&(t.pos+=-.5*(i-t.dim))})),t.forEach(((t,n)=>{s&&!this.isInfinite&&e>i&&(t.pos=Math.max(t.pos,0),t.pos=Math.min(t.pos,e-i)),t.pos=x(t.pos,1e3),t.dim=x(t.dim,1e3),t.pos<.1&&t.pos>-.1&&(t.pos=0)})),this.isInfinite)return t;const a=[];let r;return t.forEach((t=>{const e=Object.assign({},t);r&&e.pos===r.pos?(r.dim+=e.dim,r.slides=[...r.slides,...e.slides]):(e.index=a.length,r=e,a.push(e))})),a}getPageFromIndex(t=0){const e=this.pages.length;let i;return t=parseInt((t||0).toString())||0,i=this.isInfinite?(t%e+e)%e:Math.max(Math.min(t,this.pages.length-1),0),i}getSlideMetrics(t){const e=this.isHorizontal?\"width\":\"height\";let i=0,n=0,s=t.el;s?i=parseFloat(s.dataset[e]||\"\")||0:(s=document.createElement(\"div\"),s.style.visibility=\"hidden\",D(s,this.cn(\"slide\")+\" \"+t.class),(this.track||document.body).prepend(s)),i?(s.style[e]=`${i}px`,s.style[\"width\"===e?\"height\":\"width\"]=\"\"):i=s.getBoundingClientRect()[e];const o=getComputedStyle(s);return\"content-box\"===o.boxSizing&&(this.isHorizontal?(i+=parseFloat(o.paddingLeft)||0,i+=parseFloat(o.paddingRight)||0):(i+=parseFloat(o.paddingTop)||0,i+=parseFloat(o.paddingBottom)||0)),n=parseFloat(o[this.isHorizontal?\"marginRight\":\"marginBottom\"])||0,this.isHorizontal,t.el||s.remove(),{dim:x(i,1e3),gap:x(n,1e3)}}getBounds(){let t={min:0,max:0};if(this.isInfinite)t={min:-1/0,max:1/0};else if(this.pages.length){const e=this.pages[0].pos,i=this.pages[this.pages.length-1].pos;t=this.isRTL&&this.isHorizontal?{min:e,max:i}:{min:-1*i,max:-1*e}}return{x:this.isHorizontal?t:{min:0,max:0},y:this.isHorizontal?{min:0,max:0}:t}}repositionSlides(){const{viewportDim:t,contentDim:e,page:i,pages:n}=this;let s,o=0,a=0,r=0,l=0;this.panzoom?l=-1*this.panzoom.current[this.isHorizontal?\"e\":\"f\"]:n[i]&&(l=n[i].pos||0),s=this.isHorizontal?this.isRTL?\"right\":\"left\":\"top\",this.isRTL&&this.isHorizontal&&(l*=-1);for(const t of this.slides)t.el?(\"top\"===s?(t.el.style.right=\"\",t.el.style.left=\"\"):t.el.style.top=\"\",t.index!==o?t.el.style[s]=0===a?\"\":`${x(a,1e3)}px`:t.el.style[s]=\"\",r+=t.dim+t.gap,o++):a+=t.dim+t.gap;if(this.isInfinite&&r)for(const i of this.slides)i.el&&(x(i.pos)<x(t)&&x(i.pos+i.dim+i.gap)<x(l)&&x(l)>x(e-t)&&(i.el.style[s]=`${x(a+r,1e3)}px`),x(i.pos+i.gap)>=x(e-t)&&x(i.pos)>x(l+t)&&x(l)<x(t)&&(i.el.style[s]=`-${x(r,1e3)}px`));let c,h,d=[...this.inTransition];if(d.length>1&&(c=this.pages[d[0]],h=this.pages[d[1]]),c&&h){let t=0;for(const e of this.slides)e.el?this.inTransition.has(e.index)&&c.slides.indexOf(e)<0&&(e.el.style[s]=`${x(t+(c.pos-h.pos),1e3)}px`):t+=e.dim+e.gap}}createSlideEl(t){if(!this.track||!t)return;if(t.el)return;const e=document.createElement(\"div\");D(e,this.cn(\"slide\")),D(e,t.class),D(e,t.customClass),t.html&&(e.innerHTML=t.html);const i=[];this.slides.forEach(((t,e)=>{t.el&&i.push(e)}));const n=t.index;let s=null;if(i.length){let t=i.reduce(((t,e)=>Math.abs(e-n)<Math.abs(t-n)?e:t));s=this.slides[t]}const o=s&&s.el?s.index<t.index?s.el.nextSibling:s.el:null;this.track.insertBefore(e,this.track.contains(o)?o:null),t.el=e,this.emit(\"createSlide\",t)}removeSlideEl(t,e=!1){const i=t.el;if(!i)return;if(I(i,this.cn(\"isSelected\")),t.isDom&&!e)return i.removeAttribute(\"aria-hidden\"),i.removeAttribute(\"data-index\"),I(i,this.cn(\"isSelected\")),void(i.style.left=\"\");this.emit(\"removeSlide\",t);const n=new CustomEvent(\"animationend\");i.dispatchEvent(n),t.el&&t.el.remove(),t.el=null}transitionTo(t=0,e=this.option(\"transition\")){if(!e)return!1;const{pages:i,panzoom:n}=this;t=parseInt((t||0).toString())||0;const s=this.getPageFromIndex(t);if(!n||!i[s]||i.length<2||i[this.page].slides[0].dim<this.viewportDim)return!1;const o=t>this.page?1:-1,a=this.pages[s].pos*(this.isRTL?1:-1);if(this.page===s&&x(a,1e3)===x(n.target[this.axis],1e3))return!1;this.clearTransitions();const r=n.isResting;D(this.container,this.cn(\"inTransition\"));const l=this.pages[this.page].slides[0],c=this.pages[s].slides[0];this.inTransition.add(c.index),this.createSlideEl(c);let h=l.el,d=c.el;r||\"slide\"===e||(e=\"fadeFast\",h=null);const u=this.isRTL?\"next\":\"prev\",p=this.isRTL?\"prev\":\"next\";return h&&(this.inTransition.add(l.index),l.transition=e,h.addEventListener(\"animationend\",this.onAnimationEnd),h.classList.add(`f-${e}Out`,`to-${o>0?p:u}`)),d&&(c.transition=e,d.addEventListener(\"animationend\",this.onAnimationEnd),d.classList.add(`f-${e}In`,`from-${o>0?u:p}`)),n.panTo({x:this.isHorizontal?a:0,y:this.isHorizontal?0:a,friction:0}),this.onChange(s),!0}manageSlideVisiblity(){const t=new Set,e=new Set,i=this.getVisibleSlides(parseFloat(this.option(\"preload\",0)+\"\")||0);for(const n of this.slides)i.has(n)?t.add(n):e.add(n);for(const e of this.inTransition)t.add(this.slides[e]);for(const e of t)this.createSlideEl(e),this.lazyLoadSlide(e);for(const i of e)t.has(i)||this.removeSlideEl(i);this.markSelectedSlides(),this.repositionSlides()}markSelectedSlides(){if(!this.pages[this.page]||!this.pages[this.page].slides)return;const t=\"aria-hidden\";let e=this.cn(\"isSelected\");if(e)for(const i of this.slides)i.el&&(i.el.dataset.index=`${i.index}`,this.pages[this.page].slides.includes(i)?(i.el.classList.contains(e)||(D(i.el,e),this.emit(\"selectSlide\",i)),i.el.removeAttribute(t)):(i.el.classList.contains(e)&&(I(i.el,e),this.emit(\"unselectSlide\",i)),i.el.setAttribute(t,\"true\")))}flipInfiniteTrack(){const t=this.panzoom;if(!t||!this.isInfinite)return;const e=\"x\"===this.option(\"axis\")?\"e\":\"f\",{viewportDim:i,contentDim:n}=this;let s=t.current[e],o=t.target[e]-s,a=0,r=.5*i,l=n;this.isRTL&&this.isHorizontal?(s<-r&&(a=-1,s+=l),s>l-r&&(a=1,s-=l)):(s>r&&(a=1,s-=l),s<-l+r&&(a=-1,s+=l)),a&&(t.current[e]=s,t.target[e]=s+o)}lazyLoadSlide(t){const e=this,s=t&&t.el;if(!s)return;const o=new Set,a=\"f-fadeIn\";s.querySelectorAll(\"[data-lazy-srcset]\").forEach((t=>{t instanceof HTMLImageElement&&o.add(t)})),s.querySelectorAll(\"[data-lazy-src]\").forEach((t=>{t instanceof HTMLImageElement?o.add(t):n(t)&&(t.style.backgroundImage=`url('${t.dataset.lazySrc||\"\"}')`)}));const r=(t,i,n)=>{n&&(n.remove(),n=null),i.complete&&(i.classList.add(a),setTimeout((()=>{i.classList.remove(a)}),350),i.style.display=\"\"),this.option(\"adaptiveHeight\")&&t.el&&this.pages[this.page].slides.indexOf(t)>-1&&e.setViewportHeight()};for(const e of o){let n=null;e.src=e.dataset.lazySrcset||e.dataset.lazySrc||\"\",delete e.dataset.lazySrc,delete e.dataset.lazySrcset,e.style.display=\"none\",e.addEventListener(\"error\",(()=>{r(t,e,n)})),e.addEventListener(\"load\",(()=>{r(t,e,n)})),setTimeout((()=>{e.parentNode&&t.el&&(e.complete?r(t,e,n):(n=i(c),e.parentNode.insertBefore(n,e)))}),300)}let l=s.dataset.lazySrc;l&&l.length&&(s.style.backgroundImage=`url('${l}')`)}onAnimationEnd(t){var e;const i=t.target,n=i?parseInt(i.dataset.index||\"\",10)||0:-1,s=this.slides[n],o=t.animationName;if(!i||!s||!o)return;const a=!!this.inTransition.has(n)&&s.transition;a&&o.substring(0,a.length+2)===`f-${a}`&&this.inTransition.delete(n),this.inTransition.size||this.clearTransitions(),n===this.page&&(null===(e=this.panzoom)||void 0===e?void 0:e.isResting)&&this.emit(\"settle\")}onDecel(t,e=0,i=0,n=0,s=0){const o=this.isRTL,a=this.isHorizontal,r=this.axis,l=this.pages.length,c=Math.abs(Math.atan2(i,e)/(Math.PI/180));let h=0;if(h=c>45&&c<135?a?0:i:a?e:0,!l)return;const d=this.option(\"dragFree\");let u=this.page;const p=t.target[r]*(this.isRTL&&a?1:-1),{pageIndex:m}=this.getPageFromPosition(p),f=t.current[r]*(o&&a?1:-1);let{page:g}=this.getPageFromPosition(f);d?this.onChange(m):(Math.abs(h)>5?((this.pages.length<3||Math.max(Math.abs(n),Math.abs(s))>this.pages[u].slides[0].dim)&&(u=g),u=o&&a?h<0?u-1:u+1:h<0?u+1:u-1):u=g,this.slideTo(u,{transition:!1,friction:t.option(\"decelFriction\")}))}onClick(t){const e=t.target,i=e&&n(e)?e.dataset:null;let s,o;i&&(void 0!==i.carouselPage?(o=\"slideTo\",s=i.carouselPage):void 0!==i.carouselNext?o=\"slideNext\":void 0!==i.carouselPrev&&(o=\"slidePrev\")),o?(t.preventDefault(),t.stopPropagation(),e&&!e.hasAttribute(\"disabled\")&&this[o](s)):this.emit(\"click\",t)}onSlideTo(t){const e=t.detail||0;this.slideTo(this.getPageForSlide(e),{friction:0})}onChange(t,e=0){const i=this.page;this.prevPage=i,this.page=t,this.option(\"adaptiveHeight\")&&this.setViewportHeight(),t!==i&&(this.markSelectedSlides(),this.emit(\"change\",t,i,e))}onRefresh(t,e=\"\"){let i=this.contentDim,n=this.viewportDim;this.updateMetrics(),this.contentDim===i&&this.viewportDim===n||this.slideTo(this.page,{friction:0,transition:!1})}onResize(){this.option(\"breakpoints\")&&this.processOptions()}onBeforeTransform(){this.flipInfiniteTrack(),this.manageSlideVisiblity()}onEndAnimation(){this.emit(\"settle\")}reInit(t=null,e=null){this.destroy(),this.state=lt.Init,this.userOptions=t||this.userOptions,this.userPlugins=e||this.userPlugins,this.processOptions()}slideTo(t=0,{friction:e=this.option(\"friction\"),transition:i=this.option(\"transition\")}={}){if(this.state===lt.Destroy)return;const n=this.panzoom,s=this.pages.length;if(!n||!s)return;if(this.transitionTo(t,i))return;const o=this.axis,a=this.getPageFromIndex(t);let r=this.pages[a].pos,l=0;if(this.isInfinite){const t=n.current[o]*(this.isRTL&&this.isHorizontal?1:-1),e=this.contentDim,i=r+e,s=r-e;Math.abs(t-i)<Math.abs(t-r)&&(r=i,l=1),Math.abs(t-s)<Math.abs(t-r)&&(r=s,l=-1)}r*=this.isRTL&&this.isHorizontal?1:-1,Math.abs(n.target[o]-r)<.1||(n.panTo({x:this.isHorizontal?r:0,y:this.isHorizontal?0:r,friction:e}),this.onChange(a,l))}slideToClosest(t){if(this.panzoom){const{pageIndex:e}=this.getPageFromPosition(this.panzoom.current[this.isHorizontal?\"e\":\"f\"]);this.slideTo(e,t)}}slideNext(){this.slideTo(this.page+1)}slidePrev(){this.slideTo(this.page-1)}clearTransitions(){this.inTransition.clear(),I(this.container,this.cn(\"inTransition\"));const t=[\"to-prev\",\"to-next\",\"from-prev\",\"from-next\"];for(const e of this.slides){const i=e.el;if(i){i.removeEventListener(\"animationend\",this.onAnimationEnd),i.classList.remove(...t);const n=e.transition;n&&i.classList.remove(`f-${n}Out`,`f-${n}In`)}}this.manageSlideVisiblity()}prependSlide(t){var e,i;let n=Array.isArray(t)?t:[t];for(const t of n.reverse())this.slides.unshift(ct(t));for(let t=0;t<this.slides.length;t++)this.slides[t].index=t;const s=(null===(e=this.pages[this.page])||void 0===e?void 0:e.pos)||0;this.page+=n.length,this.updateMetrics();const o=(null===(i=this.pages[this.page])||void 0===i?void 0:i.pos)||0;if(this.panzoom){const t=this.isRTL?s-o:o-s;this.panzoom.target.e-=t,this.panzoom.current.e-=t,this.panzoom.requestTick()}}appendSlide(t){let e=Array.isArray(t)?t:[t];for(const t of e){const e=ct(t);e.index=this.slides.length,this.slides.push(e),this.emit(\"initSlide\",t,this.slides.length)}this.updateMetrics()}removeSlide(t){const e=this.slides.length;t=(t%e+e)%e,this.removeSlideEl(this.slides[t],!0),this.slides.splice(t,1);for(let t=0;t<this.slides.length;t++)this.slides[t].index=t;this.updateMetrics(),this.slideTo(this.page,{friction:0,transition:!1})}updateMetrics(){const t=this.panzoom;if(!this.track)return;const e=\"e\"===this.axis?\"width\":\"height\";let i,n=this.pages.length,s=0;for(const[t,e]of this.slides.entries()){let n=0,o=0;!e.el&&i?(n=i.dim,o=i.gap):(({dim:n,gap:o}=this.getSlideMetrics(e)),i=e),n=x(n,1e3),o=x(o,1e3),e.dim=n,e.gap=o,e.pos=s,s+=n,(this.isInfinite||t<this.slides.length-1)&&(s+=o)}this.viewport&&(this.viewportDim=x(this.viewport.getBoundingClientRect()[e],1e3));const o=this.contentDim;this.contentDim=s,t&&(t.contentRect[e]=s,t.contentRect[\"e\"===this.axis?\"fullWidth\":\"fullHeight\"]=s),this.pages=this.createPages(),this.pages=this.processPages(),this.state===lt.Init&&this.setInitialPage(),this.page=Math.max(0,Math.min(this.page,this.pages.length-1)),t&&n===this.pages.length&&s!==o&&(t.target[this.axis]=-1*this.pages[this.page].pos,t.current[this.axis]=-1*this.pages[this.page].pos,t.stop()),this.manageSlideVisiblity(),this.emit(\"refresh\")}getProgress(t,e=!1){void 0===t&&(t=this.page);const i=this,n=i.panzoom,s=i.pages[t]||0;if(!s||!n)return 0;let o=-1*n.current.e,a=i.contentDim;var r=[x((o-s.pos)/(1*s.dim),1e3),x((o+a-s.pos)/(1*s.dim),1e3),x((o-a-s.pos)/(1*s.dim),1e3)].reduce((function(t,e){return Math.abs(e)<Math.abs(t)?e:t}));return e?r:Math.max(-1,Math.min(1,r))}setViewportHeight(){const{page:t,pages:e,viewport:i,isHorizontal:n}=this;if(!i||!e[t])return;let s=0;n&&this.track&&(this.track.style.height=\"auto\",e[t].slides.forEach((t=>{t.el&&(s=Math.max(s,t.el.offsetHeight))}))),i.style.height=s?`${s}px`:\"\"}getPageForSlide(t){for(const e of this.pages)for(const i of e.slides)if(i.index===t)return e.index;return-1}getVisibleSlides(t=0){var e;const i=new Set;let{contentDim:n,viewportDim:s,pages:o,page:a}=this;n=n+(null===(e=this.slides[this.slides.length-1])||void 0===e?void 0:e.gap)||0;let r=0;r=this.panzoom?-1*this.panzoom.current[this.axis]:o[a]&&o[a].pos||0,this.isInfinite&&(r-=Math.floor(r/n)*n),this.isRTL&&this.isHorizontal&&(r*=-1);const l=r-s*t,c=r+s*(t+1),h=this.isInfinite?[-1,0,1]:[0];for(const t of this.slides)for(const e of h){const s=t.pos+e*n,o=t.pos+t.dim+t.gap+e*n;s<c&&o>l&&i.add(t)}return i}getPageFromPosition(t){const{viewportDim:e,contentDim:i}=this,n=this.pages.length,s=this.slides.length,o=this.slides[s-1];let a=0,r=0,l=0;const c=this.option(\"center\");c&&(t+=.5*e),this.isInfinite||(t=Math.max(this.slides[0].pos,Math.min(t,o.pos)));const h=i+o.gap;l=Math.floor(t/h)||0,t-=l*h;let d=o,u=this.slides.find((e=>{const i=t+(d&&!c?.5*d.dim:0);return d=e,e.pos<=i&&e.pos+e.dim+e.gap>i}));return u||(u=o),r=this.getPageForSlide(u.index),a=r+l*n,{page:a,pageIndex:r}}destroy(){if([lt.Destroy].includes(this.state))return;this.state=lt.Destroy;const{container:t,viewport:e,track:i,slides:n,panzoom:s}=this,o=this.option(\"classes\");t.removeEventListener(\"click\",this.onClick,{passive:!1,capture:!1}),t.removeEventListener(\"slideTo\",this.onSlideTo),window.removeEventListener(\"resize\",this.onResize),s&&(s.destroy(),this.panzoom=null),n&&n.forEach((t=>{this.removeSlideEl(t)})),this.detachPlugins(),this.track=null,this.viewport=null,this.page=0,e&&i&&e.replaceWith(...i.childNodes);for(const[e,i]of Object.entries(o))\"container\"!==e&&i&&t.classList.remove(i);this.slides=[];const a=this.events.get(\"ready\");this.events=new Map,a&&this.events.set(\"ready\",a)}}Object.defineProperty(gt,\"Panzoom\",{enumerable:!0,configurable:!0,writable:!0,value:B}),Object.defineProperty(gt,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:rt}),Object.defineProperty(gt,\"Plugins\",{enumerable:!0,configurable:!0,writable:!0,value:ft});let bt=null,vt=null;const yt=new Map;let wt=0;class xt extends g{get isIdle(){return this.idle}get isCompact(){return this.option(\"compact\")}constructor(t=[],e={},i={}){super(e),Object.defineProperty(this,\"userSlides\",{enumerable:!0,configurable:!0,writable:!0,value:[]}),Object.defineProperty(this,\"userPlugins\",{enumerable:!0,configurable:!0,writable:!0,value:{}}),Object.defineProperty(this,\"idle\",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,\"idleTimer\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"clickTimer\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"pwt\",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,\"ignoreFocusChange\",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,\"state\",{enumerable:!0,configurable:!0,writable:!0,value:u.Init}),Object.defineProperty(this,\"id\",{enumerable:!0,configurable:!0,writable:!0,value:0}),Object.defineProperty(this,\"container\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"footer\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"caption\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"carousel\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"lastFocus\",{enumerable:!0,configurable:!0,writable:!0,value:null}),Object.defineProperty(this,\"prevMouseMoveEvent\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,\"fsAPI\",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.fsAPI=(()=>{let t,e=\"\",i=\"\",n=\"\";return document.fullscreenEnabled?(e=\"requestFullscreen\",i=\"exitFullscreen\",n=\"fullscreenElement\"):document.webkitFullscreenEnabled&&(e=\"webkitRequestFullscreen\",i=\"webkitExitFullscreen\",n=\"webkitFullscreenElement\"),e&&(t={request:function(t){return\"webkitRequestFullscreen\"===e?t[e](Element.ALLOW_KEYBOARD_INPUT):t[e]()},exit:function(){return document[n]&&document[i]()},isFullscreen:function(){return document[n]}}),t})(),this.id=e.id||++wt,yt.set(this.id,this),this.userSlides=t,this.userPlugins=i,queueMicrotask((()=>{this.init()}))}init(){this.state=u.Init,this.attachPlugins(Object.assign(Object.assign({},xt.Plugins),this.userPlugins)),this.emit(\"init\"),!0===this.option(\"hideScrollbar\")&&(()=>{if(!o)return;const t=document.body;if(t.classList.contains(\"hide-scrollbar\"))return;const e=window.innerWidth-document.documentElement.getBoundingClientRect().width,i=t.currentStyle||window.getComputedStyle(t),n=parseFloat(i.marginRight);document.documentElement.style.setProperty(\"--fancybox-scrollbar-compensate\",`${e}px`),n&&t.style.setProperty(\"--fancybox-body-margin\",`${n}px`),t.classList.add(\"hide-scrollbar\")})(),this.initLayout();const t=()=>{this.initCarousel(this.userSlides),this.state=u.Ready,this.attachEvents(),this.emit(\"ready\"),setTimeout((()=>{this.container&&this.container.setAttribute(\"aria-hidden\",\"false\")}),16)};this.option(\"Fullscreen.autoStart\")&&this.fsAPI&&!this.fsAPI.isFullscreen()?this.fsAPI.request(this.container).then((()=>t())).catch((()=>t())):t()}initLayout(){const t=this.option(\"parentEl\")||document.body,e=i(this.localize(this.option(\"tpl.main\")||\"\"));e&&(e.setAttribute(\"id\",`fancybox-${this.id}`),e.setAttribute(\"aria-label\",this.localize(\"{{MODAL}}\")),e.classList.toggle(\"is-compact\",this.isCompact),D(e,this.option(\"mainClass\")||\"\"),this.container=e,this.footer=e.querySelector(\".fancybox__footer\"),t.appendChild(e),D(document.documentElement,\"with-fancybox\"),bt&&vt||(bt=document.createElement(\"span\"),D(bt,\"fancybox-focus-guard\"),bt.setAttribute(\"tabindex\",\"0\"),bt.setAttribute(\"aria-hidden\",\"true\"),bt.setAttribute(\"aria-label\",\"Focus guard\"),vt=bt.cloneNode(),document.body.insertBefore(bt,e),document.body.append(vt)),this.option(\"animated\")&&(D(e,\"is-animated\"),setTimeout((()=>{this.isClosing()||I(e,\"is-animated\")}),350)),this.emit(\"initLayout\"))}initCarousel(t){const i=this.container;if(!i)return;const n=i.querySelector(\".fancybox__carousel\");if(!n)return;const s=this.carousel=new gt(n,e({},{slides:t,transition:\"fade\",Panzoom:{lockAxis:this.option(\"dragToClose\")?\"xy\":\"x\",infinite:!!this.option(\"dragToClose\")&&\"y\"},Dots:!1,Navigation:{classes:{container:\"fancybox__nav\",button:\"f-button\",isNext:\"is-next\",isPrev:\"is-prev\"}},initialPage:this.option(\"startIndex\"),l10n:this.option(\"l10n\")},this.option(\"Carousel\")||{}));s.on(\"*\",((t,e,...i)=>{this.emit(`Carousel.${e}`,t,...i)})),s.on([\"ready\",\"change\"],(()=>{var t;const e=this.getSlide();e&&(null===(t=e.panzoom)||void 0===t||t.updateControls()),this.manageCaption(e)})),s.on(\"removeSlide\",((t,e)=>{e.closeBtnEl&&e.closeBtnEl.remove(),e.closeBtnEl=void 0,e.captionEl&&e.captionEl.remove(),e.captionEl=void 0,e.spinnerEl&&e.spinnerEl.remove(),e.spinnerEl=void 0,e.state=void 0})),s.on(\"Panzoom.touchStart\",(()=>{this.isCompact||this.endIdle()})),s.on(\"settle\",(()=>{this.idleTimer||this.isCompact||!this.option(\"idle\")||this.setIdle(),this.option(\"autoFocus\")&&this.checkFocus()})),this.option(\"dragToClose\")&&(s.on(\"Panzoom.afterTransform\",((t,e)=>{const i=this.getSlide();if(i&&E(i.el))return;const n=this.container;if(n){const t=Math.abs(e.current.f),i=t<1?\"\":Math.max(.5,Math.min(1,1-t/e.contentRect.fitHeight*1.5));n.style.setProperty(\"--fancybox-ts\",i?\"0s\":\"\"),n.style.setProperty(\"--fancybox-opacity\",i+\"\")}})),s.on(\"Panzoom.touchEnd\",((t,e,i)=>{var n;const s=this.getSlide();if(s&&E(s.el))return;if(e.isMobile&&document.activeElement&&-1!==[\"TEXTAREA\",\"INPUT\"].indexOf(null===(n=document.activeElement)||void 0===n?void 0:n.nodeName))return;const o=Math.abs(e.dragOffset.y);\"y\"===e.lockedAxis&&(o>=200||o>=50&&e.dragOffset.time<300)&&(i&&i.cancelable&&i.preventDefault(),this.close(i,\"f-throwOut\"+(e.current.f<0?\"Up\":\"Down\")))}))),s.on([\"change\"],(t=>{var e;let i=null===(e=this.getSlide())||void 0===e?void 0:e.triggerEl;if(i){const e=new CustomEvent(\"slideTo\",{bubbles:!0,cancelable:!0,detail:t.page});i.dispatchEvent(e)}})),s.on([\"refresh\",\"change\"],(t=>{const e=this.container;if(!e)return;for(const i of e.querySelectorAll(\"[data-fancybox-current-index]\"))i.innerHTML=t.page+1;for(const i of e.querySelectorAll(\"[data-fancybox-count]\"))i.innerHTML=t.pages.length;if(!t.isInfinite){for(const i of e.querySelectorAll(\"[data-fancybox-next]\"))t.page<t.pages.length-1?(i.removeAttribute(\"disabled\"),i.removeAttribute(\"tabindex\")):(i.setAttribute(\"disabled\",\"\"),i.setAttribute(\"tabindex\",\"-1\"));for(const i of e.querySelectorAll(\"[data-fancybox-prev]\"))t.page>0?(i.removeAttribute(\"disabled\"),i.removeAttribute(\"tabindex\")):(i.setAttribute(\"disabled\",\"\"),i.setAttribute(\"tabindex\",\"-1\"))}const i=this.getSlide();if(!i)return;let n=i.downloadSrc||\"\";n||\"image\"!==i.type||i.error||\"string\"!=typeof i.src||(n=i.src);for(const t of e.querySelectorAll(\"[data-fancybox-download]\")){const e=i.downloadFilename;n?(t.removeAttribute(\"disabled\"),t.removeAttribute(\"tabindex\"),t.setAttribute(\"href\",n),t.setAttribute(\"download\",e||n),t.setAttribute(\"target\",\"_blank\")):(t.setAttribute(\"disabled\",\"\"),t.setAttribute(\"tabindex\",\"-1\"),t.removeAttribute(\"href\"),t.removeAttribute(\"download\"))}})),this.emit(\"initCarousel\")}attachEvents(){const t=this.container;t&&(t.addEventListener(\"click\",this.onClick,{passive:!1,capture:!1}),t.addEventListener(\"wheel\",this.onWheel,{passive:!1,capture:!1}),document.addEventListener(\"keydown\",this.onKeydown,{passive:!1,capture:!0}),document.addEventListener(\"visibilitychange\",this.onVisibilityChange,!1),document.addEventListener(\"mousemove\",this.onMousemove),this.option(\"trapFocus\")&&document.addEventListener(\"focus\",this.onFocus,!0),window.addEventListener(\"resize\",this.onResize))}detachEvents(){const t=this.container;t&&(document.removeEventListener(\"keydown\",this.onKeydown,{passive:!1,capture:!0}),t.removeEventListener(\"wheel\",this.onWheel,{passive:!1,capture:!1}),t.removeEventListener(\"click\",this.onClick,{passive:!1,capture:!1}),document.removeEventListener(\"mousemove\",this.onMousemove),window.removeEventListener(\"resize\",this.onResize),document.removeEventListener(\"visibilitychange\",this.onVisibilityChange,!1),document.removeEventListener(\"focus\",this.onFocus,!0))}onClick(t){var e,i;if(this.isClosing())return;!this.isCompact&&this.option(\"idle\")&&this.resetIdle();const n=t.composedPath()[0];if(n===(null===(e=this.carousel)||void 0===e?void 0:e.container))return;if(n.closest(\".f-spinner\")||n.closest(\"[data-fancybox-close]\"))return t.preventDefault(),void this.close(t);if(n.closest(\"[data-fancybox-prev]\"))return t.preventDefault(),void this.prev();if(n.closest(\"[data-fancybox-next]\"))return t.preventDefault(),void this.next();if(this.isCompact&&\"image\"===(null===(i=this.getSlide())||void 0===i?void 0:i.type))return void(this.clickTimer?(clearTimeout(this.clickTimer),this.clickTimer=null):this.clickTimer=setTimeout((()=>{this.toggleIdle(),this.clickTimer=null}),350));if(this.emit(\"click\",t),t.defaultPrevented)return;let s=!1;const o=document.activeElement;if(n.closest(\".fancybox__content\")){if(o){if(o.closest(\"[contenteditable]\"))return;n.matches(r)||o.blur()}if((a=window.getSelection())&&\"Range\"===a.type)return;s=this.option(\"contentClick\")}else n.closest(\".fancybox__carousel\")&&!n.matches(r)&&(s=this.option(\"backdropClick\"));var a;\"close\"===s?(t.preventDefault(),this.close(t)):\"next\"===s?(t.preventDefault(),this.next()):\"prev\"===s&&(t.preventDefault(),this.prev())}onWheel(t){const e=this.option(\"wheel\",t),i=\"slide\"===e,n=[-t.deltaX,-t.deltaY,-t.detail].reduce((function(t,e){return Math.abs(e)>Math.abs(t)?e:t})),s=Math.max(-1,Math.min(1,n)),o=Date.now();this.pwt&&o-this.pwt<300?i&&t.preventDefault():(this.pwt=o,this.emit(\"wheel\",t),t.defaultPrevented||(\"close\"===e?(t.preventDefault(),this.close(t)):\"slide\"===e&&(t.preventDefault(),this[s>0?\"prev\":\"next\"]())))}onKeydown(t){if(!this.isTopmost())return;this.isCompact||!this.option(\"idle\")||this.isClosing()||this.resetIdle();const e=t.key,i=this.option(\"keyboard\");if(!i||t.ctrlKey||t.altKey||t.shiftKey)return;const s=t.composedPath()[0],o=document.activeElement&&document.activeElement.classList,a=o&&o.contains(\"f-button\")||s.dataset.carouselPage||s.dataset.carouselIndex;if(\"Escape\"!==e&&!a&&n(s)){if(s.isContentEditable||-1!==[\"BUTTON\",\"TEXTAREA\",\"OPTION\",\"INPUT\",\"SELECT\",\"VIDEO\"].indexOf(s.nodeName))return}this.emit(\"keydown\",e,t);const r=i[e];\"function\"==typeof this[r]&&(t.preventDefault(),this[r]())}onResize(){const t=this.container;if(!t)return;const e=this.isCompact;t.classList.toggle(\"is-compact\",e),this.manageCaption(this.getSlide()),this.isCompact?this.clearIdle():this.endIdle(),this.emit(\"resize\")}onFocus(t){this.isTopmost()&&this.checkFocus(t)}onMousemove(t){this.prevMouseMoveEvent=t,!this.isCompact&&this.option(\"idle\")&&this.resetIdle()}onVisibilityChange(){\"visible\"===document.visibilityState?this.checkFocus():this.endIdle()}manageCloseBtn(t){const e=this.optionFor(t,\"closeButton\")||!1;if(\"auto\"===e){const t=this.plugins.Toolbar;if(t&&t.state===tt.Ready)return}if(!e)return;if(!t.contentEl||t.closeBtnEl)return;const n=this.option(\"tpl.closeButton\");if(n){const e=i(this.localize(n));t.closeBtnEl=t.contentEl.appendChild(e),t.el&&D(t.el,\"has-close-btn\")}}manageCaption(t){var e,i,n;const s=this.container;if(!s)return;const o=this.isCompact||this.option(\"commonCaption\"),a=!o;if(this.caption&&this.stop(this.caption),a&&this.caption&&(this.caption.remove(),this.caption=null),o&&!this.caption)for(const t of(null===(e=this.carousel)||void 0===e?void 0:e.slides)||[])t.captionEl&&(t.captionEl.remove(),t.captionEl=void 0,null===(i=t.el)||void 0===i||i.classList.remove(\"has-caption\"),null===(n=t.el)||void 0===n||n.removeAttribute(\"aria-labelledby\"));if(t||(t=this.getSlide()),!t||o&&!this.isCurrentSlide(t))return;const r=t.el;let l=this.optionFor(t,\"caption\",\"\");if(\"string\"!=typeof l||!l.length)return void(o&&this.caption&&this.animate(this.caption,\"f-fadeOut\",(()=>{var t;null===(t=this.caption)||void 0===t||t.remove(),this.caption=null})));let c=null;if(a){if(c=t.captionEl||null,r&&!c){const e=`fancybox__caption_${this.id}_${t.index}`;c=document.createElement(\"div\"),c.className=\"fancybox__caption\",c.setAttribute(\"id\",e),t.captionEl=r.appendChild(c),D(r,\"has-caption\"),r.setAttribute(\"aria-labelledby\",e)}}else{if(c=this.caption,c||(c=s.querySelector(\".fancybox__caption\")),!c){c=document.createElement(\"div\"),c.dataset.fancyboxCaption=\"\",c.className=\"fancybox__caption\",c.innerHTML=l;(this.footer||s).prepend(c)}D(s,\"has-caption\"),this.caption=c}c&&(c.innerHTML=l)}checkFocus(t){var e;const i=document.activeElement||null;i&&(null===(e=this.container)||void 0===e?void 0:e.contains(i))||this.focus(t)}focus(t){var e;if(this.ignoreFocusChange)return;const i=document.activeElement||null,n=(null==t?void 0:t.target)||null,s=this.container,o=this.getSlide();if(!s||!(null===(e=this.carousel)||void 0===e?void 0:e.viewport))return;if(!t&&i&&s.contains(i))return;const a=o&&o.state===p.Ready?o.el:null;if(!a||a.contains(i)||s===i)return;t&&t.cancelable&&t.preventDefault(),this.ignoreFocusChange=!0;const c=Array.from(s.querySelectorAll(r));let h=[],d=null;for(let t of c){const e=!t.offsetParent||t.closest('[aria-hidden=\"true\"]'),i=a&&a.contains(t),n=!this.carousel.viewport.contains(t);t===s||(i||n)&&!e?(h.push(t),void 0!==t.dataset.origTabindex&&(t.tabIndex=parseFloat(t.dataset.origTabindex)),t.removeAttribute(\"data-orig-tabindex\"),!t.hasAttribute(\"autoFocus\")&&d||(d=t)):(t.dataset.origTabindex=void 0===t.dataset.origTabindex?t.getAttribute(\"tabindex\")||void 0:t.dataset.origTabindex,t.tabIndex=-1)}let u=null;t?(!n||h.indexOf(n)<0)&&(u=d||s,h.length&&(i===vt?u=h[0]:this.lastFocus!==s&&i!==bt||(u=h[h.length-1]))):u=o&&\"image\"===o.type?s:d||s,u&&l(u),this.lastFocus=document.activeElement,this.ignoreFocusChange=!1}next(){const t=this.carousel;t&&t.pages.length>1&&t.slideNext()}prev(){const t=this.carousel;t&&t.pages.length>1&&t.slidePrev()}jumpTo(...t){this.carousel&&this.carousel.slideTo(...t)}isTopmost(){var t;return(null===(t=xt.getInstance())||void 0===t?void 0:t.id)==this.id}animate(t=null,e=\"\",i){if(!t||!e)return void(i&&i());this.stop(t);const n=s=>{s.target===t&&t.dataset.animationName&&(t.removeEventListener(\"animationend\",n),delete t.dataset.animationName,i&&i(),I(t,e))};t.dataset.animationName=e,t.addEventListener(\"animationend\",n),D(t,e)}stop(t){t&&t.dispatchEvent(new CustomEvent(\"animationend\",{bubbles:!1,cancelable:!0,currentTarget:t}))}setContent(t,e=\"\",i=!0){if(this.isClosing())return;const s=t.el;if(!s)return;let o=null;if(n(e))[\"img\",\"iframe\",\"video\",\"audio\"].includes(e.nodeName.toLowerCase())?(o=document.createElement(\"div\"),o.appendChild(e)):o=e;else{const t=document.createRange().createContextualFragment(e);o=document.createElement(\"div\"),o.appendChild(t)}o instanceof Element&&t.filter&&!t.error&&(o=o.querySelector(t.filter)),o instanceof Element?(D(o,\"fancybox__content\"),t.id&&o.setAttribute(\"id\",t.id),\"none\"!==o.style.display&&\"none\"!==getComputedStyle(o).getPropertyValue(\"display\")||(o.style.display=t.display||this.option(\"defaultDisplay\")||\"flex\"),s.classList.add(`has-${t.error?\"error\":t.type||\"unknown\"}`),s.prepend(o),t.contentEl=o,i&&this.revealContent(t),this.manageCloseBtn(t),this.manageCaption(t)):this.setError(t,\"{{ELEMENT_NOT_FOUND}}\")}revealContent(t,e){const i=t.el,n=t.contentEl;i&&n&&(this.emit(\"reveal\",t),this.hideLoading(t),t.state=p.Opening,(e=this.isOpeningSlide(t)?void 0===e?this.optionFor(t,\"showClass\"):e:\"f-fadeIn\")?this.animate(n,e,(()=>{this.done(t)})):this.done(t))}done(t){this.isClosing()||(t.state=p.Ready,this.emit(\"done\",t),D(t.el,\"is-done\"),this.isCurrentSlide(t)&&this.option(\"autoFocus\")&&queueMicrotask((()=>{this.option(\"autoFocus\")&&(this.option(\"autoFocus\")?this.focus():this.checkFocus())})),this.isOpeningSlide(t)&&!this.isCompact&&this.option(\"idle\")&&this.setIdle())}isCurrentSlide(t){const e=this.getSlide();return!(!t||!e)&&e.index===t.index}isOpeningSlide(t){var e,i;return null===(null===(e=this.carousel)||void 0===e?void 0:e.prevPage)&&t.index===(null===(i=this.getSlide())||void 0===i?void 0:i.index)}showLoading(t){t.state=p.Loading;const e=t.el;if(!e)return;D(e,\"is-loading\"),this.emit(\"loading\",t),t.spinnerEl||setTimeout((()=>{if(!this.isClosing()&&!t.spinnerEl&&t.state===p.Loading){let n=i(c);t.spinnerEl=n,e.prepend(n),this.animate(n,\"f-fadeIn\")}}),250)}hideLoading(t){const e=t.el;if(!e)return;const i=t.spinnerEl;this.isClosing()?null==i||i.remove():(I(e,\"is-loading\"),i&&this.animate(i,\"f-fadeOut\",(()=>{i.remove()})),t.state===p.Loading&&(this.emit(\"loaded\",t),t.state=p.Ready))}setError(t,e){if(this.isClosing())return;this.emit(\"error\"),t.error=e,this.hideLoading(t),this.clearContent(t);const i=document.createElement(\"div\");i.classList.add(\"fancybox-error\"),i.innerHTML=this.localize(e||\"<p>{{ERROR}}</p>\"),this.setContent(t,i)}clearContent(t){var e;null===(e=this.carousel)||void 0===e||e.emit(\"removeSlide\",t),t.contentEl&&(t.contentEl.remove(),t.contentEl=void 0),t.closeBtnEl&&(t.closeBtnEl.remove(),t.closeBtnEl=void 0);const i=t.el;i&&(I(i,\"is-loading\"),I(i,\"has-error\"),I(i,\"has-unknown\"),I(i,`has-${t.type||\"unknown\"}`))}getSlide(){var t;const e=this.carousel;return(null===(t=null==e?void 0:e.pages[null==e?void 0:e.page])||void 0===t?void 0:t.slides[0])||void 0}close(t,e){if(this.isClosing())return;const i=new Event(\"shouldClose\",{bubbles:!0,cancelable:!0});if(this.emit(\"shouldClose\",i,t),i.defaultPrevented)return;t&&t.cancelable&&(t.preventDefault(),t.stopPropagation());const n=this.fsAPI,s=()=>{this.proceedClose(t,e)};n&&n.isFullscreen()?Promise.resolve(n.exit()).then((()=>s())):s()}clearIdle(){this.idleTimer&&clearTimeout(this.idleTimer),this.idleTimer=null}setIdle(t=!1){const e=()=>{this.clearIdle(),this.idle=!0,D(this.container,\"is-idle\"),this.emit(\"setIdle\")};if(this.clearIdle(),!this.isClosing())if(t)e();else{const t=this.option(\"idle\");t&&(this.idleTimer=setTimeout(e,t))}}endIdle(){this.clearIdle(),this.idle&&!this.isClosing()&&(this.idle=!1,I(this.container,\"is-idle\"),this.emit(\"endIdle\"))}resetIdle(){this.endIdle(),this.setIdle()}toggleIdle(){this.idle?this.endIdle():this.setIdle(!0)}toggleFullscreen(){const t=this.fsAPI;t&&(t.isFullscreen()?t.exit():this.container&&t.request(this.container))}isClosing(){return[u.Closing,u.CustomClosing,u.Destroy].includes(this.state)}proceedClose(t,e){var i;this.state=u.Closing,this.clearIdle(),this.detachEvents();const n=this.container,o=this.carousel,a=this.getSlide(),r=a&&this.option(\"placeFocusBack\")?a.triggerEl||this.option(\"trigger\"):null;if(r&&(s(r)?l(r):r.focus()),n&&(D(n,\"is-closing\"),n.setAttribute(\"aria-hidden\",\"true\"),this.option(\"animated\")&&D(n,\"is-animated\"),n.style.pointerEvents=\"none\"),o){o.clearTransitions(),null===(i=o.panzoom)||void 0===i||i.destroy();for(const t of o.slides){t.state=p.Closing,this.hideLoading(t);const e=t.contentEl;e&&this.stop(e);const i=null==t?void 0:t.panzoom;i&&(i.stop(),i.detachEvents(),i.detachObserver()),this.isCurrentSlide(t)||o.emit(\"removeSlide\",t)}}this.emit(\"close\",t),this.state!==u.CustomClosing?(void 0===e&&a&&(e=this.optionFor(a,\"hideClass\")),e&&a?(this.animate(a.contentEl,e,(()=>{o&&o.emit(\"removeSlide\",a)})),setTimeout((()=>{this.destroy()}),500)):this.destroy()):setTimeout((()=>{this.destroy()}),500)}destroy(){var t;if(this.state===u.Destroy)return;this.state=u.Destroy,null===(t=this.carousel)||void 0===t||t.destroy();const e=this.container;e&&e.remove(),yt.delete(this.id);const i=xt.getInstance();i?i.focus():(bt&&(bt.remove(),bt=null),vt&&(vt.remove(),vt=null),I(document.documentElement,\"with-fancybox\"),(()=>{if(!o)return;const t=document,e=t.body;e.classList.remove(\"hide-scrollbar\"),e.style.setProperty(\"--fancybox-body-margin\",\"\"),t.documentElement.style.setProperty(\"--fancybox-scrollbar-compensate\",\"\")})(),this.emit(\"destroy\"))}static bind(t,e,i){if(!o)return;let s,a=\"\",r={};if(void 0===t?s=document.body:\"string\"==typeof t?(s=document.body,a=t,\"object\"==typeof e&&(r=e||{})):(s=t,\"string\"==typeof e&&(a=e),\"object\"==typeof i&&(r=i||{})),!s||!n(s))return;a=a||\"[data-fancybox]\";const l=xt.openers.get(s)||new Map;l.set(a,r),xt.openers.set(s,l),1===l.size&&s.addEventListener(\"click\",xt.fromEvent)}static unbind(t,e){let i,n=\"\";if(\"string\"==typeof t?(i=document.body,n=t):(i=t,\"string\"==typeof e&&(n=e)),!i)return;const s=xt.openers.get(i);s&&n&&s.delete(n),n&&s||(xt.openers.delete(i),i.removeEventListener(\"click\",xt.fromEvent))}static destroy(){let t;for(;t=xt.getInstance();)t.destroy();for(const t of xt.openers.keys())t.removeEventListener(\"click\",xt.fromEvent);xt.openers=new Map}static fromEvent(t){if(t.defaultPrevented)return;if(t.button&&0!==t.button)return;if(t.ctrlKey||t.metaKey||t.shiftKey)return;let i=t.composedPath()[0];const n=i.closest(\"[data-fancybox-trigger]\");if(n){const t=n.dataset.fancyboxTrigger||\"\",e=document.querySelectorAll(`[data-fancybox=\"${t}\"]`),s=parseInt(n.dataset.fancyboxIndex||\"\",10)||0;i=e[s]||i}if(!(i&&i instanceof Element))return;let s,o,a,r;if([...xt.openers].reverse().find((([t,e])=>!(!t.contains(i)||![...e].reverse().find((([e,n])=>{let l=i.closest(e);return!!l&&(s=t,o=e,a=l,r=n,!0)}))))),!s||!o||!a)return;r=r||{},t.preventDefault(),i=a;let l=[],c=e({},d,r);c.event=t,c.trigger=i,c.delegate=n;const h=c.groupAll,u=c.groupAttr,p=u&&i?i.getAttribute(`${u}`):\"\";if((!i||p||h)&&(l=[].slice.call(s.querySelectorAll(o))),i&&!h&&(l=p?l.filter((t=>t.getAttribute(`${u}`)===p)):[i]),!l.length)return;const m=xt.getInstance();return m&&m.options.trigger&&l.indexOf(m.options.trigger)>-1?void 0:(i&&(c.startIndex=l.indexOf(i)),xt.fromNodes(l,c))}static fromNodes(t,i){i=e({},d,i);const n=[];for(const e of t){const t=e.dataset||{},s=t.src||e.getAttribute(\"href\")||e.getAttribute(\"currentSrc\")||e.getAttribute(\"src\")||void 0;let o;const a=i.delegate;let r;a&&n.length===i.startIndex&&(o=a instanceof HTMLImageElement?a:a.querySelector(\"img:not([aria-hidden])\")),o||(o=e instanceof HTMLImageElement?e:e.querySelector(\"img:not([aria-hidden])\")),o&&(r=o.currentSrc||o.src||void 0,!r&&o.dataset&&(r=o.dataset.lazySrc||o.dataset.src||void 0));const l={src:s,triggerEl:e,thumbEl:o,thumbElSrc:r,thumbSrc:r};for(const e in t)\"fancybox\"!==e&&(l[e]=t[e]+\"\");n.push(l)}return new xt(n,i)}static getInstance(t){if(t)return yt.get(t);return Array.from(yt.values()).reverse().find((t=>!t.isClosing()&&t))||null}static getSlide(){var t;return(null===(t=xt.getInstance())||void 0===t?void 0:t.getSlide())||null}static show(t=[],e={}){return new xt(t,e)}static next(){const t=xt.getInstance();t&&t.next()}static prev(){const t=xt.getInstance();t&&t.prev()}static close(t=!0,...e){if(t)for(const t of yt.values())t.close(...e);else{const t=xt.getInstance();t&&t.close(...e)}}}Object.defineProperty(xt,\"version\",{enumerable:!0,configurable:!0,writable:!0,value:\"5.0.11\"}),Object.defineProperty(xt,\"defaults\",{enumerable:!0,configurable:!0,writable:!0,value:d}),Object.defineProperty(xt,\"Plugins\",{enumerable:!0,configurable:!0,writable:!0,value:st}),Object.defineProperty(xt,\"openers\",{enumerable:!0,configurable:!0,writable:!0,value:new Map});export{xt as Fancybox};\n", "/*\nTurbo 7.3.0\nCopyright \u00A9 2023 37signals LLC\n */\n(function () {\n    if (window.Reflect === undefined ||\n        window.customElements === undefined ||\n        window.customElements.polyfillWrapFlushCallback) {\n        return;\n    }\n    const BuiltInHTMLElement = HTMLElement;\n    const wrapperForTheName = {\n        HTMLElement: function HTMLElement() {\n            return Reflect.construct(BuiltInHTMLElement, [], this.constructor);\n        },\n    };\n    window.HTMLElement = wrapperForTheName[\"HTMLElement\"];\n    HTMLElement.prototype = BuiltInHTMLElement.prototype;\n    HTMLElement.prototype.constructor = HTMLElement;\n    Object.setPrototypeOf(HTMLElement, BuiltInHTMLElement);\n})();\n\n/**\n * The MIT License (MIT)\n * \n * Copyright (c) 2019 Javan Makhmali\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n(function(prototype) {\n  if (typeof prototype.requestSubmit == \"function\") return\n\n  prototype.requestSubmit = function(submitter) {\n    if (submitter) {\n      validateSubmitter(submitter, this);\n      submitter.click();\n    } else {\n      submitter = document.createElement(\"input\");\n      submitter.type = \"submit\";\n      submitter.hidden = true;\n      this.appendChild(submitter);\n      submitter.click();\n      this.removeChild(submitter);\n    }\n  };\n\n  function validateSubmitter(submitter, form) {\n    submitter instanceof HTMLElement || raise(TypeError, \"parameter 1 is not of type 'HTMLElement'\");\n    submitter.type == \"submit\" || raise(TypeError, \"The specified element is not a submit button\");\n    submitter.form == form || raise(DOMException, \"The specified element is not owned by this form element\", \"NotFoundError\");\n  }\n\n  function raise(errorConstructor, message, name) {\n    throw new errorConstructor(\"Failed to execute 'requestSubmit' on 'HTMLFormElement': \" + message + \".\", name)\n  }\n})(HTMLFormElement.prototype);\n\nconst submittersByForm = new WeakMap();\nfunction findSubmitterFromClickTarget(target) {\n    const element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null;\n    const candidate = element ? element.closest(\"input, button\") : null;\n    return (candidate === null || candidate === void 0 ? void 0 : candidate.type) == \"submit\" ? candidate : null;\n}\nfunction clickCaptured(event) {\n    const submitter = findSubmitterFromClickTarget(event.target);\n    if (submitter && submitter.form) {\n        submittersByForm.set(submitter.form, submitter);\n    }\n}\n(function () {\n    if (\"submitter\" in Event.prototype)\n        return;\n    let prototype = window.Event.prototype;\n    if (\"SubmitEvent\" in window && /Apple Computer/.test(navigator.vendor)) {\n        prototype = window.SubmitEvent.prototype;\n    }\n    else if (\"SubmitEvent\" in window) {\n        return;\n    }\n    addEventListener(\"click\", clickCaptured, true);\n    Object.defineProperty(prototype, \"submitter\", {\n        get() {\n            if (this.type == \"submit\" && this.target instanceof HTMLFormElement) {\n                return submittersByForm.get(this.target);\n            }\n        },\n    });\n})();\n\nvar FrameLoadingStyle;\n(function (FrameLoadingStyle) {\n    FrameLoadingStyle[\"eager\"] = \"eager\";\n    FrameLoadingStyle[\"lazy\"] = \"lazy\";\n})(FrameLoadingStyle || (FrameLoadingStyle = {}));\nclass FrameElement extends HTMLElement {\n    static get observedAttributes() {\n        return [\"disabled\", \"complete\", \"loading\", \"src\"];\n    }\n    constructor() {\n        super();\n        this.loaded = Promise.resolve();\n        this.delegate = new FrameElement.delegateConstructor(this);\n    }\n    connectedCallback() {\n        this.delegate.connect();\n    }\n    disconnectedCallback() {\n        this.delegate.disconnect();\n    }\n    reload() {\n        return this.delegate.sourceURLReloaded();\n    }\n    attributeChangedCallback(name) {\n        if (name == \"loading\") {\n            this.delegate.loadingStyleChanged();\n        }\n        else if (name == \"complete\") {\n            this.delegate.completeChanged();\n        }\n        else if (name == \"src\") {\n            this.delegate.sourceURLChanged();\n        }\n        else {\n            this.delegate.disabledChanged();\n        }\n    }\n    get src() {\n        return this.getAttribute(\"src\");\n    }\n    set src(value) {\n        if (value) {\n            this.setAttribute(\"src\", value);\n        }\n        else {\n            this.removeAttribute(\"src\");\n        }\n    }\n    get loading() {\n        return frameLoadingStyleFromString(this.getAttribute(\"loading\") || \"\");\n    }\n    set loading(value) {\n        if (value) {\n            this.setAttribute(\"loading\", value);\n        }\n        else {\n            this.removeAttribute(\"loading\");\n        }\n    }\n    get disabled() {\n        return this.hasAttribute(\"disabled\");\n    }\n    set disabled(value) {\n        if (value) {\n            this.setAttribute(\"disabled\", \"\");\n        }\n        else {\n            this.removeAttribute(\"disabled\");\n        }\n    }\n    get autoscroll() {\n        return this.hasAttribute(\"autoscroll\");\n    }\n    set autoscroll(value) {\n        if (value) {\n            this.setAttribute(\"autoscroll\", \"\");\n        }\n        else {\n            this.removeAttribute(\"autoscroll\");\n        }\n    }\n    get complete() {\n        return !this.delegate.isLoading;\n    }\n    get isActive() {\n        return this.ownerDocument === document && !this.isPreview;\n    }\n    get isPreview() {\n        var _a, _b;\n        return (_b = (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.documentElement) === null || _b === void 0 ? void 0 : _b.hasAttribute(\"data-turbo-preview\");\n    }\n}\nfunction frameLoadingStyleFromString(style) {\n    switch (style.toLowerCase()) {\n        case \"lazy\":\n            return FrameLoadingStyle.lazy;\n        default:\n            return FrameLoadingStyle.eager;\n    }\n}\n\nfunction expandURL(locatable) {\n    return new URL(locatable.toString(), document.baseURI);\n}\nfunction getAnchor(url) {\n    let anchorMatch;\n    if (url.hash) {\n        return url.hash.slice(1);\n    }\n    else if ((anchorMatch = url.href.match(/#(.*)$/))) {\n        return anchorMatch[1];\n    }\n}\nfunction getAction(form, submitter) {\n    const action = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formaction\")) || form.getAttribute(\"action\") || form.action;\n    return expandURL(action);\n}\nfunction getExtension(url) {\n    return (getLastPathComponent(url).match(/\\.[^.]*$/) || [])[0] || \"\";\n}\nfunction isHTML(url) {\n    return !!getExtension(url).match(/^(?:|\\.(?:htm|html|xhtml|php))$/);\n}\nfunction isPrefixedBy(baseURL, url) {\n    const prefix = getPrefix(url);\n    return baseURL.href === expandURL(prefix).href || baseURL.href.startsWith(prefix);\n}\nfunction locationIsVisitable(location, rootLocation) {\n    return isPrefixedBy(location, rootLocation) && isHTML(location);\n}\nfunction getRequestURL(url) {\n    const anchor = getAnchor(url);\n    return anchor != null ? url.href.slice(0, -(anchor.length + 1)) : url.href;\n}\nfunction toCacheKey(url) {\n    return getRequestURL(url);\n}\nfunction urlsAreEqual(left, right) {\n    return expandURL(left).href == expandURL(right).href;\n}\nfunction getPathComponents(url) {\n    return url.pathname.split(\"/\").slice(1);\n}\nfunction getLastPathComponent(url) {\n    return getPathComponents(url).slice(-1)[0];\n}\nfunction getPrefix(url) {\n    return addTrailingSlash(url.origin + url.pathname);\n}\nfunction addTrailingSlash(value) {\n    return value.endsWith(\"/\") ? value : value + \"/\";\n}\n\nclass FetchResponse {\n    constructor(response) {\n        this.response = response;\n    }\n    get succeeded() {\n        return this.response.ok;\n    }\n    get failed() {\n        return !this.succeeded;\n    }\n    get clientError() {\n        return this.statusCode >= 400 && this.statusCode <= 499;\n    }\n    get serverError() {\n        return this.statusCode >= 500 && this.statusCode <= 599;\n    }\n    get redirected() {\n        return this.response.redirected;\n    }\n    get location() {\n        return expandURL(this.response.url);\n    }\n    get isHTML() {\n        return this.contentType && this.contentType.match(/^(?:text\\/([^\\s;,]+\\b)?html|application\\/xhtml\\+xml)\\b/);\n    }\n    get statusCode() {\n        return this.response.status;\n    }\n    get contentType() {\n        return this.header(\"Content-Type\");\n    }\n    get responseText() {\n        return this.response.clone().text();\n    }\n    get responseHTML() {\n        if (this.isHTML) {\n            return this.response.clone().text();\n        }\n        else {\n            return Promise.resolve(undefined);\n        }\n    }\n    header(name) {\n        return this.response.headers.get(name);\n    }\n}\n\nfunction activateScriptElement(element) {\n    if (element.getAttribute(\"data-turbo-eval\") == \"false\") {\n        return element;\n    }\n    else {\n        const createdScriptElement = document.createElement(\"script\");\n        const cspNonce = getMetaContent(\"csp-nonce\");\n        if (cspNonce) {\n            createdScriptElement.nonce = cspNonce;\n        }\n        createdScriptElement.textContent = element.textContent;\n        createdScriptElement.async = false;\n        copyElementAttributes(createdScriptElement, element);\n        return createdScriptElement;\n    }\n}\nfunction copyElementAttributes(destinationElement, sourceElement) {\n    for (const { name, value } of sourceElement.attributes) {\n        destinationElement.setAttribute(name, value);\n    }\n}\nfunction createDocumentFragment(html) {\n    const template = document.createElement(\"template\");\n    template.innerHTML = html;\n    return template.content;\n}\nfunction dispatch(eventName, { target, cancelable, detail } = {}) {\n    const event = new CustomEvent(eventName, {\n        cancelable,\n        bubbles: true,\n        composed: true,\n        detail,\n    });\n    if (target && target.isConnected) {\n        target.dispatchEvent(event);\n    }\n    else {\n        document.documentElement.dispatchEvent(event);\n    }\n    return event;\n}\nfunction nextAnimationFrame() {\n    return new Promise((resolve) => requestAnimationFrame(() => resolve()));\n}\nfunction nextEventLoopTick() {\n    return new Promise((resolve) => setTimeout(() => resolve(), 0));\n}\nfunction nextMicrotask() {\n    return Promise.resolve();\n}\nfunction parseHTMLDocument(html = \"\") {\n    return new DOMParser().parseFromString(html, \"text/html\");\n}\nfunction unindent(strings, ...values) {\n    const lines = interpolate(strings, values).replace(/^\\n/, \"\").split(\"\\n\");\n    const match = lines[0].match(/^\\s+/);\n    const indent = match ? match[0].length : 0;\n    return lines.map((line) => line.slice(indent)).join(\"\\n\");\n}\nfunction interpolate(strings, values) {\n    return strings.reduce((result, string, i) => {\n        const value = values[i] == undefined ? \"\" : values[i];\n        return result + string + value;\n    }, \"\");\n}\nfunction uuid() {\n    return Array.from({ length: 36 })\n        .map((_, i) => {\n        if (i == 8 || i == 13 || i == 18 || i == 23) {\n            return \"-\";\n        }\n        else if (i == 14) {\n            return \"4\";\n        }\n        else if (i == 19) {\n            return (Math.floor(Math.random() * 4) + 8).toString(16);\n        }\n        else {\n            return Math.floor(Math.random() * 15).toString(16);\n        }\n    })\n        .join(\"\");\n}\nfunction getAttribute(attributeName, ...elements) {\n    for (const value of elements.map((element) => element === null || element === void 0 ? void 0 : element.getAttribute(attributeName))) {\n        if (typeof value == \"string\")\n            return value;\n    }\n    return null;\n}\nfunction hasAttribute(attributeName, ...elements) {\n    return elements.some((element) => element && element.hasAttribute(attributeName));\n}\nfunction markAsBusy(...elements) {\n    for (const element of elements) {\n        if (element.localName == \"turbo-frame\") {\n            element.setAttribute(\"busy\", \"\");\n        }\n        element.setAttribute(\"aria-busy\", \"true\");\n    }\n}\nfunction clearBusyState(...elements) {\n    for (const element of elements) {\n        if (element.localName == \"turbo-frame\") {\n            element.removeAttribute(\"busy\");\n        }\n        element.removeAttribute(\"aria-busy\");\n    }\n}\nfunction waitForLoad(element, timeoutInMilliseconds = 2000) {\n    return new Promise((resolve) => {\n        const onComplete = () => {\n            element.removeEventListener(\"error\", onComplete);\n            element.removeEventListener(\"load\", onComplete);\n            resolve();\n        };\n        element.addEventListener(\"load\", onComplete, { once: true });\n        element.addEventListener(\"error\", onComplete, { once: true });\n        setTimeout(resolve, timeoutInMilliseconds);\n    });\n}\nfunction getHistoryMethodForAction(action) {\n    switch (action) {\n        case \"replace\":\n            return history.replaceState;\n        case \"advance\":\n        case \"restore\":\n            return history.pushState;\n    }\n}\nfunction isAction(action) {\n    return action == \"advance\" || action == \"replace\" || action == \"restore\";\n}\nfunction getVisitAction(...elements) {\n    const action = getAttribute(\"data-turbo-action\", ...elements);\n    return isAction(action) ? action : null;\n}\nfunction getMetaElement(name) {\n    return document.querySelector(`meta[name=\"${name}\"]`);\n}\nfunction getMetaContent(name) {\n    const element = getMetaElement(name);\n    return element && element.content;\n}\nfunction setMetaContent(name, content) {\n    let element = getMetaElement(name);\n    if (!element) {\n        element = document.createElement(\"meta\");\n        element.setAttribute(\"name\", name);\n        document.head.appendChild(element);\n    }\n    element.setAttribute(\"content\", content);\n    return element;\n}\nfunction findClosestRecursively(element, selector) {\n    var _a;\n    if (element instanceof Element) {\n        return (element.closest(selector) ||\n            findClosestRecursively(element.assignedSlot || ((_a = element.getRootNode()) === null || _a === void 0 ? void 0 : _a.host), selector));\n    }\n}\n\nvar FetchMethod;\n(function (FetchMethod) {\n    FetchMethod[FetchMethod[\"get\"] = 0] = \"get\";\n    FetchMethod[FetchMethod[\"post\"] = 1] = \"post\";\n    FetchMethod[FetchMethod[\"put\"] = 2] = \"put\";\n    FetchMethod[FetchMethod[\"patch\"] = 3] = \"patch\";\n    FetchMethod[FetchMethod[\"delete\"] = 4] = \"delete\";\n})(FetchMethod || (FetchMethod = {}));\nfunction fetchMethodFromString(method) {\n    switch (method.toLowerCase()) {\n        case \"get\":\n            return FetchMethod.get;\n        case \"post\":\n            return FetchMethod.post;\n        case \"put\":\n            return FetchMethod.put;\n        case \"patch\":\n            return FetchMethod.patch;\n        case \"delete\":\n            return FetchMethod.delete;\n    }\n}\nclass FetchRequest {\n    constructor(delegate, method, location, body = new URLSearchParams(), target = null) {\n        this.abortController = new AbortController();\n        this.resolveRequestPromise = (_value) => { };\n        this.delegate = delegate;\n        this.method = method;\n        this.headers = this.defaultHeaders;\n        this.body = body;\n        this.url = location;\n        this.target = target;\n    }\n    get location() {\n        return this.url;\n    }\n    get params() {\n        return this.url.searchParams;\n    }\n    get entries() {\n        return this.body ? Array.from(this.body.entries()) : [];\n    }\n    cancel() {\n        this.abortController.abort();\n    }\n    async perform() {\n        const { fetchOptions } = this;\n        this.delegate.prepareRequest(this);\n        await this.allowRequestToBeIntercepted(fetchOptions);\n        try {\n            this.delegate.requestStarted(this);\n            const response = await fetch(this.url.href, fetchOptions);\n            return await this.receive(response);\n        }\n        catch (error) {\n            if (error.name !== \"AbortError\") {\n                if (this.willDelegateErrorHandling(error)) {\n                    this.delegate.requestErrored(this, error);\n                }\n                throw error;\n            }\n        }\n        finally {\n            this.delegate.requestFinished(this);\n        }\n    }\n    async receive(response) {\n        const fetchResponse = new FetchResponse(response);\n        const event = dispatch(\"turbo:before-fetch-response\", {\n            cancelable: true,\n            detail: { fetchResponse },\n            target: this.target,\n        });\n        if (event.defaultPrevented) {\n            this.delegate.requestPreventedHandlingResponse(this, fetchResponse);\n        }\n        else if (fetchResponse.succeeded) {\n            this.delegate.requestSucceededWithResponse(this, fetchResponse);\n        }\n        else {\n            this.delegate.requestFailedWithResponse(this, fetchResponse);\n        }\n        return fetchResponse;\n    }\n    get fetchOptions() {\n        var _a;\n        return {\n            method: FetchMethod[this.method].toUpperCase(),\n            credentials: \"same-origin\",\n            headers: this.headers,\n            redirect: \"follow\",\n            body: this.isSafe ? null : this.body,\n            signal: this.abortSignal,\n            referrer: (_a = this.delegate.referrer) === null || _a === void 0 ? void 0 : _a.href,\n        };\n    }\n    get defaultHeaders() {\n        return {\n            Accept: \"text/html, application/xhtml+xml\",\n        };\n    }\n    get isSafe() {\n        return this.method === FetchMethod.get;\n    }\n    get abortSignal() {\n        return this.abortController.signal;\n    }\n    acceptResponseType(mimeType) {\n        this.headers[\"Accept\"] = [mimeType, this.headers[\"Accept\"]].join(\", \");\n    }\n    async allowRequestToBeIntercepted(fetchOptions) {\n        const requestInterception = new Promise((resolve) => (this.resolveRequestPromise = resolve));\n        const event = dispatch(\"turbo:before-fetch-request\", {\n            cancelable: true,\n            detail: {\n                fetchOptions,\n                url: this.url,\n                resume: this.resolveRequestPromise,\n            },\n            target: this.target,\n        });\n        if (event.defaultPrevented)\n            await requestInterception;\n    }\n    willDelegateErrorHandling(error) {\n        const event = dispatch(\"turbo:fetch-request-error\", {\n            target: this.target,\n            cancelable: true,\n            detail: { request: this, error: error },\n        });\n        return !event.defaultPrevented;\n    }\n}\n\nclass AppearanceObserver {\n    constructor(delegate, element) {\n        this.started = false;\n        this.intersect = (entries) => {\n            const lastEntry = entries.slice(-1)[0];\n            if (lastEntry === null || lastEntry === void 0 ? void 0 : lastEntry.isIntersecting) {\n                this.delegate.elementAppearedInViewport(this.element);\n            }\n        };\n        this.delegate = delegate;\n        this.element = element;\n        this.intersectionObserver = new IntersectionObserver(this.intersect);\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.intersectionObserver.observe(this.element);\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.started = false;\n            this.intersectionObserver.unobserve(this.element);\n        }\n    }\n}\n\nclass StreamMessage {\n    static wrap(message) {\n        if (typeof message == \"string\") {\n            return new this(createDocumentFragment(message));\n        }\n        else {\n            return message;\n        }\n    }\n    constructor(fragment) {\n        this.fragment = importStreamElements(fragment);\n    }\n}\nStreamMessage.contentType = \"text/vnd.turbo-stream.html\";\nfunction importStreamElements(fragment) {\n    for (const element of fragment.querySelectorAll(\"turbo-stream\")) {\n        const streamElement = document.importNode(element, true);\n        for (const inertScriptElement of streamElement.templateElement.content.querySelectorAll(\"script\")) {\n            inertScriptElement.replaceWith(activateScriptElement(inertScriptElement));\n        }\n        element.replaceWith(streamElement);\n    }\n    return fragment;\n}\n\nvar FormSubmissionState;\n(function (FormSubmissionState) {\n    FormSubmissionState[FormSubmissionState[\"initialized\"] = 0] = \"initialized\";\n    FormSubmissionState[FormSubmissionState[\"requesting\"] = 1] = \"requesting\";\n    FormSubmissionState[FormSubmissionState[\"waiting\"] = 2] = \"waiting\";\n    FormSubmissionState[FormSubmissionState[\"receiving\"] = 3] = \"receiving\";\n    FormSubmissionState[FormSubmissionState[\"stopping\"] = 4] = \"stopping\";\n    FormSubmissionState[FormSubmissionState[\"stopped\"] = 5] = \"stopped\";\n})(FormSubmissionState || (FormSubmissionState = {}));\nvar FormEnctype;\n(function (FormEnctype) {\n    FormEnctype[\"urlEncoded\"] = \"application/x-www-form-urlencoded\";\n    FormEnctype[\"multipart\"] = \"multipart/form-data\";\n    FormEnctype[\"plain\"] = \"text/plain\";\n})(FormEnctype || (FormEnctype = {}));\nfunction formEnctypeFromString(encoding) {\n    switch (encoding.toLowerCase()) {\n        case FormEnctype.multipart:\n            return FormEnctype.multipart;\n        case FormEnctype.plain:\n            return FormEnctype.plain;\n        default:\n            return FormEnctype.urlEncoded;\n    }\n}\nclass FormSubmission {\n    static confirmMethod(message, _element, _submitter) {\n        return Promise.resolve(confirm(message));\n    }\n    constructor(delegate, formElement, submitter, mustRedirect = false) {\n        this.state = FormSubmissionState.initialized;\n        this.delegate = delegate;\n        this.formElement = formElement;\n        this.submitter = submitter;\n        this.formData = buildFormData(formElement, submitter);\n        this.location = expandURL(this.action);\n        if (this.method == FetchMethod.get) {\n            mergeFormDataEntries(this.location, [...this.body.entries()]);\n        }\n        this.fetchRequest = new FetchRequest(this, this.method, this.location, this.body, this.formElement);\n        this.mustRedirect = mustRedirect;\n    }\n    get method() {\n        var _a;\n        const method = ((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute(\"formmethod\")) || this.formElement.getAttribute(\"method\") || \"\";\n        return fetchMethodFromString(method.toLowerCase()) || FetchMethod.get;\n    }\n    get action() {\n        var _a;\n        const formElementAction = typeof this.formElement.action === \"string\" ? this.formElement.action : null;\n        if ((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.hasAttribute(\"formaction\")) {\n            return this.submitter.getAttribute(\"formaction\") || \"\";\n        }\n        else {\n            return this.formElement.getAttribute(\"action\") || formElementAction || \"\";\n        }\n    }\n    get body() {\n        if (this.enctype == FormEnctype.urlEncoded || this.method == FetchMethod.get) {\n            return new URLSearchParams(this.stringFormData);\n        }\n        else {\n            return this.formData;\n        }\n    }\n    get enctype() {\n        var _a;\n        return formEnctypeFromString(((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute(\"formenctype\")) || this.formElement.enctype);\n    }\n    get isSafe() {\n        return this.fetchRequest.isSafe;\n    }\n    get stringFormData() {\n        return [...this.formData].reduce((entries, [name, value]) => {\n            return entries.concat(typeof value == \"string\" ? [[name, value]] : []);\n        }, []);\n    }\n    async start() {\n        const { initialized, requesting } = FormSubmissionState;\n        const confirmationMessage = getAttribute(\"data-turbo-confirm\", this.submitter, this.formElement);\n        if (typeof confirmationMessage === \"string\") {\n            const answer = await FormSubmission.confirmMethod(confirmationMessage, this.formElement, this.submitter);\n            if (!answer) {\n                return;\n            }\n        }\n        if (this.state == initialized) {\n            this.state = requesting;\n            return this.fetchRequest.perform();\n        }\n    }\n    stop() {\n        const { stopping, stopped } = FormSubmissionState;\n        if (this.state != stopping && this.state != stopped) {\n            this.state = stopping;\n            this.fetchRequest.cancel();\n            return true;\n        }\n    }\n    prepareRequest(request) {\n        if (!request.isSafe) {\n            const token = getCookieValue(getMetaContent(\"csrf-param\")) || getMetaContent(\"csrf-token\");\n            if (token) {\n                request.headers[\"X-CSRF-Token\"] = token;\n            }\n        }\n        if (this.requestAcceptsTurboStreamResponse(request)) {\n            request.acceptResponseType(StreamMessage.contentType);\n        }\n    }\n    requestStarted(_request) {\n        var _a;\n        this.state = FormSubmissionState.waiting;\n        (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.setAttribute(\"disabled\", \"\");\n        this.setSubmitsWith();\n        dispatch(\"turbo:submit-start\", {\n            target: this.formElement,\n            detail: { formSubmission: this },\n        });\n        this.delegate.formSubmissionStarted(this);\n    }\n    requestPreventedHandlingResponse(request, response) {\n        this.result = { success: response.succeeded, fetchResponse: response };\n    }\n    requestSucceededWithResponse(request, response) {\n        if (response.clientError || response.serverError) {\n            this.delegate.formSubmissionFailedWithResponse(this, response);\n        }\n        else if (this.requestMustRedirect(request) && responseSucceededWithoutRedirect(response)) {\n            const error = new Error(\"Form responses must redirect to another location\");\n            this.delegate.formSubmissionErrored(this, error);\n        }\n        else {\n            this.state = FormSubmissionState.receiving;\n            this.result = { success: true, fetchResponse: response };\n            this.delegate.formSubmissionSucceededWithResponse(this, response);\n        }\n    }\n    requestFailedWithResponse(request, response) {\n        this.result = { success: false, fetchResponse: response };\n        this.delegate.formSubmissionFailedWithResponse(this, response);\n    }\n    requestErrored(request, error) {\n        this.result = { success: false, error };\n        this.delegate.formSubmissionErrored(this, error);\n    }\n    requestFinished(_request) {\n        var _a;\n        this.state = FormSubmissionState.stopped;\n        (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.removeAttribute(\"disabled\");\n        this.resetSubmitterText();\n        dispatch(\"turbo:submit-end\", {\n            target: this.formElement,\n            detail: Object.assign({ formSubmission: this }, this.result),\n        });\n        this.delegate.formSubmissionFinished(this);\n    }\n    setSubmitsWith() {\n        if (!this.submitter || !this.submitsWith)\n            return;\n        if (this.submitter.matches(\"button\")) {\n            this.originalSubmitText = this.submitter.innerHTML;\n            this.submitter.innerHTML = this.submitsWith;\n        }\n        else if (this.submitter.matches(\"input\")) {\n            const input = this.submitter;\n            this.originalSubmitText = input.value;\n            input.value = this.submitsWith;\n        }\n    }\n    resetSubmitterText() {\n        if (!this.submitter || !this.originalSubmitText)\n            return;\n        if (this.submitter.matches(\"button\")) {\n            this.submitter.innerHTML = this.originalSubmitText;\n        }\n        else if (this.submitter.matches(\"input\")) {\n            const input = this.submitter;\n            input.value = this.originalSubmitText;\n        }\n    }\n    requestMustRedirect(request) {\n        return !request.isSafe && this.mustRedirect;\n    }\n    requestAcceptsTurboStreamResponse(request) {\n        return !request.isSafe || hasAttribute(\"data-turbo-stream\", this.submitter, this.formElement);\n    }\n    get submitsWith() {\n        var _a;\n        return (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute(\"data-turbo-submits-with\");\n    }\n}\nfunction buildFormData(formElement, submitter) {\n    const formData = new FormData(formElement);\n    const name = submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"name\");\n    const value = submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"value\");\n    if (name) {\n        formData.append(name, value || \"\");\n    }\n    return formData;\n}\nfunction getCookieValue(cookieName) {\n    if (cookieName != null) {\n        const cookies = document.cookie ? document.cookie.split(\"; \") : [];\n        const cookie = cookies.find((cookie) => cookie.startsWith(cookieName));\n        if (cookie) {\n            const value = cookie.split(\"=\").slice(1).join(\"=\");\n            return value ? decodeURIComponent(value) : undefined;\n        }\n    }\n}\nfunction responseSucceededWithoutRedirect(response) {\n    return response.statusCode == 200 && !response.redirected;\n}\nfunction mergeFormDataEntries(url, entries) {\n    const searchParams = new URLSearchParams();\n    for (const [name, value] of entries) {\n        if (value instanceof File)\n            continue;\n        searchParams.append(name, value);\n    }\n    url.search = searchParams.toString();\n    return url;\n}\n\nclass Snapshot {\n    constructor(element) {\n        this.element = element;\n    }\n    get activeElement() {\n        return this.element.ownerDocument.activeElement;\n    }\n    get children() {\n        return [...this.element.children];\n    }\n    hasAnchor(anchor) {\n        return this.getElementForAnchor(anchor) != null;\n    }\n    getElementForAnchor(anchor) {\n        return anchor ? this.element.querySelector(`[id='${anchor}'], a[name='${anchor}']`) : null;\n    }\n    get isConnected() {\n        return this.element.isConnected;\n    }\n    get firstAutofocusableElement() {\n        const inertDisabledOrHidden = \"[inert], :disabled, [hidden], details:not([open]), dialog:not([open])\";\n        for (const element of this.element.querySelectorAll(\"[autofocus]\")) {\n            if (element.closest(inertDisabledOrHidden) == null)\n                return element;\n            else\n                continue;\n        }\n        return null;\n    }\n    get permanentElements() {\n        return queryPermanentElementsAll(this.element);\n    }\n    getPermanentElementById(id) {\n        return getPermanentElementById(this.element, id);\n    }\n    getPermanentElementMapForSnapshot(snapshot) {\n        const permanentElementMap = {};\n        for (const currentPermanentElement of this.permanentElements) {\n            const { id } = currentPermanentElement;\n            const newPermanentElement = snapshot.getPermanentElementById(id);\n            if (newPermanentElement) {\n                permanentElementMap[id] = [currentPermanentElement, newPermanentElement];\n            }\n        }\n        return permanentElementMap;\n    }\n}\nfunction getPermanentElementById(node, id) {\n    return node.querySelector(`#${id}[data-turbo-permanent]`);\n}\nfunction queryPermanentElementsAll(node) {\n    return node.querySelectorAll(\"[id][data-turbo-permanent]\");\n}\n\nclass FormSubmitObserver {\n    constructor(delegate, eventTarget) {\n        this.started = false;\n        this.submitCaptured = () => {\n            this.eventTarget.removeEventListener(\"submit\", this.submitBubbled, false);\n            this.eventTarget.addEventListener(\"submit\", this.submitBubbled, false);\n        };\n        this.submitBubbled = ((event) => {\n            if (!event.defaultPrevented) {\n                const form = event.target instanceof HTMLFormElement ? event.target : undefined;\n                const submitter = event.submitter || undefined;\n                if (form &&\n                    submissionDoesNotDismissDialog(form, submitter) &&\n                    submissionDoesNotTargetIFrame(form, submitter) &&\n                    this.delegate.willSubmitForm(form, submitter)) {\n                    event.preventDefault();\n                    event.stopImmediatePropagation();\n                    this.delegate.formSubmitted(form, submitter);\n                }\n            }\n        });\n        this.delegate = delegate;\n        this.eventTarget = eventTarget;\n    }\n    start() {\n        if (!this.started) {\n            this.eventTarget.addEventListener(\"submit\", this.submitCaptured, true);\n            this.started = true;\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.eventTarget.removeEventListener(\"submit\", this.submitCaptured, true);\n            this.started = false;\n        }\n    }\n}\nfunction submissionDoesNotDismissDialog(form, submitter) {\n    const method = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formmethod\")) || form.getAttribute(\"method\");\n    return method != \"dialog\";\n}\nfunction submissionDoesNotTargetIFrame(form, submitter) {\n    if ((submitter === null || submitter === void 0 ? void 0 : submitter.hasAttribute(\"formtarget\")) || form.hasAttribute(\"target\")) {\n        const target = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formtarget\")) || form.target;\n        for (const element of document.getElementsByName(target)) {\n            if (element instanceof HTMLIFrameElement)\n                return false;\n        }\n        return true;\n    }\n    else {\n        return true;\n    }\n}\n\nclass View {\n    constructor(delegate, element) {\n        this.resolveRenderPromise = (_value) => { };\n        this.resolveInterceptionPromise = (_value) => { };\n        this.delegate = delegate;\n        this.element = element;\n    }\n    scrollToAnchor(anchor) {\n        const element = this.snapshot.getElementForAnchor(anchor);\n        if (element) {\n            this.scrollToElement(element);\n            this.focusElement(element);\n        }\n        else {\n            this.scrollToPosition({ x: 0, y: 0 });\n        }\n    }\n    scrollToAnchorFromLocation(location) {\n        this.scrollToAnchor(getAnchor(location));\n    }\n    scrollToElement(element) {\n        element.scrollIntoView();\n    }\n    focusElement(element) {\n        if (element instanceof HTMLElement) {\n            if (element.hasAttribute(\"tabindex\")) {\n                element.focus();\n            }\n            else {\n                element.setAttribute(\"tabindex\", \"-1\");\n                element.focus();\n                element.removeAttribute(\"tabindex\");\n            }\n        }\n    }\n    scrollToPosition({ x, y }) {\n        this.scrollRoot.scrollTo(x, y);\n    }\n    scrollToTop() {\n        this.scrollToPosition({ x: 0, y: 0 });\n    }\n    get scrollRoot() {\n        return window;\n    }\n    async render(renderer) {\n        const { isPreview, shouldRender, newSnapshot: snapshot } = renderer;\n        if (shouldRender) {\n            try {\n                this.renderPromise = new Promise((resolve) => (this.resolveRenderPromise = resolve));\n                this.renderer = renderer;\n                await this.prepareToRenderSnapshot(renderer);\n                const renderInterception = new Promise((resolve) => (this.resolveInterceptionPromise = resolve));\n                const options = { resume: this.resolveInterceptionPromise, render: this.renderer.renderElement };\n                const immediateRender = this.delegate.allowsImmediateRender(snapshot, options);\n                if (!immediateRender)\n                    await renderInterception;\n                await this.renderSnapshot(renderer);\n                this.delegate.viewRenderedSnapshot(snapshot, isPreview);\n                this.delegate.preloadOnLoadLinksForView(this.element);\n                this.finishRenderingSnapshot(renderer);\n            }\n            finally {\n                delete this.renderer;\n                this.resolveRenderPromise(undefined);\n                delete this.renderPromise;\n            }\n        }\n        else {\n            this.invalidate(renderer.reloadReason);\n        }\n    }\n    invalidate(reason) {\n        this.delegate.viewInvalidated(reason);\n    }\n    async prepareToRenderSnapshot(renderer) {\n        this.markAsPreview(renderer.isPreview);\n        await renderer.prepareToRender();\n    }\n    markAsPreview(isPreview) {\n        if (isPreview) {\n            this.element.setAttribute(\"data-turbo-preview\", \"\");\n        }\n        else {\n            this.element.removeAttribute(\"data-turbo-preview\");\n        }\n    }\n    async renderSnapshot(renderer) {\n        await renderer.render();\n    }\n    finishRenderingSnapshot(renderer) {\n        renderer.finishRendering();\n    }\n}\n\nclass FrameView extends View {\n    missing() {\n        this.element.innerHTML = `<strong class=\"turbo-frame-error\">Content missing</strong>`;\n    }\n    get snapshot() {\n        return new Snapshot(this.element);\n    }\n}\n\nclass LinkInterceptor {\n    constructor(delegate, element) {\n        this.clickBubbled = (event) => {\n            if (this.respondsToEventTarget(event.target)) {\n                this.clickEvent = event;\n            }\n            else {\n                delete this.clickEvent;\n            }\n        };\n        this.linkClicked = ((event) => {\n            if (this.clickEvent && this.respondsToEventTarget(event.target) && event.target instanceof Element) {\n                if (this.delegate.shouldInterceptLinkClick(event.target, event.detail.url, event.detail.originalEvent)) {\n                    this.clickEvent.preventDefault();\n                    event.preventDefault();\n                    this.delegate.linkClickIntercepted(event.target, event.detail.url, event.detail.originalEvent);\n                }\n            }\n            delete this.clickEvent;\n        });\n        this.willVisit = ((_event) => {\n            delete this.clickEvent;\n        });\n        this.delegate = delegate;\n        this.element = element;\n    }\n    start() {\n        this.element.addEventListener(\"click\", this.clickBubbled);\n        document.addEventListener(\"turbo:click\", this.linkClicked);\n        document.addEventListener(\"turbo:before-visit\", this.willVisit);\n    }\n    stop() {\n        this.element.removeEventListener(\"click\", this.clickBubbled);\n        document.removeEventListener(\"turbo:click\", this.linkClicked);\n        document.removeEventListener(\"turbo:before-visit\", this.willVisit);\n    }\n    respondsToEventTarget(target) {\n        const element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null;\n        return element && element.closest(\"turbo-frame, html\") == this.element;\n    }\n}\n\nclass LinkClickObserver {\n    constructor(delegate, eventTarget) {\n        this.started = false;\n        this.clickCaptured = () => {\n            this.eventTarget.removeEventListener(\"click\", this.clickBubbled, false);\n            this.eventTarget.addEventListener(\"click\", this.clickBubbled, false);\n        };\n        this.clickBubbled = (event) => {\n            if (event instanceof MouseEvent && this.clickEventIsSignificant(event)) {\n                const target = (event.composedPath && event.composedPath()[0]) || event.target;\n                const link = this.findLinkFromClickTarget(target);\n                if (link && doesNotTargetIFrame(link)) {\n                    const location = this.getLocationForLink(link);\n                    if (this.delegate.willFollowLinkToLocation(link, location, event)) {\n                        event.preventDefault();\n                        this.delegate.followedLinkToLocation(link, location);\n                    }\n                }\n            }\n        };\n        this.delegate = delegate;\n        this.eventTarget = eventTarget;\n    }\n    start() {\n        if (!this.started) {\n            this.eventTarget.addEventListener(\"click\", this.clickCaptured, true);\n            this.started = true;\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.eventTarget.removeEventListener(\"click\", this.clickCaptured, true);\n            this.started = false;\n        }\n    }\n    clickEventIsSignificant(event) {\n        return !((event.target && event.target.isContentEditable) ||\n            event.defaultPrevented ||\n            event.which > 1 ||\n            event.altKey ||\n            event.ctrlKey ||\n            event.metaKey ||\n            event.shiftKey);\n    }\n    findLinkFromClickTarget(target) {\n        return findClosestRecursively(target, \"a[href]:not([target^=_]):not([download])\");\n    }\n    getLocationForLink(link) {\n        return expandURL(link.getAttribute(\"href\") || \"\");\n    }\n}\nfunction doesNotTargetIFrame(anchor) {\n    if (anchor.hasAttribute(\"target\")) {\n        for (const element of document.getElementsByName(anchor.target)) {\n            if (element instanceof HTMLIFrameElement)\n                return false;\n        }\n        return true;\n    }\n    else {\n        return true;\n    }\n}\n\nclass FormLinkClickObserver {\n    constructor(delegate, element) {\n        this.delegate = delegate;\n        this.linkInterceptor = new LinkClickObserver(this, element);\n    }\n    start() {\n        this.linkInterceptor.start();\n    }\n    stop() {\n        this.linkInterceptor.stop();\n    }\n    willFollowLinkToLocation(link, location, originalEvent) {\n        return (this.delegate.willSubmitFormLinkToLocation(link, location, originalEvent) &&\n            link.hasAttribute(\"data-turbo-method\"));\n    }\n    followedLinkToLocation(link, location) {\n        const form = document.createElement(\"form\");\n        const type = \"hidden\";\n        for (const [name, value] of location.searchParams) {\n            form.append(Object.assign(document.createElement(\"input\"), { type, name, value }));\n        }\n        const action = Object.assign(location, { search: \"\" });\n        form.setAttribute(\"data-turbo\", \"true\");\n        form.setAttribute(\"action\", action.href);\n        form.setAttribute(\"hidden\", \"\");\n        const method = link.getAttribute(\"data-turbo-method\");\n        if (method)\n            form.setAttribute(\"method\", method);\n        const turboFrame = link.getAttribute(\"data-turbo-frame\");\n        if (turboFrame)\n            form.setAttribute(\"data-turbo-frame\", turboFrame);\n        const turboAction = getVisitAction(link);\n        if (turboAction)\n            form.setAttribute(\"data-turbo-action\", turboAction);\n        const turboConfirm = link.getAttribute(\"data-turbo-confirm\");\n        if (turboConfirm)\n            form.setAttribute(\"data-turbo-confirm\", turboConfirm);\n        const turboStream = link.hasAttribute(\"data-turbo-stream\");\n        if (turboStream)\n            form.setAttribute(\"data-turbo-stream\", \"\");\n        this.delegate.submittedFormLinkToLocation(link, location, form);\n        document.body.appendChild(form);\n        form.addEventListener(\"turbo:submit-end\", () => form.remove(), { once: true });\n        requestAnimationFrame(() => form.requestSubmit());\n    }\n}\n\nclass Bardo {\n    static async preservingPermanentElements(delegate, permanentElementMap, callback) {\n        const bardo = new this(delegate, permanentElementMap);\n        bardo.enter();\n        await callback();\n        bardo.leave();\n    }\n    constructor(delegate, permanentElementMap) {\n        this.delegate = delegate;\n        this.permanentElementMap = permanentElementMap;\n    }\n    enter() {\n        for (const id in this.permanentElementMap) {\n            const [currentPermanentElement, newPermanentElement] = this.permanentElementMap[id];\n            this.delegate.enteringBardo(currentPermanentElement, newPermanentElement);\n            this.replaceNewPermanentElementWithPlaceholder(newPermanentElement);\n        }\n    }\n    leave() {\n        for (const id in this.permanentElementMap) {\n            const [currentPermanentElement] = this.permanentElementMap[id];\n            this.replaceCurrentPermanentElementWithClone(currentPermanentElement);\n            this.replacePlaceholderWithPermanentElement(currentPermanentElement);\n            this.delegate.leavingBardo(currentPermanentElement);\n        }\n    }\n    replaceNewPermanentElementWithPlaceholder(permanentElement) {\n        const placeholder = createPlaceholderForPermanentElement(permanentElement);\n        permanentElement.replaceWith(placeholder);\n    }\n    replaceCurrentPermanentElementWithClone(permanentElement) {\n        const clone = permanentElement.cloneNode(true);\n        permanentElement.replaceWith(clone);\n    }\n    replacePlaceholderWithPermanentElement(permanentElement) {\n        const placeholder = this.getPlaceholderById(permanentElement.id);\n        placeholder === null || placeholder === void 0 ? void 0 : placeholder.replaceWith(permanentElement);\n    }\n    getPlaceholderById(id) {\n        return this.placeholders.find((element) => element.content == id);\n    }\n    get placeholders() {\n        return [...document.querySelectorAll(\"meta[name=turbo-permanent-placeholder][content]\")];\n    }\n}\nfunction createPlaceholderForPermanentElement(permanentElement) {\n    const element = document.createElement(\"meta\");\n    element.setAttribute(\"name\", \"turbo-permanent-placeholder\");\n    element.setAttribute(\"content\", permanentElement.id);\n    return element;\n}\n\nclass Renderer {\n    constructor(currentSnapshot, newSnapshot, renderElement, isPreview, willRender = true) {\n        this.activeElement = null;\n        this.currentSnapshot = currentSnapshot;\n        this.newSnapshot = newSnapshot;\n        this.isPreview = isPreview;\n        this.willRender = willRender;\n        this.renderElement = renderElement;\n        this.promise = new Promise((resolve, reject) => (this.resolvingFunctions = { resolve, reject }));\n    }\n    get shouldRender() {\n        return true;\n    }\n    get reloadReason() {\n        return;\n    }\n    prepareToRender() {\n        return;\n    }\n    finishRendering() {\n        if (this.resolvingFunctions) {\n            this.resolvingFunctions.resolve();\n            delete this.resolvingFunctions;\n        }\n    }\n    async preservingPermanentElements(callback) {\n        await Bardo.preservingPermanentElements(this, this.permanentElementMap, callback);\n    }\n    focusFirstAutofocusableElement() {\n        const element = this.connectedSnapshot.firstAutofocusableElement;\n        if (elementIsFocusable(element)) {\n            element.focus();\n        }\n    }\n    enteringBardo(currentPermanentElement) {\n        if (this.activeElement)\n            return;\n        if (currentPermanentElement.contains(this.currentSnapshot.activeElement)) {\n            this.activeElement = this.currentSnapshot.activeElement;\n        }\n    }\n    leavingBardo(currentPermanentElement) {\n        if (currentPermanentElement.contains(this.activeElement) && this.activeElement instanceof HTMLElement) {\n            this.activeElement.focus();\n            this.activeElement = null;\n        }\n    }\n    get connectedSnapshot() {\n        return this.newSnapshot.isConnected ? this.newSnapshot : this.currentSnapshot;\n    }\n    get currentElement() {\n        return this.currentSnapshot.element;\n    }\n    get newElement() {\n        return this.newSnapshot.element;\n    }\n    get permanentElementMap() {\n        return this.currentSnapshot.getPermanentElementMapForSnapshot(this.newSnapshot);\n    }\n}\nfunction elementIsFocusable(element) {\n    return element && typeof element.focus == \"function\";\n}\n\nclass FrameRenderer extends Renderer {\n    static renderElement(currentElement, newElement) {\n        var _a;\n        const destinationRange = document.createRange();\n        destinationRange.selectNodeContents(currentElement);\n        destinationRange.deleteContents();\n        const frameElement = newElement;\n        const sourceRange = (_a = frameElement.ownerDocument) === null || _a === void 0 ? void 0 : _a.createRange();\n        if (sourceRange) {\n            sourceRange.selectNodeContents(frameElement);\n            currentElement.appendChild(sourceRange.extractContents());\n        }\n    }\n    constructor(delegate, currentSnapshot, newSnapshot, renderElement, isPreview, willRender = true) {\n        super(currentSnapshot, newSnapshot, renderElement, isPreview, willRender);\n        this.delegate = delegate;\n    }\n    get shouldRender() {\n        return true;\n    }\n    async render() {\n        await nextAnimationFrame();\n        this.preservingPermanentElements(() => {\n            this.loadFrameElement();\n        });\n        this.scrollFrameIntoView();\n        await nextAnimationFrame();\n        this.focusFirstAutofocusableElement();\n        await nextAnimationFrame();\n        this.activateScriptElements();\n    }\n    loadFrameElement() {\n        this.delegate.willRenderFrame(this.currentElement, this.newElement);\n        this.renderElement(this.currentElement, this.newElement);\n    }\n    scrollFrameIntoView() {\n        if (this.currentElement.autoscroll || this.newElement.autoscroll) {\n            const element = this.currentElement.firstElementChild;\n            const block = readScrollLogicalPosition(this.currentElement.getAttribute(\"data-autoscroll-block\"), \"end\");\n            const behavior = readScrollBehavior(this.currentElement.getAttribute(\"data-autoscroll-behavior\"), \"auto\");\n            if (element) {\n                element.scrollIntoView({ block, behavior });\n                return true;\n            }\n        }\n        return false;\n    }\n    activateScriptElements() {\n        for (const inertScriptElement of this.newScriptElements) {\n            const activatedScriptElement = activateScriptElement(inertScriptElement);\n            inertScriptElement.replaceWith(activatedScriptElement);\n        }\n    }\n    get newScriptElements() {\n        return this.currentElement.querySelectorAll(\"script\");\n    }\n}\nfunction readScrollLogicalPosition(value, defaultValue) {\n    if (value == \"end\" || value == \"start\" || value == \"center\" || value == \"nearest\") {\n        return value;\n    }\n    else {\n        return defaultValue;\n    }\n}\nfunction readScrollBehavior(value, defaultValue) {\n    if (value == \"auto\" || value == \"smooth\") {\n        return value;\n    }\n    else {\n        return defaultValue;\n    }\n}\n\nclass ProgressBar {\n    static get defaultCSS() {\n        return unindent `\n      .turbo-progress-bar {\n        position: fixed;\n        display: block;\n        top: 0;\n        left: 0;\n        height: 3px;\n        background: #0076ff;\n        z-index: 2147483647;\n        transition:\n          width ${ProgressBar.animationDuration}ms ease-out,\n          opacity ${ProgressBar.animationDuration / 2}ms ${ProgressBar.animationDuration / 2}ms ease-in;\n        transform: translate3d(0, 0, 0);\n      }\n    `;\n    }\n    constructor() {\n        this.hiding = false;\n        this.value = 0;\n        this.visible = false;\n        this.trickle = () => {\n            this.setValue(this.value + Math.random() / 100);\n        };\n        this.stylesheetElement = this.createStylesheetElement();\n        this.progressElement = this.createProgressElement();\n        this.installStylesheetElement();\n        this.setValue(0);\n    }\n    show() {\n        if (!this.visible) {\n            this.visible = true;\n            this.installProgressElement();\n            this.startTrickling();\n        }\n    }\n    hide() {\n        if (this.visible && !this.hiding) {\n            this.hiding = true;\n            this.fadeProgressElement(() => {\n                this.uninstallProgressElement();\n                this.stopTrickling();\n                this.visible = false;\n                this.hiding = false;\n            });\n        }\n    }\n    setValue(value) {\n        this.value = value;\n        this.refresh();\n    }\n    installStylesheetElement() {\n        document.head.insertBefore(this.stylesheetElement, document.head.firstChild);\n    }\n    installProgressElement() {\n        this.progressElement.style.width = \"0\";\n        this.progressElement.style.opacity = \"1\";\n        document.documentElement.insertBefore(this.progressElement, document.body);\n        this.refresh();\n    }\n    fadeProgressElement(callback) {\n        this.progressElement.style.opacity = \"0\";\n        setTimeout(callback, ProgressBar.animationDuration * 1.5);\n    }\n    uninstallProgressElement() {\n        if (this.progressElement.parentNode) {\n            document.documentElement.removeChild(this.progressElement);\n        }\n    }\n    startTrickling() {\n        if (!this.trickleInterval) {\n            this.trickleInterval = window.setInterval(this.trickle, ProgressBar.animationDuration);\n        }\n    }\n    stopTrickling() {\n        window.clearInterval(this.trickleInterval);\n        delete this.trickleInterval;\n    }\n    refresh() {\n        requestAnimationFrame(() => {\n            this.progressElement.style.width = `${10 + this.value * 90}%`;\n        });\n    }\n    createStylesheetElement() {\n        const element = document.createElement(\"style\");\n        element.type = \"text/css\";\n        element.textContent = ProgressBar.defaultCSS;\n        if (this.cspNonce) {\n            element.nonce = this.cspNonce;\n        }\n        return element;\n    }\n    createProgressElement() {\n        const element = document.createElement(\"div\");\n        element.className = \"turbo-progress-bar\";\n        return element;\n    }\n    get cspNonce() {\n        return getMetaContent(\"csp-nonce\");\n    }\n}\nProgressBar.animationDuration = 300;\n\nclass HeadSnapshot extends Snapshot {\n    constructor() {\n        super(...arguments);\n        this.detailsByOuterHTML = this.children\n            .filter((element) => !elementIsNoscript(element))\n            .map((element) => elementWithoutNonce(element))\n            .reduce((result, element) => {\n            const { outerHTML } = element;\n            const details = outerHTML in result\n                ? result[outerHTML]\n                : {\n                    type: elementType(element),\n                    tracked: elementIsTracked(element),\n                    elements: [],\n                };\n            return Object.assign(Object.assign({}, result), { [outerHTML]: Object.assign(Object.assign({}, details), { elements: [...details.elements, element] }) });\n        }, {});\n    }\n    get trackedElementSignature() {\n        return Object.keys(this.detailsByOuterHTML)\n            .filter((outerHTML) => this.detailsByOuterHTML[outerHTML].tracked)\n            .join(\"\");\n    }\n    getScriptElementsNotInSnapshot(snapshot) {\n        return this.getElementsMatchingTypeNotInSnapshot(\"script\", snapshot);\n    }\n    getStylesheetElementsNotInSnapshot(snapshot) {\n        return this.getElementsMatchingTypeNotInSnapshot(\"stylesheet\", snapshot);\n    }\n    getElementsMatchingTypeNotInSnapshot(matchedType, snapshot) {\n        return Object.keys(this.detailsByOuterHTML)\n            .filter((outerHTML) => !(outerHTML in snapshot.detailsByOuterHTML))\n            .map((outerHTML) => this.detailsByOuterHTML[outerHTML])\n            .filter(({ type }) => type == matchedType)\n            .map(({ elements: [element] }) => element);\n    }\n    get provisionalElements() {\n        return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n            const { type, tracked, elements } = this.detailsByOuterHTML[outerHTML];\n            if (type == null && !tracked) {\n                return [...result, ...elements];\n            }\n            else if (elements.length > 1) {\n                return [...result, ...elements.slice(1)];\n            }\n            else {\n                return result;\n            }\n        }, []);\n    }\n    getMetaValue(name) {\n        const element = this.findMetaElementByName(name);\n        return element ? element.getAttribute(\"content\") : null;\n    }\n    findMetaElementByName(name) {\n        return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n            const { elements: [element], } = this.detailsByOuterHTML[outerHTML];\n            return elementIsMetaElementWithName(element, name) ? element : result;\n        }, undefined);\n    }\n}\nfunction elementType(element) {\n    if (elementIsScript(element)) {\n        return \"script\";\n    }\n    else if (elementIsStylesheet(element)) {\n        return \"stylesheet\";\n    }\n}\nfunction elementIsTracked(element) {\n    return element.getAttribute(\"data-turbo-track\") == \"reload\";\n}\nfunction elementIsScript(element) {\n    const tagName = element.localName;\n    return tagName == \"script\";\n}\nfunction elementIsNoscript(element) {\n    const tagName = element.localName;\n    return tagName == \"noscript\";\n}\nfunction elementIsStylesheet(element) {\n    const tagName = element.localName;\n    return tagName == \"style\" || (tagName == \"link\" && element.getAttribute(\"rel\") == \"stylesheet\");\n}\nfunction elementIsMetaElementWithName(element, name) {\n    const tagName = element.localName;\n    return tagName == \"meta\" && element.getAttribute(\"name\") == name;\n}\nfunction elementWithoutNonce(element) {\n    if (element.hasAttribute(\"nonce\")) {\n        element.setAttribute(\"nonce\", \"\");\n    }\n    return element;\n}\n\nclass PageSnapshot extends Snapshot {\n    static fromHTMLString(html = \"\") {\n        return this.fromDocument(parseHTMLDocument(html));\n    }\n    static fromElement(element) {\n        return this.fromDocument(element.ownerDocument);\n    }\n    static fromDocument({ head, body }) {\n        return new this(body, new HeadSnapshot(head));\n    }\n    constructor(element, headSnapshot) {\n        super(element);\n        this.headSnapshot = headSnapshot;\n    }\n    clone() {\n        const clonedElement = this.element.cloneNode(true);\n        const selectElements = this.element.querySelectorAll(\"select\");\n        const clonedSelectElements = clonedElement.querySelectorAll(\"select\");\n        for (const [index, source] of selectElements.entries()) {\n            const clone = clonedSelectElements[index];\n            for (const option of clone.selectedOptions)\n                option.selected = false;\n            for (const option of source.selectedOptions)\n                clone.options[option.index].selected = true;\n        }\n        for (const clonedPasswordInput of clonedElement.querySelectorAll('input[type=\"password\"]')) {\n            clonedPasswordInput.value = \"\";\n        }\n        return new PageSnapshot(clonedElement, this.headSnapshot);\n    }\n    get headElement() {\n        return this.headSnapshot.element;\n    }\n    get rootLocation() {\n        var _a;\n        const root = (_a = this.getSetting(\"root\")) !== null && _a !== void 0 ? _a : \"/\";\n        return expandURL(root);\n    }\n    get cacheControlValue() {\n        return this.getSetting(\"cache-control\");\n    }\n    get isPreviewable() {\n        return this.cacheControlValue != \"no-preview\";\n    }\n    get isCacheable() {\n        return this.cacheControlValue != \"no-cache\";\n    }\n    get isVisitable() {\n        return this.getSetting(\"visit-control\") != \"reload\";\n    }\n    getSetting(name) {\n        return this.headSnapshot.getMetaValue(`turbo-${name}`);\n    }\n}\n\nvar TimingMetric;\n(function (TimingMetric) {\n    TimingMetric[\"visitStart\"] = \"visitStart\";\n    TimingMetric[\"requestStart\"] = \"requestStart\";\n    TimingMetric[\"requestEnd\"] = \"requestEnd\";\n    TimingMetric[\"visitEnd\"] = \"visitEnd\";\n})(TimingMetric || (TimingMetric = {}));\nvar VisitState;\n(function (VisitState) {\n    VisitState[\"initialized\"] = \"initialized\";\n    VisitState[\"started\"] = \"started\";\n    VisitState[\"canceled\"] = \"canceled\";\n    VisitState[\"failed\"] = \"failed\";\n    VisitState[\"completed\"] = \"completed\";\n})(VisitState || (VisitState = {}));\nconst defaultOptions = {\n    action: \"advance\",\n    historyChanged: false,\n    visitCachedSnapshot: () => { },\n    willRender: true,\n    updateHistory: true,\n    shouldCacheSnapshot: true,\n    acceptsStreamResponse: false,\n};\nvar SystemStatusCode;\n(function (SystemStatusCode) {\n    SystemStatusCode[SystemStatusCode[\"networkFailure\"] = 0] = \"networkFailure\";\n    SystemStatusCode[SystemStatusCode[\"timeoutFailure\"] = -1] = \"timeoutFailure\";\n    SystemStatusCode[SystemStatusCode[\"contentTypeMismatch\"] = -2] = \"contentTypeMismatch\";\n})(SystemStatusCode || (SystemStatusCode = {}));\nclass Visit {\n    constructor(delegate, location, restorationIdentifier, options = {}) {\n        this.identifier = uuid();\n        this.timingMetrics = {};\n        this.followedRedirect = false;\n        this.historyChanged = false;\n        this.scrolled = false;\n        this.shouldCacheSnapshot = true;\n        this.acceptsStreamResponse = false;\n        this.snapshotCached = false;\n        this.state = VisitState.initialized;\n        this.delegate = delegate;\n        this.location = location;\n        this.restorationIdentifier = restorationIdentifier || uuid();\n        const { action, historyChanged, referrer, snapshot, snapshotHTML, response, visitCachedSnapshot, willRender, updateHistory, shouldCacheSnapshot, acceptsStreamResponse, } = Object.assign(Object.assign({}, defaultOptions), options);\n        this.action = action;\n        this.historyChanged = historyChanged;\n        this.referrer = referrer;\n        this.snapshot = snapshot;\n        this.snapshotHTML = snapshotHTML;\n        this.response = response;\n        this.isSamePage = this.delegate.locationWithActionIsSamePage(this.location, this.action);\n        this.visitCachedSnapshot = visitCachedSnapshot;\n        this.willRender = willRender;\n        this.updateHistory = updateHistory;\n        this.scrolled = !willRender;\n        this.shouldCacheSnapshot = shouldCacheSnapshot;\n        this.acceptsStreamResponse = acceptsStreamResponse;\n    }\n    get adapter() {\n        return this.delegate.adapter;\n    }\n    get view() {\n        return this.delegate.view;\n    }\n    get history() {\n        return this.delegate.history;\n    }\n    get restorationData() {\n        return this.history.getRestorationDataForIdentifier(this.restorationIdentifier);\n    }\n    get silent() {\n        return this.isSamePage;\n    }\n    start() {\n        if (this.state == VisitState.initialized) {\n            this.recordTimingMetric(TimingMetric.visitStart);\n            this.state = VisitState.started;\n            this.adapter.visitStarted(this);\n            this.delegate.visitStarted(this);\n        }\n    }\n    cancel() {\n        if (this.state == VisitState.started) {\n            if (this.request) {\n                this.request.cancel();\n            }\n            this.cancelRender();\n            this.state = VisitState.canceled;\n        }\n    }\n    complete() {\n        if (this.state == VisitState.started) {\n            this.recordTimingMetric(TimingMetric.visitEnd);\n            this.state = VisitState.completed;\n            this.followRedirect();\n            if (!this.followedRedirect) {\n                this.adapter.visitCompleted(this);\n                this.delegate.visitCompleted(this);\n            }\n        }\n    }\n    fail() {\n        if (this.state == VisitState.started) {\n            this.state = VisitState.failed;\n            this.adapter.visitFailed(this);\n        }\n    }\n    changeHistory() {\n        var _a;\n        if (!this.historyChanged && this.updateHistory) {\n            const actionForHistory = this.location.href === ((_a = this.referrer) === null || _a === void 0 ? void 0 : _a.href) ? \"replace\" : this.action;\n            const method = getHistoryMethodForAction(actionForHistory);\n            this.history.update(method, this.location, this.restorationIdentifier);\n            this.historyChanged = true;\n        }\n    }\n    issueRequest() {\n        if (this.hasPreloadedResponse()) {\n            this.simulateRequest();\n        }\n        else if (this.shouldIssueRequest() && !this.request) {\n            this.request = new FetchRequest(this, FetchMethod.get, this.location);\n            this.request.perform();\n        }\n    }\n    simulateRequest() {\n        if (this.response) {\n            this.startRequest();\n            this.recordResponse();\n            this.finishRequest();\n        }\n    }\n    startRequest() {\n        this.recordTimingMetric(TimingMetric.requestStart);\n        this.adapter.visitRequestStarted(this);\n    }\n    recordResponse(response = this.response) {\n        this.response = response;\n        if (response) {\n            const { statusCode } = response;\n            if (isSuccessful(statusCode)) {\n                this.adapter.visitRequestCompleted(this);\n            }\n            else {\n                this.adapter.visitRequestFailedWithStatusCode(this, statusCode);\n            }\n        }\n    }\n    finishRequest() {\n        this.recordTimingMetric(TimingMetric.requestEnd);\n        this.adapter.visitRequestFinished(this);\n    }\n    loadResponse() {\n        if (this.response) {\n            const { statusCode, responseHTML } = this.response;\n            this.render(async () => {\n                if (this.shouldCacheSnapshot)\n                    this.cacheSnapshot();\n                if (this.view.renderPromise)\n                    await this.view.renderPromise;\n                if (isSuccessful(statusCode) && responseHTML != null) {\n                    await this.view.renderPage(PageSnapshot.fromHTMLString(responseHTML), false, this.willRender, this);\n                    this.performScroll();\n                    this.adapter.visitRendered(this);\n                    this.complete();\n                }\n                else {\n                    await this.view.renderError(PageSnapshot.fromHTMLString(responseHTML), this);\n                    this.adapter.visitRendered(this);\n                    this.fail();\n                }\n            });\n        }\n    }\n    getCachedSnapshot() {\n        const snapshot = this.view.getCachedSnapshotForLocation(this.location) || this.getPreloadedSnapshot();\n        if (snapshot && (!getAnchor(this.location) || snapshot.hasAnchor(getAnchor(this.location)))) {\n            if (this.action == \"restore\" || snapshot.isPreviewable) {\n                return snapshot;\n            }\n        }\n    }\n    getPreloadedSnapshot() {\n        if (this.snapshotHTML) {\n            return PageSnapshot.fromHTMLString(this.snapshotHTML);\n        }\n    }\n    hasCachedSnapshot() {\n        return this.getCachedSnapshot() != null;\n    }\n    loadCachedSnapshot() {\n        const snapshot = this.getCachedSnapshot();\n        if (snapshot) {\n            const isPreview = this.shouldIssueRequest();\n            this.render(async () => {\n                this.cacheSnapshot();\n                if (this.isSamePage) {\n                    this.adapter.visitRendered(this);\n                }\n                else {\n                    if (this.view.renderPromise)\n                        await this.view.renderPromise;\n                    await this.view.renderPage(snapshot, isPreview, this.willRender, this);\n                    this.performScroll();\n                    this.adapter.visitRendered(this);\n                    if (!isPreview) {\n                        this.complete();\n                    }\n                }\n            });\n        }\n    }\n    followRedirect() {\n        var _a;\n        if (this.redirectedToLocation && !this.followedRedirect && ((_a = this.response) === null || _a === void 0 ? void 0 : _a.redirected)) {\n            this.adapter.visitProposedToLocation(this.redirectedToLocation, {\n                action: \"replace\",\n                response: this.response,\n                shouldCacheSnapshot: false,\n                willRender: false,\n            });\n            this.followedRedirect = true;\n        }\n    }\n    goToSamePageAnchor() {\n        if (this.isSamePage) {\n            this.render(async () => {\n                this.cacheSnapshot();\n                this.performScroll();\n                this.changeHistory();\n                this.adapter.visitRendered(this);\n            });\n        }\n    }\n    prepareRequest(request) {\n        if (this.acceptsStreamResponse) {\n            request.acceptResponseType(StreamMessage.contentType);\n        }\n    }\n    requestStarted() {\n        this.startRequest();\n    }\n    requestPreventedHandlingResponse(_request, _response) { }\n    async requestSucceededWithResponse(request, response) {\n        const responseHTML = await response.responseHTML;\n        const { redirected, statusCode } = response;\n        if (responseHTML == undefined) {\n            this.recordResponse({\n                statusCode: SystemStatusCode.contentTypeMismatch,\n                redirected,\n            });\n        }\n        else {\n            this.redirectedToLocation = response.redirected ? response.location : undefined;\n            this.recordResponse({ statusCode: statusCode, responseHTML, redirected });\n        }\n    }\n    async requestFailedWithResponse(request, response) {\n        const responseHTML = await response.responseHTML;\n        const { redirected, statusCode } = response;\n        if (responseHTML == undefined) {\n            this.recordResponse({\n                statusCode: SystemStatusCode.contentTypeMismatch,\n                redirected,\n            });\n        }\n        else {\n            this.recordResponse({ statusCode: statusCode, responseHTML, redirected });\n        }\n    }\n    requestErrored(_request, _error) {\n        this.recordResponse({\n            statusCode: SystemStatusCode.networkFailure,\n            redirected: false,\n        });\n    }\n    requestFinished() {\n        this.finishRequest();\n    }\n    performScroll() {\n        if (!this.scrolled && !this.view.forceReloaded) {\n            if (this.action == \"restore\") {\n                this.scrollToRestoredPosition() || this.scrollToAnchor() || this.view.scrollToTop();\n            }\n            else {\n                this.scrollToAnchor() || this.view.scrollToTop();\n            }\n            if (this.isSamePage) {\n                this.delegate.visitScrolledToSamePageLocation(this.view.lastRenderedLocation, this.location);\n            }\n            this.scrolled = true;\n        }\n    }\n    scrollToRestoredPosition() {\n        const { scrollPosition } = this.restorationData;\n        if (scrollPosition) {\n            this.view.scrollToPosition(scrollPosition);\n            return true;\n        }\n    }\n    scrollToAnchor() {\n        const anchor = getAnchor(this.location);\n        if (anchor != null) {\n            this.view.scrollToAnchor(anchor);\n            return true;\n        }\n    }\n    recordTimingMetric(metric) {\n        this.timingMetrics[metric] = new Date().getTime();\n    }\n    getTimingMetrics() {\n        return Object.assign({}, this.timingMetrics);\n    }\n    getHistoryMethodForAction(action) {\n        switch (action) {\n            case \"replace\":\n                return history.replaceState;\n            case \"advance\":\n            case \"restore\":\n                return history.pushState;\n        }\n    }\n    hasPreloadedResponse() {\n        return typeof this.response == \"object\";\n    }\n    shouldIssueRequest() {\n        if (this.isSamePage) {\n            return false;\n        }\n        else if (this.action == \"restore\") {\n            return !this.hasCachedSnapshot();\n        }\n        else {\n            return this.willRender;\n        }\n    }\n    cacheSnapshot() {\n        if (!this.snapshotCached) {\n            this.view.cacheSnapshot(this.snapshot).then((snapshot) => snapshot && this.visitCachedSnapshot(snapshot));\n            this.snapshotCached = true;\n        }\n    }\n    async render(callback) {\n        this.cancelRender();\n        await new Promise((resolve) => {\n            this.frame = requestAnimationFrame(() => resolve());\n        });\n        await callback();\n        delete this.frame;\n    }\n    cancelRender() {\n        if (this.frame) {\n            cancelAnimationFrame(this.frame);\n            delete this.frame;\n        }\n    }\n}\nfunction isSuccessful(statusCode) {\n    return statusCode >= 200 && statusCode < 300;\n}\n\nclass BrowserAdapter {\n    constructor(session) {\n        this.progressBar = new ProgressBar();\n        this.showProgressBar = () => {\n            this.progressBar.show();\n        };\n        this.session = session;\n    }\n    visitProposedToLocation(location, options) {\n        this.navigator.startVisit(location, (options === null || options === void 0 ? void 0 : options.restorationIdentifier) || uuid(), options);\n    }\n    visitStarted(visit) {\n        this.location = visit.location;\n        visit.loadCachedSnapshot();\n        visit.issueRequest();\n        visit.goToSamePageAnchor();\n    }\n    visitRequestStarted(visit) {\n        this.progressBar.setValue(0);\n        if (visit.hasCachedSnapshot() || visit.action != \"restore\") {\n            this.showVisitProgressBarAfterDelay();\n        }\n        else {\n            this.showProgressBar();\n        }\n    }\n    visitRequestCompleted(visit) {\n        visit.loadResponse();\n    }\n    visitRequestFailedWithStatusCode(visit, statusCode) {\n        switch (statusCode) {\n            case SystemStatusCode.networkFailure:\n            case SystemStatusCode.timeoutFailure:\n            case SystemStatusCode.contentTypeMismatch:\n                return this.reload({\n                    reason: \"request_failed\",\n                    context: {\n                        statusCode,\n                    },\n                });\n            default:\n                return visit.loadResponse();\n        }\n    }\n    visitRequestFinished(_visit) {\n        this.progressBar.setValue(1);\n        this.hideVisitProgressBar();\n    }\n    visitCompleted(_visit) { }\n    pageInvalidated(reason) {\n        this.reload(reason);\n    }\n    visitFailed(_visit) { }\n    visitRendered(_visit) { }\n    formSubmissionStarted(_formSubmission) {\n        this.progressBar.setValue(0);\n        this.showFormProgressBarAfterDelay();\n    }\n    formSubmissionFinished(_formSubmission) {\n        this.progressBar.setValue(1);\n        this.hideFormProgressBar();\n    }\n    showVisitProgressBarAfterDelay() {\n        this.visitProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n    }\n    hideVisitProgressBar() {\n        this.progressBar.hide();\n        if (this.visitProgressBarTimeout != null) {\n            window.clearTimeout(this.visitProgressBarTimeout);\n            delete this.visitProgressBarTimeout;\n        }\n    }\n    showFormProgressBarAfterDelay() {\n        if (this.formProgressBarTimeout == null) {\n            this.formProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n        }\n    }\n    hideFormProgressBar() {\n        this.progressBar.hide();\n        if (this.formProgressBarTimeout != null) {\n            window.clearTimeout(this.formProgressBarTimeout);\n            delete this.formProgressBarTimeout;\n        }\n    }\n    reload(reason) {\n        var _a;\n        dispatch(\"turbo:reload\", { detail: reason });\n        window.location.href = ((_a = this.location) === null || _a === void 0 ? void 0 : _a.toString()) || window.location.href;\n    }\n    get navigator() {\n        return this.session.navigator;\n    }\n}\n\nclass CacheObserver {\n    constructor() {\n        this.selector = \"[data-turbo-temporary]\";\n        this.deprecatedSelector = \"[data-turbo-cache=false]\";\n        this.started = false;\n        this.removeTemporaryElements = ((_event) => {\n            for (const element of this.temporaryElements) {\n                element.remove();\n            }\n        });\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            addEventListener(\"turbo:before-cache\", this.removeTemporaryElements, false);\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.started = false;\n            removeEventListener(\"turbo:before-cache\", this.removeTemporaryElements, false);\n        }\n    }\n    get temporaryElements() {\n        return [...document.querySelectorAll(this.selector), ...this.temporaryElementsWithDeprecation];\n    }\n    get temporaryElementsWithDeprecation() {\n        const elements = document.querySelectorAll(this.deprecatedSelector);\n        if (elements.length) {\n            console.warn(`The ${this.deprecatedSelector} selector is deprecated and will be removed in a future version. Use ${this.selector} instead.`);\n        }\n        return [...elements];\n    }\n}\n\nclass FrameRedirector {\n    constructor(session, element) {\n        this.session = session;\n        this.element = element;\n        this.linkInterceptor = new LinkInterceptor(this, element);\n        this.formSubmitObserver = new FormSubmitObserver(this, element);\n    }\n    start() {\n        this.linkInterceptor.start();\n        this.formSubmitObserver.start();\n    }\n    stop() {\n        this.linkInterceptor.stop();\n        this.formSubmitObserver.stop();\n    }\n    shouldInterceptLinkClick(element, _location, _event) {\n        return this.shouldRedirect(element);\n    }\n    linkClickIntercepted(element, url, event) {\n        const frame = this.findFrameElement(element);\n        if (frame) {\n            frame.delegate.linkClickIntercepted(element, url, event);\n        }\n    }\n    willSubmitForm(element, submitter) {\n        return (element.closest(\"turbo-frame\") == null &&\n            this.shouldSubmit(element, submitter) &&\n            this.shouldRedirect(element, submitter));\n    }\n    formSubmitted(element, submitter) {\n        const frame = this.findFrameElement(element, submitter);\n        if (frame) {\n            frame.delegate.formSubmitted(element, submitter);\n        }\n    }\n    shouldSubmit(form, submitter) {\n        var _a;\n        const action = getAction(form, submitter);\n        const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n        const rootLocation = expandURL((_a = meta === null || meta === void 0 ? void 0 : meta.content) !== null && _a !== void 0 ? _a : \"/\");\n        return this.shouldRedirect(form, submitter) && locationIsVisitable(action, rootLocation);\n    }\n    shouldRedirect(element, submitter) {\n        const isNavigatable = element instanceof HTMLFormElement\n            ? this.session.submissionIsNavigatable(element, submitter)\n            : this.session.elementIsNavigatable(element);\n        if (isNavigatable) {\n            const frame = this.findFrameElement(element, submitter);\n            return frame ? frame != element.closest(\"turbo-frame\") : false;\n        }\n        else {\n            return false;\n        }\n    }\n    findFrameElement(element, submitter) {\n        const id = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"data-turbo-frame\")) || element.getAttribute(\"data-turbo-frame\");\n        if (id && id != \"_top\") {\n            const frame = this.element.querySelector(`#${id}:not([disabled])`);\n            if (frame instanceof FrameElement) {\n                return frame;\n            }\n        }\n    }\n}\n\nclass History {\n    constructor(delegate) {\n        this.restorationIdentifier = uuid();\n        this.restorationData = {};\n        this.started = false;\n        this.pageLoaded = false;\n        this.onPopState = (event) => {\n            if (this.shouldHandlePopState()) {\n                const { turbo } = event.state || {};\n                if (turbo) {\n                    this.location = new URL(window.location.href);\n                    const { restorationIdentifier } = turbo;\n                    this.restorationIdentifier = restorationIdentifier;\n                    this.delegate.historyPoppedToLocationWithRestorationIdentifier(this.location, restorationIdentifier);\n                }\n            }\n        };\n        this.onPageLoad = async (_event) => {\n            await nextMicrotask();\n            this.pageLoaded = true;\n        };\n        this.delegate = delegate;\n    }\n    start() {\n        if (!this.started) {\n            addEventListener(\"popstate\", this.onPopState, false);\n            addEventListener(\"load\", this.onPageLoad, false);\n            this.started = true;\n            this.replace(new URL(window.location.href));\n        }\n    }\n    stop() {\n        if (this.started) {\n            removeEventListener(\"popstate\", this.onPopState, false);\n            removeEventListener(\"load\", this.onPageLoad, false);\n            this.started = false;\n        }\n    }\n    push(location, restorationIdentifier) {\n        this.update(history.pushState, location, restorationIdentifier);\n    }\n    replace(location, restorationIdentifier) {\n        this.update(history.replaceState, location, restorationIdentifier);\n    }\n    update(method, location, restorationIdentifier = uuid()) {\n        const state = { turbo: { restorationIdentifier } };\n        method.call(history, state, \"\", location.href);\n        this.location = location;\n        this.restorationIdentifier = restorationIdentifier;\n    }\n    getRestorationDataForIdentifier(restorationIdentifier) {\n        return this.restorationData[restorationIdentifier] || {};\n    }\n    updateRestorationData(additionalData) {\n        const { restorationIdentifier } = this;\n        const restorationData = this.restorationData[restorationIdentifier];\n        this.restorationData[restorationIdentifier] = Object.assign(Object.assign({}, restorationData), additionalData);\n    }\n    assumeControlOfScrollRestoration() {\n        var _a;\n        if (!this.previousScrollRestoration) {\n            this.previousScrollRestoration = (_a = history.scrollRestoration) !== null && _a !== void 0 ? _a : \"auto\";\n            history.scrollRestoration = \"manual\";\n        }\n    }\n    relinquishControlOfScrollRestoration() {\n        if (this.previousScrollRestoration) {\n            history.scrollRestoration = this.previousScrollRestoration;\n            delete this.previousScrollRestoration;\n        }\n    }\n    shouldHandlePopState() {\n        return this.pageIsLoaded();\n    }\n    pageIsLoaded() {\n        return this.pageLoaded || document.readyState == \"complete\";\n    }\n}\n\nclass Navigator {\n    constructor(delegate) {\n        this.delegate = delegate;\n    }\n    proposeVisit(location, options = {}) {\n        if (this.delegate.allowsVisitingLocationWithAction(location, options.action)) {\n            if (locationIsVisitable(location, this.view.snapshot.rootLocation)) {\n                this.delegate.visitProposedToLocation(location, options);\n            }\n            else {\n                window.location.href = location.toString();\n            }\n        }\n    }\n    startVisit(locatable, restorationIdentifier, options = {}) {\n        this.stop();\n        this.currentVisit = new Visit(this, expandURL(locatable), restorationIdentifier, Object.assign({ referrer: this.location }, options));\n        this.currentVisit.start();\n    }\n    submitForm(form, submitter) {\n        this.stop();\n        this.formSubmission = new FormSubmission(this, form, submitter, true);\n        this.formSubmission.start();\n    }\n    stop() {\n        if (this.formSubmission) {\n            this.formSubmission.stop();\n            delete this.formSubmission;\n        }\n        if (this.currentVisit) {\n            this.currentVisit.cancel();\n            delete this.currentVisit;\n        }\n    }\n    get adapter() {\n        return this.delegate.adapter;\n    }\n    get view() {\n        return this.delegate.view;\n    }\n    get history() {\n        return this.delegate.history;\n    }\n    formSubmissionStarted(formSubmission) {\n        if (typeof this.adapter.formSubmissionStarted === \"function\") {\n            this.adapter.formSubmissionStarted(formSubmission);\n        }\n    }\n    async formSubmissionSucceededWithResponse(formSubmission, fetchResponse) {\n        if (formSubmission == this.formSubmission) {\n            const responseHTML = await fetchResponse.responseHTML;\n            if (responseHTML) {\n                const shouldCacheSnapshot = formSubmission.isSafe;\n                if (!shouldCacheSnapshot) {\n                    this.view.clearSnapshotCache();\n                }\n                const { statusCode, redirected } = fetchResponse;\n                const action = this.getActionForFormSubmission(formSubmission);\n                const visitOptions = {\n                    action,\n                    shouldCacheSnapshot,\n                    response: { statusCode, responseHTML, redirected },\n                };\n                this.proposeVisit(fetchResponse.location, visitOptions);\n            }\n        }\n    }\n    async formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n        const responseHTML = await fetchResponse.responseHTML;\n        if (responseHTML) {\n            const snapshot = PageSnapshot.fromHTMLString(responseHTML);\n            if (fetchResponse.serverError) {\n                await this.view.renderError(snapshot, this.currentVisit);\n            }\n            else {\n                await this.view.renderPage(snapshot, false, true, this.currentVisit);\n            }\n            this.view.scrollToTop();\n            this.view.clearSnapshotCache();\n        }\n    }\n    formSubmissionErrored(formSubmission, error) {\n        console.error(error);\n    }\n    formSubmissionFinished(formSubmission) {\n        if (typeof this.adapter.formSubmissionFinished === \"function\") {\n            this.adapter.formSubmissionFinished(formSubmission);\n        }\n    }\n    visitStarted(visit) {\n        this.delegate.visitStarted(visit);\n    }\n    visitCompleted(visit) {\n        this.delegate.visitCompleted(visit);\n    }\n    locationWithActionIsSamePage(location, action) {\n        const anchor = getAnchor(location);\n        const currentAnchor = getAnchor(this.view.lastRenderedLocation);\n        const isRestorationToTop = action === \"restore\" && typeof anchor === \"undefined\";\n        return (action !== \"replace\" &&\n            getRequestURL(location) === getRequestURL(this.view.lastRenderedLocation) &&\n            (isRestorationToTop || (anchor != null && anchor !== currentAnchor)));\n    }\n    visitScrolledToSamePageLocation(oldURL, newURL) {\n        this.delegate.visitScrolledToSamePageLocation(oldURL, newURL);\n    }\n    get location() {\n        return this.history.location;\n    }\n    get restorationIdentifier() {\n        return this.history.restorationIdentifier;\n    }\n    getActionForFormSubmission({ submitter, formElement }) {\n        return getVisitAction(submitter, formElement) || \"advance\";\n    }\n}\n\nvar PageStage;\n(function (PageStage) {\n    PageStage[PageStage[\"initial\"] = 0] = \"initial\";\n    PageStage[PageStage[\"loading\"] = 1] = \"loading\";\n    PageStage[PageStage[\"interactive\"] = 2] = \"interactive\";\n    PageStage[PageStage[\"complete\"] = 3] = \"complete\";\n})(PageStage || (PageStage = {}));\nclass PageObserver {\n    constructor(delegate) {\n        this.stage = PageStage.initial;\n        this.started = false;\n        this.interpretReadyState = () => {\n            const { readyState } = this;\n            if (readyState == \"interactive\") {\n                this.pageIsInteractive();\n            }\n            else if (readyState == \"complete\") {\n                this.pageIsComplete();\n            }\n        };\n        this.pageWillUnload = () => {\n            this.delegate.pageWillUnload();\n        };\n        this.delegate = delegate;\n    }\n    start() {\n        if (!this.started) {\n            if (this.stage == PageStage.initial) {\n                this.stage = PageStage.loading;\n            }\n            document.addEventListener(\"readystatechange\", this.interpretReadyState, false);\n            addEventListener(\"pagehide\", this.pageWillUnload, false);\n            this.started = true;\n        }\n    }\n    stop() {\n        if (this.started) {\n            document.removeEventListener(\"readystatechange\", this.interpretReadyState, false);\n            removeEventListener(\"pagehide\", this.pageWillUnload, false);\n            this.started = false;\n        }\n    }\n    pageIsInteractive() {\n        if (this.stage == PageStage.loading) {\n            this.stage = PageStage.interactive;\n            this.delegate.pageBecameInteractive();\n        }\n    }\n    pageIsComplete() {\n        this.pageIsInteractive();\n        if (this.stage == PageStage.interactive) {\n            this.stage = PageStage.complete;\n            this.delegate.pageLoaded();\n        }\n    }\n    get readyState() {\n        return document.readyState;\n    }\n}\n\nclass ScrollObserver {\n    constructor(delegate) {\n        this.started = false;\n        this.onScroll = () => {\n            this.updatePosition({ x: window.pageXOffset, y: window.pageYOffset });\n        };\n        this.delegate = delegate;\n    }\n    start() {\n        if (!this.started) {\n            addEventListener(\"scroll\", this.onScroll, false);\n            this.onScroll();\n            this.started = true;\n        }\n    }\n    stop() {\n        if (this.started) {\n            removeEventListener(\"scroll\", this.onScroll, false);\n            this.started = false;\n        }\n    }\n    updatePosition(position) {\n        this.delegate.scrollPositionChanged(position);\n    }\n}\n\nclass StreamMessageRenderer {\n    render({ fragment }) {\n        Bardo.preservingPermanentElements(this, getPermanentElementMapForFragment(fragment), () => document.documentElement.appendChild(fragment));\n    }\n    enteringBardo(currentPermanentElement, newPermanentElement) {\n        newPermanentElement.replaceWith(currentPermanentElement.cloneNode(true));\n    }\n    leavingBardo() { }\n}\nfunction getPermanentElementMapForFragment(fragment) {\n    const permanentElementsInDocument = queryPermanentElementsAll(document.documentElement);\n    const permanentElementMap = {};\n    for (const permanentElementInDocument of permanentElementsInDocument) {\n        const { id } = permanentElementInDocument;\n        for (const streamElement of fragment.querySelectorAll(\"turbo-stream\")) {\n            const elementInStream = getPermanentElementById(streamElement.templateElement.content, id);\n            if (elementInStream) {\n                permanentElementMap[id] = [permanentElementInDocument, elementInStream];\n            }\n        }\n    }\n    return permanentElementMap;\n}\n\nclass StreamObserver {\n    constructor(delegate) {\n        this.sources = new Set();\n        this.started = false;\n        this.inspectFetchResponse = ((event) => {\n            const response = fetchResponseFromEvent(event);\n            if (response && fetchResponseIsStream(response)) {\n                event.preventDefault();\n                this.receiveMessageResponse(response);\n            }\n        });\n        this.receiveMessageEvent = (event) => {\n            if (this.started && typeof event.data == \"string\") {\n                this.receiveMessageHTML(event.data);\n            }\n        };\n        this.delegate = delegate;\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            addEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.started = false;\n            removeEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n        }\n    }\n    connectStreamSource(source) {\n        if (!this.streamSourceIsConnected(source)) {\n            this.sources.add(source);\n            source.addEventListener(\"message\", this.receiveMessageEvent, false);\n        }\n    }\n    disconnectStreamSource(source) {\n        if (this.streamSourceIsConnected(source)) {\n            this.sources.delete(source);\n            source.removeEventListener(\"message\", this.receiveMessageEvent, false);\n        }\n    }\n    streamSourceIsConnected(source) {\n        return this.sources.has(source);\n    }\n    async receiveMessageResponse(response) {\n        const html = await response.responseHTML;\n        if (html) {\n            this.receiveMessageHTML(html);\n        }\n    }\n    receiveMessageHTML(html) {\n        this.delegate.receivedMessageFromStream(StreamMessage.wrap(html));\n    }\n}\nfunction fetchResponseFromEvent(event) {\n    var _a;\n    const fetchResponse = (_a = event.detail) === null || _a === void 0 ? void 0 : _a.fetchResponse;\n    if (fetchResponse instanceof FetchResponse) {\n        return fetchResponse;\n    }\n}\nfunction fetchResponseIsStream(response) {\n    var _a;\n    const contentType = (_a = response.contentType) !== null && _a !== void 0 ? _a : \"\";\n    return contentType.startsWith(StreamMessage.contentType);\n}\n\nclass ErrorRenderer extends Renderer {\n    static renderElement(currentElement, newElement) {\n        const { documentElement, body } = document;\n        documentElement.replaceChild(newElement, body);\n    }\n    async render() {\n        this.replaceHeadAndBody();\n        this.activateScriptElements();\n    }\n    replaceHeadAndBody() {\n        const { documentElement, head } = document;\n        documentElement.replaceChild(this.newHead, head);\n        this.renderElement(this.currentElement, this.newElement);\n    }\n    activateScriptElements() {\n        for (const replaceableElement of this.scriptElements) {\n            const parentNode = replaceableElement.parentNode;\n            if (parentNode) {\n                const element = activateScriptElement(replaceableElement);\n                parentNode.replaceChild(element, replaceableElement);\n            }\n        }\n    }\n    get newHead() {\n        return this.newSnapshot.headSnapshot.element;\n    }\n    get scriptElements() {\n        return document.documentElement.querySelectorAll(\"script\");\n    }\n}\n\nclass PageRenderer extends Renderer {\n    static renderElement(currentElement, newElement) {\n        if (document.body && newElement instanceof HTMLBodyElement) {\n            document.body.replaceWith(newElement);\n        }\n        else {\n            document.documentElement.appendChild(newElement);\n        }\n    }\n    get shouldRender() {\n        return this.newSnapshot.isVisitable && this.trackedElementsAreIdentical;\n    }\n    get reloadReason() {\n        if (!this.newSnapshot.isVisitable) {\n            return {\n                reason: \"turbo_visit_control_is_reload\",\n            };\n        }\n        if (!this.trackedElementsAreIdentical) {\n            return {\n                reason: \"tracked_element_mismatch\",\n            };\n        }\n    }\n    async prepareToRender() {\n        await this.mergeHead();\n    }\n    async render() {\n        if (this.willRender) {\n            await this.replaceBody();\n        }\n    }\n    finishRendering() {\n        super.finishRendering();\n        if (!this.isPreview) {\n            this.focusFirstAutofocusableElement();\n        }\n    }\n    get currentHeadSnapshot() {\n        return this.currentSnapshot.headSnapshot;\n    }\n    get newHeadSnapshot() {\n        return this.newSnapshot.headSnapshot;\n    }\n    get newElement() {\n        return this.newSnapshot.element;\n    }\n    async mergeHead() {\n        const mergedHeadElements = this.mergeProvisionalElements();\n        const newStylesheetElements = this.copyNewHeadStylesheetElements();\n        this.copyNewHeadScriptElements();\n        await mergedHeadElements;\n        await newStylesheetElements;\n    }\n    async replaceBody() {\n        await this.preservingPermanentElements(async () => {\n            this.activateNewBody();\n            await this.assignNewBody();\n        });\n    }\n    get trackedElementsAreIdentical() {\n        return this.currentHeadSnapshot.trackedElementSignature == this.newHeadSnapshot.trackedElementSignature;\n    }\n    async copyNewHeadStylesheetElements() {\n        const loadingElements = [];\n        for (const element of this.newHeadStylesheetElements) {\n            loadingElements.push(waitForLoad(element));\n            document.head.appendChild(element);\n        }\n        await Promise.all(loadingElements);\n    }\n    copyNewHeadScriptElements() {\n        for (const element of this.newHeadScriptElements) {\n            document.head.appendChild(activateScriptElement(element));\n        }\n    }\n    async mergeProvisionalElements() {\n        const newHeadElements = [...this.newHeadProvisionalElements];\n        for (const element of this.currentHeadProvisionalElements) {\n            if (!this.isCurrentElementInElementList(element, newHeadElements)) {\n                document.head.removeChild(element);\n            }\n        }\n        for (const element of newHeadElements) {\n            document.head.appendChild(element);\n        }\n    }\n    isCurrentElementInElementList(element, elementList) {\n        for (const [index, newElement] of elementList.entries()) {\n            if (element.tagName == \"TITLE\") {\n                if (newElement.tagName != \"TITLE\") {\n                    continue;\n                }\n                if (element.innerHTML == newElement.innerHTML) {\n                    elementList.splice(index, 1);\n                    return true;\n                }\n            }\n            if (newElement.isEqualNode(element)) {\n                elementList.splice(index, 1);\n                return true;\n            }\n        }\n        return false;\n    }\n    removeCurrentHeadProvisionalElements() {\n        for (const element of this.currentHeadProvisionalElements) {\n            document.head.removeChild(element);\n        }\n    }\n    copyNewHeadProvisionalElements() {\n        for (const element of this.newHeadProvisionalElements) {\n            document.head.appendChild(element);\n        }\n    }\n    activateNewBody() {\n        document.adoptNode(this.newElement);\n        this.activateNewBodyScriptElements();\n    }\n    activateNewBodyScriptElements() {\n        for (const inertScriptElement of this.newBodyScriptElements) {\n            const activatedScriptElement = activateScriptElement(inertScriptElement);\n            inertScriptElement.replaceWith(activatedScriptElement);\n        }\n    }\n    async assignNewBody() {\n        await this.renderElement(this.currentElement, this.newElement);\n    }\n    get newHeadStylesheetElements() {\n        return this.newHeadSnapshot.getStylesheetElementsNotInSnapshot(this.currentHeadSnapshot);\n    }\n    get newHeadScriptElements() {\n        return this.newHeadSnapshot.getScriptElementsNotInSnapshot(this.currentHeadSnapshot);\n    }\n    get currentHeadProvisionalElements() {\n        return this.currentHeadSnapshot.provisionalElements;\n    }\n    get newHeadProvisionalElements() {\n        return this.newHeadSnapshot.provisionalElements;\n    }\n    get newBodyScriptElements() {\n        return this.newElement.querySelectorAll(\"script\");\n    }\n}\n\nclass SnapshotCache {\n    constructor(size) {\n        this.keys = [];\n        this.snapshots = {};\n        this.size = size;\n    }\n    has(location) {\n        return toCacheKey(location) in this.snapshots;\n    }\n    get(location) {\n        if (this.has(location)) {\n            const snapshot = this.read(location);\n            this.touch(location);\n            return snapshot;\n        }\n    }\n    put(location, snapshot) {\n        this.write(location, snapshot);\n        this.touch(location);\n        return snapshot;\n    }\n    clear() {\n        this.snapshots = {};\n    }\n    read(location) {\n        return this.snapshots[toCacheKey(location)];\n    }\n    write(location, snapshot) {\n        this.snapshots[toCacheKey(location)] = snapshot;\n    }\n    touch(location) {\n        const key = toCacheKey(location);\n        const index = this.keys.indexOf(key);\n        if (index > -1)\n            this.keys.splice(index, 1);\n        this.keys.unshift(key);\n        this.trim();\n    }\n    trim() {\n        for (const key of this.keys.splice(this.size)) {\n            delete this.snapshots[key];\n        }\n    }\n}\n\nclass PageView extends View {\n    constructor() {\n        super(...arguments);\n        this.snapshotCache = new SnapshotCache(10);\n        this.lastRenderedLocation = new URL(location.href);\n        this.forceReloaded = false;\n    }\n    renderPage(snapshot, isPreview = false, willRender = true, visit) {\n        const renderer = new PageRenderer(this.snapshot, snapshot, PageRenderer.renderElement, isPreview, willRender);\n        if (!renderer.shouldRender) {\n            this.forceReloaded = true;\n        }\n        else {\n            visit === null || visit === void 0 ? void 0 : visit.changeHistory();\n        }\n        return this.render(renderer);\n    }\n    renderError(snapshot, visit) {\n        visit === null || visit === void 0 ? void 0 : visit.changeHistory();\n        const renderer = new ErrorRenderer(this.snapshot, snapshot, ErrorRenderer.renderElement, false);\n        return this.render(renderer);\n    }\n    clearSnapshotCache() {\n        this.snapshotCache.clear();\n    }\n    async cacheSnapshot(snapshot = this.snapshot) {\n        if (snapshot.isCacheable) {\n            this.delegate.viewWillCacheSnapshot();\n            const { lastRenderedLocation: location } = this;\n            await nextEventLoopTick();\n            const cachedSnapshot = snapshot.clone();\n            this.snapshotCache.put(location, cachedSnapshot);\n            return cachedSnapshot;\n        }\n    }\n    getCachedSnapshotForLocation(location) {\n        return this.snapshotCache.get(location);\n    }\n    get snapshot() {\n        return PageSnapshot.fromElement(this.element);\n    }\n}\n\nclass Preloader {\n    constructor(delegate) {\n        this.selector = \"a[data-turbo-preload]\";\n        this.delegate = delegate;\n    }\n    get snapshotCache() {\n        return this.delegate.navigator.view.snapshotCache;\n    }\n    start() {\n        if (document.readyState === \"loading\") {\n            return document.addEventListener(\"DOMContentLoaded\", () => {\n                this.preloadOnLoadLinksForView(document.body);\n            });\n        }\n        else {\n            this.preloadOnLoadLinksForView(document.body);\n        }\n    }\n    preloadOnLoadLinksForView(element) {\n        for (const link of element.querySelectorAll(this.selector)) {\n            this.preloadURL(link);\n        }\n    }\n    async preloadURL(link) {\n        const location = new URL(link.href);\n        if (this.snapshotCache.has(location)) {\n            return;\n        }\n        try {\n            const response = await fetch(location.toString(), { headers: { \"VND.PREFETCH\": \"true\", Accept: \"text/html\" } });\n            const responseText = await response.text();\n            const snapshot = PageSnapshot.fromHTMLString(responseText);\n            this.snapshotCache.put(location, snapshot);\n        }\n        catch (_) {\n        }\n    }\n}\n\nclass Session {\n    constructor() {\n        this.navigator = new Navigator(this);\n        this.history = new History(this);\n        this.preloader = new Preloader(this);\n        this.view = new PageView(this, document.documentElement);\n        this.adapter = new BrowserAdapter(this);\n        this.pageObserver = new PageObserver(this);\n        this.cacheObserver = new CacheObserver();\n        this.linkClickObserver = new LinkClickObserver(this, window);\n        this.formSubmitObserver = new FormSubmitObserver(this, document);\n        this.scrollObserver = new ScrollObserver(this);\n        this.streamObserver = new StreamObserver(this);\n        this.formLinkClickObserver = new FormLinkClickObserver(this, document.documentElement);\n        this.frameRedirector = new FrameRedirector(this, document.documentElement);\n        this.streamMessageRenderer = new StreamMessageRenderer();\n        this.drive = true;\n        this.enabled = true;\n        this.progressBarDelay = 500;\n        this.started = false;\n        this.formMode = \"on\";\n    }\n    start() {\n        if (!this.started) {\n            this.pageObserver.start();\n            this.cacheObserver.start();\n            this.formLinkClickObserver.start();\n            this.linkClickObserver.start();\n            this.formSubmitObserver.start();\n            this.scrollObserver.start();\n            this.streamObserver.start();\n            this.frameRedirector.start();\n            this.history.start();\n            this.preloader.start();\n            this.started = true;\n            this.enabled = true;\n        }\n    }\n    disable() {\n        this.enabled = false;\n    }\n    stop() {\n        if (this.started) {\n            this.pageObserver.stop();\n            this.cacheObserver.stop();\n            this.formLinkClickObserver.stop();\n            this.linkClickObserver.stop();\n            this.formSubmitObserver.stop();\n            this.scrollObserver.stop();\n            this.streamObserver.stop();\n            this.frameRedirector.stop();\n            this.history.stop();\n            this.started = false;\n        }\n    }\n    registerAdapter(adapter) {\n        this.adapter = adapter;\n    }\n    visit(location, options = {}) {\n        const frameElement = options.frame ? document.getElementById(options.frame) : null;\n        if (frameElement instanceof FrameElement) {\n            frameElement.src = location.toString();\n            frameElement.loaded;\n        }\n        else {\n            this.navigator.proposeVisit(expandURL(location), options);\n        }\n    }\n    connectStreamSource(source) {\n        this.streamObserver.connectStreamSource(source);\n    }\n    disconnectStreamSource(source) {\n        this.streamObserver.disconnectStreamSource(source);\n    }\n    renderStreamMessage(message) {\n        this.streamMessageRenderer.render(StreamMessage.wrap(message));\n    }\n    clearCache() {\n        this.view.clearSnapshotCache();\n    }\n    setProgressBarDelay(delay) {\n        this.progressBarDelay = delay;\n    }\n    setFormMode(mode) {\n        this.formMode = mode;\n    }\n    get location() {\n        return this.history.location;\n    }\n    get restorationIdentifier() {\n        return this.history.restorationIdentifier;\n    }\n    historyPoppedToLocationWithRestorationIdentifier(location, restorationIdentifier) {\n        if (this.enabled) {\n            this.navigator.startVisit(location, restorationIdentifier, {\n                action: \"restore\",\n                historyChanged: true,\n            });\n        }\n        else {\n            this.adapter.pageInvalidated({\n                reason: \"turbo_disabled\",\n            });\n        }\n    }\n    scrollPositionChanged(position) {\n        this.history.updateRestorationData({ scrollPosition: position });\n    }\n    willSubmitFormLinkToLocation(link, location) {\n        return this.elementIsNavigatable(link) && locationIsVisitable(location, this.snapshot.rootLocation);\n    }\n    submittedFormLinkToLocation() { }\n    willFollowLinkToLocation(link, location, event) {\n        return (this.elementIsNavigatable(link) &&\n            locationIsVisitable(location, this.snapshot.rootLocation) &&\n            this.applicationAllowsFollowingLinkToLocation(link, location, event));\n    }\n    followedLinkToLocation(link, location) {\n        const action = this.getActionForLink(link);\n        const acceptsStreamResponse = link.hasAttribute(\"data-turbo-stream\");\n        this.visit(location.href, { action, acceptsStreamResponse });\n    }\n    allowsVisitingLocationWithAction(location, action) {\n        return this.locationWithActionIsSamePage(location, action) || this.applicationAllowsVisitingLocation(location);\n    }\n    visitProposedToLocation(location, options) {\n        extendURLWithDeprecatedProperties(location);\n        this.adapter.visitProposedToLocation(location, options);\n    }\n    visitStarted(visit) {\n        if (!visit.acceptsStreamResponse) {\n            markAsBusy(document.documentElement);\n        }\n        extendURLWithDeprecatedProperties(visit.location);\n        if (!visit.silent) {\n            this.notifyApplicationAfterVisitingLocation(visit.location, visit.action);\n        }\n    }\n    visitCompleted(visit) {\n        clearBusyState(document.documentElement);\n        this.notifyApplicationAfterPageLoad(visit.getTimingMetrics());\n    }\n    locationWithActionIsSamePage(location, action) {\n        return this.navigator.locationWithActionIsSamePage(location, action);\n    }\n    visitScrolledToSamePageLocation(oldURL, newURL) {\n        this.notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL);\n    }\n    willSubmitForm(form, submitter) {\n        const action = getAction(form, submitter);\n        return (this.submissionIsNavigatable(form, submitter) &&\n            locationIsVisitable(expandURL(action), this.snapshot.rootLocation));\n    }\n    formSubmitted(form, submitter) {\n        this.navigator.submitForm(form, submitter);\n    }\n    pageBecameInteractive() {\n        this.view.lastRenderedLocation = this.location;\n        this.notifyApplicationAfterPageLoad();\n    }\n    pageLoaded() {\n        this.history.assumeControlOfScrollRestoration();\n    }\n    pageWillUnload() {\n        this.history.relinquishControlOfScrollRestoration();\n    }\n    receivedMessageFromStream(message) {\n        this.renderStreamMessage(message);\n    }\n    viewWillCacheSnapshot() {\n        var _a;\n        if (!((_a = this.navigator.currentVisit) === null || _a === void 0 ? void 0 : _a.silent)) {\n            this.notifyApplicationBeforeCachingSnapshot();\n        }\n    }\n    allowsImmediateRender({ element }, options) {\n        const event = this.notifyApplicationBeforeRender(element, options);\n        const { defaultPrevented, detail: { render }, } = event;\n        if (this.view.renderer && render) {\n            this.view.renderer.renderElement = render;\n        }\n        return !defaultPrevented;\n    }\n    viewRenderedSnapshot(_snapshot, _isPreview) {\n        this.view.lastRenderedLocation = this.history.location;\n        this.notifyApplicationAfterRender();\n    }\n    preloadOnLoadLinksForView(element) {\n        this.preloader.preloadOnLoadLinksForView(element);\n    }\n    viewInvalidated(reason) {\n        this.adapter.pageInvalidated(reason);\n    }\n    frameLoaded(frame) {\n        this.notifyApplicationAfterFrameLoad(frame);\n    }\n    frameRendered(fetchResponse, frame) {\n        this.notifyApplicationAfterFrameRender(fetchResponse, frame);\n    }\n    applicationAllowsFollowingLinkToLocation(link, location, ev) {\n        const event = this.notifyApplicationAfterClickingLinkToLocation(link, location, ev);\n        return !event.defaultPrevented;\n    }\n    applicationAllowsVisitingLocation(location) {\n        const event = this.notifyApplicationBeforeVisitingLocation(location);\n        return !event.defaultPrevented;\n    }\n    notifyApplicationAfterClickingLinkToLocation(link, location, event) {\n        return dispatch(\"turbo:click\", {\n            target: link,\n            detail: { url: location.href, originalEvent: event },\n            cancelable: true,\n        });\n    }\n    notifyApplicationBeforeVisitingLocation(location) {\n        return dispatch(\"turbo:before-visit\", {\n            detail: { url: location.href },\n            cancelable: true,\n        });\n    }\n    notifyApplicationAfterVisitingLocation(location, action) {\n        return dispatch(\"turbo:visit\", { detail: { url: location.href, action } });\n    }\n    notifyApplicationBeforeCachingSnapshot() {\n        return dispatch(\"turbo:before-cache\");\n    }\n    notifyApplicationBeforeRender(newBody, options) {\n        return dispatch(\"turbo:before-render\", {\n            detail: Object.assign({ newBody }, options),\n            cancelable: true,\n        });\n    }\n    notifyApplicationAfterRender() {\n        return dispatch(\"turbo:render\");\n    }\n    notifyApplicationAfterPageLoad(timing = {}) {\n        return dispatch(\"turbo:load\", {\n            detail: { url: this.location.href, timing },\n        });\n    }\n    notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL) {\n        dispatchEvent(new HashChangeEvent(\"hashchange\", {\n            oldURL: oldURL.toString(),\n            newURL: newURL.toString(),\n        }));\n    }\n    notifyApplicationAfterFrameLoad(frame) {\n        return dispatch(\"turbo:frame-load\", { target: frame });\n    }\n    notifyApplicationAfterFrameRender(fetchResponse, frame) {\n        return dispatch(\"turbo:frame-render\", {\n            detail: { fetchResponse },\n            target: frame,\n            cancelable: true,\n        });\n    }\n    submissionIsNavigatable(form, submitter) {\n        if (this.formMode == \"off\") {\n            return false;\n        }\n        else {\n            const submitterIsNavigatable = submitter ? this.elementIsNavigatable(submitter) : true;\n            if (this.formMode == \"optin\") {\n                return submitterIsNavigatable && form.closest('[data-turbo=\"true\"]') != null;\n            }\n            else {\n                return submitterIsNavigatable && this.elementIsNavigatable(form);\n            }\n        }\n    }\n    elementIsNavigatable(element) {\n        const container = findClosestRecursively(element, \"[data-turbo]\");\n        const withinFrame = findClosestRecursively(element, \"turbo-frame\");\n        if (this.drive || withinFrame) {\n            if (container) {\n                return container.getAttribute(\"data-turbo\") != \"false\";\n            }\n            else {\n                return true;\n            }\n        }\n        else {\n            if (container) {\n                return container.getAttribute(\"data-turbo\") == \"true\";\n            }\n            else {\n                return false;\n            }\n        }\n    }\n    getActionForLink(link) {\n        return getVisitAction(link) || \"advance\";\n    }\n    get snapshot() {\n        return this.view.snapshot;\n    }\n}\nfunction extendURLWithDeprecatedProperties(url) {\n    Object.defineProperties(url, deprecatedLocationPropertyDescriptors);\n}\nconst deprecatedLocationPropertyDescriptors = {\n    absoluteURL: {\n        get() {\n            return this.toString();\n        },\n    },\n};\n\nclass Cache {\n    constructor(session) {\n        this.session = session;\n    }\n    clear() {\n        this.session.clearCache();\n    }\n    resetCacheControl() {\n        this.setCacheControl(\"\");\n    }\n    exemptPageFromCache() {\n        this.setCacheControl(\"no-cache\");\n    }\n    exemptPageFromPreview() {\n        this.setCacheControl(\"no-preview\");\n    }\n    setCacheControl(value) {\n        setMetaContent(\"turbo-cache-control\", value);\n    }\n}\n\nconst StreamActions = {\n    after() {\n        this.targetElements.forEach((e) => { var _a; return (_a = e.parentElement) === null || _a === void 0 ? void 0 : _a.insertBefore(this.templateContent, e.nextSibling); });\n    },\n    append() {\n        this.removeDuplicateTargetChildren();\n        this.targetElements.forEach((e) => e.append(this.templateContent));\n    },\n    before() {\n        this.targetElements.forEach((e) => { var _a; return (_a = e.parentElement) === null || _a === void 0 ? void 0 : _a.insertBefore(this.templateContent, e); });\n    },\n    prepend() {\n        this.removeDuplicateTargetChildren();\n        this.targetElements.forEach((e) => e.prepend(this.templateContent));\n    },\n    remove() {\n        this.targetElements.forEach((e) => e.remove());\n    },\n    replace() {\n        this.targetElements.forEach((e) => e.replaceWith(this.templateContent));\n    },\n    update() {\n        this.targetElements.forEach((targetElement) => {\n            targetElement.innerHTML = \"\";\n            targetElement.append(this.templateContent);\n        });\n    },\n};\n\nconst session = new Session();\nconst cache = new Cache(session);\nconst { navigator: navigator$1 } = session;\nfunction start() {\n    session.start();\n}\nfunction registerAdapter(adapter) {\n    session.registerAdapter(adapter);\n}\nfunction visit(location, options) {\n    session.visit(location, options);\n}\nfunction connectStreamSource(source) {\n    session.connectStreamSource(source);\n}\nfunction disconnectStreamSource(source) {\n    session.disconnectStreamSource(source);\n}\nfunction renderStreamMessage(message) {\n    session.renderStreamMessage(message);\n}\nfunction clearCache() {\n    console.warn(\"Please replace `Turbo.clearCache()` with `Turbo.cache.clear()`. The top-level function is deprecated and will be removed in a future version of Turbo.`\");\n    session.clearCache();\n}\nfunction setProgressBarDelay(delay) {\n    session.setProgressBarDelay(delay);\n}\nfunction setConfirmMethod(confirmMethod) {\n    FormSubmission.confirmMethod = confirmMethod;\n}\nfunction setFormMode(mode) {\n    session.setFormMode(mode);\n}\n\nvar Turbo = /*#__PURE__*/Object.freeze({\n    __proto__: null,\n    navigator: navigator$1,\n    session: session,\n    cache: cache,\n    PageRenderer: PageRenderer,\n    PageSnapshot: PageSnapshot,\n    FrameRenderer: FrameRenderer,\n    start: start,\n    registerAdapter: registerAdapter,\n    visit: visit,\n    connectStreamSource: connectStreamSource,\n    disconnectStreamSource: disconnectStreamSource,\n    renderStreamMessage: renderStreamMessage,\n    clearCache: clearCache,\n    setProgressBarDelay: setProgressBarDelay,\n    setConfirmMethod: setConfirmMethod,\n    setFormMode: setFormMode,\n    StreamActions: StreamActions\n});\n\nclass TurboFrameMissingError extends Error {\n}\n\nclass FrameController {\n    constructor(element) {\n        this.fetchResponseLoaded = (_fetchResponse) => { };\n        this.currentFetchRequest = null;\n        this.resolveVisitPromise = () => { };\n        this.connected = false;\n        this.hasBeenLoaded = false;\n        this.ignoredAttributes = new Set();\n        this.action = null;\n        this.visitCachedSnapshot = ({ element }) => {\n            const frame = element.querySelector(\"#\" + this.element.id);\n            if (frame && this.previousFrameElement) {\n                frame.replaceChildren(...this.previousFrameElement.children);\n            }\n            delete this.previousFrameElement;\n        };\n        this.element = element;\n        this.view = new FrameView(this, this.element);\n        this.appearanceObserver = new AppearanceObserver(this, this.element);\n        this.formLinkClickObserver = new FormLinkClickObserver(this, this.element);\n        this.linkInterceptor = new LinkInterceptor(this, this.element);\n        this.restorationIdentifier = uuid();\n        this.formSubmitObserver = new FormSubmitObserver(this, this.element);\n    }\n    connect() {\n        if (!this.connected) {\n            this.connected = true;\n            if (this.loadingStyle == FrameLoadingStyle.lazy) {\n                this.appearanceObserver.start();\n            }\n            else {\n                this.loadSourceURL();\n            }\n            this.formLinkClickObserver.start();\n            this.linkInterceptor.start();\n            this.formSubmitObserver.start();\n        }\n    }\n    disconnect() {\n        if (this.connected) {\n            this.connected = false;\n            this.appearanceObserver.stop();\n            this.formLinkClickObserver.stop();\n            this.linkInterceptor.stop();\n            this.formSubmitObserver.stop();\n        }\n    }\n    disabledChanged() {\n        if (this.loadingStyle == FrameLoadingStyle.eager) {\n            this.loadSourceURL();\n        }\n    }\n    sourceURLChanged() {\n        if (this.isIgnoringChangesTo(\"src\"))\n            return;\n        if (this.element.isConnected) {\n            this.complete = false;\n        }\n        if (this.loadingStyle == FrameLoadingStyle.eager || this.hasBeenLoaded) {\n            this.loadSourceURL();\n        }\n    }\n    sourceURLReloaded() {\n        const { src } = this.element;\n        this.ignoringChangesToAttribute(\"complete\", () => {\n            this.element.removeAttribute(\"complete\");\n        });\n        this.element.src = null;\n        this.element.src = src;\n        return this.element.loaded;\n    }\n    completeChanged() {\n        if (this.isIgnoringChangesTo(\"complete\"))\n            return;\n        this.loadSourceURL();\n    }\n    loadingStyleChanged() {\n        if (this.loadingStyle == FrameLoadingStyle.lazy) {\n            this.appearanceObserver.start();\n        }\n        else {\n            this.appearanceObserver.stop();\n            this.loadSourceURL();\n        }\n    }\n    async loadSourceURL() {\n        if (this.enabled && this.isActive && !this.complete && this.sourceURL) {\n            this.element.loaded = this.visit(expandURL(this.sourceURL));\n            this.appearanceObserver.stop();\n            await this.element.loaded;\n            this.hasBeenLoaded = true;\n        }\n    }\n    async loadResponse(fetchResponse) {\n        if (fetchResponse.redirected || (fetchResponse.succeeded && fetchResponse.isHTML)) {\n            this.sourceURL = fetchResponse.response.url;\n        }\n        try {\n            const html = await fetchResponse.responseHTML;\n            if (html) {\n                const document = parseHTMLDocument(html);\n                const pageSnapshot = PageSnapshot.fromDocument(document);\n                if (pageSnapshot.isVisitable) {\n                    await this.loadFrameResponse(fetchResponse, document);\n                }\n                else {\n                    await this.handleUnvisitableFrameResponse(fetchResponse);\n                }\n            }\n        }\n        finally {\n            this.fetchResponseLoaded = () => { };\n        }\n    }\n    elementAppearedInViewport(element) {\n        this.proposeVisitIfNavigatedWithAction(element, element);\n        this.loadSourceURL();\n    }\n    willSubmitFormLinkToLocation(link) {\n        return this.shouldInterceptNavigation(link);\n    }\n    submittedFormLinkToLocation(link, _location, form) {\n        const frame = this.findFrameElement(link);\n        if (frame)\n            form.setAttribute(\"data-turbo-frame\", frame.id);\n    }\n    shouldInterceptLinkClick(element, _location, _event) {\n        return this.shouldInterceptNavigation(element);\n    }\n    linkClickIntercepted(element, location) {\n        this.navigateFrame(element, location);\n    }\n    willSubmitForm(element, submitter) {\n        return element.closest(\"turbo-frame\") == this.element && this.shouldInterceptNavigation(element, submitter);\n    }\n    formSubmitted(element, submitter) {\n        if (this.formSubmission) {\n            this.formSubmission.stop();\n        }\n        this.formSubmission = new FormSubmission(this, element, submitter);\n        const { fetchRequest } = this.formSubmission;\n        this.prepareRequest(fetchRequest);\n        this.formSubmission.start();\n    }\n    prepareRequest(request) {\n        var _a;\n        request.headers[\"Turbo-Frame\"] = this.id;\n        if ((_a = this.currentNavigationElement) === null || _a === void 0 ? void 0 : _a.hasAttribute(\"data-turbo-stream\")) {\n            request.acceptResponseType(StreamMessage.contentType);\n        }\n    }\n    requestStarted(_request) {\n        markAsBusy(this.element);\n    }\n    requestPreventedHandlingResponse(_request, _response) {\n        this.resolveVisitPromise();\n    }\n    async requestSucceededWithResponse(request, response) {\n        await this.loadResponse(response);\n        this.resolveVisitPromise();\n    }\n    async requestFailedWithResponse(request, response) {\n        await this.loadResponse(response);\n        this.resolveVisitPromise();\n    }\n    requestErrored(request, error) {\n        console.error(error);\n        this.resolveVisitPromise();\n    }\n    requestFinished(_request) {\n        clearBusyState(this.element);\n    }\n    formSubmissionStarted({ formElement }) {\n        markAsBusy(formElement, this.findFrameElement(formElement));\n    }\n    formSubmissionSucceededWithResponse(formSubmission, response) {\n        const frame = this.findFrameElement(formSubmission.formElement, formSubmission.submitter);\n        frame.delegate.proposeVisitIfNavigatedWithAction(frame, formSubmission.formElement, formSubmission.submitter);\n        frame.delegate.loadResponse(response);\n        if (!formSubmission.isSafe) {\n            session.clearCache();\n        }\n    }\n    formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n        this.element.delegate.loadResponse(fetchResponse);\n        session.clearCache();\n    }\n    formSubmissionErrored(formSubmission, error) {\n        console.error(error);\n    }\n    formSubmissionFinished({ formElement }) {\n        clearBusyState(formElement, this.findFrameElement(formElement));\n    }\n    allowsImmediateRender({ element: newFrame }, options) {\n        const event = dispatch(\"turbo:before-frame-render\", {\n            target: this.element,\n            detail: Object.assign({ newFrame }, options),\n            cancelable: true,\n        });\n        const { defaultPrevented, detail: { render }, } = event;\n        if (this.view.renderer && render) {\n            this.view.renderer.renderElement = render;\n        }\n        return !defaultPrevented;\n    }\n    viewRenderedSnapshot(_snapshot, _isPreview) { }\n    preloadOnLoadLinksForView(element) {\n        session.preloadOnLoadLinksForView(element);\n    }\n    viewInvalidated() { }\n    willRenderFrame(currentElement, _newElement) {\n        this.previousFrameElement = currentElement.cloneNode(true);\n    }\n    async loadFrameResponse(fetchResponse, document) {\n        const newFrameElement = await this.extractForeignFrameElement(document.body);\n        if (newFrameElement) {\n            const snapshot = new Snapshot(newFrameElement);\n            const renderer = new FrameRenderer(this, this.view.snapshot, snapshot, FrameRenderer.renderElement, false, false);\n            if (this.view.renderPromise)\n                await this.view.renderPromise;\n            this.changeHistory();\n            await this.view.render(renderer);\n            this.complete = true;\n            session.frameRendered(fetchResponse, this.element);\n            session.frameLoaded(this.element);\n            this.fetchResponseLoaded(fetchResponse);\n        }\n        else if (this.willHandleFrameMissingFromResponse(fetchResponse)) {\n            this.handleFrameMissingFromResponse(fetchResponse);\n        }\n    }\n    async visit(url) {\n        var _a;\n        const request = new FetchRequest(this, FetchMethod.get, url, new URLSearchParams(), this.element);\n        (_a = this.currentFetchRequest) === null || _a === void 0 ? void 0 : _a.cancel();\n        this.currentFetchRequest = request;\n        return new Promise((resolve) => {\n            this.resolveVisitPromise = () => {\n                this.resolveVisitPromise = () => { };\n                this.currentFetchRequest = null;\n                resolve();\n            };\n            request.perform();\n        });\n    }\n    navigateFrame(element, url, submitter) {\n        const frame = this.findFrameElement(element, submitter);\n        frame.delegate.proposeVisitIfNavigatedWithAction(frame, element, submitter);\n        this.withCurrentNavigationElement(element, () => {\n            frame.src = url;\n        });\n    }\n    proposeVisitIfNavigatedWithAction(frame, element, submitter) {\n        this.action = getVisitAction(submitter, element, frame);\n        if (this.action) {\n            const pageSnapshot = PageSnapshot.fromElement(frame).clone();\n            const { visitCachedSnapshot } = frame.delegate;\n            frame.delegate.fetchResponseLoaded = (fetchResponse) => {\n                if (frame.src) {\n                    const { statusCode, redirected } = fetchResponse;\n                    const responseHTML = frame.ownerDocument.documentElement.outerHTML;\n                    const response = { statusCode, redirected, responseHTML };\n                    const options = {\n                        response,\n                        visitCachedSnapshot,\n                        willRender: false,\n                        updateHistory: false,\n                        restorationIdentifier: this.restorationIdentifier,\n                        snapshot: pageSnapshot,\n                    };\n                    if (this.action)\n                        options.action = this.action;\n                    session.visit(frame.src, options);\n                }\n            };\n        }\n    }\n    changeHistory() {\n        if (this.action) {\n            const method = getHistoryMethodForAction(this.action);\n            session.history.update(method, expandURL(this.element.src || \"\"), this.restorationIdentifier);\n        }\n    }\n    async handleUnvisitableFrameResponse(fetchResponse) {\n        console.warn(`The response (${fetchResponse.statusCode}) from <turbo-frame id=\"${this.element.id}\"> is performing a full page visit due to turbo-visit-control.`);\n        await this.visitResponse(fetchResponse.response);\n    }\n    willHandleFrameMissingFromResponse(fetchResponse) {\n        this.element.setAttribute(\"complete\", \"\");\n        const response = fetchResponse.response;\n        const visit = async (url, options = {}) => {\n            if (url instanceof Response) {\n                this.visitResponse(url);\n            }\n            else {\n                session.visit(url, options);\n            }\n        };\n        const event = dispatch(\"turbo:frame-missing\", {\n            target: this.element,\n            detail: { response, visit },\n            cancelable: true,\n        });\n        return !event.defaultPrevented;\n    }\n    handleFrameMissingFromResponse(fetchResponse) {\n        this.view.missing();\n        this.throwFrameMissingError(fetchResponse);\n    }\n    throwFrameMissingError(fetchResponse) {\n        const message = `The response (${fetchResponse.statusCode}) did not contain the expected <turbo-frame id=\"${this.element.id}\"> and will be ignored. To perform a full page visit instead, set turbo-visit-control to reload.`;\n        throw new TurboFrameMissingError(message);\n    }\n    async visitResponse(response) {\n        const wrapped = new FetchResponse(response);\n        const responseHTML = await wrapped.responseHTML;\n        const { location, redirected, statusCode } = wrapped;\n        return session.visit(location, { response: { redirected, statusCode, responseHTML } });\n    }\n    findFrameElement(element, submitter) {\n        var _a;\n        const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n        return (_a = getFrameElementById(id)) !== null && _a !== void 0 ? _a : this.element;\n    }\n    async extractForeignFrameElement(container) {\n        let element;\n        const id = CSS.escape(this.id);\n        try {\n            element = activateElement(container.querySelector(`turbo-frame#${id}`), this.sourceURL);\n            if (element) {\n                return element;\n            }\n            element = activateElement(container.querySelector(`turbo-frame[src][recurse~=${id}]`), this.sourceURL);\n            if (element) {\n                await element.loaded;\n                return await this.extractForeignFrameElement(element);\n            }\n        }\n        catch (error) {\n            console.error(error);\n            return new FrameElement();\n        }\n        return null;\n    }\n    formActionIsVisitable(form, submitter) {\n        const action = getAction(form, submitter);\n        return locationIsVisitable(expandURL(action), this.rootLocation);\n    }\n    shouldInterceptNavigation(element, submitter) {\n        const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n        if (element instanceof HTMLFormElement && !this.formActionIsVisitable(element, submitter)) {\n            return false;\n        }\n        if (!this.enabled || id == \"_top\") {\n            return false;\n        }\n        if (id) {\n            const frameElement = getFrameElementById(id);\n            if (frameElement) {\n                return !frameElement.disabled;\n            }\n        }\n        if (!session.elementIsNavigatable(element)) {\n            return false;\n        }\n        if (submitter && !session.elementIsNavigatable(submitter)) {\n            return false;\n        }\n        return true;\n    }\n    get id() {\n        return this.element.id;\n    }\n    get enabled() {\n        return !this.element.disabled;\n    }\n    get sourceURL() {\n        if (this.element.src) {\n            return this.element.src;\n        }\n    }\n    set sourceURL(sourceURL) {\n        this.ignoringChangesToAttribute(\"src\", () => {\n            this.element.src = sourceURL !== null && sourceURL !== void 0 ? sourceURL : null;\n        });\n    }\n    get loadingStyle() {\n        return this.element.loading;\n    }\n    get isLoading() {\n        return this.formSubmission !== undefined || this.resolveVisitPromise() !== undefined;\n    }\n    get complete() {\n        return this.element.hasAttribute(\"complete\");\n    }\n    set complete(value) {\n        this.ignoringChangesToAttribute(\"complete\", () => {\n            if (value) {\n                this.element.setAttribute(\"complete\", \"\");\n            }\n            else {\n                this.element.removeAttribute(\"complete\");\n            }\n        });\n    }\n    get isActive() {\n        return this.element.isActive && this.connected;\n    }\n    get rootLocation() {\n        var _a;\n        const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n        const root = (_a = meta === null || meta === void 0 ? void 0 : meta.content) !== null && _a !== void 0 ? _a : \"/\";\n        return expandURL(root);\n    }\n    isIgnoringChangesTo(attributeName) {\n        return this.ignoredAttributes.has(attributeName);\n    }\n    ignoringChangesToAttribute(attributeName, callback) {\n        this.ignoredAttributes.add(attributeName);\n        callback();\n        this.ignoredAttributes.delete(attributeName);\n    }\n    withCurrentNavigationElement(element, callback) {\n        this.currentNavigationElement = element;\n        callback();\n        delete this.currentNavigationElement;\n    }\n}\nfunction getFrameElementById(id) {\n    if (id != null) {\n        const element = document.getElementById(id);\n        if (element instanceof FrameElement) {\n            return element;\n        }\n    }\n}\nfunction activateElement(element, currentURL) {\n    if (element) {\n        const src = element.getAttribute(\"src\");\n        if (src != null && currentURL != null && urlsAreEqual(src, currentURL)) {\n            throw new Error(`Matching <turbo-frame id=\"${element.id}\"> element has a source URL which references itself`);\n        }\n        if (element.ownerDocument !== document) {\n            element = document.importNode(element, true);\n        }\n        if (element instanceof FrameElement) {\n            element.connectedCallback();\n            element.disconnectedCallback();\n            return element;\n        }\n    }\n}\n\nclass StreamElement extends HTMLElement {\n    static async renderElement(newElement) {\n        await newElement.performAction();\n    }\n    async connectedCallback() {\n        try {\n            await this.render();\n        }\n        catch (error) {\n            console.error(error);\n        }\n        finally {\n            this.disconnect();\n        }\n    }\n    async render() {\n        var _a;\n        return ((_a = this.renderPromise) !== null && _a !== void 0 ? _a : (this.renderPromise = (async () => {\n            const event = this.beforeRenderEvent;\n            if (this.dispatchEvent(event)) {\n                await nextAnimationFrame();\n                await event.detail.render(this);\n            }\n        })()));\n    }\n    disconnect() {\n        try {\n            this.remove();\n        }\n        catch (_a) { }\n    }\n    removeDuplicateTargetChildren() {\n        this.duplicateChildren.forEach((c) => c.remove());\n    }\n    get duplicateChildren() {\n        var _a;\n        const existingChildren = this.targetElements.flatMap((e) => [...e.children]).filter((c) => !!c.id);\n        const newChildrenIds = [...(((_a = this.templateContent) === null || _a === void 0 ? void 0 : _a.children) || [])].filter((c) => !!c.id).map((c) => c.id);\n        return existingChildren.filter((c) => newChildrenIds.includes(c.id));\n    }\n    get performAction() {\n        if (this.action) {\n            const actionFunction = StreamActions[this.action];\n            if (actionFunction) {\n                return actionFunction;\n            }\n            this.raise(\"unknown action\");\n        }\n        this.raise(\"action attribute is missing\");\n    }\n    get targetElements() {\n        if (this.target) {\n            return this.targetElementsById;\n        }\n        else if (this.targets) {\n            return this.targetElementsByQuery;\n        }\n        else {\n            this.raise(\"target or targets attribute is missing\");\n        }\n    }\n    get templateContent() {\n        return this.templateElement.content.cloneNode(true);\n    }\n    get templateElement() {\n        if (this.firstElementChild === null) {\n            const template = this.ownerDocument.createElement(\"template\");\n            this.appendChild(template);\n            return template;\n        }\n        else if (this.firstElementChild instanceof HTMLTemplateElement) {\n            return this.firstElementChild;\n        }\n        this.raise(\"first child element must be a <template> element\");\n    }\n    get action() {\n        return this.getAttribute(\"action\");\n    }\n    get target() {\n        return this.getAttribute(\"target\");\n    }\n    get targets() {\n        return this.getAttribute(\"targets\");\n    }\n    raise(message) {\n        throw new Error(`${this.description}: ${message}`);\n    }\n    get description() {\n        var _a, _b;\n        return (_b = ((_a = this.outerHTML.match(/<[^>]+>/)) !== null && _a !== void 0 ? _a : [])[0]) !== null && _b !== void 0 ? _b : \"<turbo-stream>\";\n    }\n    get beforeRenderEvent() {\n        return new CustomEvent(\"turbo:before-stream-render\", {\n            bubbles: true,\n            cancelable: true,\n            detail: { newStream: this, render: StreamElement.renderElement },\n        });\n    }\n    get targetElementsById() {\n        var _a;\n        const element = (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.getElementById(this.target);\n        if (element !== null) {\n            return [element];\n        }\n        else {\n            return [];\n        }\n    }\n    get targetElementsByQuery() {\n        var _a;\n        const elements = (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.querySelectorAll(this.targets);\n        if (elements.length !== 0) {\n            return Array.prototype.slice.call(elements);\n        }\n        else {\n            return [];\n        }\n    }\n}\n\nclass StreamSourceElement extends HTMLElement {\n    constructor() {\n        super(...arguments);\n        this.streamSource = null;\n    }\n    connectedCallback() {\n        this.streamSource = this.src.match(/^ws{1,2}:/) ? new WebSocket(this.src) : new EventSource(this.src);\n        connectStreamSource(this.streamSource);\n    }\n    disconnectedCallback() {\n        if (this.streamSource) {\n            disconnectStreamSource(this.streamSource);\n        }\n    }\n    get src() {\n        return this.getAttribute(\"src\") || \"\";\n    }\n}\n\nFrameElement.delegateConstructor = FrameController;\nif (customElements.get(\"turbo-frame\") === undefined) {\n    customElements.define(\"turbo-frame\", FrameElement);\n}\nif (customElements.get(\"turbo-stream\") === undefined) {\n    customElements.define(\"turbo-stream\", StreamElement);\n}\nif (customElements.get(\"turbo-stream-source\") === undefined) {\n    customElements.define(\"turbo-stream-source\", StreamSourceElement);\n}\n\n(() => {\n    let element = document.currentScript;\n    if (!element)\n        return;\n    if (element.hasAttribute(\"data-turbo-suppress-warning\"))\n        return;\n    element = element.parentElement;\n    while (element) {\n        if (element == document.body) {\n            return console.warn(unindent `\n        You are loading Turbo from a <script> element inside the <body> element. This is probably not what you meant to do!\n\n        Load your application\u2019s JavaScript bundle inside the <head> element instead. <script> elements in <body> are evaluated with each page change.\n\n        For more information, see: https://turbo.hotwired.dev/handbook/building#working-with-script-elements\n\n        \u2014\u2014\n        Suppress this warning by adding a \"data-turbo-suppress-warning\" attribute to: %s\n      `, element.outerHTML);\n        }\n        element = element.parentElement;\n    }\n})();\n\nwindow.Turbo = Turbo;\nstart();\n\nexport { FrameElement, FrameLoadingStyle, FrameRenderer, PageRenderer, PageSnapshot, StreamActions, StreamElement, StreamSourceElement, cache, clearCache, connectStreamSource, disconnectStreamSource, navigator$1 as navigator, registerAdapter, renderStreamMessage, session, setConfirmMethod, setFormMode, setProgressBarDelay, start, visit };\n", "let consumer\n\nexport async function getConsumer() {\n  return consumer || setConsumer(createConsumer().then(setConsumer))\n}\n\nexport function setConsumer(newConsumer) {\n  return consumer = newConsumer\n}\n\nexport async function createConsumer() {\n  const { createConsumer } = await import(/* webpackChunkName: \"actioncable\" */ \"@rails/actioncable/src\")\n  return createConsumer()\n}\n\nexport async function subscribeTo(channel, mixin) {\n  const { subscriptions } = await getConsumer()\n  return subscriptions.create(channel, mixin)\n}\n", "// Based on https://github.com/nathan7/snakeize\n//\n// This software is released under the MIT license:\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\nexport default function walk (obj) {\n    if (!obj || typeof obj !== 'object') return obj;\n    if (obj instanceof Date || obj instanceof RegExp) return obj;\n    if (Array.isArray(obj)) return obj.map(walk);\n    return Object.keys(obj).reduce(function (acc, key) {\n        var camel = key[0].toLowerCase() + key.slice(1).replace(/([A-Z]+)/g, function (m, x) {\n            return '_' + x.toLowerCase();\n        });\n        acc[camel] = walk(obj[key]);\n        return acc;\n    }, {});\n};", "import { connectStreamSource, disconnectStreamSource } from \"@hotwired/turbo\"\nimport { subscribeTo } from \"./cable\"\nimport snakeize from \"./snakeize\"\n\nclass TurboCableStreamSourceElement extends HTMLElement {\n  async connectedCallback() {\n    connectStreamSource(this)\n    this.subscription = await subscribeTo(this.channel, {\n      received: this.dispatchMessageEvent.bind(this),\n      connected: this.subscriptionConnected.bind(this),\n      disconnected: this.subscriptionDisconnected.bind(this)\n    })\n  }\n\n  disconnectedCallback() {\n    disconnectStreamSource(this)\n    if (this.subscription) this.subscription.unsubscribe()\n  }\n\n  dispatchMessageEvent(data) {\n    const event = new MessageEvent(\"message\", { data })\n    return this.dispatchEvent(event)\n  }\n\n  subscriptionConnected() {\n    this.setAttribute(\"connected\", \"\")\n  }\n\n  subscriptionDisconnected() {\n    this.removeAttribute(\"connected\")\n  }\n\n  get channel() {\n    const channel = this.getAttribute(\"channel\")\n    const signed_stream_name = this.getAttribute(\"signed-stream-name\")\n    return { channel, signed_stream_name, ...snakeize({ ...this.dataset }) }\n  }\n}\n\n\nif (customElements.get(\"turbo-cable-stream-source\") === undefined) {\n  customElements.define(\"turbo-cable-stream-source\", TurboCableStreamSourceElement)\n}\n", "export function encodeMethodIntoRequestBody(event) {\n  if (event.target instanceof HTMLFormElement) {\n    const { target: form, detail: { fetchOptions } } = event\n\n    form.addEventListener(\"turbo:submit-start\", ({ detail: { formSubmission: { submitter } } }) => {\n      const body = isBodyInit(fetchOptions.body) ? fetchOptions.body : new URLSearchParams()\n      const method = determineFetchMethod(submitter, body, form)\n\n      if (!/get/i.test(method)) {\n        if (/post/i.test(method)) {\n          body.delete(\"_method\")\n        } else {\n          body.set(\"_method\", method)\n        }\n\n        fetchOptions.method = \"post\"\n      }\n    }, { once: true })\n  }\n}\n\nfunction determineFetchMethod(submitter, body, form) {\n  const formMethod = determineFormMethod(submitter)\n  const overrideMethod = body.get(\"_method\")\n  const method = form.getAttribute(\"method\") || \"get\"\n\n  if (typeof formMethod == \"string\") {\n    return formMethod\n  } else if (typeof overrideMethod == \"string\") {\n    return overrideMethod\n  } else {\n    return method\n  }\n}\n\nfunction determineFormMethod(submitter) {\n  if (submitter instanceof HTMLButtonElement || submitter instanceof HTMLInputElement) {\n    if (submitter.hasAttribute(\"formmethod\")) {\n      return submitter.formMethod\n    } else {\n      return null\n    }\n  } else {\n    return null\n  }\n}\n\nfunction isBodyInit(body) {\n  return body instanceof FormData || body instanceof URLSearchParams\n}\n", "import \"./cable_stream_source_element\"\n\nimport * as Turbo from \"@hotwired/turbo\"\nexport { Turbo }\n\nimport * as cable from \"./cable\"\nexport { cable }\n\nimport { encodeMethodIntoRequestBody } from \"./fetch_requests\"\n\naddEventListener(\"turbo:before-fetch-request\", encodeMethodIntoRequestBody)\n", "// Entry point for the build script in your package.json\nimport \"@hotwired/turbo-rails\"\nimport Swiper from 'swiper';\nimport \"./controllers\"\n//import \"@tailwindcss/forms\"", "/*\nStimulus 3.2.1\nCopyright \u00A9 2022 Basecamp, LLC\n */\nclass EventListener {\n    constructor(eventTarget, eventName, eventOptions) {\n        this.eventTarget = eventTarget;\n        this.eventName = eventName;\n        this.eventOptions = eventOptions;\n        this.unorderedBindings = new Set();\n    }\n    connect() {\n        this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n    }\n    disconnect() {\n        this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n    }\n    bindingConnected(binding) {\n        this.unorderedBindings.add(binding);\n    }\n    bindingDisconnected(binding) {\n        this.unorderedBindings.delete(binding);\n    }\n    handleEvent(event) {\n        const extendedEvent = extendEvent(event);\n        for (const binding of this.bindings) {\n            if (extendedEvent.immediatePropagationStopped) {\n                break;\n            }\n            else {\n                binding.handleEvent(extendedEvent);\n            }\n        }\n    }\n    hasBindings() {\n        return this.unorderedBindings.size > 0;\n    }\n    get bindings() {\n        return Array.from(this.unorderedBindings).sort((left, right) => {\n            const leftIndex = left.index, rightIndex = right.index;\n            return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n        });\n    }\n}\nfunction extendEvent(event) {\n    if (\"immediatePropagationStopped\" in event) {\n        return event;\n    }\n    else {\n        const { stopImmediatePropagation } = event;\n        return Object.assign(event, {\n            immediatePropagationStopped: false,\n            stopImmediatePropagation() {\n                this.immediatePropagationStopped = true;\n                stopImmediatePropagation.call(this);\n            },\n        });\n    }\n}\n\nclass Dispatcher {\n    constructor(application) {\n        this.application = application;\n        this.eventListenerMaps = new Map();\n        this.started = false;\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.eventListeners.forEach((eventListener) => eventListener.connect());\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.started = false;\n            this.eventListeners.forEach((eventListener) => eventListener.disconnect());\n        }\n    }\n    get eventListeners() {\n        return Array.from(this.eventListenerMaps.values()).reduce((listeners, map) => listeners.concat(Array.from(map.values())), []);\n    }\n    bindingConnected(binding) {\n        this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n    }\n    bindingDisconnected(binding, clearEventListeners = false) {\n        this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n        if (clearEventListeners)\n            this.clearEventListenersForBinding(binding);\n    }\n    handleError(error, message, detail = {}) {\n        this.application.handleError(error, `Error ${message}`, detail);\n    }\n    clearEventListenersForBinding(binding) {\n        const eventListener = this.fetchEventListenerForBinding(binding);\n        if (!eventListener.hasBindings()) {\n            eventListener.disconnect();\n            this.removeMappedEventListenerFor(binding);\n        }\n    }\n    removeMappedEventListenerFor(binding) {\n        const { eventTarget, eventName, eventOptions } = binding;\n        const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n        const cacheKey = this.cacheKey(eventName, eventOptions);\n        eventListenerMap.delete(cacheKey);\n        if (eventListenerMap.size == 0)\n            this.eventListenerMaps.delete(eventTarget);\n    }\n    fetchEventListenerForBinding(binding) {\n        const { eventTarget, eventName, eventOptions } = binding;\n        return this.fetchEventListener(eventTarget, eventName, eventOptions);\n    }\n    fetchEventListener(eventTarget, eventName, eventOptions) {\n        const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n        const cacheKey = this.cacheKey(eventName, eventOptions);\n        let eventListener = eventListenerMap.get(cacheKey);\n        if (!eventListener) {\n            eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n            eventListenerMap.set(cacheKey, eventListener);\n        }\n        return eventListener;\n    }\n    createEventListener(eventTarget, eventName, eventOptions) {\n        const eventListener = new EventListener(eventTarget, eventName, eventOptions);\n        if (this.started) {\n            eventListener.connect();\n        }\n        return eventListener;\n    }\n    fetchEventListenerMapForEventTarget(eventTarget) {\n        let eventListenerMap = this.eventListenerMaps.get(eventTarget);\n        if (!eventListenerMap) {\n            eventListenerMap = new Map();\n            this.eventListenerMaps.set(eventTarget, eventListenerMap);\n        }\n        return eventListenerMap;\n    }\n    cacheKey(eventName, eventOptions) {\n        const parts = [eventName];\n        Object.keys(eventOptions)\n            .sort()\n            .forEach((key) => {\n            parts.push(`${eventOptions[key] ? \"\" : \"!\"}${key}`);\n        });\n        return parts.join(\":\");\n    }\n}\n\nconst defaultActionDescriptorFilters = {\n    stop({ event, value }) {\n        if (value)\n            event.stopPropagation();\n        return true;\n    },\n    prevent({ event, value }) {\n        if (value)\n            event.preventDefault();\n        return true;\n    },\n    self({ event, value, element }) {\n        if (value) {\n            return element === event.target;\n        }\n        else {\n            return true;\n        }\n    },\n};\nconst descriptorPattern = /^(?:(.+?)(?:\\.(.+?))?(?:@(window|document))?->)?(.+?)(?:#([^:]+?))(?::(.+))?$/;\nfunction parseActionDescriptorString(descriptorString) {\n    const source = descriptorString.trim();\n    const matches = source.match(descriptorPattern) || [];\n    let eventName = matches[1];\n    let keyFilter = matches[2];\n    if (keyFilter && ![\"keydown\", \"keyup\", \"keypress\"].includes(eventName)) {\n        eventName += `.${keyFilter}`;\n        keyFilter = \"\";\n    }\n    return {\n        eventTarget: parseEventTarget(matches[3]),\n        eventName,\n        eventOptions: matches[6] ? parseEventOptions(matches[6]) : {},\n        identifier: matches[4],\n        methodName: matches[5],\n        keyFilter,\n    };\n}\nfunction parseEventTarget(eventTargetName) {\n    if (eventTargetName == \"window\") {\n        return window;\n    }\n    else if (eventTargetName == \"document\") {\n        return document;\n    }\n}\nfunction parseEventOptions(eventOptions) {\n    return eventOptions\n        .split(\":\")\n        .reduce((options, token) => Object.assign(options, { [token.replace(/^!/, \"\")]: !/^!/.test(token) }), {});\n}\nfunction stringifyEventTarget(eventTarget) {\n    if (eventTarget == window) {\n        return \"window\";\n    }\n    else if (eventTarget == document) {\n        return \"document\";\n    }\n}\n\nfunction camelize(value) {\n    return value.replace(/(?:[_-])([a-z0-9])/g, (_, char) => char.toUpperCase());\n}\nfunction namespaceCamelize(value) {\n    return camelize(value.replace(/--/g, \"-\").replace(/__/g, \"_\"));\n}\nfunction capitalize(value) {\n    return value.charAt(0).toUpperCase() + value.slice(1);\n}\nfunction dasherize(value) {\n    return value.replace(/([A-Z])/g, (_, char) => `-${char.toLowerCase()}`);\n}\nfunction tokenize(value) {\n    return value.match(/[^\\s]+/g) || [];\n}\n\nclass Action {\n    constructor(element, index, descriptor, schema) {\n        this.element = element;\n        this.index = index;\n        this.eventTarget = descriptor.eventTarget || element;\n        this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n        this.eventOptions = descriptor.eventOptions || {};\n        this.identifier = descriptor.identifier || error(\"missing identifier\");\n        this.methodName = descriptor.methodName || error(\"missing method name\");\n        this.keyFilter = descriptor.keyFilter || \"\";\n        this.schema = schema;\n    }\n    static forToken(token, schema) {\n        return new this(token.element, token.index, parseActionDescriptorString(token.content), schema);\n    }\n    toString() {\n        const eventFilter = this.keyFilter ? `.${this.keyFilter}` : \"\";\n        const eventTarget = this.eventTargetName ? `@${this.eventTargetName}` : \"\";\n        return `${this.eventName}${eventFilter}${eventTarget}->${this.identifier}#${this.methodName}`;\n    }\n    isFilterTarget(event) {\n        if (!this.keyFilter) {\n            return false;\n        }\n        const filteres = this.keyFilter.split(\"+\");\n        const modifiers = [\"meta\", \"ctrl\", \"alt\", \"shift\"];\n        const [meta, ctrl, alt, shift] = modifiers.map((modifier) => filteres.includes(modifier));\n        if (event.metaKey !== meta || event.ctrlKey !== ctrl || event.altKey !== alt || event.shiftKey !== shift) {\n            return true;\n        }\n        const standardFilter = filteres.filter((key) => !modifiers.includes(key))[0];\n        if (!standardFilter) {\n            return false;\n        }\n        if (!Object.prototype.hasOwnProperty.call(this.keyMappings, standardFilter)) {\n            error(`contains unknown key filter: ${this.keyFilter}`);\n        }\n        return this.keyMappings[standardFilter].toLowerCase() !== event.key.toLowerCase();\n    }\n    get params() {\n        const params = {};\n        const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`, \"i\");\n        for (const { name, value } of Array.from(this.element.attributes)) {\n            const match = name.match(pattern);\n            const key = match && match[1];\n            if (key) {\n                params[camelize(key)] = typecast(value);\n            }\n        }\n        return params;\n    }\n    get eventTargetName() {\n        return stringifyEventTarget(this.eventTarget);\n    }\n    get keyMappings() {\n        return this.schema.keyMappings;\n    }\n}\nconst defaultEventNames = {\n    a: () => \"click\",\n    button: () => \"click\",\n    form: () => \"submit\",\n    details: () => \"toggle\",\n    input: (e) => (e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\"),\n    select: () => \"change\",\n    textarea: () => \"input\",\n};\nfunction getDefaultEventNameForElement(element) {\n    const tagName = element.tagName.toLowerCase();\n    if (tagName in defaultEventNames) {\n        return defaultEventNames[tagName](element);\n    }\n}\nfunction error(message) {\n    throw new Error(message);\n}\nfunction typecast(value) {\n    try {\n        return JSON.parse(value);\n    }\n    catch (o_O) {\n        return value;\n    }\n}\n\nclass Binding {\n    constructor(context, action) {\n        this.context = context;\n        this.action = action;\n    }\n    get index() {\n        return this.action.index;\n    }\n    get eventTarget() {\n        return this.action.eventTarget;\n    }\n    get eventOptions() {\n        return this.action.eventOptions;\n    }\n    get identifier() {\n        return this.context.identifier;\n    }\n    handleEvent(event) {\n        if (this.willBeInvokedByEvent(event) && this.applyEventModifiers(event)) {\n            this.invokeWithEvent(event);\n        }\n    }\n    get eventName() {\n        return this.action.eventName;\n    }\n    get method() {\n        const method = this.controller[this.methodName];\n        if (typeof method == \"function\") {\n            return method;\n        }\n        throw new Error(`Action \"${this.action}\" references undefined method \"${this.methodName}\"`);\n    }\n    applyEventModifiers(event) {\n        const { element } = this.action;\n        const { actionDescriptorFilters } = this.context.application;\n        let passes = true;\n        for (const [name, value] of Object.entries(this.eventOptions)) {\n            if (name in actionDescriptorFilters) {\n                const filter = actionDescriptorFilters[name];\n                passes = passes && filter({ name, value, event, element });\n            }\n            else {\n                continue;\n            }\n        }\n        return passes;\n    }\n    invokeWithEvent(event) {\n        const { target, currentTarget } = event;\n        try {\n            const { params } = this.action;\n            const actionEvent = Object.assign(event, { params });\n            this.method.call(this.controller, actionEvent);\n            this.context.logDebugActivity(this.methodName, { event, target, currentTarget, action: this.methodName });\n        }\n        catch (error) {\n            const { identifier, controller, element, index } = this;\n            const detail = { identifier, controller, element, index, event };\n            this.context.handleError(error, `invoking action \"${this.action}\"`, detail);\n        }\n    }\n    willBeInvokedByEvent(event) {\n        const eventTarget = event.target;\n        if (event instanceof KeyboardEvent && this.action.isFilterTarget(event)) {\n            return false;\n        }\n        if (this.element === eventTarget) {\n            return true;\n        }\n        else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n            return this.scope.containsElement(eventTarget);\n        }\n        else {\n            return this.scope.containsElement(this.action.element);\n        }\n    }\n    get controller() {\n        return this.context.controller;\n    }\n    get methodName() {\n        return this.action.methodName;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get scope() {\n        return this.context.scope;\n    }\n}\n\nclass ElementObserver {\n    constructor(element, delegate) {\n        this.mutationObserverInit = { attributes: true, childList: true, subtree: true };\n        this.element = element;\n        this.started = false;\n        this.delegate = delegate;\n        this.elements = new Set();\n        this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.mutationObserver.observe(this.element, this.mutationObserverInit);\n            this.refresh();\n        }\n    }\n    pause(callback) {\n        if (this.started) {\n            this.mutationObserver.disconnect();\n            this.started = false;\n        }\n        callback();\n        if (!this.started) {\n            this.mutationObserver.observe(this.element, this.mutationObserverInit);\n            this.started = true;\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.mutationObserver.takeRecords();\n            this.mutationObserver.disconnect();\n            this.started = false;\n        }\n    }\n    refresh() {\n        if (this.started) {\n            const matches = new Set(this.matchElementsInTree());\n            for (const element of Array.from(this.elements)) {\n                if (!matches.has(element)) {\n                    this.removeElement(element);\n                }\n            }\n            for (const element of Array.from(matches)) {\n                this.addElement(element);\n            }\n        }\n    }\n    processMutations(mutations) {\n        if (this.started) {\n            for (const mutation of mutations) {\n                this.processMutation(mutation);\n            }\n        }\n    }\n    processMutation(mutation) {\n        if (mutation.type == \"attributes\") {\n            this.processAttributeChange(mutation.target, mutation.attributeName);\n        }\n        else if (mutation.type == \"childList\") {\n            this.processRemovedNodes(mutation.removedNodes);\n            this.processAddedNodes(mutation.addedNodes);\n        }\n    }\n    processAttributeChange(node, attributeName) {\n        const element = node;\n        if (this.elements.has(element)) {\n            if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n                this.delegate.elementAttributeChanged(element, attributeName);\n            }\n            else {\n                this.removeElement(element);\n            }\n        }\n        else if (this.matchElement(element)) {\n            this.addElement(element);\n        }\n    }\n    processRemovedNodes(nodes) {\n        for (const node of Array.from(nodes)) {\n            const element = this.elementFromNode(node);\n            if (element) {\n                this.processTree(element, this.removeElement);\n            }\n        }\n    }\n    processAddedNodes(nodes) {\n        for (const node of Array.from(nodes)) {\n            const element = this.elementFromNode(node);\n            if (element && this.elementIsActive(element)) {\n                this.processTree(element, this.addElement);\n            }\n        }\n    }\n    matchElement(element) {\n        return this.delegate.matchElement(element);\n    }\n    matchElementsInTree(tree = this.element) {\n        return this.delegate.matchElementsInTree(tree);\n    }\n    processTree(tree, processor) {\n        for (const element of this.matchElementsInTree(tree)) {\n            processor.call(this, element);\n        }\n    }\n    elementFromNode(node) {\n        if (node.nodeType == Node.ELEMENT_NODE) {\n            return node;\n        }\n    }\n    elementIsActive(element) {\n        if (element.isConnected != this.element.isConnected) {\n            return false;\n        }\n        else {\n            return this.element.contains(element);\n        }\n    }\n    addElement(element) {\n        if (!this.elements.has(element)) {\n            if (this.elementIsActive(element)) {\n                this.elements.add(element);\n                if (this.delegate.elementMatched) {\n                    this.delegate.elementMatched(element);\n                }\n            }\n        }\n    }\n    removeElement(element) {\n        if (this.elements.has(element)) {\n            this.elements.delete(element);\n            if (this.delegate.elementUnmatched) {\n                this.delegate.elementUnmatched(element);\n            }\n        }\n    }\n}\n\nclass AttributeObserver {\n    constructor(element, attributeName, delegate) {\n        this.attributeName = attributeName;\n        this.delegate = delegate;\n        this.elementObserver = new ElementObserver(element, this);\n    }\n    get element() {\n        return this.elementObserver.element;\n    }\n    get selector() {\n        return `[${this.attributeName}]`;\n    }\n    start() {\n        this.elementObserver.start();\n    }\n    pause(callback) {\n        this.elementObserver.pause(callback);\n    }\n    stop() {\n        this.elementObserver.stop();\n    }\n    refresh() {\n        this.elementObserver.refresh();\n    }\n    get started() {\n        return this.elementObserver.started;\n    }\n    matchElement(element) {\n        return element.hasAttribute(this.attributeName);\n    }\n    matchElementsInTree(tree) {\n        const match = this.matchElement(tree) ? [tree] : [];\n        const matches = Array.from(tree.querySelectorAll(this.selector));\n        return match.concat(matches);\n    }\n    elementMatched(element) {\n        if (this.delegate.elementMatchedAttribute) {\n            this.delegate.elementMatchedAttribute(element, this.attributeName);\n        }\n    }\n    elementUnmatched(element) {\n        if (this.delegate.elementUnmatchedAttribute) {\n            this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n        }\n    }\n    elementAttributeChanged(element, attributeName) {\n        if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n            this.delegate.elementAttributeValueChanged(element, attributeName);\n        }\n    }\n}\n\nfunction add(map, key, value) {\n    fetch(map, key).add(value);\n}\nfunction del(map, key, value) {\n    fetch(map, key).delete(value);\n    prune(map, key);\n}\nfunction fetch(map, key) {\n    let values = map.get(key);\n    if (!values) {\n        values = new Set();\n        map.set(key, values);\n    }\n    return values;\n}\nfunction prune(map, key) {\n    const values = map.get(key);\n    if (values != null && values.size == 0) {\n        map.delete(key);\n    }\n}\n\nclass Multimap {\n    constructor() {\n        this.valuesByKey = new Map();\n    }\n    get keys() {\n        return Array.from(this.valuesByKey.keys());\n    }\n    get values() {\n        const sets = Array.from(this.valuesByKey.values());\n        return sets.reduce((values, set) => values.concat(Array.from(set)), []);\n    }\n    get size() {\n        const sets = Array.from(this.valuesByKey.values());\n        return sets.reduce((size, set) => size + set.size, 0);\n    }\n    add(key, value) {\n        add(this.valuesByKey, key, value);\n    }\n    delete(key, value) {\n        del(this.valuesByKey, key, value);\n    }\n    has(key, value) {\n        const values = this.valuesByKey.get(key);\n        return values != null && values.has(value);\n    }\n    hasKey(key) {\n        return this.valuesByKey.has(key);\n    }\n    hasValue(value) {\n        const sets = Array.from(this.valuesByKey.values());\n        return sets.some((set) => set.has(value));\n    }\n    getValuesForKey(key) {\n        const values = this.valuesByKey.get(key);\n        return values ? Array.from(values) : [];\n    }\n    getKeysForValue(value) {\n        return Array.from(this.valuesByKey)\n            .filter(([_key, values]) => values.has(value))\n            .map(([key, _values]) => key);\n    }\n}\n\nclass IndexedMultimap extends Multimap {\n    constructor() {\n        super();\n        this.keysByValue = new Map();\n    }\n    get values() {\n        return Array.from(this.keysByValue.keys());\n    }\n    add(key, value) {\n        super.add(key, value);\n        add(this.keysByValue, value, key);\n    }\n    delete(key, value) {\n        super.delete(key, value);\n        del(this.keysByValue, value, key);\n    }\n    hasValue(value) {\n        return this.keysByValue.has(value);\n    }\n    getKeysForValue(value) {\n        const set = this.keysByValue.get(value);\n        return set ? Array.from(set) : [];\n    }\n}\n\nclass SelectorObserver {\n    constructor(element, selector, delegate, details = {}) {\n        this.selector = selector;\n        this.details = details;\n        this.elementObserver = new ElementObserver(element, this);\n        this.delegate = delegate;\n        this.matchesByElement = new Multimap();\n    }\n    get started() {\n        return this.elementObserver.started;\n    }\n    start() {\n        this.elementObserver.start();\n    }\n    pause(callback) {\n        this.elementObserver.pause(callback);\n    }\n    stop() {\n        this.elementObserver.stop();\n    }\n    refresh() {\n        this.elementObserver.refresh();\n    }\n    get element() {\n        return this.elementObserver.element;\n    }\n    matchElement(element) {\n        const matches = element.matches(this.selector);\n        if (this.delegate.selectorMatchElement) {\n            return matches && this.delegate.selectorMatchElement(element, this.details);\n        }\n        return matches;\n    }\n    matchElementsInTree(tree) {\n        const match = this.matchElement(tree) ? [tree] : [];\n        const matches = Array.from(tree.querySelectorAll(this.selector)).filter((match) => this.matchElement(match));\n        return match.concat(matches);\n    }\n    elementMatched(element) {\n        this.selectorMatched(element);\n    }\n    elementUnmatched(element) {\n        this.selectorUnmatched(element);\n    }\n    elementAttributeChanged(element, _attributeName) {\n        const matches = this.matchElement(element);\n        const matchedBefore = this.matchesByElement.has(this.selector, element);\n        if (!matches && matchedBefore) {\n            this.selectorUnmatched(element);\n        }\n    }\n    selectorMatched(element) {\n        if (this.delegate.selectorMatched) {\n            this.delegate.selectorMatched(element, this.selector, this.details);\n            this.matchesByElement.add(this.selector, element);\n        }\n    }\n    selectorUnmatched(element) {\n        this.delegate.selectorUnmatched(element, this.selector, this.details);\n        this.matchesByElement.delete(this.selector, element);\n    }\n}\n\nclass StringMapObserver {\n    constructor(element, delegate) {\n        this.element = element;\n        this.delegate = delegate;\n        this.started = false;\n        this.stringMap = new Map();\n        this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.mutationObserver.observe(this.element, { attributes: true, attributeOldValue: true });\n            this.refresh();\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.mutationObserver.takeRecords();\n            this.mutationObserver.disconnect();\n            this.started = false;\n        }\n    }\n    refresh() {\n        if (this.started) {\n            for (const attributeName of this.knownAttributeNames) {\n                this.refreshAttribute(attributeName, null);\n            }\n        }\n    }\n    processMutations(mutations) {\n        if (this.started) {\n            for (const mutation of mutations) {\n                this.processMutation(mutation);\n            }\n        }\n    }\n    processMutation(mutation) {\n        const attributeName = mutation.attributeName;\n        if (attributeName) {\n            this.refreshAttribute(attributeName, mutation.oldValue);\n        }\n    }\n    refreshAttribute(attributeName, oldValue) {\n        const key = this.delegate.getStringMapKeyForAttribute(attributeName);\n        if (key != null) {\n            if (!this.stringMap.has(attributeName)) {\n                this.stringMapKeyAdded(key, attributeName);\n            }\n            const value = this.element.getAttribute(attributeName);\n            if (this.stringMap.get(attributeName) != value) {\n                this.stringMapValueChanged(value, key, oldValue);\n            }\n            if (value == null) {\n                const oldValue = this.stringMap.get(attributeName);\n                this.stringMap.delete(attributeName);\n                if (oldValue)\n                    this.stringMapKeyRemoved(key, attributeName, oldValue);\n            }\n            else {\n                this.stringMap.set(attributeName, value);\n            }\n        }\n    }\n    stringMapKeyAdded(key, attributeName) {\n        if (this.delegate.stringMapKeyAdded) {\n            this.delegate.stringMapKeyAdded(key, attributeName);\n        }\n    }\n    stringMapValueChanged(value, key, oldValue) {\n        if (this.delegate.stringMapValueChanged) {\n            this.delegate.stringMapValueChanged(value, key, oldValue);\n        }\n    }\n    stringMapKeyRemoved(key, attributeName, oldValue) {\n        if (this.delegate.stringMapKeyRemoved) {\n            this.delegate.stringMapKeyRemoved(key, attributeName, oldValue);\n        }\n    }\n    get knownAttributeNames() {\n        return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n    }\n    get currentAttributeNames() {\n        return Array.from(this.element.attributes).map((attribute) => attribute.name);\n    }\n    get recordedAttributeNames() {\n        return Array.from(this.stringMap.keys());\n    }\n}\n\nclass TokenListObserver {\n    constructor(element, attributeName, delegate) {\n        this.attributeObserver = new AttributeObserver(element, attributeName, this);\n        this.delegate = delegate;\n        this.tokensByElement = new Multimap();\n    }\n    get started() {\n        return this.attributeObserver.started;\n    }\n    start() {\n        this.attributeObserver.start();\n    }\n    pause(callback) {\n        this.attributeObserver.pause(callback);\n    }\n    stop() {\n        this.attributeObserver.stop();\n    }\n    refresh() {\n        this.attributeObserver.refresh();\n    }\n    get element() {\n        return this.attributeObserver.element;\n    }\n    get attributeName() {\n        return this.attributeObserver.attributeName;\n    }\n    elementMatchedAttribute(element) {\n        this.tokensMatched(this.readTokensForElement(element));\n    }\n    elementAttributeValueChanged(element) {\n        const [unmatchedTokens, matchedTokens] = this.refreshTokensForElement(element);\n        this.tokensUnmatched(unmatchedTokens);\n        this.tokensMatched(matchedTokens);\n    }\n    elementUnmatchedAttribute(element) {\n        this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n    }\n    tokensMatched(tokens) {\n        tokens.forEach((token) => this.tokenMatched(token));\n    }\n    tokensUnmatched(tokens) {\n        tokens.forEach((token) => this.tokenUnmatched(token));\n    }\n    tokenMatched(token) {\n        this.delegate.tokenMatched(token);\n        this.tokensByElement.add(token.element, token);\n    }\n    tokenUnmatched(token) {\n        this.delegate.tokenUnmatched(token);\n        this.tokensByElement.delete(token.element, token);\n    }\n    refreshTokensForElement(element) {\n        const previousTokens = this.tokensByElement.getValuesForKey(element);\n        const currentTokens = this.readTokensForElement(element);\n        const firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(([previousToken, currentToken]) => !tokensAreEqual(previousToken, currentToken));\n        if (firstDifferingIndex == -1) {\n            return [[], []];\n        }\n        else {\n            return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n        }\n    }\n    readTokensForElement(element) {\n        const attributeName = this.attributeName;\n        const tokenString = element.getAttribute(attributeName) || \"\";\n        return parseTokenString(tokenString, element, attributeName);\n    }\n}\nfunction parseTokenString(tokenString, element, attributeName) {\n    return tokenString\n        .trim()\n        .split(/\\s+/)\n        .filter((content) => content.length)\n        .map((content, index) => ({ element, attributeName, content, index }));\n}\nfunction zip(left, right) {\n    const length = Math.max(left.length, right.length);\n    return Array.from({ length }, (_, index) => [left[index], right[index]]);\n}\nfunction tokensAreEqual(left, right) {\n    return left && right && left.index == right.index && left.content == right.content;\n}\n\nclass ValueListObserver {\n    constructor(element, attributeName, delegate) {\n        this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n        this.delegate = delegate;\n        this.parseResultsByToken = new WeakMap();\n        this.valuesByTokenByElement = new WeakMap();\n    }\n    get started() {\n        return this.tokenListObserver.started;\n    }\n    start() {\n        this.tokenListObserver.start();\n    }\n    stop() {\n        this.tokenListObserver.stop();\n    }\n    refresh() {\n        this.tokenListObserver.refresh();\n    }\n    get element() {\n        return this.tokenListObserver.element;\n    }\n    get attributeName() {\n        return this.tokenListObserver.attributeName;\n    }\n    tokenMatched(token) {\n        const { element } = token;\n        const { value } = this.fetchParseResultForToken(token);\n        if (value) {\n            this.fetchValuesByTokenForElement(element).set(token, value);\n            this.delegate.elementMatchedValue(element, value);\n        }\n    }\n    tokenUnmatched(token) {\n        const { element } = token;\n        const { value } = this.fetchParseResultForToken(token);\n        if (value) {\n            this.fetchValuesByTokenForElement(element).delete(token);\n            this.delegate.elementUnmatchedValue(element, value);\n        }\n    }\n    fetchParseResultForToken(token) {\n        let parseResult = this.parseResultsByToken.get(token);\n        if (!parseResult) {\n            parseResult = this.parseToken(token);\n            this.parseResultsByToken.set(token, parseResult);\n        }\n        return parseResult;\n    }\n    fetchValuesByTokenForElement(element) {\n        let valuesByToken = this.valuesByTokenByElement.get(element);\n        if (!valuesByToken) {\n            valuesByToken = new Map();\n            this.valuesByTokenByElement.set(element, valuesByToken);\n        }\n        return valuesByToken;\n    }\n    parseToken(token) {\n        try {\n            const value = this.delegate.parseValueForToken(token);\n            return { value };\n        }\n        catch (error) {\n            return { error };\n        }\n    }\n}\n\nclass BindingObserver {\n    constructor(context, delegate) {\n        this.context = context;\n        this.delegate = delegate;\n        this.bindingsByAction = new Map();\n    }\n    start() {\n        if (!this.valueListObserver) {\n            this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n            this.valueListObserver.start();\n        }\n    }\n    stop() {\n        if (this.valueListObserver) {\n            this.valueListObserver.stop();\n            delete this.valueListObserver;\n            this.disconnectAllActions();\n        }\n    }\n    get element() {\n        return this.context.element;\n    }\n    get identifier() {\n        return this.context.identifier;\n    }\n    get actionAttribute() {\n        return this.schema.actionAttribute;\n    }\n    get schema() {\n        return this.context.schema;\n    }\n    get bindings() {\n        return Array.from(this.bindingsByAction.values());\n    }\n    connectAction(action) {\n        const binding = new Binding(this.context, action);\n        this.bindingsByAction.set(action, binding);\n        this.delegate.bindingConnected(binding);\n    }\n    disconnectAction(action) {\n        const binding = this.bindingsByAction.get(action);\n        if (binding) {\n            this.bindingsByAction.delete(action);\n            this.delegate.bindingDisconnected(binding);\n        }\n    }\n    disconnectAllActions() {\n        this.bindings.forEach((binding) => this.delegate.bindingDisconnected(binding, true));\n        this.bindingsByAction.clear();\n    }\n    parseValueForToken(token) {\n        const action = Action.forToken(token, this.schema);\n        if (action.identifier == this.identifier) {\n            return action;\n        }\n    }\n    elementMatchedValue(element, action) {\n        this.connectAction(action);\n    }\n    elementUnmatchedValue(element, action) {\n        this.disconnectAction(action);\n    }\n}\n\nclass ValueObserver {\n    constructor(context, receiver) {\n        this.context = context;\n        this.receiver = receiver;\n        this.stringMapObserver = new StringMapObserver(this.element, this);\n        this.valueDescriptorMap = this.controller.valueDescriptorMap;\n    }\n    start() {\n        this.stringMapObserver.start();\n        this.invokeChangedCallbacksForDefaultValues();\n    }\n    stop() {\n        this.stringMapObserver.stop();\n    }\n    get element() {\n        return this.context.element;\n    }\n    get controller() {\n        return this.context.controller;\n    }\n    getStringMapKeyForAttribute(attributeName) {\n        if (attributeName in this.valueDescriptorMap) {\n            return this.valueDescriptorMap[attributeName].name;\n        }\n    }\n    stringMapKeyAdded(key, attributeName) {\n        const descriptor = this.valueDescriptorMap[attributeName];\n        if (!this.hasValue(key)) {\n            this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), descriptor.writer(descriptor.defaultValue));\n        }\n    }\n    stringMapValueChanged(value, name, oldValue) {\n        const descriptor = this.valueDescriptorNameMap[name];\n        if (value === null)\n            return;\n        if (oldValue === null) {\n            oldValue = descriptor.writer(descriptor.defaultValue);\n        }\n        this.invokeChangedCallback(name, value, oldValue);\n    }\n    stringMapKeyRemoved(key, attributeName, oldValue) {\n        const descriptor = this.valueDescriptorNameMap[key];\n        if (this.hasValue(key)) {\n            this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), oldValue);\n        }\n        else {\n            this.invokeChangedCallback(key, descriptor.writer(descriptor.defaultValue), oldValue);\n        }\n    }\n    invokeChangedCallbacksForDefaultValues() {\n        for (const { key, name, defaultValue, writer } of this.valueDescriptors) {\n            if (defaultValue != undefined && !this.controller.data.has(key)) {\n                this.invokeChangedCallback(name, writer(defaultValue), undefined);\n            }\n        }\n    }\n    invokeChangedCallback(name, rawValue, rawOldValue) {\n        const changedMethodName = `${name}Changed`;\n        const changedMethod = this.receiver[changedMethodName];\n        if (typeof changedMethod == \"function\") {\n            const descriptor = this.valueDescriptorNameMap[name];\n            try {\n                const value = descriptor.reader(rawValue);\n                let oldValue = rawOldValue;\n                if (rawOldValue) {\n                    oldValue = descriptor.reader(rawOldValue);\n                }\n                changedMethod.call(this.receiver, value, oldValue);\n            }\n            catch (error) {\n                if (error instanceof TypeError) {\n                    error.message = `Stimulus Value \"${this.context.identifier}.${descriptor.name}\" - ${error.message}`;\n                }\n                throw error;\n            }\n        }\n    }\n    get valueDescriptors() {\n        const { valueDescriptorMap } = this;\n        return Object.keys(valueDescriptorMap).map((key) => valueDescriptorMap[key]);\n    }\n    get valueDescriptorNameMap() {\n        const descriptors = {};\n        Object.keys(this.valueDescriptorMap).forEach((key) => {\n            const descriptor = this.valueDescriptorMap[key];\n            descriptors[descriptor.name] = descriptor;\n        });\n        return descriptors;\n    }\n    hasValue(attributeName) {\n        const descriptor = this.valueDescriptorNameMap[attributeName];\n        const hasMethodName = `has${capitalize(descriptor.name)}`;\n        return this.receiver[hasMethodName];\n    }\n}\n\nclass TargetObserver {\n    constructor(context, delegate) {\n        this.context = context;\n        this.delegate = delegate;\n        this.targetsByName = new Multimap();\n    }\n    start() {\n        if (!this.tokenListObserver) {\n            this.tokenListObserver = new TokenListObserver(this.element, this.attributeName, this);\n            this.tokenListObserver.start();\n        }\n    }\n    stop() {\n        if (this.tokenListObserver) {\n            this.disconnectAllTargets();\n            this.tokenListObserver.stop();\n            delete this.tokenListObserver;\n        }\n    }\n    tokenMatched({ element, content: name }) {\n        if (this.scope.containsElement(element)) {\n            this.connectTarget(element, name);\n        }\n    }\n    tokenUnmatched({ element, content: name }) {\n        this.disconnectTarget(element, name);\n    }\n    connectTarget(element, name) {\n        var _a;\n        if (!this.targetsByName.has(name, element)) {\n            this.targetsByName.add(name, element);\n            (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetConnected(element, name));\n        }\n    }\n    disconnectTarget(element, name) {\n        var _a;\n        if (this.targetsByName.has(name, element)) {\n            this.targetsByName.delete(name, element);\n            (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetDisconnected(element, name));\n        }\n    }\n    disconnectAllTargets() {\n        for (const name of this.targetsByName.keys) {\n            for (const element of this.targetsByName.getValuesForKey(name)) {\n                this.disconnectTarget(element, name);\n            }\n        }\n    }\n    get attributeName() {\n        return `data-${this.context.identifier}-target`;\n    }\n    get element() {\n        return this.context.element;\n    }\n    get scope() {\n        return this.context.scope;\n    }\n}\n\nfunction readInheritableStaticArrayValues(constructor, propertyName) {\n    const ancestors = getAncestorsForConstructor(constructor);\n    return Array.from(ancestors.reduce((values, constructor) => {\n        getOwnStaticArrayValues(constructor, propertyName).forEach((name) => values.add(name));\n        return values;\n    }, new Set()));\n}\nfunction readInheritableStaticObjectPairs(constructor, propertyName) {\n    const ancestors = getAncestorsForConstructor(constructor);\n    return ancestors.reduce((pairs, constructor) => {\n        pairs.push(...getOwnStaticObjectPairs(constructor, propertyName));\n        return pairs;\n    }, []);\n}\nfunction getAncestorsForConstructor(constructor) {\n    const ancestors = [];\n    while (constructor) {\n        ancestors.push(constructor);\n        constructor = Object.getPrototypeOf(constructor);\n    }\n    return ancestors.reverse();\n}\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n    const definition = constructor[propertyName];\n    return Array.isArray(definition) ? definition : [];\n}\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n    const definition = constructor[propertyName];\n    return definition ? Object.keys(definition).map((key) => [key, definition[key]]) : [];\n}\n\nclass OutletObserver {\n    constructor(context, delegate) {\n        this.context = context;\n        this.delegate = delegate;\n        this.outletsByName = new Multimap();\n        this.outletElementsByName = new Multimap();\n        this.selectorObserverMap = new Map();\n    }\n    start() {\n        if (this.selectorObserverMap.size === 0) {\n            this.outletDefinitions.forEach((outletName) => {\n                const selector = this.selector(outletName);\n                const details = { outletName };\n                if (selector) {\n                    this.selectorObserverMap.set(outletName, new SelectorObserver(document.body, selector, this, details));\n                }\n            });\n            this.selectorObserverMap.forEach((observer) => observer.start());\n        }\n        this.dependentContexts.forEach((context) => context.refresh());\n    }\n    stop() {\n        if (this.selectorObserverMap.size > 0) {\n            this.disconnectAllOutlets();\n            this.selectorObserverMap.forEach((observer) => observer.stop());\n            this.selectorObserverMap.clear();\n        }\n    }\n    refresh() {\n        this.selectorObserverMap.forEach((observer) => observer.refresh());\n    }\n    selectorMatched(element, _selector, { outletName }) {\n        const outlet = this.getOutlet(element, outletName);\n        if (outlet) {\n            this.connectOutlet(outlet, element, outletName);\n        }\n    }\n    selectorUnmatched(element, _selector, { outletName }) {\n        const outlet = this.getOutletFromMap(element, outletName);\n        if (outlet) {\n            this.disconnectOutlet(outlet, element, outletName);\n        }\n    }\n    selectorMatchElement(element, { outletName }) {\n        return (this.hasOutlet(element, outletName) &&\n            element.matches(`[${this.context.application.schema.controllerAttribute}~=${outletName}]`));\n    }\n    connectOutlet(outlet, element, outletName) {\n        var _a;\n        if (!this.outletElementsByName.has(outletName, element)) {\n            this.outletsByName.add(outletName, outlet);\n            this.outletElementsByName.add(outletName, element);\n            (_a = this.selectorObserverMap.get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletConnected(outlet, element, outletName));\n        }\n    }\n    disconnectOutlet(outlet, element, outletName) {\n        var _a;\n        if (this.outletElementsByName.has(outletName, element)) {\n            this.outletsByName.delete(outletName, outlet);\n            this.outletElementsByName.delete(outletName, element);\n            (_a = this.selectorObserverMap\n                .get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletDisconnected(outlet, element, outletName));\n        }\n    }\n    disconnectAllOutlets() {\n        for (const outletName of this.outletElementsByName.keys) {\n            for (const element of this.outletElementsByName.getValuesForKey(outletName)) {\n                for (const outlet of this.outletsByName.getValuesForKey(outletName)) {\n                    this.disconnectOutlet(outlet, element, outletName);\n                }\n            }\n        }\n    }\n    selector(outletName) {\n        return this.scope.outlets.getSelectorForOutletName(outletName);\n    }\n    get outletDependencies() {\n        const dependencies = new Multimap();\n        this.router.modules.forEach((module) => {\n            const constructor = module.definition.controllerConstructor;\n            const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n            outlets.forEach((outlet) => dependencies.add(outlet, module.identifier));\n        });\n        return dependencies;\n    }\n    get outletDefinitions() {\n        return this.outletDependencies.getKeysForValue(this.identifier);\n    }\n    get dependentControllerIdentifiers() {\n        return this.outletDependencies.getValuesForKey(this.identifier);\n    }\n    get dependentContexts() {\n        const identifiers = this.dependentControllerIdentifiers;\n        return this.router.contexts.filter((context) => identifiers.includes(context.identifier));\n    }\n    hasOutlet(element, outletName) {\n        return !!this.getOutlet(element, outletName) || !!this.getOutletFromMap(element, outletName);\n    }\n    getOutlet(element, outletName) {\n        return this.application.getControllerForElementAndIdentifier(element, outletName);\n    }\n    getOutletFromMap(element, outletName) {\n        return this.outletsByName.getValuesForKey(outletName).find((outlet) => outlet.element === element);\n    }\n    get scope() {\n        return this.context.scope;\n    }\n    get identifier() {\n        return this.context.identifier;\n    }\n    get application() {\n        return this.context.application;\n    }\n    get router() {\n        return this.application.router;\n    }\n}\n\nclass Context {\n    constructor(module, scope) {\n        this.logDebugActivity = (functionName, detail = {}) => {\n            const { identifier, controller, element } = this;\n            detail = Object.assign({ identifier, controller, element }, detail);\n            this.application.logDebugActivity(this.identifier, functionName, detail);\n        };\n        this.module = module;\n        this.scope = scope;\n        this.controller = new module.controllerConstructor(this);\n        this.bindingObserver = new BindingObserver(this, this.dispatcher);\n        this.valueObserver = new ValueObserver(this, this.controller);\n        this.targetObserver = new TargetObserver(this, this);\n        this.outletObserver = new OutletObserver(this, this);\n        try {\n            this.controller.initialize();\n            this.logDebugActivity(\"initialize\");\n        }\n        catch (error) {\n            this.handleError(error, \"initializing controller\");\n        }\n    }\n    connect() {\n        this.bindingObserver.start();\n        this.valueObserver.start();\n        this.targetObserver.start();\n        this.outletObserver.start();\n        try {\n            this.controller.connect();\n            this.logDebugActivity(\"connect\");\n        }\n        catch (error) {\n            this.handleError(error, \"connecting controller\");\n        }\n    }\n    refresh() {\n        this.outletObserver.refresh();\n    }\n    disconnect() {\n        try {\n            this.controller.disconnect();\n            this.logDebugActivity(\"disconnect\");\n        }\n        catch (error) {\n            this.handleError(error, \"disconnecting controller\");\n        }\n        this.outletObserver.stop();\n        this.targetObserver.stop();\n        this.valueObserver.stop();\n        this.bindingObserver.stop();\n    }\n    get application() {\n        return this.module.application;\n    }\n    get identifier() {\n        return this.module.identifier;\n    }\n    get schema() {\n        return this.application.schema;\n    }\n    get dispatcher() {\n        return this.application.dispatcher;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get parentElement() {\n        return this.element.parentElement;\n    }\n    handleError(error, message, detail = {}) {\n        const { identifier, controller, element } = this;\n        detail = Object.assign({ identifier, controller, element }, detail);\n        this.application.handleError(error, `Error ${message}`, detail);\n    }\n    targetConnected(element, name) {\n        this.invokeControllerMethod(`${name}TargetConnected`, element);\n    }\n    targetDisconnected(element, name) {\n        this.invokeControllerMethod(`${name}TargetDisconnected`, element);\n    }\n    outletConnected(outlet, element, name) {\n        this.invokeControllerMethod(`${namespaceCamelize(name)}OutletConnected`, outlet, element);\n    }\n    outletDisconnected(outlet, element, name) {\n        this.invokeControllerMethod(`${namespaceCamelize(name)}OutletDisconnected`, outlet, element);\n    }\n    invokeControllerMethod(methodName, ...args) {\n        const controller = this.controller;\n        if (typeof controller[methodName] == \"function\") {\n            controller[methodName](...args);\n        }\n    }\n}\n\nfunction bless(constructor) {\n    return shadow(constructor, getBlessedProperties(constructor));\n}\nfunction shadow(constructor, properties) {\n    const shadowConstructor = extend(constructor);\n    const shadowProperties = getShadowProperties(constructor.prototype, properties);\n    Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n    return shadowConstructor;\n}\nfunction getBlessedProperties(constructor) {\n    const blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n    return blessings.reduce((blessedProperties, blessing) => {\n        const properties = blessing(constructor);\n        for (const key in properties) {\n            const descriptor = blessedProperties[key] || {};\n            blessedProperties[key] = Object.assign(descriptor, properties[key]);\n        }\n        return blessedProperties;\n    }, {});\n}\nfunction getShadowProperties(prototype, properties) {\n    return getOwnKeys(properties).reduce((shadowProperties, key) => {\n        const descriptor = getShadowedDescriptor(prototype, properties, key);\n        if (descriptor) {\n            Object.assign(shadowProperties, { [key]: descriptor });\n        }\n        return shadowProperties;\n    }, {});\n}\nfunction getShadowedDescriptor(prototype, properties, key) {\n    const shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n    const shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n    if (!shadowedByValue) {\n        const descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n        if (shadowingDescriptor) {\n            descriptor.get = shadowingDescriptor.get || descriptor.get;\n            descriptor.set = shadowingDescriptor.set || descriptor.set;\n        }\n        return descriptor;\n    }\n}\nconst getOwnKeys = (() => {\n    if (typeof Object.getOwnPropertySymbols == \"function\") {\n        return (object) => [...Object.getOwnPropertyNames(object), ...Object.getOwnPropertySymbols(object)];\n    }\n    else {\n        return Object.getOwnPropertyNames;\n    }\n})();\nconst extend = (() => {\n    function extendWithReflect(constructor) {\n        function extended() {\n            return Reflect.construct(constructor, arguments, new.target);\n        }\n        extended.prototype = Object.create(constructor.prototype, {\n            constructor: { value: extended },\n        });\n        Reflect.setPrototypeOf(extended, constructor);\n        return extended;\n    }\n    function testReflectExtension() {\n        const a = function () {\n            this.a.call(this);\n        };\n        const b = extendWithReflect(a);\n        b.prototype.a = function () { };\n        return new b();\n    }\n    try {\n        testReflectExtension();\n        return extendWithReflect;\n    }\n    catch (error) {\n        return (constructor) => class extended extends constructor {\n        };\n    }\n})();\n\nfunction blessDefinition(definition) {\n    return {\n        identifier: definition.identifier,\n        controllerConstructor: bless(definition.controllerConstructor),\n    };\n}\n\nclass Module {\n    constructor(application, definition) {\n        this.application = application;\n        this.definition = blessDefinition(definition);\n        this.contextsByScope = new WeakMap();\n        this.connectedContexts = new Set();\n    }\n    get identifier() {\n        return this.definition.identifier;\n    }\n    get controllerConstructor() {\n        return this.definition.controllerConstructor;\n    }\n    get contexts() {\n        return Array.from(this.connectedContexts);\n    }\n    connectContextForScope(scope) {\n        const context = this.fetchContextForScope(scope);\n        this.connectedContexts.add(context);\n        context.connect();\n    }\n    disconnectContextForScope(scope) {\n        const context = this.contextsByScope.get(scope);\n        if (context) {\n            this.connectedContexts.delete(context);\n            context.disconnect();\n        }\n    }\n    fetchContextForScope(scope) {\n        let context = this.contextsByScope.get(scope);\n        if (!context) {\n            context = new Context(this, scope);\n            this.contextsByScope.set(scope, context);\n        }\n        return context;\n    }\n}\n\nclass ClassMap {\n    constructor(scope) {\n        this.scope = scope;\n    }\n    has(name) {\n        return this.data.has(this.getDataKey(name));\n    }\n    get(name) {\n        return this.getAll(name)[0];\n    }\n    getAll(name) {\n        const tokenString = this.data.get(this.getDataKey(name)) || \"\";\n        return tokenize(tokenString);\n    }\n    getAttributeName(name) {\n        return this.data.getAttributeNameForKey(this.getDataKey(name));\n    }\n    getDataKey(name) {\n        return `${name}-class`;\n    }\n    get data() {\n        return this.scope.data;\n    }\n}\n\nclass DataMap {\n    constructor(scope) {\n        this.scope = scope;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get(key) {\n        const name = this.getAttributeNameForKey(key);\n        return this.element.getAttribute(name);\n    }\n    set(key, value) {\n        const name = this.getAttributeNameForKey(key);\n        this.element.setAttribute(name, value);\n        return this.get(key);\n    }\n    has(key) {\n        const name = this.getAttributeNameForKey(key);\n        return this.element.hasAttribute(name);\n    }\n    delete(key) {\n        if (this.has(key)) {\n            const name = this.getAttributeNameForKey(key);\n            this.element.removeAttribute(name);\n            return true;\n        }\n        else {\n            return false;\n        }\n    }\n    getAttributeNameForKey(key) {\n        return `data-${this.identifier}-${dasherize(key)}`;\n    }\n}\n\nclass Guide {\n    constructor(logger) {\n        this.warnedKeysByObject = new WeakMap();\n        this.logger = logger;\n    }\n    warn(object, key, message) {\n        let warnedKeys = this.warnedKeysByObject.get(object);\n        if (!warnedKeys) {\n            warnedKeys = new Set();\n            this.warnedKeysByObject.set(object, warnedKeys);\n        }\n        if (!warnedKeys.has(key)) {\n            warnedKeys.add(key);\n            this.logger.warn(message, object);\n        }\n    }\n}\n\nfunction attributeValueContainsToken(attributeName, token) {\n    return `[${attributeName}~=\"${token}\"]`;\n}\n\nclass TargetSet {\n    constructor(scope) {\n        this.scope = scope;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get schema() {\n        return this.scope.schema;\n    }\n    has(targetName) {\n        return this.find(targetName) != null;\n    }\n    find(...targetNames) {\n        return targetNames.reduce((target, targetName) => target || this.findTarget(targetName) || this.findLegacyTarget(targetName), undefined);\n    }\n    findAll(...targetNames) {\n        return targetNames.reduce((targets, targetName) => [\n            ...targets,\n            ...this.findAllTargets(targetName),\n            ...this.findAllLegacyTargets(targetName),\n        ], []);\n    }\n    findTarget(targetName) {\n        const selector = this.getSelectorForTargetName(targetName);\n        return this.scope.findElement(selector);\n    }\n    findAllTargets(targetName) {\n        const selector = this.getSelectorForTargetName(targetName);\n        return this.scope.findAllElements(selector);\n    }\n    getSelectorForTargetName(targetName) {\n        const attributeName = this.schema.targetAttributeForScope(this.identifier);\n        return attributeValueContainsToken(attributeName, targetName);\n    }\n    findLegacyTarget(targetName) {\n        const selector = this.getLegacySelectorForTargetName(targetName);\n        return this.deprecate(this.scope.findElement(selector), targetName);\n    }\n    findAllLegacyTargets(targetName) {\n        const selector = this.getLegacySelectorForTargetName(targetName);\n        return this.scope.findAllElements(selector).map((element) => this.deprecate(element, targetName));\n    }\n    getLegacySelectorForTargetName(targetName) {\n        const targetDescriptor = `${this.identifier}.${targetName}`;\n        return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n    }\n    deprecate(element, targetName) {\n        if (element) {\n            const { identifier } = this;\n            const attributeName = this.schema.targetAttribute;\n            const revisedAttributeName = this.schema.targetAttributeForScope(identifier);\n            this.guide.warn(element, `target:${targetName}`, `Please replace ${attributeName}=\"${identifier}.${targetName}\" with ${revisedAttributeName}=\"${targetName}\". ` +\n                `The ${attributeName} attribute is deprecated and will be removed in a future version of Stimulus.`);\n        }\n        return element;\n    }\n    get guide() {\n        return this.scope.guide;\n    }\n}\n\nclass OutletSet {\n    constructor(scope, controllerElement) {\n        this.scope = scope;\n        this.controllerElement = controllerElement;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get schema() {\n        return this.scope.schema;\n    }\n    has(outletName) {\n        return this.find(outletName) != null;\n    }\n    find(...outletNames) {\n        return outletNames.reduce((outlet, outletName) => outlet || this.findOutlet(outletName), undefined);\n    }\n    findAll(...outletNames) {\n        return outletNames.reduce((outlets, outletName) => [...outlets, ...this.findAllOutlets(outletName)], []);\n    }\n    getSelectorForOutletName(outletName) {\n        const attributeName = this.schema.outletAttributeForScope(this.identifier, outletName);\n        return this.controllerElement.getAttribute(attributeName);\n    }\n    findOutlet(outletName) {\n        const selector = this.getSelectorForOutletName(outletName);\n        if (selector)\n            return this.findElement(selector, outletName);\n    }\n    findAllOutlets(outletName) {\n        const selector = this.getSelectorForOutletName(outletName);\n        return selector ? this.findAllElements(selector, outletName) : [];\n    }\n    findElement(selector, outletName) {\n        const elements = this.scope.queryElements(selector);\n        return elements.filter((element) => this.matchesElement(element, selector, outletName))[0];\n    }\n    findAllElements(selector, outletName) {\n        const elements = this.scope.queryElements(selector);\n        return elements.filter((element) => this.matchesElement(element, selector, outletName));\n    }\n    matchesElement(element, selector, outletName) {\n        const controllerAttribute = element.getAttribute(this.scope.schema.controllerAttribute) || \"\";\n        return element.matches(selector) && controllerAttribute.split(\" \").includes(outletName);\n    }\n}\n\nclass Scope {\n    constructor(schema, element, identifier, logger) {\n        this.targets = new TargetSet(this);\n        this.classes = new ClassMap(this);\n        this.data = new DataMap(this);\n        this.containsElement = (element) => {\n            return element.closest(this.controllerSelector) === this.element;\n        };\n        this.schema = schema;\n        this.element = element;\n        this.identifier = identifier;\n        this.guide = new Guide(logger);\n        this.outlets = new OutletSet(this.documentScope, element);\n    }\n    findElement(selector) {\n        return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement);\n    }\n    findAllElements(selector) {\n        return [\n            ...(this.element.matches(selector) ? [this.element] : []),\n            ...this.queryElements(selector).filter(this.containsElement),\n        ];\n    }\n    queryElements(selector) {\n        return Array.from(this.element.querySelectorAll(selector));\n    }\n    get controllerSelector() {\n        return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n    }\n    get isDocumentScope() {\n        return this.element === document.documentElement;\n    }\n    get documentScope() {\n        return this.isDocumentScope\n            ? this\n            : new Scope(this.schema, document.documentElement, this.identifier, this.guide.logger);\n    }\n}\n\nclass ScopeObserver {\n    constructor(element, schema, delegate) {\n        this.element = element;\n        this.schema = schema;\n        this.delegate = delegate;\n        this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n        this.scopesByIdentifierByElement = new WeakMap();\n        this.scopeReferenceCounts = new WeakMap();\n    }\n    start() {\n        this.valueListObserver.start();\n    }\n    stop() {\n        this.valueListObserver.stop();\n    }\n    get controllerAttribute() {\n        return this.schema.controllerAttribute;\n    }\n    parseValueForToken(token) {\n        const { element, content: identifier } = token;\n        const scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n        let scope = scopesByIdentifier.get(identifier);\n        if (!scope) {\n            scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n            scopesByIdentifier.set(identifier, scope);\n        }\n        return scope;\n    }\n    elementMatchedValue(element, value) {\n        const referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n        this.scopeReferenceCounts.set(value, referenceCount);\n        if (referenceCount == 1) {\n            this.delegate.scopeConnected(value);\n        }\n    }\n    elementUnmatchedValue(element, value) {\n        const referenceCount = this.scopeReferenceCounts.get(value);\n        if (referenceCount) {\n            this.scopeReferenceCounts.set(value, referenceCount - 1);\n            if (referenceCount == 1) {\n                this.delegate.scopeDisconnected(value);\n            }\n        }\n    }\n    fetchScopesByIdentifierForElement(element) {\n        let scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n        if (!scopesByIdentifier) {\n            scopesByIdentifier = new Map();\n            this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n        }\n        return scopesByIdentifier;\n    }\n}\n\nclass Router {\n    constructor(application) {\n        this.application = application;\n        this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n        this.scopesByIdentifier = new Multimap();\n        this.modulesByIdentifier = new Map();\n    }\n    get element() {\n        return this.application.element;\n    }\n    get schema() {\n        return this.application.schema;\n    }\n    get logger() {\n        return this.application.logger;\n    }\n    get controllerAttribute() {\n        return this.schema.controllerAttribute;\n    }\n    get modules() {\n        return Array.from(this.modulesByIdentifier.values());\n    }\n    get contexts() {\n        return this.modules.reduce((contexts, module) => contexts.concat(module.contexts), []);\n    }\n    start() {\n        this.scopeObserver.start();\n    }\n    stop() {\n        this.scopeObserver.stop();\n    }\n    loadDefinition(definition) {\n        this.unloadIdentifier(definition.identifier);\n        const module = new Module(this.application, definition);\n        this.connectModule(module);\n        const afterLoad = definition.controllerConstructor.afterLoad;\n        if (afterLoad) {\n            afterLoad(definition.identifier, this.application);\n        }\n    }\n    unloadIdentifier(identifier) {\n        const module = this.modulesByIdentifier.get(identifier);\n        if (module) {\n            this.disconnectModule(module);\n        }\n    }\n    getContextForElementAndIdentifier(element, identifier) {\n        const module = this.modulesByIdentifier.get(identifier);\n        if (module) {\n            return module.contexts.find((context) => context.element == element);\n        }\n    }\n    handleError(error, message, detail) {\n        this.application.handleError(error, message, detail);\n    }\n    createScopeForElementAndIdentifier(element, identifier) {\n        return new Scope(this.schema, element, identifier, this.logger);\n    }\n    scopeConnected(scope) {\n        this.scopesByIdentifier.add(scope.identifier, scope);\n        const module = this.modulesByIdentifier.get(scope.identifier);\n        if (module) {\n            module.connectContextForScope(scope);\n        }\n    }\n    scopeDisconnected(scope) {\n        this.scopesByIdentifier.delete(scope.identifier, scope);\n        const module = this.modulesByIdentifier.get(scope.identifier);\n        if (module) {\n            module.disconnectContextForScope(scope);\n        }\n    }\n    connectModule(module) {\n        this.modulesByIdentifier.set(module.identifier, module);\n        const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n        scopes.forEach((scope) => module.connectContextForScope(scope));\n    }\n    disconnectModule(module) {\n        this.modulesByIdentifier.delete(module.identifier);\n        const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n        scopes.forEach((scope) => module.disconnectContextForScope(scope));\n    }\n}\n\nconst defaultSchema = {\n    controllerAttribute: \"data-controller\",\n    actionAttribute: \"data-action\",\n    targetAttribute: \"data-target\",\n    targetAttributeForScope: (identifier) => `data-${identifier}-target`,\n    outletAttributeForScope: (identifier, outlet) => `data-${identifier}-${outlet}-outlet`,\n    keyMappings: Object.assign(Object.assign({ enter: \"Enter\", tab: \"Tab\", esc: \"Escape\", space: \" \", up: \"ArrowUp\", down: \"ArrowDown\", left: \"ArrowLeft\", right: \"ArrowRight\", home: \"Home\", end: \"End\" }, objectFromEntries(\"abcdefghijklmnopqrstuvwxyz\".split(\"\").map((c) => [c, c]))), objectFromEntries(\"0123456789\".split(\"\").map((n) => [n, n]))),\n};\nfunction objectFromEntries(array) {\n    return array.reduce((memo, [k, v]) => (Object.assign(Object.assign({}, memo), { [k]: v })), {});\n}\n\nclass Application {\n    constructor(element = document.documentElement, schema = defaultSchema) {\n        this.logger = console;\n        this.debug = false;\n        this.logDebugActivity = (identifier, functionName, detail = {}) => {\n            if (this.debug) {\n                this.logFormattedMessage(identifier, functionName, detail);\n            }\n        };\n        this.element = element;\n        this.schema = schema;\n        this.dispatcher = new Dispatcher(this);\n        this.router = new Router(this);\n        this.actionDescriptorFilters = Object.assign({}, defaultActionDescriptorFilters);\n    }\n    static start(element, schema) {\n        const application = new this(element, schema);\n        application.start();\n        return application;\n    }\n    async start() {\n        await domReady();\n        this.logDebugActivity(\"application\", \"starting\");\n        this.dispatcher.start();\n        this.router.start();\n        this.logDebugActivity(\"application\", \"start\");\n    }\n    stop() {\n        this.logDebugActivity(\"application\", \"stopping\");\n        this.dispatcher.stop();\n        this.router.stop();\n        this.logDebugActivity(\"application\", \"stop\");\n    }\n    register(identifier, controllerConstructor) {\n        this.load({ identifier, controllerConstructor });\n    }\n    registerActionOption(name, filter) {\n        this.actionDescriptorFilters[name] = filter;\n    }\n    load(head, ...rest) {\n        const definitions = Array.isArray(head) ? head : [head, ...rest];\n        definitions.forEach((definition) => {\n            if (definition.controllerConstructor.shouldLoad) {\n                this.router.loadDefinition(definition);\n            }\n        });\n    }\n    unload(head, ...rest) {\n        const identifiers = Array.isArray(head) ? head : [head, ...rest];\n        identifiers.forEach((identifier) => this.router.unloadIdentifier(identifier));\n    }\n    get controllers() {\n        return this.router.contexts.map((context) => context.controller);\n    }\n    getControllerForElementAndIdentifier(element, identifier) {\n        const context = this.router.getContextForElementAndIdentifier(element, identifier);\n        return context ? context.controller : null;\n    }\n    handleError(error, message, detail) {\n        var _a;\n        this.logger.error(`%s\\n\\n%o\\n\\n%o`, message, error, detail);\n        (_a = window.onerror) === null || _a === void 0 ? void 0 : _a.call(window, message, \"\", 0, 0, error);\n    }\n    logFormattedMessage(identifier, functionName, detail = {}) {\n        detail = Object.assign({ application: this }, detail);\n        this.logger.groupCollapsed(`${identifier} #${functionName}`);\n        this.logger.log(\"details:\", Object.assign({}, detail));\n        this.logger.groupEnd();\n    }\n}\nfunction domReady() {\n    return new Promise((resolve) => {\n        if (document.readyState == \"loading\") {\n            document.addEventListener(\"DOMContentLoaded\", () => resolve());\n        }\n        else {\n            resolve();\n        }\n    });\n}\n\nfunction ClassPropertiesBlessing(constructor) {\n    const classes = readInheritableStaticArrayValues(constructor, \"classes\");\n    return classes.reduce((properties, classDefinition) => {\n        return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n    }, {});\n}\nfunction propertiesForClassDefinition(key) {\n    return {\n        [`${key}Class`]: {\n            get() {\n                const { classes } = this;\n                if (classes.has(key)) {\n                    return classes.get(key);\n                }\n                else {\n                    const attribute = classes.getAttributeName(key);\n                    throw new Error(`Missing attribute \"${attribute}\"`);\n                }\n            },\n        },\n        [`${key}Classes`]: {\n            get() {\n                return this.classes.getAll(key);\n            },\n        },\n        [`has${capitalize(key)}Class`]: {\n            get() {\n                return this.classes.has(key);\n            },\n        },\n    };\n}\n\nfunction OutletPropertiesBlessing(constructor) {\n    const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n    return outlets.reduce((properties, outletDefinition) => {\n        return Object.assign(properties, propertiesForOutletDefinition(outletDefinition));\n    }, {});\n}\nfunction propertiesForOutletDefinition(name) {\n    const camelizedName = namespaceCamelize(name);\n    return {\n        [`${camelizedName}Outlet`]: {\n            get() {\n                const outlet = this.outlets.find(name);\n                if (outlet) {\n                    const outletController = this.application.getControllerForElementAndIdentifier(outlet, name);\n                    if (outletController) {\n                        return outletController;\n                    }\n                    else {\n                        throw new Error(`Missing \"data-controller=${name}\" attribute on outlet element for \"${this.identifier}\" controller`);\n                    }\n                }\n                throw new Error(`Missing outlet element \"${name}\" for \"${this.identifier}\" controller`);\n            },\n        },\n        [`${camelizedName}Outlets`]: {\n            get() {\n                const outlets = this.outlets.findAll(name);\n                if (outlets.length > 0) {\n                    return outlets\n                        .map((outlet) => {\n                        const controller = this.application.getControllerForElementAndIdentifier(outlet, name);\n                        if (controller) {\n                            return controller;\n                        }\n                        else {\n                            console.warn(`The provided outlet element is missing the outlet controller \"${name}\" for \"${this.identifier}\"`, outlet);\n                        }\n                    })\n                        .filter((controller) => controller);\n                }\n                return [];\n            },\n        },\n        [`${camelizedName}OutletElement`]: {\n            get() {\n                const outlet = this.outlets.find(name);\n                if (outlet) {\n                    return outlet;\n                }\n                else {\n                    throw new Error(`Missing outlet element \"${name}\" for \"${this.identifier}\" controller`);\n                }\n            },\n        },\n        [`${camelizedName}OutletElements`]: {\n            get() {\n                return this.outlets.findAll(name);\n            },\n        },\n        [`has${capitalize(camelizedName)}Outlet`]: {\n            get() {\n                return this.outlets.has(name);\n            },\n        },\n    };\n}\n\nfunction TargetPropertiesBlessing(constructor) {\n    const targets = readInheritableStaticArrayValues(constructor, \"targets\");\n    return targets.reduce((properties, targetDefinition) => {\n        return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n    }, {});\n}\nfunction propertiesForTargetDefinition(name) {\n    return {\n        [`${name}Target`]: {\n            get() {\n                const target = this.targets.find(name);\n                if (target) {\n                    return target;\n                }\n                else {\n                    throw new Error(`Missing target element \"${name}\" for \"${this.identifier}\" controller`);\n                }\n            },\n        },\n        [`${name}Targets`]: {\n            get() {\n                return this.targets.findAll(name);\n            },\n        },\n        [`has${capitalize(name)}Target`]: {\n            get() {\n                return this.targets.has(name);\n            },\n        },\n    };\n}\n\nfunction ValuePropertiesBlessing(constructor) {\n    const valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n    const propertyDescriptorMap = {\n        valueDescriptorMap: {\n            get() {\n                return valueDefinitionPairs.reduce((result, valueDefinitionPair) => {\n                    const valueDescriptor = parseValueDefinitionPair(valueDefinitionPair, this.identifier);\n                    const attributeName = this.data.getAttributeNameForKey(valueDescriptor.key);\n                    return Object.assign(result, { [attributeName]: valueDescriptor });\n                }, {});\n            },\n        },\n    };\n    return valueDefinitionPairs.reduce((properties, valueDefinitionPair) => {\n        return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n    }, propertyDescriptorMap);\n}\nfunction propertiesForValueDefinitionPair(valueDefinitionPair, controller) {\n    const definition = parseValueDefinitionPair(valueDefinitionPair, controller);\n    const { key, name, reader: read, writer: write } = definition;\n    return {\n        [name]: {\n            get() {\n                const value = this.data.get(key);\n                if (value !== null) {\n                    return read(value);\n                }\n                else {\n                    return definition.defaultValue;\n                }\n            },\n            set(value) {\n                if (value === undefined) {\n                    this.data.delete(key);\n                }\n                else {\n                    this.data.set(key, write(value));\n                }\n            },\n        },\n        [`has${capitalize(name)}`]: {\n            get() {\n                return this.data.has(key) || definition.hasCustomDefaultValue;\n            },\n        },\n    };\n}\nfunction parseValueDefinitionPair([token, typeDefinition], controller) {\n    return valueDescriptorForTokenAndTypeDefinition({\n        controller,\n        token,\n        typeDefinition,\n    });\n}\nfunction parseValueTypeConstant(constant) {\n    switch (constant) {\n        case Array:\n            return \"array\";\n        case Boolean:\n            return \"boolean\";\n        case Number:\n            return \"number\";\n        case Object:\n            return \"object\";\n        case String:\n            return \"string\";\n    }\n}\nfunction parseValueTypeDefault(defaultValue) {\n    switch (typeof defaultValue) {\n        case \"boolean\":\n            return \"boolean\";\n        case \"number\":\n            return \"number\";\n        case \"string\":\n            return \"string\";\n    }\n    if (Array.isArray(defaultValue))\n        return \"array\";\n    if (Object.prototype.toString.call(defaultValue) === \"[object Object]\")\n        return \"object\";\n}\nfunction parseValueTypeObject(payload) {\n    const typeFromObject = parseValueTypeConstant(payload.typeObject.type);\n    if (!typeFromObject)\n        return;\n    const defaultValueType = parseValueTypeDefault(payload.typeObject.default);\n    if (typeFromObject !== defaultValueType) {\n        const propertyPath = payload.controller ? `${payload.controller}.${payload.token}` : payload.token;\n        throw new Error(`The specified default value for the Stimulus Value \"${propertyPath}\" must match the defined type \"${typeFromObject}\". The provided default value of \"${payload.typeObject.default}\" is of type \"${defaultValueType}\".`);\n    }\n    return typeFromObject;\n}\nfunction parseValueTypeDefinition(payload) {\n    const typeFromObject = parseValueTypeObject({\n        controller: payload.controller,\n        token: payload.token,\n        typeObject: payload.typeDefinition,\n    });\n    const typeFromDefaultValue = parseValueTypeDefault(payload.typeDefinition);\n    const typeFromConstant = parseValueTypeConstant(payload.typeDefinition);\n    const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n    if (type)\n        return type;\n    const propertyPath = payload.controller ? `${payload.controller}.${payload.typeDefinition}` : payload.token;\n    throw new Error(`Unknown value type \"${propertyPath}\" for \"${payload.token}\" value`);\n}\nfunction defaultValueForDefinition(typeDefinition) {\n    const constant = parseValueTypeConstant(typeDefinition);\n    if (constant)\n        return defaultValuesByType[constant];\n    const defaultValue = typeDefinition.default;\n    if (defaultValue !== undefined)\n        return defaultValue;\n    return typeDefinition;\n}\nfunction valueDescriptorForTokenAndTypeDefinition(payload) {\n    const key = `${dasherize(payload.token)}-value`;\n    const type = parseValueTypeDefinition(payload);\n    return {\n        type,\n        key,\n        name: camelize(key),\n        get defaultValue() {\n            return defaultValueForDefinition(payload.typeDefinition);\n        },\n        get hasCustomDefaultValue() {\n            return parseValueTypeDefault(payload.typeDefinition) !== undefined;\n        },\n        reader: readers[type],\n        writer: writers[type] || writers.default,\n    };\n}\nconst defaultValuesByType = {\n    get array() {\n        return [];\n    },\n    boolean: false,\n    number: 0,\n    get object() {\n        return {};\n    },\n    string: \"\",\n};\nconst readers = {\n    array(value) {\n        const array = JSON.parse(value);\n        if (!Array.isArray(array)) {\n            throw new TypeError(`expected value of type \"array\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(array)}\"`);\n        }\n        return array;\n    },\n    boolean(value) {\n        return !(value == \"0\" || String(value).toLowerCase() == \"false\");\n    },\n    number(value) {\n        return Number(value);\n    },\n    object(value) {\n        const object = JSON.parse(value);\n        if (object === null || typeof object != \"object\" || Array.isArray(object)) {\n            throw new TypeError(`expected value of type \"object\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(object)}\"`);\n        }\n        return object;\n    },\n    string(value) {\n        return value;\n    },\n};\nconst writers = {\n    default: writeString,\n    array: writeJSON,\n    object: writeJSON,\n};\nfunction writeJSON(value) {\n    return JSON.stringify(value);\n}\nfunction writeString(value) {\n    return `${value}`;\n}\n\nclass Controller {\n    constructor(context) {\n        this.context = context;\n    }\n    static get shouldLoad() {\n        return true;\n    }\n    static afterLoad(_identifier, _application) {\n        return;\n    }\n    get application() {\n        return this.context.application;\n    }\n    get scope() {\n        return this.context.scope;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get targets() {\n        return this.scope.targets;\n    }\n    get outlets() {\n        return this.scope.outlets;\n    }\n    get classes() {\n        return this.scope.classes;\n    }\n    get data() {\n        return this.scope.data;\n    }\n    initialize() {\n    }\n    connect() {\n    }\n    disconnect() {\n    }\n    dispatch(eventName, { target = this.element, detail = {}, prefix = this.identifier, bubbles = true, cancelable = true } = {}) {\n        const type = prefix ? `${prefix}:${eventName}` : eventName;\n        const event = new CustomEvent(type, { detail, bubbles, cancelable });\n        target.dispatchEvent(event);\n        return event;\n    }\n}\nController.blessings = [\n    ClassPropertiesBlessing,\n    TargetPropertiesBlessing,\n    ValuePropertiesBlessing,\n    OutletPropertiesBlessing,\n];\nController.targets = [];\nController.outlets = [];\nController.values = {};\n\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, SelectorObserver, StringMapObserver, TokenListObserver, ValueListObserver, add, defaultSchema, del, fetch, prune };\n", "import { Application } from \"@hotwired/stimulus\"\n\nconst application = Application.start()\n\n// Configure Stimulus development experience\napplication.debug = false\nwindow.Stimulus   = application\n\nexport { application }\n", "import { Controller } from \"@hotwired/stimulus\"\nrequire('../../../node_modules/aos/dist/aos');\nimport AOS from 'aos';\n\nexport default class extends Controller {\n  connect() {\n    AOS.init();\n  }\n}\n", "var objectExtend = extend;\n\n/*\n  var obj = {a: 3, b: 5};\n  extend(obj, {a: 4, c: 8}); // {a: 4, b: 5, c: 8}\n  obj; // {a: 4, b: 5, c: 8}\n\n  var obj = {a: 3, b: 5};\n  extend({}, obj, {a: 4, c: 8}); // {a: 4, b: 5, c: 8}\n  obj; // {a: 3, b: 5}\n\n  var arr = [1, 2, 3];\n  var obj = {a: 3, b: 5};\n  extend(obj, {c: arr}); // {a: 3, b: 5, c: [1, 2, 3]}\n  arr.push(4);\n  obj; // {a: 3, b: 5, c: [1, 2, 3, 4]}\n\n  var arr = [1, 2, 3];\n  var obj = {a: 3, b: 5};\n  extend(true, obj, {c: arr}); // {a: 3, b: 5, c: [1, 2, 3]}\n  arr.push(4);\n  obj; // {a: 3, b: 5, c: [1, 2, 3]}\n\n  extend({a: 4, b: 5}); // {a: 4, b: 5}\n  extend({a: 4, b: 5}, 3); {a: 4, b: 5}\n  extend({a: 4, b: 5}, true); {a: 4, b: 5}\n  extend('hello', {a: 4, b: 5}); // throws\n  extend(3, {a: 4, b: 5}); // throws\n*/\n\nfunction extend(/* [deep], obj1, obj2, [objn] */) {\n  var args = [].slice.call(arguments);\n  var deep = false;\n  if (typeof args[0] == 'boolean') {\n    deep = args.shift();\n  }\n  var result = args[0];\n  if (isUnextendable(result)) {\n    throw new Error('extendee must be an object');\n  }\n  var extenders = args.slice(1);\n  var len = extenders.length;\n  for (var i = 0; i < len; i++) {\n    var extender = extenders[i];\n    for (var key in extender) {\n      if (Object.prototype.hasOwnProperty.call(extender, key)) {\n        var value = extender[key];\n        if (deep && isCloneable(value)) {\n          var base = Array.isArray(value) ? [] : {};\n          result[key] = extend(\n            true,\n            Object.prototype.hasOwnProperty.call(result, key) && !isUnextendable(result[key])\n              ? result[key]\n              : base,\n            value\n          );\n        } else {\n          result[key] = value;\n        }\n      }\n    }\n  }\n  return result;\n}\n\nfunction isCloneable(obj) {\n  return Array.isArray(obj) || {}.toString.call(obj) == '[object Object]';\n}\n\nfunction isUnextendable(val) {\n  return !val || (typeof val != 'object' && typeof val != 'function');\n}\n\nexport {objectExtend as default};\n", "import extend from \"just-extend\";\nimport Emitter from \"./emitter\";\nimport defaultOptions from \"./options\";\n\nexport default class Dropzone extends Emitter {\n  static initClass() {\n    // Exposing the emitter class, mainly for tests\n    this.prototype.Emitter = Emitter;\n\n    /*\n     This is a list of all available events you can register on a dropzone object.\n\n     You can register an event handler like this:\n\n     dropzone.on(\"dragEnter\", function() { });\n\n     */\n    this.prototype.events = [\n      \"drop\",\n      \"dragstart\",\n      \"dragend\",\n      \"dragenter\",\n      \"dragover\",\n      \"dragleave\",\n      \"addedfile\",\n      \"addedfiles\",\n      \"removedfile\",\n      \"thumbnail\",\n      \"error\",\n      \"errormultiple\",\n      \"processing\",\n      \"processingmultiple\",\n      \"uploadprogress\",\n      \"totaluploadprogress\",\n      \"sending\",\n      \"sendingmultiple\",\n      \"success\",\n      \"successmultiple\",\n      \"canceled\",\n      \"canceledmultiple\",\n      \"complete\",\n      \"completemultiple\",\n      \"reset\",\n      \"maxfilesexceeded\",\n      \"maxfilesreached\",\n      \"queuecomplete\",\n    ];\n\n    this.prototype._thumbnailQueue = [];\n    this.prototype._processingThumbnail = false;\n  }\n\n  constructor(el, options) {\n    super();\n    let fallback, left;\n    this.element = el;\n\n    this.clickableElements = [];\n    this.listeners = [];\n    this.files = []; // All files\n\n    if (typeof this.element === \"string\") {\n      this.element = document.querySelector(this.element);\n    }\n\n    // Not checking if instance of HTMLElement or Element since IE9 is extremely weird.\n    if (!this.element || this.element.nodeType == null) {\n      throw new Error(\"Invalid dropzone element.\");\n    }\n\n    if (this.element.dropzone) {\n      throw new Error(\"Dropzone already attached.\");\n    }\n\n    // Now add this dropzone to the instances.\n    Dropzone.instances.push(this);\n\n    // Put the dropzone inside the element itself.\n    this.element.dropzone = this;\n\n    let elementOptions =\n      (left = Dropzone.optionsForElement(this.element)) != null ? left : {};\n\n    this.options = extend(\n      true,\n      {},\n      defaultOptions,\n      elementOptions,\n      options != null ? options : {}\n    );\n\n    this.options.previewTemplate = this.options.previewTemplate.replace(\n      /\\n*/g,\n      \"\"\n    );\n\n    // If the browser failed, just call the fallback and leave\n    if (this.options.forceFallback || !Dropzone.isBrowserSupported()) {\n      return this.options.fallback.call(this);\n    }\n\n    // @options.url = @element.getAttribute \"action\" unless @options.url?\n    if (this.options.url == null) {\n      this.options.url = this.element.getAttribute(\"action\");\n    }\n\n    if (!this.options.url) {\n      throw new Error(\"No URL provided.\");\n    }\n\n    if (this.options.acceptedFiles && this.options.acceptedMimeTypes) {\n      throw new Error(\n        \"You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated.\"\n      );\n    }\n\n    if (this.options.uploadMultiple && this.options.chunking) {\n      throw new Error(\"You cannot set both: uploadMultiple and chunking.\");\n    }\n\n    if (this.options.binaryBody && this.options.uploadMultiple) {\n      throw new Error(\"You cannot set both: binaryBody and uploadMultiple.\");\n    }\n\n    // Backwards compatibility\n    if (this.options.acceptedMimeTypes) {\n      this.options.acceptedFiles = this.options.acceptedMimeTypes;\n      delete this.options.acceptedMimeTypes;\n    }\n\n    // Backwards compatibility\n    if (this.options.renameFilename != null) {\n      this.options.renameFile = (file) =>\n        this.options.renameFilename.call(this, file.name, file);\n    }\n\n    if (typeof this.options.method === \"string\") {\n      this.options.method = this.options.method.toUpperCase();\n    }\n\n    if ((fallback = this.getExistingFallback()) && fallback.parentNode) {\n      // Remove the fallback\n      fallback.parentNode.removeChild(fallback);\n    }\n\n    // Display previews in the previewsContainer element or the Dropzone element unless explicitly set to false\n    if (this.options.previewsContainer !== false) {\n      if (this.options.previewsContainer) {\n        this.previewsContainer = Dropzone.getElement(\n          this.options.previewsContainer,\n          \"previewsContainer\"\n        );\n      } else {\n        this.previewsContainer = this.element;\n      }\n    }\n\n    if (this.options.clickable) {\n      if (this.options.clickable === true) {\n        this.clickableElements = [this.element];\n      } else {\n        this.clickableElements = Dropzone.getElements(\n          this.options.clickable,\n          \"clickable\"\n        );\n      }\n    }\n\n    this.init();\n  }\n\n  // Returns all files that have been accepted\n  getAcceptedFiles() {\n    return this.files.filter((file) => file.accepted).map((file) => file);\n  }\n\n  // Returns all files that have been rejected\n  // Not sure when that's going to be useful, but added for completeness.\n  getRejectedFiles() {\n    return this.files.filter((file) => !file.accepted).map((file) => file);\n  }\n\n  getFilesWithStatus(status) {\n    return this.files\n      .filter((file) => file.status === status)\n      .map((file) => file);\n  }\n\n  // Returns all files that are in the queue\n  getQueuedFiles() {\n    return this.getFilesWithStatus(Dropzone.QUEUED);\n  }\n\n  getUploadingFiles() {\n    return this.getFilesWithStatus(Dropzone.UPLOADING);\n  }\n\n  getAddedFiles() {\n    return this.getFilesWithStatus(Dropzone.ADDED);\n  }\n\n  // Files that are either queued or uploading\n  getActiveFiles() {\n    return this.files\n      .filter(\n        (file) =>\n          file.status === Dropzone.UPLOADING || file.status === Dropzone.QUEUED\n      )\n      .map((file) => file);\n  }\n\n  // The function that gets called when Dropzone is initialized. You\n  // can (and should) setup event listeners inside this function.\n  init() {\n    // In case it isn't set already\n    if (this.element.tagName === \"form\") {\n      this.element.setAttribute(\"enctype\", \"multipart/form-data\");\n    }\n\n    if (\n      this.element.classList.contains(\"dropzone\") &&\n      !this.element.querySelector(\".dz-message\")\n    ) {\n      this.element.appendChild(\n        Dropzone.createElement(\n          `<div class=\"dz-default dz-message\"><button class=\"dz-button\" type=\"button\">${this.options.dictDefaultMessage}</button></div>`\n        )\n      );\n    }\n\n    if (this.clickableElements.length) {\n      let setupHiddenFileInput = () => {\n        if (this.hiddenFileInput) {\n          this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput);\n        }\n        this.hiddenFileInput = document.createElement(\"input\");\n        this.hiddenFileInput.setAttribute(\"type\", \"file\");\n        if (this.options.maxFiles === null || this.options.maxFiles > 1) {\n          this.hiddenFileInput.setAttribute(\"multiple\", \"multiple\");\n        }\n        this.hiddenFileInput.className = \"dz-hidden-input\";\n\n        if (this.options.acceptedFiles !== null) {\n          this.hiddenFileInput.setAttribute(\n            \"accept\",\n            this.options.acceptedFiles\n          );\n        }\n        if (this.options.capture !== null) {\n          this.hiddenFileInput.setAttribute(\"capture\", this.options.capture);\n        }\n\n        // Making sure that no one can \"tab\" into this field.\n        this.hiddenFileInput.setAttribute(\"tabindex\", \"-1\");\n\n        // Not setting `display=\"none\"` because some browsers don't accept clicks\n        // on elements that aren't displayed.\n        this.hiddenFileInput.style.visibility = \"hidden\";\n        this.hiddenFileInput.style.position = \"absolute\";\n        this.hiddenFileInput.style.top = \"0\";\n        this.hiddenFileInput.style.left = \"0\";\n        this.hiddenFileInput.style.height = \"0\";\n        this.hiddenFileInput.style.width = \"0\";\n        Dropzone.getElement(\n          this.options.hiddenInputContainer,\n          \"hiddenInputContainer\"\n        ).appendChild(this.hiddenFileInput);\n        this.hiddenFileInput.addEventListener(\"change\", () => {\n          let { files } = this.hiddenFileInput;\n          if (files.length) {\n            for (let file of files) {\n              this.addFile(file);\n            }\n          }\n          this.emit(\"addedfiles\", files);\n          setupHiddenFileInput();\n        });\n      };\n      setupHiddenFileInput();\n    }\n\n    this.URL = window.URL !== null ? window.URL : window.webkitURL;\n\n    // Setup all event listeners on the Dropzone object itself.\n    // They're not in @setupEventListeners() because they shouldn't be removed\n    // again when the dropzone gets disabled.\n    for (let eventName of this.events) {\n      this.on(eventName, this.options[eventName]);\n    }\n\n    this.on(\"uploadprogress\", () => this.updateTotalUploadProgress());\n\n    this.on(\"removedfile\", () => this.updateTotalUploadProgress());\n\n    this.on(\"canceled\", (file) => this.emit(\"complete\", file));\n\n    // Emit a `queuecomplete` event if all files finished uploading.\n    this.on(\"complete\", (file) => {\n      if (\n        this.getAddedFiles().length === 0 &&\n        this.getUploadingFiles().length === 0 &&\n        this.getQueuedFiles().length === 0\n      ) {\n        // This needs to be deferred so that `queuecomplete` really triggers after `complete`\n        return setTimeout(() => this.emit(\"queuecomplete\"), 0);\n      }\n    });\n\n    const containsFiles = function (e) {\n      if (e.dataTransfer.types) {\n        // Because e.dataTransfer.types is an Object in\n        // IE, we need to iterate like this instead of\n        // using e.dataTransfer.types.some()\n        for (var i = 0; i < e.dataTransfer.types.length; i++) {\n          if (e.dataTransfer.types[i] === \"Files\") return true;\n        }\n      }\n      return false;\n    };\n\n    let noPropagation = function (e) {\n      // If there are no files, we don't want to stop\n      // propagation so we don't interfere with other\n      // drag and drop behaviour.\n      if (!containsFiles(e)) return;\n      e.stopPropagation();\n      if (e.preventDefault) {\n        return e.preventDefault();\n      } else {\n        return (e.returnValue = false);\n      }\n    };\n\n    // Create the listeners\n    this.listeners = [\n      {\n        element: this.element,\n        events: {\n          dragstart: (e) => {\n            return this.emit(\"dragstart\", e);\n          },\n          dragenter: (e) => {\n            noPropagation(e);\n            return this.emit(\"dragenter\", e);\n          },\n          dragover: (e) => {\n            // Makes it possible to drag files from chrome's download bar\n            // http://stackoverflow.com/questions/19526430/drag-and-drop-file-uploads-from-chrome-downloads-bar\n            // Try is required to prevent bug in Internet Explorer 11 (SCRIPT65535 exception)\n            let efct;\n            try {\n              efct = e.dataTransfer.effectAllowed;\n            } catch (error) {}\n            e.dataTransfer.dropEffect =\n              \"move\" === efct || \"linkMove\" === efct ? \"move\" : \"copy\";\n\n            noPropagation(e);\n            return this.emit(\"dragover\", e);\n          },\n          dragleave: (e) => {\n            return this.emit(\"dragleave\", e);\n          },\n          drop: (e) => {\n            noPropagation(e);\n            return this.drop(e);\n          },\n          dragend: (e) => {\n            return this.emit(\"dragend\", e);\n          },\n        },\n\n        // This is disabled right now, because the browsers don't implement it properly.\n        // \"paste\": (e) =>\n        //   noPropagation e\n        //   @paste e\n      },\n    ];\n\n    this.clickableElements.forEach((clickableElement) => {\n      return this.listeners.push({\n        element: clickableElement,\n        events: {\n          click: (evt) => {\n            // Only the actual dropzone or the message element should trigger file selection\n            if (\n              clickableElement !== this.element ||\n              evt.target === this.element ||\n              Dropzone.elementInside(\n                evt.target,\n                this.element.querySelector(\".dz-message\")\n              )\n            ) {\n              this.hiddenFileInput.click(); // Forward the click\n            }\n            return true;\n          },\n        },\n      });\n    });\n\n    this.enable();\n\n    return this.options.init.call(this);\n  }\n\n  // Not fully tested yet\n  destroy() {\n    this.disable();\n    this.removeAllFiles(true);\n    if (\n      this.hiddenFileInput != null ? this.hiddenFileInput.parentNode : undefined\n    ) {\n      this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput);\n      this.hiddenFileInput = null;\n    }\n    delete this.element.dropzone;\n    return Dropzone.instances.splice(Dropzone.instances.indexOf(this), 1);\n  }\n\n  updateTotalUploadProgress() {\n    let totalUploadProgress;\n    let totalBytesSent = 0;\n    let totalBytes = 0;\n\n    let activeFiles = this.getActiveFiles();\n\n    if (activeFiles.length) {\n      for (let file of this.getActiveFiles()) {\n        totalBytesSent += file.upload.bytesSent;\n        totalBytes += file.upload.total;\n      }\n      totalUploadProgress = (100 * totalBytesSent) / totalBytes;\n    } else {\n      totalUploadProgress = 100;\n    }\n\n    return this.emit(\n      \"totaluploadprogress\",\n      totalUploadProgress,\n      totalBytes,\n      totalBytesSent\n    );\n  }\n\n  // @options.paramName can be a function taking one parameter rather than a string.\n  // A parameter name for a file is obtained simply by calling this with an index number.\n  _getParamName(n) {\n    if (typeof this.options.paramName === \"function\") {\n      return this.options.paramName(n);\n    } else {\n      return `${this.options.paramName}${\n        this.options.uploadMultiple ? `[${n}]` : \"\"\n      }`;\n    }\n  }\n\n  // If @options.renameFile is a function,\n  // the function will be used to rename the file.name before appending it to the formData\n  _renameFile(file) {\n    if (typeof this.options.renameFile !== \"function\") {\n      return file.name;\n    }\n    return this.options.renameFile(file);\n  }\n\n  // Returns a form that can be used as fallback if the browser does not support DragnDrop\n  //\n  // If the dropzone is already a form, only the input field and button are returned. Otherwise a complete form element is provided.\n  // This code has to pass in IE7 :(\n  getFallbackForm() {\n    let existingFallback, form;\n    if ((existingFallback = this.getExistingFallback())) {\n      return existingFallback;\n    }\n\n    let fieldsString = '<div class=\"dz-fallback\">';\n    if (this.options.dictFallbackText) {\n      fieldsString += `<p>${this.options.dictFallbackText}</p>`;\n    }\n    fieldsString += `<input type=\"file\" name=\"${this._getParamName(0)}\" ${\n      this.options.uploadMultiple ? 'multiple=\"multiple\"' : undefined\n    } /><input type=\"submit\" value=\"Upload!\"></div>`;\n\n    let fields = Dropzone.createElement(fieldsString);\n    if (this.element.tagName !== \"FORM\") {\n      form = Dropzone.createElement(\n        `<form action=\"${this.options.url}\" enctype=\"multipart/form-data\" method=\"${this.options.method}\"></form>`\n      );\n      form.appendChild(fields);\n    } else {\n      // Make sure that the enctype and method attributes are set properly\n      this.element.setAttribute(\"enctype\", \"multipart/form-data\");\n      this.element.setAttribute(\"method\", this.options.method);\n    }\n    return form != null ? form : fields;\n  }\n\n  // Returns the fallback elements if they exist already\n  //\n  // This code has to pass in IE7 :(\n  getExistingFallback() {\n    let getFallback = function (elements) {\n      for (let el of elements) {\n        if (/(^| )fallback($| )/.test(el.className)) {\n          return el;\n        }\n      }\n    };\n\n    for (let tagName of [\"div\", \"form\"]) {\n      var fallback;\n      if (\n        (fallback = getFallback(this.element.getElementsByTagName(tagName)))\n      ) {\n        return fallback;\n      }\n    }\n  }\n\n  // Activates all listeners stored in @listeners\n  setupEventListeners() {\n    return this.listeners.map((elementListeners) =>\n      (() => {\n        let result = [];\n        for (let event in elementListeners.events) {\n          let listener = elementListeners.events[event];\n          result.push(\n            elementListeners.element.addEventListener(event, listener, false)\n          );\n        }\n        return result;\n      })()\n    );\n  }\n\n  // Deactivates all listeners stored in @listeners\n  removeEventListeners() {\n    return this.listeners.map((elementListeners) =>\n      (() => {\n        let result = [];\n        for (let event in elementListeners.events) {\n          let listener = elementListeners.events[event];\n          result.push(\n            elementListeners.element.removeEventListener(event, listener, false)\n          );\n        }\n        return result;\n      })()\n    );\n  }\n\n  // Removes all event listeners and cancels all files in the queue or being processed.\n  disable() {\n    this.clickableElements.forEach((element) =>\n      element.classList.remove(\"dz-clickable\")\n    );\n    this.removeEventListeners();\n    this.disabled = true;\n\n    return this.files.map((file) => this.cancelUpload(file));\n  }\n\n  enable() {\n    delete this.disabled;\n    this.clickableElements.forEach((element) =>\n      element.classList.add(\"dz-clickable\")\n    );\n    return this.setupEventListeners();\n  }\n\n  // Returns a nicely formatted filesize\n  filesize(size) {\n    let selectedSize = 0;\n    let selectedUnit = \"b\";\n\n    if (size > 0) {\n      let units = [\"tb\", \"gb\", \"mb\", \"kb\", \"b\"];\n\n      for (let i = 0; i < units.length; i++) {\n        let unit = units[i];\n        let cutoff = Math.pow(this.options.filesizeBase, 4 - i) / 10;\n\n        if (size >= cutoff) {\n          selectedSize = size / Math.pow(this.options.filesizeBase, 4 - i);\n          selectedUnit = unit;\n          break;\n        }\n      }\n\n      selectedSize = Math.round(10 * selectedSize) / 10; // Cutting of digits\n    }\n\n    return `<strong>${selectedSize}</strong> ${this.options.dictFileSizeUnits[selectedUnit]}`;\n  }\n\n  // Adds or removes the `dz-max-files-reached` class from the form.\n  _updateMaxFilesReachedClass() {\n    if (\n      this.options.maxFiles != null &&\n      this.getAcceptedFiles().length >= this.options.maxFiles\n    ) {\n      if (this.getAcceptedFiles().length === this.options.maxFiles) {\n        this.emit(\"maxfilesreached\", this.files);\n      }\n      return this.element.classList.add(\"dz-max-files-reached\");\n    } else {\n      return this.element.classList.remove(\"dz-max-files-reached\");\n    }\n  }\n\n  drop(e) {\n    if (!e.dataTransfer) {\n      return;\n    }\n    this.emit(\"drop\", e);\n\n    // Convert the FileList to an Array\n    // This is necessary for IE11\n    let files = [];\n    for (let i = 0; i < e.dataTransfer.files.length; i++) {\n      files[i] = e.dataTransfer.files[i];\n    }\n\n    // Even if it's a folder, files.length will contain the folders.\n    if (files.length) {\n      let { items } = e.dataTransfer;\n      if (items && items.length && items[0].webkitGetAsEntry != null) {\n        // The browser supports dropping of folders, so handle items instead of files\n        this._addFilesFromItems(items);\n      } else {\n        this.handleFiles(files);\n      }\n    }\n\n    this.emit(\"addedfiles\", files);\n  }\n\n  paste(e) {\n    if (\n      __guard__(e != null ? e.clipboardData : undefined, (x) => x.items) == null\n    ) {\n      return;\n    }\n\n    this.emit(\"paste\", e);\n    let { items } = e.clipboardData;\n\n    if (items.length) {\n      return this._addFilesFromItems(items);\n    }\n  }\n\n  handleFiles(files) {\n    for (let file of files) {\n      this.addFile(file);\n    }\n  }\n\n  // When a folder is dropped (or files are pasted), items must be handled\n  // instead of files.\n  _addFilesFromItems(items) {\n    return (() => {\n      let result = [];\n      for (let item of items) {\n        var entry;\n        if (\n          item.webkitGetAsEntry != null &&\n          (entry = item.webkitGetAsEntry())\n        ) {\n          if (entry.isFile) {\n            result.push(this.addFile(item.getAsFile()));\n          } else if (entry.isDirectory) {\n            // Append all files from that directory to files\n            result.push(this._addFilesFromDirectory(entry, entry.name));\n          } else {\n            result.push(undefined);\n          }\n        } else if (item.getAsFile != null) {\n          if (item.kind == null || item.kind === \"file\") {\n            result.push(this.addFile(item.getAsFile()));\n          } else {\n            result.push(undefined);\n          }\n        } else {\n          result.push(undefined);\n        }\n      }\n      return result;\n    })();\n  }\n\n  // Goes through the directory, and adds each file it finds recursively\n  _addFilesFromDirectory(directory, path) {\n    let dirReader = directory.createReader();\n\n    let errorHandler = (error) =>\n      __guardMethod__(console, \"log\", (o) => o.log(error));\n\n    var readEntries = () => {\n      return dirReader.readEntries((entries) => {\n        if (entries.length > 0) {\n          for (let entry of entries) {\n            if (entry.isFile) {\n              entry.file((file) => {\n                if (\n                  this.options.ignoreHiddenFiles &&\n                  file.name.substring(0, 1) === \".\"\n                ) {\n                  return;\n                }\n                file.fullPath = `${path}/${file.name}`;\n                return this.addFile(file);\n              });\n            } else if (entry.isDirectory) {\n              this._addFilesFromDirectory(entry, `${path}/${entry.name}`);\n            }\n          }\n\n          // Recursively call readEntries() again, since browser only handle\n          // the first 100 entries.\n          // See: https://developer.mozilla.org/en-US/docs/Web/API/DirectoryReader#readEntries\n          readEntries();\n        }\n        return null;\n      }, errorHandler);\n    };\n\n    return readEntries();\n  }\n\n  // If `done()` is called without argument the file is accepted\n  // If you call it with an error message, the file is rejected\n  // (This allows for asynchronous validation)\n  //\n  // This function checks the filesize, and if the file.type passes the\n  // `acceptedFiles` check.\n  accept(file, done) {\n    if (\n      this.options.maxFilesize &&\n      file.size > this.options.maxFilesize * 1024 * 1024\n    ) {\n      done(\n        this.options.dictFileTooBig\n          .replace(\"{{filesize}}\", Math.round(file.size / 1024 / 10.24) / 100)\n          .replace(\"{{maxFilesize}}\", this.options.maxFilesize)\n      );\n    } else if (!Dropzone.isValidFile(file, this.options.acceptedFiles)) {\n      done(this.options.dictInvalidFileType);\n    } else if (\n      this.options.maxFiles != null &&\n      this.getAcceptedFiles().length >= this.options.maxFiles\n    ) {\n      done(\n        this.options.dictMaxFilesExceeded.replace(\n          \"{{maxFiles}}\",\n          this.options.maxFiles\n        )\n      );\n      this.emit(\"maxfilesexceeded\", file);\n    } else {\n      this.options.accept.call(this, file, done);\n    }\n  }\n\n  addFile(file) {\n    file.upload = {\n      uuid: Dropzone.uuidv4(),\n      progress: 0,\n      // Setting the total upload size to file.size for the beginning\n      // It's actual different than the size to be transmitted.\n      total: file.size,\n      bytesSent: 0,\n      filename: this._renameFile(file),\n      // Not setting chunking information here, because the acutal data — and\n      // thus the chunks — might change if `options.transformFile` is set\n      // and does something to the data.\n    };\n    this.files.push(file);\n\n    file.status = Dropzone.ADDED;\n\n    this.emit(\"addedfile\", file);\n\n    this._enqueueThumbnail(file);\n\n    this.accept(file, (error) => {\n      if (error) {\n        file.accepted = false;\n        this._errorProcessing([file], error); // Will set the file.status\n      } else {\n        file.accepted = true;\n        if (this.options.autoQueue) {\n          this.enqueueFile(file);\n        } // Will set .accepted = true\n      }\n      this._updateMaxFilesReachedClass();\n    });\n  }\n\n  // Wrapper for enqueueFile\n  enqueueFiles(files) {\n    for (let file of files) {\n      this.enqueueFile(file);\n    }\n    return null;\n  }\n\n  enqueueFile(file) {\n    if (file.status === Dropzone.ADDED && file.accepted === true) {\n      file.status = Dropzone.QUEUED;\n      if (this.options.autoProcessQueue) {\n        return setTimeout(() => this.processQueue(), 0); // Deferring the call\n      }\n    } else {\n      throw new Error(\n        \"This file can't be queued because it has already been processed or was rejected.\"\n      );\n    }\n  }\n\n  _enqueueThumbnail(file) {\n    if (\n      this.options.createImageThumbnails &&\n      file.type.match(/image.*/) &&\n      file.size <= this.options.maxThumbnailFilesize * 1024 * 1024\n    ) {\n      this._thumbnailQueue.push(file);\n      return setTimeout(() => this._processThumbnailQueue(), 0); // Deferring the call\n    }\n  }\n\n  _processThumbnailQueue() {\n    if (this._processingThumbnail || this._thumbnailQueue.length === 0) {\n      return;\n    }\n\n    this._processingThumbnail = true;\n    let file = this._thumbnailQueue.shift();\n    return this.createThumbnail(\n      file,\n      this.options.thumbnailWidth,\n      this.options.thumbnailHeight,\n      this.options.thumbnailMethod,\n      true,\n      (dataUrl) => {\n        this.emit(\"thumbnail\", file, dataUrl);\n        this._processingThumbnail = false;\n        return this._processThumbnailQueue();\n      }\n    );\n  }\n\n  // Can be called by the user to remove a file\n  removeFile(file) {\n    if (file.status === Dropzone.UPLOADING) {\n      this.cancelUpload(file);\n    }\n    this.files = without(this.files, file);\n\n    this.emit(\"removedfile\", file);\n    if (this.files.length === 0) {\n      return this.emit(\"reset\");\n    }\n  }\n\n  // Removes all files that aren't currently processed from the list\n  removeAllFiles(cancelIfNecessary) {\n    // Create a copy of files since removeFile() changes the @files array.\n    if (cancelIfNecessary == null) {\n      cancelIfNecessary = false;\n    }\n    for (let file of this.files.slice()) {\n      if (file.status !== Dropzone.UPLOADING || cancelIfNecessary) {\n        this.removeFile(file);\n      }\n    }\n    return null;\n  }\n\n  // Resizes an image before it gets sent to the server. This function is the default behavior of\n  // `options.transformFile` if `resizeWidth` or `resizeHeight` are set. The callback is invoked with\n  // the resized blob.\n  resizeImage(file, width, height, resizeMethod, callback) {\n    return this.createThumbnail(\n      file,\n      width,\n      height,\n      resizeMethod,\n      true,\n      (dataUrl, canvas) => {\n        if (canvas == null) {\n          // The image has not been resized\n          return callback(file);\n        } else {\n          let { resizeMimeType } = this.options;\n          if (resizeMimeType == null) {\n            resizeMimeType = file.type;\n          }\n          let resizedDataURL = canvas.toDataURL(\n            resizeMimeType,\n            this.options.resizeQuality\n          );\n          if (\n            resizeMimeType === \"image/jpeg\" ||\n            resizeMimeType === \"image/jpg\"\n          ) {\n            // Now add the original EXIF information\n            resizedDataURL = ExifRestore.restore(file.dataURL, resizedDataURL);\n          }\n          return callback(Dropzone.dataURItoBlob(resizedDataURL));\n        }\n      }\n    );\n  }\n\n  createThumbnail(file, width, height, resizeMethod, fixOrientation, callback) {\n    let fileReader = new FileReader();\n\n    fileReader.onload = () => {\n      file.dataURL = fileReader.result;\n\n      // Don't bother creating a thumbnail for SVG images since they're vector\n      if (file.type === \"image/svg+xml\") {\n        if (callback != null) {\n          callback(fileReader.result);\n        }\n        return;\n      }\n\n      this.createThumbnailFromUrl(\n        file,\n        width,\n        height,\n        resizeMethod,\n        fixOrientation,\n        callback\n      );\n    };\n\n    fileReader.readAsDataURL(file);\n  }\n\n  // `mockFile` needs to have these attributes:\n  //\n  //     { name: 'name', size: 12345, imageUrl: '' }\n  //\n  // `callback` will be invoked when the image has been downloaded and displayed.\n  // `crossOrigin` will be added to the `img` tag when accessing the file.\n  displayExistingFile(\n    mockFile,\n    imageUrl,\n    callback,\n    crossOrigin,\n    resizeThumbnail = true\n  ) {\n    this.emit(\"addedfile\", mockFile);\n    this.emit(\"complete\", mockFile);\n\n    if (!resizeThumbnail) {\n      this.emit(\"thumbnail\", mockFile, imageUrl);\n      if (callback) callback();\n    } else {\n      let onDone = (thumbnail) => {\n        this.emit(\"thumbnail\", mockFile, thumbnail);\n        if (callback) callback();\n      };\n      mockFile.dataURL = imageUrl;\n\n      this.createThumbnailFromUrl(\n        mockFile,\n        this.options.thumbnailWidth,\n        this.options.thumbnailHeight,\n        this.options.thumbnailMethod,\n        this.options.fixOrientation,\n        onDone,\n        crossOrigin\n      );\n    }\n  }\n\n  createThumbnailFromUrl(\n    file,\n    width,\n    height,\n    resizeMethod,\n    fixOrientation,\n    callback,\n    crossOrigin\n  ) {\n    // Not using `new Image` here because of a bug in latest Chrome versions.\n    // See https://github.com/enyo/dropzone/pull/226\n    let img = document.createElement(\"img\");\n\n    if (crossOrigin) {\n      img.crossOrigin = crossOrigin;\n    }\n\n    // fixOrientation is not needed anymore with browsers handling imageOrientation\n    fixOrientation =\n      getComputedStyle(document.body)[\"imageOrientation\"] == \"from-image\"\n        ? false\n        : fixOrientation;\n\n    img.onload = () => {\n      let loadExif = (callback) => callback(1);\n      if (typeof EXIF !== \"undefined\" && EXIF !== null && fixOrientation) {\n        loadExif = (callback) =>\n          EXIF.getData(img, function () {\n            return callback(EXIF.getTag(this, \"Orientation\"));\n          });\n      }\n\n      return loadExif((orientation) => {\n        file.width = img.width;\n        file.height = img.height;\n\n        let resizeInfo = this.options.resize.call(\n          this,\n          file,\n          width,\n          height,\n          resizeMethod\n        );\n\n        let canvas = document.createElement(\"canvas\");\n        let ctx = canvas.getContext(\"2d\");\n\n        canvas.width = resizeInfo.trgWidth;\n        canvas.height = resizeInfo.trgHeight;\n\n        if (orientation > 4) {\n          canvas.width = resizeInfo.trgHeight;\n          canvas.height = resizeInfo.trgWidth;\n        }\n\n        switch (orientation) {\n          case 2:\n            // horizontal flip\n            ctx.translate(canvas.width, 0);\n            ctx.scale(-1, 1);\n            break;\n          case 3:\n            // 180° rotate left\n            ctx.translate(canvas.width, canvas.height);\n            ctx.rotate(Math.PI);\n            break;\n          case 4:\n            // vertical flip\n            ctx.translate(0, canvas.height);\n            ctx.scale(1, -1);\n            break;\n          case 5:\n            // vertical flip + 90 rotate right\n            ctx.rotate(0.5 * Math.PI);\n            ctx.scale(1, -1);\n            break;\n          case 6:\n            // 90° rotate right\n            ctx.rotate(0.5 * Math.PI);\n            ctx.translate(0, -canvas.width);\n            break;\n          case 7:\n            // horizontal flip + 90 rotate right\n            ctx.rotate(0.5 * Math.PI);\n            ctx.translate(canvas.height, -canvas.width);\n            ctx.scale(-1, 1);\n            break;\n          case 8:\n            // 90° rotate left\n            ctx.rotate(-0.5 * Math.PI);\n            ctx.translate(-canvas.height, 0);\n            break;\n        }\n\n        // This is a bugfix for iOS' scaling bug.\n        drawImageIOSFix(\n          ctx,\n          img,\n          resizeInfo.srcX != null ? resizeInfo.srcX : 0,\n          resizeInfo.srcY != null ? resizeInfo.srcY : 0,\n          resizeInfo.srcWidth,\n          resizeInfo.srcHeight,\n          resizeInfo.trgX != null ? resizeInfo.trgX : 0,\n          resizeInfo.trgY != null ? resizeInfo.trgY : 0,\n          resizeInfo.trgWidth,\n          resizeInfo.trgHeight\n        );\n\n        let thumbnail = canvas.toDataURL(\"image/png\");\n\n        if (callback != null) {\n          return callback(thumbnail, canvas);\n        }\n      });\n    };\n\n    if (callback != null) {\n      img.onerror = callback;\n    }\n\n    return (img.src = file.dataURL);\n  }\n\n  // Goes through the queue and processes files if there aren't too many already.\n  processQueue() {\n    let { parallelUploads } = this.options;\n    let processingLength = this.getUploadingFiles().length;\n    let i = processingLength;\n\n    // There are already at least as many files uploading than should be\n    if (processingLength >= parallelUploads) {\n      return;\n    }\n\n    let queuedFiles = this.getQueuedFiles();\n\n    if (!(queuedFiles.length > 0)) {\n      return;\n    }\n\n    if (this.options.uploadMultiple) {\n      // The files should be uploaded in one request\n      return this.processFiles(\n        queuedFiles.slice(0, parallelUploads - processingLength)\n      );\n    } else {\n      while (i < parallelUploads) {\n        if (!queuedFiles.length) {\n          return;\n        } // Nothing left to process\n        this.processFile(queuedFiles.shift());\n        i++;\n      }\n    }\n  }\n\n  // Wrapper for `processFiles`\n  processFile(file) {\n    return this.processFiles([file]);\n  }\n\n  // Loads the file, then calls finishedLoading()\n  processFiles(files) {\n    for (let file of files) {\n      file.processing = true; // Backwards compatibility\n      file.status = Dropzone.UPLOADING;\n\n      this.emit(\"processing\", file);\n    }\n\n    if (this.options.uploadMultiple) {\n      this.emit(\"processingmultiple\", files);\n    }\n\n    return this.uploadFiles(files);\n  }\n\n  _getFilesWithXhr(xhr) {\n    let files;\n    return (files = this.files\n      .filter((file) => file.xhr === xhr)\n      .map((file) => file));\n  }\n\n  // Cancels the file upload and sets the status to CANCELED\n  // **if** the file is actually being uploaded.\n  // If it's still in the queue, the file is being removed from it and the status\n  // set to CANCELED.\n  cancelUpload(file) {\n    if (file.status === Dropzone.UPLOADING) {\n      let groupedFiles = this._getFilesWithXhr(file.xhr);\n      for (let groupedFile of groupedFiles) {\n        groupedFile.status = Dropzone.CANCELED;\n      }\n      if (typeof file.xhr !== \"undefined\") {\n        file.xhr.abort();\n      }\n      for (let groupedFile of groupedFiles) {\n        this.emit(\"canceled\", groupedFile);\n      }\n      if (this.options.uploadMultiple) {\n        this.emit(\"canceledmultiple\", groupedFiles);\n      }\n    } else if (\n      file.status === Dropzone.ADDED ||\n      file.status === Dropzone.QUEUED\n    ) {\n      file.status = Dropzone.CANCELED;\n      this.emit(\"canceled\", file);\n      if (this.options.uploadMultiple) {\n        this.emit(\"canceledmultiple\", [file]);\n      }\n    }\n\n    if (this.options.autoProcessQueue) {\n      return this.processQueue();\n    }\n  }\n\n  resolveOption(option, ...args) {\n    if (typeof option === \"function\") {\n      return option.apply(this, args);\n    }\n    return option;\n  }\n\n  uploadFile(file) {\n    return this.uploadFiles([file]);\n  }\n\n  uploadFiles(files) {\n    this._transformFiles(files, (transformedFiles) => {\n      if (this.options.chunking) {\n        // Chunking is not allowed to be used with `uploadMultiple` so we know\n        // that there is only __one__file.\n        let transformedFile = transformedFiles[0];\n        files[0].upload.chunked =\n          this.options.chunking &&\n          (this.options.forceChunking ||\n            transformedFile.size > this.options.chunkSize);\n        files[0].upload.totalChunkCount = Math.ceil(\n          transformedFile.size / this.options.chunkSize\n        );\n      }\n\n      if (files[0].upload.chunked) {\n        // This file should be sent in chunks!\n\n        // If the chunking option is set, we **know** that there can only be **one** file, since\n        // uploadMultiple is not allowed with this option.\n        let file = files[0];\n        let transformedFile = transformedFiles[0];\n        let startedChunkCount = 0;\n\n        file.upload.chunks = [];\n\n        let handleNextChunk = () => {\n          let chunkIndex = 0;\n\n          // Find the next item in file.upload.chunks that is not defined yet.\n          while (file.upload.chunks[chunkIndex] !== undefined) {\n            chunkIndex++;\n          }\n\n          // This means, that all chunks have already been started.\n          if (chunkIndex >= file.upload.totalChunkCount) return;\n\n          startedChunkCount++;\n\n          let start = chunkIndex * this.options.chunkSize;\n          let end = Math.min(\n            start + this.options.chunkSize,\n            transformedFile.size\n          );\n\n          let dataBlock = {\n            name: this._getParamName(0),\n            data: transformedFile.webkitSlice\n              ? transformedFile.webkitSlice(start, end)\n              : transformedFile.slice(start, end),\n            filename: file.upload.filename,\n            chunkIndex: chunkIndex,\n          };\n\n          file.upload.chunks[chunkIndex] = {\n            file: file,\n            index: chunkIndex,\n            dataBlock: dataBlock, // In case we want to retry.\n            status: Dropzone.UPLOADING,\n            progress: 0,\n            retries: 0, // The number of times this block has been retried.\n          };\n\n          this._uploadData(files, [dataBlock]);\n        };\n\n        file.upload.finishedChunkUpload = (chunk, response) => {\n          let allFinished = true;\n          chunk.status = Dropzone.SUCCESS;\n\n          // Clear the data from the chunk\n          chunk.dataBlock = null;\n          chunk.response = chunk.xhr.responseText;\n          chunk.responseHeaders = chunk.xhr.getAllResponseHeaders();\n          // Leaving this reference to xhr will cause memory leaks.\n          chunk.xhr = null;\n\n          for (let i = 0; i < file.upload.totalChunkCount; i++) {\n            if (file.upload.chunks[i] === undefined) {\n              return handleNextChunk();\n            }\n            if (file.upload.chunks[i].status !== Dropzone.SUCCESS) {\n              allFinished = false;\n            }\n          }\n\n          if (allFinished) {\n            this.options.chunksUploaded(file, () => {\n              this._finished(files, response, null);\n            });\n          }\n        };\n\n        if (this.options.parallelChunkUploads) {\n          for (let i = 0; i < file.upload.totalChunkCount; i++) {\n            handleNextChunk();\n          }\n        } else {\n          handleNextChunk();\n        }\n      } else {\n        let dataBlocks = [];\n        for (let i = 0; i < files.length; i++) {\n          dataBlocks[i] = {\n            name: this._getParamName(i),\n            data: transformedFiles[i],\n            filename: files[i].upload.filename,\n          };\n        }\n        this._uploadData(files, dataBlocks);\n      }\n    });\n  }\n\n  /// Returns the right chunk for given file and xhr\n  _getChunk(file, xhr) {\n    for (let i = 0; i < file.upload.totalChunkCount; i++) {\n      if (\n        file.upload.chunks[i] !== undefined &&\n        file.upload.chunks[i].xhr === xhr\n      ) {\n        return file.upload.chunks[i];\n      }\n    }\n  }\n\n  // This function actually uploads the file(s) to the server.\n  //\n  //  If dataBlocks contains the actual data to upload (meaning, that this could\n  // either be transformed files, or individual chunks for chunked upload) then\n  // they will be used for the actual data to upload.\n  _uploadData(files, dataBlocks) {\n    let xhr = new XMLHttpRequest();\n\n    // Put the xhr object in the file objects to be able to reference it later.\n    for (let file of files) {\n      file.xhr = xhr;\n    }\n    if (files[0].upload.chunked) {\n      // Put the xhr object in the right chunk object, so it can be associated\n      // later, and found with _getChunk.\n      files[0].upload.chunks[dataBlocks[0].chunkIndex].xhr = xhr;\n    }\n\n    let method = this.resolveOption(this.options.method, files, dataBlocks);\n    let url = this.resolveOption(this.options.url, files, dataBlocks);\n    xhr.open(method, url, true);\n\n    // Setting the timeout after open because of IE11 issue: https://gitlab.com/meno/dropzone/issues/8\n    let timeout = this.resolveOption(this.options.timeout, files);\n    if (timeout) xhr.timeout = this.resolveOption(this.options.timeout, files);\n\n    // Has to be after `.open()`. See https://github.com/enyo/dropzone/issues/179\n    xhr.withCredentials = !!this.options.withCredentials;\n\n    xhr.onload = (e) => {\n      this._finishedUploading(files, xhr, e);\n    };\n\n    xhr.ontimeout = () => {\n      this._handleUploadError(\n        files,\n        xhr,\n        `Request timedout after ${this.options.timeout / 1000} seconds`\n      );\n    };\n\n    xhr.onerror = () => {\n      this._handleUploadError(files, xhr);\n    };\n\n    // Some browsers do not have the .upload property\n    let progressObj = xhr.upload != null ? xhr.upload : xhr;\n    progressObj.onprogress = (e) =>\n      this._updateFilesUploadProgress(files, xhr, e);\n\n    let headers = this.options.defaultHeaders\n      ? {\n          Accept: \"application/json\",\n          \"Cache-Control\": \"no-cache\",\n          \"X-Requested-With\": \"XMLHttpRequest\",\n        }\n      : {};\n\n    if (this.options.binaryBody) {\n      headers[\"Content-Type\"] = files[0].type;\n    }\n\n    if (this.options.headers) {\n      extend(headers, this.options.headers);\n    }\n\n    for (let headerName in headers) {\n      let headerValue = headers[headerName];\n      if (headerValue) {\n        xhr.setRequestHeader(headerName, headerValue);\n      }\n    }\n\n    if (this.options.binaryBody) {\n      // Since the file is going to be sent as binary body, it doesn't make\n      // any sense to generate `FormData` for it.\n      for (let file of files) {\n        this.emit(\"sending\", file, xhr);\n      }\n      if (this.options.uploadMultiple) {\n        this.emit(\"sendingmultiple\", files, xhr);\n      }\n      this.submitRequest(xhr, null, files);\n    } else {\n      let formData = new FormData();\n\n      // Adding all @options parameters\n      if (this.options.params) {\n        let additionalParams = this.options.params;\n        if (typeof additionalParams === \"function\") {\n          additionalParams = additionalParams.call(\n            this,\n            files,\n            xhr,\n            files[0].upload.chunked ? this._getChunk(files[0], xhr) : null\n          );\n        }\n\n        for (let key in additionalParams) {\n          let value = additionalParams[key];\n          if (Array.isArray(value)) {\n            // The additional parameter contains an array,\n            // so lets iterate over it to attach each value\n            // individually.\n            for (let i = 0; i < value.length; i++) {\n              formData.append(key, value[i]);\n            }\n          } else {\n            formData.append(key, value);\n          }\n        }\n      }\n\n      // Let the user add additional data if necessary\n      for (let file of files) {\n        this.emit(\"sending\", file, xhr, formData);\n      }\n      if (this.options.uploadMultiple) {\n        this.emit(\"sendingmultiple\", files, xhr, formData);\n      }\n\n      this._addFormElementData(formData);\n\n      // Finally add the files\n      // Has to be last because some servers (eg: S3) expect the file to be the last parameter\n      for (let i = 0; i < dataBlocks.length; i++) {\n        let dataBlock = dataBlocks[i];\n        formData.append(dataBlock.name, dataBlock.data, dataBlock.filename);\n      }\n\n      this.submitRequest(xhr, formData, files);\n    }\n  }\n\n  // Transforms all files with this.options.transformFile and invokes done with the transformed files when done.\n  _transformFiles(files, done) {\n    let transformedFiles = [];\n    // Clumsy way of handling asynchronous calls, until I get to add a proper Future library.\n    let doneCounter = 0;\n    for (let i = 0; i < files.length; i++) {\n      this.options.transformFile.call(this, files[i], (transformedFile) => {\n        transformedFiles[i] = transformedFile;\n        if (++doneCounter === files.length) {\n          done(transformedFiles);\n        }\n      });\n    }\n  }\n\n  // Takes care of adding other input elements of the form to the AJAX request\n  _addFormElementData(formData) {\n    // Take care of other input elements\n    if (this.element.tagName === \"FORM\") {\n      for (let input of this.element.querySelectorAll(\n        \"input, textarea, select, button\"\n      )) {\n        let inputName = input.getAttribute(\"name\");\n        let inputType = input.getAttribute(\"type\");\n        if (inputType) inputType = inputType.toLowerCase();\n\n        // If the input doesn't have a name, we can't use it.\n        if (typeof inputName === \"undefined\" || inputName === null) continue;\n\n        if (input.tagName === \"SELECT\" && input.hasAttribute(\"multiple\")) {\n          // Possibly multiple values\n          for (let option of input.options) {\n            if (option.selected) {\n              formData.append(inputName, option.value);\n            }\n          }\n        } else if (\n          !inputType ||\n          (inputType !== \"checkbox\" && inputType !== \"radio\") ||\n          input.checked\n        ) {\n          formData.append(inputName, input.value);\n        }\n      }\n    }\n  }\n\n  // Invoked when there is new progress information about given files.\n  // If e is not provided, it is assumed that the upload is finished.\n  _updateFilesUploadProgress(files, xhr, e) {\n    if (!files[0].upload.chunked) {\n      // Handle file uploads without chunking\n      for (let file of files) {\n        if (\n          file.upload.total &&\n          file.upload.bytesSent &&\n          file.upload.bytesSent == file.upload.total\n        ) {\n          // If both, the `total` and `bytesSent` have already been set, and\n          // they are equal (meaning progress is at 100%), we can skip this\n          // file, since an upload progress shouldn't go down.\n          continue;\n        }\n\n        if (e) {\n          file.upload.progress = (100 * e.loaded) / e.total;\n          file.upload.total = e.total;\n          file.upload.bytesSent = e.loaded;\n        } else {\n          // No event, so we're at 100%\n          file.upload.progress = 100;\n          file.upload.bytesSent = file.upload.total;\n        }\n\n        this.emit(\n          \"uploadprogress\",\n          file,\n          file.upload.progress,\n          file.upload.bytesSent\n        );\n      }\n    } else {\n      // Handle chunked file uploads\n\n      // Chunked upload is not compatible with uploading multiple files in one\n      // request, so we know there's only one file.\n      let file = files[0];\n\n      // Since this is a chunked upload, we need to update the appropriate chunk\n      // progress.\n      let chunk = this._getChunk(file, xhr);\n\n      if (e) {\n        chunk.progress = (100 * e.loaded) / e.total;\n        chunk.total = e.total;\n        chunk.bytesSent = e.loaded;\n      } else {\n        // No event, so we're at 100%\n        chunk.progress = 100;\n        chunk.bytesSent = chunk.total;\n      }\n\n      // Now tally the *file* upload progress from its individual chunks\n      file.upload.progress = 0;\n      file.upload.total = 0;\n      file.upload.bytesSent = 0;\n      for (let i = 0; i < file.upload.totalChunkCount; i++) {\n        if (\n          file.upload.chunks[i] &&\n          typeof file.upload.chunks[i].progress !== \"undefined\"\n        ) {\n          file.upload.progress += file.upload.chunks[i].progress;\n          file.upload.total += file.upload.chunks[i].total;\n          file.upload.bytesSent += file.upload.chunks[i].bytesSent;\n        }\n      }\n      // Since the process is a percentage, we need to divide by the amount of\n      // chunks we've used.\n      file.upload.progress = file.upload.progress / file.upload.totalChunkCount;\n\n      this.emit(\n        \"uploadprogress\",\n        file,\n        file.upload.progress,\n        file.upload.bytesSent\n      );\n    }\n  }\n\n  _finishedUploading(files, xhr, e) {\n    let response;\n\n    if (files[0].status === Dropzone.CANCELED) {\n      return;\n    }\n\n    if (xhr.readyState !== 4) {\n      return;\n    }\n\n    if (xhr.responseType !== \"arraybuffer\" && xhr.responseType !== \"blob\") {\n      response = xhr.responseText;\n\n      if (\n        xhr.getResponseHeader(\"content-type\") &&\n        ~xhr.getResponseHeader(\"content-type\").indexOf(\"application/json\")\n      ) {\n        try {\n          response = JSON.parse(response);\n        } catch (error) {\n          e = error;\n          response = \"Invalid JSON response from server.\";\n        }\n      }\n    }\n\n    this._updateFilesUploadProgress(files, xhr);\n\n    if (!(200 <= xhr.status && xhr.status < 300)) {\n      this._handleUploadError(files, xhr, response);\n    } else {\n      if (files[0].upload.chunked) {\n        files[0].upload.finishedChunkUpload(\n          this._getChunk(files[0], xhr),\n          response\n        );\n      } else {\n        this._finished(files, response, e);\n      }\n    }\n  }\n\n  _handleUploadError(files, xhr, response) {\n    if (files[0].status === Dropzone.CANCELED) {\n      return;\n    }\n\n    if (files[0].upload.chunked && this.options.retryChunks) {\n      let chunk = this._getChunk(files[0], xhr);\n      if (chunk.retries++ < this.options.retryChunksLimit) {\n        this._uploadData(files, [chunk.dataBlock]);\n        return;\n      } else {\n        console.warn(\"Retried this chunk too often. Giving up.\");\n      }\n    }\n\n    this._errorProcessing(\n      files,\n      response ||\n        this.options.dictResponseError.replace(\"{{statusCode}}\", xhr.status),\n      xhr\n    );\n  }\n\n  submitRequest(xhr, formData, files) {\n    if (xhr.readyState != 1) {\n      console.warn(\n        \"Cannot send this request because the XMLHttpRequest.readyState is not OPENED.\"\n      );\n      return;\n    }\n    if (this.options.binaryBody) {\n      if (files[0].upload.chunked) {\n        const chunk = this._getChunk(files[0], xhr);\n        xhr.send(chunk.dataBlock.data);\n      } else {\n        xhr.send(files[0]);\n      }\n    } else {\n      xhr.send(formData);\n    }\n  }\n\n  // Called internally when processing is finished.\n  // Individual callbacks have to be called in the appropriate sections.\n  _finished(files, responseText, e) {\n    for (let file of files) {\n      file.status = Dropzone.SUCCESS;\n      this.emit(\"success\", file, responseText, e);\n      this.emit(\"complete\", file);\n    }\n    if (this.options.uploadMultiple) {\n      this.emit(\"successmultiple\", files, responseText, e);\n      this.emit(\"completemultiple\", files);\n    }\n\n    if (this.options.autoProcessQueue) {\n      return this.processQueue();\n    }\n  }\n\n  // Called internally when processing is finished.\n  // Individual callbacks have to be called in the appropriate sections.\n  _errorProcessing(files, message, xhr) {\n    for (let file of files) {\n      file.status = Dropzone.ERROR;\n      this.emit(\"error\", file, message, xhr);\n      this.emit(\"complete\", file);\n    }\n    if (this.options.uploadMultiple) {\n      this.emit(\"errormultiple\", files, message, xhr);\n      this.emit(\"completemultiple\", files);\n    }\n\n    if (this.options.autoProcessQueue) {\n      return this.processQueue();\n    }\n  }\n\n  static uuidv4() {\n    return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(\n      /[xy]/g,\n      function (c) {\n        let r = (Math.random() * 16) | 0,\n          v = c === \"x\" ? r : (r & 0x3) | 0x8;\n        return v.toString(16);\n      }\n    );\n  }\n}\nDropzone.initClass();\n\n// This is a map of options for your different dropzones. Add configurations\n// to this object for your different dropzone elemens.\n//\n// Example:\n//\n//     Dropzone.options.myDropzoneElementId = { maxFilesize: 1 };\n//\n// And in html:\n//\n//     <form action=\"/upload\" id=\"my-dropzone-element-id\" class=\"dropzone\"></form>\nDropzone.options = {};\n\n// Returns the options for an element or undefined if none available.\nDropzone.optionsForElement = function (element) {\n  // Get the `Dropzone.options.elementId` for this element if it exists\n  if (element.getAttribute(\"id\")) {\n    return Dropzone.options[camelize(element.getAttribute(\"id\"))];\n  } else {\n    return undefined;\n  }\n};\n\n// Holds a list of all dropzone instances\nDropzone.instances = [];\n\n// Returns the dropzone for given element if any\nDropzone.forElement = function (element) {\n  if (typeof element === \"string\") {\n    element = document.querySelector(element);\n  }\n  if ((element != null ? element.dropzone : undefined) == null) {\n    throw new Error(\n      \"No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone.\"\n    );\n  }\n  return element.dropzone;\n};\n\n// Looks for all .dropzone elements and creates a dropzone for them\nDropzone.discover = function () {\n  let dropzones;\n  if (document.querySelectorAll) {\n    dropzones = document.querySelectorAll(\".dropzone\");\n  } else {\n    dropzones = [];\n    // IE :(\n    let checkElements = (elements) =>\n      (() => {\n        let result = [];\n        for (let el of elements) {\n          if (/(^| )dropzone($| )/.test(el.className)) {\n            result.push(dropzones.push(el));\n          } else {\n            result.push(undefined);\n          }\n        }\n        return result;\n      })();\n    checkElements(document.getElementsByTagName(\"div\"));\n    checkElements(document.getElementsByTagName(\"form\"));\n  }\n\n  return (() => {\n    let result = [];\n    for (let dropzone of dropzones) {\n      // Create a dropzone unless auto discover has been disabled for specific element\n      if (Dropzone.optionsForElement(dropzone) !== false) {\n        result.push(new Dropzone(dropzone));\n      } else {\n        result.push(undefined);\n      }\n    }\n    return result;\n  })();\n};\n\n// Some browsers support drag and drog functionality, but not correctly.\n//\n// So I created a blocklist of userAgents. Yes, yes. Browser sniffing, I know.\n// But what to do when browsers *theoretically* support an API, but crash\n// when using it.\n//\n// This is a list of regular expressions tested against navigator.userAgent\n//\n// ** It should only be used on browser that *do* support the API, but\n// incorrectly **\nDropzone.blockedBrowsers = [\n  // The mac os and windows phone version of opera 12 seems to have a problem with the File drag'n'drop API.\n  /opera.*(Macintosh|Windows Phone).*version\\/12/i,\n];\n\n// Checks if the browser is supported\nDropzone.isBrowserSupported = function () {\n  let capableBrowser = true;\n\n  if (\n    window.File &&\n    window.FileReader &&\n    window.FileList &&\n    window.Blob &&\n    window.FormData &&\n    document.querySelector\n  ) {\n    if (!(\"classList\" in document.createElement(\"a\"))) {\n      capableBrowser = false;\n    } else {\n      if (Dropzone.blacklistedBrowsers !== undefined) {\n        // Since this has been renamed, this makes sure we don't break older\n        // configuration.\n        Dropzone.blockedBrowsers = Dropzone.blacklistedBrowsers;\n      }\n      // The browser supports the API, but may be blocked.\n      for (let regex of Dropzone.blockedBrowsers) {\n        if (regex.test(navigator.userAgent)) {\n          capableBrowser = false;\n          continue;\n        }\n      }\n    }\n  } else {\n    capableBrowser = false;\n  }\n\n  return capableBrowser;\n};\n\nDropzone.dataURItoBlob = function (dataURI) {\n  // convert base64 to raw binary data held in a string\n  // doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this\n  let byteString = atob(dataURI.split(\",\")[1]);\n\n  // separate out the mime component\n  let mimeString = dataURI.split(\",\")[0].split(\":\")[1].split(\";\")[0];\n\n  // write the bytes of the string to an ArrayBuffer\n  let ab = new ArrayBuffer(byteString.length);\n  let ia = new Uint8Array(ab);\n  for (\n    let i = 0, end = byteString.length, asc = 0 <= end;\n    asc ? i <= end : i >= end;\n    asc ? i++ : i--\n  ) {\n    ia[i] = byteString.charCodeAt(i);\n  }\n\n  // write the ArrayBuffer to a blob\n  return new Blob([ab], { type: mimeString });\n};\n\n// Returns an array without the rejected item\nconst without = (list, rejectedItem) =>\n  list.filter((item) => item !== rejectedItem).map((item) => item);\n\n// abc-def_ghi -> abcDefGhi\nconst camelize = (str) =>\n  str.replace(/[\\-_](\\w)/g, (match) => match.charAt(1).toUpperCase());\n\n// Creates an element from string\nDropzone.createElement = function (string) {\n  let div = document.createElement(\"div\");\n  div.innerHTML = string;\n  return div.childNodes[0];\n};\n\n// Tests if given element is inside (or simply is) the container\nDropzone.elementInside = function (element, container) {\n  if (element === container) {\n    return true;\n  } // Coffeescript doesn't support do/while loops\n  while ((element = element.parentNode)) {\n    if (element === container) {\n      return true;\n    }\n  }\n  return false;\n};\n\nDropzone.getElement = function (el, name) {\n  let element;\n  if (typeof el === \"string\") {\n    element = document.querySelector(el);\n  } else if (el.nodeType != null) {\n    element = el;\n  }\n  if (element == null) {\n    throw new Error(\n      `Invalid \\`${name}\\` option provided. Please provide a CSS selector or a plain HTML element.`\n    );\n  }\n  return element;\n};\n\nDropzone.getElements = function (els, name) {\n  let el, elements;\n  if (els instanceof Array) {\n    elements = [];\n    try {\n      for (el of els) {\n        elements.push(this.getElement(el, name));\n      }\n    } catch (e) {\n      elements = null;\n    }\n  } else if (typeof els === \"string\") {\n    elements = [];\n    for (el of document.querySelectorAll(els)) {\n      elements.push(el);\n    }\n  } else if (els.nodeType != null) {\n    elements = [els];\n  }\n\n  if (elements == null || !elements.length) {\n    throw new Error(\n      `Invalid \\`${name}\\` option provided. Please provide a CSS selector, a plain HTML element or a list of those.`\n    );\n  }\n\n  return elements;\n};\n\n// Asks the user the question and calls accepted or rejected accordingly\n//\n// The default implementation just uses `window.confirm` and then calls the\n// appropriate callback.\nDropzone.confirm = function (question, accepted, rejected) {\n  if (window.confirm(question)) {\n    return accepted();\n  } else if (rejected != null) {\n    return rejected();\n  }\n};\n\n// Validates the mime type like this:\n//\n// https://developer.mozilla.org/en-US/docs/HTML/Element/input#attr-accept\nDropzone.isValidFile = function (file, acceptedFiles) {\n  if (!acceptedFiles) {\n    return true;\n  } // If there are no accepted mime types, it's OK\n  acceptedFiles = acceptedFiles.split(\",\");\n\n  let mimeType = file.type;\n  let baseMimeType = mimeType.replace(/\\/.*$/, \"\");\n\n  for (let validType of acceptedFiles) {\n    validType = validType.trim();\n    if (validType.charAt(0) === \".\") {\n      if (\n        file.name\n          .toLowerCase()\n          .indexOf(\n            validType.toLowerCase(),\n            file.name.length - validType.length\n          ) !== -1\n      ) {\n        return true;\n      }\n    } else if (/\\/\\*$/.test(validType)) {\n      // This is something like a image/* mime type\n      if (baseMimeType === validType.replace(/\\/.*$/, \"\")) {\n        return true;\n      }\n    } else {\n      if (mimeType === validType) {\n        return true;\n      }\n    }\n  }\n\n  return false;\n};\n\n// Augment jQuery\nif (typeof jQuery !== \"undefined\" && jQuery !== null) {\n  jQuery.fn.dropzone = function (options) {\n    return this.each(function () {\n      return new Dropzone(this, options);\n    });\n  };\n}\n\n// Dropzone file status codes\nDropzone.ADDED = \"added\";\n\nDropzone.QUEUED = \"queued\";\n// For backwards compatibility. Now, if a file is accepted, it's either queued\n// or uploading.\nDropzone.ACCEPTED = Dropzone.QUEUED;\n\nDropzone.UPLOADING = \"uploading\";\nDropzone.PROCESSING = Dropzone.UPLOADING; // alias\n\nDropzone.CANCELED = \"canceled\";\nDropzone.ERROR = \"error\";\nDropzone.SUCCESS = \"success\";\n\n/*\n\n Bugfix for iOS 6 and 7\n Source: http://stackoverflow.com/questions/11929099/html5-canvas-drawimage-ratio-bug-ios\n based on the work of https://github.com/stomita/ios-imagefile-megapixel\n\n */\n\n// Detecting vertical squash in loaded image.\n// Fixes a bug which squash image vertically while drawing into canvas for some images.\n// This is a bug in iOS6 devices. This function from https://github.com/stomita/ios-imagefile-megapixel\nlet detectVerticalSquash = function (img) {\n  let iw = img.naturalWidth;\n  let ih = img.naturalHeight;\n  let canvas = document.createElement(\"canvas\");\n  canvas.width = 1;\n  canvas.height = ih;\n  let ctx = canvas.getContext(\"2d\");\n  ctx.drawImage(img, 0, 0);\n  let { data } = ctx.getImageData(1, 0, 1, ih);\n\n  // search image edge pixel position in case it is squashed vertically.\n  let sy = 0;\n  let ey = ih;\n  let py = ih;\n  while (py > sy) {\n    let alpha = data[(py - 1) * 4 + 3];\n\n    if (alpha === 0) {\n      ey = py;\n    } else {\n      sy = py;\n    }\n\n    py = (ey + sy) >> 1;\n  }\n  let ratio = py / ih;\n\n  if (ratio === 0) {\n    return 1;\n  } else {\n    return ratio;\n  }\n};\n\n// A replacement for context.drawImage\n// (args are for source and destination).\nvar drawImageIOSFix = function (ctx, img, sx, sy, sw, sh, dx, dy, dw, dh) {\n  let vertSquashRatio = detectVerticalSquash(img);\n  return ctx.drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh / vertSquashRatio);\n};\n\n// Based on MinifyJpeg\n// Source: http://www.perry.cz/files/ExifRestorer.js\n// http://elicon.blog57.fc2.com/blog-entry-206.html\nclass ExifRestore {\n  static initClass() {\n    this.KEY_STR =\n      \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n  }\n\n  static encode64(input) {\n    let output = \"\";\n    let chr1 = undefined;\n    let chr2 = undefined;\n    let chr3 = \"\";\n    let enc1 = undefined;\n    let enc2 = undefined;\n    let enc3 = undefined;\n    let enc4 = \"\";\n    let i = 0;\n    while (true) {\n      chr1 = input[i++];\n      chr2 = input[i++];\n      chr3 = input[i++];\n      enc1 = chr1 >> 2;\n      enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n      enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n      enc4 = chr3 & 63;\n      if (isNaN(chr2)) {\n        enc3 = enc4 = 64;\n      } else if (isNaN(chr3)) {\n        enc4 = 64;\n      }\n      output =\n        output +\n        this.KEY_STR.charAt(enc1) +\n        this.KEY_STR.charAt(enc2) +\n        this.KEY_STR.charAt(enc3) +\n        this.KEY_STR.charAt(enc4);\n      chr1 = chr2 = chr3 = \"\";\n      enc1 = enc2 = enc3 = enc4 = \"\";\n      if (!(i < input.length)) {\n        break;\n      }\n    }\n    return output;\n  }\n\n  static restore(origFileBase64, resizedFileBase64) {\n    if (!origFileBase64.match(\"data:image/jpeg;base64,\")) {\n      return resizedFileBase64;\n    }\n    let rawImage = this.decode64(\n      origFileBase64.replace(\"data:image/jpeg;base64,\", \"\")\n    );\n    let segments = this.slice2Segments(rawImage);\n    let image = this.exifManipulation(resizedFileBase64, segments);\n    return `data:image/jpeg;base64,${this.encode64(image)}`;\n  }\n\n  static exifManipulation(resizedFileBase64, segments) {\n    let exifArray = this.getExifArray(segments);\n    let newImageArray = this.insertExif(resizedFileBase64, exifArray);\n    let aBuffer = new Uint8Array(newImageArray);\n    return aBuffer;\n  }\n\n  static getExifArray(segments) {\n    let seg = undefined;\n    let x = 0;\n    while (x < segments.length) {\n      seg = segments[x];\n      if ((seg[0] === 255) & (seg[1] === 225)) {\n        return seg;\n      }\n      x++;\n    }\n    return [];\n  }\n\n  static insertExif(resizedFileBase64, exifArray) {\n    let imageData = resizedFileBase64.replace(\"data:image/jpeg;base64,\", \"\");\n    let buf = this.decode64(imageData);\n    let separatePoint = buf.indexOf(255, 3);\n    let mae = buf.slice(0, separatePoint);\n    let ato = buf.slice(separatePoint);\n    let array = mae;\n    array = array.concat(exifArray);\n    array = array.concat(ato);\n    return array;\n  }\n\n  static slice2Segments(rawImageArray) {\n    let head = 0;\n    let segments = [];\n    while (true) {\n      var length;\n      if ((rawImageArray[head] === 255) & (rawImageArray[head + 1] === 218)) {\n        break;\n      }\n      if ((rawImageArray[head] === 255) & (rawImageArray[head + 1] === 216)) {\n        head += 2;\n      } else {\n        length = rawImageArray[head + 2] * 256 + rawImageArray[head + 3];\n        let endPoint = head + length + 2;\n        let seg = rawImageArray.slice(head, endPoint);\n        segments.push(seg);\n        head = endPoint;\n      }\n      if (head > rawImageArray.length) {\n        break;\n      }\n    }\n    return segments;\n  }\n\n  static decode64(input) {\n    let output = \"\";\n    let chr1 = undefined;\n    let chr2 = undefined;\n    let chr3 = \"\";\n    let enc1 = undefined;\n    let enc2 = undefined;\n    let enc3 = undefined;\n    let enc4 = \"\";\n    let i = 0;\n    let buf = [];\n    // remove all characters that are not A-Z, a-z, 0-9, +, /, or =\n    let base64test = /[^A-Za-z0-9\\+\\/\\=]/g;\n    if (base64test.exec(input)) {\n      console.warn(\n        \"There were invalid base64 characters in the input text.\\nValid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\\nExpect errors in decoding.\"\n      );\n    }\n    input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\n    while (true) {\n      enc1 = this.KEY_STR.indexOf(input.charAt(i++));\n      enc2 = this.KEY_STR.indexOf(input.charAt(i++));\n      enc3 = this.KEY_STR.indexOf(input.charAt(i++));\n      enc4 = this.KEY_STR.indexOf(input.charAt(i++));\n      chr1 = (enc1 << 2) | (enc2 >> 4);\n      chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\n      chr3 = ((enc3 & 3) << 6) | enc4;\n      buf.push(chr1);\n      if (enc3 !== 64) {\n        buf.push(chr2);\n      }\n      if (enc4 !== 64) {\n        buf.push(chr3);\n      }\n      chr1 = chr2 = chr3 = \"\";\n      enc1 = enc2 = enc3 = enc4 = \"\";\n      if (!(i < input.length)) {\n        break;\n      }\n    }\n    return buf;\n  }\n}\nExifRestore.initClass();\n\n/*\n * contentloaded.js\n *\n * Author: Diego Perini (diego.perini at gmail.com)\n * Summary: cross-browser wrapper for DOMContentLoaded\n * Updated: 20101020\n * License: MIT\n * Version: 1.2\n *\n * URL:\n * http://javascript.nwbox.com/ContentLoaded/\n * http://javascript.nwbox.com/ContentLoaded/MIT-LICENSE\n */\n\n// @win window reference\n// @fn function reference\nlet contentLoaded = function (win, fn) {\n  let done = false;\n  let top = true;\n  let doc = win.document;\n  let root = doc.documentElement;\n  let add = doc.addEventListener ? \"addEventListener\" : \"attachEvent\";\n  let rem = doc.addEventListener ? \"removeEventListener\" : \"detachEvent\";\n  let pre = doc.addEventListener ? \"\" : \"on\";\n  var init = function (e) {\n    if (e.type === \"readystatechange\" && doc.readyState !== \"complete\") {\n      return;\n    }\n    (e.type === \"load\" ? win : doc)[rem](pre + e.type, init, false);\n    if (!done && (done = true)) {\n      return fn.call(win, e.type || e);\n    }\n  };\n\n  var poll = function () {\n    try {\n      root.doScroll(\"left\");\n    } catch (e) {\n      setTimeout(poll, 50);\n      return;\n    }\n    return init(\"poll\");\n  };\n\n  if (doc.readyState !== \"complete\") {\n    if (doc.createEventObject && root.doScroll) {\n      try {\n        top = !win.frameElement;\n      } catch (error) {}\n      if (top) {\n        poll();\n      }\n    }\n    doc[add](pre + \"DOMContentLoaded\", init, false);\n    doc[add](pre + \"readystatechange\", init, false);\n    return win[add](pre + \"load\", init, false);\n  }\n};\n\nfunction __guard__(value, transform) {\n  return typeof value !== \"undefined\" && value !== null\n    ? transform(value)\n    : undefined;\n}\nfunction __guardMethod__(obj, methodName, transform) {\n  if (\n    typeof obj !== \"undefined\" &&\n    obj !== null &&\n    typeof obj[methodName] === \"function\"\n  ) {\n    return transform(obj, methodName);\n  } else {\n    return undefined;\n  }\n}\n\nexport { Dropzone };\n", "// The Emitter class provides the ability to call `.on()` on Dropzone to listen\n// to events.\n// It is strongly based on component's emitter class, and I removed the\n// functionality because of the dependency hell with different frameworks.\nexport default class Emitter {\n  // Add an event listener for given event\n  on(event, fn) {\n    this._callbacks = this._callbacks || {};\n    // Create namespace for this event\n    if (!this._callbacks[event]) {\n      this._callbacks[event] = [];\n    }\n    this._callbacks[event].push(fn);\n    return this;\n  }\n\n  emit(event, ...args) {\n    this._callbacks = this._callbacks || {};\n    let callbacks = this._callbacks[event];\n\n    if (callbacks) {\n      for (let callback of callbacks) {\n        callback.apply(this, args);\n      }\n    }\n    // trigger a corresponding DOM event\n    if (this.element) {\n      this.element.dispatchEvent(\n        this.makeEvent(\"dropzone:\" + event, { args: args })\n      );\n    }\n    return this;\n  }\n\n  makeEvent(eventName, detail) {\n    let params = { bubbles: true, cancelable: true, detail: detail };\n\n    if (typeof window.CustomEvent === \"function\") {\n      return new CustomEvent(eventName, params);\n    } else {\n      // IE 11 support\n      // https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent\n      var evt = document.createEvent(\"CustomEvent\");\n      evt.initCustomEvent(\n        eventName,\n        params.bubbles,\n        params.cancelable,\n        params.detail\n      );\n      return evt;\n    }\n  }\n\n  // Remove event listener for given event. If fn is not provided, all event\n  // listeners for that event will be removed. If neither is provided, all\n  // event listeners will be removed.\n  off(event, fn) {\n    if (!this._callbacks || arguments.length === 0) {\n      this._callbacks = {};\n      return this;\n    }\n\n    // specific event\n    let callbacks = this._callbacks[event];\n    if (!callbacks) {\n      return this;\n    }\n\n    // remove all handlers\n    if (arguments.length === 1) {\n      delete this._callbacks[event];\n      return this;\n    }\n\n    // remove specific handler\n    for (let i = 0; i < callbacks.length; i++) {\n      let callback = callbacks[i];\n      if (callback === fn) {\n        callbacks.splice(i, 1);\n        break;\n      }\n    }\n\n    return this;\n  }\n}\n", "import Dropzone from \"./dropzone\";\nimport defaultPreviewTemplate from \"bundle-text:./preview-template.html\";\n\nlet defaultOptions = {\n  /**\n   * Has to be specified on elements other than form (or when the form doesn't\n   * have an `action` attribute).\n   *\n   * You can also provide a function that will be called with `files` and\n   * `dataBlocks`  and must return the url as string.\n   */\n  url: null,\n\n  /**\n   * Can be changed to `\"put\"` if necessary. You can also provide a function\n   * that will be called with `files` and must return the method (since `v3.12.0`).\n   */\n  method: \"post\",\n\n  /**\n   * Will be set on the XHRequest.\n   */\n  withCredentials: false,\n\n  /**\n   * The timeout for the XHR requests in milliseconds (since `v4.4.0`).\n   * If set to null or 0, no timeout is going to be set.\n   */\n  timeout: null,\n\n  /**\n   * How many file uploads to process in parallel (See the\n   * Enqueuing file uploads documentation section for more info)\n   */\n  parallelUploads: 2,\n\n  /**\n   * Whether to send multiple files in one request. If\n   * this it set to true, then the fallback file input element will\n   * have the `multiple` attribute as well. This option will\n   * also trigger additional events (like `processingmultiple`). See the events\n   * documentation section for more information.\n   */\n  uploadMultiple: false,\n\n  /**\n   * Whether you want files to be uploaded in chunks to your server. This can't be\n   * used in combination with `uploadMultiple`.\n   *\n   * See [chunksUploaded](#config-chunksUploaded) for the callback to finalise an upload.\n   */\n  chunking: false,\n\n  /**\n   * If `chunking` is enabled, this defines whether **every** file should be chunked,\n   * even if the file size is below chunkSize. This means, that the additional chunk\n   * form data will be submitted and the `chunksUploaded` callback will be invoked.\n   */\n  forceChunking: false,\n\n  /**\n   * If `chunking` is `true`, then this defines the chunk size in bytes.\n   */\n  chunkSize: 2 * 1024 * 1024,\n\n  /**\n   * If `true`, the individual chunks of a file are being uploaded simultaneously.\n   */\n  parallelChunkUploads: false,\n\n  /**\n   * Whether a chunk should be retried if it fails.\n   */\n  retryChunks: false,\n\n  /**\n   * If `retryChunks` is true, how many times should it be retried.\n   */\n  retryChunksLimit: 3,\n\n  /**\n   * The maximum filesize (in MiB) that is allowed to be uploaded.\n   */\n  maxFilesize: 256,\n\n  /**\n   * The name of the file param that gets transferred.\n   * **NOTE**: If you have the option  `uploadMultiple` set to `true`, then\n   * Dropzone will append `[]` to the name.\n   */\n  paramName: \"file\",\n\n  /**\n   * Whether thumbnails for images should be generated\n   */\n  createImageThumbnails: true,\n\n  /**\n   * In MB. When the filename exceeds this limit, the thumbnail will not be generated.\n   */\n  maxThumbnailFilesize: 10,\n\n  /**\n   * If `null`, the ratio of the image will be used to calculate it.\n   */\n  thumbnailWidth: 120,\n\n  /**\n   * The same as `thumbnailWidth`. If both are null, images will not be resized.\n   */\n  thumbnailHeight: 120,\n\n  /**\n   * How the images should be scaled down in case both, `thumbnailWidth` and `thumbnailHeight` are provided.\n   * Can be either `contain` or `crop`.\n   */\n  thumbnailMethod: \"crop\",\n\n  /**\n   * If set, images will be resized to these dimensions before being **uploaded**.\n   * If only one, `resizeWidth` **or** `resizeHeight` is provided, the original aspect\n   * ratio of the file will be preserved.\n   *\n   * The `options.transformFile` function uses these options, so if the `transformFile` function\n   * is overridden, these options don't do anything.\n   */\n  resizeWidth: null,\n\n  /**\n   * See `resizeWidth`.\n   */\n  resizeHeight: null,\n\n  /**\n   * The mime type of the resized image (before it gets uploaded to the server).\n   * If `null` the original mime type will be used. To force jpeg, for example, use `image/jpeg`.\n   * See `resizeWidth` for more information.\n   */\n  resizeMimeType: null,\n\n  /**\n   * The quality of the resized images. See `resizeWidth`.\n   */\n  resizeQuality: 0.8,\n\n  /**\n   * How the images should be scaled down in case both, `resizeWidth` and `resizeHeight` are provided.\n   * Can be either `contain` or `crop`.\n   */\n  resizeMethod: \"contain\",\n\n  /**\n   * The base that is used to calculate the **displayed** filesize. You can\n   * change this to 1024 if you would rather display kibibytes, mebibytes,\n   * etc... 1024 is technically incorrect, because `1024 bytes` are `1 kibibyte`\n   * not `1 kilobyte`. You can change this to `1024` if you don't care about\n   * validity.\n   */\n  filesizeBase: 1000,\n\n  /**\n   * If not `null` defines how many files this Dropzone handles. If it exceeds,\n   * the event `maxfilesexceeded` will be called. The dropzone element gets the\n   * class `dz-max-files-reached` accordingly so you can provide visual\n   * feedback.\n   */\n  maxFiles: null,\n\n  /**\n   * An optional object to send additional headers to the server. Eg:\n   * `{ \"My-Awesome-Header\": \"header value\" }`\n   */\n  headers: null,\n\n  /**\n   * Should the default headers be set or not?\n   * Accept: application/json <- for requesting json response\n   * Cache-Control: no-cache <- Request shouldnt be cached\n   * X-Requested-With: XMLHttpRequest <- We sent the request via XMLHttpRequest\n   */\n  defaultHeaders: true,\n\n  /**\n   * If `true`, the dropzone element itself will be clickable, if `false`\n   * nothing will be clickable.\n   *\n   * You can also pass an HTML element, a CSS selector (for multiple elements)\n   * or an array of those. In that case, all of those elements will trigger an\n   * upload when clicked.\n   */\n  clickable: true,\n\n  /**\n   * Whether hidden files in directories should be ignored.\n   */\n  ignoreHiddenFiles: true,\n\n  /**\n   * The default implementation of `accept` checks the file's mime type or\n   * extension against this list. This is a comma separated list of mime\n   * types or file extensions.\n   *\n   * Eg.: `image/*,application/pdf,.psd`\n   *\n   * If the Dropzone is `clickable` this option will also be used as\n   * [`accept`](https://developer.mozilla.org/en-US/docs/HTML/Element/input#attr-accept)\n   * parameter on the hidden file input as well.\n   */\n  acceptedFiles: null,\n\n  /**\n   * **Deprecated!**\n   * Use acceptedFiles instead.\n   */\n  acceptedMimeTypes: null,\n\n  /**\n   * If false, files will be added to the queue but the queue will not be\n   * processed automatically.\n   * This can be useful if you need some additional user input before sending\n   * files (or if you want want all files sent at once).\n   * If you're ready to send the file simply call `myDropzone.processQueue()`.\n   *\n   * See the [enqueuing file uploads](#enqueuing-file-uploads) documentation\n   * section for more information.\n   */\n  autoProcessQueue: true,\n\n  /**\n   * If false, files added to the dropzone will not be queued by default.\n   * You'll have to call `enqueueFile(file)` manually.\n   */\n  autoQueue: true,\n\n  /**\n   * If `true`, this will add a link to every file preview to remove or cancel (if\n   * already uploading) the file. The `dictCancelUpload`, `dictCancelUploadConfirmation`\n   * and `dictRemoveFile` options are used for the wording.\n   */\n  addRemoveLinks: false,\n\n  /**\n   * Defines where to display the file previews – if `null` the\n   * Dropzone element itself is used. Can be a plain `HTMLElement` or a CSS\n   * selector. The element should have the `dropzone-previews` class so\n   * the previews are displayed properly.\n   */\n  previewsContainer: null,\n\n  /**\n   * Set this to `true` if you don't want previews to be shown.\n   */\n  disablePreviews: false,\n\n  /**\n   * This is the element the hidden input field (which is used when clicking on the\n   * dropzone to trigger file selection) will be appended to. This might\n   * be important in case you use frameworks to switch the content of your page.\n   *\n   * Can be a selector string, or an element directly.\n   */\n  hiddenInputContainer: \"body\",\n\n  /**\n   * If null, no capture type will be specified\n   * If camera, mobile devices will skip the file selection and choose camera\n   * If microphone, mobile devices will skip the file selection and choose the microphone\n   * If camcorder, mobile devices will skip the file selection and choose the camera in video mode\n   * On apple devices multiple must be set to false.  AcceptedFiles may need to\n   * be set to an appropriate mime type (e.g. \"image/*\", \"audio/*\", or \"video/*\").\n   */\n  capture: null,\n\n  /**\n   * **Deprecated**. Use `renameFile` instead.\n   */\n  renameFilename: null,\n\n  /**\n   * A function that is invoked before the file is uploaded to the server and renames the file.\n   * This function gets the `File` as argument and can use the `file.name`. The actual name of the\n   * file that gets used during the upload can be accessed through `file.upload.filename`.\n   */\n  renameFile: null,\n\n  /**\n   * If `true` the fallback will be forced. This is very useful to test your server\n   * implementations first and make sure that everything works as\n   * expected without dropzone if you experience problems, and to test\n   * how your fallbacks will look.\n   */\n  forceFallback: false,\n\n  /**\n   * The text used before any files are dropped.\n   */\n  dictDefaultMessage: \"Drop files here to upload\",\n\n  /**\n   * The text that replaces the default message text it the browser is not supported.\n   */\n  dictFallbackMessage:\n    \"Your browser does not support drag'n'drop file uploads.\",\n\n  /**\n   * The text that will be added before the fallback form.\n   * If you provide a  fallback element yourself, or if this option is `null` this will\n   * be ignored.\n   */\n  dictFallbackText:\n    \"Please use the fallback form below to upload your files like in the olden days.\",\n\n  /**\n   * If the filesize is too big.\n   * `{{filesize}}` and `{{maxFilesize}}` will be replaced with the respective configuration values.\n   */\n  dictFileTooBig:\n    \"File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.\",\n\n  /**\n   * If the file doesn't match the file type.\n   */\n  dictInvalidFileType: \"You can't upload files of this type.\",\n\n  /**\n   * If the server response was invalid.\n   * `{{statusCode}}` will be replaced with the servers status code.\n   */\n  dictResponseError: \"Server responded with {{statusCode}} code.\",\n\n  /**\n   * If `addRemoveLinks` is true, the text to be used for the cancel upload link.\n   */\n  dictCancelUpload: \"Cancel upload\",\n\n  /**\n   * The text that is displayed if an upload was manually canceled\n   */\n  dictUploadCanceled: \"Upload canceled.\",\n\n  /**\n   * If `addRemoveLinks` is true, the text to be used for confirmation when cancelling upload.\n   */\n  dictCancelUploadConfirmation: \"Are you sure you want to cancel this upload?\",\n\n  /**\n   * If `addRemoveLinks` is true, the text to be used to remove a file.\n   */\n  dictRemoveFile: \"Remove file\",\n\n  /**\n   * If this is not null, then the user will be prompted before removing a file.\n   */\n  dictRemoveFileConfirmation: null,\n\n  /**\n   * Displayed if `maxFiles` is st and exceeded.\n   * The string `{{maxFiles}}` will be replaced by the configuration value.\n   */\n  dictMaxFilesExceeded: \"You can not upload any more files.\",\n\n  /**\n   * Allows you to translate the different units. Starting with `tb` for terabytes and going down to\n   * `b` for bytes.\n   */\n  dictFileSizeUnits: { tb: \"TB\", gb: \"GB\", mb: \"MB\", kb: \"KB\", b: \"b\" },\n  /**\n   * Called when dropzone initialized\n   * You can add event listeners here\n   */\n  init() {},\n\n  /**\n   * Can be an **object** of additional parameters to transfer to the server, **or** a `Function`\n   * that gets invoked with the `files`, `xhr` and, if it's a chunked upload, `chunk` arguments. In case\n   * of a function, this needs to return a map.\n   *\n   * The default implementation does nothing for normal uploads, but adds relevant information for\n   * chunked uploads.\n   *\n   * This is the same as adding hidden input fields in the form element.\n   */\n  params(files, xhr, chunk) {\n    if (chunk) {\n      return {\n        dzuuid: chunk.file.upload.uuid,\n        dzchunkindex: chunk.index,\n        dztotalfilesize: chunk.file.size,\n        dzchunksize: this.options.chunkSize,\n        dztotalchunkcount: chunk.file.upload.totalChunkCount,\n        dzchunkbyteoffset: chunk.index * this.options.chunkSize,\n      };\n    }\n  },\n\n  /**\n   * A function that gets a [file](https://developer.mozilla.org/en-US/docs/DOM/File)\n   * and a `done` function as parameters.\n   *\n   * If the done function is invoked without arguments, the file is \"accepted\" and will\n   * be processed. If you pass an error message, the file is rejected, and the error\n   * message will be displayed.\n   * This function will not be called if the file is too big or doesn't match the mime types.\n   */\n  accept(file, done) {\n    return done();\n  },\n\n  /**\n   * The callback that will be invoked when all chunks have been uploaded for a file.\n   * It gets the file for which the chunks have been uploaded as the first parameter,\n   * and the `done` function as second. `done()` needs to be invoked when everything\n   * needed to finish the upload process is done.\n   */\n  chunksUploaded: function (file, done) {\n    done();\n  },\n\n  /**\n   * Sends the file as binary blob in body instead of form data.\n   * If this is set, the `params` option will be ignored.\n   * It's an error to set this to `true` along with `uploadMultiple` since\n   * multiple files cannot be in a single binary body.\n   */\n  binaryBody: false,\n\n  /**\n   * Gets called when the browser is not supported.\n   * The default implementation shows the fallback input field and adds\n   * a text.\n   */\n  fallback() {\n    // This code should pass in IE7... :(\n    let messageElement;\n    this.element.className = `${this.element.className} dz-browser-not-supported`;\n\n    for (let child of this.element.getElementsByTagName(\"div\")) {\n      if (/(^| )dz-message($| )/.test(child.className)) {\n        messageElement = child;\n        child.className = \"dz-message\"; // Removes the 'dz-default' class\n        break;\n      }\n    }\n    if (!messageElement) {\n      messageElement = Dropzone.createElement(\n        '<div class=\"dz-message\"><span></span></div>'\n      );\n      this.element.appendChild(messageElement);\n    }\n\n    let span = messageElement.getElementsByTagName(\"span\")[0];\n    if (span) {\n      if (span.textContent != null) {\n        span.textContent = this.options.dictFallbackMessage;\n      } else if (span.innerText != null) {\n        span.innerText = this.options.dictFallbackMessage;\n      }\n    }\n\n    return this.element.appendChild(this.getFallbackForm());\n  },\n\n  /**\n   * Gets called to calculate the thumbnail dimensions.\n   *\n   * It gets `file`, `width` and `height` (both may be `null`) as parameters and must return an object containing:\n   *\n   *  - `srcWidth` & `srcHeight` (required)\n   *  - `trgWidth` & `trgHeight` (required)\n   *  - `srcX` & `srcY` (optional, default `0`)\n   *  - `trgX` & `trgY` (optional, default `0`)\n   *\n   * Those values are going to be used by `ctx.drawImage()`.\n   */\n  resize(file, width, height, resizeMethod) {\n    let info = {\n      srcX: 0,\n      srcY: 0,\n      srcWidth: file.width,\n      srcHeight: file.height,\n    };\n\n    let srcRatio = file.width / file.height;\n\n    // Automatically calculate dimensions if not specified\n    if (width == null && height == null) {\n      width = info.srcWidth;\n      height = info.srcHeight;\n    } else if (width == null) {\n      width = height * srcRatio;\n    } else if (height == null) {\n      height = width / srcRatio;\n    }\n\n    // Make sure images aren't upscaled\n    width = Math.min(width, info.srcWidth);\n    height = Math.min(height, info.srcHeight);\n\n    let trgRatio = width / height;\n\n    if (info.srcWidth > width || info.srcHeight > height) {\n      // Image is bigger and needs rescaling\n      if (resizeMethod === \"crop\") {\n        if (srcRatio > trgRatio) {\n          info.srcHeight = file.height;\n          info.srcWidth = info.srcHeight * trgRatio;\n        } else {\n          info.srcWidth = file.width;\n          info.srcHeight = info.srcWidth / trgRatio;\n        }\n      } else if (resizeMethod === \"contain\") {\n        // Method 'contain'\n        if (srcRatio > trgRatio) {\n          height = width / srcRatio;\n        } else {\n          width = height * srcRatio;\n        }\n      } else {\n        throw new Error(`Unknown resizeMethod '${resizeMethod}'`);\n      }\n    }\n\n    info.srcX = (file.width - info.srcWidth) / 2;\n    info.srcY = (file.height - info.srcHeight) / 2;\n\n    info.trgWidth = width;\n    info.trgHeight = height;\n\n    return info;\n  },\n\n  /**\n   * Can be used to transform the file (for example, resize an image if necessary).\n   *\n   * The default implementation uses `resizeWidth` and `resizeHeight` (if provided) and resizes\n   * images according to those dimensions.\n   *\n   * Gets the `file` as the first parameter, and a `done()` function as the second, that needs\n   * to be invoked with the file when the transformation is done.\n   */\n  transformFile(file, done) {\n    if (\n      (this.options.resizeWidth || this.options.resizeHeight) &&\n      file.type.match(/image.*/)\n    ) {\n      return this.resizeImage(\n        file,\n        this.options.resizeWidth,\n        this.options.resizeHeight,\n        this.options.resizeMethod,\n        done\n      );\n    } else {\n      return done(file);\n    }\n  },\n\n  /**\n   * A string that contains the template used for each dropped\n   * file. Change it to fulfill your needs but make sure to properly\n   * provide all elements.\n   *\n   * If you want to use an actual HTML element instead of providing a String\n   * as a config option, you could create a div with the id `tpl`,\n   * put the template inside it and provide the element like this:\n   *\n   *     document\n   *       .querySelector('#tpl')\n   *       .innerHTML\n   *\n   */\n  previewTemplate: defaultPreviewTemplate,\n\n  /*\n   Those functions register themselves to the events on init and handle all\n   the user interface specific stuff. Overwriting them won't break the upload\n   but can break the way it's displayed.\n   You can overwrite them if you don't like the default behavior. If you just\n   want to add an additional event handler, register it on the dropzone object\n   and don't overwrite those options.\n   */\n\n  // Those are self explanatory and simply concern the DragnDrop.\n  drop(e) {\n    return this.element.classList.remove(\"dz-drag-hover\");\n  },\n  dragstart(e) {},\n  dragend(e) {\n    return this.element.classList.remove(\"dz-drag-hover\");\n  },\n  dragenter(e) {\n    return this.element.classList.add(\"dz-drag-hover\");\n  },\n  dragover(e) {\n    return this.element.classList.add(\"dz-drag-hover\");\n  },\n  dragleave(e) {\n    return this.element.classList.remove(\"dz-drag-hover\");\n  },\n\n  paste(e) {},\n\n  // Called whenever there are no files left in the dropzone anymore, and the\n  // dropzone should be displayed as if in the initial state.\n  reset() {\n    return this.element.classList.remove(\"dz-started\");\n  },\n\n  // Called when a file is added to the queue\n  // Receives `file`\n  addedfile(file) {\n    if (this.element === this.previewsContainer) {\n      this.element.classList.add(\"dz-started\");\n    }\n\n    if (this.previewsContainer && !this.options.disablePreviews) {\n      file.previewElement = Dropzone.createElement(\n        this.options.previewTemplate.trim()\n      );\n      file.previewTemplate = file.previewElement; // Backwards compatibility\n\n      this.previewsContainer.appendChild(file.previewElement);\n      for (var node of file.previewElement.querySelectorAll(\"[data-dz-name]\")) {\n        node.textContent = file.name;\n      }\n      for (node of file.previewElement.querySelectorAll(\"[data-dz-size]\")) {\n        node.innerHTML = this.filesize(file.size);\n      }\n\n      if (this.options.addRemoveLinks) {\n        file._removeLink = Dropzone.createElement(\n          `<a class=\"dz-remove\" href=\"javascript:undefined;\" data-dz-remove>${this.options.dictRemoveFile}</a>`\n        );\n        file.previewElement.appendChild(file._removeLink);\n      }\n\n      let removeFileEvent = (e) => {\n        e.preventDefault();\n        e.stopPropagation();\n        if (file.status === Dropzone.UPLOADING) {\n          return Dropzone.confirm(\n            this.options.dictCancelUploadConfirmation,\n            () => this.removeFile(file)\n          );\n        } else {\n          if (this.options.dictRemoveFileConfirmation) {\n            return Dropzone.confirm(\n              this.options.dictRemoveFileConfirmation,\n              () => this.removeFile(file)\n            );\n          } else {\n            return this.removeFile(file);\n          }\n        }\n      };\n\n      for (let removeLink of file.previewElement.querySelectorAll(\n        \"[data-dz-remove]\"\n      )) {\n        removeLink.addEventListener(\"click\", removeFileEvent);\n      }\n    }\n  },\n\n  // Called whenever a file is removed.\n  removedfile(file) {\n    if (file.previewElement != null && file.previewElement.parentNode != null) {\n      file.previewElement.parentNode.removeChild(file.previewElement);\n    }\n    return this._updateMaxFilesReachedClass();\n  },\n\n  // Called when a thumbnail has been generated\n  // Receives `file` and `dataUrl`\n  thumbnail(file, dataUrl) {\n    if (file.previewElement) {\n      file.previewElement.classList.remove(\"dz-file-preview\");\n      for (let thumbnailElement of file.previewElement.querySelectorAll(\n        \"[data-dz-thumbnail]\"\n      )) {\n        thumbnailElement.alt = file.name;\n        thumbnailElement.src = dataUrl;\n      }\n\n      return setTimeout(\n        () => file.previewElement.classList.add(\"dz-image-preview\"),\n        1\n      );\n    }\n  },\n\n  // Called whenever an error occurs\n  // Receives `file` and `message`\n  error(file, message) {\n    if (file.previewElement) {\n      file.previewElement.classList.add(\"dz-error\");\n      if (typeof message !== \"string\" && message.error) {\n        message = message.error;\n      }\n      for (let node of file.previewElement.querySelectorAll(\n        \"[data-dz-errormessage]\"\n      )) {\n        node.textContent = message;\n      }\n    }\n  },\n\n  errormultiple() {},\n\n  // Called when a file gets processed. Since there is a cue, not all added\n  // files are processed immediately.\n  // Receives `file`\n  processing(file) {\n    if (file.previewElement) {\n      file.previewElement.classList.add(\"dz-processing\");\n      if (file._removeLink) {\n        return (file._removeLink.innerHTML = this.options.dictCancelUpload);\n      }\n    }\n  },\n\n  processingmultiple() {},\n\n  // Called whenever the upload progress gets updated.\n  // Receives `file`, `progress` (percentage 0-100) and `bytesSent`.\n  // To get the total number of bytes of the file, use `file.size`\n  uploadprogress(file, progress, bytesSent) {\n    if (file.previewElement) {\n      for (let node of file.previewElement.querySelectorAll(\n        \"[data-dz-uploadprogress]\"\n      )) {\n        node.nodeName === \"PROGRESS\"\n          ? (node.value = progress)\n          : (node.style.width = `${progress}%`);\n      }\n    }\n  },\n\n  // Called whenever the total upload progress gets updated.\n  // Called with totalUploadProgress (0-100), totalBytes and totalBytesSent\n  totaluploadprogress() {},\n\n  // Called just before the file is sent. Gets the `xhr` object as second\n  // parameter, so you can modify it (for example to add a CSRF token) and a\n  // `formData` object to add additional information.\n  sending() {},\n\n  sendingmultiple() {},\n\n  // When the complete upload is finished and successful\n  // Receives `file`\n  success(file) {\n    if (file.previewElement) {\n      return file.previewElement.classList.add(\"dz-success\");\n    }\n  },\n\n  successmultiple() {},\n\n  // When the upload is canceled.\n  canceled(file) {\n    return this.emit(\"error\", file, this.options.dictUploadCanceled);\n  },\n\n  canceledmultiple() {},\n\n  // When the upload is finished, either with success or an error.\n  // Receives `file`\n  complete(file) {\n    if (file._removeLink) {\n      file._removeLink.innerHTML = this.options.dictRemoveFile;\n    }\n    if (file.previewElement) {\n      return file.previewElement.classList.add(\"dz-complete\");\n    }\n  },\n\n  completemultiple() {},\n\n  maxfilesexceeded() {},\n\n  maxfilesreached() {},\n\n  queuecomplete() {},\n\n  addedfiles() {},\n};\n\nexport default defaultOptions;\n", "module.exports = \"a1acf319c471fa03\";", "var sparkMd5 = {\n  exports: {}\n};\n\n(function(module, exports) {\n  (function(factory) {\n    {\n      module.exports = factory();\n    }\n  })((function(undefined$1) {\n    var hex_chr = [ \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\" ];\n    function md5cycle(x, k) {\n      var a = x[0], b = x[1], c = x[2], d = x[3];\n      a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n      a = (a << 7 | a >>> 25) + b | 0;\n      d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n      d = (d << 12 | d >>> 20) + a | 0;\n      c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n      c = (c << 17 | c >>> 15) + d | 0;\n      b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n      b = (b << 22 | b >>> 10) + c | 0;\n      a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n      a = (a << 7 | a >>> 25) + b | 0;\n      d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n      d = (d << 12 | d >>> 20) + a | 0;\n      c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n      c = (c << 17 | c >>> 15) + d | 0;\n      b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n      b = (b << 22 | b >>> 10) + c | 0;\n      a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n      a = (a << 7 | a >>> 25) + b | 0;\n      d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n      d = (d << 12 | d >>> 20) + a | 0;\n      c += (d & a | ~d & b) + k[10] - 42063 | 0;\n      c = (c << 17 | c >>> 15) + d | 0;\n      b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n      b = (b << 22 | b >>> 10) + c | 0;\n      a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n      a = (a << 7 | a >>> 25) + b | 0;\n      d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n      d = (d << 12 | d >>> 20) + a | 0;\n      c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n      c = (c << 17 | c >>> 15) + d | 0;\n      b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n      b = (b << 22 | b >>> 10) + c | 0;\n      a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n      a = (a << 5 | a >>> 27) + b | 0;\n      d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n      d = (d << 9 | d >>> 23) + a | 0;\n      c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n      c = (c << 14 | c >>> 18) + d | 0;\n      b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n      b = (b << 20 | b >>> 12) + c | 0;\n      a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n      a = (a << 5 | a >>> 27) + b | 0;\n      d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n      d = (d << 9 | d >>> 23) + a | 0;\n      c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n      c = (c << 14 | c >>> 18) + d | 0;\n      b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n      b = (b << 20 | b >>> 12) + c | 0;\n      a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n      a = (a << 5 | a >>> 27) + b | 0;\n      d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n      d = (d << 9 | d >>> 23) + a | 0;\n      c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n      c = (c << 14 | c >>> 18) + d | 0;\n      b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n      b = (b << 20 | b >>> 12) + c | 0;\n      a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n      a = (a << 5 | a >>> 27) + b | 0;\n      d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n      d = (d << 9 | d >>> 23) + a | 0;\n      c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n      c = (c << 14 | c >>> 18) + d | 0;\n      b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n      b = (b << 20 | b >>> 12) + c | 0;\n      a += (b ^ c ^ d) + k[5] - 378558 | 0;\n      a = (a << 4 | a >>> 28) + b | 0;\n      d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n      d = (d << 11 | d >>> 21) + a | 0;\n      c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n      c = (c << 16 | c >>> 16) + d | 0;\n      b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n      b = (b << 23 | b >>> 9) + c | 0;\n      a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n      a = (a << 4 | a >>> 28) + b | 0;\n      d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n      d = (d << 11 | d >>> 21) + a | 0;\n      c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n      c = (c << 16 | c >>> 16) + d | 0;\n      b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n      b = (b << 23 | b >>> 9) + c | 0;\n      a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n      a = (a << 4 | a >>> 28) + b | 0;\n      d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n      d = (d << 11 | d >>> 21) + a | 0;\n      c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n      c = (c << 16 | c >>> 16) + d | 0;\n      b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n      b = (b << 23 | b >>> 9) + c | 0;\n      a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n      a = (a << 4 | a >>> 28) + b | 0;\n      d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n      d = (d << 11 | d >>> 21) + a | 0;\n      c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n      c = (c << 16 | c >>> 16) + d | 0;\n      b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n      b = (b << 23 | b >>> 9) + c | 0;\n      a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n      a = (a << 6 | a >>> 26) + b | 0;\n      d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n      d = (d << 10 | d >>> 22) + a | 0;\n      c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n      c = (c << 15 | c >>> 17) + d | 0;\n      b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n      b = (b << 21 | b >>> 11) + c | 0;\n      a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n      a = (a << 6 | a >>> 26) + b | 0;\n      d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n      d = (d << 10 | d >>> 22) + a | 0;\n      c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n      c = (c << 15 | c >>> 17) + d | 0;\n      b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n      b = (b << 21 | b >>> 11) + c | 0;\n      a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n      a = (a << 6 | a >>> 26) + b | 0;\n      d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n      d = (d << 10 | d >>> 22) + a | 0;\n      c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n      c = (c << 15 | c >>> 17) + d | 0;\n      b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n      b = (b << 21 | b >>> 11) + c | 0;\n      a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n      a = (a << 6 | a >>> 26) + b | 0;\n      d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n      d = (d << 10 | d >>> 22) + a | 0;\n      c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n      c = (c << 15 | c >>> 17) + d | 0;\n      b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n      b = (b << 21 | b >>> 11) + c | 0;\n      x[0] = a + x[0] | 0;\n      x[1] = b + x[1] | 0;\n      x[2] = c + x[2] | 0;\n      x[3] = d + x[3] | 0;\n    }\n    function md5blk(s) {\n      var md5blks = [], i;\n      for (i = 0; i < 64; i += 4) {\n        md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n      }\n      return md5blks;\n    }\n    function md5blk_array(a) {\n      var md5blks = [], i;\n      for (i = 0; i < 64; i += 4) {\n        md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n      }\n      return md5blks;\n    }\n    function md51(s) {\n      var n = s.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n      for (i = 64; i <= n; i += 64) {\n        md5cycle(state, md5blk(s.substring(i - 64, i)));\n      }\n      s = s.substring(i - 64);\n      length = s.length;\n      tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n      for (i = 0; i < length; i += 1) {\n        tail[i >> 2] |= s.charCodeAt(i) << (i % 4 << 3);\n      }\n      tail[i >> 2] |= 128 << (i % 4 << 3);\n      if (i > 55) {\n        md5cycle(state, tail);\n        for (i = 0; i < 16; i += 1) {\n          tail[i] = 0;\n        }\n      }\n      tmp = n * 8;\n      tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n      lo = parseInt(tmp[2], 16);\n      hi = parseInt(tmp[1], 16) || 0;\n      tail[14] = lo;\n      tail[15] = hi;\n      md5cycle(state, tail);\n      return state;\n    }\n    function md51_array(a) {\n      var n = a.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n      for (i = 64; i <= n; i += 64) {\n        md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n      }\n      a = i - 64 < n ? a.subarray(i - 64) : new Uint8Array(0);\n      length = a.length;\n      tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n      for (i = 0; i < length; i += 1) {\n        tail[i >> 2] |= a[i] << (i % 4 << 3);\n      }\n      tail[i >> 2] |= 128 << (i % 4 << 3);\n      if (i > 55) {\n        md5cycle(state, tail);\n        for (i = 0; i < 16; i += 1) {\n          tail[i] = 0;\n        }\n      }\n      tmp = n * 8;\n      tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n      lo = parseInt(tmp[2], 16);\n      hi = parseInt(tmp[1], 16) || 0;\n      tail[14] = lo;\n      tail[15] = hi;\n      md5cycle(state, tail);\n      return state;\n    }\n    function rhex(n) {\n      var s = \"\", j;\n      for (j = 0; j < 4; j += 1) {\n        s += hex_chr[n >> j * 8 + 4 & 15] + hex_chr[n >> j * 8 & 15];\n      }\n      return s;\n    }\n    function hex(x) {\n      var i;\n      for (i = 0; i < x.length; i += 1) {\n        x[i] = rhex(x[i]);\n      }\n      return x.join(\"\");\n    }\n    if (hex(md51(\"hello\")) !== \"5d41402abc4b2a76b9719d911017c592\") ;\n    if (typeof ArrayBuffer !== \"undefined\" && !ArrayBuffer.prototype.slice) {\n      (function() {\n        function clamp(val, length) {\n          val = val | 0 || 0;\n          if (val < 0) {\n            return Math.max(val + length, 0);\n          }\n          return Math.min(val, length);\n        }\n        ArrayBuffer.prototype.slice = function(from, to) {\n          var length = this.byteLength, begin = clamp(from, length), end = length, num, target, targetArray, sourceArray;\n          if (to !== undefined$1) {\n            end = clamp(to, length);\n          }\n          if (begin > end) {\n            return new ArrayBuffer(0);\n          }\n          num = end - begin;\n          target = new ArrayBuffer(num);\n          targetArray = new Uint8Array(target);\n          sourceArray = new Uint8Array(this, begin, num);\n          targetArray.set(sourceArray);\n          return target;\n        };\n      })();\n    }\n    function toUtf8(str) {\n      if (/[\\u0080-\\uFFFF]/.test(str)) {\n        str = unescape(encodeURIComponent(str));\n      }\n      return str;\n    }\n    function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n      var length = str.length, buff = new ArrayBuffer(length), arr = new Uint8Array(buff), i;\n      for (i = 0; i < length; i += 1) {\n        arr[i] = str.charCodeAt(i);\n      }\n      return returnUInt8Array ? arr : buff;\n    }\n    function arrayBuffer2Utf8Str(buff) {\n      return String.fromCharCode.apply(null, new Uint8Array(buff));\n    }\n    function concatenateArrayBuffers(first, second, returnUInt8Array) {\n      var result = new Uint8Array(first.byteLength + second.byteLength);\n      result.set(new Uint8Array(first));\n      result.set(new Uint8Array(second), first.byteLength);\n      return returnUInt8Array ? result : result.buffer;\n    }\n    function hexToBinaryString(hex) {\n      var bytes = [], length = hex.length, x;\n      for (x = 0; x < length - 1; x += 2) {\n        bytes.push(parseInt(hex.substr(x, 2), 16));\n      }\n      return String.fromCharCode.apply(String, bytes);\n    }\n    function SparkMD5() {\n      this.reset();\n    }\n    SparkMD5.prototype.append = function(str) {\n      this.appendBinary(toUtf8(str));\n      return this;\n    };\n    SparkMD5.prototype.appendBinary = function(contents) {\n      this._buff += contents;\n      this._length += contents.length;\n      var length = this._buff.length, i;\n      for (i = 64; i <= length; i += 64) {\n        md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n      }\n      this._buff = this._buff.substring(i - 64);\n      return this;\n    };\n    SparkMD5.prototype.end = function(raw) {\n      var buff = this._buff, length = buff.length, i, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], ret;\n      for (i = 0; i < length; i += 1) {\n        tail[i >> 2] |= buff.charCodeAt(i) << (i % 4 << 3);\n      }\n      this._finish(tail, length);\n      ret = hex(this._hash);\n      if (raw) {\n        ret = hexToBinaryString(ret);\n      }\n      this.reset();\n      return ret;\n    };\n    SparkMD5.prototype.reset = function() {\n      this._buff = \"\";\n      this._length = 0;\n      this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n      return this;\n    };\n    SparkMD5.prototype.getState = function() {\n      return {\n        buff: this._buff,\n        length: this._length,\n        hash: this._hash.slice()\n      };\n    };\n    SparkMD5.prototype.setState = function(state) {\n      this._buff = state.buff;\n      this._length = state.length;\n      this._hash = state.hash;\n      return this;\n    };\n    SparkMD5.prototype.destroy = function() {\n      delete this._hash;\n      delete this._buff;\n      delete this._length;\n    };\n    SparkMD5.prototype._finish = function(tail, length) {\n      var i = length, tmp, lo, hi;\n      tail[i >> 2] |= 128 << (i % 4 << 3);\n      if (i > 55) {\n        md5cycle(this._hash, tail);\n        for (i = 0; i < 16; i += 1) {\n          tail[i] = 0;\n        }\n      }\n      tmp = this._length * 8;\n      tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n      lo = parseInt(tmp[2], 16);\n      hi = parseInt(tmp[1], 16) || 0;\n      tail[14] = lo;\n      tail[15] = hi;\n      md5cycle(this._hash, tail);\n    };\n    SparkMD5.hash = function(str, raw) {\n      return SparkMD5.hashBinary(toUtf8(str), raw);\n    };\n    SparkMD5.hashBinary = function(content, raw) {\n      var hash = md51(content), ret = hex(hash);\n      return raw ? hexToBinaryString(ret) : ret;\n    };\n    SparkMD5.ArrayBuffer = function() {\n      this.reset();\n    };\n    SparkMD5.ArrayBuffer.prototype.append = function(arr) {\n      var buff = concatenateArrayBuffers(this._buff.buffer, arr, true), length = buff.length, i;\n      this._length += arr.byteLength;\n      for (i = 64; i <= length; i += 64) {\n        md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n      }\n      this._buff = i - 64 < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n      return this;\n    };\n    SparkMD5.ArrayBuffer.prototype.end = function(raw) {\n      var buff = this._buff, length = buff.length, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], i, ret;\n      for (i = 0; i < length; i += 1) {\n        tail[i >> 2] |= buff[i] << (i % 4 << 3);\n      }\n      this._finish(tail, length);\n      ret = hex(this._hash);\n      if (raw) {\n        ret = hexToBinaryString(ret);\n      }\n      this.reset();\n      return ret;\n    };\n    SparkMD5.ArrayBuffer.prototype.reset = function() {\n      this._buff = new Uint8Array(0);\n      this._length = 0;\n      this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n      return this;\n    };\n    SparkMD5.ArrayBuffer.prototype.getState = function() {\n      var state = SparkMD5.prototype.getState.call(this);\n      state.buff = arrayBuffer2Utf8Str(state.buff);\n      return state;\n    };\n    SparkMD5.ArrayBuffer.prototype.setState = function(state) {\n      state.buff = utf8Str2ArrayBuffer(state.buff, true);\n      return SparkMD5.prototype.setState.call(this, state);\n    };\n    SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n    SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n    SparkMD5.ArrayBuffer.hash = function(arr, raw) {\n      var hash = md51_array(new Uint8Array(arr)), ret = hex(hash);\n      return raw ? hexToBinaryString(ret) : ret;\n    };\n    return SparkMD5;\n  }));\n})(sparkMd5);\n\nvar SparkMD5 = sparkMd5.exports;\n\nconst fileSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice;\n\nclass FileChecksum {\n  static create(file, callback) {\n    const instance = new FileChecksum(file);\n    instance.create(callback);\n  }\n  constructor(file) {\n    this.file = file;\n    this.chunkSize = 2097152;\n    this.chunkCount = Math.ceil(this.file.size / this.chunkSize);\n    this.chunkIndex = 0;\n  }\n  create(callback) {\n    this.callback = callback;\n    this.md5Buffer = new SparkMD5.ArrayBuffer;\n    this.fileReader = new FileReader;\n    this.fileReader.addEventListener(\"load\", (event => this.fileReaderDidLoad(event)));\n    this.fileReader.addEventListener(\"error\", (event => this.fileReaderDidError(event)));\n    this.readNextChunk();\n  }\n  fileReaderDidLoad(event) {\n    this.md5Buffer.append(event.target.result);\n    if (!this.readNextChunk()) {\n      const binaryDigest = this.md5Buffer.end(true);\n      const base64digest = btoa(binaryDigest);\n      this.callback(null, base64digest);\n    }\n  }\n  fileReaderDidError(event) {\n    this.callback(`Error reading ${this.file.name}`);\n  }\n  readNextChunk() {\n    if (this.chunkIndex < this.chunkCount || this.chunkIndex == 0 && this.chunkCount == 0) {\n      const start = this.chunkIndex * this.chunkSize;\n      const end = Math.min(start + this.chunkSize, this.file.size);\n      const bytes = fileSlice.call(this.file, start, end);\n      this.fileReader.readAsArrayBuffer(bytes);\n      this.chunkIndex++;\n      return true;\n    } else {\n      return false;\n    }\n  }\n}\n\nfunction getMetaValue(name) {\n  const element = findElement(document.head, `meta[name=\"${name}\"]`);\n  if (element) {\n    return element.getAttribute(\"content\");\n  }\n}\n\nfunction findElements(root, selector) {\n  if (typeof root == \"string\") {\n    selector = root;\n    root = document;\n  }\n  const elements = root.querySelectorAll(selector);\n  return toArray(elements);\n}\n\nfunction findElement(root, selector) {\n  if (typeof root == \"string\") {\n    selector = root;\n    root = document;\n  }\n  return root.querySelector(selector);\n}\n\nfunction dispatchEvent(element, type, eventInit = {}) {\n  const {disabled: disabled} = element;\n  const {bubbles: bubbles, cancelable: cancelable, detail: detail} = eventInit;\n  const event = document.createEvent(\"Event\");\n  event.initEvent(type, bubbles || true, cancelable || true);\n  event.detail = detail || {};\n  try {\n    element.disabled = false;\n    element.dispatchEvent(event);\n  } finally {\n    element.disabled = disabled;\n  }\n  return event;\n}\n\nfunction toArray(value) {\n  if (Array.isArray(value)) {\n    return value;\n  } else if (Array.from) {\n    return Array.from(value);\n  } else {\n    return [].slice.call(value);\n  }\n}\n\nclass BlobRecord {\n  constructor(file, checksum, url) {\n    this.file = file;\n    this.attributes = {\n      filename: file.name,\n      content_type: file.type || \"application/octet-stream\",\n      byte_size: file.size,\n      checksum: checksum\n    };\n    this.xhr = new XMLHttpRequest;\n    this.xhr.open(\"POST\", url, true);\n    this.xhr.responseType = \"json\";\n    this.xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n    this.xhr.setRequestHeader(\"Accept\", \"application/json\");\n    this.xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n    const csrfToken = getMetaValue(\"csrf-token\");\n    if (csrfToken != undefined) {\n      this.xhr.setRequestHeader(\"X-CSRF-Token\", csrfToken);\n    }\n    this.xhr.addEventListener(\"load\", (event => this.requestDidLoad(event)));\n    this.xhr.addEventListener(\"error\", (event => this.requestDidError(event)));\n  }\n  get status() {\n    return this.xhr.status;\n  }\n  get response() {\n    const {responseType: responseType, response: response} = this.xhr;\n    if (responseType == \"json\") {\n      return response;\n    } else {\n      return JSON.parse(response);\n    }\n  }\n  create(callback) {\n    this.callback = callback;\n    this.xhr.send(JSON.stringify({\n      blob: this.attributes\n    }));\n  }\n  requestDidLoad(event) {\n    if (this.status >= 200 && this.status < 300) {\n      const {response: response} = this;\n      const {direct_upload: direct_upload} = response;\n      delete response.direct_upload;\n      this.attributes = response;\n      this.directUploadData = direct_upload;\n      this.callback(null, this.toJSON());\n    } else {\n      this.requestDidError(event);\n    }\n  }\n  requestDidError(event) {\n    this.callback(`Error creating Blob for \"${this.file.name}\". Status: ${this.status}`);\n  }\n  toJSON() {\n    const result = {};\n    for (const key in this.attributes) {\n      result[key] = this.attributes[key];\n    }\n    return result;\n  }\n}\n\nclass BlobUpload {\n  constructor(blob) {\n    this.blob = blob;\n    this.file = blob.file;\n    const {url: url, headers: headers} = blob.directUploadData;\n    this.xhr = new XMLHttpRequest;\n    this.xhr.open(\"PUT\", url, true);\n    this.xhr.responseType = \"text\";\n    for (const key in headers) {\n      this.xhr.setRequestHeader(key, headers[key]);\n    }\n    this.xhr.addEventListener(\"load\", (event => this.requestDidLoad(event)));\n    this.xhr.addEventListener(\"error\", (event => this.requestDidError(event)));\n  }\n  create(callback) {\n    this.callback = callback;\n    this.xhr.send(this.file.slice());\n  }\n  requestDidLoad(event) {\n    const {status: status, response: response} = this.xhr;\n    if (status >= 200 && status < 300) {\n      this.callback(null, response);\n    } else {\n      this.requestDidError(event);\n    }\n  }\n  requestDidError(event) {\n    this.callback(`Error storing \"${this.file.name}\". Status: ${this.xhr.status}`);\n  }\n}\n\nlet id = 0;\n\nclass DirectUpload {\n  constructor(file, url, delegate) {\n    this.id = ++id;\n    this.file = file;\n    this.url = url;\n    this.delegate = delegate;\n  }\n  create(callback) {\n    FileChecksum.create(this.file, ((error, checksum) => {\n      if (error) {\n        callback(error);\n        return;\n      }\n      const blob = new BlobRecord(this.file, checksum, this.url);\n      notify(this.delegate, \"directUploadWillCreateBlobWithXHR\", blob.xhr);\n      blob.create((error => {\n        if (error) {\n          callback(error);\n        } else {\n          const upload = new BlobUpload(blob);\n          notify(this.delegate, \"directUploadWillStoreFileWithXHR\", upload.xhr);\n          upload.create((error => {\n            if (error) {\n              callback(error);\n            } else {\n              callback(null, blob.toJSON());\n            }\n          }));\n        }\n      }));\n    }));\n  }\n}\n\nfunction notify(object, methodName, ...messages) {\n  if (object && typeof object[methodName] == \"function\") {\n    return object[methodName](...messages);\n  }\n}\n\nclass DirectUploadController {\n  constructor(input, file) {\n    this.input = input;\n    this.file = file;\n    this.directUpload = new DirectUpload(this.file, this.url, this);\n    this.dispatch(\"initialize\");\n  }\n  start(callback) {\n    const hiddenInput = document.createElement(\"input\");\n    hiddenInput.type = \"hidden\";\n    hiddenInput.name = this.input.name;\n    this.input.insertAdjacentElement(\"beforebegin\", hiddenInput);\n    this.dispatch(\"start\");\n    this.directUpload.create(((error, attributes) => {\n      if (error) {\n        hiddenInput.parentNode.removeChild(hiddenInput);\n        this.dispatchError(error);\n      } else {\n        hiddenInput.value = attributes.signed_id;\n      }\n      this.dispatch(\"end\");\n      callback(error);\n    }));\n  }\n  uploadRequestDidProgress(event) {\n    const progress = event.loaded / event.total * 100;\n    if (progress) {\n      this.dispatch(\"progress\", {\n        progress: progress\n      });\n    }\n  }\n  get url() {\n    return this.input.getAttribute(\"data-direct-upload-url\");\n  }\n  dispatch(name, detail = {}) {\n    detail.file = this.file;\n    detail.id = this.directUpload.id;\n    return dispatchEvent(this.input, `direct-upload:${name}`, {\n      detail: detail\n    });\n  }\n  dispatchError(error) {\n    const event = this.dispatch(\"error\", {\n      error: error\n    });\n    if (!event.defaultPrevented) {\n      alert(error);\n    }\n  }\n  directUploadWillCreateBlobWithXHR(xhr) {\n    this.dispatch(\"before-blob-request\", {\n      xhr: xhr\n    });\n  }\n  directUploadWillStoreFileWithXHR(xhr) {\n    this.dispatch(\"before-storage-request\", {\n      xhr: xhr\n    });\n    xhr.upload.addEventListener(\"progress\", (event => this.uploadRequestDidProgress(event)));\n  }\n}\n\nconst inputSelector = \"input[type=file][data-direct-upload-url]:not([disabled])\";\n\nclass DirectUploadsController {\n  constructor(form) {\n    this.form = form;\n    this.inputs = findElements(form, inputSelector).filter((input => input.files.length));\n  }\n  start(callback) {\n    const controllers = this.createDirectUploadControllers();\n    const startNextController = () => {\n      const controller = controllers.shift();\n      if (controller) {\n        controller.start((error => {\n          if (error) {\n            callback(error);\n            this.dispatch(\"end\");\n          } else {\n            startNextController();\n          }\n        }));\n      } else {\n        callback();\n        this.dispatch(\"end\");\n      }\n    };\n    this.dispatch(\"start\");\n    startNextController();\n  }\n  createDirectUploadControllers() {\n    const controllers = [];\n    this.inputs.forEach((input => {\n      toArray(input.files).forEach((file => {\n        const controller = new DirectUploadController(input, file);\n        controllers.push(controller);\n      }));\n    }));\n    return controllers;\n  }\n  dispatch(name, detail = {}) {\n    return dispatchEvent(this.form, `direct-uploads:${name}`, {\n      detail: detail\n    });\n  }\n}\n\nconst processingAttribute = \"data-direct-uploads-processing\";\n\nconst submitButtonsByForm = new WeakMap;\n\nlet started = false;\n\nfunction start() {\n  if (!started) {\n    started = true;\n    document.addEventListener(\"click\", didClick, true);\n    document.addEventListener(\"submit\", didSubmitForm, true);\n    document.addEventListener(\"ajax:before\", didSubmitRemoteElement);\n  }\n}\n\nfunction didClick(event) {\n  const {target: target} = event;\n  if ((target.tagName == \"INPUT\" || target.tagName == \"BUTTON\") && target.type == \"submit\" && target.form) {\n    submitButtonsByForm.set(target.form, target);\n  }\n}\n\nfunction didSubmitForm(event) {\n  handleFormSubmissionEvent(event);\n}\n\nfunction didSubmitRemoteElement(event) {\n  if (event.target.tagName == \"FORM\") {\n    handleFormSubmissionEvent(event);\n  }\n}\n\nfunction handleFormSubmissionEvent(event) {\n  const form = event.target;\n  if (form.hasAttribute(processingAttribute)) {\n    event.preventDefault();\n    return;\n  }\n  const controller = new DirectUploadsController(form);\n  const {inputs: inputs} = controller;\n  if (inputs.length) {\n    event.preventDefault();\n    form.setAttribute(processingAttribute, \"\");\n    inputs.forEach(disable);\n    controller.start((error => {\n      form.removeAttribute(processingAttribute);\n      if (error) {\n        inputs.forEach(enable);\n      } else {\n        submitForm(form);\n      }\n    }));\n  }\n}\n\nfunction submitForm(form) {\n  let button = submitButtonsByForm.get(form) || findElement(form, \"input[type=submit], button[type=submit]\");\n  if (button) {\n    const {disabled: disabled} = button;\n    button.disabled = false;\n    button.focus();\n    button.click();\n    button.disabled = disabled;\n  } else {\n    button = document.createElement(\"input\");\n    button.type = \"submit\";\n    button.style.display = \"none\";\n    form.appendChild(button);\n    button.click();\n    form.removeChild(button);\n  }\n  submitButtonsByForm.delete(form);\n}\n\nfunction disable(input) {\n  input.disabled = true;\n}\n\nfunction enable(input) {\n  input.disabled = false;\n}\n\nfunction autostart() {\n  if (window.ActiveStorage) {\n    start();\n  }\n}\n\nsetTimeout(autostart, 1);\n\nexport { DirectUpload, start };\n", "export function getMetaValue(name) {\n  const element = findElement(document.head, `meta[name=\"${name}\"]`)\n\n  if (element) {\n    return element.getAttribute('content')\n  }\n}\n\nexport function findElement(root, selector) {\n  if (typeof root == 'string') {\n    selector = root\n    root = document\n  }\n\n  return root.querySelector(selector)\n}\n\nexport function toArray(value) {\n  if (Array.isArray(value)) {\n    return value;\n  } else if (Array.from) {\n    return Array.from(value);\n  } else {\n    return [].slice.call(value);\n  }\n}\n\nexport function removeElement(el) {\n  if (el && el.parentNode) {\n    el.parentNode.removeChild(el);\n  }\n}\n\nexport function insertAfter(el, referenceNode) {\n  return referenceNode.parentNode.insertBefore(el, referenceNode.nextSibling);\n}\n\nexport function validateFileInputType(input){\n  // Convert MIME-type patterns as described in the `accept` attribute\n  // into a valid expression to test actual MIME-type against\n  let MIMEtype = new RegExp(input.accept.replace('*', '[^\\\\/,]+'));\n\n  // Ensure each of the input's files' types conform to the above\n  return Array.prototype.every.call(input.files, function (file){\n    return MIMEtype.test(file.type);\n  });\n}", "// Connects to data-controller=\"dropzone\"\nimport Dropzone from 'dropzone'\nimport { Controller } from \"@hotwired/stimulus\"\nimport { DirectUpload } from '@rails/activestorage'\nimport {\n  getMetaValue,\n  findElement,\n  removeElement,\n  insertAfter\n} from '../helpers'\n\nexport default class extends Controller {\n  static targets = ['input', 'previewTemplate']\n  static values = {\n    acceptedFiles: String\n  }\n\n  connect() {\n    this.dropZone = createDropZone(this)\n\n    this.removePreviewNode()\n    this.hideFileInput()\n    this.bindEvents()\n\n    Dropzone.autoDiscover = false\n  }\n\n  // Private\n  hideFileInput() {\n    this.inputTarget.disabled = true\n    this.inputTarget.style.display = 'none'\n  }\n\n  removePreviewNode() {\n    this.previewTemplateTarget.innerHTML = ''\n  }\n\n  removeSavedFile(e) {\n    removeElement(e.target.closest('.dropzone-item'))\n  }\n\n  bindEvents() {\n    this.dropZone.on('addedfile', file => {\n      file.previewElement.style.display = ''\n\n      setTimeout(() => {\n        file.accepted && createDirectUploadController(this, file).start()\n      }, 500)\n    })\n\n    this.dropZone.on('removedfile', file => {\n      file.controller && removeElement(file.controller.hiddenInput)\n    })\n\n    this.dropZone.on('canceled', file => {\n      file.controller && file.controller.xhr.abort()\n    })\n  }\n\n  get headers() {\n    return {'X-CSRF-Token': getMetaValue('csrf-token')}\n  }\n\n  get url() {\n    return this.inputTarget.getAttribute('data-direct-upload-url')\n  }\n\n  get maxFiles() {\n    return this.data.get('maxFiles') || null\n  }\n\n  get maxFileSize() {\n    return this.data.get('maxFileSize') || 256\n  }\n\n  get previewTemplate() {\n    return this.previewTemplateTarget.innerHTML\n  }\n}\n\nclass DirectUploadController {\n  constructor(source, file) {\n    this.directUpload = createDirectUpload(file, source.url, this)\n    this.source = source\n    this.file = file\n  }\n\n  start() {\n    this.file.controller = this\n    this.hiddenInput = this.createHiddenInput()\n    this.directUpload.create((error, attributes) => {\n      if (error) {\n        removeElement(this.hiddenInput)\n        this.emitDropzoneError(error)\n      } else {\n        this.hiddenInput.value = attributes.signed_id\n        this.emitDropzoneSuccess()\n      }\n    })\n  }\n\n  createHiddenInput() {\n    const input = document.createElement('input')\n    input.type = 'hidden'\n    input.name = this.source.inputTarget.name\n    insertAfter(input, this.source.inputTarget)\n    return input\n  }\n\n  directUploadWillStoreFileWithXHR(xhr) {\n    this.bindProgressEvent(xhr)\n    this.emitDropzoneUploading()\n  }\n\n  bindProgressEvent(xhr) {\n    this.xhr = xhr\n    this.xhr.upload.addEventListener('progress', event =>\n        this.uploadRequestDidProgress(event)\n    )\n  }\n\n  uploadRequestDidProgress(event) {\n    const element = this.source.element\n    const progress = (event.loaded / event.total) * 100\n    findElement(\n        this.file.previewTemplate,\n        '.progress-bar'\n    ).style.width = `${progress}%`\n  }\n\n  emitDropzoneUploading() {\n    this.file.status = Dropzone.UPLOADING\n    this.source.dropZone.emit('processing', this.file)\n  }\n\n  emitDropzoneError(error) {\n    this.file.status = Dropzone.ERROR\n    this.source.dropZone.emit('error', this.file, error)\n    this.source.dropZone.emit('complete', this.file)\n  }\n\n  emitDropzoneSuccess() {\n    this.file.status = Dropzone.SUCCESS\n    this.source.dropZone.emit('success', this.file)\n    this.source.dropZone.emit('complete', this.file)\n  }\n}\n\nfunction createDirectUploadController(source, file) {\n  return new DirectUploadController(source, file)\n}\n\nfunction createDirectUpload(file, url, controller) {\n  return new DirectUpload(file, url, controller)\n}\n\nfunction createDropZone(controller) {\n  return new Dropzone(controller.element, {\n    url: controller.url,\n    headers: controller.headers,\n    maxFiles: controller.maxFiles,\n    maxFilesize: controller.maxFileSize,\n    acceptedFiles: controller.acceptedFilesValue,\n    previewTemplate: controller.previewTemplate,\n    autoQueue: false\n  })\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n \nexport default class extends Controller {\n  connect() {\n    document.querySelectorAll('a[href^=\"#\"').forEach(link => {\n\n      link.addEventListener('click', function(e) {\n          e.preventDefault();\n\n          let href = this.getAttribute('href').substring(1);\n\n          const scrollTarget = document.getElementById(href);\n\n          const topOffset = 0;\n          const elementPosition = scrollTarget.getBoundingClientRect().top;\n          const offsetPosition = elementPosition - topOffset;\n\n          window.scrollBy({\n              top: offsetPosition,\n              behavior: 'smooth'\n          });\n      });\n    });\n\n    function scrollTo(to, duration = 700) {\n      const\n          element = document.scrollingElement || document.documentElement,\n          start = element.scrollTop,\n          change = to - start,\n          startDate = +new Date(),\n          easeInOutQuad = function (t, b, c, d) {\n              t /= d / 2;\n              if (t < 1) return c / 2 * t * t + b;\n              t--;\n              return -c / 2 * (t * (t - 2) - 1) + b;\n          },\n          animateScroll = function () {\n              const currentDate = +new Date();\n              const currentTime = currentDate - startDate;\n              element.scrollTop = parseInt(easeInOutQuad(currentTime, start, change, duration));\n              if (currentTime < duration) {\n                  requestAnimationFrame(animateScroll);\n              }\n              else {\n                  element.scrollTop = to;\n              }\n          };\n      animateScroll();\n    }\n    \n    document.addEventListener('DOMContentLoaded', function () {\n        let btn = document.querySelector('#toTop');\n        window.addEventListener('scroll', function () {\n            if (pageYOffset > 100) {\n                btn.classList.add('show');\n            } else {\n                btn.classList.remove('show');\n            }\n        });\n    \n        btn.onclick = function (click) {\n            click.preventDefault();\n            scrollTo(0, 400);\n        }\n    });\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"map\"\nexport default class extends Controller {\n  connect() {\n    let ymapsObject, ymapsPlacemarks;\n\n    // \u041F\u043E\u0438\u0441\u043A \u043F\u043E DOM \u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432, \u0434\u043B\u044F \u043A\u043E\u0442\u043E\u0440\u044B\u0445 \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u0430 \u0438\u043D\u0438\u0446\u0438\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F Yandex Map\n    const checkMapInitialize = () => {\n      var mapNodes = document.querySelectorAll('[data-controller=\"map\"]');\n\n      if (mapNodes.length) {\n        for (let i = 0; i < mapNodes.length; i++) {\n          initializeYandexMap(mapNodes[i])\n        }\n      }\n    }\n\n    // \u0418\u043D\u0438\u0446\u0438\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F Yandex Map\n    window.initializeYandexMap = (mapNode) => {\n      var mapId = mapNode.getAttribute('id'),\n          json = JSON.parse(mapNode.getAttribute('map_json'));\n\n      if (typeof ymaps == 'undefined') {\n        var script = document.createElement('script');\n\n        script.src = `https://api-maps.yandex.ru/2.1/?lang=ru-RU&apikey=${mapNode.dataset.map}`;\n        script.onload = function () {\n          console.log('yandex_maps_api loaded')\n          ymaps.ready(mapInit(mapId, json));\n        };\n        document.body.appendChild(script);\n      } else {\n        ymaps.ready(mapInit(mapId, json));\n      }\n    }\n\n    document.addEventListener('turbo:load', function () {\n      checkMapInitialize();\n    });\n\n    document.addEventListener('swiperbottom:load', function (e) {\n      e.detail.swiper.on('slideChangeTransitionEnd', function() {\n        let activeSlide =  this.el.querySelector('.swiper-slide-active'),\n            buildingData = activeSlide.dataset,\n            curPoint = ymapsPlacemarks[buildingData.buildingId];\n        ymapsObject.map.setCenter([buildingData.latitude, buildingData.longitude], 12, {\n          checkZoomRange: true\n        });\n        document.dispatchEvent(new CustomEvent('ymapsplacemark:activated', { detail: { placemark: curPoint } }))\n        curPoint.options.set('iconColor', '#941503');\n        curPoint.properties.set('iconCaption', buildingData.caption);\n      });\n    });\n\n    // \u0424\u0443\u043D\u043A\u0446\u0438\u044F \u0438\u043D\u0438\u0446\u0438\u0430\u043B\u0438\u0437\u0430\u0446\u0438\u044F \u043A\u0430\u0440\u0442\u044B\n    var mapInit = function (mapId, json) {\n      ymaps.ready(() => {\n        var map = new ymaps.Map(mapId, {\n          center: [58.942976, 62.8261881],\n          zoom: 6,\n          controls: ['zoomControl'],\n          behaviors: ['default']\n        }, { autoFitToViewport: 'always' })\n        map.behaviors.disable('scrollZoom');\n\n        var objectManager = new ymaps.ObjectManager();\n        var points = pointCollection(json.buildings);\n        var buildingsInfo = infoCollection(json.buildings);\n        var geoObjects = new ymaps.GeoObjectCollection();\n        ymapsObject = {map, objectManager};\n        ymapsPlacemarks = [];\n\n        for (var i = 0; i < points.length; i++) {\n          let pm = new ymaps.Placemark(points[i], getPointData(buildingsInfo[i]));\n          ymapsPlacemarks[i] = pm;\n          geoObjects.add(ymapsPlacemarks[i]);\n          document.addEventListener('ymapsplacemark:activated', function () {\n            pm.options.unset('iconColor');\n            pm.properties.unset('iconCaption');\n          });\n        }\n\n        map.geoObjects.add(geoObjects)\n        map.setBounds(map.geoObjects.getBounds());\n        if (map.getZoom() > 17)\n          map.setZoom(17);\n      })\n    }\n\n    // \u041A\u043E\u043D\u0442\u0435\u043D\u0442 \u0431\u0430\u043B\u0443\u043D\u0430 \u043C\u0435\u0442\u043A\u0438\n    var getPointData = function (building) {\n      // var address = full_address(building)\n      // var contact = contactData(building.contact)\n\n      return {\n        //iconCaption: `${building.title}`,\n        // iconContent: `<b>${building.title}</b>`,\n        balloonContentHeader: `<b>${building.title}</b>`,\n        // balloonContentBody: `<b>${building.name}</b></br><p>\u0410\u0434\u0440\u0435\u0441: ${address}</p><p>${contact}</p>`\n      };\n    };\n\n    // \u0421\u0431\u043E\u0440 \u043A\u043E\u043B\u043B\u0435\u043A\u0446\u0438\u0438 \u043C\u0435\u0442\u043E\u043A \u043F\u043E \u043A\u043E\u043E\u0440\u0434\u0438\u043D\u0430\u0442\u0430\u043C\n    var pointCollection = function(buildings) {\n      var collection = []\n\n      buildings.forEach(element => {\n        if (element.latitude != null && element.longitude != null) {\n          collection.push([parseFloat(element.latitude), parseFloat(element.longitude)])\n        }\n      })\n\n      return collection\n    }\n\n    //\n    var infoCollection = function (buildings) {\n      return buildings.filter(e => e.latitude != null && e.longitude != null)\n    }\n  }\n}\n", "import { Controller } from '@hotwired/stimulus'\nrequire('../../../node_modules/swiper')\nimport Swiper, { Navigation, Pagination, Mousewheel, Autoplay, EffectFade }  from 'swiper';\n\nexport default class extends Controller {\n  connect() {\n    this.element\n    document.addEventListener('turbo:load', function () {\n      new Swiper('.mainSwiper', {\n        slidesPerView: 1,\n        loop: true,\n        autoplay: {\n          delay: 5000,\n          disableOnInteraction: false\n        },\n        effect: 'fade',\n        fadeEffect: {\n          crossFade: true\n        },\n      modules: [Autoplay, EffectFade]\n      });\n\n      new Swiper('.swiperBottom', {\n        slidesPerView: 5,\n        spaceBetween: 22,\n        loop: true,\n        centeredSlides: true,\n        breakpoints: {\n          320: {\n            slidesPerView: 1,\n            spaceBetween: 30,\n            centeredSlides: true,\n          },\n          480: {\n            slidesPerView: 1\n          },\n          640: {\n            slidesPerView: 2\n          },\n          1280: {\n            slidesPerView: 5\n          }\n        },\n        modules: [Navigation, Pagination],\n        navigation: {\n          nextEl: '.swiper-button-right',\n          prevEl: '.swiper-button-left',\n        },\n        on: {\n          init: function() {\n            document.dispatchEvent(new CustomEvent('swiperbottom:load', { detail: { swiper: this } }))\n          }\n        }\n      });\n    });\n  }\n}", "import { Controller } from '@hotwired/stimulus'\nrequire('swiper')\nimport Swiper, { Navigation, Pagination, EffectFade, Thumbs, Mousewheel }  from 'swiper';\n\nexport default class extends Controller {\n  static targets = [ \"gorizontalSwiper\", \"verticalSwiper\", \"swiperNext\", \"swiperPrev\" ]\n\n  connect() {\n    this.swiper2 = new Swiper(this.gorizontalSwiperTarget, {\n      loop: true,\n      thumbs: {\n        swiper: this.swiper1,\n      },\n      fadeEffect: {\n        crossFade: true\n      },\n      modules: [Pagination, Thumbs, Mousewheel, EffectFade],\n    });\n\n    this.swiper1 = new Swiper(this.verticalSwiperTarget, {\n      slidesPerView: 2,\n      spaceBetween: 28,\n      loop: true,\n      direction: \"vertical\",\n      thumbs: {\n        swiper: this.swiper2,\n      },\n      breakpoints: {\n        0: {\n          direction: \"horizontal\"\n        },\n        768: {\n          direction: \"vertical\"\n        }\n      },\n      modules: [Pagination, Thumbs, Mousewheel ],\n    });\n  }\n}", "import { Controller } from '@hotwired/stimulus'\n\nexport default class extends Controller {\n  static targets = ['toggleTitle']\n  static classes = ['hidden']\n\n  connect() {\n    this.class = this.hasHiddenClass ? this.hiddenClass : 'hidden'\n  }\n\n  toggleName() {\n    this.toggleTitleTargets.forEach(toggleTitle => {\n      toggleTitle.classList.toggle(this.class)\n    })\n  }\n\n  hide() {\n    if (this.element === event.target || this.element.contains(event.target)) return;\n\n    this.toggleTitleTargets.forEach(toggleTitle => {\n      toggleTitle.classList.add('hidden');\n    })\n  }\n}", "import { Controller } from '@hotwired/stimulus'\nrequire('../../../node_modules/@fancyapps/ui/dist/fancybox/fancybox.esm.js')\nimport { Fancybox } from '@fancyapps/ui/dist/fancybox/fancybox.esm.js';\n\nexport default class extends Controller {\n  connect() {\n    this.element\n    document.addEventListener('turbo:load', function () {\n      Fancybox.bind(\"[data-fancybox]\", {});\n    });\n  }\n}\n", "// This file is auto-generated by ./bin/rails stimulus:manifest:update\n// Run that command whenever you add a new controller or create them with\n// ./bin/rails generate stimulus controllerName\n\nimport { application } from \"./application\"\n\nimport AosController from \"./aos_controller\"\napplication.register(\"aos\", AosController)\n\nimport DropzoneController from \"./dropzone_controller\"\napplication.register(\"dropzone\", DropzoneController)\n\nimport HelloController from \"./hello_controller\"\napplication.register(\"hello\", HelloController)\n\nimport MapController from \"./map_controller\"\napplication.register(\"map\", MapController)\n\nimport SwiperController from \"./swiper_controller\"\napplication.register(\"swiper\", SwiperController)\n\nimport SwiperThumbController from \"./swiper_thumb_controller\"\napplication.register(\"swiper_thumb\", SwiperThumbController)\n\nimport PointerController from \"./pointer_controller\"\napplication.register(\"pointer\", PointerController)\n\nimport FancyboxController from \"./fancybox_controller\"\napplication.register(\"fancybox\", FancyboxController)"],
  "mappings": "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",
  "names": ["consumer", "error", "event", "consumer", "s", "consumer", "s", "subscription", "a", "extend", "CustomEvent", "id", "i", "a", "window", "document", "html", "c", "attr", "transform", "e", "parents", "k", "events", "j", "event", "styles", "index", "text", "next", "prev", "parent", "closest", "children", "e", "now", "getComputedStyle", "window", "a", "isObject", "o", "extend", "i", "window", "document", "e", "support", "window", "window", "on", "window", "on", "window", "observerUpdate", "i", "events", "self", "event", "index", "index", "i", "_", "v", "i", "index", "i", "i", "i", "e", "i", "x", "y", "z", "minTranslate", "maxTranslate", "transitionEnd", "e", "transitionEnd", "transitionEnd", "index", "i", "t", "transitionEnd", "e", "index", "index", "document", "i", "index", "event", "document", "window", "e", "now", "event", "document", "e", "now", "event", "e", "now", "i", "increment", "e", "document", "support", "extend", "window", "a", "b", "i", "support", "window", "i", "extend", "extend", "now", "i", "setTranslate", "document", "m", "on", "index", "offset", "i", "a", "b", "appendSlide", "prependSlide", "cache", "removeSlide", "removeAllSlides", "on", "document", "window", "event", "e", "i", "enable", "disable", "on", "window", "now", "e", "event", "events", "enable", "disable", "document", "on", "e", "disable", "enable", "on", "i", "onClick", "e", "index", "disable", "enable", "on", "document", "setTranslate", "setTransition", "updateSize", "e", "events", "support", "disable", "enable", "on", "p", "x", "y", "setTranslate", "setTransition", "on", "window", "e", "support", "onTouchStart", "onTouchMove", "onTouchEnd", "enable", "disable", "on", "index", "i", "window", "on", "x", "y", "interpolate", "x2", "c", "setTranslate", "Swiper", "i", "setTransition", "on", "notify", "id", "e", "index", "History", "on", "text", "window", "location", "index", "i", "on", "document", "window", "i", "index", "on", "start", "event", "document", "e", "on", "isObject", "i", "onTouchStart", "onTouchMove", "now", "onTouchEnd", "j", "i", "i", "i", "index", "i", "i", "i", "on", "setTranslate", "setTransition", "i", "on", "setTranslate", "i", "offset", "setTransition", "on", "setTranslate", "browser", "i", "transform", "offset", "setTransition", "on", "setTranslate", "i", "offset", "transform", "setTransition", "on", "setTranslate", "transform", "i", "setTransition", "on", "setTranslate", "i", "offset", "t", "r", "index", "transform", "setTransition", "on", "setTranslate", "i", "offset", "transform", "setTransition", "History", "e", "t", "o", "n", "i", "r", "a", "u", "c", "s", "f", "d", "l", "p", "m", "b", "v", "y", "g", "h", "w", "k", "x", "j", "O", "M", "S", "_", "t", "e", "$", "i", "n", "s", "o", "a", "r", "l", "c", "h", "d", "u", "p", "m", "f", "g", "b", "v", "y", "w", "HTMLElement", "event", "FrameLoadingStyle", "location", "html", "i", "_", "FetchMethod", "error", "FormSubmissionState", "FormEnctype", "cookie", "id", "x", "y", "index", "TimingMetric", "VisitState", "SystemStatusCode", "session", "visit", "PageStage", "e", "element", "document", "c", "createConsumer", "m", "x", "event", "event", "event", "application", "error", "_", "index", "e", "filter", "fetch", "match", "oldValue", "index", "_", "error", "constructor", "extend", "a", "b", "application", "element", "c", "n", "k", "v", "filter", "Controller", "event", "Controller", "AOS", "extend", "i", "event", "i", "e", "error", "n", "x", "o", "callback", "start", "c", "r", "v", "transform", "x", "k", "a", "b", "c", "d", "s", "i", "n", "j", "hex", "SparkMD5", "event", "start", "dispatchEvent", "error", "getMetaValue", "findElement", "Controller", "e", "getMetaValue", "DirectUploadController", "error", "event", "findElement", "Controller", "e", "start", "change", "t", "b", "c", "d", "click", "Controller", "i", "e", "Controller", "Controller", "Controller", "Controller"]
}
