{"version":3,"file":"index.esm.mjs","sources":["../src/state/state.ts","../src/state/callback.ts","../src/utils/class.enum.ts","../src/common/dom.ts","../src/logger/logger.ts","../src/utils/utils.ts","../src/common/scroll.ts","../src/common/state.ts","../src/common/instance.ts","../src/events/wheel.event.ts","../src/events/keyboard.event.ts","../src/events/touch.event.ts","../src/events/resize.event.ts","../src/events/events.ts","../src/emitter/emitter.ts","../src/emitter/events.ts","../src/shared.ts","../node_modules/style-inject/dist/style-inject.es.js","../src/usePageScroller.ts"],"sourcesContent":["import type { TScrollingMode, ISection } from '@/types'\n\nexport class State {\n\tcontainer: HTMLElement | null = null\n\tsections: ISection[] | null = null\n\n\tactiveSlide: number = 0\n\tactiveSection: number = 0\n\n\tscrollMode: TScrollingMode = 'automatic'\n\tscrollingSpeed: number = 700\n\ttransitionTimingFunction: string = 'ease'\n\n\tisDebug: boolean = false\n\tisScrolling: boolean = false\n\tisResizing: boolean = false\n\tisInitialized: boolean = false\n\n\tisWheelEnabled: boolean = true\n\tisKeyboardEnabled: boolean = true\n\tisTouchEnabled: boolean = true\n\n\tslidesIdentifyAttribute: string = 'page-scroller-slide'\n\tisAllowToScrollThroughSlides: boolean = true\n}\n\nexport const state = new State()\n","import type { ISectionBeforeChangeProps, ISectionChangeProps } from '@/types'\n\nexport class Callback {\n\tonSectionChange: (props: ISectionChangeProps) => unknown\n\tonBeforeSectionChange: (props: ISectionBeforeChangeProps) => unknown\n}\n\nexport const callback = new Callback()\n","export enum ClassName {\n\thtml = 'page-scroller-enabled',\n\tbody = 'page-scoller-body',\n\tcontainer = 'page-scroller-wrapper',\n\tsection = 'page-scroller-section',\n\tsectionWithSlides = 'page-scroller-section-with-slides',\n\tactiveSection = 'page-scroller-section-active',\n\tslide = 'page-scroller-slide',\n}\n\nexport enum SlideClassName {\n\twrapper = 'page-scroller-slide-wrapper',\n\tactive = 'page-scroller-slide-active',\n}\n","import { state } from '../state'\n// import { Section } from '../types'\nimport { ClassName, SlideClassName } from '../utils/class.enum'\n\nexport function initializeDOM() {\n\tconst htmlElement = document.querySelector('html')\n\thtmlElement.classList.add(ClassName.html)\n\n\tconst bodyElement = document.querySelector('body')\n\tbodyElement.classList.add(ClassName.body)\n\n\tstate.container.classList.add(ClassName.container)\n\n\tconst transition = `transform ${state.scrollingSpeed}ms ${state.transitionTimingFunction}`\n\tstate.container.style.transition = transition\n\n\tprepareSections()\n\n\tstate.scrollMode === 'automatic' ? prepareScrollModeAutomaticDOM() : prepareScrollModeManualDOM()\n}\n\nfunction prepareSections() {\n\tstate.sections = Array.from(state.container.children).map((element) => {\n\t\tconst section = element as HTMLElement\n\n\t\tconst childrens = Array.from(section.children) as HTMLElement[]\n\n\t\tconst foundSlides = childrens.filter((slide) => slide.hasAttribute(state.slidesIdentifyAttribute))\n\t\tfoundSlides.forEach((slide) => slide.classList.add(ClassName.slide))\n\n\t\tif (!foundSlides.length) return { element: section, slides: null }\n\n\t\tconst container = preapreSectionForSlides(section, foundSlides)\n\n\t\tconst slides = { container, elements: foundSlides }\n\n\t\treturn { element: section, slides }\n\t})\n\n\tstate.sections.forEach((section) => section.element.classList.add(ClassName.section))\n}\n\nfunction preapreSectionForSlides(section: HTMLElement, slides: HTMLElement[]): HTMLElement {\n\tconst wrapperElement = document.createElement('div')\n\twrapperElement.classList.add(SlideClassName.wrapper)\n\n\tconst transition = `transform ${state.scrollingSpeed}ms ${state.transitionTimingFunction}`\n\twrapperElement.style.transition = transition\n\twrapperElement.style.width = `${slides.length * 100}%`\n\n\tslides.forEach((slide) => {\n\t\tslide.style.width = `${100 / slides.length}%`\n\n\t\twrapperElement.appendChild(slide)\n\t})\n\n\tconst containerElement = document.createElement('div')\n\tcontainerElement.classList.add(ClassName.sectionWithSlides)\n\n\tcontainerElement.appendChild(wrapperElement)\n\n\tsection.appendChild(containerElement)\n\n\treturn wrapperElement\n}\n\nexport function destroyDOM() {\n\tconst htmlElement = document.querySelector('html')\n\thtmlElement.classList.remove(ClassName.html)\n\n\tconst bodyElement = document.querySelector('body')\n\tbodyElement.classList.remove(ClassName.body)\n\n\tstate.container.classList.remove(ClassName.container)\n\n\tstate.container.style.transition = ''\n\tstate.container.style.transform = 'none'\n\tstate.container.style.webkitTransform = 'none'\n\n\tstate.sections.forEach((section) => section.element.classList.remove(ClassName.section))\n}\n\nexport function prepareScrollModeAutomaticDOM() {\n\tconst bodyElement = document.querySelector('body')\n\n\tbodyElement.style.overflow = 'hidden'\n\tbodyElement.style.height = '100%'\n\n\tconst htmlElement = document.querySelector('html')\n\n\thtmlElement.style.overflow = 'hidden'\n\thtmlElement.style.height = '100%'\n\n\tconst transition = `transform ${state.scrollingSpeed}ms ${state.transitionTimingFunction}`\n\tstate.container.style.transition = transition\n}\n\nexport function prepareScrollModeManualDOM() {\n\tconst bodyElement = document.querySelector('body')\n\n\tbodyElement.style.overflow = 'auto'\n\tbodyElement.style.height = 'initial'\n\n\tconst htmlElement = document.querySelector('html')\n\n\thtmlElement.style.overflow = 'auto'\n\thtmlElement.style.height = 'initial'\n\n\tstate.container.style.transition = ''\n\tstate.container.style.transform = 'none'\n\tstate.container.style.webkitTransform = 'none'\n}\n","import { state } from '@/state/state'\n\nimport type { ILogger, TLoggerType } from '@/types/logger'\n\nexport function useLogger(): ILogger {\n\tfunction info(message: string) {\n\t\tif (state.isDebug) console.log(createMessage(message, 'info'))\n\t}\n\n\tfunction error(message: string) {\n\t\tif (state.isDebug) console.error(createMessage(message, 'error'))\n\t}\n\n\tfunction warn(message: string) {\n\t\tif (state.isDebug) console.warn(createMessage(message, 'warn'))\n\t}\n\n\tfunction createMessage(message: string, type?: TLoggerType): string {\n\t\treturn `[Page-Scroller]${type ? `[${type.toUpperCase()}]` : ''}: ${message}`\n\t}\n\n\treturn { info, error, warn, createMessage }\n}\n","export const focusableElementsString = `a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, [tabindex=\"0\"], summary:not([disabled]), [contenteditable]`\n\nexport function closestElement(element: Element, selector: string) {\n\tif (!element || element.nodeType !== 1) return null\n\n\tif (element.matches(selector)) return element\n\n\treturn closestElement(element.parentNode as Element, selector)\n}\n\nexport function isUserUsingInput() {\n\tconst activeElement = document.activeElement\n\n\tconst supportedElements = ['input', 'textarea']\n\n\treturn supportedElements.includes(activeElement.tagName.toLowerCase())\n}\n\nexport function getAverageFromArray(array: number[], number: number) {\n\tconst last = array.slice(Math.max(array.length - number, 0))\n\tconst sum = last.reduce((acc, curr) => acc + curr, 0)\n\n\treturn Math.ceil(sum / number)\n}\n","import { state } from '../state/state'\nimport { ClassName, SlideClassName } from '../utils/class.enum'\n\nimport { EmitterEvents, emitter } from '../emitter'\n\nimport type { TScrollingDirectionVertically, TScrollingDirectionHorizontally } from '@/types'\n\nexport function changeSectionOrSlideByDirection(direction: TScrollingDirectionVertically) {\n\tif (isAllowToChangeSlide(direction)) {\n\t\tchangeSlideByDirection(direction === 'down' ? 'right' : 'left')\n\n\t\treturn\n\t}\n\n\tchangeSectionByDirection(direction)\n}\n\nexport function changeSlideByDirection(direction: TScrollingDirectionHorizontally) {\n\tif (state.isScrolling) return\n\n\tstate.isScrolling = true\n\n\tconst currentSlideIndex = state.activeSlide\n\n\tstate.activeSlide = direction === 'right' ? currentSlideIndex + 1 : currentSlideIndex - 1\n\n\tchangeSlide(currentSlideIndex, state.activeSlide)\n}\n\nexport function changeSectionByDirection(direction: TScrollingDirectionVertically) {\n\tif (state.isScrolling) return\n\n\tstate.isScrolling = true\n\n\tconst currentSectionIndex = state.activeSection\n\n\tif (!isAllowToChangeSection(direction)) return (state.isScrolling = false)\n\n\tstate.activeSection = direction === 'down' ? currentSectionIndex + 1 : currentSectionIndex - 1\n\n\tchangeSection(currentSectionIndex, state.activeSection)\n}\n\nexport function changeSectionBySpecificIndex(index: number) {\n\tif (state.isScrolling) return\n\n\tstate.isScrolling = true\n\n\tconst currentSectionIndex = state.activeSection\n\n\tif (!isAllowToChangeByIndex(index)) return (state.isScrolling = false)\n\n\tstate.sections[currentSectionIndex].element.classList.remove(ClassName.activeSection)\n\n\tstate.activeSection = index\n\n\tchangeSection(currentSectionIndex, state.activeSection)\n}\n\nexport function reAdjustCurrentSection() {\n\tif (state.scrollMode === 'manual') return\n\n\tconst sectionOffset = state.sections[state.activeSection].element.offsetTop\n\n\tconst transform = `translate3d(0px, -${sectionOffset}px, 0px)`\n\n\tstate.container.style.transform = transform\n\tstate.container.style.webkitTransform = transform\n}\n\nexport function changeSection(previousIndex: number, nextIndex: number) {\n\temitter.emit(EmitterEvents.onBeforeSectionChange, { beforeIndex: previousIndex, afterIndex: nextIndex })\n\n\tstate.sections[previousIndex].element.classList.remove(ClassName.activeSection)\n\n\tconst sectionOffset = state.sections[nextIndex].element.offsetTop\n\n\tconst transform = `translate3d(0px, -${sectionOffset}px, 0px)`\n\n\tstate.container.style.transform = transform\n\tstate.container.style.webkitTransform = transform\n\n\tstate.sections[nextIndex].element.classList.add(ClassName.activeSection)\n\n\tsetTimeout(() => {\n\t\tstate.isScrolling = false\n\n\t\temitter.emit(EmitterEvents.onSectionChange, { beforeIndex: previousIndex, afterIndex: nextIndex })\n\t}, 700)\n}\n\nexport function changeSlide(previousIndex: number, nextIndex: number) {\n\temitter.emit(EmitterEvents.onBeforeSlideChange, { beforeIndex: previousIndex, afterIndex: nextIndex })\n\n\tconst activeSection = state.sections[state.activeSection]\n\n\tactiveSection.slides.elements[previousIndex]?.classList.remove(SlideClassName.active)\n\n\tconst slideOffset = activeSection.slides.elements[nextIndex].offsetLeft\n\n\tconst transform = `translate3d(-${slideOffset}px, 0px, 0px)`\n\n\tactiveSection.slides.container.style.transform = transform\n\tactiveSection.slides.container.style.webkitTransform = transform\n\n\tstate.sections[state.activeSection].slides.elements[nextIndex].classList.add(SlideClassName.active)\n\n\tsetTimeout(() => {\n\t\tstate.isScrolling = false\n\n\t\temitter.emit(EmitterEvents.onSlideChange, { beforeIndex: previousIndex, afterIndex: nextIndex })\n\t}, state.scrollingSpeed)\n}\n\nexport function isAllowToChangeSection(direction: TScrollingDirectionVertically) {\n\treturn direction === 'down' ? state.sections.length != state.activeSection + 1 : state.activeSection - 1 !== -1\n}\n\nexport function isAllowToChangeSlide(direction: TScrollingDirectionVertically): boolean {\n\tif (!state.isAllowToScrollThroughSlides) return false\n\n\tconst isCurrentSectionHasSlides = state.sections[state.activeSection].slides?.elements.length > 0\n\n\tif (!isCurrentSectionHasSlides) return false\n\n\tconst slides = state.sections[state.activeSection].slides\n\n\tconst isEdgeSlide = direction === 'down' ? state.activeSlide + 1 === slides.elements.length : state.activeSlide - 1 === -1\n\n\tif (isEdgeSlide) return false\n\n\treturn true\n}\n\nexport function isAllowToChangeByIndex(index: number) {\n\treturn index >= 0 && index < state.sections.length\n}\n","import { callback, state } from '@/state'\nimport { emitter, EmitterEvents } from '@/emitter'\n\nimport type { IPageScrollerOptions, ISectionChangeProps, ISectionBeforeChangeProps } from '@/types'\n\nexport const defaultState: IPageScrollerOptions = {\n\tscrollMode: 'automatic',\n\tscrollingSpeed: 700,\n\ttransitionTimingFunction: 'ease',\n\n\tslidesIdentifyAttribute: 'page-scroller-slide',\n\tisAllowToScrollThroughSlides: false,\n\n\tisDebug: false,\n\tisWheelEnabled: true,\n\tisKeyboardEnabled: true,\n\tisTouchEnabled: true,\n}\n\nexport function initializeState(options: IPageScrollerOptions) {\n\tstate.scrollMode = options.scrollMode ?? defaultState.scrollMode\n\tstate.scrollingSpeed = options.scrollingSpeed ?? defaultState.scrollingSpeed\n\tstate.transitionTimingFunction = options.transitionTimingFunction ?? defaultState.transitionTimingFunction\n\n\tstate.isDebug = options.isDebug ?? defaultState.isDebug\n\tstate.isWheelEnabled = options.isWheelEnabled ?? defaultState.isWheelEnabled\n\tstate.isKeyboardEnabled = options.isKeyboardEnabled ?? defaultState.isKeyboardEnabled\n\tstate.isTouchEnabled = options.isTouchEnabled ?? defaultState.isTouchEnabled\n\n\tstate.slidesIdentifyAttribute = options.slidesIdentifyAttribute ?? defaultState.slidesIdentifyAttribute\n\tstate.isAllowToScrollThroughSlides = options.isAllowToScrollThroughSlides ?? defaultState.isAllowToScrollThroughSlides\n}\n\nexport function destroyState() {\n\tstate.container = null\n\tstate.sections = null\n\n\tstate.activeSlide = 0\n\tstate.activeSection = 0\n\n\tstate.transitionTimingFunction = defaultState.transitionTimingFunction\n\tstate.scrollingSpeed = defaultState.scrollingSpeed\n\n\tstate.slidesIdentifyAttribute = defaultState.slidesIdentifyAttribute\n\tstate.isAllowToScrollThroughSlides = defaultState.isAllowToScrollThroughSlides\n\n\tstate.isDebug = defaultState.isDebug\n\tstate.isScrolling = false\n\tstate.isInitialized = false\n\n\tstate.isWheelEnabled = defaultState.isWheelEnabled\n\tstate.isKeyboardEnabled = defaultState.isKeyboardEnabled\n\tstate.isTouchEnabled = defaultState.isTouchEnabled\n}\n\nexport function initializeCallbacks(options: IPageScrollerOptions) {\n\tif (options.onSectionChange) {\n\t\tcallback.onSectionChange = options.onSectionChange\n\n\t\temitter.on(EmitterEvents.onSectionChange, (event: ISectionChangeProps) => callback.onSectionChange(event))\n\t}\n\n\tif (options.onBeforeSectionChange) {\n\t\tcallback.onBeforeSectionChange = options.onBeforeSectionChange\n\n\t\temitter.on(EmitterEvents.onBeforeSectionChange, (event: ISectionBeforeChangeProps) =>\n\t\t\tcallback.onBeforeSectionChange(event)\n\t\t)\n\t}\n}\n\nexport function destroyCallbacks() {\n\tcallback.onSectionChange = () => {}\n\temitter.off(EmitterEvents.onSectionChange)\n\tcallback.onBeforeSectionChange = () => {}\n\temitter.off(EmitterEvents.onBeforeSectionChange)\n}\n","import { state } from '../state'\n\nimport { registerEmitterEvents, destroyEmitterEvents } from '../emitter'\n\nimport { useLogger } from '../logger'\nimport { initializeDOM, destroyDOM } from './dom'\nimport { destroyEvents, registerEvents } from '../events'\nimport { initializeCallbacks, initializeState, destroyState, destroyCallbacks } from './state'\n\nimport type { IPageScrollerOptions } from '@/types'\n\nconst logger = useLogger()\n\nexport function onInitialize(options?: IPageScrollerOptions) {\n\tlogger.info('Initializing Page Scroller...')\n\n\tif (options) {\n\t\tinitializeState(options)\n\t\tinitializeCallbacks(options)\n\t}\n\n\tinitializeDOM()\n\tregisterEvents()\n\tregisterEmitterEvents()\n\n\tstate.isInitialized = true\n\tlogger.info('Initialized Page Scroller.')\n}\n\nexport function onDestroy() {\n\tlogger.warn('Destroying Page Scroller...')\n\n\tdestroyDOM()\n\tdestroyEvents()\n\tdestroyEmitterEvents()\n\tdestroyState()\n\tdestroyCallbacks()\n\n\tstate.isInitialized = false\n\n\tlogger.warn('Destroyed Page Scroller.')\n}\n","import { useLogger } from '@/logger'\nimport { getAverageFromArray } from '@/utils'\nimport { changeSectionOrSlideByDirection } from '@/common'\n\nimport type { TScrollingDirectionVertically } from '@/types'\n\nlet scrollingTimeout\nexport let scrollings = []\n\nconst logger = useLogger()\n\n/**\n * Registers the wheel event listener on the document body.\n */\nexport function registerWheelEvent() {\n\tlogger.info('Wheel event registered')\n\n\tdocument.body.addEventListener('wheel', wheelEventHandler)\n}\n\n/**\n * Removes the wheel event listener from the document body.\n */\nexport function destroyWheelEvent() {\n\tlogger.info('Wheel event registered')\n\n\tdocument.body.removeEventListener('wheel', wheelEventHandler)\n}\n\nexport function wheelEventHandler(event: WheelEvent) {\n\tlogger.info('Wheel event detected')\n\n\tclearTimeout(scrollingTimeout)\n\n\tscrollingTimeout = setTimeout(() => {\n\t\tscrollings = []\n\t}, 200)\n\n\tconst scrollValue = -event.deltaY || event.detail\n\tconst direction = getScrollDirection(scrollValue)\n\n\tif (scrollings.length > 100) {\n\t\tscrollings.shift()\n\t}\n\n\tscrollings.push(Math.abs(scrollValue))\n\n\tif (!checkIsAccelerating()) return\n\n\treturn changeSectionOrSlideByDirection(direction)\n}\n\nfunction checkIsAccelerating() {\n\tconst avarageFromEnd = getAverageFromArray(scrollings, 5)\n\tconst avarageFromMid = getAverageFromArray(scrollings, 50)\n\n\treturn avarageFromEnd >= avarageFromMid\n}\n\n/**\n * Determines the scroll direction based on the WheelEvent.\n * @param event - The WheelEvent object.\n * @returns The scroll direction, either \"up\" or \"down\".\n */\nfunction getScrollDirection(value: number): TScrollingDirectionVertically {\n\tconst delta = Math.max(-1, Math.min(1, value))\n\n\treturn delta < 0 ? 'down' : 'up'\n}\n","import { useLogger } from '@/logger'\nimport { state } from '@/state/state'\nimport { EmitterEvents, emitter } from '@/emitter'\nimport { focusableElementsString, isUserUsingInput } from '@/utils'\nimport { changeSectionOrSlideByDirection, changeSectionBySpecificIndex, changeSlideByDirection } from '@/common'\n\nimport type { TSupportedKeyboardKeys } from '@/types'\n\ntype FocusElementCollation = 'first' | 'last'\n\nconst logger = useLogger()\n\nlet focusElementCollation: FocusElementCollation = null\n\n/**\n * Registers the keyboard event listeners for keyup and keydown events.\n */\nexport function registerKeyboardEvents(): void {\n\tdocument.addEventListener('keydown', keyDownEventHandler)\n\n\temitter.on(EmitterEvents.onSectionChange, onSectionChangeHandler)\n}\n\n/**\n * Removes the keyboard event listeners for keyup and keydown events.\n */\nexport function destroyKeyboardEvents(): void {\n\tdocument.removeEventListener('keydown', keyDownEventHandler)\n\n\temitter.off(EmitterEvents.onSectionChange)\n}\n\n/**\n * Hanldes the keydown event and changes the section based on the key pressed.\n * @param event KeyboardEvent - The keyboard event.\n * @returns void\n */\nfunction keyDownEventHandler(event: KeyboardEvent): void {\n\tlogger.info('Keydown event detected')\n\tconst key = event.key as TSupportedKeyboardKeys\n\n\tif (isUserUsingInput()) return\n\n\tswitch (key) {\n\t\tcase ' ':\n\t\tcase 'ArrowDown':\n\t\tcase 'PageDown':\n\t\t\tchangeSectionOrSlideByDirection('down')\n\t\t\tbreak\n\t\tcase 'ArrowUp':\n\t\tcase 'PageUp':\n\t\t\tchangeSectionOrSlideByDirection('up')\n\t\t\tbreak\n\t\tcase 'ArrowRight':\n\t\t\tchangeSlideByDirection('right')\n\t\tcase 'ArrowLeft':\n\t\t\tchangeSlideByDirection('left')\n\t\tcase 'End':\n\t\t\tchangeSectionBySpecificIndex(state.sections.length - 1)\n\t\t\tbreak\n\t\tcase 'Home':\n\t\t\tchangeSectionBySpecificIndex(0)\n\t\t\tbreak\n\t\tcase 'Tab':\n\t\t\tonTabPress(event)\n\t\t\tbreak\n\t}\n}\n\n/**\n * Make sure that the tab key will only focus elements within the current section.\n * Prevent page break when the tab key is pressed.\n * @param event - The keyboard event.\n */\nexport function onTabPress(event: KeyboardEvent) {\n\tconst isShiftPressed = event.shiftKey\n\tconst activeElement = document.activeElement\n\tconst focusableElements = getFocusableElements(state.sections[state.activeSection].element)\n\n\tconst isFirstFocusableInSection = activeElement === focusableElements[0]\n\tconst isLastFocusableInSection = activeElement === focusableElements[focusableElements.length - 1]\n\n\tconst shouldChangeSection = (isShiftPressed && isFirstFocusableInSection) || (!isShiftPressed && isLastFocusableInSection)\n\n\tif (shouldChangeSection) {\n\t\tevent.preventDefault()\n\n\t\tconst direction = isShiftPressed && isFirstFocusableInSection ? 'up' : 'down'\n\n\t\tfocusElementCollation = direction === 'up' ? 'last' : 'first'\n\n\t\tchangeSectionOrSlideByDirection(direction)\n\t}\n}\n\n/**\n * Focuses the first or last focusable element within the current section while changing the section by tag key\n */\nfunction onSectionChangeHandler() {\n\tif (!focusElementCollation) return\n\n\tconst focusableElements = getFocusableElements(state.sections[state.activeSection].element)\n\n\tfocusableElements[focusElementCollation === 'first' ? 0 : focusableElements.length - 1].focus()\n\n\tfocusElementCollation = null\n}\n\nfunction getFocusableElements(parent: HTMLElement) {\n\treturn [].slice\n\t\t.call(parent.querySelectorAll(focusableElementsString))\n\t\t.filter((element) => element.getAttribute('tabindex') !== '-1' && element.offsetParent !== null)\n}\n","import { useLogger } from '@/logger'\nimport { state } from '@/state/state'\n\nimport { changeSectionOrSlideByDirection } from '@/common'\n\nimport type { ICoordinates } from '@/types/event'\n\nconst logger = useLogger()\n\nexport function registerTouchEvents(): void {\n\tdocument.addEventListener('touchstart', onTouchStartHandler)\n\tstate.container.addEventListener('touchmove', onTouchMoveHandler, { passive: false })\n}\n\nexport function destroyTouchEvents(): void {\n\tdocument.removeEventListener('touchstart', onTouchStartHandler)\n\tstate.container.removeEventListener('touchmove', onTouchMoveHandler)\n}\n\nexport let touchStartCoordinates: ICoordinates = {}\nexport function onTouchStartHandler(event: TouchEvent): void {\n\tconst coordinates = getEventCoordinated(event)\n\n\ttouchStartCoordinates = {\n\t\tx: coordinates.x,\n\t\ty: coordinates.y,\n\t}\n}\n\nexport function onTouchMoveHandler(event: TouchEvent): void {\n\tlogger.info('Touch move event detected')\n\n\tconst coordinates = getEventCoordinated(event)\n\tconst isVerticalMovementEnought = Math.abs(coordinates.y - touchStartCoordinates.y) > (window.innerHeight / 100) * 5\n\n\tconst direction = touchStartCoordinates.y > coordinates.y ? 'down' : 'up'\n\n\tif (isVerticalMovementEnought) changeSectionOrSlideByDirection(direction)\n}\n\nexport function getEventCoordinated(event: TouchEvent): ICoordinates {\n\treturn {\n\t\tx: event.touches[0].pageX,\n\t\ty: event.touches[0].pageY,\n\t}\n}\n","import { state } from '../state'\nimport { useLogger } from '../logger'\nimport { reAdjustCurrentSection } from '../common'\n\nconst logger = useLogger()\n\nlet timeout\nlet isResizing = false\n\nexport function registerResizeEvents() {\n\tonResizeHandler()\n\n\twindow.addEventListener('resize', onResizeHandler)\n}\n\nexport function destroyResizeEvents() {\n\tresizeHandler()\n\n\tclearTimeout(timeout)\n\n\twindow.removeEventListener('resize', onResizeHandler)\n}\n\nfunction onResizeHandler() {\n\tlogger.info('Resize event has been triggered.')\n\tif (!isResizing) {\n\t\tresizeHandler()\n\t}\n\n\tisResizing = true\n\n\tclearTimeout(timeout)\n\ttimeout = setTimeout(() => {\n\t\tresizeAction()\n\n\t\tisResizing = false\n\t}, 400)\n}\n\nfunction resizeAction() {\n\tstate.isResizing = true\n\n\tresizeHandler()\n\n\treAdjustCurrentSection()\n}\n\nfunction resizeHandler() {\n\tconst height = window ? window.innerHeight : document.documentElement.offsetHeight\n\n\tsetSectionsSize(height)\n}\n\nfunction setSectionsSize(height: number) {\n\tstate.sections.forEach((section) => (section.element.style.height = `${height}px`))\n}\n","import { state } from \"../state/state\";\n\nimport { destroyWheelEvent, registerWheelEvent } from \"./wheel.event\";\nimport { destroyKeyboardEvents, registerKeyboardEvents } from \"./keyboard.event\";\nimport { destroyTouchEvents, registerTouchEvents } from \"./touch.event\";\nimport { destroyResizeEvents, registerResizeEvents } from \"./resize.event\";\n\n/**\n * Registers the events for the page scroller.\n */\nexport function registerEvents() {\n    if(state.scrollMode === \"manual\") return;\n\n    state.isWheelEnabled && registerWheelEvent();\n    state.isKeyboardEnabled && registerKeyboardEvents();\n    state.isTouchEnabled && registerTouchEvents();\n\n    registerResizeEvents();\n}\n\n/**\n * Destroys the events for the page scroller.\n */\nexport function destroyEvents() {\n    destroyKeyboardEvents();\n    destroyWheelEvent();\n    destroyTouchEvents();\n    destroyResizeEvents();\n}","import type {\n\tIEmitter,\n\tIEventHandlerMap,\n\tTEmitterEventType,\n\tTEmitterEventHandler,\n\tTEmitterEventWildcardHandler,\n\tTEmitterHandlerList,\n\tTEmitterWildcardHandlerList,\n} from '@/types/emitter'\n\nexport enum EmitterEvents {\n\tonSectionChange = 'onSectionChange',\n\tonBeforeSectionChange = 'onBeforeSectionChange',\n\n\tonSlideChange = 'onSlideChange',\n\tonBeforeSlideChange = 'onBeforeSlideChange',\n\n\tonPageScrollStatusChanged = 'onPageScrollStatusChanged',\n\tonPageScrollModeAutomatic = 'onPageScrollModeAutomatic',\n\tonPageScrollModeManual = 'onPageScrollModeManual',\n}\n\nfunction mitt<Events extends Record<TEmitterEventType, unknown>>(all?: IEventHandlerMap<Events>): IEmitter<Events> {\n\ttype GenericEventHandler = TEmitterEventHandler<Events[keyof Events]> | TEmitterEventWildcardHandler<Events>\n\tall = all || new Map()\n\n\treturn {\n\t\tall,\n\t\ton<Key extends keyof Events>(type: Key, handler: GenericEventHandler) {\n\t\t\tconst handlers: Array<GenericEventHandler> | undefined = all!.get(type)\n\t\t\tif (handlers) {\n\t\t\t\thandlers.push(handler)\n\t\t\t} else {\n\t\t\t\tall!.set(type, [handler] as TEmitterHandlerList<Events[keyof Events]>)\n\t\t\t}\n\t\t},\n\n\t\toff<Key extends keyof Events>(type: Key, handler?: GenericEventHandler) {\n\t\t\tconst handlers: Array<GenericEventHandler> | undefined = all!.get(type)\n\t\t\tif (handlers) {\n\t\t\t\tif (handler) {\n\t\t\t\t\thandlers.splice(handlers.indexOf(handler) >>> 0, 1)\n\t\t\t\t} else {\n\t\t\t\t\tall!.set(type, [])\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\temit<Key extends keyof Events>(type: Key, evt?: Events[Key]) {\n\t\t\tlet handlers = all!.get(type)\n\t\t\tif (handlers) {\n\t\t\t\t;(handlers as TEmitterHandlerList<Events[keyof Events]>).slice().map((handler) => {\n\t\t\t\t\thandler(evt!)\n\t\t\t\t})\n\t\t\t}\n\n\t\t\thandlers = all!.get('*')\n\t\t\tif (handlers) {\n\t\t\t\t;(handlers as TEmitterWildcardHandlerList<Events>).slice().map((handler) => {\n\t\t\t\t\thandler(type, evt!)\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\t}\n}\n\nexport const emitter = mitt()\n","import { prepareScrollModeAutomaticDOM, prepareScrollModeManualDOM } from \"../common/dom\";\nimport { destroyEvents, registerEvents } from \"../events\";\n\nimport { emitter, EmitterEvents } from \"./emitter\";\n\nexport function registerEmitterEvents() {\n    emitter.on(EmitterEvents.onPageScrollModeAutomatic, () => {\n        prepareScrollModeAutomaticDOM();\n        registerEvents();\n    })\n\n    emitter.on(EmitterEvents.onPageScrollModeManual, () => {\n        prepareScrollModeManualDOM();\n        destroyEvents();\n    })\n}\n\nexport function destroyEmitterEvents() {\n    emitter.off(EmitterEvents.onPageScrollModeManual);\n    emitter.off(EmitterEvents.onPageScrollModeAutomatic);\n}","import { state } from '@/state'\nimport { emitter, EmitterEvents } from '@/emitter'\n\nexport {\n\tonDestroy,\n\tchangeSectionOrSlideByDirection,\n\tchangeSectionByDirection,\n\tchangeSectionBySpecificIndex,\n\tchangeSlideByDirection,\n} from '@/common'\n\nimport type { TScrollingMode } from '@/types/scroll'\n\nexport const isManualScrollingMode = (): boolean => state.scrollMode === 'manual'\nexport const isAutomaticScrollingMode = (): boolean => state.scrollMode === 'automatic'\n\nexport function changeScrollingMode(mode: TScrollingMode) {\n\tif (state.scrollMode === mode) return\n\n\tstate.scrollMode = mode\n\n\temitter.emit(mode === 'automatic' ? EmitterEvents.onPageScrollModeAutomatic : EmitterEvents.onPageScrollModeManual)\n}\n\nexport const getActiveSection = (): number => state.activeSection\n","function styleInject(css, ref) {\n  if ( ref === void 0 ) ref = {};\n  var insertAt = ref.insertAt;\n\n  if (!css || typeof document === 'undefined') { return; }\n\n  var head = document.head || document.getElementsByTagName('head')[0];\n  var style = document.createElement('style');\n  style.type = 'text/css';\n\n  if (insertAt === 'top') {\n    if (head.firstChild) {\n      head.insertBefore(style, head.firstChild);\n    } else {\n      head.appendChild(style);\n    }\n  } else {\n    head.appendChild(style);\n  }\n\n  if (style.styleSheet) {\n    style.styleSheet.cssText = css;\n  } else {\n    style.appendChild(document.createTextNode(css));\n  }\n}\n\nexport default styleInject;\n","import { useLogger } from './logger'\nimport { state } from './state/state'\nimport { changeSectionBySpecificIndex, changeSectionByDirection, onInitialize } from './common'\n\nimport type { IPageScrollerOptions, IPageScrollerReturn } from '@/types'\n\nimport './index.css'\n\nconst logger = useLogger()\n\nexport function usePageScroller(options?: IPageScrollerOptions): IPageScrollerReturn {\n\tfunction initPageScroller(selector: string) {\n\t\tlogger.info('Initializing page scroller...')\n\n\t\tif (state.isInitialized) throw new Error(logger.createMessage('Page scroller is already initialized.'))\n\n\t\tif (selector === undefined) throw new Error(logger.createMessage('Please provide a valid selector.'))\n\n\t\tstate.container = document.querySelector(selector)\n\n\t\tif (!state.container) throw new Error(logger.createMessage('Container not found. Please provide a valid selector.'))\n\n\t\tonInitialize(options)\n\t}\n\n\treturn { initPageScroller, changeSectionByDirection, changeSectionBySpecificIndex }\n}\n"],"names":["logger"],"mappings":"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"}