outsourced examples

This commit is contained in:
Kevin Jahns 2015-11-04 16:53:02 +01:00
parent e9ac59dcf8
commit f58889a05d
9 changed files with 30 additions and 152 deletions

View File

@ -1,3 +0,0 @@
{
"directory": "../"
}

1
.gitignore vendored
View File

@ -10,3 +10,4 @@ build_test
.validate.json
/y.js
/y.js.map
/y-*

View File

@ -1,12 +0,0 @@
<!DOCTYPE html>
<html>
<body>
<button id="button">Disconnect</button>
<h1 id="contenteditable" contentEditable></h1>
<textarea style="width:80%;" rows=40 id="textfield"></textarea>
<script src="../../node_modules/simplewebrtc/simplewebrtc.bundle.js"></script>
<script src="../../y.js"></script>
<script src="./index.js"></script>
</body>
</html>

View File

@ -1,50 +0,0 @@
/* global Y */
// create a shared object. This function call will return a promise!
Y({
db: {
name: 'IndexedDB',
namespace: 'offlineEditingDemo'
},
connector: {
name: 'WebRTC',
room: 'offlineEditingDemo',
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
var textpromise = yconfig.root.get('text')
if (textpromise == null) {
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'
}
}
})

View File

@ -1,12 +0,0 @@
<!DOCTYPE html>
<html>
<body>
<button id="button">Disconnect</button>
<h1 id="contenteditable" contentEditable></h1>
<textarea style="width:80%;" rows=40 id="textfield"></textarea>
<script src="../../node_modules/simplewebrtc/simplewebrtc.bundle.js"></script>
<script src="../../y.js"></script>
<script src="./index.js"></script>
</body>
</html>

View File

@ -1,47 +0,0 @@
/* 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'
}
}
})

2
dist

@ -1 +1 @@
Subproject commit 33b7588497538d07a514b3be4cfe53e26fc366a4
Subproject commit e2e89e198f47689fe6df908c0ea1cef6d800be0d

View File

@ -44,15 +44,8 @@
*/
var gulp = require('gulp')
var sourcemaps = require('gulp-sourcemaps')
var babel = require('gulp-babel')
var uglify = require('gulp-uglify')
var minimist = require('minimist')
var jasmine = require('gulp-jasmine')
var jasmineBrowser = require('gulp-jasmine-browser')
var concat = require('gulp-concat')
var watch = require('gulp-watch')
var shell = require('gulp-shell')
var $ = require('gulp-load-plugins')()
var options = minimist(process.argv.slice(2), {
@ -102,16 +95,16 @@ if (options.regenerator) {
gulp.task('deploy:build', function () {
return gulp.src(files.src)
.pipe(sourcemaps.init())
.pipe($.sourcemaps.init())
.pipe(concat('y.js'))
.pipe(babel({
.pipe($.babel({
loose: 'all',
modules: 'ignore',
experimental: true
}))
.pipe(uglify())
.pipe(sourcemaps.write('.'))
.pipe(gulp.dest('.'))
.pipe($.uglify())
.pipe($.sourcemaps.write('./dist/'))
.pipe(gulp.dest('./dist/'))
})
gulp.task('deploy:updateSubmodule', function () {
@ -119,19 +112,19 @@ gulp.task('deploy:updateSubmodule', function () {
})
gulp.task('deploy:copy', function () {
return gulp.src(['./y.js', './y.js.map', './README.md', 'package.json', 'LICENSE'])
.pipe(gulp.dest('./dist/'))
return gulp.src(['README.md'], {base: '.'})
.pipe(gulp.dest('dist/'))
})
gulp.task('deploy:bump', function () {
return gulp.src('./package.json')
return gulp.src(['./package.json', './dist/package.json'], {base: '.'})
.pipe($.bump({type: 'patch'}))
.pipe(gulp.dest('./'))
})
gulp.task('deploy', ['test', 'deploy:updateSubmodule', 'deploy:bump', 'deploy:build', 'deploy:copy'], function () {
return gulp.src('./package.json', {read: false})
.pipe(shell([
.pipe($.shell([
'standard',
'echo "Deploying version <%= getVersion(file.path) %>"',
'git pull',
@ -161,16 +154,16 @@ gulp.task('build:test', function () {
babelOptions.blacklist = 'regenerator'
}
gulp.src(files.src)
.pipe(sourcemaps.init())
.pipe($.sourcemaps.init())
.pipe(concat('y.js'))
.pipe(babel(babelOptions))
.pipe(sourcemaps.write())
.pipe($.babel(babelOptions))
.pipe($.sourcemaps.write())
.pipe(gulp.dest('.'))
return gulp.src('src/**/*.js')
.pipe(sourcemaps.init())
.pipe(babel(babelOptions))
.pipe(sourcemaps.write())
.pipe($.sourcemaps.init())
.pipe($.babel(babelOptions))
.pipe($.sourcemaps.write())
.pipe(gulp.dest('build'))
})
@ -182,9 +175,9 @@ gulp.task('dev:browser', ['build:test'], function () {
gulp.watch('src/**/*.js', ['build:test'])
gulp.src(files.test)
.pipe(watch(['build/**/*.js']))
.pipe(jasmineBrowser.specRunner())
.pipe(jasmineBrowser.server({port: options.testport}))
.pipe($.watch(['build/**/*.js']))
.pipe($.jasmineBrowser.specRunner())
.pipe($.jasmineBrowser.server({port: options.testport}))
})
gulp.task('dev', ['build:test'], function () {
@ -192,13 +185,20 @@ gulp.task('dev', ['build:test'], function () {
gulp.start('dev:node')
})
gulp.task('copy:dist', ['deploy:build'])
gulp.task('dev:Examples', ['copy:dist'], function () {
gulp.watch('src/**/*.js', ['copy:dist'])
return $.serve('dist/Examples')()
})
gulp.task('test', ['build:test'], function () {
var testfiles = files.test
if (typeof Promise === 'undefined') {
testfiles.concat(['src/polyfills.js'])
}
return gulp.src(testfiles)
.pipe(jasmine({
.pipe($.jasmine({
verbose: true,
includeStuckTrace: true
}))

View File

@ -1,6 +1,6 @@
{
"name": "yjs",
"version": "0.6.23",
"version": "0.6.25",
"description": "A framework for real-time p2p shared editing on arbitrary complex data types",
"main": "y.js",
"scripts": {
@ -52,6 +52,7 @@
"gulp-jasmine": "^2.0.1",
"gulp-jasmine-browser": "^0.2.3",
"gulp-load-plugins": "^1.0.0",
"gulp-serve": "^1.2.0",
"gulp-shell": "^0.5.1",
"gulp-sourcemaps": "^1.5.2",
"gulp-tag-version": "^1.3.0",