oc-template-preact-compiler
Version:
Compiler for the Preact OC template
44 lines (34 loc) • 1.15 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = preactOCProviderTemplate;
const removeExtension = (path) => path.replace(/\.(t|j)sx?$/, '');
function preactOCProviderTemplate({ viewPath, providerFunctions }) {
return `
import { render } from 'preact';
import { useEffect } from 'preact/hooks';
import View from '${removeExtension(viewPath)}';
import { DataProvider } from 'oc-template-preact-compiler/dist/utils/useData'
function OCProvider(props) {
const { _staticPath, _baseUrl, _componentName, _componentVersion, ...rest } = props;
useEffect(() => {
window.oc.events.fire('oc:componentDidMount', rest);
}, []);
${providerFunctions}
rest.getData = getData;
rest.getSetting = getSetting;
return (
<DataProvider value={{...rest}}>
<View { ...rest } />
</DataProvider>
);
}
function renderer(props, element, ssr) {
render(<OCProvider {...props} />, element);
element.parentElement.unmount = () => {
render(null, element);
}
}
renderer.component = OCProvider;
export default renderer;
`;
}