UNPKG

@syncfusion/ej2-react-base

Version:

A common package of Essential JS 2 React base, methods and class definitions

55 lines (54 loc) 1.83 kB
/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types */ /** * Template compiler for react */ import { setTemplateEngine, getTemplateEngine, extend } from '@syncfusion/ej2-base'; import * as ReactDOM from 'react-dom'; import * as React from 'react'; /** * Compile the string value to DOM elements. */ var stringCompiler = getTemplateEngine(); /** * Compile the template property to the DOM elements. * * @param {any} templateElement ? * @param {Object} helper ? * @returns {Function} ? * @private */ export function compile(templateElement, helper) { if (typeof templateElement === 'string' || (templateElement.prototype && templateElement.prototype.CSPTemplate && typeof templateElement === 'function')) { return stringCompiler(templateElement, helper); } else { return function (data, component, prop, element) { var actTemplate = templateElement; var actData = data; if (typeof actTemplate === 'object') { actTemplate = templateElement.template; actData = extend({}, data, templateElement.data || {}); } var cEle; if (element) { cEle = element; } else { cEle = document.createElement('div'); } var rele = React.createElement(actTemplate, actData); var portal = ReactDOM.createPortal(rele, cEle); portal.propName = prop; if (!component.portals) { component.portals = [portal]; } else { component.portals.push(portal); } if (!element) { return [cEle]; } }; } } setTemplateEngine({ compile: compile });