UNPKG

react-application-core

Version:

A react-based application core for the business applications.

106 lines 4.27 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.UniversalLayoutBuilder = void 0; var util_1 = require("../../../util"); var definition_1 = require("../../../definition"); var UniversalLayoutBuilder = /** @class */ (function () { /** * @stable [22.10.2018] * @param {IUniversalLayoutViewBuilder<TNode>} layoutViewBuilder */ function UniversalLayoutBuilder(layoutViewBuilder) { this.layoutViewBuilder = layoutViewBuilder; this.layoutId = util_1.uuid(); } /** * @stable [23.01.2020] * @param {IUniversalLayoutBuilderConfigEntity<TNode>} layoutConfig * @returns {TNode} */ UniversalLayoutBuilder.prototype.build = function (layoutConfig) { this.index = 0; // The keys should be persistent return this.buildLayout(layoutConfig); }; /** * @stable [23.01.2020] * @param {UniversalLayoutBuilderChildrenT<TNode>} _ * @returns {StringNumberT} */ UniversalLayoutBuilder.prototype.asClonedItemKey = function (_) { return this.newKey; }; /** * @stable [22.10.2018] * @param {IUniversalLayoutBuilderConfigEntity<TNode>} layoutConfig * @returns {TNode} */ UniversalLayoutBuilder.prototype.buildLayout = function (layoutConfig) { return layoutConfig.layout === definition_1.LayoutTypesEnum.HORIZONTAL ? this.buildHorizontalLayout(layoutConfig) : this.buildVerticalLayout(layoutConfig); }; /** * @stable [23.01.2020] * @param {IUniversalLayoutBuilderConfigEntity<TNode>} layoutConfig * @returns {TNode} */ UniversalLayoutBuilder.prototype.buildHorizontalLayout = function (layoutConfig) { var _this = this; return this.layoutViewBuilder.buildRowView(this.key, this.filterChildren(layoutConfig).map(function (item, index) { return _this.asClonedItem(item, layoutConfig); }), layoutConfig); }; /** * @stable [22.10.2018] * @param {IUniversalLayoutBuilderConfigEntity<TNode>} layoutConfig * @returns {TNode} */ UniversalLayoutBuilder.prototype.buildVerticalLayout = function (layoutConfig) { var _this = this; return this.layoutViewBuilder.buildColumnView(this.key, this.filterChildren(layoutConfig).map(function (item) { return _this.asClonedItem(item, layoutConfig); }), layoutConfig); }; /** * @stable [23.01.2020] * @param {IUniversalLayoutBuilderConfigEntity<TNode>} layoutConfig * @returns {Array<UniversalLayoutBuilderChildrenT<TNode>>} */ UniversalLayoutBuilder.prototype.filterChildren = function (layoutConfig) { return util_1.FilterUtils.notNilValuesArrayFilter.apply(util_1.FilterUtils, (layoutConfig.items || [])); }; /** * @stable [22.10.2018] * @param {UniversalLayoutBuilderChildrenT<TNode>} item * @param {IUniversalLayoutBuilderConfigEntity<TNode>} layoutConfig * @returns {TNode} */ UniversalLayoutBuilder.prototype.asClonedItem = function (item, layoutConfig) { var itemAsNode = item; var itemAsCfg = item; return this.layoutViewBuilder.isClonedItem(item) ? (this.layoutViewBuilder.cloneItem(itemAsNode, this.layoutViewBuilder.getClonedItemProps(itemAsNode, layoutConfig, { key: this.asClonedItemKey(itemAsNode) }))) : this.buildLayout(itemAsCfg); }; Object.defineProperty(UniversalLayoutBuilder.prototype, "key", { /** * @stable [23.01.2020] * @returns {TProps} */ get: function () { return { key: this.newKey }; }, enumerable: false, configurable: true }); Object.defineProperty(UniversalLayoutBuilder.prototype, "newKey", { /** * @stable [23.01.2020] * @returns {string} */ get: function () { return this.layoutId + "-" + this.index++; }, enumerable: false, configurable: true }); return UniversalLayoutBuilder; }()); exports.UniversalLayoutBuilder = UniversalLayoutBuilder; //# sourceMappingURL=universal-layout.builder.js.map