Skip to content

Instantly share code, notes, and snippets.

@taras
Last active September 9, 2016 12:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save taras/48839269bcda7ffc44d098c1b5f1bee2 to your computer and use it in GitHub Desktop.
Save taras/48839269bcda7ffc44d098c1b5f1bee2 to your computer and use it in GitHub Desktop.
This gist shows what Microstate helpers might look like using a callback to notify helper of change.
import StateHelper from 'ember-microstates/helpers/state';
import { Bool } from 'microstates';
export default StateHelper.extend({
construct(params, hash, onTransition) {
return new Bool(params, onTransition);
}
});
import StateHelper from 'ember-microstates/helpers/state';
import { List } from 'microstates';
export default StateHelper.extend({
construct(params, hash, onTransition) {
return new List(params, onTransition);
}
});
import StateHelper from 'ember-microstates/helpers/state';
import { Num } from 'microstates';
export default StateHelper.extend({
construct([value], hash, onTransition) {
return new Num(value, onTransition);
}
});
import Ember from 'ember';
import { State } from 'microstates';
export default Ember.Helper.extend({
construct([Microstate = State], hash, onTransition) {
return new Microstate(hash, onTransition);
},
compute(params, hash) {
if (this._update) {
this._update = false;
return this._microstate;
}
let onTransition = (microstate) => {
this._update = true;
this._microstate = microstate;
this.recompute();
};
return this._microstate = this.construct(params, hash, onTransition);
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment