@volvo-cars/ced-os-react-components
Advanced tools
Comparing version 0.2.5 to 0.2.6
@@ -92,7 +92,7 @@ var __create = Object.create; | ||
var createRenderer = (componentMappings) => { | ||
const render2 = (data, index) => { | ||
const render2 = (data, textVariables, index) => { | ||
if (data.type === "text") | ||
return data.value; | ||
return interpolateTextVariables(data.value, textVariables); | ||
if (Array.isArray(data)) { | ||
return import_react.default.createElement(import_react.default.Fragment, null, renderChildren(render2, data)); | ||
return import_react.default.createElement(import_react.default.Fragment, null, renderChildren(render2, textVariables, data)); | ||
} | ||
@@ -107,3 +107,3 @@ const componentConfig = getComponentConfig(componentMappings, data); | ||
...componentConfig.props | ||
}, value || renderChildren(render2, children)); | ||
}, value || renderChildren(render2, textVariables, children)); | ||
} | ||
@@ -113,7 +113,7 @@ }; | ||
}; | ||
var renderChildren = (render2, children) => { | ||
var renderChildren = (render2, textVariables, children) => { | ||
if (typeof render2 !== "function") | ||
return null; | ||
if (children && Array.isArray(children)) { | ||
return children.map((child, i) => render2(child, i)); | ||
return children.map((child, i) => render2(child, textVariables, i)); | ||
} else { | ||
@@ -149,2 +149,13 @@ return null; | ||
}; | ||
var interpolateTextVariables = (text, strings) => { | ||
return text.replace(/{{\|(\w+)\|}}/g, (match, variableName) => { | ||
if (strings) { | ||
const value = strings[variableName]; | ||
if (value) | ||
return value; | ||
} | ||
console.warn(`No replacement value found for text variable "${variableName}"`); | ||
return match; | ||
}); | ||
}; | ||
@@ -1361,7 +1372,4 @@ // src/render/config.js | ||
// src/support/organisms/JSONArticle/index.js | ||
var render = createRenderer(RENDER_CONFIG, { | ||
transformProp: {src: () => { | ||
}} | ||
}); | ||
function JSONArticle({data, metaSlot, ...props2}) { | ||
var render = createRenderer(RENDER_CONFIG); | ||
function JSONArticle({data, metaSlot, textVariables, ...props2}) { | ||
if (!data) | ||
@@ -1371,5 +1379,5 @@ return null; | ||
if (metaSlot) { | ||
return render(injectSlotAfter(data, "titleContent", metaSlot)); | ||
return render(injectSlotAfter(data, "titleContent", metaSlot), textVariables); | ||
} else { | ||
return render(data); | ||
return render(data, textVariables); | ||
} | ||
@@ -1395,4 +1403,4 @@ } else { | ||
] | ||
}); | ||
}, textVariables); | ||
} | ||
} |
@@ -16,7 +16,7 @@ // src/render/createRenderer.js | ||
var createRenderer = (componentMappings) => { | ||
const render2 = (data, index) => { | ||
const render2 = (data, textVariables, index) => { | ||
if (data.type === "text") | ||
return data.value; | ||
return interpolateTextVariables(data.value, textVariables); | ||
if (Array.isArray(data)) { | ||
return React.createElement(React.Fragment, null, renderChildren(render2, data)); | ||
return React.createElement(React.Fragment, null, renderChildren(render2, textVariables, data)); | ||
} | ||
@@ -31,3 +31,3 @@ const componentConfig = getComponentConfig(componentMappings, data); | ||
...componentConfig.props | ||
}, value || renderChildren(render2, children)); | ||
}, value || renderChildren(render2, textVariables, children)); | ||
} | ||
@@ -37,7 +37,7 @@ }; | ||
}; | ||
var renderChildren = (render2, children) => { | ||
var renderChildren = (render2, textVariables, children) => { | ||
if (typeof render2 !== "function") | ||
return null; | ||
if (children && Array.isArray(children)) { | ||
return children.map((child, i) => render2(child, i)); | ||
return children.map((child, i) => render2(child, textVariables, i)); | ||
} else { | ||
@@ -73,2 +73,13 @@ return null; | ||
}; | ||
var interpolateTextVariables = (text, strings) => { | ||
return text.replace(/{{\|(\w+)\|}}/g, (match, variableName) => { | ||
if (strings) { | ||
const value = strings[variableName]; | ||
if (value) | ||
return value; | ||
} | ||
console.warn(`No replacement value found for text variable "${variableName}"`); | ||
return match; | ||
}); | ||
}; | ||
@@ -1285,7 +1296,4 @@ // src/render/config.js | ||
// src/support/organisms/JSONArticle/index.js | ||
var render = createRenderer(RENDER_CONFIG, { | ||
transformProp: {src: () => { | ||
}} | ||
}); | ||
function JSONArticle({data, metaSlot, ...props2}) { | ||
var render = createRenderer(RENDER_CONFIG); | ||
function JSONArticle({data, metaSlot, textVariables, ...props2}) { | ||
if (!data) | ||
@@ -1295,5 +1303,5 @@ return null; | ||
if (metaSlot) { | ||
return render(injectSlotAfter(data, "titleContent", metaSlot)); | ||
return render(injectSlotAfter(data, "titleContent", metaSlot), textVariables); | ||
} else { | ||
return render(data); | ||
return render(data, textVariables); | ||
} | ||
@@ -1319,3 +1327,3 @@ } else { | ||
] | ||
}); | ||
}, textVariables); | ||
} | ||
@@ -1322,0 +1330,0 @@ } |
{ | ||
"name": "@volvo-cars/ced-os-react-components", | ||
"version": "0.2.5", | ||
"version": "0.2.6", | ||
"description": "Set of components for developing UIs in the onboarding and support apps", | ||
@@ -5,0 +5,0 @@ "keywords": [], |
88552
2620