UNPKG

@adjust/core

Version:

A framework for creating highly customisable open source software

44 lines 2.06 kB
Object.defineProperty(exports, "__esModule", { value: true }); const extendedObject_1 = require("../utils/extendedObject"); const moduleView_1 = require("./moduleView"); class ModuleViewClassCreator { /** * Creates a new class extending the passed class, with a dynamic name * @param name The name for the class * @param cls The class to extend */ static createNamedClass(name, cls) { return new Function("cls", `return class ${name} extends cls {}`)(cls); } /** * A function to create a new module view class * @param module The module class to create the view for * @param initialState The initial state to augment the module state with * @param moduleView The module view class to extend */ static createModuleView(module, initialState, moduleView) { // Set the initialState to the default state if not specified if (!initialState) initialState = {}; // Set the module view class to the default module if not specified if (!moduleView) moduleView = moduleView_1.ModuleView; // Create the class const cls = this.createNamedClass(moduleView.name, moduleView); // Get the initial state of the super class const superInitialState = moduleView.initialState; // Combine the settings of both configs, giving priority to the new config const combinedInitialStates = extendedObject_1.ExtendedObject.copyData(superInitialState, {}); extendedObject_1.ExtendedObject.copyData(initialState, combinedInitialStates); // Assign the combined initialState to the class cls.initialState = combinedInitialStates; // Return the created class return cls; } } exports.ModuleViewClassCreator = ModuleViewClassCreator; /** * A shortcut for the module creation method */ exports.createModuleView = ModuleViewClassCreator.createModuleView.bind(ModuleViewClassCreator); //# sourceMappingURL=moduleViewClassCreator.js.map