UNPKG

@viewdo/dxp-story-cli

Version:
67 lines (55 loc) 2.61 kB
const IndexJsWriter = require('../common/index.js.js'); const SettingsJsWriter = require("../common/_settings.js.js"); const isEmpty = require('lodash/isEmpty'); const camelCase = require('lodash/camelCase'); const {state : state_file_names } = require("../_utilities/file-names"); const SettingsStatesJSWriter = require("./_settings.states.js.js"); class EmbeddedViewsRenderer { constructor(_console = console) { Object.assign(this, { index_js_writer: new IndexJsWriter(_console), settings_js_writer: new SettingsJsWriter(__dirname, _console), settings_states_js_writer: new SettingsStatesJSWriter(_console), camelCase, embedded_file_names : state_file_names.embedded, isEmpty }); } create(state, state_embedded_views_path) { const { index_js_writer, settings_js_writer, camelCase, embedded_file_names, settings_states_js_writer, isEmpty} = this; const { embeddedViews: embedded_views = [] } = state; if(isEmpty(embedded_views)) return; const embedded_view_variables = embedded_views.reduce((current_embedded_view_variables, embedded_view, index) => { const { id: embedded_view_id } = embedded_view; current_embedded_view_variables[embedded_view_id] = `${camelCase(embedded_view_id)}`; return current_embedded_view_variables; }, {}); const imports = embedded_views.map((embedded_view, index) => { const { id: embedded_view_id } = embedded_view; const variable = embedded_view_variables[embedded_view_id]; const file_path = `./${embedded_view_id}`; return { variable, file_path } }); const state_settings_imports = embedded_views.map((embedded_view, index) => { const { id: embedded_view_id } = embedded_view; const variable = embedded_view_variables[embedded_view_id]; const file_path = `./${embedded_view_id}/${embedded_file_names.states_settings()}`; return { variable, file_path } }); const embedded_template_data = { embedded_views, state_settings_imports, imports } index_js_writer.write(state_embedded_views_path); settings_js_writer.write(embedded_template_data, state_embedded_views_path); settings_states_js_writer.write(embedded_template_data, state_embedded_views_path); } } module.exports = EmbeddedViewsRenderer;