UNPKG

2.91 kBJavaScriptView Raw
1// ag-grid-react v26.2.0
2"use strict";
3Object.defineProperty(exports, "__esModule", { value: true });
4var react_1 = require("react");
5var beansContext_1 = require("../beansContext");
6var 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 // create or refresh JS cell renderer
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 // if not showing comp, destroy any existing one and return
27 if (!showComp) {
28 destroyCellRenderer();
29 return;
30 }
31 var compDetails = showDetails.compDetails;
32 if (jsCellRendererRef.current) {
33 // attempt refresh if refresh method exists
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 // if refresh worked, nothing else to do
39 if (refreshWorked) {
40 return;
41 }
42 // if refresh didn't work, we destroy it and continue, so new cell renderer created below
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; }); // js comps are never async
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 // this effect makes sure destroyCellRenderer gets called when the
60 // component is destroyed. as the other effect only updates when there
61 // is a change in state
62 react_1.useEffect(function () {
63 return destroyCellRenderer;
64 }, []);
65};
66exports.default = useJsCellRenderer;