move.gl 0.0.1 → 0.0.2
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/README.md +185 -11
- package/dist/LICENSE +21 -0
- package/dist/README.md +212 -0
- package/dist/css/move.gl.css +43859 -0
- package/dist/css/move.gl.min.css +19 -0
- package/dist/js/index.cjs +1171 -0
- package/dist/js/index.cjs.map +1 -0
- package/dist/js/index.d.cts +184 -0
- package/dist/js/index.d.ts +184 -0
- package/dist/js/index.mjs +1135 -0
- package/dist/js/index.mjs.map +1 -0
- package/dist/package.json +68 -0
- package/{scss → dist/scss}/classes/_animations.scss +33 -14
- package/dist/scss/classes/_controls.scss +314 -0
- package/dist/scss/classes/_effects.scss +283 -0
- package/dist/scss/classes/_index.scss +28 -0
- package/dist/scss/classes/_loaders.scss +779 -0
- package/dist/scss/classes/_transforms.scss +138 -0
- package/dist/scss/classes/_transitions.scss +264 -0
- package/{scss → dist/scss}/dev/_deprecation.scss +6 -3
- package/{scss → dist/scss}/dev/_modules.scss +5 -6
- package/dist/scss/docs.scss +2344 -0
- package/dist/scss/docs.scss.bak +3133 -0
- package/dist/scss/functions/_index.scss +22 -0
- package/dist/scss/functions/scenes/_bubble.scss +32 -0
- package/dist/scss/functions/scenes/_index.scss +21 -0
- package/dist/scss/index.scss +17 -0
- package/dist/scss/maps/_controls.scss +85 -0
- package/dist/scss/maps/_index.scss +22 -0
- package/{scss → dist/scss}/mixins/_accessibility.scss +24 -3
- package/{scss → dist/scss}/mixins/_boot.scss +4 -4
- package/dist/scss/mixins/_index.scss +41 -0
- package/dist/scss/mixins/_screensaver.scss +228 -0
- package/dist/scss/mixins/_shape.scss +315 -0
- package/dist/scss/mixins/animations/_base.scss +403 -0
- package/dist/scss/mixins/animations/_beat.scss +137 -0
- package/{scss → dist/scss}/mixins/animations/_blink.scss +60 -52
- package/dist/scss/mixins/animations/_bounce.scss +306 -0
- package/{scss → dist/scss}/mixins/animations/_elastic.scss +26 -22
- package/dist/scss/mixins/animations/_fade.scss +393 -0
- package/{scss → dist/scss}/mixins/animations/_flash.scss +53 -61
- package/dist/scss/mixins/animations/_flip.scss +251 -0
- package/{scss → dist/scss}/mixins/animations/_float.scss +47 -32
- package/{scss → dist/scss}/mixins/animations/_glow.scss +69 -58
- package/dist/scss/mixins/animations/_heartbeat.scss +195 -0
- package/dist/scss/mixins/animations/_hinge.scss +118 -0
- package/dist/scss/mixins/animations/_index.scss +97 -0
- package/dist/scss/mixins/animations/_jello.scss +123 -0
- package/dist/scss/mixins/animations/_jiggle.scss +162 -0
- package/dist/scss/mixins/animations/_lightspeed.scss +135 -0
- package/{scss → dist/scss}/mixins/animations/_nod.scss +57 -65
- package/dist/scss/mixins/animations/_pop.scss +153 -0
- package/dist/scss/mixins/animations/_pulse.scss +275 -0
- package/{scss → dist/scss}/mixins/animations/_ripple.scss +47 -55
- package/dist/scss/mixins/animations/_roll.scss +217 -0
- package/dist/scss/mixins/animations/_rotate.scss +728 -0
- package/dist/scss/mixins/animations/_rubber.scss +115 -0
- package/dist/scss/mixins/animations/_scale.scss +382 -0
- package/dist/scss/mixins/animations/_shake.scss +233 -0
- package/dist/scss/mixins/animations/_slide.scss +501 -0
- package/dist/scss/mixins/animations/_spin.scss +322 -0
- package/{scss → dist/scss}/mixins/animations/_sway.scss +32 -49
- package/{scss → dist/scss}/mixins/animations/_swing.scss +47 -49
- package/{scss → dist/scss}/mixins/animations/_tada.scss +44 -42
- package/{scss → dist/scss}/mixins/animations/_twist.scss +40 -55
- package/{scss → dist/scss}/mixins/animations/_wave.scss +36 -53
- package/dist/scss/mixins/animations/_wobble.scss +283 -0
- package/dist/scss/mixins/animations/_zoom.scss +394 -0
- package/{scss/mixins/mouse → dist/scss/mixins/controls}/_cursor.scss +60 -39
- package/dist/scss/mixins/controls/_hover.scss +625 -0
- package/dist/scss/mixins/controls/_index.scss +30 -0
- package/dist/scss/mixins/controls/_keyboard.scss +300 -0
- package/{scss/mixins/mouse → dist/scss/mixins/controls}/_pointer.scss +81 -72
- package/dist/scss/mixins/controls/_scroll.scss +460 -0
- package/{scss/mixins/scroll → dist/scss/mixins/controls}/_scrollbar.scss +50 -16
- package/dist/scss/mixins/controls/_selection.scss +208 -0
- package/dist/scss/mixins/controls/_touch.scss +401 -0
- package/dist/scss/mixins/effects/_blend.scss +128 -0
- package/dist/scss/mixins/effects/_filter.scss +470 -0
- package/dist/scss/mixins/effects/_focus.scss +83 -0
- package/dist/scss/mixins/effects/_gradient.scss +130 -0
- package/dist/scss/mixins/effects/_index.scss +28 -0
- package/dist/scss/mixins/effects/_mask.scss +76 -0
- package/dist/scss/mixins/effects/_opacity.scss +376 -0
- package/dist/scss/mixins/effects/_shadow.scss +429 -0
- package/dist/scss/mixins/keyframes/_base.scss +199 -0
- package/dist/scss/mixins/keyframes/_index.scss +24 -0
- package/dist/scss/mixins/keyframes/animations/_beat.scss +280 -0
- package/dist/scss/mixins/keyframes/animations/_blink.scss +82 -0
- package/dist/scss/mixins/keyframes/animations/_bounce.scss +292 -0
- package/dist/scss/mixins/keyframes/animations/_fade.scss +311 -0
- package/dist/scss/mixins/keyframes/animations/_flash.scss +165 -0
- package/dist/scss/mixins/keyframes/animations/_flip.scss +266 -0
- package/{scss/mixins → dist/scss/mixins/keyframes}/animations/_index.scss +19 -10
- package/dist/scss/mixins/keyframes/animations/_jiggle.scss +85 -0
- package/dist/scss/mixins/keyframes/animations/_lightspeed.scss +73 -0
- package/dist/scss/mixins/keyframes/animations/_nod.scss +79 -0
- package/dist/scss/mixins/keyframes/animations/_pop.scss +78 -0
- package/dist/scss/mixins/keyframes/animations/_pulse.scss +225 -0
- package/dist/scss/mixins/keyframes/animations/_ripple.scss +94 -0
- package/dist/scss/mixins/keyframes/animations/_roll.scss +124 -0
- package/dist/scss/mixins/keyframes/animations/_rotate.scss +360 -0
- package/dist/scss/mixins/keyframes/animations/_rubber.scss +81 -0
- package/dist/scss/mixins/keyframes/animations/_scale.scss +308 -0
- package/dist/scss/mixins/keyframes/animations/_shake.scss +270 -0
- package/dist/scss/mixins/keyframes/animations/_slide.scss +345 -0
- package/dist/scss/mixins/keyframes/animations/_spin.scss +270 -0
- package/dist/scss/mixins/keyframes/animations/_sway.scss +83 -0
- package/dist/scss/mixins/keyframes/animations/_twist.scss +89 -0
- package/dist/scss/mixins/keyframes/animations/_wave.scss +90 -0
- package/dist/scss/mixins/keyframes/animations/_wobble.scss +293 -0
- package/dist/scss/mixins/keyframes/animations/_zoom.scss +345 -0
- package/dist/scss/mixins/loaders/_bars.scss +128 -0
- package/dist/scss/mixins/loaders/_base.scss +39 -0
- package/dist/scss/mixins/loaders/_bubble.scss +395 -0
- package/dist/scss/mixins/loaders/_circle.scss +456 -0
- package/dist/scss/mixins/loaders/_dots.scss +248 -0
- package/dist/scss/mixins/loaders/_graph.scss +542 -0
- package/dist/scss/mixins/loaders/_index.scss +77 -0
- package/dist/scss/mixins/loaders/_line.scss +471 -0
- package/dist/scss/mixins/loaders/_objects.scss +563 -0
- package/dist/scss/mixins/loaders/_progress.scss +477 -0
- package/dist/scss/mixins/loaders/_rect.scss +480 -0
- package/dist/scss/mixins/loaders/_rings.scss +377 -0
- package/dist/scss/mixins/loaders/_skeleton.scss +461 -0
- package/dist/scss/mixins/loaders/_special.scss +611 -0
- package/dist/scss/mixins/loaders/_spinner.scss +175 -0
- package/dist/scss/mixins/loaders/_text.scss +446 -0
- package/{scss → dist/scss}/mixins/transforms/_flip.scss +16 -18
- package/dist/scss/mixins/transforms/_index.scss +28 -0
- package/dist/scss/mixins/transforms/_matrix.scss +18 -0
- package/{scss → dist/scss}/mixins/transforms/_perspective.scss +18 -1
- package/{scss → dist/scss}/mixins/transforms/_rotate.scss +9 -14
- package/{scss → dist/scss}/mixins/transforms/_scale.scss +16 -1
- package/{scss → dist/scss}/mixins/transforms/_skew.scss +16 -2
- package/{scss → dist/scss}/mixins/transforms/_translate.scss +16 -2
- package/dist/scss/mixins/transitions/_index.scss +22 -0
- package/dist/scss/mixins/transitions/_transition.scss +43 -0
- package/dist/scss/variables/_animations.scss +300 -0
- package/dist/scss/variables/_controls.scss +178 -0
- package/dist/scss/variables/_effects.scss +87 -0
- package/dist/scss/variables/_index.scss +27 -0
- package/dist/scss/variables/_keyframes.scss +28 -0
- package/dist/scss/variables/_loaders.scss +75 -0
- package/dist/scss/variables/_transforms.scss +85 -0
- package/dist/scss/variables/_transitions.scss +80 -0
- package/dist/ts/Draggable.ts +143 -0
- package/dist/ts/Gesture.ts +226 -0
- package/dist/ts/Keyboard.ts +195 -0
- package/dist/ts/LoaderManager.ts +662 -0
- package/dist/ts/Screensaver.ts +192 -0
- package/dist/ts/VideoOverlay.ts +205 -0
- package/dist/ts/demo.ts +1108 -0
- package/dist/ts/index.ts +58 -0
- package/package.json +90 -53
- package/src/html/_base.html +138 -0
- package/src/html/base.html +147 -0
- package/src/html/core-concepts.html +282 -0
- package/src/html/demo_base.html +171 -0
- package/src/html/demo_draggable.html +250 -0
- package/src/html/demo_gesture.html +264 -0
- package/src/html/demo_keyboard.html +224 -0
- package/src/html/demo_screensaver.html +258 -0
- package/src/html/demo_video_overlay.html +291 -0
- package/src/html/getting-started.html +242 -0
- package/src/html/index.html +400 -0
- package/src/html/keyboard.html +14 -0
- package/src/html/partials/_demo_links.html +21 -0
- package/src/html/partials/_footer.html +18 -0
- package/src/html/partials/_head.html +21 -0
- package/src/html/partials/_nav.html +84 -0
- package/src/html/partials/_theme_toggle.html +11 -0
- package/src/html/screensaver.html +20 -0
- package/src/html/test_animations.html +813 -0
- package/src/html/test_attention.html +281 -0
- package/src/html/test_bounce.html +201 -0
- package/src/html/test_effects.html +1348 -0
- package/src/html/test_fade.html +213 -0
- package/src/html/test_flip.html +208 -0
- package/src/html/test_keyframes.html +415 -0
- package/src/html/test_loaders.html +1489 -0
- package/src/html/test_mouse.html +516 -0
- package/src/html/test_overview.html +1444 -0
- package/src/html/test_pulse.html +212 -0
- package/src/html/test_scale.html +204 -0
- package/src/html/test_shake.html +232 -0
- package/src/html/test_slide.html +212 -0
- package/src/html/test_special.html +257 -0
- package/src/html/test_spin.html +216 -0
- package/src/html/test_transforms.html +332 -0
- package/src/html/test_transitions.html +245 -0
- package/src/html/test_zoom.html +188 -0
- package/src/html/video_overlay.html +27 -0
- package/src/jinja/_base.html.jinja +50 -0
- package/src/jinja/base.html.jinja +48 -0
- package/src/jinja/core-concepts.html.jinja +148 -0
- package/src/jinja/demo_draggable.html.jinja +114 -0
- package/src/jinja/demo_gesture.html.jinja +128 -0
- package/src/jinja/demo_keyboard.html.jinja +88 -0
- package/src/jinja/demo_screensaver.html.jinja +122 -0
- package/src/jinja/demo_video_overlay.html.jinja +155 -0
- package/src/jinja/getting-started.html.jinja +108 -0
- package/src/jinja/index.html.jinja +268 -0
- package/src/jinja/index.json +5 -0
- package/src/jinja/move.gl.css +7741 -0
- package/src/jinja/partials/_code_block.html.jinja +17 -0
- package/src/jinja/partials/_demo_links.html.jinja +41 -0
- package/src/jinja/partials/_feature_card.html.jinja +20 -0
- package/src/jinja/partials/_footer.html.jinja +22 -0
- package/src/jinja/partials/_head.html.jinja +27 -0
- package/src/jinja/partials/_nav.html.jinja +79 -0
- package/src/jinja/partials/_theme_toggle.html.jinja +15 -0
- package/src/jinja/test_animations.html.jinja +679 -0
- package/src/jinja/test_attention.html.jinja +147 -0
- package/src/jinja/test_bounce.html.jinja +67 -0
- package/src/jinja/test_effects.html.jinja +1218 -0
- package/src/jinja/test_fade.html.jinja +79 -0
- package/src/jinja/test_flip.html.jinja +74 -0
- package/src/jinja/test_keyframes.html.jinja +281 -0
- package/src/jinja/test_loaders.html.jinja +1358 -0
- package/src/jinja/test_mouse.html.jinja +382 -0
- package/src/jinja/test_overview.html.jinja +1313 -0
- package/src/jinja/test_pulse.html.jinja +78 -0
- package/src/jinja/test_scale.html.jinja +70 -0
- package/src/jinja/test_shake.html.jinja +98 -0
- package/src/jinja/test_slide.html.jinja +78 -0
- package/src/jinja/test_special.html.jinja +123 -0
- package/src/jinja/test_spin.html.jinja +82 -0
- package/src/jinja/test_transforms.html.jinja +198 -0
- package/src/jinja/test_transitions.html.jinja +111 -0
- package/src/jinja/test_zoom.html.jinja +54 -0
- package/src/scss/classes/_animations.scss +595 -0
- package/src/scss/classes/_controls.scss +314 -0
- package/src/scss/classes/_effects.scss +283 -0
- package/src/scss/classes/_index.scss +28 -0
- package/src/scss/classes/_loaders.scss +779 -0
- package/src/scss/classes/_transforms.scss +138 -0
- package/src/scss/classes/_transitions.scss +264 -0
- package/src/scss/dev/_banner.scss +36 -0
- package/src/scss/dev/_debug.scss +18 -0
- package/src/scss/dev/_deprecation.scss +13 -0
- package/src/scss/dev/_index.scss +8 -0
- package/src/scss/dev/_modules.scss +23 -0
- package/src/scss/docs.scss +2344 -0
- package/src/scss/docs.scss.bak +3133 -0
- package/src/scss/functions/_index.scss +22 -0
- package/src/scss/functions/scenes/_bubble.scss +32 -0
- package/src/scss/functions/scenes/_index.scss +21 -0
- package/src/scss/index.scss +17 -0
- package/src/scss/maps/_controls.scss +85 -0
- package/src/scss/maps/_index.scss +22 -0
- package/src/scss/mixins/_accessibility.scss +91 -0
- package/src/scss/mixins/_boot.scss +51 -0
- package/src/scss/mixins/_index.scss +41 -0
- package/src/scss/mixins/_screensaver.scss +228 -0
- package/src/scss/mixins/_shape.scss +315 -0
- package/src/scss/mixins/animations/_base.scss +403 -0
- package/src/scss/mixins/animations/_beat.scss +137 -0
- package/src/scss/mixins/animations/_blink.scss +159 -0
- package/src/scss/mixins/animations/_bounce.scss +306 -0
- package/src/scss/mixins/animations/_elastic.scss +69 -0
- package/src/scss/mixins/animations/_fade.scss +393 -0
- package/src/scss/mixins/animations/_flash.scss +169 -0
- package/src/scss/mixins/animations/_flip.scss +251 -0
- package/src/scss/mixins/animations/_float.scss +141 -0
- package/src/scss/mixins/animations/_glow.scss +190 -0
- package/src/scss/mixins/animations/_heartbeat.scss +195 -0
- package/src/scss/mixins/animations/_hinge.scss +118 -0
- package/src/scss/mixins/animations/_index.scss +97 -0
- package/src/scss/mixins/animations/_jello.scss +123 -0
- package/src/scss/mixins/animations/_jiggle.scss +162 -0
- package/src/scss/mixins/animations/_lightspeed.scss +135 -0
- package/src/scss/mixins/animations/_nod.scss +153 -0
- package/src/scss/mixins/animations/_pop.scss +153 -0
- package/src/scss/mixins/animations/_pulse.scss +275 -0
- package/src/scss/mixins/animations/_ripple.scss +161 -0
- package/src/scss/mixins/animations/_roll.scss +217 -0
- package/src/scss/mixins/animations/_rotate.scss +728 -0
- package/src/scss/mixins/animations/_rubber.scss +115 -0
- package/src/scss/mixins/animations/_scale.scss +382 -0
- package/src/scss/mixins/animations/_shake.scss +233 -0
- package/src/scss/mixins/animations/_slide.scss +501 -0
- package/src/scss/mixins/animations/_spin.scss +322 -0
- package/src/scss/mixins/animations/_sway.scss +150 -0
- package/src/scss/mixins/animations/_swing.scss +245 -0
- package/src/scss/mixins/animations/_tada.scss +235 -0
- package/src/scss/mixins/animations/_twist.scss +162 -0
- package/src/scss/mixins/animations/_wave.scss +149 -0
- package/src/scss/mixins/animations/_wobble.scss +283 -0
- package/src/scss/mixins/animations/_zoom.scss +394 -0
- package/src/scss/mixins/controls/_cursor.scss +203 -0
- package/src/scss/mixins/controls/_hover.scss +625 -0
- package/src/scss/mixins/controls/_index.scss +30 -0
- package/src/scss/mixins/controls/_keyboard.scss +300 -0
- package/src/scss/mixins/controls/_pointer.scss +267 -0
- package/src/scss/mixins/controls/_scroll.scss +460 -0
- package/src/scss/mixins/controls/_scrollbar.scss +283 -0
- package/src/scss/mixins/controls/_selection.scss +208 -0
- package/src/scss/mixins/controls/_touch.scss +401 -0
- package/src/scss/mixins/effects/_blend.scss +128 -0
- package/src/scss/mixins/effects/_filter.scss +470 -0
- package/src/scss/mixins/effects/_focus.scss +83 -0
- package/src/scss/mixins/effects/_gradient.scss +130 -0
- package/src/scss/mixins/effects/_index.scss +28 -0
- package/src/scss/mixins/effects/_mask.scss +76 -0
- package/src/scss/mixins/effects/_opacity.scss +376 -0
- package/src/scss/mixins/effects/_shadow.scss +429 -0
- package/src/scss/mixins/keyframes/_base.scss +199 -0
- package/src/scss/mixins/keyframes/_index.scss +24 -0
- package/src/scss/mixins/keyframes/animations/_beat.scss +280 -0
- package/src/scss/mixins/keyframes/animations/_blink.scss +82 -0
- package/src/scss/mixins/keyframes/animations/_bounce.scss +292 -0
- package/src/scss/mixins/keyframes/animations/_fade.scss +311 -0
- package/src/scss/mixins/keyframes/animations/_flash.scss +165 -0
- package/src/scss/mixins/keyframes/animations/_flip.scss +266 -0
- package/src/scss/mixins/keyframes/animations/_index.scss +46 -0
- package/src/scss/mixins/keyframes/animations/_jiggle.scss +85 -0
- package/src/scss/mixins/keyframes/animations/_lightspeed.scss +73 -0
- package/src/scss/mixins/keyframes/animations/_nod.scss +79 -0
- package/src/scss/mixins/keyframes/animations/_pop.scss +78 -0
- package/src/scss/mixins/keyframes/animations/_pulse.scss +225 -0
- package/src/scss/mixins/keyframes/animations/_ripple.scss +94 -0
- package/src/scss/mixins/keyframes/animations/_roll.scss +124 -0
- package/src/scss/mixins/keyframes/animations/_rotate.scss +360 -0
- package/src/scss/mixins/keyframes/animations/_rubber.scss +81 -0
- package/src/scss/mixins/keyframes/animations/_scale.scss +308 -0
- package/src/scss/mixins/keyframes/animations/_shake.scss +270 -0
- package/src/scss/mixins/keyframes/animations/_slide.scss +345 -0
- package/src/scss/mixins/keyframes/animations/_spin.scss +270 -0
- package/src/scss/mixins/keyframes/animations/_sway.scss +83 -0
- package/src/scss/mixins/keyframes/animations/_twist.scss +89 -0
- package/src/scss/mixins/keyframes/animations/_wave.scss +90 -0
- package/src/scss/mixins/keyframes/animations/_wobble.scss +293 -0
- package/src/scss/mixins/keyframes/animations/_zoom.scss +345 -0
- package/src/scss/mixins/loaders/_bars.scss +128 -0
- package/src/scss/mixins/loaders/_base.scss +39 -0
- package/src/scss/mixins/loaders/_bubble.scss +395 -0
- package/src/scss/mixins/loaders/_circle.scss +456 -0
- package/src/scss/mixins/loaders/_dots.scss +248 -0
- package/src/scss/mixins/loaders/_graph.scss +542 -0
- package/src/scss/mixins/loaders/_index.scss +77 -0
- package/src/scss/mixins/loaders/_line.scss +471 -0
- package/src/scss/mixins/loaders/_objects.scss +563 -0
- package/src/scss/mixins/loaders/_progress.scss +477 -0
- package/src/scss/mixins/loaders/_rect.scss +480 -0
- package/src/scss/mixins/loaders/_rings.scss +377 -0
- package/src/scss/mixins/loaders/_skeleton.scss +461 -0
- package/src/scss/mixins/loaders/_special.scss +611 -0
- package/src/scss/mixins/loaders/_spinner.scss +175 -0
- package/src/scss/mixins/loaders/_text.scss +446 -0
- package/src/scss/mixins/transforms/_flip.scss +74 -0
- package/src/scss/mixins/transforms/_index.scss +28 -0
- package/src/scss/mixins/transforms/_matrix.scss +18 -0
- package/src/scss/mixins/transforms/_perspective.scss +28 -0
- package/src/scss/mixins/transforms/_rotate.scss +96 -0
- package/src/scss/mixins/transforms/_scale.scss +26 -0
- package/src/scss/mixins/transforms/_skew.scss +27 -0
- package/src/scss/mixins/transforms/_translate.scss +27 -0
- package/src/scss/mixins/transitions/_index.scss +22 -0
- package/src/scss/mixins/transitions/_transition.scss +43 -0
- package/src/scss/variables/_animations.scss +300 -0
- package/src/scss/variables/_controls.scss +178 -0
- package/src/scss/variables/_effects.scss +87 -0
- package/src/scss/variables/_index.scss +27 -0
- package/src/scss/variables/_keyframes.scss +28 -0
- package/src/scss/variables/_loaders.scss +75 -0
- package/src/scss/variables/_transforms.scss +85 -0
- package/src/scss/variables/_transitions.scss +80 -0
- package/src/ts/Draggable.ts +143 -0
- package/src/ts/Gesture.ts +226 -0
- package/src/ts/Keyboard.ts +195 -0
- package/src/ts/LoaderManager.ts +662 -0
- package/src/ts/Screensaver.ts +192 -0
- package/src/ts/VideoOverlay.ts +205 -0
- package/src/ts/demo.ts +1108 -0
- package/src/ts/index.ts +58 -0
- package/css/move.gl.css +0 -2
- package/css/move.gl.min.css +0 -2
- package/scss/classes/_transforms.scss +0 -124
- package/scss/classes/keyboard.scss +0 -18
- package/scss/classes/screensaver.scss +0 -15
- package/scss/effects/_filter.scss +0 -176
- package/scss/effects/_index.scss +0 -23
- package/scss/effects/_opacity.scss +0 -62
- package/scss/effects/_shadow.scss +0 -175
- package/scss/functions/scenes/_bubble.scss +0 -19
- package/scss/functions/scenes/_index.scss +0 -20
- package/scss/index.scss +0 -0
- package/scss/keyframes/_beat.scss +0 -26
- package/scss/keyframes/_index.scss +0 -0
- package/scss/maps/_index.scss +0 -0
- package/scss/maps/_mouse.scss +0 -96
- package/scss/mixins/_hover.scss +0 -51
- package/scss/mixins/_index.scss +0 -0
- package/scss/mixins/_selection.scss +0 -321
- package/scss/mixins/_shape.scss +0 -44
- package/scss/mixins/_touch.scss +0 -95
- package/scss/mixins/animations/--hover.scss +0 -107
- package/scss/mixins/animations/_base.scss +0 -337
- package/scss/mixins/animations/_beat.scss +0 -119
- package/scss/mixins/animations/_bounce.scss +0 -192
- package/scss/mixins/animations/_fade.scss +0 -154
- package/scss/mixins/animations/_flip.scss +0 -72
- package/scss/mixins/animations/_heartbeat.scss +0 -175
- package/scss/mixins/animations/_hinge.scss +0 -119
- package/scss/mixins/animations/_jello.scss +0 -129
- package/scss/mixins/animations/_jiggle.scss +0 -163
- package/scss/mixins/animations/_lightspeed.scss +0 -130
- package/scss/mixins/animations/_pop.scss +0 -150
- package/scss/mixins/animations/_pulse.scss +0 -213
- package/scss/mixins/animations/_roll.scss +0 -261
- package/scss/mixins/animations/_rotate.scss +0 -428
- package/scss/mixins/animations/_rubber.scss +0 -116
- package/scss/mixins/animations/_scale.scss +0 -113
- package/scss/mixins/animations/_shake.scss +0 -182
- package/scss/mixins/animations/_slide.scss +0 -294
- package/scss/mixins/animations/_spin.scss +0 -219
- package/scss/mixins/animations/_wobble.scss +0 -254
- package/scss/mixins/animations/_zoom.scss +0 -166
- package/scss/mixins/effects/_filter.scss +0 -148
- package/scss/mixins/effects/_index.scss +0 -0
- package/scss/mixins/effects/_shadow.scss +0 -21
- package/scss/mixins/loaders/_index.scss +0 -0
- package/scss/mixins/loaders/_progress.scss +0 -174
- package/scss/mixins/loaders/_spinner.scss +0 -101
- package/scss/mixins/loaders/circle_01.scss +0 -22
- package/scss/mixins/loaders/circle_02.scss +0 -19
- package/scss/mixins/loaders/circle_03.scss +0 -29
- package/scss/mixins/loaders/circle_inner_01.scss +0 -33
- package/scss/mixins/loaders/circle_inner_02.scss +0 -33
- package/scss/mixins/loaders/circle_inner_03.scss +0 -34
- package/scss/mixins/mouse/_index.scss +0 -0
- package/scss/mixins/scroll/_index.scss +0 -0
- package/scss/mixins/scroll/_scroll.scss +0 -104
- package/scss/mixins/transforms/_index.scss +0 -23
- package/scss/mixins/transforms/_matrix.scss +0 -1
- package/scss/mixins/transitions/_index.scss +0 -0
- package/scss/mixins/transitions/_transition.scss +0 -13
- package/scss/variables/_animation.scss +0 -91
- package/scss/variables/_index.scss +0 -0
- package/ts/ARContent.ts +0 -27
- package/ts/ARInteraction.ts +0 -34
- package/ts/AdaptiveUI.ts +0 -25
- package/ts/ContentStreaming.ts +0 -20
- package/ts/Draggable.ts +0 -71
- package/ts/DynamicEnvironment.ts +0 -60
- package/ts/Gesture.ts +0 -168
- package/ts/ImmersiveAudio.ts +0 -40
- package/ts/InteractiveCanvas.ts +0 -177
- package/ts/InteractiveVideo.ts +0 -29
- package/ts/Keyboard.ts +0 -162
- package/ts/RealTimeCollaboration.ts +0 -25
- package/ts/Screensaver.ts +0 -140
- package/ts/SpatialNavigation.ts +0 -38
- package/ts/UserProfile.ts +0 -27
- package/ts/VRExperience.ts +0 -58
- package/ts/VideoOverlay.ts +0 -116
- package/ts/index.ts +0 -0
- /package/{scss → dist/scss}/dev/_banner.scss +0 -0
- /package/{scss → dist/scss}/dev/_debug.scss +0 -0
- /package/{scss → dist/scss}/dev/_index.scss +0 -0
- /package/{scss/classes/_index.scss → src/html/partials/_code_block.html} +0 -0
- /package/{scss/functions/_index.scss → src/html/partials/_feature_card.html} +0 -0
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// move.gl | Screensaver
|
|
3
|
+
// ============================================================================
|
|
4
|
+
// Copyright 2025 Scape Agency BV
|
|
5
|
+
// Licensed under MIT License
|
|
6
|
+
// ============================================================================
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Screensaver Configuration Options
|
|
10
|
+
*/
|
|
11
|
+
export interface ScreensaverOptions {
|
|
12
|
+
/** Inactivity timeout in milliseconds */
|
|
13
|
+
timeout: number;
|
|
14
|
+
/** URL for the video to play */
|
|
15
|
+
videoUrl?: string;
|
|
16
|
+
/** URL for the audio to play */
|
|
17
|
+
audioUrl?: string;
|
|
18
|
+
/** ID of the screensaver container element */
|
|
19
|
+
containerId?: string;
|
|
20
|
+
/** ID of the video element */
|
|
21
|
+
videoId?: string;
|
|
22
|
+
/** ID of the audio element */
|
|
23
|
+
audioId?: string;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Screensaver Class
|
|
28
|
+
*
|
|
29
|
+
* Handles the activation and deactivation of a screensaver based on
|
|
30
|
+
* user inactivity. Provides methods to start and stop the screensaver,
|
|
31
|
+
* manage media sources, and handle user interactions.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```typescript
|
|
35
|
+
* const screensaver = new Screensaver({
|
|
36
|
+
* timeout: 300000, // 5 minutes
|
|
37
|
+
* videoUrl: 'path/to/video.mp4',
|
|
38
|
+
* audioUrl: 'path/to/audio.mp3'
|
|
39
|
+
* });
|
|
40
|
+
* screensaver.setVolume(0.5);
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export class Screensaver {
|
|
44
|
+
private timeoutId: number | undefined;
|
|
45
|
+
private readonly timeout: number;
|
|
46
|
+
private screensaverElement: HTMLElement | null = null;
|
|
47
|
+
private videoElement: HTMLVideoElement | null = null;
|
|
48
|
+
private audioElement: HTMLAudioElement | null = null;
|
|
49
|
+
private isActive: boolean = false;
|
|
50
|
+
private readonly options: ScreensaverOptions;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Creates a new Screensaver instance.
|
|
54
|
+
* @param options - Configuration options for the screensaver.
|
|
55
|
+
*/
|
|
56
|
+
constructor(options: ScreensaverOptions) {
|
|
57
|
+
this.options = {
|
|
58
|
+
containerId: 'screensaver',
|
|
59
|
+
videoId: 'screensaverVideo',
|
|
60
|
+
audioId: 'screensaverAudio',
|
|
61
|
+
...options
|
|
62
|
+
};
|
|
63
|
+
this.timeout = options.timeout;
|
|
64
|
+
this.initializeElements();
|
|
65
|
+
if (options.videoUrl && options.audioUrl) {
|
|
66
|
+
this.loadMedia(options.videoUrl, options.audioUrl);
|
|
67
|
+
}
|
|
68
|
+
this.setupEventListeners();
|
|
69
|
+
this.startScreensaverTimeout();
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* Initializes HTML elements from the DOM.
|
|
74
|
+
*/
|
|
75
|
+
private initializeElements(): void {
|
|
76
|
+
this.screensaverElement = document.getElementById(this.options.containerId!);
|
|
77
|
+
this.videoElement = document.getElementById(this.options.videoId!) as HTMLVideoElement | null;
|
|
78
|
+
this.audioElement = document.getElementById(this.options.audioId!) as HTMLAudioElement | null;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Loads media sources into the video and audio elements.
|
|
83
|
+
* @param videoUrl - The source URL of the video.
|
|
84
|
+
* @param audioUrl - The source URL of the audio.
|
|
85
|
+
*/
|
|
86
|
+
private loadMedia(videoUrl: string, audioUrl: string): void {
|
|
87
|
+
if (this.videoElement) {
|
|
88
|
+
this.videoElement.src = videoUrl;
|
|
89
|
+
}
|
|
90
|
+
if (this.audioElement) {
|
|
91
|
+
this.audioElement.src = audioUrl;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* @notice Sets up event listeners for user interaction to prevent
|
|
97
|
+
* screensaver activation.
|
|
98
|
+
* @dev Listens for 'mousemove', 'keydown', and 'touchstart' events
|
|
99
|
+
* to reset the screensaver timer.
|
|
100
|
+
*/
|
|
101
|
+
private setupEventListeners() {
|
|
102
|
+
['mousemove', 'keydown', 'touchstart'].forEach(event => {
|
|
103
|
+
document.addEventListener(event, this.resetScreensaver);
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* @notice Starts or restarts the screensaver timeout.
|
|
109
|
+
* @dev Resets any existing timeout and sets a new timeout to activate
|
|
110
|
+
* the screensaver.
|
|
111
|
+
*/
|
|
112
|
+
private startScreensaverTimeout() {
|
|
113
|
+
this.stopScreensaver(); // Stop existing screensaver if active
|
|
114
|
+
this.timeoutId = window.setTimeout(
|
|
115
|
+
() => this.activateScreensaver(), this.timeout
|
|
116
|
+
);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* @notice Resets the screensaver timer and stops the screensaver if
|
|
121
|
+
* active.
|
|
122
|
+
* @dev Called upon user interactions detected by event listeners.
|
|
123
|
+
*/
|
|
124
|
+
private resetScreensaver = () => {
|
|
125
|
+
if (this.isActive) {
|
|
126
|
+
this.stopScreensaver();
|
|
127
|
+
}
|
|
128
|
+
this.startScreensaverTimeout();
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Activates the screensaver, displaying elements and playing media.
|
|
133
|
+
*/
|
|
134
|
+
private activateScreensaver = (): void => {
|
|
135
|
+
if (this.screensaverElement) {
|
|
136
|
+
this.screensaverElement.style.display = 'block';
|
|
137
|
+
}
|
|
138
|
+
this.videoElement?.play();
|
|
139
|
+
this.audioElement?.play();
|
|
140
|
+
this.isActive = true;
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
/**
|
|
144
|
+
* Stops the screensaver and hides its elements.
|
|
145
|
+
*/
|
|
146
|
+
public stopScreensaver(): void {
|
|
147
|
+
if (this.screensaverElement) {
|
|
148
|
+
this.screensaverElement.style.display = 'none';
|
|
149
|
+
}
|
|
150
|
+
this.videoElement?.pause();
|
|
151
|
+
this.audioElement?.pause();
|
|
152
|
+
this.isActive = false;
|
|
153
|
+
|
|
154
|
+
if (this.timeoutId !== undefined) {
|
|
155
|
+
clearTimeout(this.timeoutId);
|
|
156
|
+
this.timeoutId = undefined;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* Sets the volume for both video and audio elements.
|
|
162
|
+
* @param volume - A number between 0.0 and 1.0 indicating the volume level.
|
|
163
|
+
*/
|
|
164
|
+
public setVolume(volume: number): void {
|
|
165
|
+
const clampedVolume = Math.max(0, Math.min(1, volume));
|
|
166
|
+
if (this.videoElement) {
|
|
167
|
+
this.videoElement.volume = clampedVolume;
|
|
168
|
+
}
|
|
169
|
+
if (this.audioElement) {
|
|
170
|
+
this.audioElement.volume = clampedVolume;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Returns whether the screensaver is currently active.
|
|
176
|
+
*/
|
|
177
|
+
public getIsActive(): boolean {
|
|
178
|
+
return this.isActive;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* Cleans up event listeners and stops the screensaver.
|
|
183
|
+
*/
|
|
184
|
+
public destroy(): void {
|
|
185
|
+
this.stopScreensaver();
|
|
186
|
+
['mousemove', 'keydown', 'touchstart'].forEach(event => {
|
|
187
|
+
document.removeEventListener(event, this.resetScreensaver);
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
export default Screensaver;
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// move.gl | Video Overlay
|
|
3
|
+
// ============================================================================
|
|
4
|
+
// Copyright 2025 Scape Agency BV
|
|
5
|
+
// Licensed under MIT License
|
|
6
|
+
// ============================================================================
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Video overlay options
|
|
10
|
+
*/
|
|
11
|
+
export interface VideoOverlayOptions {
|
|
12
|
+
/** Fade transition duration in milliseconds */
|
|
13
|
+
fadeTransitionDuration?: number;
|
|
14
|
+
/** Whether to loop the video */
|
|
15
|
+
loop?: boolean;
|
|
16
|
+
/** Initial video source URL */
|
|
17
|
+
initialSource?: string;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Transparent Video Overlay Handler
|
|
22
|
+
*
|
|
23
|
+
* Manages a transparent video overlay, controlling its visibility,
|
|
24
|
+
* playback, and effects.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* const overlay = new TransparentVideoOverlay('myVideo', {
|
|
29
|
+
* fadeTransitionDuration: 500,
|
|
30
|
+
* loop: true
|
|
31
|
+
* });
|
|
32
|
+
* overlay.showOverlay();
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export class TransparentVideoOverlay {
|
|
36
|
+
private videoElement: HTMLVideoElement | null = null;
|
|
37
|
+
private isVisible: boolean = false;
|
|
38
|
+
private fadeTransitionDuration: number;
|
|
39
|
+
private loop: boolean;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* Creates a new TransparentVideoOverlay instance.
|
|
43
|
+
* @param videoElementId - The ID of the video element to manage.
|
|
44
|
+
* @param options - Optional configuration options.
|
|
45
|
+
*/
|
|
46
|
+
constructor(videoElementId: string, options: VideoOverlayOptions = {}) {
|
|
47
|
+
const element = document.getElementById(videoElementId);
|
|
48
|
+
if (element instanceof HTMLVideoElement) {
|
|
49
|
+
this.videoElement = element;
|
|
50
|
+
} else {
|
|
51
|
+
console.warn(`Element with id "${videoElementId}" is not a video element`);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
this.fadeTransitionDuration = options.fadeTransitionDuration ?? 500;
|
|
55
|
+
this.loop = options.loop ?? true;
|
|
56
|
+
|
|
57
|
+
if (this.videoElement) {
|
|
58
|
+
this.setupVideo();
|
|
59
|
+
if (options.initialSource) {
|
|
60
|
+
this.changeVideoSource(options.initialSource, false);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Initializes video settings and event listeners.
|
|
67
|
+
*/
|
|
68
|
+
private setupVideo(): void {
|
|
69
|
+
if (!this.videoElement) return;
|
|
70
|
+
|
|
71
|
+
if (this.loop) {
|
|
72
|
+
this.videoElement.addEventListener('ended', () => {
|
|
73
|
+
this.videoElement?.play();
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
this.videoElement.addEventListener('loadeddata', () => {
|
|
78
|
+
console.log('Video loaded successfully.');
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
this.videoElement.addEventListener('error', (e) => {
|
|
82
|
+
console.error('Error loading video:', e);
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
// Set initial style for smooth transitions
|
|
86
|
+
this.videoElement.style.transition = `opacity ${this.fadeTransitionDuration}ms ease`;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Shows the video overlay with a fade-in effect.
|
|
91
|
+
*/
|
|
92
|
+
public showOverlay(): void {
|
|
93
|
+
if (!this.videoElement) return;
|
|
94
|
+
|
|
95
|
+
this.videoElement.style.display = 'block';
|
|
96
|
+
this.videoElement.style.opacity = '0';
|
|
97
|
+
|
|
98
|
+
// Use requestAnimationFrame for smoother transition
|
|
99
|
+
requestAnimationFrame(() => {
|
|
100
|
+
if (this.videoElement) {
|
|
101
|
+
this.videoElement.style.opacity = '1';
|
|
102
|
+
this.videoElement.play().catch(err => {
|
|
103
|
+
console.warn('Auto-play prevented:', err);
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
this.isVisible = true;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* Hides the video overlay with a fade-out effect.
|
|
113
|
+
*/
|
|
114
|
+
public hideOverlay(): void {
|
|
115
|
+
if (!this.videoElement) return;
|
|
116
|
+
|
|
117
|
+
this.videoElement.style.opacity = '0';
|
|
118
|
+
|
|
119
|
+
setTimeout(() => {
|
|
120
|
+
if (this.videoElement) {
|
|
121
|
+
this.videoElement.style.display = 'none';
|
|
122
|
+
this.videoElement.pause();
|
|
123
|
+
}
|
|
124
|
+
}, this.fadeTransitionDuration);
|
|
125
|
+
|
|
126
|
+
this.isVisible = false;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Toggles the visibility of the video overlay.
|
|
131
|
+
*/
|
|
132
|
+
public toggleOverlay(): void {
|
|
133
|
+
if (this.isVisible) {
|
|
134
|
+
this.hideOverlay();
|
|
135
|
+
} else {
|
|
136
|
+
this.showOverlay();
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Changes the video source and optionally plays it immediately.
|
|
142
|
+
* @param videoUrl - The URL of the new video source.
|
|
143
|
+
* @param autoPlay - Whether the video should play immediately after loading.
|
|
144
|
+
*/
|
|
145
|
+
public changeVideoSource(videoUrl: string, autoPlay: boolean = true): void {
|
|
146
|
+
if (!this.videoElement) return;
|
|
147
|
+
|
|
148
|
+
this.videoElement.src = videoUrl;
|
|
149
|
+
this.videoElement.load();
|
|
150
|
+
|
|
151
|
+
if (autoPlay) {
|
|
152
|
+
this.showOverlay();
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* Gets the visibility state of the overlay.
|
|
158
|
+
*/
|
|
159
|
+
public getIsVisible(): boolean {
|
|
160
|
+
return this.isVisible;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Cleans up the video overlay instance.
|
|
165
|
+
*/
|
|
166
|
+
public destroy(): void {
|
|
167
|
+
if (this.videoElement) {
|
|
168
|
+
this.videoElement.pause();
|
|
169
|
+
this.videoElement.src = '';
|
|
170
|
+
this.videoElement = null;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* Checks if the browser supports HEVC alpha channel videos.
|
|
177
|
+
* This is primarily supported in Safari.
|
|
178
|
+
* @returns Whether HEVC alpha is supported.
|
|
179
|
+
*/
|
|
180
|
+
export function supportsHEVCAlpha(): boolean {
|
|
181
|
+
const navigator = window.navigator;
|
|
182
|
+
const ua = navigator.userAgent.toLowerCase();
|
|
183
|
+
const hasMediaCapabilities = !!(
|
|
184
|
+
navigator.mediaCapabilities &&
|
|
185
|
+
navigator.mediaCapabilities.decodingInfo
|
|
186
|
+
);
|
|
187
|
+
const isSafari = (
|
|
188
|
+
ua.indexOf('safari') !== -1 &&
|
|
189
|
+
ua.indexOf('chrome') === -1 &&
|
|
190
|
+
ua.indexOf('version/') !== -1
|
|
191
|
+
);
|
|
192
|
+
return isSafari && hasMediaCapabilities;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Gets the appropriate video source based on browser support.
|
|
197
|
+
* @param hevcSource - The HEVC/MOV source for Safari.
|
|
198
|
+
* @param webmSource - The WebM source for other browsers.
|
|
199
|
+
* @returns The appropriate video source URL.
|
|
200
|
+
*/
|
|
201
|
+
export function getOptimalVideoSource(hevcSource: string, webmSource: string): string {
|
|
202
|
+
return supportsHEVCAlpha() ? hevcSource : webmSource;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
export default TransparentVideoOverlay;
|