1 | var h = require('hyperscript')
|
2 | var o = require('observable')
|
3 | var pull = require('pull-stream')
|
4 | var Pause = require('pull-pause')
|
5 |
|
6 | var Scroller = require('../')
|
7 |
|
8 | var c = o.value()
|
9 | var v = o.value()
|
10 |
|
11 | var check = h('input', {type: 'checkbox'})
|
12 | var sticky = o.input(check, 'checked')
|
13 | var panel
|
14 | document.body.appendChild(
|
15 | panel = h('div.screen', {
|
16 | style: {
|
17 | top: '0px', bottom: '0px',
|
18 | position: 'absolute',
|
19 | display: 'flex',
|
20 | 'flex-direction': 'row'
|
21 | }
|
22 | },
|
23 | h('div', {style: {position: 'fixed', right: '20px', top: '20px'}},
|
24 | c, '-', v, check,
|
25 | h('a', 'Create!', {href: '#', onclick: function () {
|
26 | panel.appendChild(createScroller())
|
27 | }})
|
28 | )
|
29 | )
|
30 | )
|
31 |
|
32 |
|
33 |
|
34 |
|
35 | function createSource (top) {
|
36 | return pull(
|
37 | pull.infinite(),
|
38 | pull.map(function (e) {
|
39 | c((c()||0)+1)
|
40 | return {random: e, count: c(), top: top}
|
41 | }),
|
42 | pull.asyncMap(function (e, cb) {
|
43 | var delay = 100 + 200*Math.random()
|
44 | setTimeout(function () {
|
45 | e.delay = delay
|
46 | cb(null, e)
|
47 | }, delay)
|
48 | })
|
49 | )
|
50 | }
|
51 |
|
52 | function render (e) {
|
53 | return h('h3', {
|
54 | style: {background: 'hsl('+Math.round(Math.random()*360) + ',100%,50%)'
|
55 | }
|
56 | }, h('pre', JSON.stringify(e, null, 2)))
|
57 | }
|
58 |
|
59 | function createScroller () {
|
60 | var scroller = SCROLLER = h('ol', {
|
61 | style: {
|
62 | 'flex-bias': 0,
|
63 | overflowY: 'scroll',
|
64 | overflow: 'auto',
|
65 | display: 'inline-block'
|
66 | }
|
67 | })
|
68 |
|
69 | pull(
|
70 | createSource(true),
|
71 | Scroller(scroller, render, true, false)
|
72 | )
|
73 |
|
74 | pull(
|
75 | createSource(false),
|
76 | Scroller(scroller, render, false, false)
|
77 | )
|
78 |
|
79 | return h('div', {style: {
|
80 | display: 'flex', 'flex-bias': 0,
|
81 | 'flex-direction': 'column'
|
82 | }}, h('h1', 'scroller') , scroller)
|
83 | }
|
84 |
|
85 |
|