UNPKG

strikejs-react

Version:

A state management framework for ReactJS applications.

7 lines 5.4 kB
module.exports = { contents: "\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar Pool_1 = require(\"./Pool\");\r\nvar ManagedState_1 = require(\"./ManagedState\");\r\n/**\r\n * Returns value at a given key with in an object literal.\r\n *\r\n * @export\r\n * @param {object} object the object to use\r\n * @param {string} path the path to return its value\r\n * @param {string} p path separator, defaults to '.'\r\n * @returns {any} the value at the given key\r\n */\r\nfunction getDataAt(object, path, p) {\r\n var o = object, key, temp, pathSep = p ? p : '.', list = path.split(pathSep);\r\n while ((key = list.shift()) && (temp = o[key]) && (o = temp))\r\n ;\r\n return temp;\r\n}\r\nexports.getDataAt = getDataAt;\r\n/**\r\n * Creates a state container instance with the provided configurations\r\n * @param {StoreCfg} cfg the store configurations.\r\n * @returns {IStore}\r\n */\r\nfunction createStore(cfg) {\r\n var components = {};\r\n var actions = {};\r\n var backlog = [];\r\n var middlewares = cfg.middlewares || [];\r\n var trackChanges = typeof cfg.trackChanges === \"undefined\" ? false : cfg.trackChanges;\r\n var o = null;\r\n var state = {};\r\n var pool = Pool_1.createPool(ManagedState_1.createManagedState);\r\n function connect(el) {\r\n var key = el.getStateKey();\r\n components[key] = el;\r\n state[key] = el.state || {};\r\n return o;\r\n }\r\n function disconnect(el) {\r\n delete components[el.getStateKey()];\r\n delete state[el.getStateKey()];\r\n return o;\r\n }\r\n function getStateAt(key) {\r\n return getDataAt(state, key, '.'); //state[key]; \r\n }\r\n function setStateAt(key, val) {\r\n if (components[key]) {\r\n state[key] = val;\r\n components[key].setState(state[key]);\r\n return o;\r\n }\r\n throw new Error(\"Component with key \" + key + \" could not be found\");\r\n }\r\n function applyMiddleware(action, done) {\r\n var idx = 0;\r\n var m = null;\r\n function next(action) {\r\n if (!action || idx >= middlewares.length) {\r\n return done(action);\r\n }\r\n m = middlewares[idx];\r\n idx++;\r\n return m(action, o, next);\r\n }\r\n next(action);\r\n }\r\n function doExecute(key, action) {\r\n var managedState = pool.get();\r\n var component = components[key];\r\n managedState.setState(state[key]);\r\n var rd = component.getReducer();\r\n if (rd) {\r\n rd(managedState, action);\r\n if (managedState.hasChanges()) {\r\n var changes = managedState.changes();\r\n component.setState(function () { return changes; }, function () {\r\n action.onDone && typeof action.onDone === \"function\" && action.onDone();\r\n });\r\n }\r\n }\r\n pool.put(managedState);\r\n }\r\n function execute(action) {\r\n if (action) {\r\n if (trackChanges) {\r\n backlog.push(action);\r\n }\r\n for (var key in components) {\r\n doExecute(key, action);\r\n }\r\n }\r\n }\r\n function onAction(action, cb) {\r\n action.onDone = action.onDone || cb;\r\n if (!cb) {\r\n if (typeof Promise !== \"undefined\") {\r\n return new Promise(function (res) {\r\n action.onDone = res;\r\n var act = applyMiddleware(action, function (finalAction) {\r\n finalAction && execute(finalAction);\r\n });\r\n });\r\n }\r\n }\r\n var act = applyMiddleware(action, function (finalAction) {\r\n finalAction && execute(finalAction);\r\n });\r\n }\r\n function onActionFail(err) {\r\n console.log(err, err.message, err.stack);\r\n }\r\n var dispatch = function () {\r\n var args = [];\r\n for (var _i = 0; _i < arguments.length; _i++) {\r\n args[_i] = arguments[_i];\r\n }\r\n if (args.length === 0) {\r\n throw new Error(\"No action provided\");\r\n }\r\n else if (args.length === 1) {\r\n if (typeof args[0] === \"function\") {\r\n return args[0](dispatch, getStateAt);\r\n }\r\n else if (typeof args[0] === \"object\") {\r\n return onAction(args[0]);\r\n }\r\n }\r\n else if (args.length === 2) {\r\n if (typeof args[0] === \"function\") {\r\n return args[0](dispatch, getStateAt, args[1]);\r\n }\r\n else if (typeof args[0] === \"object\") {\r\n return onAction(args[0], args[1]);\r\n }\r\n }\r\n };\r\n o = {\r\n connect: connect,\r\n disconnect: disconnect,\r\n getStateAt: getStateAt,\r\n setStateAt: setStateAt,\r\n dispatch: dispatch\r\n };\r\n return o;\r\n}\r\nexports.createStore = createStore;\r\n", dependencies: ["./Pool","./ManagedState"], sourceMap: {}, headerContent: undefined, mtime: 1507926884594, devLibsRequired : undefined };