11"use strict" ;
2+
23var _ = require ( "lodash" ) ;
34var assert = require ( "assert" ) ;
45var path = require ( "path" ) ;
56var defaultLayoutConfig = require ( "./default-layout-config" ) ;
67var validate = require ( "jsonschema" ) . validate ;
78var layoutConfigSchema = require ( "./layout-config-schema.json" ) ;
8- /* eslint-disable no-magic-numbers */
99
1010// Each layout consists of vertical panels, that contains its position and horizontal views.
1111// Flex-like positions of panels and views defined by 'grow' and 'size' parameters.
@@ -108,7 +108,7 @@ var createLayout = function (panelsConfig) {
108108 } , [ ] ) ;
109109} ;
110110
111- module . exports = function generateLayouts ( layoutsFile ) {
111+ var loadConfigs = function ( layoutsFile ) {
112112 var layoutConfig = defaultLayoutConfig ;
113113 if ( layoutsFile ) {
114114 /* eslint-disable global-require */
@@ -124,6 +124,23 @@ module.exports = function generateLayouts(layoutsFile) {
124124 "Layout config is invalid:\n\n * " + validationResult . errors . join ( "\n * " ) + "\n"
125125 ) ;
126126 }
127+ return layoutConfig ;
128+ } ;
129+
130+ var applyCustomizations = function ( customizations ) {
131+ return function ( panelsConfig ) {
132+ return panelsConfig . map ( function ( view ) {
133+ var customization = customizations [ view . type ] ;
134+ if ( ! customization ) {
135+ return view ;
136+ }
137+ return _ . merge ( view , { view : customization } ) ;
138+ } ) ;
139+ } ;
140+ } ;
127141
128- return layoutConfig . map ( createLayout ) ;
142+ module . exports = function generateLayouts ( layoutsFile , customizations ) {
143+ return loadConfigs ( layoutsFile )
144+ . map ( applyCustomizations ( customizations || { } ) )
145+ . map ( createLayout ) ;
129146} ;
0 commit comments