UNPKG

@antv/s2-react

Version:
60 lines 1.94 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.invokeComponent = void 0; const tslib_1 = require("tslib"); const react_1 = tslib_1.__importDefault(require("react")); const SpreadSheetContext_1 = require("../context/SpreadSheetContext"); const reactRender_1 = require("./reactRender"); /** * 挂载组件 */ function invokeComponent(options) { const { id, s2, params, onCleanup, component: Component } = options; if (id) { const container = document.querySelector(`#${id}`); if (container) { const result = (0, reactRender_1.reactUnmount)(container); if (result && container.parentNode) { container.parentNode.removeChild(container); return; } } } const container = document.createElement('div'); if (id) { container.id = id; } document.body.appendChild(container); let resolveCb; let rejectCb; function destroy() { (0, reactRender_1.reactUnmount)(container); if (container.parentNode) { container.parentNode.removeChild(container); if (onCleanup) { onCleanup(); } } } function onClose() { destroy(); rejectCb(); } const handler = new Promise((resolve, reject) => { resolveCb = resolve; rejectCb = reject; }).then((val) => { onClose(); return val; }); function render() { setTimeout(() => { (0, reactRender_1.reactRender)(react_1.default.createElement(SpreadSheetContext_1.SpreadSheetContext.Provider, { value: s2 }, react_1.default.createElement(Component, { onCancel: onClose, resolver: resolveCb, params: params })), container); }); } render(); return handler; } exports.invokeComponent = invokeComponent; //# sourceMappingURL=invokeComponent.js.map