smh-rn-expo-json-ui-engine
Version:
A JSON-driven UI engine for React Native and Expo that enables dynamic, runtime-rendered interfaces without rebuilding the app.
1 lines • 998 B
JavaScript
Object.defineProperty(exports,"__esModule",{value:!0}),exports.resolvePlaceholders=exports.registerJSONComponent=exports.getComponentEntry=exports.defineUseComponent=void 0;var _types=require("./types.js");const registry=new Map,registerJSONComponent=(e,t,o={})=>{const r={ref:e,json:t,propsType:{},defaultProps:o};registry.set(e,r)};exports.registerJSONComponent=registerJSONComponent;const getComponentEntry=e=>registry.get(e)??null;exports.getComponentEntry=getComponentEntry;const resolvePlaceholders=(e,t)=>{if("string"==typeof e)return e.replace(/{{(.*?)}}/g,(e,o)=>{const r=t?.[o.trim()];return void 0!==r?String(r):""});if("object"==typeof e&&null!==e){const o=Array.isArray(e)?[]:{};for(const r in e)o[r]=resolvePlaceholders(e[r],t);return o}return e};exports.resolvePlaceholders=resolvePlaceholders;const defineUseComponent=(e,t,o)=>(registerJSONComponent(e,o,t),{type:_types.JSONUIEnums.CustomTypes.useComponent,ref:e,props:t});exports.defineUseComponent=defineUseComponent;
;