import React, { Component, useState } from "react";
import styled from "styled-components";
import { connect, useSelector, useDispatch } from "react-redux";
import { AppState } from "reducers";
import { Card, Dialog, Classes as BlueprintClasses } from "@blueprintjs/core";
import {
getApplicationList,
getIsFetchingApplications,
getIsCreatingApplication,
getCreateApplicationError,
getIsDeletingApplication,
getUserApplicationsOrgsList,
getUserApplicationsOrgs,
getIsDuplicatingApplication,
} from "selectors/applicationSelectors";
import {
ReduxActionTypes,
ApplicationPayload,
} from "constants/ReduxActionConstants";
import PageWrapper from "pages/common/PageWrapper";
import SubHeader from "pages/common/SubHeader";
import PageSectionDivider from "pages/common/PageSectionDivider";
import ApplicationCard from "./ApplicationCard";
import CreateApplicationForm from "./CreateApplicationForm";
import OrgInviteUsersForm from "pages/organization/OrgInviteUsersForm";
import { PERMISSION_TYPE, isPermitted } from "./permissionHelpers";
import FormDialogComponent from "components/editorComponents/form/FormDialogComponent";
import { User } from "constants/userConstants";
import { getCurrentUser } from "selectors/usersSelectors";
import CreateOrganizationForm from "pages/organization/CreateOrganizationForm";
import { CREATE_ORGANIZATION_FORM_NAME } from "constants/forms";
import {
getOnSelectAction,
DropdownOnSelectActions,
} from "pages/common/CustomizedDropdown/dropdownHelpers";
import Button, { Size } from "components/ads/Button";
import Text, { TextType } from "components/ads/Text";
import Icon, { IconName, IconSize } from "components/ads/Icon";
import MenuItem from "components/ads/MenuItem";
import {
duplicateApplication,
updateApplication,
} from "actions/applicationActions";
import { Classes } from "components/ads/common";
import Menu from "components/ads/Menu";
import { Position } from "@blueprintjs/core/lib/esm/common/position";
import HelpModal from "components/designSystems/appsmith/help/HelpModal";
import { UpdateApplicationPayload } from "api/ApplicationApi";
import PerformanceTracker, {
PerformanceTransactionName,
} from "utils/PerformanceTracker";
const OrgDropDown = styled.div`
display: flex;
padding: ${props => props.theme.spaces[4]}px
${props => props.theme.spaces[4]}px;
font-size: ${props => props.theme.fontSizes[1]}px;
justify-content: space-between;
align-items: center;
`;
const ApplicationCardsWrapper = styled.div`
display: flex;
flex-flow: row wrap;
justify-content: flex-start;
align-items: space-evenly;
font-size: ${props => props.theme.fontSizes[4]}px;
`;
const OrgSection = styled.div``;
const PaddingWrapper = styled.div`
width: ${props => props.theme.card.minWidth + props.theme.spaces[5] * 2}px;
margin: ${props => props.theme.spaces[5]}px
${props => props.theme.spaces[5]}px;
`;
const StyledDialog = styled(Dialog)<{ setMaxWidth?: boolean }>`
&& {
background: white;
& .bp3-dialog-header {
padding: ${props => props.theme.spaces[4]}px
${props => props.theme.spaces[4]}px;
}
& .bp3-dialog-footer-actions {
display: block;
}
${props => props.setMaxWidth && `width: 100vh;`}
}
`;
const LeftPaneWrapper = styled.div`
// height: 50vh;
overflow: auto;
width: 256px;
display: flex;
padding-left: 16px;
flex-direction: column;
position: fixed;
top: 77px;
`;
const ApplicationContainer = styled.div`
height: calc(100vh - ${props => props.theme.homePage.search.height - 40}px);
overflow: auto;
padding-right: ${props => props.theme.homePage.leftPane.rightMargin}px;
margin-top: ${props => props.theme.homePage.search.height}px;
margin-left: ${props =>
props.theme.homePage.leftPane.width +
props.theme.homePage.leftPane.rightMargin +
props.theme.homePage.leftPane.leftPadding}px;
width: calc(
100% -
${props =>
props.theme.homePage.leftPane.width +
props.theme.homePage.leftPane.rightMargin +
props.theme.homePage.leftPane.leftPadding}px
);
`;
const ItemWrapper = styled.div`
padding: 9px 15px;
`;
const StyledIcon = styled(Icon)`
margin-right: 11px;
`;
function Item(props: { label: string; textType: TextType; icon?: IconName }) {
return (
{props.icon && }
{props.label}
);
}
function LeftPaneSection(props: { heading: string; children?: any }) {
return (
<>
{/*