UNPKG

@v4fire/client

Version:

V4Fire client core library

58 lines (45 loc) 1.39 kB
/*! * V4Fire Client Core * https://github.com/V4Fire/Client * * Released under the MIT license * https://github.com/V4Fire/Client/blob/master/LICENSE */ /** * [[include:core/dom/in-view/README.md]] * @packageDocumentation */ import IntersectionObserverStrategy from 'core/dom/in-view/intersection'; import InViewAdapter from 'core/dom/in-view/adapter'; import { getAdaptee } from 'core/dom/in-view/helpers'; import MutationObserverStrategy from 'core/dom/in-view/mutation'; import type { InViewAdapteeType } from 'core/dom/in-view/interface'; export { default as InViewAdapter } from 'core/dom/in-view/adapter'; export * from 'core/dom/in-view/interface'; export * from 'core/dom/in-view/helpers'; export const Adaptee = getAdaptee([ IntersectionObserverStrategy, MutationObserverStrategy ]); const strategyByType = { mutation: MutationObserverStrategy, observer: IntersectionObserverStrategy }; /** * Creates a new in-view instance * @param [adaptee] */ export function inViewFactory(adaptee?: InViewAdapteeType): InViewAdapter { const inView = new InViewAdapter(), adapteeInstance = adaptee != null ? new strategyByType[adaptee]() : new Adaptee!(); if (!inView.hasAdaptee) { inView.setInstance(adapteeInstance); } return inView; } export const InView: InViewAdapter = inViewFactory(); if (!InView.hasAdaptee) { InView.setInstance(new Adaptee!()); }