vuetify 2.5.10 → 2.5.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (153) hide show
  1. package/dist/json/attributes.json +58 -58
  2. package/dist/json/web-types.json +89 -89
  3. package/dist/vuetify.css +26 -15
  4. package/dist/vuetify.css.map +1 -1
  5. package/dist/vuetify.js +227 -120
  6. package/dist/vuetify.js.map +1 -1
  7. package/dist/vuetify.min.css +2 -2
  8. package/dist/vuetify.min.js +2 -2
  9. package/es5/components/VAutocomplete/VAutocomplete.js +20 -2
  10. package/es5/components/VAutocomplete/VAutocomplete.js.map +1 -1
  11. package/es5/components/VCalendar/VCalendarDaily.js +13 -15
  12. package/es5/components/VCalendar/VCalendarDaily.js.map +1 -1
  13. package/es5/components/VCalendar/mixins/calendar-with-events.js +4 -2
  14. package/es5/components/VCalendar/mixins/calendar-with-events.js.map +1 -1
  15. package/es5/components/VCalendar/mixins/mouse.js +1 -1
  16. package/es5/components/VCalendar/mixins/mouse.js.map +1 -1
  17. package/es5/components/VCombobox/VCombobox.js +0 -5
  18. package/es5/components/VCombobox/VCombobox.js.map +1 -1
  19. package/es5/components/VDialog/VDialog.js +4 -2
  20. package/es5/components/VDialog/VDialog.js.map +1 -1
  21. package/es5/components/VList/VListItem.js +8 -1
  22. package/es5/components/VList/VListItem.js.map +1 -1
  23. package/es5/components/VMenu/VMenu.js +1 -1
  24. package/es5/components/VMenu/VMenu.js.map +1 -1
  25. package/es5/components/VOverlay/VOverlay.js +1 -0
  26. package/es5/components/VOverlay/VOverlay.js.map +1 -1
  27. package/es5/components/VRadioGroup/VRadioGroup.js +7 -0
  28. package/es5/components/VRadioGroup/VRadioGroup.js.map +1 -1
  29. package/es5/components/VRangeSlider/VRangeSlider.js +4 -1
  30. package/es5/components/VRangeSlider/VRangeSlider.js.map +1 -1
  31. package/es5/components/VSelect/VSelect.js +1 -1
  32. package/es5/components/VSelect/VSelect.js.map +1 -1
  33. package/es5/components/VTabs/VTab.js +15 -4
  34. package/es5/components/VTabs/VTab.js.map +1 -1
  35. package/es5/components/VTextField/VTextField.js +6 -1
  36. package/es5/components/VTextField/VTextField.js.map +1 -1
  37. package/es5/components/transitions/createTransition.js +0 -20
  38. package/es5/components/transitions/createTransition.js.map +1 -1
  39. package/es5/directives/click-outside/index.js +21 -10
  40. package/es5/directives/click-outside/index.js.map +1 -1
  41. package/es5/directives/intersect/index.js +16 -12
  42. package/es5/directives/intersect/index.js.map +1 -1
  43. package/es5/directives/mutate/index.js +10 -8
  44. package/es5/directives/mutate/index.js.map +1 -1
  45. package/es5/directives/resize/index.js +11 -8
  46. package/es5/directives/resize/index.js.map +1 -1
  47. package/es5/directives/scroll/index.js +13 -10
  48. package/es5/directives/scroll/index.js.map +1 -1
  49. package/es5/framework.js +1 -1
  50. package/es5/locale/fr.js +1 -1
  51. package/es5/locale/fr.js.map +1 -1
  52. package/es5/mixins/detachable/index.js +32 -14
  53. package/es5/mixins/detachable/index.js.map +1 -1
  54. package/es5/mixins/intersectable/index.js +11 -2
  55. package/es5/mixins/intersectable/index.js.map +1 -1
  56. package/es5/mixins/overlayable/index.js +21 -11
  57. package/es5/mixins/overlayable/index.js.map +1 -1
  58. package/es5/mixins/routable/index.js +9 -3
  59. package/es5/mixins/routable/index.js.map +1 -1
  60. package/lib/components/VAutocomplete/VAutocomplete.js +18 -2
  61. package/lib/components/VAutocomplete/VAutocomplete.js.map +1 -1
  62. package/lib/components/VCalendar/VCalendarDaily.js +9 -9
  63. package/lib/components/VCalendar/VCalendarDaily.js.map +1 -1
  64. package/lib/components/VCalendar/mixins/calendar-with-events.js +4 -2
  65. package/lib/components/VCalendar/mixins/calendar-with-events.js.map +1 -1
  66. package/lib/components/VCalendar/mixins/mouse.js +1 -1
  67. package/lib/components/VCalendar/mixins/mouse.js.map +1 -1
  68. package/lib/components/VCombobox/VCombobox.js +0 -5
  69. package/lib/components/VCombobox/VCombobox.js.map +1 -1
  70. package/lib/components/VDialog/VDialog.js +5 -2
  71. package/lib/components/VDialog/VDialog.js.map +1 -1
  72. package/lib/components/VList/VListItem.js +9 -1
  73. package/lib/components/VList/VListItem.js.map +1 -1
  74. package/lib/components/VMenu/VMenu.js +1 -1
  75. package/lib/components/VMenu/VMenu.js.map +1 -1
  76. package/lib/components/VOverlay/VOverlay.js +1 -0
  77. package/lib/components/VOverlay/VOverlay.js.map +1 -1
  78. package/lib/components/VRadioGroup/VRadioGroup.js +9 -0
  79. package/lib/components/VRadioGroup/VRadioGroup.js.map +1 -1
  80. package/lib/components/VRangeSlider/VRangeSlider.js +4 -1
  81. package/lib/components/VRangeSlider/VRangeSlider.js.map +1 -1
  82. package/lib/components/VSelect/VSelect.js +1 -1
  83. package/lib/components/VSelect/VSelect.js.map +1 -1
  84. package/lib/components/VTabs/VTab.js +16 -6
  85. package/lib/components/VTabs/VTab.js.map +1 -1
  86. package/lib/components/VTextField/VTextField.js +8 -1
  87. package/lib/components/VTextField/VTextField.js.map +1 -1
  88. package/lib/components/transitions/createTransition.js +0 -6
  89. package/lib/components/transitions/createTransition.js.map +1 -1
  90. package/lib/directives/click-outside/index.js +22 -10
  91. package/lib/directives/click-outside/index.js.map +1 -1
  92. package/lib/directives/intersect/index.js +16 -12
  93. package/lib/directives/intersect/index.js.map +1 -1
  94. package/lib/directives/mutate/index.js +10 -8
  95. package/lib/directives/mutate/index.js.map +1 -1
  96. package/lib/directives/resize/index.js +9 -6
  97. package/lib/directives/resize/index.js.map +1 -1
  98. package/lib/directives/scroll/index.js +9 -6
  99. package/lib/directives/scroll/index.js.map +1 -1
  100. package/lib/framework.js +1 -1
  101. package/lib/locale/fr.js +1 -1
  102. package/lib/locale/fr.js.map +1 -1
  103. package/lib/mixins/detachable/index.js +28 -13
  104. package/lib/mixins/detachable/index.js.map +1 -1
  105. package/lib/mixins/intersectable/index.js +9 -2
  106. package/lib/mixins/intersectable/index.js.map +1 -1
  107. package/lib/mixins/overlayable/index.js +21 -11
  108. package/lib/mixins/overlayable/index.js.map +1 -1
  109. package/lib/mixins/routable/index.js +12 -3
  110. package/lib/mixins/routable/index.js.map +1 -1
  111. package/package.json +2 -2
  112. package/src/components/VAutocomplete/VAutocomplete.ts +15 -2
  113. package/src/components/VCalendar/VCalendarDaily.ts +7 -7
  114. package/src/components/VCalendar/mixins/calendar-with-events.sass +7 -1
  115. package/src/components/VCalendar/mixins/calendar-with-events.ts +3 -3
  116. package/src/components/VCalendar/mixins/mouse.ts +1 -1
  117. package/src/components/VCombobox/VCombobox.ts +0 -5
  118. package/src/components/VCombobox/__tests__/VCombobox-multiple.spec.ts +113 -0
  119. package/src/components/VCombobox/__tests__/VCombobox.spec.ts +30 -0
  120. package/src/components/VDialog/VDialog.ts +4 -2
  121. package/src/components/VImg/__tests__/VImg.spec.ts +1 -1
  122. package/src/components/VList/VListItem.sass +2 -1
  123. package/src/components/VList/VListItem.ts +7 -1
  124. package/src/components/VList/__tests__/VListItem.spec.ts +16 -0
  125. package/src/components/VMenu/VMenu.ts +1 -1
  126. package/src/components/VOverlay/VOverlay.ts +1 -0
  127. package/src/components/VRadioGroup/VRadioGroup.ts +8 -0
  128. package/src/components/VRangeSlider/VRangeSlider.ts +3 -1
  129. package/src/components/VSelect/VSelect.ts +1 -1
  130. package/src/components/VTabs/VTab.ts +14 -4
  131. package/src/components/VTabs/VTabs.sass +5 -2
  132. package/src/components/VTextField/VTextField.ts +8 -3
  133. package/src/components/transitions/createTransition.ts +0 -8
  134. package/src/directives/click-outside/__tests__/click-outside-shadow-dom.spec.ts +9 -6
  135. package/src/directives/click-outside/__tests__/click-outside.spec.ts +7 -4
  136. package/src/directives/click-outside/index.ts +19 -10
  137. package/src/directives/intersect/__tests__/intersect.spec.ts +13 -10
  138. package/src/directives/intersect/index.ts +15 -13
  139. package/src/directives/mutate/__tests__/mutate.spec.ts +36 -17
  140. package/src/directives/mutate/index.ts +9 -9
  141. package/src/directives/resize/__tests__/resize.spec.ts +4 -4
  142. package/src/directives/resize/index.ts +11 -6
  143. package/src/directives/scroll/__tests__/scroll.spec.ts +9 -9
  144. package/src/directives/scroll/index.ts +8 -7
  145. package/src/globals.d.ts +10 -12
  146. package/src/locale/fr.ts +1 -1
  147. package/src/mixins/detachable/index.ts +32 -15
  148. package/src/mixins/intersectable/index.ts +11 -2
  149. package/src/mixins/overlayable/index.ts +22 -11
  150. package/src/mixins/routable/__tests__/routable.spec.ts +82 -5
  151. package/src/mixins/routable/index.ts +10 -3
  152. package/src/styles/generic/_transitions.scss +219 -215
  153. package/src/styles/settings/_variables.scss +7 -7
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/components/transitions/createTransition.ts"],"names":[],"mappings":"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","sourcesContent":["import { FunctionalComponentOptions, VNode, VNodeData } from 'vue'\nimport mergeData from '../../util/mergeData'\n\nfunction mergeTransitions (\n dest: Function | Function[] = [],\n ...transitions: (Function | Function[])[]\n) {\n /* eslint-disable-next-line no-array-constructor */\n return Array<Function>().concat(dest, ...transitions)\n}\n\nexport function createSimpleTransition (\n name: string,\n origin = 'top center 0',\n mode?: string\n): FunctionalComponentOptions {\n return {\n name,\n\n functional: true,\n\n props: {\n group: {\n type: Boolean,\n default: false,\n },\n hideOnLeave: {\n type: Boolean,\n default: false,\n },\n leaveAbsolute: {\n type: Boolean,\n default: false,\n },\n mode: {\n type: String,\n default: mode,\n },\n origin: {\n type: String,\n default: origin,\n },\n },\n\n render (h, context): VNode {\n const tag = `transition${context.props.group ? '-group' : ''}`\n const data: VNodeData = {\n props: {\n name,\n mode: context.props.mode,\n },\n on: {\n beforeEnter (el: HTMLElement) {\n el.style.transformOrigin = context.props.origin\n el.style.webkitTransformOrigin = context.props.origin\n },\n },\n }\n\n if (context.props.leaveAbsolute) {\n data.on!.leave = mergeTransitions(data.on!.leave, (el: HTMLElement) => {\n const { offsetTop, offsetLeft, offsetWidth, offsetHeight } = el\n el._transitionInitialStyles = {\n position: el.style.position,\n top: el.style.top,\n left: el.style.left,\n width: el.style.width,\n height: el.style.height,\n }\n el.style.position = 'absolute'\n el.style.top = offsetTop + 'px'\n el.style.left = offsetLeft + 'px'\n el.style.width = offsetWidth + 'px'\n el.style.height = offsetHeight + 'px'\n })\n data.on!.afterLeave = mergeTransitions(data.on!.afterLeave, (el?: HTMLElement) => {\n if (el && el._transitionInitialStyles) {\n const { position, top, left, width, height } = el._transitionInitialStyles\n delete el._transitionInitialStyles\n el.style.position = position || ''\n el.style.top = top || ''\n el.style.left = left || ''\n el.style.width = width || ''\n el.style.height = height || ''\n }\n })\n }\n if (context.props.hideOnLeave) {\n data.on!.leave = mergeTransitions(data.on!.leave, (el: HTMLElement) => {\n el._initialDisplay = [el.style.display, el.style.getPropertyPriority('display')]\n el.style.setProperty('display', 'none', 'important')\n })\n data.on!.afterLeave = mergeTransitions(data.on!.afterLeave, (el?: HTMLElement) => {\n if (el) {\n el._initialDisplay\n ? el.style.setProperty('display', ...el._initialDisplay)\n : el.style.removeProperty('display')\n }\n })\n }\n\n return h(tag, mergeData(context.data, data), context.children)\n },\n }\n}\n\nexport function createJavascriptTransition (\n name: string,\n functions: Record<string, any>,\n mode = 'in-out'\n): FunctionalComponentOptions {\n return {\n name,\n\n functional: true,\n\n props: {\n mode: {\n type: String,\n default: mode,\n },\n },\n\n render (h, context): VNode {\n return h(\n 'transition',\n mergeData(context.data, {\n props: { name },\n on: functions,\n }),\n context.children\n )\n },\n }\n}\n"],"sourceRoot":"","file":"createTransition.js"}
1
+ {"version":3,"sources":["../../../src/components/transitions/createTransition.ts"],"names":[],"mappings":"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","sourcesContent":["import { FunctionalComponentOptions, VNode, VNodeData } from 'vue'\nimport mergeData from '../../util/mergeData'\n\nfunction mergeTransitions (\n dest: Function | Function[] = [],\n ...transitions: (Function | Function[])[]\n) {\n /* eslint-disable-next-line no-array-constructor */\n return Array<Function>().concat(dest, ...transitions)\n}\n\nexport function createSimpleTransition (\n name: string,\n origin = 'top center 0',\n mode?: string\n): FunctionalComponentOptions {\n return {\n name,\n\n functional: true,\n\n props: {\n group: {\n type: Boolean,\n default: false,\n },\n hideOnLeave: {\n type: Boolean,\n default: false,\n },\n leaveAbsolute: {\n type: Boolean,\n default: false,\n },\n mode: {\n type: String,\n default: mode,\n },\n origin: {\n type: String,\n default: origin,\n },\n },\n\n render (h, context): VNode {\n const tag = `transition${context.props.group ? '-group' : ''}`\n const data: VNodeData = {\n props: {\n name,\n mode: context.props.mode,\n },\n on: {\n beforeEnter (el: HTMLElement) {\n el.style.transformOrigin = context.props.origin\n el.style.webkitTransformOrigin = context.props.origin\n },\n },\n }\n\n if (context.props.leaveAbsolute) {\n data.on!.leave = mergeTransitions(data.on!.leave, (el: HTMLElement) => {\n const { offsetTop, offsetLeft, offsetWidth, offsetHeight } = el\n el._transitionInitialStyles = {\n position: el.style.position,\n top: el.style.top,\n left: el.style.left,\n width: el.style.width,\n height: el.style.height,\n }\n el.style.position = 'absolute'\n el.style.top = offsetTop + 'px'\n el.style.left = offsetLeft + 'px'\n el.style.width = offsetWidth + 'px'\n el.style.height = offsetHeight + 'px'\n })\n data.on!.afterLeave = mergeTransitions(data.on!.afterLeave, (el?: HTMLElement) => {\n if (el && el._transitionInitialStyles) {\n const { position, top, left, width, height } = el._transitionInitialStyles\n delete el._transitionInitialStyles\n el.style.position = position || ''\n el.style.top = top || ''\n el.style.left = left || ''\n el.style.width = width || ''\n el.style.height = height || ''\n }\n })\n }\n if (context.props.hideOnLeave) {\n data.on!.leave = mergeTransitions(data.on!.leave, (el: HTMLElement) => {\n el.style.setProperty('display', 'none', 'important')\n })\n }\n\n return h(tag, mergeData(context.data, data), context.children)\n },\n }\n}\n\nexport function createJavascriptTransition (\n name: string,\n functions: Record<string, any>,\n mode = 'in-out'\n): FunctionalComponentOptions {\n return {\n name,\n\n functional: true,\n\n props: {\n mode: {\n type: String,\n default: mode,\n },\n },\n\n render (h, context): VNode {\n return h(\n 'transition',\n mergeData(context.data, {\n props: { name },\n on: functions,\n }),\n context.children\n )\n },\n }\n}\n"],"sourceRoot":"","file":"createTransition.js"}
@@ -34,7 +34,7 @@ function checkIsActive(e, binding) {
34
34
  return isActive(e);
35
35
  }
36
36
 
37
- function directive(e, el, binding) {
37
+ function directive(e, el, binding, vnode) {
38
38
  const handler = typeof binding.value === 'function' ? binding.value : binding.value.handler;
39
39
  el._clickOutside.lastMousedownWasOutside && checkEvent(e, el, binding) && setTimeout(() => {
40
40
  checkIsActive(e, binding) && handler && handler(e);
@@ -56,8 +56,8 @@ export const ClickOutside = {
56
56
  // sure that the root element is
57
57
  // available, iOS does not support
58
58
  // clicks on body
59
- inserted(el, binding) {
60
- const onClick = e => directive(e, el, binding);
59
+ inserted(el, binding, vnode) {
60
+ const onClick = e => directive(e, el, binding, vnode);
61
61
 
62
62
  const onMousedown = e => {
63
63
  el._clickOutside.lastMousedownWasOutside = checkEvent(e, el, binding);
@@ -67,21 +67,33 @@ export const ClickOutside = {
67
67
  app.addEventListener('click', onClick, true);
68
68
  app.addEventListener('mousedown', onMousedown, true);
69
69
  });
70
- el._clickOutside = {
71
- lastMousedownWasOutside: true,
70
+
71
+ if (!el._clickOutside) {
72
+ el._clickOutside = {
73
+ lastMousedownWasOutside: true
74
+ };
75
+ }
76
+
77
+ el._clickOutside[vnode.context._uid] = {
72
78
  onClick,
73
79
  onMousedown
74
80
  };
75
81
  },
76
82
 
77
- unbind(el) {
83
+ unbind(el, binding, vnode) {
78
84
  if (!el._clickOutside) return;
79
85
  handleShadow(el, app => {
80
- if (!app || !el._clickOutside) return;
81
- app.removeEventListener('click', el._clickOutside.onClick, true);
82
- app.removeEventListener('mousedown', el._clickOutside.onMousedown, true);
86
+ var _el$_clickOutside;
87
+
88
+ if (!app || !((_el$_clickOutside = el._clickOutside) != null && _el$_clickOutside[vnode.context._uid])) return;
89
+ const {
90
+ onClick,
91
+ onMousedown
92
+ } = el._clickOutside[vnode.context._uid];
93
+ app.removeEventListener('click', onClick, true);
94
+ app.removeEventListener('mousedown', onMousedown, true);
83
95
  });
84
- delete el._clickOutside;
96
+ delete el._clickOutside[vnode.context._uid];
85
97
  }
86
98
 
87
99
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/directives/click-outside/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { attachedRoot } from '../../util/dom'\nimport { VNodeDirective } from 'vue/types/vnode'\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) {\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) {\n const onClick = (e: Event) => directive(e as PointerEvent, el, binding)\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 el._clickOutside = {\n lastMousedownWasOutside: true,\n onClick,\n onMousedown,\n }\n },\n\n unbind (el: HTMLElement) {\n if (!el._clickOutside) return\n\n handleShadow(el, (app: HTMLElement) => {\n if (!app || !el._clickOutside) return\n app.removeEventListener('click', el._clickOutside.onClick, true)\n app.removeEventListener('mousedown', el._clickOutside.onMousedown, true)\n })\n\n delete el._clickOutside\n },\n}\n\nexport default ClickOutside\n"],"sourceRoot":"","file":"index.js"}
1
+ {"version":3,"sources":["../../../src/directives/click-outside/index.ts"],"names":[],"mappings":"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","sourcesContent":["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"],"sourceRoot":"","file":"index.js"}
@@ -1,4 +1,4 @@
1
- function inserted(el, binding) {
1
+ function inserted(el, binding, vnode) {
2
2
  if (typeof window === 'undefined' || !('IntersectionObserver' in window)) return;
3
3
  const modifiers = binding.modifiers || {};
4
4
  const value = binding.value;
@@ -10,32 +10,36 @@ function inserted(el, binding) {
10
10
  options: {}
11
11
  };
12
12
  const observer = new IntersectionObserver((entries = [], observer) => {
13
- /* istanbul ignore if */
14
- if (!el._observe) return; // Just in case, should never fire
13
+ var _el$_observe;
14
+
15
+ const _observe = (_el$_observe = el._observe) == null ? void 0 : _el$_observe[vnode.context._uid];
16
+
17
+ if (!_observe) return; // Just in case, should never fire
15
18
 
16
19
  const isIntersecting = entries.some(entry => entry.isIntersecting); // If is not quiet or has already been
17
20
  // initted, invoke the user callback
18
21
 
19
- if (handler && (!modifiers.quiet || el._observe.init) && (!modifiers.once || isIntersecting || !el._observe.init)) {
22
+ if (handler && (!modifiers.quiet || _observe.init) && (!modifiers.once || isIntersecting || _observe.init)) {
20
23
  handler(entries, observer, isIntersecting);
21
24
  }
22
25
 
23
- if (isIntersecting && modifiers.once) unbind(el);else el._observe.init = true;
26
+ if (isIntersecting && modifiers.once) unbind(el, binding, vnode);else _observe.init = true;
24
27
  }, options);
25
- el._observe = {
28
+ el._observe = Object(el._observe);
29
+ el._observe[vnode.context._uid] = {
26
30
  init: false,
27
31
  observer
28
32
  };
29
33
  observer.observe(el);
30
34
  }
31
35
 
32
- function unbind(el) {
33
- /* istanbul ignore if */
34
- if (!el._observe) return;
35
-
36
- el._observe.observer.unobserve(el);
36
+ function unbind(el, binding, vnode) {
37
+ var _el$_observe2;
37
38
 
38
- delete el._observe;
39
+ const observe = (_el$_observe2 = el._observe) == null ? void 0 : _el$_observe2[vnode.context._uid];
40
+ if (!observe) return;
41
+ observe.observer.unobserve(el);
42
+ delete el._observe[vnode.context._uid];
39
43
  }
40
44
 
41
45
  export const Intersect = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/directives/intersect/index.ts"],"names":[],"mappings":"AAgBA,SAAS,QAAT,CAAmB,EAAnB,EAAoC,OAApC,EAAkE;AAChE,MAAI,OAAO,MAAP,KAAkB,WAAlB,IAAiC,EAAE,0BAA0B,MAA5B,CAArC,EAA0E;AAE1E,QAAM,SAAS,GAAG,OAAO,CAAC,SAAR,IAAqB,EAAvC;AACA,QAAM,KAAK,GAAG,OAAO,CAAC,KAAtB;AACA,QAAM;AAAE,IAAA,OAAF;AAAW,IAAA;AAAX,MAAuB,OAAO,KAAP,KAAiB,QAAjB,GACzB,KADyB,GAEzB;AAAE,IAAA,OAAO,EAAE,KAAX;AAAkB,IAAA,OAAO,EAAE;AAA3B,GAFJ;AAGA,QAAM,QAAQ,GAAG,IAAI,oBAAJ,CAAyB,CACxC,OAAA,GAAuC,EADC,EAExC,QAFwC,KAGtC;AACF;AACA,QAAI,CAAC,EAAE,CAAC,QAAR,EAAkB,OAFhB,CAEuB;;AAEzB,UAAM,cAAc,GAAG,OAAO,CAAC,IAAR,CAAa,KAAK,IAAI,KAAK,CAAC,cAA5B,CAAvB,CAJE,CAMF;AACA;;AACA,QACE,OAAO,KACL,CAAC,SAAS,CAAC,KAAX,IACA,EAAE,CAAC,QAAH,CAAY,IAFP,CAAP,KAIE,CAAC,SAAS,CAAC,IAAX,IACA,cADA,IAEA,CAAC,EAAE,CAAC,QAAH,CAAY,IANf,CADF,EASE;AACA,MAAA,OAAO,CAAC,OAAD,EAAU,QAAV,EAAoB,cAApB,CAAP;AACD;;AAED,QAAI,cAAc,IAAI,SAAS,CAAC,IAAhC,EAAsC,MAAM,CAAC,EAAD,CAAN,CAAtC,KACK,EAAE,CAAC,QAAH,CAAY,IAAZ,GAAmB,IAAnB;AACN,GA1BgB,EA0Bd,OA1Bc,CAAjB;AA4BA,EAAA,EAAE,CAAC,QAAH,GAAc;AAAE,IAAA,IAAI,EAAE,KAAR;AAAe,IAAA;AAAf,GAAd;AAEA,EAAA,QAAQ,CAAC,OAAT,CAAiB,EAAjB;AACD;;AAED,SAAS,MAAT,CAAiB,EAAjB,EAAgC;AAC9B;AACA,MAAI,CAAC,EAAE,CAAC,QAAR,EAAkB;;AAElB,EAAA,EAAE,CAAC,QAAH,CAAY,QAAZ,CAAqB,SAArB,CAA+B,EAA/B;;AACA,SAAO,EAAE,CAAC,QAAV;AACD;;AAED,OAAO,MAAM,SAAS,GAAG;AACvB,EAAA,QADuB;AAEvB,EAAA;AAFuB,CAAlB;AAKP,eAAe,SAAf","sourcesContent":["import { VNodeDirective } from 'vue/types/vnode'\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) {\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 /* istanbul ignore if */\n if (!el._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 el._observe.init\n ) && (\n !modifiers.once ||\n isIntersecting ||\n !el._observe.init\n )\n ) {\n handler(entries, observer, isIntersecting)\n }\n\n if (isIntersecting && modifiers.once) unbind(el)\n else el._observe.init = true\n }, options)\n\n el._observe = { init: false, observer }\n\n observer.observe(el)\n}\n\nfunction unbind (el: HTMLElement) {\n /* istanbul ignore if */\n if (!el._observe) return\n\n el._observe.observer.unobserve(el)\n delete el._observe\n}\n\nexport const Intersect = {\n inserted,\n unbind,\n}\n\nexport default Intersect\n"],"sourceRoot":"","file":"index.js"}
1
+ {"version":3,"sources":["../../../src/directives/intersect/index.ts"],"names":[],"mappings":"AAiBA,SAAS,QAAT,CAAmB,EAAnB,EAAoC,OAApC,EAAoE,KAApE,EAAgF;AAC9E,MAAI,OAAO,MAAP,KAAkB,WAAlB,IAAiC,EAAE,0BAA0B,MAA5B,CAArC,EAA0E;AAE1E,QAAM,SAAS,GAAG,OAAO,CAAC,SAAR,IAAqB,EAAvC;AACA,QAAM,KAAK,GAAG,OAAO,CAAC,KAAtB;AACA,QAAM;AAAE,IAAA,OAAF;AAAW,IAAA;AAAX,MAAuB,OAAO,KAAP,KAAiB,QAAjB,GACzB,KADyB,GAEzB;AAAE,IAAA,OAAO,EAAE,KAAX;AAAkB,IAAA,OAAO,EAAE;AAA3B,GAFJ;AAGA,QAAM,QAAQ,GAAG,IAAI,oBAAJ,CAAyB,CACxC,OAAA,GAAuC,EADC,EAExC,QAFwC,KAGtC;AAAA;;AACF,UAAM,QAAQ,mBAAG,EAAE,CAAC,QAAN,qBAAG,aAAc,KAAK,CAAC,OAAN,CAAe,IAA7B,CAAjB;;AACA,QAAI,CAAC,QAAL,EAAe,OAFb,CAEoB;;AAEtB,UAAM,cAAc,GAAG,OAAO,CAAC,IAAR,CAAa,KAAK,IAAI,KAAK,CAAC,cAA5B,CAAvB,CAJE,CAMF;AACA;;AACA,QACE,OAAO,KACL,CAAC,SAAS,CAAC,KAAX,IACA,QAAQ,CAAC,IAFJ,CAAP,KAIE,CAAC,SAAS,CAAC,IAAX,IACA,cADA,IAEA,QAAQ,CAAC,IANX,CADF,EASE;AACA,MAAA,OAAO,CAAC,OAAD,EAAU,QAAV,EAAoB,cAApB,CAAP;AACD;;AAED,QAAI,cAAc,IAAI,SAAS,CAAC,IAAhC,EAAsC,MAAM,CAAC,EAAD,EAAK,OAAL,EAAc,KAAd,CAAN,CAAtC,KACK,QAAQ,CAAC,IAAT,GAAgB,IAAhB;AACN,GA1BgB,EA0Bd,OA1Bc,CAAjB;AA4BA,EAAA,EAAE,CAAC,QAAH,GAAc,MAAM,CAAC,EAAE,CAAC,QAAJ,CAApB;AACA,EAAA,EAAE,CAAC,QAAH,CAAa,KAAK,CAAC,OAAN,CAAe,IAA5B,IAAoC;AAAE,IAAA,IAAI,EAAE,KAAR;AAAe,IAAA;AAAf,GAApC;AAEA,EAAA,QAAQ,CAAC,OAAT,CAAiB,EAAjB;AACD;;AAED,SAAS,MAAT,CAAiB,EAAjB,EAAkC,OAAlC,EAAkE,KAAlE,EAA8E;AAAA;;AAC5E,QAAM,OAAO,oBAAG,EAAE,CAAC,QAAN,qBAAG,cAAc,KAAK,CAAC,OAAN,CAAe,IAA7B,CAAhB;AACA,MAAI,CAAC,OAAL,EAAc;AAEd,EAAA,OAAO,CAAC,QAAR,CAAiB,SAAjB,CAA2B,EAA3B;AACA,SAAO,EAAE,CAAC,QAAH,CAAa,KAAK,CAAC,OAAN,CAAe,IAA5B,CAAP;AACD;;AAED,OAAO,MAAM,SAAS,GAAG;AACvB,EAAA,QADuB;AAEvB,EAAA;AAFuB,CAAlB;AAKP,eAAe,SAAf","sourcesContent":["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"],"sourceRoot":"","file":"index.js"}
@@ -1,4 +1,4 @@
1
- function inserted(el, binding) {
1
+ function inserted(el, binding, vnode) {
2
2
  const modifiers = binding.modifiers || {};
3
3
  const value = binding.value;
4
4
  const callback = typeof value === 'object' ? value.handler : value;
@@ -27,21 +27,23 @@ function inserted(el, binding) {
27
27
 
28
28
  callback(mutationsList, observer); // If has the once modifier, unbind
29
29
 
30
- once && unbind(el);
30
+ once && unbind(el, binding, vnode);
31
31
  });
32
32
  observer.observe(el, options);
33
- el._mutate = {
33
+ el._mutate = Object(el._mutate);
34
+ el._mutate[vnode.context._uid] = {
34
35
  observer
35
36
  };
36
37
  }
37
38
 
38
- function unbind(el) {
39
- /* istanbul ignore if */
40
- if (!el._mutate) return;
39
+ function unbind(el, binding, vnode) {
40
+ var _el$_mutate;
41
41
 
42
- el._mutate.observer.disconnect();
42
+ if (!((_el$_mutate = el._mutate) != null && _el$_mutate[vnode.context._uid])) return;
43
43
 
44
- delete el._mutate;
44
+ el._mutate[vnode.context._uid].observer.disconnect();
45
+
46
+ delete el._mutate[vnode.context._uid];
45
47
  }
46
48
 
47
49
  export const Mutate = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/directives/mutate/index.ts"],"names":[],"mappings":"AAkBA,SAAS,QAAT,CAAmB,EAAnB,EAAoC,OAApC,EAAiE;AAC/D,QAAM,SAAS,GAAG,OAAO,CAAC,SAAR,IAAqB,EAAvC;AACA,QAAM,KAAK,GAAG,OAAO,CAAC,KAAtB;AACA,QAAM,QAAQ,GAAG,OAAO,KAAP,KAAiB,QAAjB,GAA4B,KAAK,CAAC,OAAlC,GAA4C,KAA7D;AACA,QAAM;AAAE,IAAA,IAAF;AAAQ,OAAG;AAAX,MAA4B,SAAlC;AACA,QAAM,YAAY,GAAG,MAAM,CAAC,IAAP,CAAY,YAAZ,EAA0B,MAA1B,GAAmC,CAAxD,CAL+D,CAO/D;;AACA,QAAM,OAAO,GAAG,OAAO,KAAP,KAAiB,QAAjB,IAA6B,KAAK,CAAC,OAAnC,GACZ,KAAK,CAAC,OADM,GAEZ,YAAY,CACZ;AADY,IAEV;AACA,IAAA,UAAU,EAAE,YAAY,CAAC,IADzB;AAEA,IAAA,SAAS,EAAE,YAAY,CAAC,KAFxB;AAGA,IAAA,OAAO,EAAE,YAAY,CAAC,GAHtB;AAIA,IAAA,aAAa,EAAE,YAAY,CAAC;AAJ5B,GAFU,CAQZ;AARY,IASV;AACA,IAAA,UAAU,EAAE,IADZ;AAEA,IAAA,SAAS,EAAE,IAFX;AAGA,IAAA,OAAO,EAAE,IAHT;AAIA,IAAA,aAAa,EAAE;AAJf,GAXN;AAkBA,QAAM,QAAQ,GAAG,IAAI,gBAAJ,CAAqB,CACpC,aADoC,EAEpC,QAFoC,KAGlC;AACF;AACA,QAAI,CAAC,EAAE,CAAC,OAAR,EAAiB,OAFf,CAEsB;;AAExB,IAAA,QAAQ,CAAC,aAAD,EAAgB,QAAhB,CAAR,CAJE,CAMF;;AACA,IAAA,IAAI,IAAI,MAAM,CAAC,EAAD,CAAd;AACD,GAXgB,CAAjB;AAaA,EAAA,QAAQ,CAAC,OAAT,CAAiB,EAAjB,EAAqB,OAArB;AACA,EAAA,EAAE,CAAC,OAAH,GAAa;AAAE,IAAA;AAAF,GAAb;AACD;;AAED,SAAS,MAAT,CAAiB,EAAjB,EAAgC;AAC9B;AACA,MAAI,CAAC,EAAE,CAAC,OAAR,EAAiB;;AAEjB,EAAA,EAAE,CAAC,OAAH,CAAW,QAAX,CAAoB,UAApB;;AACA,SAAO,EAAE,CAAC,OAAV;AACD;;AAED,OAAO,MAAM,MAAM,GAAG;AACpB,EAAA,QADoB;AAEpB,EAAA;AAFoB,CAAf;AAKP,eAAe,MAAf","sourcesContent":["import { VNodeDirective } from 'vue'\n\ntype MutateHandler = (\n mutationsList: MutationRecord[],\n observer: MutationObserver,\n) => void\n\ninterface MutateVNodeDirective extends Omit<VNodeDirective, 'modifiers'> {\n value?: MutateHandler | { handler: MutateHandler, options?: MutationObserverInit }\n modifiers?: {\n once?: boolean\n attr?: boolean\n child?: boolean\n sub?: boolean\n char?: boolean\n }\n}\n\nfunction inserted (el: HTMLElement, binding: MutateVNodeDirective) {\n const modifiers = binding.modifiers || {}\n const value = binding.value\n const callback = typeof value === 'object' ? value.handler : value!\n const { once, ...modifierKeys } = modifiers\n const hasModifiers = Object.keys(modifierKeys).length > 0\n\n // Options take top priority\n const options = typeof value === 'object' && value.options\n ? value.options\n : hasModifiers\n // If we have modifiers, use only those provided\n ? {\n attributes: modifierKeys.attr,\n childList: modifierKeys.child,\n subtree: modifierKeys.sub,\n characterData: modifierKeys.char,\n }\n // Defaults to everything on\n : {\n attributes: true,\n childList: true,\n subtree: true,\n characterData: true,\n }\n\n const observer = new MutationObserver((\n mutationsList: MutationRecord[],\n observer: MutationObserver\n ) => {\n /* istanbul ignore if */\n if (!el._mutate) return // Just in case, should never fire\n\n callback(mutationsList, observer)\n\n // If has the once modifier, unbind\n once && unbind(el)\n })\n\n observer.observe(el, options)\n el._mutate = { observer }\n}\n\nfunction unbind (el: HTMLElement) {\n /* istanbul ignore if */\n if (!el._mutate) return\n\n el._mutate.observer.disconnect()\n delete el._mutate\n}\n\nexport const Mutate = {\n inserted,\n unbind,\n}\n\nexport default Mutate\n"],"sourceRoot":"","file":"index.js"}
1
+ {"version":3,"sources":["../../../src/directives/mutate/index.ts"],"names":[],"mappings":"AAkBA,SAAS,QAAT,CAAmB,EAAnB,EAAoC,OAApC,EAAmE,KAAnE,EAA+E;AAC7E,QAAM,SAAS,GAAG,OAAO,CAAC,SAAR,IAAqB,EAAvC;AACA,QAAM,KAAK,GAAG,OAAO,CAAC,KAAtB;AACA,QAAM,QAAQ,GAAG,OAAO,KAAP,KAAiB,QAAjB,GAA4B,KAAK,CAAC,OAAlC,GAA4C,KAA7D;AACA,QAAM;AAAE,IAAA,IAAF;AAAQ,OAAG;AAAX,MAA4B,SAAlC;AACA,QAAM,YAAY,GAAG,MAAM,CAAC,IAAP,CAAY,YAAZ,EAA0B,MAA1B,GAAmC,CAAxD,CAL6E,CAO7E;;AACA,QAAM,OAAO,GAAG,OAAO,KAAP,KAAiB,QAAjB,IAA6B,KAAK,CAAC,OAAnC,GACZ,KAAK,CAAC,OADM,GAEZ,YAAY,CACZ;AADY,IAEV;AACA,IAAA,UAAU,EAAE,YAAY,CAAC,IADzB;AAEA,IAAA,SAAS,EAAE,YAAY,CAAC,KAFxB;AAGA,IAAA,OAAO,EAAE,YAAY,CAAC,GAHtB;AAIA,IAAA,aAAa,EAAE,YAAY,CAAC;AAJ5B,GAFU,CAQZ;AARY,IASV;AACA,IAAA,UAAU,EAAE,IADZ;AAEA,IAAA,SAAS,EAAE,IAFX;AAGA,IAAA,OAAO,EAAE,IAHT;AAIA,IAAA,aAAa,EAAE;AAJf,GAXN;AAkBA,QAAM,QAAQ,GAAG,IAAI,gBAAJ,CAAqB,CACpC,aADoC,EAEpC,QAFoC,KAGlC;AACF;AACA,QAAI,CAAC,EAAE,CAAC,OAAR,EAAiB,OAFf,CAEsB;;AAExB,IAAA,QAAQ,CAAC,aAAD,EAAgB,QAAhB,CAAR,CAJE,CAMF;;AACA,IAAA,IAAI,IAAI,MAAM,CAAC,EAAD,EAAK,OAAL,EAAc,KAAd,CAAd;AACD,GAXgB,CAAjB;AAaA,EAAA,QAAQ,CAAC,OAAT,CAAiB,EAAjB,EAAqB,OAArB;AACA,EAAA,EAAE,CAAC,OAAH,GAAa,MAAM,CAAC,EAAE,CAAC,OAAJ,CAAnB;AACA,EAAA,EAAE,CAAC,OAAH,CAAY,KAAK,CAAC,OAAN,CAAe,IAA3B,IAAmC;AAAE,IAAA;AAAF,GAAnC;AACD;;AAED,SAAS,MAAT,CAAiB,EAAjB,EAAkC,OAAlC,EAAiE,KAAjE,EAA6E;AAAA;;AAC3E,MAAI,iBAAC,EAAE,CAAC,OAAJ,aAAC,YAAa,KAAK,CAAC,OAAN,CAAe,IAA5B,CAAD,CAAJ,EAAwC;;AAExC,EAAA,EAAE,CAAC,OAAH,CAAW,KAAK,CAAC,OAAN,CAAe,IAA1B,EAAiC,QAAjC,CAA0C,UAA1C;;AACA,SAAO,EAAE,CAAC,OAAH,CAAW,KAAK,CAAC,OAAN,CAAe,IAA1B,CAAP;AACD;;AAED,OAAO,MAAM,MAAM,GAAG;AACpB,EAAA,QADoB;AAEpB,EAAA;AAFoB,CAAf;AAKP,eAAe,MAAf","sourcesContent":["import { VNode, VNodeDirective } from 'vue'\n\ntype MutateHandler = (\n mutationsList: MutationRecord[],\n observer: MutationObserver,\n) => void\n\ninterface MutateVNodeDirective extends Omit<VNodeDirective, 'modifiers'> {\n value?: MutateHandler | { handler: MutateHandler, options?: MutationObserverInit }\n modifiers?: {\n once?: boolean\n attr?: boolean\n child?: boolean\n sub?: boolean\n char?: boolean\n }\n}\n\nfunction inserted (el: HTMLElement, binding: MutateVNodeDirective, vnode: VNode) {\n const modifiers = binding.modifiers || {}\n const value = binding.value\n const callback = typeof value === 'object' ? value.handler : value!\n const { once, ...modifierKeys } = modifiers\n const hasModifiers = Object.keys(modifierKeys).length > 0\n\n // Options take top priority\n const options = typeof value === 'object' && value.options\n ? value.options\n : hasModifiers\n // If we have modifiers, use only those provided\n ? {\n attributes: modifierKeys.attr,\n childList: modifierKeys.child,\n subtree: modifierKeys.sub,\n characterData: modifierKeys.char,\n }\n // Defaults to everything on\n : {\n attributes: true,\n childList: true,\n subtree: true,\n characterData: true,\n }\n\n const observer = new MutationObserver((\n mutationsList: MutationRecord[],\n observer: MutationObserver\n ) => {\n /* istanbul ignore if */\n if (!el._mutate) return // Just in case, should never fire\n\n callback(mutationsList, observer)\n\n // If has the once modifier, unbind\n once && unbind(el, binding, vnode)\n })\n\n observer.observe(el, options)\n el._mutate = Object(el._mutate)\n el._mutate![vnode.context!._uid] = { observer }\n}\n\nfunction unbind (el: HTMLElement, binding: MutateVNodeDirective, vnode: VNode) {\n if (!el._mutate?.[vnode.context!._uid]) return\n\n el._mutate[vnode.context!._uid]!.observer.disconnect()\n delete el._mutate[vnode.context!._uid]\n}\n\nexport const Mutate = {\n inserted,\n unbind,\n}\n\nexport default Mutate\n"],"sourceRoot":"","file":"index.js"}
@@ -1,10 +1,11 @@
1
- function inserted(el, binding) {
1
+ function inserted(el, binding, vnode) {
2
2
  const callback = binding.value;
3
3
  const options = binding.options || {
4
4
  passive: true
5
5
  };
6
6
  window.addEventListener('resize', callback, options);
7
- el._onResize = {
7
+ el._onResize = Object(el._onResize);
8
+ el._onResize[vnode.context._uid] = {
8
9
  callback,
9
10
  options
10
11
  };
@@ -14,14 +15,16 @@ function inserted(el, binding) {
14
15
  }
15
16
  }
16
17
 
17
- function unbind(el) {
18
- if (!el._onResize) return;
18
+ function unbind(el, binding, vnode) {
19
+ var _el$_onResize;
20
+
21
+ if (!((_el$_onResize = el._onResize) != null && _el$_onResize[vnode.context._uid])) return;
19
22
  const {
20
23
  callback,
21
24
  options
22
- } = el._onResize;
25
+ } = el._onResize[vnode.context._uid];
23
26
  window.removeEventListener('resize', callback, options);
24
- delete el._onResize;
27
+ delete el._onResize[vnode.context._uid];
25
28
  }
26
29
 
27
30
  export const Resize = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/directives/resize/index.ts"],"names":[],"mappings":"AAOA,SAAS,QAAT,CAAmB,EAAnB,EAAoC,OAApC,EAAiE;AAC/D,QAAM,QAAQ,GAAG,OAAO,CAAC,KAAzB;AACA,QAAM,OAAO,GAAG,OAAO,CAAC,OAAR,IAAmB;AAAE,IAAA,OAAO,EAAE;AAAX,GAAnC;AAEA,EAAA,MAAM,CAAC,gBAAP,CAAwB,QAAxB,EAAkC,QAAlC,EAA4C,OAA5C;AACA,EAAA,EAAE,CAAC,SAAH,GAAe;AACb,IAAA,QADa;AAEb,IAAA;AAFa,GAAf;;AAKA,MAAI,CAAC,OAAO,CAAC,SAAT,IAAsB,CAAC,OAAO,CAAC,SAAR,CAAkB,KAA7C,EAAoD;AAClD,IAAA,QAAQ;AACT;AACF;;AAED,SAAS,MAAT,CAAiB,EAAjB,EAAgC;AAC9B,MAAI,CAAC,EAAE,CAAC,SAAR,EAAmB;AAEnB,QAAM;AAAE,IAAA,QAAF;AAAY,IAAA;AAAZ,MAAwB,EAAE,CAAC,SAAjC;AACA,EAAA,MAAM,CAAC,mBAAP,CAA2B,QAA3B,EAAqC,QAArC,EAA+C,OAA/C;AACA,SAAO,EAAE,CAAC,SAAV;AACD;;AAED,OAAO,MAAM,MAAM,GAAG;AACpB,EAAA,QADoB;AAEpB,EAAA;AAFoB,CAAf;AAKP,eAAe,MAAf","sourcesContent":["import { VNodeDirective } from 'vue/types/vnode'\n\ninterface ResizeVNodeDirective extends VNodeDirective {\n value?: () => void\n options?: boolean | AddEventListenerOptions\n}\n\nfunction inserted (el: HTMLElement, binding: ResizeVNodeDirective) {\n const callback = binding.value!\n const options = binding.options || { passive: true }\n\n window.addEventListener('resize', callback, options)\n el._onResize = {\n callback,\n options,\n }\n\n if (!binding.modifiers || !binding.modifiers.quiet) {\n callback()\n }\n}\n\nfunction unbind (el: HTMLElement) {\n if (!el._onResize) return\n\n const { callback, options } = el._onResize\n window.removeEventListener('resize', callback, options)\n delete el._onResize\n}\n\nexport const Resize = {\n inserted,\n unbind,\n}\n\nexport default Resize\n"],"sourceRoot":"","file":"index.js"}
1
+ {"version":3,"sources":["../../../src/directives/resize/index.ts"],"names":[],"mappings":"AAQA,SAAS,QAAT,CAAmB,EAAnB,EAAoC,OAApC,EAAmE,KAAnE,EAA+E;AAC7E,QAAM,QAAQ,GAAG,OAAO,CAAC,KAAzB;AACA,QAAM,OAAO,GAAG,OAAO,CAAC,OAAR,IAAmB;AAAE,IAAA,OAAO,EAAE;AAAX,GAAnC;AAEA,EAAA,MAAM,CAAC,gBAAP,CAAwB,QAAxB,EAAkC,QAAlC,EAA4C,OAA5C;AAEA,EAAA,EAAE,CAAC,SAAH,GAAe,MAAM,CAAC,EAAE,CAAC,SAAJ,CAArB;AACA,EAAA,EAAE,CAAC,SAAH,CAAc,KAAK,CAAC,OAAN,CAAe,IAA7B,IAAqC;AACnC,IAAA,QADmC;AAEnC,IAAA;AAFmC,GAArC;;AAKA,MAAI,CAAC,OAAO,CAAC,SAAT,IAAsB,CAAC,OAAO,CAAC,SAAR,CAAkB,KAA7C,EAAoD;AAClD,IAAA,QAAQ;AACT;AACF;;AAED,SAAS,MAAT,CAAiB,EAAjB,EAAkC,OAAlC,EAAiE,KAAjE,EAA6E;AAAA;;AAC3E,MAAI,mBAAC,EAAE,CAAC,SAAJ,aAAC,cAAe,KAAK,CAAC,OAAN,CAAe,IAA9B,CAAD,CAAJ,EAA0C;AAE1C,QAAM;AAAE,IAAA,QAAF;AAAY,IAAA;AAAZ,MAAwB,EAAE,CAAC,SAAH,CAAa,KAAK,CAAC,OAAN,CAAe,IAA5B,CAA9B;AAEA,EAAA,MAAM,CAAC,mBAAP,CAA2B,QAA3B,EAAqC,QAArC,EAA+C,OAA/C;AAEA,SAAO,EAAE,CAAC,SAAH,CAAa,KAAK,CAAC,OAAN,CAAe,IAA5B,CAAP;AACD;;AAED,OAAO,MAAM,MAAM,GAAG;AACpB,EAAA,QADoB;AAEpB,EAAA;AAFoB,CAAf;AAKP,eAAe,MAAf","sourcesContent":["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"],"sourceRoot":"","file":"index.js"}
@@ -1,4 +1,4 @@
1
- function inserted(el, binding) {
1
+ function inserted(el, binding, vnode) {
2
2
  const {
3
3
  self = false
4
4
  } = binding.modifiers || {};
@@ -10,7 +10,8 @@ function inserted(el, binding) {
10
10
  const target = self ? el : binding.arg ? document.querySelector(binding.arg) : window;
11
11
  if (!target) return;
12
12
  target.addEventListener('scroll', handler, options);
13
- el._onScroll = {
13
+ el._onScroll = Object(el._onScroll);
14
+ el._onScroll[vnode.context._uid] = {
14
15
  handler,
15
16
  options,
16
17
  // Don't reference self
@@ -18,15 +19,17 @@ function inserted(el, binding) {
18
19
  };
19
20
  }
20
21
 
21
- function unbind(el) {
22
- if (!el._onScroll) return;
22
+ function unbind(el, binding, vnode) {
23
+ var _el$_onScroll;
24
+
25
+ if (!((_el$_onScroll = el._onScroll) != null && _el$_onScroll[vnode.context._uid])) return;
23
26
  const {
24
27
  handler,
25
28
  options,
26
29
  target = el
27
- } = el._onScroll;
30
+ } = el._onScroll[vnode.context._uid];
28
31
  target.removeEventListener('scroll', handler, options);
29
- delete el._onScroll;
32
+ delete el._onScroll[vnode.context._uid];
30
33
  }
31
34
 
32
35
  export const Scroll = {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/directives/scroll/index.ts"],"names":[],"mappings":"AAaA,SAAS,QAAT,CAAmB,EAAnB,EAAoC,OAApC,EAAiE;AAC/D,QAAM;AAAE,IAAA,IAAI,GAAG;AAAT,MAAmB,OAAO,CAAC,SAAR,IAAqB,EAA9C;AACA,QAAM,KAAK,GAAG,OAAO,CAAC,KAAtB;AACA,QAAM,OAAO,GAAI,OAAO,KAAP,KAAiB,QAAjB,IAA6B,KAAK,CAAC,OAApC,IAAgD;AAAE,IAAA,OAAO,EAAE;AAAX,GAAhE;AACA,QAAM,OAAO,GAAG,OAAO,KAAP,KAAiB,UAAjB,IAA+B,iBAAiB,KAAhD,GAAwD,KAAxD,GAAgE,KAAK,CAAC,OAAtF;AAEA,QAAM,MAAM,GAAG,IAAI,GACf,EADe,GAEf,OAAO,CAAC,GAAR,GACE,QAAQ,CAAC,aAAT,CAAuB,OAAO,CAAC,GAA/B,CADF,GAEE,MAJN;AAMA,MAAI,CAAC,MAAL,EAAa;AAEb,EAAA,MAAM,CAAC,gBAAP,CAAwB,QAAxB,EAAkC,OAAlC,EAA2C,OAA3C;AAEA,EAAA,EAAE,CAAC,SAAH,GAAe;AACb,IAAA,OADa;AAEb,IAAA,OAFa;AAGb;AACA,IAAA,MAAM,EAAE,IAAI,GAAG,SAAH,GAAe;AAJd,GAAf;AAMD;;AAED,SAAS,MAAT,CAAiB,EAAjB,EAAgC;AAC9B,MAAI,CAAC,EAAE,CAAC,SAAR,EAAmB;AAEnB,QAAM;AAAE,IAAA,OAAF;AAAW,IAAA,OAAX;AAAoB,IAAA,MAAM,GAAG;AAA7B,MAAoC,EAAE,CAAC,SAA7C;AAEA,EAAA,MAAM,CAAC,mBAAP,CAA2B,QAA3B,EAAqC,OAArC,EAA8C,OAA9C;AACA,SAAO,EAAE,CAAC,SAAV;AACD;;AAED,OAAO,MAAM,MAAM,GAAG;AACpB,EAAA,QADoB;AAEpB,EAAA;AAFoB,CAAf;AAKP,eAAe,MAAf","sourcesContent":["import { VNodeDirective } from 'vue/types/vnode'\nimport { DirectiveOptions } 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) {\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 = {\n handler,\n options,\n // Don't reference self\n target: self ? undefined : target,\n }\n}\n\nfunction unbind (el: HTMLElement) {\n if (!el._onScroll) return\n\n const { handler, options, target = el } = el._onScroll\n\n target.removeEventListener('scroll', handler, options)\n delete el._onScroll\n}\n\nexport const Scroll = {\n inserted,\n unbind,\n} as DirectiveOptions\n\nexport default Scroll\n"],"sourceRoot":"","file":"index.js"}
1
+ {"version":3,"sources":["../../../src/directives/scroll/index.ts"],"names":[],"mappings":"AAaA,SAAS,QAAT,CAAmB,EAAnB,EAAoC,OAApC,EAAmE,KAAnE,EAA+E;AAC7E,QAAM;AAAE,IAAA,IAAI,GAAG;AAAT,MAAmB,OAAO,CAAC,SAAR,IAAqB,EAA9C;AACA,QAAM,KAAK,GAAG,OAAO,CAAC,KAAtB;AACA,QAAM,OAAO,GAAI,OAAO,KAAP,KAAiB,QAAjB,IAA6B,KAAK,CAAC,OAApC,IAAgD;AAAE,IAAA,OAAO,EAAE;AAAX,GAAhE;AACA,QAAM,OAAO,GAAG,OAAO,KAAP,KAAiB,UAAjB,IAA+B,iBAAiB,KAAhD,GAAwD,KAAxD,GAAgE,KAAK,CAAC,OAAtF;AAEA,QAAM,MAAM,GAAG,IAAI,GACf,EADe,GAEf,OAAO,CAAC,GAAR,GACE,QAAQ,CAAC,aAAT,CAAuB,OAAO,CAAC,GAA/B,CADF,GAEE,MAJN;AAMA,MAAI,CAAC,MAAL,EAAa;AAEb,EAAA,MAAM,CAAC,gBAAP,CAAwB,QAAxB,EAAkC,OAAlC,EAA2C,OAA3C;AAEA,EAAA,EAAE,CAAC,SAAH,GAAe,MAAM,CAAC,EAAE,CAAC,SAAJ,CAArB;AACA,EAAA,EAAE,CAAC,SAAH,CAAc,KAAK,CAAC,OAAN,CAAe,IAA7B,IAAqC;AACnC,IAAA,OADmC;AAEnC,IAAA,OAFmC;AAGnC;AACA,IAAA,MAAM,EAAE,IAAI,GAAG,SAAH,GAAe;AAJQ,GAArC;AAMD;;AAED,SAAS,MAAT,CAAiB,EAAjB,EAAkC,OAAlC,EAAiE,KAAjE,EAA6E;AAAA;;AAC3E,MAAI,mBAAC,EAAE,CAAC,SAAJ,aAAC,cAAe,KAAK,CAAC,OAAN,CAAe,IAA9B,CAAD,CAAJ,EAA0C;AAE1C,QAAM;AAAE,IAAA,OAAF;AAAW,IAAA,OAAX;AAAoB,IAAA,MAAM,GAAG;AAA7B,MAAoC,EAAE,CAAC,SAAH,CAAa,KAAK,CAAC,OAAN,CAAe,IAA5B,CAA1C;AAEA,EAAA,MAAM,CAAC,mBAAP,CAA2B,QAA3B,EAAqC,OAArC,EAA8C,OAA9C;AACA,SAAO,EAAE,CAAC,SAAH,CAAa,KAAK,CAAC,OAAN,CAAe,IAA5B,CAAP;AACD;;AAED,OAAO,MAAM,MAAM,GAAG;AACpB,EAAA,QADoB;AAEpB,EAAA;AAFoB,CAAf;AAKP,eAAe,MAAf","sourcesContent":["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":"","file":"index.js"}
package/lib/framework.js CHANGED
@@ -46,7 +46,7 @@ export default class Vuetify {
46
46
  }
47
47
  Vuetify.install = install;
48
48
  Vuetify.installed = false;
49
- Vuetify.version = "2.5.10";
49
+ Vuetify.version = "2.5.14";
50
50
  Vuetify.config = {
51
51
  silent: false
52
52
  };
package/lib/locale/fr.js CHANGED
@@ -63,7 +63,7 @@ export default {
63
63
  },
64
64
  rating: {
65
65
  ariaLabel: {
66
- icon: 'Rating {0} of {1}'
66
+ icon: 'Note de {0} sur {1}'
67
67
  }
68
68
  }
69
69
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/locale/fr.ts"],"names":[],"mappings":"AAAA,eAAe;AACb,EAAA,KAAK,EAAE,OADM;AAEb,EAAA,KAAK,EAAE,QAFM;AAGb,EAAA,YAAY,EAAE;AACZ,IAAA,aAAa,EAAE,2CADH;AAEZ,IAAA,WAAW,EAAE;AAFD,GAHD;AAOb,EAAA,SAAS,EAAE;AACT,IAAA,gBAAgB,EAAE,mBADT;AAET,IAAA,SAAS,EAAE;AACT,MAAA,cAAc,EAAE,kBADP;AAET,MAAA,aAAa,EAAE,gBAFN;AAGT,MAAA,QAAQ,EAAE,WAHD;AAIT,MAAA,YAAY,EAAE,gCAJL;AAKT,MAAA,kBAAkB,EAAE,2CALX;AAMT,MAAA,iBAAiB,EAAE;AANV,KAFF;AAUT,IAAA,MAAM,EAAE;AAVC,GAPE;AAmBb,EAAA,UAAU,EAAE;AACV,IAAA,gBAAgB,EAAE,qBADR;AAEV,IAAA,eAAe,EAAE,MAFP;AAGV,IAAA,QAAQ,EAAE,eAHA;AAIV,IAAA,QAAQ,EAAE,iBAJA;AAKV,IAAA,SAAS,EAAE,eALD;AAMV,IAAA,QAAQ,EAAE,eANA;AAOV,IAAA,QAAQ,EAAE;AAPA,GAnBC;AA4Bb,EAAA,UAAU,EAAE;AACV,IAAA,aAAa,EAAE,oBADL;AAEV,IAAA,kBAAkB,EAAE,kBAFV;AAGV,IAAA,iBAAiB,EAAE,mBAHT;AAIV,IAAA,kBAAkB,EAAE,mBAJV;AAKV,IAAA,iBAAiB,EAAE;AALT,GA5BC;AAmCb,EAAA,UAAU,EAAE,0BAnCC;AAoCb,EAAA,QAAQ,EAAE;AACR,IAAA,IAAI,EAAE,kBADE;AAER,IAAA,IAAI,EAAE,gBAFE;AAGR,IAAA,SAAS,EAAE;AACT,MAAA,SAAS,EAAE;AADF;AAHH,GApCG;AA2Cb,EAAA,QAAQ,EAAE;AACR,IAAA,UAAU,EAAE;AADJ,GA3CG;AA8Cb,EAAA,SAAS,EAAE;AACT,IAAA,OAAO,EAAE,gBADA;AAET,IAAA,WAAW,EAAE;AAFJ,GA9CE;AAkDb,EAAA,UAAU,EAAE;AACV,IAAA,EAAE,EAAE,IADM;AAEV,IAAA,EAAE,EAAE;AAFM,GAlDC;AAsDb,EAAA,UAAU,EAAE;AACV,IAAA,SAAS,EAAE;AACT,MAAA,OAAO,EAAE,0BADA;AAET,MAAA,IAAI,EAAE,eAFG;AAGT,MAAA,QAAQ,EAAE,iBAHD;AAIT,MAAA,IAAI,EAAE,qBAJG;AAKT,MAAA,WAAW,EAAE;AALJ;AADD,GAtDC;AA+Db,EAAA,MAAM,EAAE;AACN,IAAA,SAAS,EAAE;AACT,MAAA,IAAI,EAAE;AADG;AADL;AA/DK,CAAf","sourcesContent":["export default {\n badge: 'Badge',\n close: 'Fermer',\n dataIterator: {\n noResultsText: 'Aucun enregistrement correspondant trouvé',\n loadingText: `Chargement de l'élément...`,\n },\n dataTable: {\n itemsPerPageText: 'Lignes par page :',\n ariaLabel: {\n sortDescending: 'Tri décroissant.',\n sortAscending: 'Tri croissant.',\n sortNone: 'Non trié.',\n activateNone: 'Activer pour supprimer le tri.',\n activateDescending: 'Activer pour trier par ordre décroissant.',\n activateAscending: 'Activer pour trier par ordre croissant.',\n },\n sortBy: 'Trier par',\n },\n dataFooter: {\n itemsPerPageText: 'Élements par page :',\n itemsPerPageAll: 'Tous',\n nextPage: 'Page suivante',\n prevPage: 'Page précédente',\n firstPage: 'Première page',\n lastPage: 'Dernière page',\n pageText: '{0}-{1} de {2}',\n },\n datePicker: {\n itemsSelected: '{0} sélectionné(s)',\n nextMonthAriaLabel: 'Le mois prochain',\n nextYearAriaLabel: `L'année prochaine`,\n prevMonthAriaLabel: 'Le mois précédent',\n prevYearAriaLabel: 'Année précédente',\n },\n noDataText: 'Aucune donnée disponible',\n carousel: {\n prev: 'Visuel précédent',\n next: 'Visuel suivant',\n ariaLabel: {\n delimiter: 'Diapositive {0} de {1}',\n },\n },\n calendar: {\n moreEvents: '{0} de plus',\n },\n fileInput: {\n counter: '{0} fichier(s)',\n counterSize: '{0} fichier(s) ({1} au total)',\n },\n timePicker: {\n am: 'AM',\n pm: 'PM',\n },\n pagination: {\n ariaLabel: {\n wrapper: 'Navigation de pagination',\n next: 'Page suivante',\n previous: 'Page précédente',\n page: 'Aller à la page {0}',\n currentPage: 'Page actuelle, Page {0}',\n },\n },\n rating: {\n ariaLabel: {\n icon: 'Rating {0} of {1}',\n },\n },\n}\n"],"sourceRoot":"","file":"fr.js"}
1
+ {"version":3,"sources":["../../src/locale/fr.ts"],"names":[],"mappings":"AAAA,eAAe;AACb,EAAA,KAAK,EAAE,OADM;AAEb,EAAA,KAAK,EAAE,QAFM;AAGb,EAAA,YAAY,EAAE;AACZ,IAAA,aAAa,EAAE,2CADH;AAEZ,IAAA,WAAW,EAAE;AAFD,GAHD;AAOb,EAAA,SAAS,EAAE;AACT,IAAA,gBAAgB,EAAE,mBADT;AAET,IAAA,SAAS,EAAE;AACT,MAAA,cAAc,EAAE,kBADP;AAET,MAAA,aAAa,EAAE,gBAFN;AAGT,MAAA,QAAQ,EAAE,WAHD;AAIT,MAAA,YAAY,EAAE,gCAJL;AAKT,MAAA,kBAAkB,EAAE,2CALX;AAMT,MAAA,iBAAiB,EAAE;AANV,KAFF;AAUT,IAAA,MAAM,EAAE;AAVC,GAPE;AAmBb,EAAA,UAAU,EAAE;AACV,IAAA,gBAAgB,EAAE,qBADR;AAEV,IAAA,eAAe,EAAE,MAFP;AAGV,IAAA,QAAQ,EAAE,eAHA;AAIV,IAAA,QAAQ,EAAE,iBAJA;AAKV,IAAA,SAAS,EAAE,eALD;AAMV,IAAA,QAAQ,EAAE,eANA;AAOV,IAAA,QAAQ,EAAE;AAPA,GAnBC;AA4Bb,EAAA,UAAU,EAAE;AACV,IAAA,aAAa,EAAE,oBADL;AAEV,IAAA,kBAAkB,EAAE,kBAFV;AAGV,IAAA,iBAAiB,EAAE,mBAHT;AAIV,IAAA,kBAAkB,EAAE,mBAJV;AAKV,IAAA,iBAAiB,EAAE;AALT,GA5BC;AAmCb,EAAA,UAAU,EAAE,0BAnCC;AAoCb,EAAA,QAAQ,EAAE;AACR,IAAA,IAAI,EAAE,kBADE;AAER,IAAA,IAAI,EAAE,gBAFE;AAGR,IAAA,SAAS,EAAE;AACT,MAAA,SAAS,EAAE;AADF;AAHH,GApCG;AA2Cb,EAAA,QAAQ,EAAE;AACR,IAAA,UAAU,EAAE;AADJ,GA3CG;AA8Cb,EAAA,SAAS,EAAE;AACT,IAAA,OAAO,EAAE,gBADA;AAET,IAAA,WAAW,EAAE;AAFJ,GA9CE;AAkDb,EAAA,UAAU,EAAE;AACV,IAAA,EAAE,EAAE,IADM;AAEV,IAAA,EAAE,EAAE;AAFM,GAlDC;AAsDb,EAAA,UAAU,EAAE;AACV,IAAA,SAAS,EAAE;AACT,MAAA,OAAO,EAAE,0BADA;AAET,MAAA,IAAI,EAAE,eAFG;AAGT,MAAA,QAAQ,EAAE,iBAHD;AAIT,MAAA,IAAI,EAAE,qBAJG;AAKT,MAAA,WAAW,EAAE;AALJ;AADD,GAtDC;AA+Db,EAAA,MAAM,EAAE;AACN,IAAA,SAAS,EAAE;AACT,MAAA,IAAI,EAAE;AADG;AADL;AA/DK,CAAf","sourcesContent":["export default {\n badge: 'Badge',\n close: 'Fermer',\n dataIterator: {\n noResultsText: 'Aucun enregistrement correspondant trouvé',\n loadingText: `Chargement de l'élément...`,\n },\n dataTable: {\n itemsPerPageText: 'Lignes par page :',\n ariaLabel: {\n sortDescending: 'Tri décroissant.',\n sortAscending: 'Tri croissant.',\n sortNone: 'Non trié.',\n activateNone: 'Activer pour supprimer le tri.',\n activateDescending: 'Activer pour trier par ordre décroissant.',\n activateAscending: 'Activer pour trier par ordre croissant.',\n },\n sortBy: 'Trier par',\n },\n dataFooter: {\n itemsPerPageText: 'Élements par page :',\n itemsPerPageAll: 'Tous',\n nextPage: 'Page suivante',\n prevPage: 'Page précédente',\n firstPage: 'Première page',\n lastPage: 'Dernière page',\n pageText: '{0}-{1} de {2}',\n },\n datePicker: {\n itemsSelected: '{0} sélectionné(s)',\n nextMonthAriaLabel: 'Le mois prochain',\n nextYearAriaLabel: `L'année prochaine`,\n prevMonthAriaLabel: 'Le mois précédent',\n prevYearAriaLabel: 'Année précédente',\n },\n noDataText: 'Aucune donnée disponible',\n carousel: {\n prev: 'Visuel précédent',\n next: 'Visuel suivant',\n ariaLabel: {\n delimiter: 'Diapositive {0} de {1}',\n },\n },\n calendar: {\n moreEvents: '{0} de plus',\n },\n fileInput: {\n counter: '{0} fichier(s)',\n counterSize: '{0} fichier(s) ({1} au total)',\n },\n timePicker: {\n am: 'AM',\n pm: 'PM',\n },\n pagination: {\n ariaLabel: {\n wrapper: 'Navigation de pagination',\n next: 'Page suivante',\n previous: 'Page précédente',\n page: 'Aller à la page {0}',\n currentPage: 'Page actuelle, Page {0}',\n },\n },\n rating: {\n ariaLabel: {\n icon: 'Note de {0} sur {1}',\n },\n },\n}\n"],"sourceRoot":"","file":"fr.js"}
@@ -10,6 +10,12 @@ function validateAttachTarget(val) {
10
10
  if (type === 'boolean' || type === 'string') return true;
11
11
  return val.nodeType === Node.ELEMENT_NODE;
12
12
  }
13
+
14
+ function removeActivator(activator) {
15
+ activator.forEach(node => {
16
+ node.elm && node.elm.parentNode && node.elm.parentNode.removeChild(node.elm);
17
+ });
18
+ }
13
19
  /* @vue/component */
14
20
 
15
21
 
@@ -64,23 +70,32 @@ export default mixins(Bootable).extend({
64
70
  },
65
71
 
66
72
  beforeDestroy() {
67
- // IE11 Fix
68
- try {
69
- if (this.$refs.content && this.$refs.content.parentNode) {
70
- this.$refs.content.parentNode.removeChild(this.$refs.content);
71
- }
73
+ if (this.$refs.content && this.$refs.content.parentNode) {
74
+ this.$refs.content.parentNode.removeChild(this.$refs.content);
75
+ }
76
+ },
72
77
 
73
- if (this.activatorNode) {
74
- const activator = Array.isArray(this.activatorNode) ? this.activatorNode : [this.activatorNode];
75
- activator.forEach(node => {
76
- node.elm && node.elm.parentNode && node.elm.parentNode.removeChild(node.elm);
78
+ destroyed() {
79
+ if (this.activatorNode) {
80
+ const activator = Array.isArray(this.activatorNode) ? this.activatorNode : [this.activatorNode];
81
+
82
+ if (this.$el.isConnected) {
83
+ // Component has been destroyed but the element still exists, we must be in a transition
84
+ // Wait for the transition to finish before cleaning up the detached activator
85
+ const observer = new MutationObserver(list => {
86
+ if (list.some(record => Array.from(record.removedNodes).includes(this.$el))) {
87
+ observer.disconnect();
88
+ removeActivator(activator);
89
+ }
90
+ });
91
+ observer.observe(this.$el.parentNode, {
92
+ subtree: false,
93
+ childList: true
77
94
  });
95
+ } else {
96
+ removeActivator(activator);
78
97
  }
79
- } catch (e) {
80
- console.log(e);
81
98
  }
82
- /* eslint-disable-line no-console */
83
-
84
99
  },
85
100
 
86
101
  methods: {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/mixins/detachable/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Mixins\nimport Bootable from '../bootable'\n\n// Utilities\nimport { getObjectValueByPath } from '../../util/helpers'\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport Vue, { PropOptions } from 'vue'\nimport { VNode } from 'vue/types'\n\ninterface options extends Vue {\n $el: HTMLElement\n $refs: {\n content: HTMLElement\n }\n}\n\nfunction validateAttachTarget (val: any) {\n const type = typeof val\n\n if (type === 'boolean' || type === 'string') return true\n\n return val.nodeType === Node.ELEMENT_NODE\n}\n\n/* @vue/component */\nexport default mixins<options &\n /* eslint-disable indent */\n ExtractVue<typeof Bootable>\n /* eslint-enable indent */\n>(Bootable).extend({\n name: 'detachable',\n\n props: {\n attach: {\n default: false,\n validator: validateAttachTarget,\n } as PropOptions<boolean | string | Element>,\n contentClass: {\n type: String,\n default: '',\n },\n },\n\n data: () => ({\n activatorNode: null as null | VNode | VNode[],\n hasDetached: false,\n }),\n\n watch: {\n attach () {\n this.hasDetached = false\n this.initDetach()\n },\n hasContent () {\n this.$nextTick(this.initDetach)\n },\n },\n\n beforeMount () {\n this.$nextTick(() => {\n if (this.activatorNode) {\n const activator = Array.isArray(this.activatorNode) ? this.activatorNode : [this.activatorNode]\n\n activator.forEach(node => {\n if (!node.elm) return\n if (!this.$el.parentNode) return\n\n const target = this.$el === this.$el.parentNode.firstChild\n ? this.$el\n : this.$el.nextSibling\n\n this.$el.parentNode.insertBefore(node.elm, target)\n })\n }\n })\n },\n\n mounted () {\n this.hasContent && this.initDetach()\n },\n\n deactivated () {\n this.isActive = false\n },\n\n beforeDestroy () {\n // IE11 Fix\n try {\n if (\n this.$refs.content &&\n this.$refs.content.parentNode\n ) {\n this.$refs.content.parentNode.removeChild(this.$refs.content)\n }\n\n if (this.activatorNode) {\n const activator = Array.isArray(this.activatorNode) ? this.activatorNode : [this.activatorNode]\n activator.forEach(node => {\n node.elm &&\n node.elm.parentNode &&\n node.elm.parentNode.removeChild(node.elm)\n })\n }\n } catch (e) { console.log(e) } /* eslint-disable-line no-console */\n },\n\n methods: {\n getScopeIdAttrs () {\n const scopeId = getObjectValueByPath(this.$vnode, 'context.$options._scopeId')\n\n return scopeId && {\n [scopeId]: '',\n }\n },\n initDetach () {\n if (this._isDestroyed ||\n !this.$refs.content ||\n this.hasDetached ||\n // Leave menu in place if attached\n // and dev has not changed target\n this.attach === '' || // If used as a boolean prop (<v-menu attach>)\n this.attach === true || // If bound to a boolean (<v-menu :attach=\"true\">)\n this.attach === 'attach' // If bound as boolean prop in pug (v-menu(attach))\n ) return\n\n let target\n if (this.attach === false) {\n // Default, detach to app\n target = document.querySelector('[data-app]')\n } else if (typeof this.attach === 'string') {\n // CSS selector\n target = document.querySelector(this.attach)\n } else {\n // DOM Element\n target = this.attach\n }\n\n if (!target) {\n consoleWarn(`Unable to locate target ${this.attach || '[data-app]'}`, this)\n return\n }\n\n target.appendChild(this.$refs.content)\n\n this.hasDetached = true\n },\n },\n})\n"],"sourceRoot":"","file":"index.js"}
1
+ {"version":3,"sources":["../../../src/mixins/detachable/index.ts"],"names":[],"mappings":"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","sourcesContent":["// Mixins\nimport Bootable from '../bootable'\n\n// Utilities\nimport { getObjectValueByPath } from '../../util/helpers'\nimport mixins, { ExtractVue } from '../../util/mixins'\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport Vue, { PropOptions } from 'vue'\nimport { VNode } from 'vue/types'\n\ninterface options extends Vue {\n $el: HTMLElement\n $refs: {\n content: HTMLElement\n }\n}\n\nfunction validateAttachTarget (val: any) {\n const type = typeof val\n\n if (type === 'boolean' || type === 'string') return true\n\n return val.nodeType === Node.ELEMENT_NODE\n}\n\nfunction removeActivator (activator: VNode[]) {\n activator.forEach(node => {\n node.elm &&\n node.elm.parentNode &&\n node.elm.parentNode.removeChild(node.elm)\n })\n}\n\n/* @vue/component */\nexport default mixins<options &\n /* eslint-disable indent */\n ExtractVue<typeof Bootable>\n /* eslint-enable indent */\n>(Bootable).extend({\n name: 'detachable',\n\n props: {\n attach: {\n default: false,\n validator: validateAttachTarget,\n } as PropOptions<boolean | string | Element>,\n contentClass: {\n type: String,\n default: '',\n },\n },\n\n data: () => ({\n activatorNode: null as null | VNode | VNode[],\n hasDetached: false,\n }),\n\n watch: {\n attach () {\n this.hasDetached = false\n this.initDetach()\n },\n hasContent () {\n this.$nextTick(this.initDetach)\n },\n },\n\n beforeMount () {\n this.$nextTick(() => {\n if (this.activatorNode) {\n const activator = Array.isArray(this.activatorNode) ? this.activatorNode : [this.activatorNode]\n\n activator.forEach(node => {\n if (!node.elm) return\n if (!this.$el.parentNode) return\n\n const target = this.$el === this.$el.parentNode.firstChild\n ? this.$el\n : this.$el.nextSibling\n\n this.$el.parentNode.insertBefore(node.elm, target)\n })\n }\n })\n },\n\n mounted () {\n this.hasContent && this.initDetach()\n },\n\n deactivated () {\n this.isActive = false\n },\n\n beforeDestroy () {\n if (\n this.$refs.content &&\n this.$refs.content.parentNode\n ) {\n this.$refs.content.parentNode.removeChild(this.$refs.content)\n }\n },\n\n destroyed () {\n if (this.activatorNode) {\n const activator = Array.isArray(this.activatorNode) ? this.activatorNode : [this.activatorNode]\n if (this.$el.isConnected) {\n // Component has been destroyed but the element still exists, we must be in a transition\n // Wait for the transition to finish before cleaning up the detached activator\n const observer = new MutationObserver(list => {\n if (\n list.some(record => Array.from(record.removedNodes).includes(this.$el))\n ) {\n observer.disconnect()\n removeActivator(activator)\n }\n })\n observer.observe(this.$el.parentNode!, { subtree: false, childList: true })\n } else {\n removeActivator(activator)\n }\n }\n },\n\n methods: {\n getScopeIdAttrs () {\n const scopeId = getObjectValueByPath(this.$vnode, 'context.$options._scopeId')\n\n return scopeId && {\n [scopeId]: '',\n }\n },\n initDetach () {\n if (this._isDestroyed ||\n !this.$refs.content ||\n this.hasDetached ||\n // Leave menu in place if attached\n // and dev has not changed target\n this.attach === '' || // If used as a boolean prop (<v-menu attach>)\n this.attach === true || // If bound to a boolean (<v-menu :attach=\"true\">)\n this.attach === 'attach' // If bound as boolean prop in pug (v-menu(attach))\n ) return\n\n let target\n if (this.attach === false) {\n // Default, detach to app\n target = document.querySelector('[data-app]')\n } else if (typeof this.attach === 'string') {\n // CSS selector\n target = document.querySelector(this.attach)\n } else {\n // DOM Element\n target = this.attach\n }\n\n if (!target) {\n consoleWarn(`Unable to locate target ${this.attach || '[data-app]'}`, this)\n return\n }\n\n target.appendChild(this.$refs.content)\n\n this.hasDetached = true\n },\n },\n})\n"],"sourceRoot":"","file":"index.js"}
@@ -7,20 +7,27 @@ import Vue from 'vue';
7
7
  export default function intersectable(options) {
8
8
  return Vue.extend({
9
9
  name: 'intersectable',
10
+ data: () => ({
11
+ isIntersecting: false
12
+ }),
10
13
 
11
14
  mounted() {
12
15
  Intersect.inserted(this.$el, {
13
16
  name: 'intersect',
14
17
  value: this.onObserve
15
- });
18
+ }, this.$vnode);
16
19
  },
17
20
 
18
21
  destroyed() {
19
- Intersect.unbind(this.$el);
22
+ Intersect.unbind(this.$el, {
23
+ name: 'intersect',
24
+ value: this.onObserve
25
+ }, this.$vnode);
20
26
  },
21
27
 
22
28
  methods: {
23
29
  onObserve(entries, observer, isIntersecting) {
30
+ this.isIntersecting = isIntersecting;
24
31
  if (!isIntersecting) return;
25
32
 
26
33
  for (let i = 0, length = options.onVisible.length; i < length; i++) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/mixins/intersectable/index.ts"],"names":[],"mappings":"AAAA;AACA,OAAO,SAAP,MAAsB,4BAAtB,C,CAEA;;AACA,SAAS,WAAT,QAA4B,oBAA5B,C,CAEA;;AACA,OAAO,GAAP,MAAgB,KAAhB;AAEA,eAAc,SAAU,aAAV,CAAyB,OAAzB,EAAyD;AACrE,SAAO,GAAG,CAAC,MAAJ,CAAW;AAChB,IAAA,IAAI,EAAE,eADU;;AAGhB,IAAA,OAAO,GAAA;AACL,MAAA,SAAS,CAAC,QAAV,CAAmB,KAAK,GAAxB,EAA4C;AAC1C,QAAA,IAAI,EAAE,WADoC;AAE1C,QAAA,KAAK,EAAE,KAAK;AAF8B,OAA5C;AAID,KARe;;AAUhB,IAAA,SAAS,GAAA;AACP,MAAA,SAAS,CAAC,MAAV,CAAiB,KAAK,GAAtB;AACD,KAZe;;AAchB,IAAA,OAAO,EAAE;AACP,MAAA,SAAS,CAAE,OAAF,EAAwC,QAAxC,EAAwE,cAAxE,EAA+F;AACtG,YAAI,CAAC,cAAL,EAAqB;;AAErB,aAAK,IAAI,CAAC,GAAG,CAAR,EAAW,MAAM,GAAG,OAAO,CAAC,SAAR,CAAkB,MAA3C,EAAmD,CAAC,GAAG,MAAvD,EAA+D,CAAC,EAAhE,EAAoE;AAClE,gBAAM,QAAQ,GAAI,KAAa,OAAO,CAAC,SAAR,CAAkB,CAAlB,CAAb,CAAlB;;AAEA,cAAI,OAAO,QAAP,KAAoB,UAAxB,EAAoC;AAClC,YAAA,QAAQ;AACR;AACD;;AAED,UAAA,WAAW,CAAC,OAAO,CAAC,SAAR,CAAkB,CAAlB,IAAuB,wFAAxB,CAAX;AACD;AACF;;AAdM;AAdO,GAAX,CAAP;AA+BD","sourcesContent":["// Directives\nimport Intersect from '../../directives/intersect'\n\n// Utilities\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport Vue from 'vue'\n\nexport default function intersectable (options: { onVisible: string[] }) {\n return Vue.extend({\n name: 'intersectable',\n\n mounted () {\n Intersect.inserted(this.$el as HTMLElement, {\n name: 'intersect',\n value: this.onObserve,\n })\n },\n\n destroyed () {\n Intersect.unbind(this.$el as HTMLElement)\n },\n\n methods: {\n onObserve (entries: IntersectionObserverEntry[], observer: IntersectionObserver, isIntersecting: boolean) {\n if (!isIntersecting) return\n\n for (let i = 0, length = options.onVisible.length; i < length; i++) {\n const callback = (this as any)[options.onVisible[i]]\n\n if (typeof callback === 'function') {\n callback()\n continue\n }\n\n consoleWarn(options.onVisible[i] + ' method is not available on the instance but referenced in intersectable mixin options')\n }\n },\n },\n })\n}\n"],"sourceRoot":"","file":"index.js"}
1
+ {"version":3,"sources":["../../../src/mixins/intersectable/index.ts"],"names":[],"mappings":"AAAA;AACA,OAAO,SAAP,MAAsB,4BAAtB,C,CAEA;;AACA,SAAS,WAAT,QAA4B,oBAA5B,C,CAEA;;AACA,OAAO,GAAP,MAAgB,KAAhB;AAEA,eAAc,SAAU,aAAV,CAAyB,OAAzB,EAAyD;AACrE,SAAO,GAAG,CAAC,MAAJ,CAAW;AAChB,IAAA,IAAI,EAAE,eADU;AAGhB,IAAA,IAAI,EAAE,OAAO;AACX,MAAA,cAAc,EAAE;AADL,KAAP,CAHU;;AAOhB,IAAA,OAAO,GAAA;AACL,MAAA,SAAS,CAAC,QAAV,CAAmB,KAAK,GAAxB,EAA4C;AAC1C,QAAA,IAAI,EAAE,WADoC;AAE1C,QAAA,KAAK,EAAE,KAAK;AAF8B,OAA5C,EAGG,KAAK,MAHR;AAID,KAZe;;AAchB,IAAA,SAAS,GAAA;AACP,MAAA,SAAS,CAAC,MAAV,CAAiB,KAAK,GAAtB,EAA0C;AACxC,QAAA,IAAI,EAAE,WADkC;AAExC,QAAA,KAAK,EAAE,KAAK;AAF4B,OAA1C,EAGG,KAAK,MAHR;AAID,KAnBe;;AAqBhB,IAAA,OAAO,EAAE;AACP,MAAA,SAAS,CAAE,OAAF,EAAwC,QAAxC,EAAwE,cAAxE,EAA+F;AACtG,aAAK,cAAL,GAAsB,cAAtB;AAEA,YAAI,CAAC,cAAL,EAAqB;;AAErB,aAAK,IAAI,CAAC,GAAG,CAAR,EAAW,MAAM,GAAG,OAAO,CAAC,SAAR,CAAkB,MAA3C,EAAmD,CAAC,GAAG,MAAvD,EAA+D,CAAC,EAAhE,EAAoE;AAClE,gBAAM,QAAQ,GAAI,KAAa,OAAO,CAAC,SAAR,CAAkB,CAAlB,CAAb,CAAlB;;AAEA,cAAI,OAAO,QAAP,KAAoB,UAAxB,EAAoC;AAClC,YAAA,QAAQ;AACR;AACD;;AAED,UAAA,WAAW,CAAC,OAAO,CAAC,SAAR,CAAkB,CAAlB,IAAuB,wFAAxB,CAAX;AACD;AACF;;AAhBM;AArBO,GAAX,CAAP;AAwCD","sourcesContent":["// Directives\nimport Intersect from '../../directives/intersect'\n\n// Utilities\nimport { consoleWarn } from '../../util/console'\n\n// Types\nimport Vue from 'vue'\n\nexport default function intersectable (options: { onVisible: string[] }) {\n return Vue.extend({\n name: 'intersectable',\n\n data: () => ({\n isIntersecting: false,\n }),\n\n mounted () {\n Intersect.inserted(this.$el as HTMLElement, {\n name: 'intersect',\n value: this.onObserve,\n }, this.$vnode)\n },\n\n destroyed () {\n Intersect.unbind(this.$el as HTMLElement, {\n name: 'intersect',\n value: this.onObserve,\n }, this.$vnode)\n },\n\n methods: {\n onObserve (entries: IntersectionObserverEntry[], observer: IntersectionObserver, isIntersecting: boolean) {\n this.isIntersecting = isIntersecting\n\n if (!isIntersecting) return\n\n for (let i = 0, length = options.onVisible.length; i < length; i++) {\n const callback = (this as any)[options.onVisible[i]]\n\n if (typeof callback === 'function') {\n callback()\n continue\n }\n\n consoleWarn(options.onVisible[i] + ' method is not available on the instance but referenced in intersectable mixin options')\n }\n },\n },\n })\n}\n"],"sourceRoot":"","file":"index.js"}