UNPKG

respond-framework

Version:
71 lines (70 loc) 2.23 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = addModule; var _createEvents = require("./createEvents.js"); var _createReducers = require("./createReducers.js"); var _createSelectors = require("./createSelectors.js"); var _createModels = require("../db/createModels.js"); var _createBasename = require("./createBasename.js"); var _createPlugins = require("./createPlugins.js"); var _extractModuleAspects = require("./extractModuleAspects.js"); var _assignRenderingDependencies = require("./helpers/assignRenderingDependencies.js"); var _assignProto = require("../utils/assignProto.js"); var _reserved = require("./reserved.js"); function addModule(mod, Respond, moduleName = '', parent = {}, state = Object.create({})) { const { branch, moduleKeys = [], options = {}, components, reduce, ignoreParents } = mod; const respond = new Respond({ branch, mod, state, moduleName, moduleKeys, options, ignoreParents }); const proto = (0, _assignProto.default)(state, { ...options.merge, respond, moduleKeys, options, components, reduce, [_reserved._parent]: parent }); const props = respond.isTop ? {} : mod.props ?? {}; // props disabled on top focused module const deps = { respond, mod, parent, proto, state, props, branch, moduleName }; respond.branchLocatorsById[mod.id] = branch; respond.branches[branch] = state; (mod.build ?? props.build)?.(deps); const [events, reducers, selectors] = (0, _extractModuleAspects.default)(mod, state); const [propEvents, propReducers, propSelectors] = (0, _extractModuleAspects.default)(props, state); (0, _createBasename.default)(deps); (0, _createEvents.default)(deps, events, propEvents); (0, _createReducers.default)(deps, reducers, propReducers); (0, _createSelectors.default)(deps, selectors, propSelectors); (0, _createModels.default)(deps); (0, _createPlugins.default)(deps); (0, _assignRenderingDependencies.default)(deps); moduleKeys.forEach(k => addModule(mod[k], Respond, k, state)) // recurse ; (mod.buildAfter ?? props.buildAfter)?.(deps); return parent[moduleName] = state; }