"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const React = tslib_1.__importStar(require("react"));
const react_core_1 = require("@patternfly/react-core");
const common_1 = require("../../../../common");
const NetworkConfiguration_1 = tslib_1.__importDefault(require("../NetworkConfiguration"));
const ClusterDeploymentHostsNetworkTable_1 = tslib_1.__importDefault(require("./ClusterDeploymentHostsNetworkTable"));
const helpers_1 = require("../../helpers");
const formik_1 = require("formik");
const helpers_2 = require("../helpers");
const use_translation_wrapper_1 = require("../../../../common/hooks/use-translation-wrapper");
const react_i18next_1 = require("react-i18next");
const ClusterDeploymentNetworkingForm = ({ clusterDeployment, agentClusterInstall, agents, onValuesChanged, infraEnvWithProxy, sameProxies, infraEnvsError, infraEnvsLoading, isPreviewOpen, onEditHost, onEditRole, onSetInstallationDiskId, isNutanix, }) => {
    const { values, touched, setFieldValue, setFieldTouched } = (0, formik_1.useFormikContext)();
    React.useEffect(() => onValuesChanged === null || onValuesChanged === void 0 ? void 0 : onValuesChanged(values), [onValuesChanged, values]);
    const [editProxy, setEditProxy] = React.useState(false);
    const cluster = (0, helpers_1.getAICluster)({
        clusterDeployment,
        agentClusterInstall,
        agents,
    });
    const hostSubnets = React.useMemo(() => (0, common_1.getHostSubnets)(cluster), [cluster]);
    const { t } = (0, use_translation_wrapper_1.useTranslation)();
    React.useEffect(() => {
        var _a, _b, _c, _d, _e, _f;
        if (!!infraEnvWithProxy && !touched.enableProxy) {
            setFieldValue('enableProxy', true, false);
            if (sameProxies) {
                setFieldValue('httpProxy', (_b = (_a = infraEnvWithProxy.spec) === null || _a === void 0 ? void 0 : _a.proxy) === null || _b === void 0 ? void 0 : _b.httpProxy, false);
                setFieldValue('httpsProxy', (_d = (_c = infraEnvWithProxy.spec) === null || _c === void 0 ? void 0 : _c.proxy) === null || _d === void 0 ? void 0 : _d.httpsProxy, false);
                setFieldValue('noProxy', (_f = (_e = infraEnvWithProxy.spec) === null || _e === void 0 ? void 0 : _e.proxy) === null || _f === void 0 ? void 0 : _f.noProxy, false);
            }
        }
    }, [infraEnvWithProxy, sameProxies, setFieldValue, touched.enableProxy, setFieldTouched]);
    let proxyConfig = React.createElement(common_1.ProxyFields, null);
    if (infraEnvWithProxy) {
        if (!sameProxies) {
            proxyConfig = (React.createElement(React.Fragment, null,
                React.createElement(react_core_1.Content, { component: "h2" }, t('ai:Cluster-wide proxy')),
                React.createElement(react_core_1.Content, { component: react_core_1.ContentVariants.p },
                    React.createElement(react_i18next_1.Trans, { t: t, components: { bold: React.createElement("span", { className: "pf-v6-u-font-weight-bold" }) }, i18nKey: "ai:The hosts you selected are using different proxy settings. Configure a proxy that will be applied for these hosts. <bold>Configure at least one of the proxy settings below.</bold>" })),
                React.createElement(common_1.ProxyInputFields, null)));
        }
        else {
            proxyConfig = (React.createElement(React.Fragment, null,
                React.createElement(react_core_1.Checkbox, { id: "edit-proxy", label: t('ai:Edit cluster-wide proxy settings'), onChange: (_event, value) => setEditProxy(value), isChecked: editProxy, body: editProxy && React.createElement(common_1.ProxyInputFields, null) })));
        }
    }
    const gridSpans = (0, helpers_2.getGridSpans)(isPreviewOpen);
    return (React.createElement(react_core_1.Form, null,
        React.createElement(react_core_1.Stack, { hasGutter: true },
            React.createElement(react_core_1.StackItem, null,
                React.createElement(react_core_1.Grid, { hasGutter: true },
                    React.createElement(react_core_1.GridItem, Object.assign({}, gridSpans),
                        React.createElement(NetworkConfiguration_1.default, { cluster: cluster, hostSubnets: hostSubnets, isVipDhcpAllocationDisabled: true, defaultNetworkSettings: common_1.CLUSTER_DEFAULT_NETWORK_SETTINGS, hideManagedNetworking: (0, helpers_1.getIsSNOCluster)(agentClusterInstall) || isNutanix })))),
            React.createElement(react_core_1.StackItem, null, infraEnvsError ? (React.createElement(react_core_1.Alert, { title: infraEnvsError, variant: "danger", isInline: true })) : infraEnvsLoading ? (React.createElement(react_core_1.Split, { hasGutter: true },
                React.createElement(react_core_1.SplitItem, null,
                    React.createElement(react_core_1.Spinner, { size: "md" })),
                React.createElement(react_core_1.SplitItem, null, t('ai:Loading proxy configuration')))) : (proxyConfig)),
            React.createElement(react_core_1.StackItem, null,
                React.createElement(common_1.SecurityFields, { clusterSshKey: cluster.sshPublicKey, allowMultipleKeys: true })),
            React.createElement(react_core_1.StackItem, null,
                React.createElement(react_core_1.Content, { component: "h2" }, t('ai:Host inventory')),
                React.createElement(ClusterDeploymentHostsNetworkTable_1.default, { clusterDeployment: clusterDeployment, agentClusterInstall: agentClusterInstall, agents: agents, onEditHost: onEditHost, onEditRole: onEditRole, onSetInstallationDiskId: onSetInstallationDiskId })))));
};
exports.default = ClusterDeploymentNetworkingForm;
//# sourceMappingURL=ClusterDeploymentNetworkingForm.js.map