2024-01-03 18:43:34 +01:00
AFRAME . registerComponent ( 'manual' , {
schema : {
foo : { type : "string" }
} ,
2024-01-08 14:43:28 +01:00
init : function ( ) {
2024-01-22 10:38:16 +01:00
// requires are loaded
this . el . addEventListener ( 'ready' , ( ) => this . el . dom . style . display = 'none' )
2024-01-08 14:43:28 +01:00
} ,
requires : {
2024-01-08 14:56:49 +01:00
html : "https://unpkg.com/aframe-htmlmesh@2.1.0/build/aframe-html.js" , // html to AFRAME
winboxjs : "https://unpkg.com/winbox@0.2.82/dist/winbox.bundle.min.js" , // deadsimple windows: https://nextapps-de.github.io/winbox
winboxcss : "https://unpkg.com/winbox@0.2.82/dist/css/winbox.min.css" , // deadsimple windows: https://nextapps-de.github.io/winbox
2024-01-08 14:43:28 +01:00
} ,
2024-01-03 18:43:34 +01:00
dom : {
2024-01-08 14:43:28 +01:00
scale : 3 ,
events : [ 'click' , 'keydown' ] ,
html : ( me ) => ` <div>
< h1 > Welcome to XRSHell < / h 1 >
< br >
<!-- < img src = "https://i.imgur.com/BW22wrb.png" / > -- >
< br > < br >
The < b > xrsh < /b> (xrshell) brings the <a href="https:/ / en . wikipedia . org / wiki / Free _and _open - source _software " target=" _blank ">FOSS</a>- and <a href=" https : //en.wikipedia.org/wiki/Linux" target="_blank">Linux</a>-soul to <a href="https://en.wikipedia.org/wiki/WebXR" target="_blank">WebXR</a>, promoting the use of (interactive text) terminal and user-provided operating systems inside WebXR.
< br > < br > Technically , < b > xrsh < / b > i s a b u n d l e o f f r e s h l y c r e a t e d r e - u s a b l e F O S S W e b X R c o m p o n e n t s . < b r > T h e s e p r o v i d e a c o m m o n f i l e s y s t e m i n t e r f a c e f o r i n t e r a c t i n g w i t h W e b X R , o f f e r i n g t h e w e l l - k n o w n l i n u x / u n i x t o o l c h a i n i n c l u d i n g a c o m m a n d l i n e t o i n v o k e , s t o r e , e d i t a n d r u n W e b X R u t i l i t i e s - r e g a r d l e s s o f t h e i r i m p l e m e n t a t i o n .
< br > < br > Think of it as termux for the VR / AR headset browser , which can be used to e . g . livecode ( using terminal auto - completion ! ) for XR component ( registries ) .
2024-01-03 18:43:34 +01:00
2024-01-08 14:43:28 +01:00
< br >
< ul >
< li > < a href = "https://forgejo.isvery.ninja/xrsh" target = "_blank" > source xrsh < / a > < / l i >
< li > < a href = "https://forgejo.isvery.ninja/xrsh-apps" target = "_blank" > source xrsh apps < / a > < / l i >
< li > < a href = "https://forgejo.isvery.ninja/xrsh-media" target = "_blank" > roadmap meeting recordings < / a > < / l i >
< / u l >
< / d i v > ` ,
2024-04-19 16:42:46 +02:00
css : ( me ) => ` .manual > div { padding:11px } `
2024-01-03 18:43:34 +01:00
} ,
events : {
2024-01-08 14:43:28 +01:00
// component events
html : function ( ) { console . log ( "html-mesh requirement mounted" ) } ,
// combined AFRAME+DOM reactive events
click : function ( e ) { } , //
keydown : function ( e ) { } , //
// reactive events for this.data updates
myvalue : function ( e ) { this . el . dom . querySelector ( 'b' ) . innerText = this . data . myvalue } ,
2024-01-22 10:38:16 +01:00
launcher : function ( ) {
new WinBox ( this . manifest . name , {
width : '70%' ,
height : '70%' ,
x : "center" ,
y : "center" ,
id : this . el . uid , // important hint for html-mesh
root : document . querySelector ( "#overlay" ) ,
mount : this . el . dom ,
onclose : ( ) => { this . el . dom . style . display = 'none' ; return false ; }
} ) ;
this . el . dom . style . display = ''
this . el . setAttribute ( "xrf" , document . location . search || "https://coderofsalvation.github.io/xrsh-media/assets/background.glb" )
2024-01-08 14:56:49 +01:00
// navigate with: AFRAME.XRF.navigator.to("https://xrfragment.org/index.glb")
2024-01-08 14:43:28 +01:00
} ,
DOMready : function ( ) {
2024-01-22 10:38:16 +01:00
this . el . dom . style . display = 'none'
2024-01-08 14:43:28 +01:00
console . log ( "this.el.dom has been added to DOM" )
this . data . myvalue = 1
setInterval ( ( ) => this . data . myvalue ++ , 100 )
}
2024-01-03 18:43:34 +01:00
} ,
manifest : { // HTML5 manifest to identify app to xrsh
2024-01-22 10:38:16 +01:00
"short_name" : "XRSH Manual" ,
"name" : "XRSH Manual" ,
2024-01-03 18:43:34 +01:00
"icons" : [
{
2024-01-22 10:38:16 +01:00
"src" : "https://css.gg/coffee.svg" ,
2024-01-03 18:43:34 +01:00
"type" : "image/svg+xml" ,
"sizes" : "512x512"
}
] ,
"id" : "/?source=pwa" ,
"start_url" : "/?source=pwa" ,
"background_color" : "#3367D6" ,
"display" : "standalone" ,
"scope" : "/" ,
"theme_color" : "#3367D6" ,
"shortcuts" : [
{
"name" : "What is the latest news?" ,
"cli" : {
2024-01-08 14:43:28 +01:00
"usage" : "helloworld <type> [options]" ,
"example" : "helloworld news" ,
2024-01-03 18:43:34 +01:00
"args" : {
2024-01-08 14:43:28 +01:00
"--latest" : { type : "string" }
2024-01-03 18:43:34 +01:00
}
} ,
"short_name" : "Today" ,
"description" : "View weather information for today" ,
"url" : "/today?source=pwa" ,
"icons" : [ { "src" : "/images/today.png" , "sizes" : "192x192" } ]
}
] ,
2024-01-08 14:43:28 +01:00
"description" : "Hello world information" ,
2024-01-03 18:43:34 +01:00
"screenshots" : [
{
"src" : "/images/screenshot1.png" ,
"type" : "image/png" ,
"sizes" : "540x720" ,
"form_factor" : "narrow"
}
] ,
"help" : `
Helloworld application
This is a help file which describes the application .
It will be rendered thru troika text , and will contain
headers based on non - punctualized lines separated by linebreaks ,
in above ' s case "\nHelloworld application\n" will qualify as header .
`
}
} ) ;