UNPKG

@viewdo/dxp-story-cli

Version:
59 lines (50 loc) 2.12 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 SettingsStateJsWriter = require("./_settings.states.js.js"); class EmbeddedViewsRenderer { constructor(_console = console) { Object.assign(this, { index_js_writer: new IndexJsWriter(_console), settings_js_writer: new SettingsJsWriter(undefined, _console), settings_state_js_writer: new SettingsStateJsWriter(_console), isEmpty, camelCase }); } create(embedded_view, state_embedded_view_path, common_states) { const { index_js_writer, settings_js_writer, camelCase, settings_state_js_writer } = this; const { states = [] } = embedded_view; const variables = states.reduce((current_state_variables, state) => { const { stateId: state_id } = state; current_state_variables[state_id] = camelCase(state_id); return current_state_variables; }, {}); const imports = states.reduce((current_imports, state, index) => { const { stateId: state_id } = state; const variable = variables[state_id]; const file_path = `./${state_id}`; const import_data = { variable, file_path }; const isCommon = common_states.find((common_state) => { return common_state.id == state_id; }); if (isCommon) return current_imports; return [ ...current_imports, import_data ]; }, []); const state_settings_data = { embedded_view, imports } index_js_writer.write(state_embedded_view_path); settings_js_writer.write(embedded_view, state_embedded_view_path); settings_state_js_writer.write(state_settings_data, state_embedded_view_path); }; } module.exports = EmbeddedViewsRenderer;