1 |
|
2 | "use strict";
|
3 | Object.defineProperty(exports, "__esModule", { value: true });
|
4 | var react_1 = require("react");
|
5 | var beansContext_1 = require("../beansContext");
|
6 | var useJsCellRenderer = function (showDetails, showTools, toolsValueSpan, jsCellRendererRef, eGui) {
|
7 | var _a = react_1.useContext(beansContext_1.BeansContext), context = _a.context, userComponentFactory = _a.userComponentFactory;
|
8 | var destroyCellRenderer = react_1.useCallback(function () {
|
9 | var comp = jsCellRendererRef.current;
|
10 | if (!comp) {
|
11 | return;
|
12 | }
|
13 | var compGui = comp.getGui();
|
14 | if (compGui && compGui.parentElement) {
|
15 | compGui.parentElement.removeChild(compGui);
|
16 | }
|
17 | context.destroyBean(comp);
|
18 | jsCellRendererRef.current = undefined;
|
19 | }, []);
|
20 |
|
21 | react_1.useEffect(function () {
|
22 | var showValue = showDetails != null;
|
23 | var jsCompDetails = showDetails && showDetails.compDetails && !showDetails.compDetails.componentFromFramework;
|
24 | var waitingForToolsSetup = showTools && toolsValueSpan == null;
|
25 | var showComp = showValue && jsCompDetails && !waitingForToolsSetup;
|
26 |
|
27 | if (!showComp) {
|
28 | destroyCellRenderer();
|
29 | return;
|
30 | }
|
31 | var compDetails = showDetails.compDetails;
|
32 | if (jsCellRendererRef.current) {
|
33 |
|
34 | var comp_1 = jsCellRendererRef.current;
|
35 | var attemptRefresh = comp_1.refresh != null && showDetails.force == false;
|
36 | var refreshResult = attemptRefresh ? comp_1.refresh(compDetails.params) : false;
|
37 | var refreshWorked = refreshResult === true || refreshResult === undefined;
|
38 |
|
39 | if (refreshWorked) {
|
40 | return;
|
41 | }
|
42 |
|
43 | destroyCellRenderer();
|
44 | }
|
45 | var promise = compDetails.newAgStackInstance();
|
46 | ;
|
47 | if (!promise) {
|
48 | return;
|
49 | }
|
50 | var comp = promise.resolveNow(null, function (x) { return x; });
|
51 | if (!comp) {
|
52 | return;
|
53 | }
|
54 | var compGui = comp.getGui();
|
55 | var parent = showTools ? toolsValueSpan : eGui.current;
|
56 | parent.appendChild(compGui);
|
57 | jsCellRendererRef.current = comp;
|
58 | }, [showDetails, showTools, toolsValueSpan]);
|
59 |
|
60 |
|
61 |
|
62 | react_1.useEffect(function () {
|
63 | return destroyCellRenderer;
|
64 | }, []);
|
65 | };
|
66 | exports.default = useJsCellRenderer;
|