Skip to content
This repository was archived by the owner on May 18, 2025. It is now read-only.

Commit 3f63c3e

Browse files
removed alpine (using Proxy now)
1 parent 688713d commit 3f63c3e

File tree

5 files changed

+506
-445
lines changed

5 files changed

+506
-445
lines changed

example/aframe/sandbox/index.html

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,13 @@
2929
</a-scene>
3030

3131
<script>
32-
// the xrf-menu is totally optional but can be handy
32+
// the xrfmenu is totally optional but can be handy
3333
// to quickly add your logo & buttons etc
3434
XRFMENU.logo = './../../assets/logo.png'
3535
XRFMENU.morelabel = '⚡'
3636
// add your menubuttons:
37-
XRFMENU.buttons.push(`<a class="btn" aria-label="button" aria-description="about menu" onclick="XRFMENU.showAbout()">💁 about</a><br>`)
37+
XRFMENU.buttons = XRFMENU.buttons.concat([`<a class="btn" aria-label="button" aria-description="about menu" onclick="XRFMENU.showAbout()">💁 about</a><br>`])
38+
XRFMENU.collapsed = false
3839
XRFMENU.showAbout = () => window.notify(`
3940
<h1>💁 Hi there!</h1>
4041

make

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,7 @@ build(){
8686
example/assets/js/qr.js > dist/xrfragment.aframe.js
8787

8888
# html extras like menu & meetings
89-
test -f dist/alpine.min.js || wget "https://cdn.jsdelivr.net/npm/[email protected]/dist/cdn.min.js" -O dist/alpine.min.js
90-
cat dist/alpine.min.js src/3rd/js/extra/*.js > dist/xrfragment.extras.js
89+
cat src/3rd/js/extra/*.js > dist/xrfragment.extras.js
9190

9291
# fat all-in-one standalone xrf release
9392
test -f /tmp/xrf-aframe.js || {

shell.nix

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@
88
haxe
99
mmark
1010
xml2rfc
11+
dendrite
1112

1213
];
14+
15+
shellHooks = ''
16+
bash
17+
'';
1318
}

src/3rd/js/extra/$meeting.js

Lines changed: 63 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,67 @@
1+
MEETING = {
2+
3+
html: `
4+
<div id="videos" style="pointer-events:none"></div>
5+
<div id="chat" aria-live="assertive" aria-relevant></div>
6+
<div id="chatfooter">
7+
<div id="chatbar">
8+
<input id="chatline" type="text" placeholder=""></input>
9+
</div>
10+
<button id="showchat" class="btn">show chat</button>
11+
</div>
12+
</div>
13+
`,
14+
15+
init: (el) => new Proxy({
16+
17+
scene: null,
18+
enabled: false,
19+
active: false,
20+
//$overlay: $overlay = el.querySelector('#overlay'),
21+
//
22+
install(opts){
23+
this.scene = opts.scene
24+
window.meeting.buttons.push(`<a class="btn" aria-label="button" aria-description="start text/audio/video chat" id="meeting" onclick="MEETING.toggle()" target="_blank">🧑‍🤝‍🧑 meeting</a><br>`)
25+
document.body.appendChild( el )
26+
27+
},
28+
29+
start(){
30+
this.scene.addEventListener('meeting.peer.add', () => console.log("$meeting.peer.add") )
31+
this.scene.addEventListener('meeting.peer.remove', () => console.log("$meeting.peer.remove") )
32+
},
33+
34+
toggle: () => MEETING.collapsed = !MEETING.collapsed,
35+
install: (opts) => {
36+
document.body.appendChild(el)
37+
document.dispatchEvent( new CustomEvent("MEETING:ready", {detail: opts}) )
38+
}
39+
40+
},{
41+
42+
get(data,k,v){ return data[k] },
43+
set(data,k,v){
44+
data[k] = v
45+
switch( k ){
46+
case "css": document.head.innerHTML += v; break;
47+
}
48+
},
49+
50+
})
51+
}
52+
53+
// reactify component!
54+
document.addEventListener('XRFMENU:ready', (opts) => {
55+
opts = opts.detail
56+
$meeting = document.createElement('div')
57+
$meeting.innerHTML = MEETING.html
58+
MEETING = MEETING.init($meeting)
59+
MEETING.install(opts)
60+
})
61+
162
// alpine component for displaying meetings
263

3-
$XRFMEETING = $el(
4-
`<div x-show="enabled" id="meeting" x-data="XRFMEETING">
64+
MEETING.css = `
565
<style type="text/css">
666
#videos{
767
display:grid-auto-columns;
@@ -112,48 +172,4 @@ $XRFMEETING = $el(
112172
font-family:monospace;
113173
font-size:15px;
114174
}
115-
</style>
116-
<div id="videos" style="pointer-events:none"></div>
117-
<div id="chat" aria-live="assertive" aria-relevant></div>
118-
<div id="chatfooter">
119-
<div id="chatbar">
120-
<input id="chatline" type="text" placeholder=""></input>
121-
</div>
122-
<button id="showchat" class="btn">show chat</button>
123-
</div>
124-
</div>`
125-
)
126-
127-
window.XRFMEETING = {
128-
129-
scene: null,
130-
enabled: false,
131-
active: false,
132-
init(){
133-
window.XRFMEETING = this.$data // replace so we can modify state in global scope
134-
window.meeting
135-
},
136-
toggle(){
137-
this.enabled = !this.enabled
138-
if( !this.active ) this.start()
139-
},
140-
141-
install(opts){
142-
this.scene = opts.scene
143-
window.XRFMENU.buttons.push(`<a class="btn" aria-label="button" aria-description="start text/audio/video chat" id="meeting" onclick="XRFMEETING.toggle()" target="_blank">🧑‍🤝‍🧑 meeting</a><br>`)
144-
document.body.appendChild( $XRFMEETING )
145-
146-
},
147-
148-
start(){
149-
this.scene.addEventListener('meeting.peer.add', () => console.log("$meeting.peer.add") )
150-
this.scene.addEventListener('meeting.peer.remove', () => console.log("$meeting.peer.remove") )
151-
}
152-
}
153-
154-
// finally we alpinify
155-
document.addEventListener('XRFMENU:ready', (opts) => {
156-
opts = opts.detail
157-
Alpine.data('XRFMEETING', () => window.XRFMEETING)
158-
XRFMEETING.install(opts)
159-
})
175+
</style>`

0 commit comments

Comments
 (0)