export default function ShareMapUrlModalFactory()

in src/components/modals/share-map-modal.js [87:208]


export default function ShareMapUrlModalFactory() {
  const ShareMapUrlModal = ({
    isProviderLoading,
    isReady,
    onExport,
    cloudProviders,
    currentProvider,
    providerError,
    successInfo,
    onSetCloudProvider,
    onUpdateImageSetting,
    cleanupExportImage
  }) => {
    const {shareUrl, folderLink} = successInfo;
    const provider = currentProvider ? cloudProviders.find(p => p.name === currentProvider) : null;

    return (
      <ThemeProvider theme={themeLT}>
        <ProviderModalContainer
          onSetCloudProvider={onSetCloudProvider}
          cloudProviders={cloudProviders}
          currentProvider={currentProvider}
        >
          <ImageModalContainer
            currentProvider={currentProvider}
            cloudProviders={cloudProviders}
            onUpdateImageSetting={onUpdateImageSetting}
            cleanupExportImage={cleanupExportImage}
          >
            <StyledShareMapModal className="export-cloud-modal">
              <StyledInnerDiv>
                <StyledExportSection>
                  <div className="description">
                    <div className="title">
                      <FormattedMessage id={'modal.shareMap.shareUriTitle'} />
                    </div>
                    <div className="subtitle">
                      <FormattedMessage id={'modal.shareMap.shareUriSubtitle'} />
                    </div>
                  </div>
                  <div className="selection">
                    <div className="title warning">
                      <FormattedMessage id={'modal.shareMap.shareDisclaimer'} />
                    </div>
                  </div>
                </StyledExportSection>
                <StyledExportSection disabled={isProviderLoading}>
                  <div className="description">
                    <div className="title">
                      <FormattedMessage id={'modal.shareMap.cloudTitle'} />
                    </div>
                    <div className="subtitle">
                      <FormattedMessage id={'modal.shareMap.cloudSubtitle'} />
                    </div>
                  </div>
                  <div className="selection">
                    {cloudProviders.map(cloudProvider => (
                      <CloudTile
                        key={cloudProvider.name}
                        onSelect={() => onExport(cloudProvider)}
                        onSetCloudProvider={onSetCloudProvider}
                        cloudProvider={cloudProvider}
                        actionName="Upload"
                        isSelected={cloudProvider.name === currentProvider}
                        isConnected={Boolean(cloudProvider.getAccessToken())}
                        isReady={isReady}
                      />
                    ))}
                  </div>
                </StyledExportSection>
                {isProviderLoading || providerError ? (
                  <StatusPanel
                    isLoading={isProviderLoading}
                    error={providerError}
                    providerIcon={provider && provider.icon}
                  />
                ) : null}
                {shareUrl && (
                  <StyledExportSection>
                    <div className="description">
                      <div className="title">Share Url</div>
                    </div>
                    <div className="selection">
                      <SharingUrl key={0} url={shareUrl} />
                      {provider && folderLink && (
                        <a
                          key={1}
                          href={folderLink}
                          target="_blank"
                          rel="noopener noreferrer"
                          style={{textDecoration: 'underline'}}
                        >
                          <FormattedMessage
                            id={'modal.shareMap.gotoPage'}
                            values={{currentProvider}}
                          />
                        </a>
                      )}
                    </div>
                  </StyledExportSection>
                )}
              </StyledInnerDiv>
            </StyledShareMapModal>
          </ImageModalContainer>
        </ProviderModalContainer>
      </ThemeProvider>
    );
  };

  ShareMapUrlModal.defaultProps = {
    isProviderLoading: false,
    onExport: nop,
    cloudProviders: [],
    currentProvider: null,
    providerError: null,
    successInfo: {},
    onSetCloudProvider: nop,
    onUpdateImageSetting: nop
  };

  return ShareMapUrlModal;
}