Skip to content

Commit 64d927a

Browse files
authored
Merge pull request #21 from grozen/diversify
Support Cycle Diversity
2 parents 3b0cb06 + d246aec commit 64d927a

File tree

4 files changed

+40
-21
lines changed

4 files changed

+40
-21
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ pids
1010
# Directory for instrumented libs generated by jscoverage/JSCover
1111
lib-cov
1212

13+
# "Compiled" library file
14+
lib/
15+
1316
# Coverage directory used by tools like istanbul
1417
coverage
1518

examples/flappy-bird/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {run} from '@cycle/core';
1+
import {run} from '@cycle/rx-run';
22
import {makeCanvasDriver} from '../../src/canvas-driver';
33
import {makeAnimationDriver} from 'cycle-animation-driver';
44
import keycode from 'keycode';

package.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@
3535
},
3636
"homepage": "https://github.com/Widdershin/cycle-canvas",
3737
"devDependencies": {
38-
"@cycle/core": "^6.0.0-rc2",
3938
"@cycle/dom": "^9.0.1",
4039
"@cycle/isolate": "^1.2.0",
40+
"@cycle/rx-run": "^7.0.1",
4141
"assert": "^1.3.0",
4242
"babel-cli": "^6.2.0",
4343
"babel-core": "^6.2.1",
@@ -55,5 +55,9 @@
5555
"mocha": "^2.4.5",
5656
"rx": "^4.0.7",
5757
"uglifyify": "^3.0.1"
58+
},
59+
"dependencies": {
60+
"@cycle/xstream-adapter": "^3.0.3",
61+
"xstream": "^6.2.0"
5862
}
5963
}

src/canvas-driver.js

Lines changed: 31 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
import XStreamAdapter from '@cycle/xstream-adapter';
2+
import xs from 'xstream'
3+
14
function flatten (array) {
25
if (typeof array.reduce !== 'function') {
36
return array;
@@ -337,28 +340,37 @@ export function makeCanvasDriver (selector, {width, height}) {
337340

338341
const context = canvas.getContext('2d');
339342

340-
return function canvasDriver (sink$) {
341-
return sink$.subscribe(rootElement => {
342-
const defaults = {
343-
kind: 'rect',
344-
x: 0,
345-
y: 0,
346-
width: canvas.width,
347-
height: canvas.height,
348-
draw: [
343+
let driver = function canvasDriver (sink$) {
344+
sink$.addListener({
345+
next: rootElement => {
346+
const defaults = {
347+
kind: 'rect',
348+
x: 0,
349+
y: 0,
350+
width: canvas.width,
351+
height: canvas.height,
352+
draw: [
349353
{clear: true}
350-
]
351-
};
354+
]
355+
};
352356

353-
const rootElementWithDefaults = Object.assign(
354-
{},
355-
defaults,
356-
rootElement
357-
);
357+
const rootElementWithDefaults = Object.assign(
358+
{},
359+
defaults,
360+
rootElement
361+
);
358362

359-
const instructions = translateVtreeToInstructions(rootElementWithDefaults);
363+
const instructions = translateVtreeToInstructions(rootElementWithDefaults);
360364

361-
renderInstructionsToCanvas(instructions, context);
365+
renderInstructionsToCanvas(instructions, context);
366+
},
367+
error: e => { throw e },
368+
complete: () => null
362369
});
363-
};
370+
371+
return xs.empty();
372+
}
373+
374+
driver.streamAdapter = XStreamAdapter;
375+
return driver;
364376
}

0 commit comments

Comments
 (0)