@v4fire/client
Version:
V4Fire client core library
58 lines (45 loc) • 1.39 kB
text/typescript
/*!
* 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!());
}