UNPKG

launch.io

Version:

Launch.IO is an Ultra Hip, Simple, and Fast, Time Traveling React State Management Library

41 lines (40 loc) 1.7 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.initializeLaunch = void 0; var bindActions_1 = require("./bindActions"); var context_1 = require("./context"); var createServiceApi_1 = require("./createServiceApi"); /** * Initialize a React application with Launch.IO. * * @param {Array} services An `array` of application services. Each service object will consist of `name` (`string`), `initialState` (`object`), and `actions` (object of functions) properties. * @param {Object} options A `Launch.IO` `LaunchOptions` object. * */ exports.initializeLaunch = function (services, options) { if (options === void 0) { options = { enableTimeTravel: false }; } var serviceApi = createServiceApi_1.default(services, options); var launcher = function (action) { var prevCtx = context_1.default.snapshot(); var newState = serviceApi.createReducer(launcher)(prevCtx.state, action); if (newState !== prevCtx.state) { context_1.default.update(__assign(__assign({}, prevCtx), { state: newState })); } }; var contextValue = { state: serviceApi.initialState, actions: bindActions_1.default(serviceApi.actions, launcher), launcher: launcher, }; context_1.default.update(contextValue); };