UNPKG

state

Version:

First-class states

64 lines (50 loc) 2.08 kB
// Generated by CoffeeScript 1.6.3 (function() { var GUARD_ACTIONS, O, TRANSITION_EVENT_TYPES, TRANSITION_EXPRESSION_CATEGORIES, TRANSITION_PROPERTIES, TransitionExpression, state, __hasProp = {}.hasOwnProperty; state = require('./state-function'); O = state.O, TRANSITION_PROPERTIES = state.TRANSITION_PROPERTIES, TRANSITION_EXPRESSION_CATEGORIES = state.TRANSITION_EXPRESSION_CATEGORIES, TRANSITION_EVENT_TYPES = state.TRANSITION_EVENT_TYPES, GUARD_ACTIONS = state.GUARD_ACTIONS; module.exports = TransitionExpression = (function() { var assign, categories, clone, edit, eventTypes, guardActions, interpret, properties; assign = O.assign, edit = O.edit, clone = O.clone; properties = assign(TRANSITION_PROPERTIES, null); categories = assign(TRANSITION_EXPRESSION_CATEGORIES, null); eventTypes = assign(TRANSITION_EVENT_TYPES); guardActions = assign(GUARD_ACTIONS); function TransitionExpression(map) { if (!(map instanceof TransitionExpression)) { map = interpret(map); } edit('deep all', this, map); } interpret = function(map) { var category, events, item, key, result, value, _ref; result = assign({}, properties, categories); for (key in map) { if (!__hasProp.call(map, key)) continue; value = map[key]; if (key in properties) { result[key] = value; } else if (key in categories) { result[key] = clone(result[key], value); } else { category = key in eventTypes ? 'events' : key in guardActions ? 'guards' : typeof value === 'functions' ? 'methods' : void 0; if (category) { item = result[category]; item || (item = result[category] = {}); item[key] = value; } } } _ref = events = result.events; for (key in _ref) { value = _ref[key]; if (typeof value === 'function') { events[key] = [value]; } } return result; }; return TransitionExpression; })(); }).call(this);