redshift
Version:
A JavaScript UX framework. Handles animation, UI physics and user input tracking.
81 lines (60 loc) • 1.77 kB
JavaScript
;
var utils = require('../utils/utils.js'),
generateKeys = function (key) {
var keys = key.split(DOT),
keysLength = keys.length,
lastKey = keys[0],
i = 1;
for (; i < keysLength; i++) {
keys[i] = lastKey += DOT + keys[i];
}
return keys;
},
presetStore = {},
DOT = '.',
Presets = function () {};
Presets.prototype = {
/*
Define a new Action preset
Syntax
.define(name, preset)
@param [string]: Name of preset
@param [object]: Preset options/properties
.define(presets)
@param [object]: Multiple presets as named object
@return [Redshift]
*/
add: function (name, preset) {
var presets = {},
key = '';
if (utils.isObj(name)) {
presets = name;
} else {
presets[name] = preset;
}
for (key in presets) {
if (presets.hasOwnProperty(key)) {
presetStore[key] = presets[key];
}
}
},
/*
Get defined action
@param [string]: The name of the predefined action
*/
getDefined: function (key) {
var props = {},
thisProp = {},
keys = generateKeys(key),
keysLength = keys.length,
i = 0;
for (; i < keysLength; i++) {
thisProp = presetStore[keys[i]];
if (thisProp) {
props = utils.merge(props, thisProp);
}
}
return props;
}
};
module.exports = new Presets();