{"version":3,"sources":["webpack:///../../../src/mixins/measurable/index.ts","webpack:///../../../src/directives/intersect/index.ts"],"names":["name","props","height","Number","maxHeight","maxWidth","minHeight","minWidth","width","String","computed","measurableStyles","styles","this","inserted","modifiers","binding","value","handler","options","observer","IntersectionObserver","entries","el","isIntersecting","Boolean","entry","unbind","init","observe","Intersect"],"mappings":"yKAQe,qBAAW,CACxBA,KADwB,aAGxBC,MAAO,CACLC,OAAQ,CAACC,OADJ,QAELC,UAAW,CAACD,OAFP,QAGLE,SAAU,CAACF,OAHN,QAILG,UAAW,CAACH,OAJP,QAKLI,SAAU,CAACJ,OALN,QAMLK,MAAO,CAACL,OAAQM,SAGlBC,SAAU,CACRC,iBADQ,WAEN,IAAMC,EAAN,GAEMV,EAAS,eAAcW,KAA7B,QACMP,EAAY,eAAcO,KAAhC,WACMN,EAAW,eAAcM,KAA/B,UACMT,EAAY,eAAcS,KAAhC,WACMR,EAAW,eAAcQ,KAA/B,UACML,EAAQ,eAAcK,KAA5B,OASA,OAPA,IAAYD,EAAA,UACZ,IAAeA,EAAA,aACf,IAAcA,EAAA,YACd,IAAeA,EAAA,aACf,IAAcA,EAAA,YACd,IAAWA,EAAA,SAEX,O,8DCtBN,SAASE,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-47fdb45f.0cdaef21.js","sourcesContent":["// Helpers\nimport { convertToUnit } from '../../util/helpers'\n\n// Types\nimport Vue, { PropType } from 'vue'\n\nexport type NumberOrNumberString = PropType\n\nexport default Vue.extend({\n name: 'measurable',\n\n props: {\n height: [Number, String] as NumberOrNumberString,\n maxHeight: [Number, String] as NumberOrNumberString,\n maxWidth: [Number, String] as NumberOrNumberString,\n minHeight: [Number, String] as NumberOrNumberString,\n minWidth: [Number, String] as NumberOrNumberString,\n width: [Number, String] as NumberOrNumberString,\n },\n\n computed: {\n measurableStyles (): object {\n const styles: Record = {}\n\n const height = convertToUnit(this.height)\n const minHeight = convertToUnit(this.minHeight)\n const minWidth = convertToUnit(this.minWidth)\n const maxHeight = convertToUnit(this.maxHeight)\n const maxWidth = convertToUnit(this.maxWidth)\n const width = convertToUnit(this.width)\n\n if (height) styles.height = height\n if (minHeight) styles.minHeight = minHeight\n if (minWidth) styles.minWidth = minWidth\n if (maxHeight) styles.maxHeight = maxHeight\n if (maxWidth) styles.maxWidth = maxWidth\n if (width) styles.width = width\n\n return styles\n },\n },\n})\n","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":""}