JSFiddle - React, Tailwind, and code Playground
by vikikamath
HTML
<script src="//cdnjs.cloudflare.com/ajax/libs/bacon.js/0.7.23/Bacon.min.js"></script>
<ul>
<li id="1">One</li>
<li id="2">Two</li>
</ul>
<button id="hello">Hello</button>
<br/>
Type<input id="text" type="text" placeholder="Type something here..."/>
JavaScript
(function() {
var Bacon, init,
__slice = [].slice;
init = function(Bacon) {
var Lens, Model, defaultEquals, fold, globalModCount, id, idCounter, isModel, nonEmpty, sameValue, shallowCopy, valueLens;
id = function(x) {
return x;
};
nonEmpty = function(x) {
return x.length > 0;
};
fold = function(xs, seed, f) {
var x, _i, _len;
for (_i = 0, _len = xs.length; _i < _len; _i++) {
x = xs[_i];
seed = f(seed, x);
}
return seed;
};
isModel = function(obj) {
return obj instanceof Bacon.Property;
};
globalModCount = 0;
idCounter = 1;
defaultEquals = function(a, b) {
return a === b;
};
sameValue = function(eq) {
return function(a, b) {
return !a.initial && eq(a.value, b.value);
};
};
Model = Bacon.Model = function(initValue) {
var currentValue, eq, model, modificationBus, myId, myModCount, syncBus, valueWithSource;
myId = idCounter++;
eq = defaultEquals;
myModCount = 0;
modificationBus = new Bacon.Bus();
syncBus = new Bacon.Bus();
currentValue = void 0;
valueWithSource = Bacon.update({
initial: true
}, [modificationBus], (function(_arg, _arg1) {
var changed, f, modStack, newValue, source, value;
value = _arg.value;
source = _arg1.source, f = _arg1.f;
newValue = f(value);
modStack = [myId];
changed = newValue !== value;
return {
source: source,
value: newValue,
modStack: modStack,
changed: changed
};
}), [syncBus], (function(_, syncEvent) {
return syncEvent;
})).skipDuplicates(sameValue(eq)).changes().toProperty();
model = valueWithSource.map(".value").skipDuplicates(eq);
model.subscribeInternal(function(event) {
if (event.hasValue()) {
return currentValue = event.value();
}
});
if...