oc-template-solid-compiler
Version:
Compiler for the SolidJS OC template
45 lines (35 loc) • 1.14 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = solidOCProviderTemplate;
const removeExtension = (path) => path.replace(/\.(t|j)sx?$/, '');
function solidOCProviderTemplate({ viewPath, providerFunctions }) {
return `
import { render } from 'solid-js/web';
import View from '${removeExtension(viewPath)}';
import { DataProvider } from 'oc-template-solid-compiler/dist/utils/useData'
function OCProvider(props) {
const { _staticPath, _baseUrl, _componentName, _componentVersion, ...rest } = props;
${providerFunctions}
window.oc.events.fire('oc:componentDidMount', rest);
rest.getData = getData;
rest.getSetting = getSetting;
return (
<DataProvider value={{...rest}}>
<View { ...rest } />
</DataProvider>
);
}
let dispose = null;
function renderer(props, element, ssr) {
dispose = render(() => <OCProvider {...props} />, element);
}
element.parentElement.unmount = () => {
if (dispose) {
dispose();
dispose = null;
}
}
renderer.component = OCProvider;
export default renderer;
`;
}