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,364 @@
|
|
|
1
|
+
import { addEventListener, createElement, IAddEventListener } from 'vevet-dom';
|
|
2
|
+
import { IRemovable } from '../../../utils/types/general';
|
|
3
|
+
import onScroll from '../../../utils/listeners/onScroll';
|
|
4
|
+
import boundVal from '../../../utils/math/boundVal';
|
|
5
|
+
import { DraggerMove, NDraggerMove } from '../../dragger/DraggerMove';
|
|
6
|
+
import { SmoothScroll } from '../smooth-scroll/SmoothScroll';
|
|
7
|
+
|
|
8
|
+
interface Data {
|
|
9
|
+
container: Window | SmoothScroll | Element;
|
|
10
|
+
domParent: Element;
|
|
11
|
+
dir: 'x' | 'y';
|
|
12
|
+
autoHide: boolean;
|
|
13
|
+
autoSize: boolean;
|
|
14
|
+
minSize: number;
|
|
15
|
+
optimizeCalculations: boolean;
|
|
16
|
+
prefix: string;
|
|
17
|
+
isDraggable: boolean;
|
|
18
|
+
draggableScrollBehavior: 'smooth' | 'auto';
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export default class Bar {
|
|
22
|
+
// elements
|
|
23
|
+
protected _outer: HTMLElement;
|
|
24
|
+
get outer () {
|
|
25
|
+
return this._outer;
|
|
26
|
+
}
|
|
27
|
+
protected _thumb: HTMLElement;
|
|
28
|
+
get thumb () {
|
|
29
|
+
return this._thumb;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// global
|
|
33
|
+
get prefix () {
|
|
34
|
+
return this._prop.prefix;
|
|
35
|
+
}
|
|
36
|
+
get isX () {
|
|
37
|
+
return this.prop.dir === 'x';
|
|
38
|
+
}
|
|
39
|
+
get isY () {
|
|
40
|
+
return !this.isX;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// sizes
|
|
44
|
+
protected _outerHeight: number;
|
|
45
|
+
protected _outerWidth: number;
|
|
46
|
+
protected _thumbHeight: number;
|
|
47
|
+
protected _thumbWidth: number;
|
|
48
|
+
|
|
49
|
+
get scrollElement () {
|
|
50
|
+
return this.prop.container instanceof Window
|
|
51
|
+
? document.documentElement : this.prop.container;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
get scrollLine () {
|
|
55
|
+
const { scrollElement } = this;
|
|
56
|
+
return this.isX
|
|
57
|
+
? scrollElement.scrollWidth - scrollElement.clientWidth
|
|
58
|
+
: scrollElement.scrollHeight - scrollElement.clientHeight;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
get scrollWidth () {
|
|
62
|
+
return this.scrollElement.scrollWidth;
|
|
63
|
+
}
|
|
64
|
+
get scrollHeight () {
|
|
65
|
+
return this.scrollElement.scrollHeight;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// states
|
|
69
|
+
protected _scrollVal: number;
|
|
70
|
+
protected _coordsAtDragStart: {
|
|
71
|
+
left: number;
|
|
72
|
+
top: number;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// events
|
|
76
|
+
protected _listeners: IAddEventListener[];
|
|
77
|
+
protected _scrollEvent?: IRemovable;
|
|
78
|
+
protected _actionTimeout?: NodeJS.Timeout;
|
|
79
|
+
protected _dragger?: DraggerMove;
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
get prop () {
|
|
84
|
+
return this._prop;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
constructor (
|
|
88
|
+
protected _prop: Data,
|
|
89
|
+
) {
|
|
90
|
+
const {
|
|
91
|
+
prefix, dir, domParent, container, autoHide,
|
|
92
|
+
} = _prop;
|
|
93
|
+
|
|
94
|
+
// set default vars
|
|
95
|
+
this._outerHeight = 0;
|
|
96
|
+
this._outerWidth = 0;
|
|
97
|
+
this._thumbHeight = 0;
|
|
98
|
+
this._thumbWidth = 0;
|
|
99
|
+
this._scrollVal = 0;
|
|
100
|
+
this._coordsAtDragStart = {
|
|
101
|
+
left: 0,
|
|
102
|
+
top: 0,
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
// create outer
|
|
106
|
+
let outerClassNames = `${prefix} ${prefix}_${dir}`;
|
|
107
|
+
if (container instanceof Window) {
|
|
108
|
+
outerClassNames += ' in-window';
|
|
109
|
+
}
|
|
110
|
+
this._outer = createElement('div', {
|
|
111
|
+
parent: domParent,
|
|
112
|
+
class: outerClassNames,
|
|
113
|
+
});
|
|
114
|
+
// create a thumb
|
|
115
|
+
this._thumb = createElement('div', {
|
|
116
|
+
parent: this._outer,
|
|
117
|
+
class: `${prefix}__thumb ${prefix}__thumb_${dir}`,
|
|
118
|
+
});
|
|
119
|
+
|
|
120
|
+
// set auto hide classes
|
|
121
|
+
if (autoHide) {
|
|
122
|
+
this.outer.classList.add('auto-hide');
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// set events
|
|
126
|
+
this._listeners = [];
|
|
127
|
+
this._setEvents();
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
get scrollValues () {
|
|
133
|
+
const { container } = this.prop;
|
|
134
|
+
let top = 0;
|
|
135
|
+
let left = 0;
|
|
136
|
+
if (container instanceof Window) {
|
|
137
|
+
top = container.pageYOffset;
|
|
138
|
+
left = container.pageXOffset;
|
|
139
|
+
} else if (container instanceof SmoothScroll) {
|
|
140
|
+
top = container.targetTop;
|
|
141
|
+
left = container.targetLeft;
|
|
142
|
+
} else {
|
|
143
|
+
top = container.scrollTop;
|
|
144
|
+
left = container.scrollLeft;
|
|
145
|
+
}
|
|
146
|
+
return {
|
|
147
|
+
left,
|
|
148
|
+
top,
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Set scrolblar events
|
|
156
|
+
*/
|
|
157
|
+
protected _setEvents () {
|
|
158
|
+
// set hover events
|
|
159
|
+
this._listeners.push(addEventListener(this.outer, 'mouseenter', this._handleHover.bind(this, true)));
|
|
160
|
+
this._listeners.push(addEventListener(this.outer, 'mouseleave', this._handleHover.bind(this, false)));
|
|
161
|
+
|
|
162
|
+
// set scroll events
|
|
163
|
+
this._scrollEvent = onScroll(this.prop.container, (data) => {
|
|
164
|
+
this._handleScroll(data);
|
|
165
|
+
});
|
|
166
|
+
|
|
167
|
+
// set dragger
|
|
168
|
+
if (this.prop.isDraggable) {
|
|
169
|
+
this._dragger = new DraggerMove({
|
|
170
|
+
container: this.thumb,
|
|
171
|
+
});
|
|
172
|
+
this._dragger.addCallback('start', () => {
|
|
173
|
+
this.thumb.classList.add('in-action');
|
|
174
|
+
this._disableScrollBehaviour(true);
|
|
175
|
+
this._coordsAtDragStart = this.scrollValues;
|
|
176
|
+
});
|
|
177
|
+
this._dragger.addCallback('move', (data) => {
|
|
178
|
+
this._handleThumbDrag(data);
|
|
179
|
+
});
|
|
180
|
+
this._dragger.addCallback('end', () => {
|
|
181
|
+
this.thumb.classList.remove('in-action');
|
|
182
|
+
this._disableScrollBehaviour(false);
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* Toggle scrollBehavior: disable & reset smooth scrolling
|
|
189
|
+
*/
|
|
190
|
+
protected _disableScrollBehaviour (
|
|
191
|
+
bool: boolean,
|
|
192
|
+
) {
|
|
193
|
+
const val = bool ? 'auto' : 'unset';
|
|
194
|
+
if (this.prop.container instanceof Window) {
|
|
195
|
+
document.documentElement.style.scrollBehavior = val;
|
|
196
|
+
} else if (this.prop.container instanceof HTMLElement) {
|
|
197
|
+
document.documentElement.style.scrollBehavior = val;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* Handle hover state
|
|
203
|
+
*/
|
|
204
|
+
protected _handleHover (
|
|
205
|
+
bool: boolean,
|
|
206
|
+
) {
|
|
207
|
+
this.outer.classList.toggle('is-hovered', bool);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* Handle Scroll Event
|
|
212
|
+
*/
|
|
213
|
+
protected _handleScroll (data: {
|
|
214
|
+
scrollTop: number;
|
|
215
|
+
scrollLeft: number;
|
|
216
|
+
}) {
|
|
217
|
+
// resize if needed
|
|
218
|
+
if (!this.prop.optimizeCalculations) {
|
|
219
|
+
this.resize();
|
|
220
|
+
}
|
|
221
|
+
// check if changes happened
|
|
222
|
+
let hasChanged = false;
|
|
223
|
+
if (this.isX) {
|
|
224
|
+
hasChanged = data.scrollLeft !== this._scrollVal;
|
|
225
|
+
this._scrollVal = data.scrollLeft;
|
|
226
|
+
} else {
|
|
227
|
+
hasChanged = data.scrollTop !== this._scrollVal;
|
|
228
|
+
this._scrollVal = data.scrollTop;
|
|
229
|
+
}
|
|
230
|
+
if (!hasChanged) {
|
|
231
|
+
return;
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
// set auto hide
|
|
235
|
+
if (this.prop.autoHide && hasChanged) {
|
|
236
|
+
this.outer.classList.add('in-action');
|
|
237
|
+
if (this._actionTimeout) {
|
|
238
|
+
clearTimeout(this._actionTimeout);
|
|
239
|
+
this._actionTimeout = undefined;
|
|
240
|
+
}
|
|
241
|
+
this._actionTimeout = setTimeout(() => {
|
|
242
|
+
this.outer.classList.remove('in-action');
|
|
243
|
+
}, 500) as unknown as NodeJS.Timeout;
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
// render thumb
|
|
247
|
+
if (this.prop.optimizeCalculations) {
|
|
248
|
+
this._renderThumb();
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
/**
|
|
253
|
+
* Event on dragger move
|
|
254
|
+
*/
|
|
255
|
+
protected _handleThumbDrag (
|
|
256
|
+
data: NDraggerMove.CallbacksTypes['move'],
|
|
257
|
+
) {
|
|
258
|
+
data.evt.preventDefault();
|
|
259
|
+
const { container } = this.prop;
|
|
260
|
+
|
|
261
|
+
// calculate scroll iterators
|
|
262
|
+
const leftIterator = (
|
|
263
|
+
(data.coords.x - data.start.x) / (this._outerWidth - this._thumbWidth)
|
|
264
|
+
) * this.scrollLine;
|
|
265
|
+
const topIterator = (
|
|
266
|
+
(data.coords.y - data.start.y) / (this._outerHeight - this._thumbHeight)
|
|
267
|
+
) * this.scrollLine;
|
|
268
|
+
|
|
269
|
+
// calculate new scroll values
|
|
270
|
+
let { left, top } = this._coordsAtDragStart;
|
|
271
|
+
if (this.isX) {
|
|
272
|
+
left += leftIterator;
|
|
273
|
+
} else {
|
|
274
|
+
top += topIterator;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
// apply the values
|
|
278
|
+
container.scrollTo({
|
|
279
|
+
top,
|
|
280
|
+
left,
|
|
281
|
+
behavior: container instanceof SmoothScroll ? this.prop.draggableScrollBehavior : 'auto',
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
/**
|
|
286
|
+
* Render the thumb
|
|
287
|
+
*/
|
|
288
|
+
protected _renderThumb () {
|
|
289
|
+
// calculate progress
|
|
290
|
+
const progress = boundVal(
|
|
291
|
+
this._scrollVal / this.scrollLine,
|
|
292
|
+
[0, 1],
|
|
293
|
+
);
|
|
294
|
+
// calculate transforms
|
|
295
|
+
const x = this.isX ? (this._outerWidth - this._thumbWidth) * progress : 0;
|
|
296
|
+
const y = this.isY ? (this._outerHeight - this._thumbHeight) * progress : 0;
|
|
297
|
+
|
|
298
|
+
// render the thumb
|
|
299
|
+
this._thumb.style.transform = `translate(${x}px, ${y}px)`;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
/**
|
|
305
|
+
* Resize the scene
|
|
306
|
+
*/
|
|
307
|
+
public resize () {
|
|
308
|
+
const { outer, thumb, scrollLine } = this;
|
|
309
|
+
const { minSize } = this.prop;
|
|
310
|
+
|
|
311
|
+
// get outer sizes
|
|
312
|
+
this._outerHeight = outer.clientHeight;
|
|
313
|
+
this._outerWidth = outer.clientWidth;
|
|
314
|
+
|
|
315
|
+
// calculate thumb sizes
|
|
316
|
+
if (this.prop.autoSize) {
|
|
317
|
+
if (this.isX) {
|
|
318
|
+
const barSize = boundVal(
|
|
319
|
+
this._outerWidth / (this.scrollWidth / (
|
|
320
|
+
this.scrollWidth - scrollLine
|
|
321
|
+
)),
|
|
322
|
+
[minSize, Infinity],
|
|
323
|
+
);
|
|
324
|
+
thumb.style.width = `${barSize}px`;
|
|
325
|
+
} else {
|
|
326
|
+
const barSize = boundVal(
|
|
327
|
+
this._outerHeight / (this.scrollHeight / (
|
|
328
|
+
this.scrollHeight - scrollLine
|
|
329
|
+
)),
|
|
330
|
+
[minSize, Infinity],
|
|
331
|
+
);
|
|
332
|
+
thumb.style.height = `${barSize}px`;
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
// get thumb sizes
|
|
337
|
+
this._thumbHeight = thumb.clientHeight;
|
|
338
|
+
this._thumbWidth = thumb.clientWidth;
|
|
339
|
+
|
|
340
|
+
// define if empty
|
|
341
|
+
outer.classList.toggle('is-empty', scrollLine === 0);
|
|
342
|
+
|
|
343
|
+
// render the scrollbar thumb
|
|
344
|
+
this._renderThumb();
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
|
|
348
|
+
|
|
349
|
+
public destroy () {
|
|
350
|
+
this._listeners.forEach((listener) => {
|
|
351
|
+
listener.remove();
|
|
352
|
+
});
|
|
353
|
+
if (this._scrollEvent) {
|
|
354
|
+
this._scrollEvent.remove();
|
|
355
|
+
}
|
|
356
|
+
if (this._actionTimeout) {
|
|
357
|
+
clearTimeout(this._actionTimeout);
|
|
358
|
+
}
|
|
359
|
+
if (this._dragger) {
|
|
360
|
+
this._dragger.destroy();
|
|
361
|
+
}
|
|
362
|
+
this._outer.remove();
|
|
363
|
+
}
|
|
364
|
+
}
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
import { createElement, selectOne } from 'vevet-dom';
|
|
2
|
+
import { Component, NComponent } from '../../../base/Component';
|
|
3
|
+
import { RequiredModuleProp } from '../../../utils/types/utility';
|
|
4
|
+
import { SmoothScroll } from '../smooth-scroll/SmoothScroll';
|
|
5
|
+
import Bar from './Bar';
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
export namespace NScrollBar {
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Static properties
|
|
13
|
+
*/
|
|
14
|
+
export interface StaticProp extends NComponent.StaticProp {
|
|
15
|
+
/**
|
|
16
|
+
* The scrollable element
|
|
17
|
+
* @default window
|
|
18
|
+
*/
|
|
19
|
+
container?: Window | SmoothScroll | Element | string;
|
|
20
|
+
/**
|
|
21
|
+
* The element that will contain the scrollbar.
|
|
22
|
+
* If false, the property 'container' will be taken into consideration.
|
|
23
|
+
* @default false
|
|
24
|
+
*/
|
|
25
|
+
domParent?: false | Element;
|
|
26
|
+
/**
|
|
27
|
+
* If the scrollbar must be interactive
|
|
28
|
+
* @default true
|
|
29
|
+
*/
|
|
30
|
+
draggable?: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Automatically define the size of the scrollbar thumb
|
|
33
|
+
* @default true
|
|
34
|
+
*/
|
|
35
|
+
autoSize?: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Automatically hide scrollbars
|
|
38
|
+
* @default true
|
|
39
|
+
*/
|
|
40
|
+
autoHide?: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Minimum size of the scrollbar thumb
|
|
43
|
+
* @default 50
|
|
44
|
+
*/
|
|
45
|
+
minSize?: number;
|
|
46
|
+
/**
|
|
47
|
+
* Optimize sizes calculation.
|
|
48
|
+
* If true, the sizes are calculated only when calling the "resize" method.
|
|
49
|
+
* Subsequently, if content changes, the scrollbar may be of false sizes.
|
|
50
|
+
* @default false
|
|
51
|
+
*/
|
|
52
|
+
optimizeCalculations?: boolean;
|
|
53
|
+
/**
|
|
54
|
+
* If the scroll bar is draggable
|
|
55
|
+
* @default true
|
|
56
|
+
*/
|
|
57
|
+
isDraggable?: boolean;
|
|
58
|
+
/**
|
|
59
|
+
* What scroll behavior should be used when dragging the ScrollBar thumb.
|
|
60
|
+
* Only for SmoothScroll
|
|
61
|
+
* @default 'smooth'
|
|
62
|
+
*/
|
|
63
|
+
draggableScrollBehavior?: 'smooth' | 'auto';
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Changeable properties
|
|
68
|
+
*/
|
|
69
|
+
export interface ChangeableProp extends NComponent.ChangeableProp { }
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Available callbacks
|
|
73
|
+
*/
|
|
74
|
+
export interface CallbacksTypes extends NComponent.CallbacksTypes { }
|
|
75
|
+
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Create custom scroll bar
|
|
82
|
+
*/
|
|
83
|
+
export class ScrollBar <
|
|
84
|
+
StaticProp extends NScrollBar.StaticProp = NScrollBar.StaticProp,
|
|
85
|
+
ChangeableProp extends NScrollBar.ChangeableProp = NScrollBar.ChangeableProp,
|
|
86
|
+
CallbacksTypes extends NScrollBar.CallbacksTypes = NScrollBar.CallbacksTypes,
|
|
87
|
+
> extends Component <
|
|
88
|
+
StaticProp,
|
|
89
|
+
ChangeableProp,
|
|
90
|
+
CallbacksTypes
|
|
91
|
+
> {
|
|
92
|
+
protected _getDefaultProp <
|
|
93
|
+
T extends RequiredModuleProp<StaticProp & ChangeableProp>
|
|
94
|
+
> (): T {
|
|
95
|
+
return {
|
|
96
|
+
...super._getDefaultProp(),
|
|
97
|
+
container: window,
|
|
98
|
+
domParent: false,
|
|
99
|
+
draggable: true,
|
|
100
|
+
autoSize: true,
|
|
101
|
+
autoHide: true,
|
|
102
|
+
minSize: 50,
|
|
103
|
+
optimizeCalculations: false,
|
|
104
|
+
isDraggable: true,
|
|
105
|
+
draggableScrollBehavior: 'smooth',
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
get prefix () {
|
|
110
|
+
return `${this._app.prefix}scrollbar`;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Scroll container
|
|
115
|
+
*/
|
|
116
|
+
get container () {
|
|
117
|
+
return this._container;
|
|
118
|
+
}
|
|
119
|
+
protected _container: Element | Window | SmoothScroll;
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Get scrollable element
|
|
123
|
+
*/
|
|
124
|
+
get scrollableElement () {
|
|
125
|
+
const { container } = this;
|
|
126
|
+
if (container instanceof Window) {
|
|
127
|
+
return this._app.body;
|
|
128
|
+
}
|
|
129
|
+
if (container instanceof Element) {
|
|
130
|
+
return container;
|
|
131
|
+
}
|
|
132
|
+
return container.outer;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* The element into wchich scroll bars will be appended
|
|
137
|
+
*/
|
|
138
|
+
get domParent () {
|
|
139
|
+
const { domParent } = this.prop;
|
|
140
|
+
const { container } = this;
|
|
141
|
+
if (!domParent) {
|
|
142
|
+
if (this._scrollWrapper) {
|
|
143
|
+
return this._scrollWrapper;
|
|
144
|
+
}
|
|
145
|
+
if (container instanceof Window) {
|
|
146
|
+
return this._app.body;
|
|
147
|
+
}
|
|
148
|
+
if (container instanceof Element) {
|
|
149
|
+
return container;
|
|
150
|
+
}
|
|
151
|
+
return container.outer;
|
|
152
|
+
}
|
|
153
|
+
return domParent;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* The scroll wrapper.
|
|
158
|
+
* Used for wrapper scroll
|
|
159
|
+
*/
|
|
160
|
+
protected _scrollWrapper?: HTMLElement;
|
|
161
|
+
|
|
162
|
+
// scrollbars
|
|
163
|
+
protected _xBar: Bar;
|
|
164
|
+
protected _yBar: Bar;
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
constructor (
|
|
169
|
+
initialProp?: (StaticProp & ChangeableProp),
|
|
170
|
+
init = true,
|
|
171
|
+
) {
|
|
172
|
+
super(initialProp, false);
|
|
173
|
+
const {
|
|
174
|
+
autoHide, autoSize, minSize,
|
|
175
|
+
optimizeCalculations, isDraggable, draggableScrollBehavior,
|
|
176
|
+
} = this.prop;
|
|
177
|
+
|
|
178
|
+
// get container
|
|
179
|
+
if (typeof this.prop.container === 'string') {
|
|
180
|
+
const el = selectOne(this.prop.container);
|
|
181
|
+
if (el) {
|
|
182
|
+
this._container = el;
|
|
183
|
+
} else {
|
|
184
|
+
throw new Error('No scroll container');
|
|
185
|
+
}
|
|
186
|
+
} else {
|
|
187
|
+
this._container = this.prop.container;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
// create scrollBarsParent if needed
|
|
191
|
+
if (this.container instanceof Element) {
|
|
192
|
+
const { parentElement } = this.container;
|
|
193
|
+
if (parentElement) {
|
|
194
|
+
this._scrollWrapper = createElement('div');
|
|
195
|
+
this._scrollWrapper.style.position = 'relative';
|
|
196
|
+
this._scrollWrapper.style.display = 'inline-block';
|
|
197
|
+
parentElement.insertBefore(this._scrollWrapper, this.container);
|
|
198
|
+
this._scrollWrapper.appendChild(this.container);
|
|
199
|
+
this._scrollWrapper.classList.add(`${this.prefix}-wrapper`);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
// create bars
|
|
204
|
+
const barMainProp = {
|
|
205
|
+
container: this.container,
|
|
206
|
+
domParent: this.domParent,
|
|
207
|
+
autoHide,
|
|
208
|
+
autoSize,
|
|
209
|
+
minSize,
|
|
210
|
+
optimizeCalculations,
|
|
211
|
+
prefix: this.prefix,
|
|
212
|
+
isDraggable,
|
|
213
|
+
draggableScrollBehavior,
|
|
214
|
+
};
|
|
215
|
+
this._xBar = new Bar({
|
|
216
|
+
dir: 'x',
|
|
217
|
+
...barMainProp,
|
|
218
|
+
});
|
|
219
|
+
this._yBar = new Bar({
|
|
220
|
+
dir: 'y',
|
|
221
|
+
...barMainProp,
|
|
222
|
+
});
|
|
223
|
+
|
|
224
|
+
// add styles
|
|
225
|
+
this.scrollableElement.classList.add(`${this.prefix}-parent`);
|
|
226
|
+
|
|
227
|
+
// initialize the class
|
|
228
|
+
if (init) {
|
|
229
|
+
this.init();
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
// Set Module Events
|
|
234
|
+
protected _setEvents () {
|
|
235
|
+
super._setEvents();
|
|
236
|
+
const { container } = this;
|
|
237
|
+
|
|
238
|
+
// set resize event
|
|
239
|
+
if (container instanceof SmoothScroll) {
|
|
240
|
+
container.addCallback('resize', () => {
|
|
241
|
+
this.resize();
|
|
242
|
+
}, {
|
|
243
|
+
name: this.name,
|
|
244
|
+
});
|
|
245
|
+
} else {
|
|
246
|
+
this.addViewportCallback('', () => {
|
|
247
|
+
this.resize();
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
this.resize();
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
protected _onPropMutate () {
|
|
254
|
+
super._onPropMutate();
|
|
255
|
+
this.resize();
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
|
|
260
|
+
/**
|
|
261
|
+
* Resize the canvas
|
|
262
|
+
*/
|
|
263
|
+
public resize () {
|
|
264
|
+
this._xBar.resize();
|
|
265
|
+
this._yBar.resize();
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
|
|
269
|
+
|
|
270
|
+
/**
|
|
271
|
+
* Destroy the module
|
|
272
|
+
*/
|
|
273
|
+
protected _destroy () {
|
|
274
|
+
super._destroy();
|
|
275
|
+
|
|
276
|
+
// destroy bars
|
|
277
|
+
this._xBar.destroy();
|
|
278
|
+
this._yBar.destroy();
|
|
279
|
+
|
|
280
|
+
// remove scrollbars parent
|
|
281
|
+
if (!!this._scrollWrapper && this.container instanceof Element) {
|
|
282
|
+
const { parentElement } = this._scrollWrapper;
|
|
283
|
+
if (parentElement) {
|
|
284
|
+
parentElement.insertBefore(this.container, this._scrollWrapper);
|
|
285
|
+
}
|
|
286
|
+
this._scrollWrapper.remove();
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
// reset styles
|
|
290
|
+
this.scrollableElement.classList.remove(`${this.prefix}-parent`);
|
|
291
|
+
}
|
|
292
|
+
}
|