{"version":3,"sources":["webpack:///../../../src/directives/ripple/index.ts","webpack:///../../../src/directives/intersect/index.ts","webpack:///../../../src/directives/click-outside/index.ts","webpack:///../../../src/directives/touch/index.ts","webpack:///../../../src/directives/resize/index.ts","webpack:///../src/install.ts","webpack:///../src/framework.ts","webpack:///../../../src/directives/scroll/index.ts"],"names":["DELAY_RIPPLE","transform","el","isTouchEvent","e","isKeyboardEvent","calculate","value","localX","localY","offset","target","radius","scale","Math","centerX","centerY","x","y","ripples","show","container","document","animation","size","computed","window","String","performance","setTimeout","hide","diff","Number","delay","isRippleEnabled","rippleShow","element","rippleHide","rippleCancelShow","keyboardRipple","keyboardRippleShow","keyboardRippleHide","focusRippleHide","updateRipple","enabled","binding","passive","removeListeners","directive","unbind","update","wasEnabled","Ripple","bind","inserted","modifiers","handler","options","observer","IntersectionObserver","entries","_observe","vnode","isIntersecting","entry","Object","init","observe","Intersect","defaultConditional","checkEvent","checkIsActive","root","ShadowRoot","elements","isActive","handleShadow","callback","ClickOutside","onClick","onMousedown","app","lastMousedownWasOutside","handleGesture","wrapper","touchendY","dirRatio","minDistance","touchendX","touchstartX","touchstartY","touch","event","createHandlers","touchmoveX","touchmoveY","offsetX","offsetY","left","right","up","down","start","move","end","touchstart","touchend","touchmove","handlers","eventName","Touch","Resize","args","install","console","components","directives","Vue","registerComponents","component","beforeCreate","this","beforeMount","$options","vuetify","$el","hasAttribute","mounted","$vuetify","userPreset","framework","isHydrating","installed","preset","property","service","Boolean","Service","includes","version","config","silent","self","undefined","Scroll"],"mappings":"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","file":"js/chunk-vendors~85da75cb.dfe86112.js","sourcesContent":["// Styles\nimport './VRipple.sass'\n\n// Utilities\nimport { consoleWarn } from '../../util/console'\nimport { keyCodes } from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeDirective } from 'vue'\n\ntype VuetifyRippleEvent = (MouseEvent | TouchEvent | KeyboardEvent) & { rippleStop?: boolean }\n\nconst DELAY_RIPPLE = 80\n\nfunction transform (el: HTMLElement, value: string) {\n  el.style.transform = value\n  el.style.webkitTransform = value\n}\n\nexport interface RippleOptions {\n  class?: string\n  center?: boolean\n  circle?: boolean\n}\n\nfunction isTouchEvent (e: VuetifyRippleEvent): e is TouchEvent {\n  return e.constructor.name === 'TouchEvent'\n}\n\nfunction isKeyboardEvent (e: VuetifyRippleEvent): e is KeyboardEvent {\n  return e.constructor.name === 'KeyboardEvent'\n}\n\nconst calculate = (\n  e: VuetifyRippleEvent,\n  el: HTMLElement,\n  value: RippleOptions = {}\n) => {\n  let localX = 0\n  let localY = 0\n\n  if (!isKeyboardEvent(e)) {\n    const offset = el.getBoundingClientRect()\n    const target = isTouchEvent(e) ? e.touches[e.touches.length - 1] : e\n\n    localX = target.clientX - offset.left\n    localY = target.clientY - offset.top\n  }\n\n  let radius = 0\n  let scale = 0.3\n  if (el._ripple && el._ripple.circle) {\n    scale = 0.15\n    radius = el.clientWidth / 2\n    radius = value.center ? radius : radius + Math.sqrt((localX - radius) ** 2 + (localY - radius) ** 2) / 4\n  } else {\n    radius = Math.sqrt(el.clientWidth ** 2 + el.clientHeight ** 2) / 2\n  }\n\n  const centerX = `${(el.clientWidth - (radius * 2)) / 2}px`\n  const centerY = `${(el.clientHeight - (radius * 2)) / 2}px`\n\n  const x = value.center ? centerX : `${localX - radius}px`\n  const y = value.center ? centerY : `${localY - radius}px`\n\n  return { radius, scale, x, y, centerX, centerY }\n}\n\nconst ripples = {\n  /* eslint-disable max-statements */\n  show (\n    e: VuetifyRippleEvent,\n    el: HTMLElement,\n    value: RippleOptions = {}\n  ) {\n    if (!el._ripple || !el._ripple.enabled) {\n      return\n    }\n\n    const container = document.createElement('span')\n    const animation = document.createElement('span')\n\n    container.appendChild(animation)\n    container.className = 'v-ripple__container'\n\n    if (value.class) {\n      container.className += ` ${value.class}`\n    }\n\n    const { radius, scale, x, y, centerX, centerY } = calculate(e, el, value)\n\n    const size = `${radius * 2}px`\n    animation.className = 'v-ripple__animation'\n    animation.style.width = size\n    animation.style.height = size\n\n    el.appendChild(container)\n\n    const computed = window.getComputedStyle(el)\n    if (computed && computed.position === 'static') {\n      el.style.position = 'relative'\n      el.dataset.previousPosition = 'static'\n    }\n\n    animation.classList.add('v-ripple__animation--enter')\n    animation.classList.add('v-ripple__animation--visible')\n    transform(animation, `translate(${x}, ${y}) scale3d(${scale},${scale},${scale})`)\n    animation.dataset.activated = String(performance.now())\n\n    setTimeout(() => {\n      animation.classList.remove('v-ripple__animation--enter')\n      animation.classList.add('v-ripple__animation--in')\n      transform(animation, `translate(${centerX}, ${centerY}) scale3d(1,1,1)`)\n    }, 0)\n  },\n\n  hide (el: HTMLElement | null) {\n    if (!el || !el._ripple || !el._ripple.enabled) return\n\n    const ripples = el.getElementsByClassName('v-ripple__animation')\n\n    if (ripples.length === 0) return\n    const animation = ripples[ripples.length - 1]\n\n    if (animation.dataset.isHiding) return\n    else animation.dataset.isHiding = 'true'\n\n    const diff = performance.now() - Number(animation.dataset.activated)\n    const delay = Math.max(250 - diff, 0)\n\n    setTimeout(() => {\n      animation.classList.remove('v-ripple__animation--in')\n      animation.classList.add('v-ripple__animation--out')\n\n      setTimeout(() => {\n        const ripples = el.getElementsByClassName('v-ripple__animation')\n        if (ripples.length === 1 && el.dataset.previousPosition) {\n          el.style.position = el.dataset.previousPosition\n          delete el.dataset.previousPosition\n        }\n\n        animation.parentNode && el.removeChild(animation.parentNode)\n      }, 300)\n    }, delay)\n  },\n}\n\nfunction isRippleEnabled (value: any): value is true {\n  return typeof value === 'undefined' || !!value\n}\n\nfunction rippleShow (e: VuetifyRippleEvent) {\n  const value: RippleOptions = {}\n  const element = e.currentTarget as HTMLElement\n\n  if (!element || !element._ripple || element._ripple.touched || e.rippleStop) return\n\n  // Don't allow the event to trigger ripples on any other elements\n  e.rippleStop = true\n\n  if (isTouchEvent(e)) {\n    element._ripple.touched = true\n    element._ripple.isTouch = true\n  } else {\n    // It's possible for touch events to fire\n    // as mouse events on Android/iOS, this\n    // will skip the event call if it has\n    // already been registered as touch\n    if (element._ripple.isTouch) return\n  }\n  value.center = element._ripple.centered || isKeyboardEvent(e)\n  if (element._ripple.class) {\n    value.class = element._ripple.class\n  }\n\n  if (isTouchEvent(e)) {\n    // already queued that shows or hides the ripple\n    if (element._ripple.showTimerCommit) return\n\n    element._ripple.showTimerCommit = () => {\n      ripples.show(e, element, value)\n    }\n    element._ripple.showTimer = window.setTimeout(() => {\n      if (element && element._ripple && element._ripple.showTimerCommit) {\n        element._ripple.showTimerCommit()\n        element._ripple.showTimerCommit = null\n      }\n    }, DELAY_RIPPLE)\n  } else {\n    ripples.show(e, element, value)\n  }\n}\n\nfunction rippleHide (e: Event) {\n  const element = e.currentTarget as HTMLElement | null\n  if (!element || !element._ripple) return\n\n  window.clearTimeout(element._ripple.showTimer)\n\n  // The touch interaction occurs before the show timer is triggered.\n  // We still want to show ripple effect.\n  if (e.type === 'touchend' && element._ripple.showTimerCommit) {\n    element._ripple.showTimerCommit()\n    element._ripple.showTimerCommit = null\n\n    // re-queue ripple hiding\n    element._ripple.showTimer = setTimeout(() => {\n      rippleHide(e)\n    })\n    return\n  }\n\n  window.setTimeout(() => {\n    if (element._ripple) {\n      element._ripple.touched = false\n    }\n  })\n  ripples.hide(element)\n}\n\nfunction rippleCancelShow (e: MouseEvent | TouchEvent) {\n  const element = e.currentTarget as HTMLElement | undefined\n\n  if (!element || !element._ripple) return\n\n  if (element._ripple.showTimerCommit) {\n    element._ripple.showTimerCommit = null\n  }\n\n  window.clearTimeout(element._ripple.showTimer)\n}\n\nlet keyboardRipple = false\n\nfunction keyboardRippleShow (e: KeyboardEvent) {\n  if (!keyboardRipple && (e.keyCode === keyCodes.enter || e.keyCode === keyCodes.space)) {\n    keyboardRipple = true\n    rippleShow(e)\n  }\n}\n\nfunction keyboardRippleHide (e: KeyboardEvent) {\n  keyboardRipple = false\n  rippleHide(e)\n}\n\nfunction focusRippleHide (e: FocusEvent) {\n  if (keyboardRipple === true) {\n    keyboardRipple = false\n    rippleHide(e)\n  }\n}\n\nfunction updateRipple (el: HTMLElement, binding: VNodeDirective, wasEnabled: boolean) {\n  const enabled = isRippleEnabled(binding.value)\n  if (!enabled) {\n    ripples.hide(el)\n  }\n  el._ripple = el._ripple || {}\n  el._ripple.enabled = enabled\n  const value = binding.value || {}\n  if (value.center) {\n    el._ripple.centered = true\n  }\n  if (value.class) {\n    el._ripple.class = binding.value.class\n  }\n  if (value.circle) {\n    el._ripple.circle = value.circle\n  }\n  if (enabled && !wasEnabled) {\n    el.addEventListener('touchstart', rippleShow, { passive: true })\n    el.addEventListener('touchend', rippleHide, { passive: true })\n    el.addEventListener('touchmove', rippleCancelShow, { passive: true })\n    el.addEventListener('touchcancel', rippleHide)\n\n    el.addEventListener('mousedown', rippleShow)\n    el.addEventListener('mouseup', rippleHide)\n    el.addEventListener('mouseleave', rippleHide)\n\n    el.addEventListener('keydown', keyboardRippleShow)\n    el.addEventListener('keyup', keyboardRippleHide)\n\n    el.addEventListener('blur', focusRippleHide)\n\n    // Anchor tags can be dragged, causes other hides to fail - #1537\n    el.addEventListener('dragstart', rippleHide, { passive: true })\n  } else if (!enabled && wasEnabled) {\n    removeListeners(el)\n  }\n}\n\nfunction removeListeners (el: HTMLElement) {\n  el.removeEventListener('mousedown', rippleShow)\n  el.removeEventListener('touchstart', rippleShow)\n  el.removeEventListener('touchend', rippleHide)\n  el.removeEventListener('touchmove', rippleCancelShow)\n  el.removeEventListener('touchcancel', rippleHide)\n  el.removeEventListener('mouseup', rippleHide)\n  el.removeEventListener('mouseleave', rippleHide)\n  el.removeEventListener('keydown', keyboardRippleShow)\n  el.removeEventListener('keyup', keyboardRippleHide)\n  el.removeEventListener('dragstart', rippleHide)\n  el.removeEventListener('blur', focusRippleHide)\n}\n\nfunction directive (el: HTMLElement, binding: VNodeDirective, node: VNode) {\n  updateRipple(el, binding, false)\n\n  if (process.env.NODE_ENV === 'development') {\n    // warn if an inline element is used, waiting for el to be in the DOM first\n    node.context && node.context.$nextTick(() => {\n      const computed = window.getComputedStyle(el)\n      if (computed && computed.display === 'inline') {\n        const context = (node as any).fnOptions ? [(node as any).fnOptions, node.context] : [node.componentInstance]\n        consoleWarn('v-ripple can only be used on block-level elements', ...context)\n      }\n    })\n  }\n}\n\nfunction unbind (el: HTMLElement) {\n  delete el._ripple\n  removeListeners(el)\n}\n\nfunction update (el: HTMLElement, binding: VNodeDirective) {\n  if (binding.value === binding.oldValue) {\n    return\n  }\n\n  const wasEnabled = isRippleEnabled(binding.oldValue)\n  updateRipple(el, binding, wasEnabled)\n}\n\nexport const Ripple = {\n  bind: directive,\n  unbind,\n  update,\n}\n\nexport default Ripple\n","import { VNodeDirective } from 'vue/types/vnode'\nimport { VNode } from 'vue'\n\ntype ObserveHandler = (\n  entries: IntersectionObserverEntry[],\n  observer: IntersectionObserver,\n  isIntersecting: boolean,\n) => void\n\ninterface ObserveVNodeDirective extends Omit<VNodeDirective, 'modifiers'> {\n  value?: ObserveHandler | { handler: ObserveHandler, options?: IntersectionObserverInit }\n  modifiers?: {\n    once?: boolean\n    quiet?: boolean\n  }\n}\n\nfunction inserted (el: HTMLElement, binding: ObserveVNodeDirective, vnode: VNode) {\n  if (typeof window === 'undefined' || !('IntersectionObserver' in window)) return\n\n  const modifiers = binding.modifiers || {}\n  const value = binding.value\n  const { handler, options } = typeof value === 'object'\n    ? value\n    : { handler: value, options: {} }\n  const observer = new IntersectionObserver((\n    entries: IntersectionObserverEntry[] = [],\n    observer: IntersectionObserver\n  ) => {\n    const _observe = el._observe?.[vnode.context!._uid]\n    if (!_observe) return // Just in case, should never fire\n\n    const isIntersecting = entries.some(entry => entry.isIntersecting)\n\n    // If is not quiet or has already been\n    // initted, invoke the user callback\n    if (\n      handler && (\n        !modifiers.quiet ||\n        _observe.init\n      ) && (\n        !modifiers.once ||\n        isIntersecting ||\n        _observe.init\n      )\n    ) {\n      handler(entries, observer, isIntersecting)\n    }\n\n    if (isIntersecting && modifiers.once) unbind(el, binding, vnode)\n    else _observe.init = true\n  }, options)\n\n  el._observe = Object(el._observe)\n  el._observe![vnode.context!._uid] = { init: false, observer }\n\n  observer.observe(el)\n}\n\nfunction unbind (el: HTMLElement, binding: ObserveVNodeDirective, vnode: VNode) {\n  const observe = el._observe?.[vnode.context!._uid]\n  if (!observe) return\n\n  observe.observer.unobserve(el)\n  delete el._observe![vnode.context!._uid]\n}\n\nexport const Intersect = {\n  inserted,\n  unbind,\n}\n\nexport default Intersect\n","import { attachedRoot } from '../../util/dom'\nimport { VNodeDirective } from 'vue/types/vnode'\nimport { VNode } from 'vue'\n\ninterface ClickOutsideBindingArgs {\n  handler: (e: Event) => void\n  closeConditional?: (e: Event) => boolean\n  include?: () => HTMLElement[]\n}\n\ninterface ClickOutsideDirective extends VNodeDirective {\n  value?: ((e: Event) => void) | ClickOutsideBindingArgs\n}\n\nfunction defaultConditional () {\n  return true\n}\n\nfunction checkEvent (e: PointerEvent, el: HTMLElement, binding: ClickOutsideDirective): boolean {\n  // The include element callbacks below can be expensive\n  // so we should avoid calling them when we're not active.\n  // Explicitly check for false to allow fallback compatibility\n  // with non-toggleable components\n  if (!e || checkIsActive(e, binding) === false) return false\n\n  // If we're clicking inside the shadowroot, then the app root doesn't get the same\n  // level of introspection as to _what_ we're clicking. We want to check to see if\n  // our target is the shadowroot parent container, and if it is, ignore.\n  const root = attachedRoot(el)\n  if (\n    typeof ShadowRoot !== 'undefined' &&\n    root instanceof ShadowRoot &&\n    root.host === e.target\n  ) return false\n\n  // Check if additional elements were passed to be included in check\n  // (click must be outside all included elements, if any)\n  const elements = ((typeof binding.value === 'object' && binding.value.include) || (() => []))()\n  // Add the root element for the component this directive was defined on\n  elements.push(el)\n\n  // Check if it's a click outside our elements, and then if our callback returns true.\n  // Non-toggleable components should take action in their callback and return falsy.\n  // Toggleable can return true if it wants to deactivate.\n  // Note that, because we're in the capture phase, this callback will occur before\n  // the bubbling click event on any outside elements.\n  return !elements.some(el => el.contains(e.target as Node))\n}\n\nfunction checkIsActive (e: PointerEvent, binding: ClickOutsideDirective): boolean | void {\n  const isActive = (typeof binding.value === 'object' && binding.value.closeConditional) || defaultConditional\n\n  return isActive(e)\n}\n\nfunction directive (e: PointerEvent, el: HTMLElement, binding: ClickOutsideDirective, vnode: VNode) {\n  const handler = typeof binding.value === 'function' ? binding.value : binding.value!.handler\n\n  el._clickOutside!.lastMousedownWasOutside && checkEvent(e, el, binding) && setTimeout(() => {\n    checkIsActive(e, binding) && handler && handler(e)\n  }, 0)\n}\n\nfunction handleShadow (el: HTMLElement, callback: Function): void {\n  const root = attachedRoot(el)\n\n  callback(document)\n\n  if (typeof ShadowRoot !== 'undefined' && root instanceof ShadowRoot) {\n    callback(root)\n  }\n}\n\nexport const ClickOutside = {\n  // [data-app] may not be found\n  // if using bind, inserted makes\n  // sure that the root element is\n  // available, iOS does not support\n  // clicks on body\n  inserted (el: HTMLElement, binding: ClickOutsideDirective, vnode: VNode) {\n    const onClick = (e: Event) => directive(e as PointerEvent, el, binding, vnode)\n    const onMousedown = (e: Event) => {\n      el._clickOutside!.lastMousedownWasOutside = checkEvent(e as PointerEvent, el, binding)\n    }\n\n    handleShadow(el, (app: HTMLElement) => {\n      app.addEventListener('click', onClick, true)\n      app.addEventListener('mousedown', onMousedown, true)\n    })\n\n    if (!el._clickOutside) {\n      el._clickOutside = {\n        lastMousedownWasOutside: true,\n      }\n    }\n\n    el._clickOutside[vnode.context!._uid] = {\n      onClick,\n      onMousedown,\n    }\n  },\n\n  unbind (el: HTMLElement, binding: ClickOutsideDirective, vnode: VNode) {\n    if (!el._clickOutside) return\n\n    handleShadow(el, (app: HTMLElement) => {\n      if (!app || !el._clickOutside?.[vnode.context!._uid]) return\n\n      const { onClick, onMousedown } = el._clickOutside[vnode.context!._uid]!\n\n      app.removeEventListener('click', onClick, true)\n      app.removeEventListener('mousedown', onMousedown, true)\n    })\n\n    delete el._clickOutside[vnode.context!._uid]\n  },\n}\n\nexport default ClickOutside\n","import { VNodeDirective, VNode } from 'vue/types/vnode'\nimport { keys } from '../../util/helpers'\nimport { TouchHandlers, TouchValue, TouchWrapper } from 'vuetify/types'\n\nexport interface TouchStoredHandlers {\n  touchstart: (e: TouchEvent) => void\n  touchend: (e: TouchEvent) => void\n  touchmove: (e: TouchEvent) => void\n}\n\ninterface TouchVNodeDirective extends VNodeDirective {\n  value?: TouchValue\n}\n\nconst handleGesture = (wrapper: TouchWrapper) => {\n  const { touchstartX, touchendX, touchstartY, touchendY } = wrapper\n  const dirRatio = 0.5\n  const minDistance = 16\n  wrapper.offsetX = touchendX - touchstartX\n  wrapper.offsetY = touchendY - touchstartY\n\n  if (Math.abs(wrapper.offsetY) < dirRatio * Math.abs(wrapper.offsetX)) {\n    wrapper.left && (touchendX < touchstartX - minDistance) && wrapper.left(wrapper)\n    wrapper.right && (touchendX > touchstartX + minDistance) && wrapper.right(wrapper)\n  }\n\n  if (Math.abs(wrapper.offsetX) < dirRatio * Math.abs(wrapper.offsetY)) {\n    wrapper.up && (touchendY < touchstartY - minDistance) && wrapper.up(wrapper)\n    wrapper.down && (touchendY > touchstartY + minDistance) && wrapper.down(wrapper)\n  }\n}\n\nfunction touchstart (event: TouchEvent, wrapper: TouchWrapper) {\n  const touch = event.changedTouches[0]\n  wrapper.touchstartX = touch.clientX\n  wrapper.touchstartY = touch.clientY\n\n  wrapper.start &&\n    wrapper.start(Object.assign(event, wrapper))\n}\n\nfunction touchend (event: TouchEvent, wrapper: TouchWrapper) {\n  const touch = event.changedTouches[0]\n  wrapper.touchendX = touch.clientX\n  wrapper.touchendY = touch.clientY\n\n  wrapper.end &&\n    wrapper.end(Object.assign(event, wrapper))\n\n  handleGesture(wrapper)\n}\n\nfunction touchmove (event: TouchEvent, wrapper: TouchWrapper) {\n  const touch = event.changedTouches[0]\n  wrapper.touchmoveX = touch.clientX\n  wrapper.touchmoveY = touch.clientY\n\n  wrapper.move && wrapper.move(Object.assign(event, wrapper))\n}\n\nfunction createHandlers (value: TouchHandlers): TouchStoredHandlers {\n  const wrapper = {\n    touchstartX: 0,\n    touchstartY: 0,\n    touchendX: 0,\n    touchendY: 0,\n    touchmoveX: 0,\n    touchmoveY: 0,\n    offsetX: 0,\n    offsetY: 0,\n    left: value.left,\n    right: value.right,\n    up: value.up,\n    down: value.down,\n    start: value.start,\n    move: value.move,\n    end: value.end,\n  }\n\n  return {\n    touchstart: (e: TouchEvent) => touchstart(e, wrapper),\n    touchend: (e: TouchEvent) => touchend(e, wrapper),\n    touchmove: (e: TouchEvent) => touchmove(e, wrapper),\n  }\n}\n\nfunction inserted (el: HTMLElement, binding: TouchVNodeDirective, vnode: VNode) {\n  const value = binding.value!\n  const target = value.parent ? el.parentElement : el\n  const options = value.options || { passive: true }\n\n  // Needed to pass unit tests\n  if (!target) return\n\n  const handlers = createHandlers(binding.value!)\n  target._touchHandlers = Object(target._touchHandlers)\n  target._touchHandlers![vnode.context!._uid] = handlers\n\n  keys(handlers).forEach(eventName => {\n    target.addEventListener(eventName, handlers[eventName] as EventListener, options)\n  })\n}\n\nfunction unbind (el: HTMLElement, binding: TouchVNodeDirective, vnode: VNode) {\n  const target = binding.value!.parent ? el.parentElement : el\n  if (!target || !target._touchHandlers) return\n\n  const handlers = target._touchHandlers[vnode.context!._uid]\n  keys(handlers).forEach(eventName => {\n    target.removeEventListener(eventName, handlers[eventName])\n  })\n  delete target._touchHandlers[vnode.context!._uid]\n}\n\nexport const Touch = {\n  inserted,\n  unbind,\n}\n\nexport default Touch\n","import { VNodeDirective } from 'vue/types/vnode'\nimport { VNode } from 'vue'\n\ninterface ResizeVNodeDirective extends VNodeDirective {\n  value?: () => void\n  options?: boolean | AddEventListenerOptions\n}\n\nfunction inserted (el: HTMLElement, binding: ResizeVNodeDirective, vnode: VNode) {\n  const callback = binding.value!\n  const options = binding.options || { passive: true }\n\n  window.addEventListener('resize', callback, options)\n\n  el._onResize = Object(el._onResize)\n  el._onResize![vnode.context!._uid] = {\n    callback,\n    options,\n  }\n\n  if (!binding.modifiers || !binding.modifiers.quiet) {\n    callback()\n  }\n}\n\nfunction unbind (el: HTMLElement, binding: ResizeVNodeDirective, vnode: VNode) {\n  if (!el._onResize?.[vnode.context!._uid]) return\n\n  const { callback, options } = el._onResize[vnode.context!._uid]!\n\n  window.removeEventListener('resize', callback, options)\n\n  delete el._onResize[vnode.context!._uid]\n}\n\nexport const Resize = {\n  inserted,\n  unbind,\n}\n\nexport default Resize\n","import OurVue, { VueConstructor } from 'vue'\nimport { VuetifyUseOptions } from 'vuetify/types'\nimport { consoleError } from './util/console'\n\nexport function install (Vue: VueConstructor, args: VuetifyUseOptions = {}) {\n  if ((install as any).installed) return\n  (install as any).installed = true\n\n  if (OurVue !== Vue) {\n    consoleError(`Multiple instances of Vue detected\nSee https://github.com/vuetifyjs/vuetify/issues/4068\n\nIf you're seeing \"$attrs is readonly\", it's caused by this`)\n  }\n\n  const components = args.components || {}\n  const directives = args.directives || {}\n\n  for (const name in directives) {\n    const directive = directives[name]\n\n    Vue.directive(name, directive)\n  }\n\n  (function registerComponents (components: any) {\n    if (components) {\n      for (const key in components) {\n        const component = components[key]\n        if (component && !registerComponents(component.$_vuetify_subcomponents)) {\n          Vue.component(key, component as typeof Vue)\n        }\n      }\n      return true\n    }\n    return false\n  })(components)\n\n  // Used to avoid multiple mixins being setup\n  // when in dev mode and hot module reload\n  // https://github.com/vuejs/vue/issues/5089#issuecomment-284260111\n  if (Vue.$_vuetify_installed) return\n  Vue.$_vuetify_installed = true\n\n  Vue.mixin({\n    beforeCreate () {\n      const options = this.$options as any\n\n      if (options.vuetify) {\n        options.vuetify.init(this, this.$ssrContext)\n        this.$vuetify = Vue.observable(options.vuetify.framework)\n      } else {\n        this.$vuetify = (options.parent && options.parent.$vuetify) || this\n      }\n    },\n    beforeMount () {\n      // @ts-ignore\n      if (this.$options.vuetify && this.$el && this.$el.hasAttribute('data-server-rendered')) {\n        // @ts-ignore\n        this.$vuetify.isHydrating = true\n        // @ts-ignore\n        this.$vuetify.breakpoint.update(true)\n      }\n    },\n    mounted () {\n      // @ts-ignore\n      if (this.$options.vuetify && this.$vuetify.isHydrating) {\n        // @ts-ignore\n        this.$vuetify.isHydrating = false\n        // @ts-ignore\n        this.$vuetify.breakpoint.update()\n      }\n    },\n  })\n}\n","import { install } from './install'\n\n// Types\nimport Vue from 'vue'\nimport {\n  UserVuetifyPreset,\n  VuetifyPreset,\n} from 'vuetify/types/services/presets'\nimport {\n  VuetifyService,\n  VuetifyServiceContract,\n} from 'vuetify/types/services'\n\n// Services\nimport * as services from './services'\n\nexport default class Vuetify {\n  static install = install\n\n  static installed = false\n\n  static version = __VUETIFY_VERSION__\n\n  static config = {\n    silent: false,\n  }\n\n  public framework: Dictionary<VuetifyServiceContract> = {\n    isHydrating: false,\n  } as any\n\n  public installed: string[] = []\n\n  public preset = {} as VuetifyPreset\n\n  public userPreset: UserVuetifyPreset = {}\n\n  constructor (userPreset: UserVuetifyPreset = {}) {\n    this.userPreset = userPreset\n\n    this.use(services.Presets)\n    this.use(services.Application)\n    this.use(services.Breakpoint)\n    this.use(services.Goto)\n    this.use(services.Icons)\n    this.use(services.Lang)\n    this.use(services.Theme)\n  }\n\n  // Called on the new vuetify instance\n  // bootstrap in install beforeCreate\n  // Exposes ssrContext if available\n  init (root: Vue, ssrContext?: object) {\n    this.installed.forEach(property => {\n      const service = this.framework[property]\n\n      service.framework = this.framework\n\n      service.init(root, ssrContext)\n    })\n\n    // rtl is not installed and\n    // will never be called by\n    // the init process\n    this.framework.rtl = Boolean(this.preset.rtl) as any\n  }\n\n  // Instantiate a VuetifyService\n  use (Service: VuetifyService) {\n    const property = Service.property\n\n    if (this.installed.includes(property)) return\n\n    // TODO maybe a specific type for arg 2?\n    this.framework[property] = new Service(this.preset, this as any)\n    this.installed.push(property)\n  }\n}\n","import { VNodeDirective } from 'vue/types/vnode'\nimport { DirectiveOptions, VNode } from 'vue'\n\ninterface ScrollVNodeDirective extends Omit<VNodeDirective, 'modifiers'> {\n  value: EventListener | {\n    handler: EventListener\n    options?: boolean | AddEventListenerOptions\n  } | EventListenerObject & { options?: boolean | AddEventListenerOptions }\n  modifiers?: {\n    self?: boolean\n  }\n}\n\nfunction inserted (el: HTMLElement, binding: ScrollVNodeDirective, vnode: VNode) {\n  const { self = false } = binding.modifiers || {}\n  const value = binding.value\n  const options = (typeof value === 'object' && value.options) || { passive: true }\n  const handler = typeof value === 'function' || 'handleEvent' in value ? value : value.handler\n\n  const target = self\n    ? el\n    : binding.arg\n      ? document.querySelector(binding.arg)\n      : window\n\n  if (!target) return\n\n  target.addEventListener('scroll', handler, options)\n\n  el._onScroll = Object(el._onScroll)\n  el._onScroll![vnode.context!._uid] = {\n    handler,\n    options,\n    // Don't reference self\n    target: self ? undefined : target,\n  }\n}\n\nfunction unbind (el: HTMLElement, binding: ScrollVNodeDirective, vnode: VNode) {\n  if (!el._onScroll?.[vnode.context!._uid]) return\n\n  const { handler, options, target = el } = el._onScroll[vnode.context!._uid]!\n\n  target.removeEventListener('scroll', handler, options)\n  delete el._onScroll[vnode.context!._uid]\n}\n\nexport const Scroll = {\n  inserted,\n  unbind,\n} as DirectiveOptions\n\nexport default Scroll\n"],"sourceRoot":""}