{"version":3,"sources":["node_modules/ng-in-viewport/fesm2020/ng-in-viewport.mjs"],"sourcesContent":["import { isPlatformBrowser as isPlatformBrowser$1, CommonModule } from '@angular/common';\nimport * as i0 from '@angular/core';\nimport { Injectable, EventEmitter, PLATFORM_ID, Directive, Inject, Input, Output, NgModule } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { filter, takeUntil } from 'rxjs/operators';\n\n/**\r\n * @license\r\n * Copyright Piotr Stępniewski All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://raw.githubusercontent.com/k3nsei/ng-in-viewport/stable/LICENSE\r\n */\nvar InViewportConfigDirection = /*#__PURE__*/function (InViewportConfigDirection) {\n InViewportConfigDirection[\"BOTH\"] = \"both\";\n InViewportConfigDirection[\"VERTICAL\"] = \"vertical\";\n InViewportConfigDirection[\"HORIZONTAL\"] = \"horizontal\";\n return InViewportConfigDirection;\n}(InViewportConfigDirection || {});\nconst isPlatformBrowser = new Function(`\n try {\n return typeof window !== 'undefined' && this === window;\n } catch(e) {\n return false;\n }\n`);\nconst toBase64 = !isPlatformBrowser() ? new Function('input', `return Buffer.from(input).toString('base64')`) : new Function('input', 'return btoa(input)');\nclass InViewportConfig {\n constructor(options) {\n this._rootMargin = '0px 0px 0px 0px';\n this._threshold = [...InViewportConfig.DEFAULT_THRESHOLD];\n this._partial = true;\n this._direction = InViewportConfigDirection.BOTH;\n if (Object.prototype.toString.call(options) === '[object Object]') {\n ['root', 'rootMargin', 'threshold', 'partial', 'direction', 'checkFn'].forEach(prop => {\n if (options?.hasOwnProperty(prop)) {\n // @ts-ignore setters do value validation\n this[prop] = options[prop];\n }\n });\n }\n this._hash = InViewportConfig.hash({\n rootMargin: this.rootMargin,\n threshold: this.threshold,\n partial: this.partial,\n direction: this.direction,\n checkFn: String(this.checkFn)\n });\n }\n static get DEFAULT_THRESHOLD() {\n return [0, 1];\n }\n static get STRINGIFY_DELIMITER() {\n return '|';\n }\n static stringify(input) {\n if (Array.isArray(input)) {\n const stringifiedArr = [];\n for (let i = 0; i < input.length; i++) {\n stringifiedArr.push(InViewportConfig.stringify(input[i]));\n }\n return `[${stringifiedArr.join(',')}]`;\n } else if (typeof input === 'object' && input !== null) {\n const acc = [];\n const sortedKeys = Object.keys(input).sort();\n for (const k of sortedKeys) {\n const v = InViewportConfig.stringify(input[k]);\n acc.push(`${k}:${v}`);\n }\n return acc.join(InViewportConfig.STRINGIFY_DELIMITER);\n }\n return String(input);\n }\n static hash(input) {\n return toBase64(InViewportConfig.stringify(input));\n }\n get root() {\n return this._root;\n }\n set root(value) {\n this._root = value && value.nodeType === 1 ? value : undefined;\n }\n get rootMargin() {\n return this._rootMargin;\n }\n set rootMargin(value) {\n if (!value || typeof value !== 'string') {\n this._rootMargin = '0px 0px 0px 0px';\n } else {\n const marginString = value || '0px';\n const margins = marginString.split(new RegExp('\\\\s+')).map(margin => {\n const parts = /^(-?\\d*\\.?\\d+)(px|%)$/.exec(margin);\n if (!parts) {\n throw new TypeError('rootMargin must be specified in pixels or percent');\n }\n return `${parts[1]}${parts[2]}`;\n });\n margins[1] = margins[1] || margins[0];\n margins[2] = margins[2] || margins[0];\n margins[3] = margins[3] || margins[1];\n this._rootMargin = margins.join(' ');\n }\n }\n get threshold() {\n return this._threshold;\n }\n set threshold(value) {\n let threshold = [];\n const isValidThreshold = val => typeof val === 'number' && val >= 0 && val <= 1;\n if (isValidThreshold(value)) {\n threshold = [value];\n } else if (Array.isArray(value) && value.length) {\n threshold = value.filter(val => isValidThreshold(val));\n }\n if (threshold.length === 0) {\n threshold = [...InViewportConfig.DEFAULT_THRESHOLD];\n }\n this._threshold = threshold;\n }\n get partial() {\n return this._partial;\n }\n set partial(value) {\n this._partial = !!value;\n }\n get direction() {\n return this._direction;\n }\n set direction(value) {\n const isValidValue = val => {\n return [InViewportConfigDirection.BOTH, InViewportConfigDirection.HORIZONTAL, InViewportConfigDirection.VERTICAL].indexOf(val) >= 0;\n };\n this._direction = isValidValue(value) ? value : InViewportConfigDirection.BOTH;\n }\n get hash() {\n return this._hash;\n }\n get checkFn() {\n return this._checkFn;\n }\n set checkFn(value) {\n this._checkFn = value;\n }\n}\n\n/**\r\n * @license\r\n * Copyright Piotr Stępniewski All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://raw.githubusercontent.com/k3nsei/ng-in-viewport/stable/LICENSE\r\n */\nlet InViewportService = /*#__PURE__*/(() => {\n class InViewportService {\n constructor(ngZone) {\n this.ngZone = ngZone;\n this.trigger$ = new Subject();\n this.registry = [];\n }\n emitTrigger(entries) {\n if (Array.isArray(entries) && entries.length) {\n entries.forEach(entry => this.trigger$.next(entry));\n }\n }\n getRootElement(element) {\n return element && element.nodeType === Node.ELEMENT_NODE ? element : undefined;\n }\n findEntry(root, configHash) {\n return this.registry.find(entry => entry.root === this.getRootElement(root) && entry.configHash === configHash);\n }\n register(target, config) {\n this.ngZone.runOutsideAngular(() => {\n const foundedEntry = this.findEntry(config.root, config.hash);\n if (foundedEntry && !foundedEntry.targets.has(target)) {\n foundedEntry.targets.add(target);\n foundedEntry.observer.observe(target);\n } else {\n const root = this.getRootElement(config.root);\n const options = {\n root: root,\n rootMargin: config.rootMargin,\n threshold: config.threshold\n };\n const entry = {\n root: root,\n configHash: config.hash,\n targets: new Set([target]),\n observer: new IntersectionObserver(entries => this.ngZone.run(() => this.emitTrigger(entries)), options)\n };\n entry.observer.observe(target);\n this.registry = [...this.registry, entry];\n }\n });\n }\n unregister(target, config) {\n this.ngZone.runOutsideAngular(() => {\n const foundedEntry = this.findEntry(config.root, config.hash);\n if (foundedEntry) {\n const {\n observer,\n targets\n } = foundedEntry;\n if (targets.has(target)) {\n observer.unobserve(target);\n targets.delete(target);\n }\n if (targets.size === 0) {\n observer.disconnect();\n this.registry = this.registry.filter(entry => entry !== foundedEntry);\n }\n }\n });\n }\n }\n InViewportService.ɵfac = function InViewportService_Factory(t) {\n return new (t || InViewportService)(i0.ɵɵinject(i0.NgZone));\n };\n InViewportService.ɵprov = /* @__PURE__ */i0.ɵɵdefineInjectable({\n token: InViewportService,\n factory: InViewportService.ɵfac,\n providedIn: 'root'\n });\n return InViewportService;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\r\n * @license\r\n * Copyright Piotr Stępniewski All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://raw.githubusercontent.com/k3nsei/ng-in-viewport/stable/LICENSE\r\n */\nconst InViewportMetadata = Symbol('InViewportMetadata');\nlet InViewportDirective = /*#__PURE__*/(() => {\n class InViewportDirective {\n constructor(platformId, elementRef, inViewport) {\n this.platformId = platformId;\n this.elementRef = elementRef;\n this.inViewport = inViewport;\n this.inViewportAction = new EventEmitter();\n this.config = new InViewportConfig();\n this.destroyed$ = new Subject();\n }\n set options(value) {\n this.config = new InViewportConfig(value);\n }\n ngAfterViewInit() {\n if (isPlatformBrowser$1(this.platformId)) {\n this.inViewport.register(this.elementRef.nativeElement, this.config);\n this.inViewport.trigger$.pipe(filter(entry => entry && entry.target === this.elementRef.nativeElement), takeUntil(this.destroyed$)).subscribe(entry => this.emitAction(entry, false));\n } else {\n this.emitAction(undefined, true);\n }\n }\n ngOnDestroy() {\n if (isPlatformBrowser$1(this.platformId)) {\n this.inViewport.unregister(this.elementRef.nativeElement, this.config);\n }\n if (this.destroyed$ && !this.destroyed$.closed) {\n this.destroyed$.next();\n this.destroyed$.complete();\n }\n }\n check(entry, force) {\n const isVisible = () => {\n const {\n isIntersecting = true,\n intersectionRatio = 1\n } = entry ?? {};\n const partiallyVisible = isIntersecting || intersectionRatio > 0;\n const completelyVisible = intersectionRatio >= 1;\n return this.config.partial ? partiallyVisible : completelyVisible;\n };\n const visible = force || !entry || isVisible();\n return {\n [InViewportMetadata]: {\n entry\n },\n target: this.elementRef.nativeElement,\n visible\n };\n }\n emitAction(entry, force) {\n const event = this.config.checkFn ? this.config.checkFn(entry, {\n force,\n config: this.config\n }) : this.check(entry, force);\n this.inViewportAction.emit(event);\n }\n }\n InViewportDirective.ɵfac = function InViewportDirective_Factory(t) {\n return new (t || InViewportDirective)(i0.ɵɵdirectiveInject(PLATFORM_ID), i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(InViewportService));\n };\n InViewportDirective.ɵdir = /* @__PURE__ */i0.ɵɵdefineDirective({\n type: InViewportDirective,\n selectors: [[\"\", \"inViewport\", \"\"]],\n inputs: {\n options: [i0.ɵɵInputFlags.None, \"inViewportOptions\", \"options\"]\n },\n outputs: {\n inViewportAction: \"inViewportAction\"\n }\n });\n return InViewportDirective;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\r\n * @license\r\n * Copyright Piotr Stępniewski All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://raw.githubusercontent.com/k3nsei/ng-in-viewport/stable/LICENSE\r\n */\nlet InViewportModule = /*#__PURE__*/(() => {\n class InViewportModule {}\n InViewportModule.ɵfac = function InViewportModule_Factory(t) {\n return new (t || InViewportModule)();\n };\n InViewportModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: InViewportModule\n });\n InViewportModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [[CommonModule]]\n });\n return InViewportModule;\n})();\n(() => {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && void 0;\n})();\n\n/**\r\n * @license\r\n * Copyright Piotr Stępniewski All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://raw.githubusercontent.com/k3nsei/ng-in-viewport/stable/LICENSE\r\n */\n\n/**\r\n * Generated bundle index. Do not edit.\r\n */\n\nexport { InViewportConfig, InViewportConfigDirection, InViewportDirective, InViewportMetadata, InViewportModule, InViewportService };\n"],"mappings":"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","names":["InViewportConfigDirection","isPlatformBrowser","toBase64","InViewportConfig","_InViewportConfig","options","prop","input","stringifiedArr","i","acc","sortedKeys","k","v","value","margins","margin","parts","threshold","isValidThreshold","val","isValidValue","InViewportService","ngZone","Subject","entries","entry","element","root","configHash","target","config","foundedEntry","observer","targets","ɵɵinject","NgZone","ɵɵdefineInjectable","InViewportMetadata","InViewportDirective","platformId","elementRef","inViewport","EventEmitter","filter","takeUntil","force","visible","isIntersecting","intersectionRatio","partiallyVisible","completelyVisible","event","ɵɵdirectiveInject","PLATFORM_ID","ElementRef","ɵɵdefineDirective","InputFlags","InViewportModule","ɵɵdefineNgModule","ɵɵdefineInjector","CommonModule"],"x_google_ignoreList":[0]}