import { EventEmitter } from '../event'; import { IIntersectionObserverExtOption, IIntersectionChangeData } from './types'; /** * IntersectionEvent Types * @event IntersectionObserver#INTERSECTION_EVENTS * @memberof IntersectionObserver * @property {String} CHANGE - 변경 시점 */ /** * @export * @readonly * @enum {INTERSECTION_EVENTS} */ export declare const INTERSECTION_EVENTS: { CHANGE: string; }; /** * @typedef {String} INTERSECTION_DIRECTIONS * @alias INTERSECTION_DIRECTIONS * @memberof IntersectionObserver * @property {String} UP * @property {String} DOWN * @property {String} UNKNOWN */ /** * @export * @readonly * @enum {INTERSECTION_DIRECTIONS} */ export declare enum INTERSECTION_DIRECTIONS { UP = "INTERSECTION_OBSERVER-DIRECTIONS-UP", DOWN = "INTERSECTION_OBSERVER-DIRECTIONS-DOWN", UNKNOWN = "INTERSECTION_OBSERVER-DIRECTIONS-UNKNOWN" } export declare class ExtIntersectionObserverEntry { private options; private target; private visibleRatio; constructor(initParams: Partial); private checkForIntersections; private computeTargetAndRootIntersection; private computeRectIntersection; private parseRootMargin; private rootIsInDom; private rootContainsTarget; private containsDeep; private getParentNode; private getRootRect; private getBoundingClientRect; private getEmptyRect; private expandRectByRootMargin; getChangeData(): IIntersectionChangeData; } /** * element 가 viewport 영역에 노출되는지 변화를 감지 * @export * @class IntersectionObserver * @alias observer/IntersectionObserver * @extends {EventEmitter} * @see https://developer.mozilla.org/ko/docs/Web/API/IntersectionObserver/IntersectionObserver * @see https://caniuse.com/#search=IntersectionObserver * @throws {Error} target 옵션을 지정하지 않은 경우 - throw new Error('IntersectionObserver target 설정은 필수 값 입니다.'); * @param {Partial} initParams * @param {Element} initParams.target * @param {Number} [initParams.visibleRatio=0] * @param {Number} [initParams.throttle=300] * @param {Function|null} [initParams.callback={@link noop}] callback function * @param {IntersectionObserverInit} [initParams.options={}] * @example .. TODO */ export declare class IntersectionObserver extends EventEmitter { private observer; private options; private target; private visibleRatio; private prevRatio; constructor(initParams: Partial); /** * element 가 이미 노출된 경우 등, IntersectionObserver 등록으로 판단이 어려울 경우
* IntersectionObserver.getIntersectionEntry 를 이용하여 target 의 노출 여부를 판단 * @static * @param {Partial} initParams * @param {Element} initParams.target * @param {Number} [initParams.visibleRatio=0] * @param {Number} [initParams.throttle=300] * @param {Function|null} [initParams.callback={@link noop}] callback function * @param {IntersectionObserverInit} [initParams.options={}] * @returns {IIntersectionChangeData} * @memberof IntersectionObserver * @example .. TODO */ static getIntersectionEntry(initParams: Partial): IIntersectionChangeData; private onIntersectionCallback; /** * 변화 감지 이벤트 리스너 * @private * @param {IntersectionObserverEntry[]} entries * [MDN IntersectionObserverEntry]{@link https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverEntry} * @memberof IntersectionObserver * @fires IntersectionObserver#INTERSECTION_EVENTS */ private onIntersectionListener; /** * 이벤트 감지 설정 * @returns {IntersectionObserver} * @memberof IntersectionObserver */ attach(): IntersectionObserver; /** * 이벤트 감지 해제 * @returns {IntersectionObserver} * @memberof IntersectionObserver */ detach(): IntersectionObserver; /** * destroy * @returns {IntersectionObserver} * @memberof IntersectionObserver */ destroy(): IntersectionObserver; }