UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

73 lines (71 loc) 2.77 kB
/** * DevExtreme (cjs/__internal/core/m_inferno_renderer.js) * Version: 24.2.7 * Build date: Mon Apr 28 2025 * * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/ */ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.infernoRenderer = void 0; var _inferno = require("@devextreme/runtime/inferno"); var _dom_adapter = _interopRequireDefault(require("../../core/dom_adapter")); var _element_data = require("../../core/element_data"); var _dependency_injector = _interopRequireDefault(require("../../core/utils/dependency_injector")); var _inferno2 = require("inferno"); var _infernoCreateElement = require("inferno-create-element"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const remove = element => { const { parentNode: parentNode } = element; if (parentNode) { const { nextSibling: nextSibling } = element; (0, _element_data.cleanDataRecursive)(element); parentNode.$V = element.$V; (0, _inferno2.render)(null, parentNode); parentNode.insertBefore(element, nextSibling); element.innerHTML = ""; delete parentNode.$V } delete element.$V }; const infernoRenderer = exports.infernoRenderer = (0, _dependency_injector.default)({ createElement: (component, props) => (0, _infernoCreateElement.createElement)(component, props), remove: remove, onAfterRender: () => { _inferno.InfernoEffectHost.callEffects() }, onPreRender: () => { _inferno.InfernoEffectHost.lock() }, render: (component, props, container, replace) => { if (!replace) { const { parentNode: parentNode } = container; const nextNode = null === container || void 0 === container ? void 0 : container.nextSibling; const rootNode = _dom_adapter.default.createElement("div"); rootNode.appendChild(container); const mountNode = _dom_adapter.default.createDocumentFragment().appendChild(rootNode); const vNodeAlreadyExists = !!container.$V; vNodeAlreadyExists && remove(container); (0, _inferno.hydrate)((0, _infernoCreateElement.createElement)(component, props), mountNode); container.$V = mountNode.$V; if (parentNode) { parentNode.insertBefore(container, nextNode) } } else { (0, _inferno2.render)((0, _infernoCreateElement.createElement)(component, props), container) } } });