UNPKG

@wizdm/animate

Version:

On Scroll Animation for Angular

23 lines 3.91 kB
import { InjectionToken } from '@angular/core'; /** Animate config token */ export const ANIMATE_CONFIG = new InjectionToken('wizdm.animate.config'); /** Builds the config object checking whenever the Browser support the IntersectionObserver API */ export function animateConfigFactory(value) { // Starts with the given mode defaulting to auto detection let triggerMode = value && value.triggerMode || 'auto'; if (triggerMode === 'auto' || triggerMode === 'intersectionObserver') { // Checks for Browser IntersectionObserver support const ioSupported = 'IntersectionObserver' in window && 'IntersectionObserverEntry' in window && 'intersectionRatio' in window.IntersectionObserverEntry.prototype; // Applies the best mode triggerMode = ioSupported ? 'intersectionObserver' : 'scrolling'; } // Ensure to use scrolling otherwise else { triggerMode = 'scrolling'; } // Returns the config object return Object.assign(Object.assign({}, value), { triggerMode }); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0ZS5jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9hbmltYXRlL3NyYy9saWIvYW5pbWF0ZS5jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQVkvQywyQkFBMkI7QUFDM0IsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLElBQUksY0FBYyxDQUFnQixzQkFBc0IsQ0FBQyxDQUFDO0FBRXhGLGtHQUFrRztBQUNsRyxNQUFNLFVBQVUsb0JBQW9CLENBQUMsS0FBcUI7SUFFeEQsMERBQTBEO0lBQzFELElBQUksV0FBVyxHQUFHLEtBQUssSUFBSSxLQUFLLENBQUMsV0FBVyxJQUFJLE1BQU0sQ0FBQztJQUV2RCxJQUFHLFdBQVcsS0FBSyxNQUFNLElBQUksV0FBVyxLQUFLLHNCQUFzQixFQUFFO1FBRW5FLG9EQUFvRDtRQUNwRCxNQUFNLFdBQVcsR0FBRyxzQkFBc0IsSUFBSSxNQUFNO1lBQ2hDLDJCQUEyQixJQUFJLE1BQU07WUFDckMsbUJBQW1CLElBQUksTUFBTSxDQUFDLHlCQUF5QixDQUFDLFNBQVMsQ0FBQztRQUV0Rix3QkFBd0I7UUFDeEIsV0FBVyxHQUFHLFdBQVcsQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztLQUNsRTtJQUNELG9DQUFvQztTQUMvQjtRQUFFLFdBQVcsR0FBRyxXQUFXLENBQUM7S0FBRTtJQUVuQyw2QkFBNkI7SUFDN0IsdUNBQVksS0FBSyxLQUFFLFdBQVcsSUFBRztBQUNuQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqIEdsb2JhbCBjb25maWd1cmF0aW9uIGZvciBBbmltYXRlICovXG5leHBvcnQgaW50ZXJmYWNlIEFuaW1hdGVDb25maWcge1xuXG4gIHRyaWdnZXJNb2RlOiAnc2Nyb2xsaW5nJ3wnaW50ZXJzZWN0aW9uT2JzZXJ2ZXInfCdhdXRvJztcbiAgXG4gIG9mZnNldFRvcD86IG51bWJlcjtcbiAgb2Zmc2V0UmlnaHQ/OiBudW1iZXI7XG4gIG9mZnNldEJvdHRvbT86IG51bWJlcjtcbiAgb2Zmc2V0TGVmdD86IG51bWJlcjtcbn1cbi8qKiBBbmltYXRlIGNvbmZpZyB0b2tlbiAqL1xuZXhwb3J0IGNvbnN0IEFOSU1BVEVfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPEFuaW1hdGVDb25maWc+KCd3aXpkbS5hbmltYXRlLmNvbmZpZycpO1xuXG4vKiogQnVpbGRzIHRoZSBjb25maWcgb2JqZWN0IGNoZWNraW5nIHdoZW5ldmVyIHRoZSBCcm93c2VyIHN1cHBvcnQgdGhlIEludGVyc2VjdGlvbk9ic2VydmVyIEFQSSAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFuaW1hdGVDb25maWdGYWN0b3J5KHZhbHVlPzogQW5pbWF0ZUNvbmZpZyk6IEFuaW1hdGVDb25maWcge1xuXG4gIC8vIFN0YXJ0cyB3aXRoIHRoZSBnaXZlbiBtb2RlIGRlZmF1bHRpbmcgdG8gYXV0byBkZXRlY3Rpb25cbiAgbGV0IHRyaWdnZXJNb2RlID0gdmFsdWUgJiYgdmFsdWUudHJpZ2dlck1vZGUgfHwgJ2F1dG8nO1xuXG4gIGlmKHRyaWdnZXJNb2RlID09PSAnYXV0bycgfHwgdHJpZ2dlck1vZGUgPT09ICdpbnRlcnNlY3Rpb25PYnNlcnZlcicpIHtcblxuICAgIC8vIENoZWNrcyBmb3IgQnJvd3NlciBJbnRlcnNlY3Rpb25PYnNlcnZlciBzdXBwb3J0ICBcbiAgICBjb25zdCBpb1N1cHBvcnRlZCA9ICdJbnRlcnNlY3Rpb25PYnNlcnZlcicgaW4gd2luZG93ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAnSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeScgaW4gd2luZG93ICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAnaW50ZXJzZWN0aW9uUmF0aW8nIGluIHdpbmRvdy5JbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5LnByb3RvdHlwZTtcblxuICAgIC8vIEFwcGxpZXMgdGhlIGJlc3QgbW9kZVxuICAgIHRyaWdnZXJNb2RlID0gaW9TdXBwb3J0ZWQgPyAnaW50ZXJzZWN0aW9uT2JzZXJ2ZXInIDogJ3Njcm9sbGluZyc7XG4gIH1cbiAgLy8gRW5zdXJlIHRvIHVzZSBzY3JvbGxpbmcgb3RoZXJ3aXNlXG4gIGVsc2UgeyB0cmlnZ2VyTW9kZSA9ICdzY3JvbGxpbmcnOyB9XG5cbiAgLy8gUmV0dXJucyB0aGUgY29uZmlnIG9iamVjdCBcbiAgcmV0dXJuIHsgLi4udmFsdWUsIHRyaWdnZXJNb2RlIH07XG59Il19