UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

69 lines (68 loc) 2.23 kB
/** * DevExtreme (esm/core/inferno_renderer.js) * Version: 23.2.6 * Build date: Wed May 01 2024 * * Copyright (c) 2012 - 2024 Developer Express Inc. ALL RIGHTS RESERVED * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/ */ import { render as _render } from "inferno"; import { InfernoEffectHost, hydrate } from "@devextreme/runtime/inferno"; import { createElement as _createElement } from "inferno-create-element"; import domAdapter from "./dom_adapter"; import { cleanDataRecursive } from "./element_data"; import injector from "./utils/dependency_injector"; var remove = element => { var { parentNode: parentNode } = element; if (parentNode) { var nextSibling = element.nextSibling; cleanDataRecursive(element); parentNode.$V = element.$V; _render(null, parentNode); parentNode.insertBefore(element, nextSibling); element.innerHTML = ""; delete parentNode.$V } delete element.$V }; export default injector({ createElement: (component, props) => _createElement(component, props), remove: remove, onAfterRender: () => { InfernoEffectHost.callEffects() }, onPreRender: () => { InfernoEffectHost.lock() }, render: (component, props, container, replace) => { if (!replace) { var { parentNode: parentNode } = container; var nextNode = null === container || void 0 === container ? void 0 : container.nextSibling; var rootNode = domAdapter.createElement("div"); rootNode.appendChild(container); var mountNode = domAdapter.createDocumentFragment().appendChild(rootNode); var vNodeAlreadyExists = !!container.$V; vNodeAlreadyExists && remove(container); hydrate(_createElement(component, props), mountNode); container.$V = mountNode.$V; if (parentNode) { parentNode.insertBefore(container, nextNode) } } else { _render(_createElement(component, props), container) } } });