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
package/ts/InteractiveCanvas.ts
DELETED
|
@@ -1,177 +0,0 @@
|
|
|
1
|
-
// Copyright 2024 Scape Agency BV
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
// Interactive Canvas Class
|
|
6
|
-
// A class for an interactive canvas can enable users to draw, which is
|
|
7
|
-
// beneficial for applications like signature pads, drawing tools, or educational apps.
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* @title Interactive Canvas for Drawing
|
|
12
|
-
* @notice This class enables drawing functionalities on a canvas element, supporting features like brush customization, undo/redo actions, and touch responsiveness.
|
|
13
|
-
* @dev Implements event listeners for both mouse and touch interactions, provides methods for brush customization, and maintains a history stack for undo/redo capabilities.
|
|
14
|
-
*/
|
|
15
|
-
class InteractiveCanvas {
|
|
16
|
-
private canvas: HTMLCanvasElement;
|
|
17
|
-
private context: CanvasRenderingContext2D;
|
|
18
|
-
private painting: boolean = false;
|
|
19
|
-
private brushSize: number = 5;
|
|
20
|
-
private brushColor: string = '#000000';
|
|
21
|
-
private lineOpacity: number = 1.0;
|
|
22
|
-
private history: ImageData[] = [];
|
|
23
|
-
private historyStep: number = 0;
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Constructs an InteractiveCanvas instance linked to a specific canvas element.
|
|
27
|
-
* @param canvasId The DOM ID of the canvas element.
|
|
28
|
-
*/
|
|
29
|
-
constructor(canvasId: string) {
|
|
30
|
-
this.canvas = document.getElementById(canvasId) as HTMLCanvasElement;
|
|
31
|
-
this.context = this.canvas.getContext('2d')!;
|
|
32
|
-
this.setupCanvas();
|
|
33
|
-
this.attachEventListeners();
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Sets up the canvas drawing context and adjusts the canvas size to its initial container.
|
|
38
|
-
*/
|
|
39
|
-
private setupCanvas() {
|
|
40
|
-
this.context.lineWidth = this.brushSize;
|
|
41
|
-
this.context.lineCap = 'round';
|
|
42
|
-
this.context.strokeStyle = this.brushColor;
|
|
43
|
-
this.context.globalAlpha = this.lineOpacity;
|
|
44
|
-
window.addEventListener('resize', this.resizeCanvas);
|
|
45
|
-
this.resizeCanvas();
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Attaches necessary event listeners for mouse and touch interactions.
|
|
50
|
-
*/
|
|
51
|
-
private attachEventListeners() {
|
|
52
|
-
this.canvas.addEventListener('mousedown', this.startPaint);
|
|
53
|
-
this.canvas.addEventListener('mouseup', this.endPaint);
|
|
54
|
-
this.canvas.addEventListener('mousemove', this.paint);
|
|
55
|
-
this.canvas.addEventListener('touchstart', this.startPaint, { passive: false });
|
|
56
|
-
this.canvas.addEventListener('touchend', this.endPaint);
|
|
57
|
-
this.canvas.addEventListener('touchmove', this.paint, { passive: false });
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* Adjusts the canvas size to fit its container, ensuring that it is responsive to window size changes.
|
|
62
|
-
*/
|
|
63
|
-
private resizeCanvas = () => {
|
|
64
|
-
this.canvas.width = this.canvas.offsetWidth;
|
|
65
|
-
this.canvas.height = this.canvas.offsetHeight;
|
|
66
|
-
};
|
|
67
|
-
|
|
68
|
-
/**
|
|
69
|
-
* Initiates painting on the canvas, records the initial position, and saves the state for undo functionality.
|
|
70
|
-
* @param event Mouse or touch event that triggers the start of painting.
|
|
71
|
-
*/
|
|
72
|
-
private startPaint = (event: MouseEvent | TouchEvent) => {
|
|
73
|
-
event.preventDefault();
|
|
74
|
-
this.painting = true;
|
|
75
|
-
const pos = this.getEventPosition(event);
|
|
76
|
-
this.context.moveTo(pos.x, pos.y);
|
|
77
|
-
this.context.beginPath();
|
|
78
|
-
this.saveState();
|
|
79
|
-
};
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* Stops the painting process on the canvas.
|
|
83
|
-
*/
|
|
84
|
-
private endPaint = () => {
|
|
85
|
-
this.painting = false;
|
|
86
|
-
};
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* Continues the painting process, drawing lines based on mouse or touch movements.
|
|
90
|
-
* @param event Mouse or touch event containing the current position for painting.
|
|
91
|
-
*/
|
|
92
|
-
private paint = (event: MouseEvent | TouchEvent) => {
|
|
93
|
-
if (!this.painting) return;
|
|
94
|
-
const pos = this.getEventPosition(event);
|
|
95
|
-
this.context.lineTo(pos.x, pos.y);
|
|
96
|
-
this.context.stroke();
|
|
97
|
-
};
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
* Calculates the precise position of the mouse or touch event relative to the canvas.
|
|
101
|
-
* @param event Mouse or touch event.
|
|
102
|
-
* @returns The calculated position as an object with x and y coordinates.
|
|
103
|
-
*/
|
|
104
|
-
private getEventPosition(event: MouseEvent | TouchEvent) {
|
|
105
|
-
if (event instanceof TouchEvent) {
|
|
106
|
-
const rect = this.canvas.getBoundingClientRect();
|
|
107
|
-
const touch = event.touches[0];
|
|
108
|
-
return { x: touch.clientX - rect.left, y: touch.clientY - rect.top };
|
|
109
|
-
} else {
|
|
110
|
-
return { x: event.clientX - this.canvas.offsetLeft, y: event.clientY - this.canvas.offsetTop };
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
/**
|
|
115
|
-
* Sets the brush size for painting.
|
|
116
|
-
* @param size New brush size.
|
|
117
|
-
*/
|
|
118
|
-
public setBrushSize(size: number) {
|
|
119
|
-
this.brushSize = size;
|
|
120
|
-
this.context.lineWidth = size;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
/**
|
|
124
|
-
* Sets the color of the brush.
|
|
125
|
-
* @param color New brush color in CSS format.
|
|
126
|
-
*/
|
|
127
|
-
public setBrushColor(color: string) {
|
|
128
|
-
this.brushColor = color;
|
|
129
|
-
this.context.strokeStyle = color;
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
/**
|
|
133
|
-
* Sets the opacity of the brush strokes.
|
|
134
|
-
* @param opacity A value between 0.0 (fully transparent) and 1.0 (fully opaque).
|
|
135
|
-
*/
|
|
136
|
-
public setOpacity(opacity: number) {
|
|
137
|
-
this.lineOpacity = opacity;
|
|
138
|
-
this.context.globalAlpha = opacity;
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
/**
|
|
142
|
-
* Undoes the last action taken on the canvas, reverting to the previous state.
|
|
143
|
-
*/
|
|
144
|
-
public undo() {
|
|
145
|
-
if (this.historyStep > 0) {
|
|
146
|
-
this.historyStep--;
|
|
147
|
-
this.context.putImageData(this.history[this.historyStep], 0, 0);
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
/**
|
|
152
|
-
* Redoes an action that was previously undone on the canvas, if possible.
|
|
153
|
-
*/
|
|
154
|
-
public redo() {
|
|
155
|
-
if (this.historyStep < this.history.length - 1) {
|
|
156
|
-
this.historyStep++;
|
|
157
|
-
this.context.putImageData(this.history[this.historyStep], 0, 0);
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
/**
|
|
162
|
-
* Saves the current state of the canvas for future undo operations.
|
|
163
|
-
*/
|
|
164
|
-
private saveState() {
|
|
165
|
-
if (this.historyStep < this.history.length) this.history.splice(this.historyStep);
|
|
166
|
-
this.history.push(this.context.getImageData(0, 0, this.canvas.width, this.canvas.height));
|
|
167
|
-
this.historyStep = this.history.length;
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
/**
|
|
171
|
-
* Clears the entire canvas and saves the state for undo functionality.
|
|
172
|
-
*/
|
|
173
|
-
public clearCanvas() {
|
|
174
|
-
this.context.clearRect(0, 0, this.canvas.width, this.canvas.height);
|
|
175
|
-
this.saveState();
|
|
176
|
-
}
|
|
177
|
-
}
|
package/ts/InteractiveVideo.ts
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @title Interactive Video Playback Handler
|
|
3
|
-
* @notice Manages complex interactive video elements within web applications.
|
|
4
|
-
*/
|
|
5
|
-
class InteractiveVideoHandler {
|
|
6
|
-
private videoElement: HTMLVideoElement;
|
|
7
|
-
|
|
8
|
-
constructor(videoId: string) {
|
|
9
|
-
this.videoElement = document.getElementById(videoId) as HTMLVideoElement;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
public addHotspot(x: number, y: number, callback: () => void) {
|
|
13
|
-
const hotspot = document.createElement("button");
|
|
14
|
-
hotspot.style.position = "absolute";
|
|
15
|
-
hotspot.style.left = `${x}px`;
|
|
16
|
-
hotspot.style.top = `${y}px`;
|
|
17
|
-
hotspot.innerText = "Click me!";
|
|
18
|
-
hotspot.addEventListener("click", callback);
|
|
19
|
-
this.videoElement.parentElement!.appendChild(hotspot);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
public play() {
|
|
23
|
-
this.videoElement.play();
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
public pause() {
|
|
27
|
-
this.videoElement.pause();
|
|
28
|
-
}
|
|
29
|
-
}
|
package/ts/Keyboard.ts
DELETED
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
// Copyright 2024 Scape Agency BV
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* @title Virtual Keyboard
|
|
6
|
-
* @notice Manages the rendering and interaction of a virtual keyboard on
|
|
7
|
-
* the web.
|
|
8
|
-
* @dev This class supports multiple layouts (default, shift, special) and
|
|
9
|
-
* handles both mouse and keyboard inputs, including touch support.
|
|
10
|
-
*/
|
|
11
|
-
class VirtualKeyboard {
|
|
12
|
-
|
|
13
|
-
private keys: { [mode: string]: string[][] } = {
|
|
14
|
-
'default': [
|
|
15
|
-
['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'],
|
|
16
|
-
['q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p'],
|
|
17
|
-
['a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l'],
|
|
18
|
-
['z', 'x', 'c', 'v', 'b', 'n', 'm', 'Backspace']
|
|
19
|
-
],
|
|
20
|
-
'shift': [
|
|
21
|
-
['!', '@', '#', '$', '%', '^', '&', '*', '(', ')'],
|
|
22
|
-
['Q', 'W', 'E', 'R', 'T', 'Y', 'U', 'I', 'O', 'P'],
|
|
23
|
-
['A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L'],
|
|
24
|
-
['Z', 'X', 'C', 'V', 'B', 'N', 'M', 'Backspace']
|
|
25
|
-
],
|
|
26
|
-
'special': [
|
|
27
|
-
['[', ']', '{', '}', '#', '%', '^', '*', '+', '='],
|
|
28
|
-
['_', '\\', '|', '~', '<', '>', '€', '£', '¥'],
|
|
29
|
-
['.', ',', '?', '!', "'", '"', ':', ';', 'Backspace']
|
|
30
|
-
]
|
|
31
|
-
};
|
|
32
|
-
private currentMode = 'default';
|
|
33
|
-
private inputElement: HTMLInputElement;
|
|
34
|
-
private keyboardElement: HTMLElement;
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* @notice Initializes the virtual keyboard with specific input and
|
|
38
|
-
* keyboard element IDs.
|
|
39
|
-
* @param inputId The ID of the HTML input element to which the keyboard
|
|
40
|
-
* will be linked.
|
|
41
|
-
* @param keyboardId The ID of the container element where the keyboard
|
|
42
|
-
* will be rendered.
|
|
43
|
-
*/
|
|
44
|
-
constructor(inputId: string, keyboardId: string) {
|
|
45
|
-
this.inputElement = document.getElementById(
|
|
46
|
-
inputId
|
|
47
|
-
) as HTMLInputElement;
|
|
48
|
-
this.keyboardElement = document.getElementById(
|
|
49
|
-
keyboardId
|
|
50
|
-
) as HTMLElement;
|
|
51
|
-
this.renderKeyboard();
|
|
52
|
-
this.attachEventListeners();
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* @notice Renders the keyboard based on the current mode (default, shift,
|
|
57
|
-
* or special).
|
|
58
|
-
* @dev Dynamically creates HTML for keyboard keys and appends them to the
|
|
59
|
-
* keyboardElement.
|
|
60
|
-
*/
|
|
61
|
-
private renderKeyboard() {
|
|
62
|
-
// Clear existing keys
|
|
63
|
-
this.keyboardElement.innerHTML = '';
|
|
64
|
-
this.keys[this.currentMode].forEach(row => {
|
|
65
|
-
const rowElement = document.createElement('div');
|
|
66
|
-
row.forEach(key => {
|
|
67
|
-
const keyElement = document.createElement('div');
|
|
68
|
-
keyElement.textContent = key;
|
|
69
|
-
// Assign a class for easier CSS styling
|
|
70
|
-
keyElement.className = 'key';
|
|
71
|
-
keyElement.addEventListener(
|
|
72
|
-
'click', () => this.handleKeyPress(key)
|
|
73
|
-
);
|
|
74
|
-
rowElement.appendChild(keyElement);
|
|
75
|
-
});
|
|
76
|
-
this.keyboardElement.appendChild(rowElement);
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
/**
|
|
81
|
-
* @notice Handles key presses on the virtual keyboard.
|
|
82
|
-
* @param key The key character or function (like 'Backspace') that was
|
|
83
|
-
* pressed.
|
|
84
|
-
*/
|
|
85
|
-
private handleKeyPress(key: string) {
|
|
86
|
-
if (key === 'Backspace') {
|
|
87
|
-
this.inputElement.value = this.inputElement.value.slice(0, -1);
|
|
88
|
-
} else if (key === 'Shift' || key === 'CapsLock') {
|
|
89
|
-
this.toggleShift();
|
|
90
|
-
} else {
|
|
91
|
-
this.inputElement.value += key;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
/**
|
|
96
|
-
* @notice Toggles the keyboard between 'default' and 'shift' modes.
|
|
97
|
-
* @dev This method is called when the 'Shift' or 'CapsLock' key is pressed.
|
|
98
|
-
*/
|
|
99
|
-
private toggleShift() {
|
|
100
|
-
this.currentMode = this.currentMode === 'default' ? 'shift' : 'default';
|
|
101
|
-
this.renderKeyboard();
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
/**
|
|
105
|
-
* @notice Attaches necessary event listeners to handle both physical
|
|
106
|
-
* keyboard and touch inputs.
|
|
107
|
-
*/
|
|
108
|
-
private attachEventListeners() {
|
|
109
|
-
document.addEventListener('keydown', this.handlePhysicalKeyPress);
|
|
110
|
-
this.keyboardElement.addEventListener(
|
|
111
|
-
'touchstart', this.handleTouchStart, false
|
|
112
|
-
);
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
* @notice Handles physical keyboard events and maps them to virtual key
|
|
117
|
-
* presses.
|
|
118
|
-
* @param event The keyboard event captured from the user's physical
|
|
119
|
-
* keyboard.
|
|
120
|
-
*/
|
|
121
|
-
private handlePhysicalKeyPress = (event: KeyboardEvent) => {
|
|
122
|
-
const key = event.key;
|
|
123
|
-
if (key === 'Shift' || key === 'CapsLock') {
|
|
124
|
-
this.toggleShift();
|
|
125
|
-
event.preventDefault();
|
|
126
|
-
} else if (key === 'Enter' || key === 'Tab') {
|
|
127
|
-
// Optional: Implement behavior for Enter and Tab if needed
|
|
128
|
-
} else {
|
|
129
|
-
this.handleKeyPress(key);
|
|
130
|
-
}
|
|
131
|
-
};
|
|
132
|
-
|
|
133
|
-
/**
|
|
134
|
-
* @notice Handles touch events on the keyboard element.
|
|
135
|
-
* @param event The touch event on the virtual keyboard.
|
|
136
|
-
*/
|
|
137
|
-
private handleTouchStart = (event: TouchEvent) => {
|
|
138
|
-
event.preventDefault(); // Prevents emulating mouse events
|
|
139
|
-
const keyElement = event.target as HTMLElement;
|
|
140
|
-
if (keyElement.classList.contains('key')) {
|
|
141
|
-
this.handleKeyPress(keyElement.textContent || '');
|
|
142
|
-
}
|
|
143
|
-
};
|
|
144
|
-
|
|
145
|
-
/**
|
|
146
|
-
* @notice Switches the keyboard layout to a specified mode.
|
|
147
|
-
* @param mode The mode to which the keyboard layout should switch
|
|
148
|
-
* ('default', 'shift', or 'special').
|
|
149
|
-
*/
|
|
150
|
-
public switchMode(mode: string) {
|
|
151
|
-
if (this.keys[mode]) {
|
|
152
|
-
this.currentMode = mode;
|
|
153
|
-
this.renderKeyboard();
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
// Example usage:
|
|
159
|
-
const keyboard = new VirtualKeyboard('textInput', 'keyboard');
|
|
160
|
-
document.getElementById(
|
|
161
|
-
'switchToSpecial'
|
|
162
|
-
).addEventListener('click', () => keyboard.switchMode('special'));
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @title Real-Time Collaboration Handler
|
|
3
|
-
* @notice Facilitates real-time interaction and collaboration in virtual environments.
|
|
4
|
-
* @dev Leverages WebSockets or WebRTC to synchronize user activities across different sessions.
|
|
5
|
-
*/
|
|
6
|
-
class RealTimeCollaborationHandler {
|
|
7
|
-
private socket: WebSocket;
|
|
8
|
-
|
|
9
|
-
constructor(serverUrl: string) {
|
|
10
|
-
this.socket = new WebSocket(serverUrl);
|
|
11
|
-
this.socket.onmessage = this.handleMessage;
|
|
12
|
-
this.socket.onopen = () => console.log("Connection established for real-time collaboration.");
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
private handleMessage = (message: MessageEvent) => {
|
|
16
|
-
const data = JSON.parse(message.data);
|
|
17
|
-
console.log("Received data for collaboration:", data);
|
|
18
|
-
// Process and apply data to the collaborative environment
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
public sendUpdate(data: object) {
|
|
22
|
-
this.socket.send(JSON.stringify(data));
|
|
23
|
-
console.log("Sent update:", data);
|
|
24
|
-
}
|
|
25
|
-
}
|
package/ts/Screensaver.ts
DELETED
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
// Copyright 2024 Scape Agency BV
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* @title Screensaver Class
|
|
6
|
-
* @notice Handles the activation and deactivation of a screensaver based on
|
|
7
|
-
* user inactivity.
|
|
8
|
-
* @dev This class provides methods to start and stop the screensaver, manage
|
|
9
|
-
* media sources, and handle user interactions.
|
|
10
|
-
*/
|
|
11
|
-
class Screensaver {
|
|
12
|
-
|
|
13
|
-
private timeoutId: number | undefined;
|
|
14
|
-
private readonly timeout: number;
|
|
15
|
-
private screensaverElement: HTMLElement | undefined;
|
|
16
|
-
private videoElement: HTMLVideoElement | undefined;
|
|
17
|
-
private audioElement: HTMLAudioElement | undefined;
|
|
18
|
-
private isActive: boolean = false;
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* @notice Initializes a new Screensaver instance.
|
|
22
|
-
* @param timeout The inactivity timeout in milliseconds after which the
|
|
23
|
-
* screensaver activates.
|
|
24
|
-
* @param videoUrl The URL for the video to be played when the screensaver
|
|
25
|
-
* activates.
|
|
26
|
-
* @param audioUrl The URL for the audio to be played when the screensaver
|
|
27
|
-
* activates.
|
|
28
|
-
*/
|
|
29
|
-
constructor(timeout: number, videoUrl: string, audioUrl: string) {
|
|
30
|
-
this.timeout = timeout;
|
|
31
|
-
this.initializeElements();
|
|
32
|
-
this.loadMedia(videoUrl, audioUrl);
|
|
33
|
-
this.setupEventListeners();
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* @notice Initializes HTML elements from the DOM.
|
|
38
|
-
* @dev Queries the DOM to get the screensaver, video, and audio elements
|
|
39
|
-
* by their IDs.
|
|
40
|
-
*/
|
|
41
|
-
private initializeElements() {
|
|
42
|
-
this.screensaverElement = document.getElementById("screensaver")!;
|
|
43
|
-
this.videoElement = document.getElementById(
|
|
44
|
-
"screensaverVideo"
|
|
45
|
-
) as HTMLVideoElement;
|
|
46
|
-
this.audioElement = document.getElementById(
|
|
47
|
-
"screensaverAudio"
|
|
48
|
-
) as HTMLAudioElement;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* @notice Loads media sources into the video and audio elements.
|
|
53
|
-
* @param videoUrl The source URL of the video.
|
|
54
|
-
* @param audioUrl The source URL of the audio.
|
|
55
|
-
*/
|
|
56
|
-
private loadMedia(videoUrl: string, audioUrl: string) {
|
|
57
|
-
this.videoElement.src = videoUrl;
|
|
58
|
-
this.audioElement.src = audioUrl;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* @notice Sets up event listeners for user interaction to prevent
|
|
63
|
-
* screensaver activation.
|
|
64
|
-
* @dev Listens for 'mousemove', 'keydown', and 'touchstart' events
|
|
65
|
-
* to reset the screensaver timer.
|
|
66
|
-
*/
|
|
67
|
-
private setupEventListeners() {
|
|
68
|
-
['mousemove', 'keydown', 'touchstart'].forEach(event => {
|
|
69
|
-
document.addEventListener(event, this.resetScreensaver);
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* @notice Starts or restarts the screensaver timeout.
|
|
75
|
-
* @dev Resets any existing timeout and sets a new timeout to activate
|
|
76
|
-
* the screensaver.
|
|
77
|
-
*/
|
|
78
|
-
private startScreensaverTimeout() {
|
|
79
|
-
this.stopScreensaver(); // Stop existing screensaver if active
|
|
80
|
-
this.timeoutId = window.setTimeout(
|
|
81
|
-
() => this.activateScreensaver(), this.timeout
|
|
82
|
-
);
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* @notice Resets the screensaver timer and stops the screensaver if
|
|
87
|
-
* active.
|
|
88
|
-
* @dev Called upon user interactions detected by event listeners.
|
|
89
|
-
*/
|
|
90
|
-
private resetScreensaver = () => {
|
|
91
|
-
if (this.isActive) {
|
|
92
|
-
this.stopScreensaver();
|
|
93
|
-
}
|
|
94
|
-
this.startScreensaverTimeout();
|
|
95
|
-
};
|
|
96
|
-
|
|
97
|
-
/**
|
|
98
|
-
* @notice Activates the screensaver, displaying elements and playing media.
|
|
99
|
-
*/
|
|
100
|
-
private activateScreensaver = () => {
|
|
101
|
-
this.screensaverElement.style.display = 'block';
|
|
102
|
-
this.videoElement.play();
|
|
103
|
-
this.audioElement.play();
|
|
104
|
-
this.isActive = true;
|
|
105
|
-
};
|
|
106
|
-
|
|
107
|
-
/**
|
|
108
|
-
* @notice Stops the screensaver and hides its elements.
|
|
109
|
-
* @dev Pauses media playback and clears the activation timeout.
|
|
110
|
-
*/
|
|
111
|
-
private stopScreensaver() {
|
|
112
|
-
this.screensaverElement.style.display = 'none';
|
|
113
|
-
this.videoElement.pause();
|
|
114
|
-
this.audioElement.pause();
|
|
115
|
-
this.isActive = false;
|
|
116
|
-
|
|
117
|
-
if (this.timeoutId !== undefined) {
|
|
118
|
-
clearTimeout(this.timeoutId);
|
|
119
|
-
this.timeoutId = undefined;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
/**
|
|
124
|
-
* @notice Sets the volume for both video and audio elements of the
|
|
125
|
-
* screensaver.
|
|
126
|
-
* @param volume A number between 0.0 and 1.0 indicating the volume level.
|
|
127
|
-
*/
|
|
128
|
-
public setVolume(volume: number) {
|
|
129
|
-
this.videoElement.volume = volume;
|
|
130
|
-
this.audioElement.volume = volume;
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
// Example usage:
|
|
135
|
-
const screensaver = new Screensaver(
|
|
136
|
-
300000,
|
|
137
|
-
'path/to/video.mp4',
|
|
138
|
-
'path/to/audio.mp3'
|
|
139
|
-
); // Initialize the screensaver with a 5-minute timeout
|
|
140
|
-
screensaver.setVolume(0.5); // Set initial volume to 50%
|
package/ts/SpatialNavigation.ts
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @title Spatial Navigation Handler
|
|
3
|
-
* @notice Provides navigation controls for moving through a 3D space or virtual environments.
|
|
4
|
-
* @dev Supports both keyboard and other input methods for movement and rotation in a 3D space.
|
|
5
|
-
*/
|
|
6
|
-
class SpatialNavigationHandler {
|
|
7
|
-
private position: { x: number; y: number; z: number } = { x: 0, y: 0, z: 0 };
|
|
8
|
-
private rotation: { yaw: number; pitch: number; roll: number } = { yaw: 0, pitch: 0, roll: 0 };
|
|
9
|
-
|
|
10
|
-
constructor() {
|
|
11
|
-
document.addEventListener('keydown', this.handleKeyInput);
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
private handleKeyInput = (event: KeyboardEvent) => {
|
|
15
|
-
switch(event.key) {
|
|
16
|
-
case 'ArrowUp':
|
|
17
|
-
this.position.y += 1; // Move up
|
|
18
|
-
break;
|
|
19
|
-
case 'ArrowDown':
|
|
20
|
-
this.position.y -= 1; // Move down
|
|
21
|
-
break;
|
|
22
|
-
case 'ArrowLeft':
|
|
23
|
-
this.rotation.yaw -= 5; // Turn left
|
|
24
|
-
break;
|
|
25
|
-
case 'ArrowRight':
|
|
26
|
-
this.rotation.yaw += 5; // Turn right
|
|
27
|
-
break;
|
|
28
|
-
case 'w':
|
|
29
|
-
this.position.z += 1; // Move forward
|
|
30
|
-
break;
|
|
31
|
-
case 's':
|
|
32
|
-
this.position.z -= 1; // Move backward
|
|
33
|
-
break;
|
|
34
|
-
// Add more controls as needed
|
|
35
|
-
}
|
|
36
|
-
console.log(`Position: (${this.position.x}, ${this.position.y}, ${this.position.z}), Rotation: (${this.rotation.yaw}, ${this.rotation.pitch}, ${this.rotation.roll})`);
|
|
37
|
-
};
|
|
38
|
-
}
|
package/ts/UserProfile.ts
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @title User Profile and Preferences Handler
|
|
3
|
-
* @notice Manages user-specific settings and preferences for an immersive web application.
|
|
4
|
-
* @dev Stores and retrieves user preferences from local storage or a remote database.
|
|
5
|
-
*/
|
|
6
|
-
class UserProfileHandler {
|
|
7
|
-
private preferences: Map<string, any> = new Map();
|
|
8
|
-
|
|
9
|
-
constructor() {
|
|
10
|
-
this.loadPreferences();
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
private loadPreferences() {
|
|
14
|
-
console.log("Loading user preferences...");
|
|
15
|
-
// Load preferences from local storage or a database.
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
public setPreference(key: string, value: any) {
|
|
19
|
-
this.preferences.set(key, value);
|
|
20
|
-
console.log(`Preference ${key} set to`, value);
|
|
21
|
-
// Optionally save to local storage or update the database.
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
public getPreference(key: string) {
|
|
25
|
-
return this.preferences.get(key);
|
|
26
|
-
}
|
|
27
|
-
}
|
package/ts/VRExperience.ts
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @title VR Experience Handler
|
|
3
|
-
* @notice Manages Virtual Reality scenes and interactions using WebXR.
|
|
4
|
-
* @dev Provides an easy interface to setup, control, and interact with VR content.
|
|
5
|
-
*/
|
|
6
|
-
class VRExperienceHandler {
|
|
7
|
-
private xrSession: XRSession | null = null;
|
|
8
|
-
|
|
9
|
-
constructor(private container: HTMLElement) {
|
|
10
|
-
if ('xr' in navigator) {
|
|
11
|
-
this.initVR();
|
|
12
|
-
} else {
|
|
13
|
-
console.error("WebXR not available.");
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
private async initVR() {
|
|
18
|
-
try {
|
|
19
|
-
this.xrSession = await navigator.xr.requestSession('immersive-vr', {
|
|
20
|
-
optionalFeatures: ['local-floor', 'bounded-floor']
|
|
21
|
-
});
|
|
22
|
-
this.xrSession.addEventListener('end', this.onSessionEnded);
|
|
23
|
-
this.setupXRWebGLLayer();
|
|
24
|
-
} catch (error) {
|
|
25
|
-
console.error("Failed to create XR Session: ", error);
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
private setupXRWebGLLayer() {
|
|
30
|
-
const gl = this.container.querySelector('canvas')!.getContext('webgl2')!;
|
|
31
|
-
this.xrSession!.updateRenderState({
|
|
32
|
-
baseLayer: new XRWebGLLayer(this.xrSession, gl)
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
private onSessionEnded = () => {
|
|
37
|
-
console.log("VR session ended.");
|
|
38
|
-
this.xrSession = null;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
public startRendering() {
|
|
42
|
-
if (!this.xrSession) {
|
|
43
|
-
console.error("XR Session is not initialized.");
|
|
44
|
-
return;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
this.xrSession.requestAnimationFrame((time, frame) => this.renderFrame(time, frame));
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
private renderFrame(time: DOMHighResTimeStamp, frame: XRFrame) {
|
|
51
|
-
const session = frame.session;
|
|
52
|
-
const pose = frame.getViewerPose(xrReferenceSpace);
|
|
53
|
-
|
|
54
|
-
if (pose) {
|
|
55
|
-
// Update your scene's rendering based on user's position
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
}
|