48 lines
1.4 KiB
JavaScript
48 lines
1.4 KiB
JavaScript
/* global Y */
|
|
|
|
// create a shared object. This function call will return a promise!
|
|
Y({
|
|
db: {
|
|
name: 'Memory'
|
|
},
|
|
connector: {
|
|
name: 'WebRTC',
|
|
room: 'TextBindDemo',
|
|
debug: true
|
|
}
|
|
}).then(function (yconfig) {
|
|
// yconfig holds all the information about the shared object
|
|
window.yconfig = yconfig
|
|
// yconfig.root holds the shared element
|
|
window.y = yconfig.root
|
|
|
|
// now we bind the textarea and the contenteditable h1 element
|
|
// to a shared element
|
|
var textarea = document.getElementById('textfield')
|
|
var contenteditable = document.getElementById('contenteditable')
|
|
yconfig.root.observePath(['text'], function (text) {
|
|
// every time the 'text' property of the yconfig.root changes,
|
|
// this function is called. Then we bind it to the html elements
|
|
if (text != null) {
|
|
// when the text property is deleted, text may be undefined!
|
|
// This is why we have to check if text exists..
|
|
text.bind(textarea)
|
|
text.bind(contenteditable)
|
|
}
|
|
})
|
|
// create a shared TextBind
|
|
yconfig.root.set('text', Y.TextBind)
|
|
|
|
// We also provide a button for disconnecting/reconnecting the shared element
|
|
var button = document.querySelector('#button')
|
|
button.onclick = function () {
|
|
if (button.innerText === 'Disconnect') {
|
|
yconfig.disconnect()
|
|
button.innerText = 'Reconnect'
|
|
} else {
|
|
yconfig.reconnect()
|
|
button.innerText = 'Disconnect'
|
|
}
|
|
}
|
|
})
|