{"version":3,"sources":["webpack:///../../../src/directives/intersect/index.ts"],"names":["inserted","modifiers","binding","value","handler","options","observer","IntersectionObserver","entries","el","isIntersecting","Boolean","entry","unbind","init","observe","Intersect"],"mappings":"4IAgBA,SAASA,EAAT,KACE,IAAMC,EAAYC,EAAA,WAAlB,GACMC,EAAQD,EAAd,MAFgE,EAGnC,+BAEzB,CAAEE,QAAF,EAAkBC,QAAS,IAFzB,EAH0D,EAG1D,QAAWA,EAH+C,EAG/CA,QAGXC,EAAW,IAAIC,sBAAqB,WAGtC,IAFFC,EAEE,uDAHsC,KAGtC,uCAEF,GAAKC,EAAL,UAIA,GACEL,KACGH,EAAD,OACAQ,EAAA,SAHJ,MAKE,CACA,IAAMC,EAAiBC,QAAQH,EAAA,MAAa,SAAAI,GAAK,OAAIA,EAArD,mBAEAR,EAAQI,EAASF,EAAjB,GAKEG,EAAA,eAAoBR,EAAxB,KAAwCY,EAAxC,GAEMJ,EAAA,eAAD,KAxBP,GA2BAA,EAAA,SAAc,CAAEK,MAAF,EAAeR,YAE7BA,EAAAS,QAAA,GAGF,SAASF,EAAT,GAEOJ,EAAL,WAEAA,EAAA,4BAAAA,UACOA,EAAP,UAGK,IAAMO,EAAY,CACvBhB,WACAa,UAGF","file":"js/chunk-2d0e4a3e.51484c5d.js","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 {\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 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 // 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 ) {\n const isIntersecting = Boolean(entries.find(entry => entry.isIntersecting))\n\n handler(entries, observer, isIntersecting)\n }\n\n // If has already been initted and\n // has the once modifier, unbind\n if (el._observe.init && modifiers.once) unbind(el)\n // Otherwise, mark the observer as initted\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":""}