vevet 1.4.27 → 2.0.1-dev.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +7 -71
- package/build/cdn/index.js +12 -0
- package/build/cdn/index.js.LICENSE.txt +14 -0
- package/build/cjs/app/Application.js +297 -0
- package/build/cjs/app/events/PageLoad.js +74 -0
- package/build/cjs/app/events/Viewport.js +303 -0
- package/build/cjs/base/Callbacks.js +232 -0
- package/build/cjs/base/Component.js +56 -0
- package/build/cjs/base/Module.js +262 -0
- package/build/cjs/base/MutableProp.js +165 -0
- package/build/cjs/base/Plugin.js +56 -0
- package/build/cjs/components/animation-frame/AnimationFrame.js +183 -0
- package/build/cjs/components/canvas/Ctx2D.js +200 -0
- package/build/cjs/components/canvas/Ctx2DPrerender.js +72 -0
- package/build/cjs/components/cursor/CustomCursor.js +344 -0
- package/build/cjs/components/dragger/Dragger.js +229 -0
- package/build/cjs/components/dragger/DraggerDirection.js +77 -0
- package/build/cjs/components/dragger/DraggerMove.js +84 -0
- package/build/cjs/components/loading/Preloader.js +229 -0
- package/build/cjs/components/loading/ProgressPreloader.js +377 -0
- package/build/cjs/components/page/Page.js +353 -0
- package/build/cjs/components/scroll/custom-scroll/CustomScroll.js +517 -0
- package/build/cjs/components/scroll/plugins/SmoothScrollDragPlugin.js +178 -0
- package/build/cjs/components/scroll/plugins/SmoothScrollKeyboardPlugin.js +138 -0
- package/build/cjs/components/scroll/scrollable/ScrollEventsBase.js +133 -0
- package/build/cjs/components/scroll/scrollable/ScrollView.js +315 -0
- package/build/cjs/components/scroll/scrollbar/Bar.js +315 -0
- package/build/cjs/components/scroll/scrollbar/ScrollBar.js +206 -0
- package/build/cjs/components/scroll/smooth-scroll/SmoothScroll.js +625 -0
- package/build/cjs/components/scroll/types.js +2 -0
- package/build/cjs/components/split-text/SplitText.js +233 -0
- package/build/cjs/components/text/SplitText.js +329 -0
- package/build/cjs/components/timeline/StaticTimeline.js +137 -0
- package/build/cjs/components/timeline/Timeline.js +190 -0
- package/build/cjs/index.js +87 -0
- package/build/cjs/utils/common/index.js +12 -0
- package/build/cjs/utils/common/mergeWithoutArrays.js +19 -0
- package/build/cjs/utils/common/randID.js +11 -0
- package/build/cjs/utils/common/timeoutCallback.js +17 -0
- package/build/cjs/utils/errors.js +8 -0
- package/build/cjs/utils/listeners/index.js +10 -0
- package/build/cjs/utils/listeners/intersectionObserverSupported.js +11 -0
- package/build/cjs/utils/listeners/onScroll.js +47 -0
- package/build/cjs/utils/math/boundVal.js +16 -0
- package/build/cjs/utils/math/index.js +12 -0
- package/build/cjs/utils/math/lerp.js +15 -0
- package/build/cjs/utils/math/scopeProgress.js +25 -0
- package/build/cjs/utils/types/general.js +2 -0
- package/build/cjs/utils/types/utility.js +2 -0
- package/build/es/app/Application.js +210 -0
- package/build/es/app/events/PageLoad.js +47 -0
- package/build/es/app/events/Viewport.js +232 -0
- package/build/es/base/Callbacks.js +205 -0
- package/build/es/base/Component.js +32 -0
- package/build/es/base/Module.js +225 -0
- package/build/es/base/MutableProp.js +152 -0
- package/build/es/base/Plugin.js +31 -0
- package/build/es/components/animation-frame/AnimationFrame.js +145 -0
- package/build/es/components/canvas/Ctx2D.js +133 -0
- package/build/es/components/canvas/Ctx2DPrerender.js +37 -0
- package/build/es/components/cursor/CustomCursor.js +274 -0
- package/build/es/components/dragger/Dragger.js +175 -0
- package/build/es/components/dragger/DraggerDirection.js +42 -0
- package/build/es/components/dragger/DraggerMove.js +56 -0
- package/build/es/components/loading/Preloader.js +164 -0
- package/build/es/components/loading/ProgressPreloader.js +304 -0
- package/build/es/components/page/Page.js +283 -0
- package/build/es/components/scroll/custom-scroll/CustomScroll.js +486 -0
- package/build/es/components/scroll/plugins/SmoothScrollDragPlugin.js +140 -0
- package/build/es/components/scroll/plugins/SmoothScrollKeyboardPlugin.js +109 -0
- package/build/es/components/scroll/scrollable/ScrollEventsBase.js +79 -0
- package/build/es/components/scroll/scrollable/ScrollView.js +264 -0
- package/build/es/components/scroll/scrollbar/Bar.js +262 -0
- package/build/es/components/scroll/scrollbar/ScrollBar.js +152 -0
- package/build/es/components/scroll/smooth-scroll/SmoothScroll.js +519 -0
- package/build/es/components/scroll/types.js +1 -0
- package/build/es/components/split-text/SplitText.js +199 -0
- package/build/es/components/text/SplitText.js +270 -0
- package/build/es/components/timeline/StaticTimeline.js +92 -0
- package/build/es/components/timeline/Timeline.js +141 -0
- package/build/es/index.js +37 -0
- package/build/es/utils/common/index.js +4 -0
- package/build/es/utils/common/mergeWithoutArrays.js +13 -0
- package/build/es/utils/common/randID.js +7 -0
- package/build/es/utils/common/timeoutCallback.js +14 -0
- package/build/es/utils/errors.js +5 -0
- package/build/es/utils/listeners/index.js +3 -0
- package/build/es/utils/listeners/intersectionObserverSupported.js +8 -0
- package/build/es/utils/listeners/onScroll.js +44 -0
- package/build/es/utils/math/boundVal.js +12 -0
- package/build/es/utils/math/index.js +4 -0
- package/build/es/utils/math/lerp.js +11 -0
- package/build/es/utils/math/scopeProgress.js +22 -0
- package/build/es/utils/types/general.js +1 -0
- package/build/es/utils/types/utility.js +1 -0
- package/build/types/app/Application.d.ts +161 -0
- package/build/types/app/Application.d.ts.map +1 -0
- package/build/types/app/events/PageLoad.d.ts +28 -0
- package/build/types/app/events/PageLoad.d.ts.map +1 -0
- package/build/types/app/events/Viewport.d.ts +137 -0
- package/build/types/app/events/Viewport.d.ts.map +1 -0
- package/build/types/base/Callbacks.d.ts +174 -0
- package/build/types/base/Callbacks.d.ts.map +1 -0
- package/build/types/base/Component.d.ts +48 -0
- package/build/types/base/Component.d.ts.map +1 -0
- package/build/types/base/Module.d.ts +179 -0
- package/build/types/base/Module.d.ts.map +1 -0
- package/build/types/base/MutableProp.d.ts +142 -0
- package/build/types/base/MutableProp.d.ts.map +1 -0
- package/build/types/base/Plugin.d.ts +35 -0
- package/build/types/base/Plugin.d.ts.map +1 -0
- package/build/types/components/animation-frame/AnimationFrame.d.ts +96 -0
- package/build/types/components/animation-frame/AnimationFrame.d.ts.map +1 -0
- package/build/types/components/canvas/Ctx2D.d.ts +111 -0
- package/build/types/components/canvas/Ctx2D.d.ts.map +1 -0
- package/build/types/components/canvas/Ctx2DPrerender.d.ts +41 -0
- package/build/types/components/canvas/Ctx2DPrerender.d.ts.map +1 -0
- package/build/types/components/cursor/CustomCursor.d.ts +181 -0
- package/build/types/components/cursor/CustomCursor.d.ts.map +1 -0
- package/build/types/components/dragger/Dragger.d.ts +120 -0
- package/build/types/components/dragger/Dragger.d.ts.map +1 -0
- package/build/types/components/dragger/DraggerDirection.d.ts +39 -0
- package/build/types/components/dragger/DraggerDirection.d.ts.map +1 -0
- package/build/types/components/dragger/DraggerMove.d.ts +49 -0
- package/build/types/components/dragger/DraggerMove.d.ts.map +1 -0
- package/build/types/components/loading/Preloader.d.ts +107 -0
- package/build/types/components/loading/Preloader.d.ts.map +1 -0
- package/build/types/components/loading/ProgressPreloader.d.ts +166 -0
- package/build/types/components/loading/ProgressPreloader.d.ts.map +1 -0
- package/build/types/components/page/Page.d.ts +126 -0
- package/build/types/components/page/Page.d.ts.map +1 -0
- package/build/types/components/scroll/custom-scroll/CustomScroll.d.ts +322 -0
- package/build/types/components/scroll/custom-scroll/CustomScroll.d.ts.map +1 -0
- package/build/types/components/scroll/plugins/SmoothScrollDragPlugin.d.ts +97 -0
- package/build/types/components/scroll/plugins/SmoothScrollDragPlugin.d.ts.map +1 -0
- package/build/types/components/scroll/plugins/SmoothScrollKeyboardPlugin.d.ts +34 -0
- package/build/types/components/scroll/plugins/SmoothScrollKeyboardPlugin.d.ts.map +1 -0
- package/build/types/components/scroll/scrollable/ScrollEventsBase.d.ts +60 -0
- package/build/types/components/scroll/scrollable/ScrollEventsBase.d.ts.map +1 -0
- package/build/types/components/scroll/scrollable/ScrollView.d.ts +140 -0
- package/build/types/components/scroll/scrollable/ScrollView.d.ts.map +1 -0
- package/build/types/components/scroll/scrollbar/Bar.d.ts +84 -0
- package/build/types/components/scroll/scrollbar/Bar.d.ts.map +1 -0
- package/build/types/components/scroll/scrollbar/ScrollBar.d.ts +109 -0
- package/build/types/components/scroll/scrollbar/ScrollBar.d.ts.map +1 -0
- package/build/types/components/scroll/smooth-scroll/SmoothScroll.d.ts +307 -0
- package/build/types/components/scroll/smooth-scroll/SmoothScroll.d.ts.map +1 -0
- package/build/types/components/scroll/types.d.ts +11 -0
- package/build/types/components/scroll/types.d.ts.map +1 -0
- package/build/types/components/split-text/SplitText.d.ts +118 -0
- package/build/types/components/split-text/SplitText.d.ts.map +1 -0
- package/build/types/components/text/SplitText.d.ts +118 -0
- package/build/types/components/text/SplitText.d.ts.map +1 -0
- package/build/types/components/timeline/StaticTimeline.d.ts +92 -0
- package/build/types/components/timeline/StaticTimeline.d.ts.map +1 -0
- package/build/types/components/timeline/Timeline.d.ts +101 -0
- package/build/types/components/timeline/Timeline.d.ts.map +1 -0
- package/build/types/index.d.ts +38 -0
- package/build/types/index.d.ts.map +1 -0
- package/build/types/utils/common/index.d.ts +5 -0
- package/build/types/utils/common/index.d.ts.map +1 -0
- package/build/types/utils/common/mergeWithoutArrays.d.ts +6 -0
- package/build/types/utils/common/mergeWithoutArrays.d.ts.map +1 -0
- package/build/types/utils/common/randID.d.ts +5 -0
- package/build/types/utils/common/randID.d.ts.map +1 -0
- package/build/types/utils/common/timeoutCallback.d.ts +6 -0
- package/build/types/utils/common/timeoutCallback.d.ts.map +1 -0
- package/build/types/utils/errors.d.ts +3 -0
- package/build/types/utils/errors.d.ts.map +1 -0
- package/build/types/utils/listeners/index.d.ts +4 -0
- package/build/types/utils/listeners/index.d.ts.map +1 -0
- package/build/types/utils/listeners/intersectionObserverSupported.d.ts +2 -0
- package/build/types/utils/listeners/intersectionObserverSupported.d.ts.map +1 -0
- package/build/types/utils/listeners/onScroll.d.ts +10 -0
- package/build/types/utils/listeners/onScroll.d.ts.map +1 -0
- package/build/types/utils/math/boundVal.d.ts +5 -0
- package/build/types/utils/math/boundVal.d.ts.map +1 -0
- package/build/types/utils/math/index.d.ts +5 -0
- package/build/types/utils/math/index.d.ts.map +1 -0
- package/build/types/utils/math/lerp.d.ts +5 -0
- package/build/types/utils/math/lerp.d.ts.map +1 -0
- package/build/types/utils/math/scopeProgress.d.ts +20 -0
- package/build/types/utils/math/scopeProgress.d.ts.map +1 -0
- package/build/types/utils/types/general.d.ts +7 -0
- package/build/types/utils/types/general.d.ts.map +1 -0
- package/build/types/utils/types/utility.d.ts +14 -0
- package/build/types/utils/types/utility.d.ts.map +1 -0
- package/package.json +88 -82
- package/src/cdn/index.js +3 -0
- package/src/sass/base.scss +3 -0
- package/src/sass/components/cursor/_custom-cursor.scss +63 -0
- package/src/sass/components/index.scss +6 -0
- package/src/sass/components/loading/_preloader.scss +15 -0
- package/src/sass/components/scroll/_scrollbar.scss +73 -0
- package/src/sass/components/scroll/_smooth-scroll.scss +17 -0
- package/src/sass/index.scss +3 -0
- package/src/sass/mixins/_scroll.scss +7 -0
- package/{dist/scss → src/sass}/mixins/_transition.scss +8 -4
- package/src/sass/mixins/_viewport.scss +69 -0
- package/src/sass/mixins/index.scss +3 -0
- package/src/ts/app/Application.ts +350 -0
- package/src/ts/app/events/PageLoad.ts +79 -0
- package/src/ts/app/events/Viewport.ts +365 -0
- package/src/ts/base/Callbacks.ts +380 -0
- package/src/ts/base/Component.ts +83 -0
- package/src/ts/base/Module.ts +385 -0
- package/src/ts/base/MutableProp.ts +242 -0
- package/src/ts/base/Plugin.ts +76 -0
- package/src/ts/components/animation-frame/AnimationFrame.ts +264 -0
- package/src/ts/components/canvas/Ctx2D.ts +260 -0
- package/src/ts/components/canvas/Ctx2DPrerender.ts +96 -0
- package/src/ts/components/cursor/CustomCursor.ts +462 -0
- package/src/ts/components/dragger/Dragger.ts +313 -0
- package/src/ts/components/dragger/DraggerDirection.ts +106 -0
- package/src/ts/components/dragger/DraggerMove.ts +114 -0
- package/src/ts/components/loading/Preloader.ts +279 -0
- package/src/ts/components/loading/ProgressPreloader.ts +484 -0
- package/src/ts/components/page/Page.ts +421 -0
- package/src/ts/components/scroll/plugins/SmoothScrollDragPlugin.ts +251 -0
- package/src/ts/components/scroll/plugins/SmoothScrollKeyboardPlugin.ts +166 -0
- package/src/ts/components/scroll/scrollable/ScrollEventsBase.ts +151 -0
- package/src/ts/components/scroll/scrollable/ScrollView.ts +435 -0
- package/src/ts/components/scroll/scrollbar/Bar.ts +364 -0
- package/src/ts/components/scroll/scrollbar/ScrollBar.ts +292 -0
- package/src/ts/components/scroll/smooth-scroll/SmoothScroll.ts +861 -0
- package/src/ts/components/scroll/types.ts +10 -0
- package/src/ts/components/text/SplitText.ts +418 -0
- package/src/ts/components/timeline/StaticTimeline.ts +197 -0
- package/src/ts/components/timeline/Timeline.ts +256 -0
- package/src/ts/index.ts +94 -0
- package/src/ts/utils/common/index.ts +9 -0
- package/src/ts/utils/common/mergeWithoutArrays.ts +20 -0
- package/src/ts/utils/common/randID.ts +9 -0
- package/src/ts/utils/common/timeoutCallback.ts +16 -0
- package/src/ts/utils/errors.ts +6 -0
- package/src/ts/utils/listeners/index.ts +7 -0
- package/src/ts/utils/listeners/intersectionObserverSupported.ts +10 -0
- package/src/ts/utils/listeners/onScroll.ts +56 -0
- package/src/ts/utils/math/boundVal.ts +15 -0
- package/src/ts/utils/math/index.ts +9 -0
- package/src/ts/utils/math/lerp.ts +16 -0
- package/src/ts/utils/math/scopeProgress.ts +23 -0
- package/src/ts/utils/types/general.ts +7 -0
- package/src/ts/utils/types/utility.ts +34 -0
- package/dist/js/AJAXEvent.js +0 -355
- package/dist/js/Application.js +0 -345
- package/dist/js/ColumnsModule.js +0 -392
- package/dist/js/CursorModule.js +0 -390
- package/dist/js/DraggerModule.js +0 -792
- package/dist/js/Event.js +0 -538
- package/dist/js/FilterModule.js +0 -943
- package/dist/js/FormModule.js +0 -706
- package/dist/js/FrameModule.js +0 -229
- package/dist/js/IntervalModule.js +0 -270
- package/dist/js/KeydownModule.js +0 -293
- package/dist/js/LoadEvent.js +0 -106
- package/dist/js/MenuBaseModule.js +0 -292
- package/dist/js/MenuModule.js +0 -265
- package/dist/js/MenuTimelineModule.js +0 -321
- package/dist/js/Module.js +0 -478
- package/dist/js/PageAjaxModule.js +0 -1010
- package/dist/js/PageLoadMediaPlugin.js +0 -285
- package/dist/js/PageModule.js +0 -440
- package/dist/js/PaginationModule.js +0 -961
- package/dist/js/PaginationScrollPlugin.js +0 -209
- package/dist/js/Plugin.js +0 -114
- package/dist/js/PopupModule.js +0 -942
- package/dist/js/PreloaderModule.js +0 -724
- package/dist/js/ResponsiveProp.js +0 -301
- package/dist/js/ScrollAnchorModule.js +0 -554
- package/dist/js/ScrollAnimateModule.js +0 -419
- package/dist/js/ScrollBarPlugin.js +0 -594
- package/dist/js/ScrollDragPlugin.js +0 -396
- package/dist/js/ScrollModule.js +0 -1071
- package/dist/js/ScrollViewModule.js +0 -388
- package/dist/js/SelectModule.js +0 -860
- package/dist/js/SliderCanvasModule.js +0 -733
- package/dist/js/SliderControlsPlugin.js +0 -247
- package/dist/js/SliderCounterPlugin.js +0 -278
- package/dist/js/SliderDotsPlugin.js +0 -270
- package/dist/js/SliderDragSwipePlugin.js +0 -245
- package/dist/js/SliderIntervalPlugin.js +0 -192
- package/dist/js/SliderKeydownPlugin.js +0 -185
- package/dist/js/SliderModule.js +0 -1062
- package/dist/js/SliderWheelPlugin.js +0 -194
- package/dist/js/TextAnimateModule.js +0 -663
- package/dist/js/TextSplitModule.js +0 -785
- package/dist/js/TimelineBaseModule.js +0 -405
- package/dist/js/TimelineModule.js +0 -494
- package/dist/js/URLEvent.js +0 -239
- package/dist/js/ViewportEvent.js +0 -465
- package/dist/js/WheelEventModule.js +0 -295
- package/dist/js/domChildOf.js +0 -46
- package/dist/js/domChildren.js +0 -47
- package/dist/js/domInsertAfter.js +0 -32
- package/dist/js/domRemoveChildren.js +0 -26
- package/dist/js/easing.js +0 -363
- package/dist/js/eventListenerAdd.js +0 -87
- package/dist/js/eventListenerGet.js +0 -49
- package/dist/js/eventListenerRemove.js +0 -36
- package/dist/js/generateId.js +0 -29
- package/dist/js/getBrowserName.js +0 -60
- package/dist/js/getOsName.js +0 -39
- package/dist/js/getVevetProperties.js +0 -22
- package/dist/js/index.js +0 -519
- package/dist/js/mathScopeProgress.js +0 -32
- package/dist/js/mathSpreadScopeProgress.js +0 -35
- package/dist/js/merge.js +0 -33
- package/dist/js/normalizeWheel.js +0 -97
- package/dist/js/text_animate_module_addons/_composite_elementary.js +0 -196
- package/dist/js/text_animate_module_addons/_elementary.js +0 -88
- package/dist/js/timeoutCallback.js +0 -26
- package/dist/js/vevet.js +0 -10
- package/dist/scss/_prefix.scss +0 -1
- package/dist/scss/classes/_clear.scss +0 -5
- package/dist/scss/classes/_col-row.scss +0 -48
- package/dist/scss/classes/_display.scss +0 -65
- package/dist/scss/classes/_document-reset.scss +0 -28
- package/dist/scss/classes/_document.scss +0 -7
- package/dist/scss/classes/_overflow.scss +0 -39
- package/dist/scss/classes/_position.scss +0 -55
- package/dist/scss/classes/_text.scss +0 -24
- package/dist/scss/classes/_transition.scss +0 -22
- package/dist/scss/classes/_wrap.scss +0 -31
- package/dist/scss/classes/index.scss +0 -14
- package/dist/scss/index.scss +0 -3
- package/dist/scss/mixins/_clear.scss +0 -6
- package/dist/scss/mixins/_display.scss +0 -6
- package/dist/scss/mixins/_form.scss +0 -14
- package/dist/scss/mixins/_position.scss +0 -42
- package/dist/scss/mixins/_reset.scss +0 -17
- package/dist/scss/mixins/_responsive.scss +0 -88
- package/dist/scss/mixins/index.scss +0 -7
- package/dist/scss/modules/columns/_settings.scss +0 -1
- package/dist/scss/modules/columns/index.scss +0 -19
- package/dist/scss/modules/cursor/_settings.scss +0 -7
- package/dist/scss/modules/cursor/index.scss +0 -15
- package/dist/scss/modules/form/_settings.scss +0 -15
- package/dist/scss/modules/form/index.scss +0 -57
- package/dist/scss/modules/index.scss +0 -11
- package/dist/scss/modules/menu/_button.scss +0 -58
- package/dist/scss/modules/menu/_menu.scss +0 -25
- package/dist/scss/modules/menu/_settings.scss +0 -23
- package/dist/scss/modules/menu/index.scss +0 -3
- package/dist/scss/modules/pagination/_settings.scss +0 -6
- package/dist/scss/modules/pagination/index.scss +0 -24
- package/dist/scss/modules/popup/_settings.scss +0 -26
- package/dist/scss/modules/popup/index.scss +0 -294
- package/dist/scss/modules/preloader/_settings.scss +0 -3
- package/dist/scss/modules/preloader/index.scss +0 -19
- package/dist/scss/modules/scroll/_settings.scss +0 -22
- package/dist/scss/modules/scroll/index.scss +0 -94
- package/dist/scss/modules/select/_settings.scss +0 -28
- package/dist/scss/modules/select/index.scss +0 -142
- package/dist/scss/modules/slider/_settings.scss +0 -35
- package/dist/scss/modules/slider/index.scss +0 -153
- package/dist/scss/modules/text/_settings.scss +0 -1
- package/dist/scss/modules/text/index.scss +0 -19
- package/dist/types/types.d.ts +0 -18763
|
@@ -0,0 +1,484 @@
|
|
|
1
|
+
import { selectAll } from 'vevet-dom';
|
|
2
|
+
import PCancelable from 'p-cancelable';
|
|
3
|
+
import { AnimationFrame } from '../animation-frame/AnimationFrame';
|
|
4
|
+
import { RequiredModuleProp } from '../../utils/types/utility';
|
|
5
|
+
import lerp from '../../utils/math/lerp';
|
|
6
|
+
import { Preloader, NPreloader } from './Preloader';
|
|
7
|
+
import { Timeline } from '../timeline/Timeline';
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
export namespace NProgressPreloader {
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Static properties
|
|
15
|
+
*/
|
|
16
|
+
export interface StaticProp extends NPreloader.StaticProp {
|
|
17
|
+
/**
|
|
18
|
+
* Default resources quantity
|
|
19
|
+
* @default 0
|
|
20
|
+
*/
|
|
21
|
+
resources?: number;
|
|
22
|
+
/**
|
|
23
|
+
* What elements to preload
|
|
24
|
+
*/
|
|
25
|
+
loaders?: {
|
|
26
|
+
/**
|
|
27
|
+
* Preload images
|
|
28
|
+
* @default true
|
|
29
|
+
*/
|
|
30
|
+
img?: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Preload videos. Only metadata
|
|
33
|
+
* @default true
|
|
34
|
+
*/
|
|
35
|
+
video?: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Selector for elements to be preloaded.
|
|
38
|
+
* These elements may have such properties as 'isLoaded' or 'isComplete'
|
|
39
|
+
* or attributes like 'data-is-loaded', 'is-loaded'.
|
|
40
|
+
* @default '.js-preload'
|
|
41
|
+
*/
|
|
42
|
+
custom?: string | false;
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* Smooth calculation settings
|
|
46
|
+
*/
|
|
47
|
+
calc?: {
|
|
48
|
+
/**
|
|
49
|
+
* Linear interpolation speed. If false, animation will not be used.
|
|
50
|
+
* @default 0.1
|
|
51
|
+
*/
|
|
52
|
+
lerp?: number | false;
|
|
53
|
+
/**
|
|
54
|
+
* If true and 'lerp' is less than 1, the animation will be stopped
|
|
55
|
+
* and an animation Timeline will be launched to end the progress calculation.
|
|
56
|
+
* If false, the progress smooth calculation will end through
|
|
57
|
+
* linear interpolation.
|
|
58
|
+
* @default 500
|
|
59
|
+
*/
|
|
60
|
+
forceEnd?: number | false;
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Changeable properties
|
|
66
|
+
*/
|
|
67
|
+
export interface ChangeableProp extends NPreloader.ChangeableProp { }
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Available callbacks
|
|
71
|
+
*/
|
|
72
|
+
export interface CallbacksTypes extends NPreloader.CallbacksTypes {
|
|
73
|
+
'resourceLoad': false;
|
|
74
|
+
'progress': {
|
|
75
|
+
progress: number;
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
export interface CustomResource extends Element {
|
|
80
|
+
isLoaded?: boolean;
|
|
81
|
+
isComplete?: boolean;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* A page preloader with smooth progress calculation
|
|
90
|
+
*/
|
|
91
|
+
export class ProgressPreloader <
|
|
92
|
+
StaticProp extends NProgressPreloader.StaticProp = NProgressPreloader.StaticProp,
|
|
93
|
+
ChangeableProp extends NProgressPreloader.ChangeableProp = NProgressPreloader.ChangeableProp,
|
|
94
|
+
CallbacksTypes extends NProgressPreloader.CallbacksTypes = NProgressPreloader.CallbacksTypes,
|
|
95
|
+
> extends Preloader <
|
|
96
|
+
StaticProp,
|
|
97
|
+
ChangeableProp,
|
|
98
|
+
CallbacksTypes
|
|
99
|
+
> {
|
|
100
|
+
protected _getDefaultProp <
|
|
101
|
+
T extends RequiredModuleProp<StaticProp & ChangeableProp>
|
|
102
|
+
> (): T {
|
|
103
|
+
return {
|
|
104
|
+
...super._getDefaultProp(),
|
|
105
|
+
resources: 0,
|
|
106
|
+
loaders: {
|
|
107
|
+
img: true,
|
|
108
|
+
video: true,
|
|
109
|
+
custom: '.js-preload',
|
|
110
|
+
},
|
|
111
|
+
calc: {
|
|
112
|
+
lerp: 0.1,
|
|
113
|
+
forceEnd: 500,
|
|
114
|
+
},
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Image resources
|
|
122
|
+
*/
|
|
123
|
+
get imgs () {
|
|
124
|
+
return this._imgs;
|
|
125
|
+
}
|
|
126
|
+
protected _imgs: HTMLImageElement[];
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Video resources
|
|
130
|
+
*/
|
|
131
|
+
get videos () {
|
|
132
|
+
return this._videos;
|
|
133
|
+
}
|
|
134
|
+
protected _videos: HTMLVideoElement[];
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Custom resources
|
|
138
|
+
*/
|
|
139
|
+
get customResources () {
|
|
140
|
+
return this._customResources;
|
|
141
|
+
}
|
|
142
|
+
protected _customResources: NProgressPreloader.CustomResource[];
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Quantity of resources to be preloader
|
|
148
|
+
*/
|
|
149
|
+
get resourcesTotal () {
|
|
150
|
+
return this._resourcesTotal;
|
|
151
|
+
}
|
|
152
|
+
protected _resourcesTotal: number;
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Quantity of resources been already loaded
|
|
156
|
+
*/
|
|
157
|
+
get resourcesLoaded () {
|
|
158
|
+
return this._resourcesLoaded;
|
|
159
|
+
}
|
|
160
|
+
protected _resourcesLoaded: number;
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* Progress of resources loaded
|
|
164
|
+
*/
|
|
165
|
+
get loadProgress () {
|
|
166
|
+
return this.resourcesLoaded / this.resourcesTotal;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Preloader progress
|
|
171
|
+
*/
|
|
172
|
+
get progress () {
|
|
173
|
+
return this._progress;
|
|
174
|
+
}
|
|
175
|
+
protected set progress (val: number) {
|
|
176
|
+
this._progress = val;
|
|
177
|
+
this._handleProgress();
|
|
178
|
+
}
|
|
179
|
+
protected _progress: number;
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
/**
|
|
184
|
+
* Animation progress. For smooth progress calculation
|
|
185
|
+
*/
|
|
186
|
+
protected _animationFrame?: AnimationFrame;
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* A timeline to finish progress animation
|
|
190
|
+
*/
|
|
191
|
+
protected _endTimeline?: Timeline;
|
|
192
|
+
|
|
193
|
+
|
|
194
|
+
|
|
195
|
+
constructor (
|
|
196
|
+
initialProp?: (StaticProp & ChangeableProp),
|
|
197
|
+
init = true,
|
|
198
|
+
) {
|
|
199
|
+
super(initialProp, false);
|
|
200
|
+
|
|
201
|
+
// set default vars
|
|
202
|
+
this._imgs = [];
|
|
203
|
+
this._videos = [];
|
|
204
|
+
this._customResources = [];
|
|
205
|
+
this._resourcesTotal = 1 + this.prop.resources;
|
|
206
|
+
this._resourcesLoaded = 0;
|
|
207
|
+
this._progress = 0;
|
|
208
|
+
|
|
209
|
+
// initialize the class
|
|
210
|
+
if (init) {
|
|
211
|
+
this.init();
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
protected _constructor () {
|
|
216
|
+
super._constructor();
|
|
217
|
+
this._getResources();
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
protected _setEvents () {
|
|
221
|
+
super._setEvents();
|
|
222
|
+
|
|
223
|
+
const { calc } = this.prop;
|
|
224
|
+
const { lerp: lerpVal } = calc;
|
|
225
|
+
|
|
226
|
+
// create animation frame if needed
|
|
227
|
+
if (typeof lerpVal === 'number') {
|
|
228
|
+
this._animationFrame = new AnimationFrame();
|
|
229
|
+
this._animationFrame.addCallback('frame', () => {
|
|
230
|
+
this.progress = lerp(
|
|
231
|
+
this.progress,
|
|
232
|
+
this.loadProgress,
|
|
233
|
+
lerpVal,
|
|
234
|
+
);
|
|
235
|
+
});
|
|
236
|
+
this._animationFrame.play();
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
// preload resources
|
|
240
|
+
this._preloadResources();
|
|
241
|
+
|
|
242
|
+
// iterate resources on page load
|
|
243
|
+
this._app.onPageLoaded().then(() => {
|
|
244
|
+
this._handleLoadedResource();
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
/**
|
|
249
|
+
* Seek the moment when the page is fully loaded
|
|
250
|
+
*/
|
|
251
|
+
protected _onLoaded () {
|
|
252
|
+
return new PCancelable((
|
|
253
|
+
resolve: (...arg: any) => void,
|
|
254
|
+
) => {
|
|
255
|
+
let callbackLaunched = false;
|
|
256
|
+
this.callbacks.add('progress', (data) => {
|
|
257
|
+
if (data.progress >= 1 && !callbackLaunched) {
|
|
258
|
+
resolve();
|
|
259
|
+
callbackLaunched = true;
|
|
260
|
+
}
|
|
261
|
+
}, {
|
|
262
|
+
protected: true,
|
|
263
|
+
});
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* Get resources to be preloader
|
|
271
|
+
*/
|
|
272
|
+
protected _getResources () {
|
|
273
|
+
const { loaders } = this.prop;
|
|
274
|
+
// get images
|
|
275
|
+
if (loaders.img) {
|
|
276
|
+
const imgs = selectAll('img');
|
|
277
|
+
imgs.forEach((img) => {
|
|
278
|
+
this._imgs.push(img);
|
|
279
|
+
this._resourcesTotal += 1;
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
// get videos
|
|
284
|
+
if (loaders.video) {
|
|
285
|
+
const videos = selectAll('video');
|
|
286
|
+
videos.forEach((video) => {
|
|
287
|
+
this._videos.push(video);
|
|
288
|
+
this._resourcesTotal += 1;
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
// get custom resources
|
|
293
|
+
if (loaders.custom) {
|
|
294
|
+
this._customResources = Array.from(selectAll(loaders.custom));
|
|
295
|
+
this._resourcesTotal += this._customResources.length;
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
/**
|
|
300
|
+
* Preload all resources
|
|
301
|
+
*/
|
|
302
|
+
protected _preloadResources () {
|
|
303
|
+
// check if no resources
|
|
304
|
+
if (this._resourcesTotal === 0) {
|
|
305
|
+
this._resourcesTotal = 1;
|
|
306
|
+
this._handleLoadedResource();
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
// preload images
|
|
310
|
+
this._imgs.forEach((img) => {
|
|
311
|
+
if (img.complete) {
|
|
312
|
+
this._handleLoadedResource();
|
|
313
|
+
} else {
|
|
314
|
+
const image = new Image();
|
|
315
|
+
img.addEventListener('load', () => {
|
|
316
|
+
this._handleLoadedResource();
|
|
317
|
+
});
|
|
318
|
+
img.addEventListener('error', () => {
|
|
319
|
+
this._handleLoadedResource();
|
|
320
|
+
});
|
|
321
|
+
image.src = img.src;
|
|
322
|
+
}
|
|
323
|
+
});
|
|
324
|
+
|
|
325
|
+
// preload videos
|
|
326
|
+
this._videos.forEach((video) => {
|
|
327
|
+
if (video.readyState > 0) {
|
|
328
|
+
this._handleLoadedResource();
|
|
329
|
+
} else {
|
|
330
|
+
if (video.preload === 'none') {
|
|
331
|
+
this._handleLoadedResource();
|
|
332
|
+
return;
|
|
333
|
+
}
|
|
334
|
+
video.addEventListener('error', () => {
|
|
335
|
+
this._handleLoadedResource();
|
|
336
|
+
});
|
|
337
|
+
video.addEventListener('loadedmetadata', () => {
|
|
338
|
+
this._handleLoadedResource();
|
|
339
|
+
});
|
|
340
|
+
}
|
|
341
|
+
});
|
|
342
|
+
|
|
343
|
+
// preload custom resources
|
|
344
|
+
this._customResources.forEach((el) => {
|
|
345
|
+
this._seekCustomResourceLoaded(el).then(() => {
|
|
346
|
+
this._handleLoadedResource();
|
|
347
|
+
});
|
|
348
|
+
});
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
/**
|
|
352
|
+
* Seek the moment when a custom resource is loaded
|
|
353
|
+
*/
|
|
354
|
+
protected _seekCustomResourceLoaded (
|
|
355
|
+
el: NProgressPreloader.CustomResource,
|
|
356
|
+
) {
|
|
357
|
+
return new Promise((
|
|
358
|
+
resolve: (...arg: any) => void,
|
|
359
|
+
) => {
|
|
360
|
+
// check if the element is loaded
|
|
361
|
+
if (el.isComplete || el.isLoaded) {
|
|
362
|
+
resolve();
|
|
363
|
+
return;
|
|
364
|
+
}
|
|
365
|
+
if (
|
|
366
|
+
el.getAttribute('data-is-loaded')
|
|
367
|
+
|| el.getAttribute('is-loaded')
|
|
368
|
+
) {
|
|
369
|
+
resolve();
|
|
370
|
+
return;
|
|
371
|
+
}
|
|
372
|
+
// otherwise, seek the moment when it will be loaded
|
|
373
|
+
setTimeout(() => {
|
|
374
|
+
if (this.destroyed) {
|
|
375
|
+
return;
|
|
376
|
+
}
|
|
377
|
+
this._seekCustomResourceLoaded(el).then(() => {
|
|
378
|
+
resolve();
|
|
379
|
+
});
|
|
380
|
+
}, 50);
|
|
381
|
+
});
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
/**
|
|
385
|
+
* Iterate quantity of loaded resources.
|
|
386
|
+
* @param quantity - Only integers
|
|
387
|
+
*/
|
|
388
|
+
public addResourcesLoaded (
|
|
389
|
+
quantity = 1,
|
|
390
|
+
) {
|
|
391
|
+
for (let index = 0; index < quantity; index += 1) {
|
|
392
|
+
this._handleLoadedResource();
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
/**
|
|
397
|
+
* Iterate quantity of total resources.
|
|
398
|
+
* @param quantity - Only integers
|
|
399
|
+
*/
|
|
400
|
+
public addResourcesTotal (
|
|
401
|
+
quantity = 1,
|
|
402
|
+
) {
|
|
403
|
+
this._resourcesTotal += quantity;
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
|
|
407
|
+
|
|
408
|
+
/**
|
|
409
|
+
* Event on resource loaded
|
|
410
|
+
*/
|
|
411
|
+
protected _handleLoadedResource () {
|
|
412
|
+
if (this.loadProgress >= 1) {
|
|
413
|
+
return;
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
this._resourcesLoaded += 1;
|
|
417
|
+
this.callbacks.tbt('resourceLoad', false);
|
|
418
|
+
|
|
419
|
+
// update current preloader progress if no animation set
|
|
420
|
+
if (!this._animationFrame) {
|
|
421
|
+
this.progress = this.loadProgress;
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
/**
|
|
426
|
+
* Event on progress change
|
|
427
|
+
*/
|
|
428
|
+
protected _handleProgress () {
|
|
429
|
+
// launch callback
|
|
430
|
+
this.callbacks.tbt('progress', {
|
|
431
|
+
progress: this._progress,
|
|
432
|
+
});
|
|
433
|
+
|
|
434
|
+
// if full progress,
|
|
435
|
+
// we hide the preloader
|
|
436
|
+
if (this.progress >= 1) {
|
|
437
|
+
// destroy animations
|
|
438
|
+
if (this._animationFrame) {
|
|
439
|
+
this._animationFrame.destroy();
|
|
440
|
+
this._animationFrame = undefined;
|
|
441
|
+
}
|
|
442
|
+
return;
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
// otherwise, we check if there's a need to launch a timeline
|
|
446
|
+
// to end the animation
|
|
447
|
+
if (
|
|
448
|
+
typeof this.prop.calc.forceEnd === 'number'
|
|
449
|
+
&& this.loadProgress >= 1
|
|
450
|
+
&& !this._endTimeline
|
|
451
|
+
) {
|
|
452
|
+
// destroy animation frame
|
|
453
|
+
if (this._animationFrame) {
|
|
454
|
+
this._animationFrame.destroy();
|
|
455
|
+
this._animationFrame = undefined;
|
|
456
|
+
}
|
|
457
|
+
// create a timeline
|
|
458
|
+
this._endTimeline = new Timeline({
|
|
459
|
+
duration: this.prop.calc.forceEnd,
|
|
460
|
+
});
|
|
461
|
+
const startProgress = this.progress;
|
|
462
|
+
this._endTimeline.addCallback('progress', (data) => {
|
|
463
|
+
const diff = 1 - startProgress;
|
|
464
|
+
this.progress = startProgress + (diff * data.progress);
|
|
465
|
+
});
|
|
466
|
+
this._endTimeline.play();
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
// and since some time the preloader will be hidden automatically.
|
|
470
|
+
// See '_onLoaded' method.
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
|
|
474
|
+
|
|
475
|
+
/**
|
|
476
|
+
* Destroy the component
|
|
477
|
+
*/
|
|
478
|
+
protected _destroy () {
|
|
479
|
+
super._destroy();
|
|
480
|
+
if (this._animationFrame) {
|
|
481
|
+
this._animationFrame.destroy();
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
}
|