Merge branch 'develop' into feature/fix-hide/show-header
# Conflicts: # products/ASC.Files/Client/src/App.js # products/ASC.Files/Client/src/components/pages/Home/index.js # products/ASC.Files/Client/src/store/files/actions.js # web/ASC.Web.Common/package.json # web/ASC.Web.Common/src/components/PageLayout/index.js # web/ASC.Web.Common/src/components/PageLayout/sub-components/section-body.js # web/ASC.Web.Common/src/components/PageLayout/sub-components/section-header.js # web/ASC.Web.Common/src/store/auth/actions.js # web/ASC.Web.Common/src/store/auth/reducer.js # web/ASC.Web.Components/package.json
This commit is contained in:
commit
c9a8027ddf
@ -98,13 +98,24 @@ namespace ASC.Common.Threading
|
||||
|
||||
public T GetProperty<T>(string name)
|
||||
{
|
||||
if (!DistributedTaskCache.Props.Any(r => r.Key == name)) return default;
|
||||
|
||||
var val = DistributedTaskCache.Props.SingleOrDefault(r => r.Key == name);
|
||||
var val = DistributedTaskCache.Props.FirstOrDefault(r => r.Key == name);
|
||||
|
||||
if (val == null) return default;
|
||||
|
||||
return JsonSerializer.Deserialize<T>(val.Value);
|
||||
var resType = typeof(T);
|
||||
object result = val.Value;
|
||||
|
||||
if(resType == typeof(Guid))
|
||||
{
|
||||
result = Guid.Parse(val.Value.Trim('"'));
|
||||
}
|
||||
else if(resType.IsEnum)
|
||||
{
|
||||
Enum.TryParse(resType, val.Value, out var e);
|
||||
result = e;
|
||||
}
|
||||
|
||||
return (T)Convert.ChangeType(result, resType);
|
||||
}
|
||||
|
||||
public void SetProperty(string name, object value)
|
||||
|
@ -164,6 +164,7 @@ namespace ASC.Core.Data
|
||||
var counter = CoreDbContext.QuotaRows
|
||||
.Where(r => r.Path == row.Path && r.Tenant == row.Tenant)
|
||||
.Select(r => r.Counter)
|
||||
.Take(1)
|
||||
.FirstOrDefault();
|
||||
|
||||
var dbQuotaRow = new DbQuotaRow
|
||||
|
@ -1,63 +0,0 @@
|
||||
/*
|
||||
*
|
||||
* (c) Copyright Ascensio System Limited 2010-2018
|
||||
*
|
||||
* This program is freeware. You can redistribute it and/or modify it under the terms of the GNU
|
||||
* General Public License (GPL) version 3 as published by the Free Software Foundation (https://www.gnu.org/copyleft/gpl.html).
|
||||
* In accordance with Section 7(a) of the GNU GPL its Section 15 shall be amended to the effect that
|
||||
* Ascensio System SIA expressly excludes the warranty of non-infringement of any third-party rights.
|
||||
*
|
||||
* THIS PROGRAM IS DISTRIBUTED WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. For more details, see GNU GPL at https://www.gnu.org/copyleft/gpl.html
|
||||
*
|
||||
* You can contact Ascensio System SIA by email at sales@onlyoffice.com
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions of ONLYOFFICE must display
|
||||
* Appropriate Legal Notices, as required under Section 5 of the GNU GPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7 § 3(b) of the GNU GPL you must retain the original ONLYOFFICE logo which contains
|
||||
* relevant author attributions when distributing the software. If the display of the logo in its graphic
|
||||
* form is not reasonably feasible for technical reasons, you must include the words "Powered by ONLYOFFICE"
|
||||
* in every copy of the program you distribute.
|
||||
* Pursuant to Section 7 § 3(e) we decline to grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
using System;
|
||||
|
||||
using ASC.Common.Caching;
|
||||
|
||||
namespace ASC.Data.Storage
|
||||
{
|
||||
static class DataStoreCache
|
||||
{
|
||||
private static readonly ICache Cache = AscCache.Memory;
|
||||
|
||||
|
||||
public static void Put(IDataStore store, string tenantId, string module)
|
||||
{
|
||||
Cache.Insert(DataStoreCacheItemExtenstion.MakeCacheKey(tenantId, module), store, DateTime.MaxValue);
|
||||
}
|
||||
|
||||
public static IDataStore Get(string tenantId, string module)
|
||||
{
|
||||
return Cache.Get<IDataStore>(DataStoreCacheItemExtenstion.MakeCacheKey(tenantId, module));
|
||||
}
|
||||
|
||||
public static void Remove(string tenantId, string module)
|
||||
{
|
||||
Cache.Remove(DataStoreCacheItemExtenstion.MakeCacheKey(tenantId, module));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public static class DataStoreCacheItemExtenstion
|
||||
{
|
||||
internal static string MakeCacheKey(string tenantId, string module)
|
||||
{
|
||||
return string.Format("{0}:\\{1}", tenantId, module);
|
||||
}
|
||||
}
|
||||
}
|
@ -29,6 +29,7 @@ using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
|
||||
using ASC.Common;
|
||||
using ASC.Common.Logging;
|
||||
using ASC.Core;
|
||||
using ASC.Data.Storage.Configuration;
|
||||
@ -40,6 +41,7 @@ using Microsoft.Extensions.Options;
|
||||
|
||||
namespace ASC.Data.Storage.DiscStorage
|
||||
{
|
||||
[Scope]
|
||||
public class DiscDataStore : BaseStorage
|
||||
{
|
||||
private readonly Dictionary<string, MappedPath> _mappedPaths = new Dictionary<string, MappedPath>();
|
||||
|
@ -37,6 +37,7 @@ using System.Text;
|
||||
using System.Threading;
|
||||
using System.Web;
|
||||
|
||||
using ASC.Common;
|
||||
using ASC.Common.Logging;
|
||||
using ASC.Core;
|
||||
using ASC.Data.Storage.Configuration;
|
||||
@ -55,6 +56,7 @@ using MimeMapping = ASC.Common.Web.MimeMapping;
|
||||
|
||||
namespace ASC.Data.Storage.GoogleCloud
|
||||
{
|
||||
[Scope]
|
||||
public class GoogleCloudStorage : BaseStorage
|
||||
{
|
||||
private string _subDir = string.Empty;
|
||||
@ -241,7 +243,7 @@ namespace ASC.Data.Storage.GoogleCloud
|
||||
{
|
||||
var contentDisposition = string.Format("attachment; filename={0};",
|
||||
HttpUtility.UrlPathEncode(attachmentFileName));
|
||||
if (attachmentFileName.Any(c => (int)c >= 0 && (int)c <= 127))
|
||||
if (attachmentFileName.Any(c => c >= 0 && c <= 127))
|
||||
{
|
||||
contentDisposition = string.Format("attachment; filename*=utf-8''{0};",
|
||||
HttpUtility.UrlPathEncode(attachmentFileName));
|
||||
@ -786,7 +788,7 @@ namespace ASC.Data.Storage.GoogleCloud
|
||||
continue;
|
||||
}
|
||||
|
||||
if ((int)status != 308)
|
||||
if (status != 308)
|
||||
throw (ex);
|
||||
|
||||
break;
|
||||
|
@ -30,6 +30,7 @@ using System.IO;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
|
||||
using ASC.Common;
|
||||
using ASC.Common.Logging;
|
||||
using ASC.Core;
|
||||
using ASC.Data.Storage.Configuration;
|
||||
@ -45,6 +46,7 @@ using MimeMapping = ASC.Common.Web.MimeMapping;
|
||||
|
||||
namespace ASC.Data.Storage.RackspaceCloud
|
||||
{
|
||||
[Scope]
|
||||
public class RackspaceCloudStorage : BaseStorage
|
||||
{
|
||||
private string _region;
|
||||
@ -248,7 +250,7 @@ namespace ASC.Data.Storage.RackspaceCloud
|
||||
{
|
||||
var contentDisposition = string.Format("attachment; filename={0};",
|
||||
HttpUtility.UrlPathEncode(attachmentFileName));
|
||||
if (attachmentFileName.Any(c => (int)c >= 0 && (int)c <= 127))
|
||||
if (attachmentFileName.Any(c => c >= 0 && c <= 127))
|
||||
{
|
||||
contentDisposition = string.Format("attachment; filename*=utf-8''{0};",
|
||||
HttpUtility.UrlPathEncode(attachmentFileName));
|
||||
|
@ -41,6 +41,7 @@ using Amazon.S3.Model;
|
||||
using Amazon.S3.Transfer;
|
||||
using Amazon.Util;
|
||||
|
||||
using ASC.Common;
|
||||
using ASC.Common.Logging;
|
||||
using ASC.Core;
|
||||
using ASC.Data.Storage.Configuration;
|
||||
@ -53,6 +54,7 @@ using MimeMapping = ASC.Common.Web.MimeMapping;
|
||||
|
||||
namespace ASC.Data.Storage.S3
|
||||
{
|
||||
[Scope]
|
||||
public class S3Storage : BaseStorage
|
||||
{
|
||||
private readonly List<string> _domains = new List<string>();
|
||||
@ -190,7 +192,7 @@ namespace ASC.Data.Storage.S3
|
||||
{
|
||||
var contentDisposition = string.Format("attachment; filename={0};",
|
||||
HttpUtility.UrlPathEncode(attachmentFileName));
|
||||
if (attachmentFileName.Any(c => (int)c >= 0 && (int)c <= 127))
|
||||
if (attachmentFileName.Any(c => c >= 0 && c <= 127))
|
||||
{
|
||||
contentDisposition = string.Format("attachment; filename*=utf-8''{0};",
|
||||
HttpUtility.UrlPathEncode(attachmentFileName));
|
||||
|
@ -29,50 +29,20 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
using ASC.Common;
|
||||
using ASC.Common.Caching;
|
||||
using ASC.Common.Logging;
|
||||
using ASC.Core;
|
||||
using ASC.Core.Common.Configuration;
|
||||
using ASC.Core.Common.Settings;
|
||||
using ASC.Data.Storage.Configuration;
|
||||
using ASC.Data.Storage.DiscStorage;
|
||||
using ASC.Data.Storage.Encryption;
|
||||
using ASC.Security.Cryptography;
|
||||
using ASC.Data.Storage.GoogleCloud;
|
||||
using ASC.Data.Storage.RackspaceCloud;
|
||||
using ASC.Data.Storage.S3;
|
||||
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Routing;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Options;
|
||||
|
||||
namespace ASC.Data.Storage
|
||||
{
|
||||
[Singletone]
|
||||
public class StorageFactoryListener
|
||||
{
|
||||
private volatile bool Subscribed;
|
||||
private readonly object locker;
|
||||
private ICacheNotify<DataStoreCacheItem> Cache { get; }
|
||||
|
||||
public StorageFactoryListener(ICacheNotify<DataStoreCacheItem> cache)
|
||||
{
|
||||
Cache = cache;
|
||||
locker = new object();
|
||||
}
|
||||
|
||||
public void Subscribe()
|
||||
{
|
||||
if (Subscribed) return;
|
||||
|
||||
lock (locker)
|
||||
{
|
||||
if (Subscribed) return;
|
||||
|
||||
Subscribed = true;
|
||||
Cache.Subscribe((r) => DataStoreCache.Remove(r.TenantId, r.Module), CacheNotifyAction.Remove);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Singletone(Additional = typeof(StorageConfigExtension))]
|
||||
public class StorageFactoryConfig
|
||||
{
|
||||
@ -174,7 +144,7 @@ namespace ASC.Data.Storage
|
||||
}
|
||||
}
|
||||
|
||||
[Scope]
|
||||
[Scope(Additional = typeof(StorageFactoryExtension))]
|
||||
public class StorageFactory
|
||||
{
|
||||
private const string DefaultTenantName = "default";
|
||||
@ -184,55 +154,22 @@ namespace ASC.Data.Storage
|
||||
private StorageSettingsHelper StorageSettingsHelper { get; }
|
||||
private TenantManager TenantManager { get; }
|
||||
private CoreBaseSettings CoreBaseSettings { get; }
|
||||
private PathUtils PathUtils { get; }
|
||||
private EmailValidationKeyProvider EmailValidationKeyProvider { get; }
|
||||
private IOptionsMonitor<ILog> Options { get; }
|
||||
private IHttpContextAccessor HttpContextAccessor { get; }
|
||||
private EncryptionSettingsHelper EncryptionSettingsHelper { get; }
|
||||
private EncryptionFactory EncryptionFactory { get; }
|
||||
private IServiceProvider ServiceProvider { get; }
|
||||
|
||||
public StorageFactory(
|
||||
StorageFactoryListener storageFactoryListener,
|
||||
IServiceProvider serviceProvider,
|
||||
StorageFactoryConfig storageFactoryConfig,
|
||||
SettingsManager settingsManager,
|
||||
StorageSettingsHelper storageSettingsHelper,
|
||||
TenantManager tenantManager,
|
||||
CoreBaseSettings coreBaseSettings,
|
||||
PathUtils pathUtils,
|
||||
EmailValidationKeyProvider emailValidationKeyProvider,
|
||||
IOptionsMonitor<ILog> options,
|
||||
EncryptionSettingsHelper encryptionSettingsHelper,
|
||||
EncryptionFactory encryptionFactory) :
|
||||
this(storageFactoryListener, storageFactoryConfig, settingsManager, storageSettingsHelper, tenantManager, coreBaseSettings, pathUtils, emailValidationKeyProvider, options, null, encryptionSettingsHelper, encryptionFactory)
|
||||
CoreBaseSettings coreBaseSettings)
|
||||
{
|
||||
}
|
||||
|
||||
public StorageFactory(
|
||||
StorageFactoryListener storageFactoryListener,
|
||||
StorageFactoryConfig storageFactoryConfig,
|
||||
SettingsManager settingsManager,
|
||||
StorageSettingsHelper storageSettingsHelper,
|
||||
TenantManager tenantManager,
|
||||
CoreBaseSettings coreBaseSettings,
|
||||
PathUtils pathUtils,
|
||||
EmailValidationKeyProvider emailValidationKeyProvider,
|
||||
IOptionsMonitor<ILog> options,
|
||||
IHttpContextAccessor httpContextAccessor,
|
||||
EncryptionSettingsHelper encryptionSettingsHelper,
|
||||
EncryptionFactory encryptionFactory)
|
||||
{
|
||||
storageFactoryListener.Subscribe();
|
||||
ServiceProvider = serviceProvider;
|
||||
StorageFactoryConfig = storageFactoryConfig;
|
||||
SettingsManager = settingsManager;
|
||||
StorageSettingsHelper = storageSettingsHelper;
|
||||
TenantManager = tenantManager;
|
||||
CoreBaseSettings = coreBaseSettings;
|
||||
PathUtils = pathUtils;
|
||||
EmailValidationKeyProvider = emailValidationKeyProvider;
|
||||
Options = options;
|
||||
HttpContextAccessor = httpContextAccessor;
|
||||
EncryptionSettingsHelper = encryptionSettingsHelper;
|
||||
EncryptionFactory = encryptionFactory;
|
||||
}
|
||||
|
||||
public IDataStore GetStorage(string tenant, string module)
|
||||
@ -261,10 +198,6 @@ namespace ASC.Data.Storage
|
||||
//Make tennant path
|
||||
tenant = TenantPath.CreatePath(tenant);
|
||||
|
||||
//remove cache
|
||||
//var store = DataStoreCache.Get(tenant, module);//TODO
|
||||
//if (store == null)
|
||||
//{
|
||||
var section = StorageFactoryConfig.Section;
|
||||
if (section == null)
|
||||
{
|
||||
@ -273,7 +206,6 @@ namespace ASC.Data.Storage
|
||||
|
||||
var settings = SettingsManager.LoadForTenant<StorageSettings>(tenantId);
|
||||
|
||||
//}
|
||||
return GetDataStore(tenant, module, StorageSettingsHelper.DataStoreConsumer(settings), controller);
|
||||
}
|
||||
|
||||
@ -294,16 +226,6 @@ namespace ASC.Data.Storage
|
||||
return GetDataStore(tenant, module, consumer, new TenantQuotaController(tenantId, TenantManager));
|
||||
}
|
||||
|
||||
private IDataStore GetStoreAndCache(string tenant, string module, DataStoreConsumer consumer, IQuotaController controller)
|
||||
{
|
||||
var store = GetDataStore(tenant, module, consumer, controller);
|
||||
if (store != null)
|
||||
{
|
||||
DataStoreCache.Put(store, tenant, module);
|
||||
}
|
||||
return store;
|
||||
}
|
||||
|
||||
private IDataStore GetDataStore(string tenant, string module, DataStoreConsumer consumer, IQuotaController controller)
|
||||
{
|
||||
var storage = StorageFactoryConfig.Section;
|
||||
@ -330,10 +252,22 @@ namespace ASC.Data.Storage
|
||||
props = handler.Property.ToDictionary(r => r.Name, r => r.Value);
|
||||
}
|
||||
|
||||
return ((IDataStore)Activator.CreateInstance(instanceType, TenantManager, PathUtils, EmailValidationKeyProvider, HttpContextAccessor, Options, EncryptionSettingsHelper, EncryptionFactory))
|
||||
;
|
||||
return ((IDataStore)ActivatorUtilities.CreateInstance(ServiceProvider, instanceType))
|
||||
.Configure(tenant, handler, moduleElement, props)
|
||||
.SetQuotaController(moduleElement.Count ? controller : null
|
||||
/*don't count quota if specified on module*/);
|
||||
}
|
||||
}
|
||||
|
||||
public class StorageFactoryExtension
|
||||
{
|
||||
public static void Register(DIHelper services)
|
||||
{
|
||||
services.TryAdd<DiscDataStore>();
|
||||
services.TryAdd<GoogleCloudStorage>();
|
||||
services.TryAdd<RackspaceCloudStorage>();
|
||||
services.TryAdd<S3Storage>();
|
||||
}
|
||||
}
|
||||
}
|
@ -62,7 +62,7 @@
|
||||
"header": ""
|
||||
},
|
||||
"url": {
|
||||
"public": "http://192.168.0.142/",
|
||||
"public": "http://localhost:8085/",
|
||||
"internal": "",
|
||||
"portal": ""
|
||||
}
|
||||
|
@ -9,6 +9,7 @@
|
||||
"asc-web-components": "file:../../../packages/asc-web-components",
|
||||
"connected-react-router": "6.6.1",
|
||||
"copy-to-clipboard": "^3.2.0",
|
||||
"fast-deep-equal": "^3.1.3",
|
||||
"history": "4.10.1",
|
||||
"i18next": "19.0.3",
|
||||
"i18next-browser-languagedetector": "4.0.1",
|
||||
|
@ -239,16 +239,5 @@
|
||||
To begin the development, run `npm start` or `yarn start`.
|
||||
To create a production bundle, use `npm run build` or `yarn build`.
|
||||
-->
|
||||
<script>
|
||||
if (localStorage.getItem("asc_auth_key")){
|
||||
let el = document.getElementById("burger-loader-svg");
|
||||
let el1 = document.getElementById("logo-loader-svg");
|
||||
let el2 = document.getElementById("avatar-loader-svg");
|
||||
|
||||
el.style.display = "block";
|
||||
el1.style.display = "block";
|
||||
el2.style.display = "block";
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -1,6 +1,6 @@
|
||||
import React, { Suspense } from "react";
|
||||
import { connect } from "react-redux";
|
||||
import { Router, Switch, Redirect } from "react-router-dom";
|
||||
import { Router, Switch, Redirect, Route } from "react-router-dom";
|
||||
import Home from "./components/pages/Home";
|
||||
import DocEditor from "./components/pages/DocEditor";
|
||||
import Settings from "./components/pages/Settings";
|
||||
@ -10,7 +10,6 @@ import config from "../package.json";
|
||||
|
||||
import {
|
||||
store as commonStore,
|
||||
constants,
|
||||
history,
|
||||
PrivateRoute,
|
||||
PublicRoute,
|
||||
@ -32,8 +31,8 @@ const {
|
||||
setCurrentProductId,
|
||||
setCurrentProductHomePage,
|
||||
getPortalCultures,
|
||||
getIsAuthenticated,
|
||||
} = commonStore.auth.actions;
|
||||
const { AUTH_KEY } = constants;
|
||||
|
||||
class App extends React.Component {
|
||||
constructor(props) {
|
||||
@ -43,8 +42,6 @@ class App extends React.Component {
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
utils.removeTempContent();
|
||||
|
||||
const {
|
||||
setModuleInfo,
|
||||
getUser,
|
||||
@ -53,80 +50,83 @@ class App extends React.Component {
|
||||
getPortalCultures,
|
||||
fetchTreeFolders,
|
||||
setIsLoaded,
|
||||
getIsAuthenticated,
|
||||
} = this.props;
|
||||
|
||||
setModuleInfo();
|
||||
getIsAuthenticated().then((isAuthenticated) => {
|
||||
if (!isAuthenticated) {
|
||||
utils.updateTempContent();
|
||||
return setIsLoaded();
|
||||
} else {
|
||||
utils.updateTempContent(isAuthenticated);
|
||||
}
|
||||
|
||||
const token = localStorage.getItem(AUTH_KEY);
|
||||
const requests = this.isEditor
|
||||
? [getUser()]
|
||||
: [
|
||||
getUser(),
|
||||
getPortalSettings(),
|
||||
getModules(),
|
||||
getPortalCultures(),
|
||||
fetchTreeFolders(),
|
||||
];
|
||||
|
||||
if (!token) {
|
||||
return setIsLoaded();
|
||||
}
|
||||
|
||||
const requests = this.isEditor
|
||||
? [getUser()]
|
||||
: [
|
||||
getUser(),
|
||||
getPortalSettings(),
|
||||
getModules(),
|
||||
getPortalCultures(),
|
||||
fetchTreeFolders(),
|
||||
];
|
||||
|
||||
Promise.all(requests)
|
||||
.catch((e) => {
|
||||
toastr.error(e);
|
||||
})
|
||||
.finally(() => {
|
||||
setIsLoaded();
|
||||
});
|
||||
Promise.all(requests)
|
||||
.catch((e) => {
|
||||
toastr.error(e);
|
||||
})
|
||||
.finally(() => {
|
||||
utils.updateTempContent();
|
||||
setIsLoaded();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
render() {
|
||||
const { homepage } = this.props;
|
||||
|
||||
return navigator.onLine ? (
|
||||
<Layout>
|
||||
<Router history={history}>
|
||||
{!this.isEditor && <NavMenu />}
|
||||
<Main >
|
||||
<Suspense fallback={null}>
|
||||
<Switch>
|
||||
<Redirect exact from="/" to={`${homepage}`} />
|
||||
<PrivateRoute
|
||||
exact
|
||||
path={`${homepage}/settings/:setting`}
|
||||
component={Settings}
|
||||
/>
|
||||
<PrivateRoute
|
||||
exact
|
||||
path={`${homepage}/doceditor`}
|
||||
component={DocEditor}
|
||||
/>
|
||||
<PrivateRoute
|
||||
exact
|
||||
path={`${homepage}/:fileId/history`}
|
||||
component={VersionHistory}
|
||||
/>
|
||||
<PrivateRoute exact path={homepage} component={Home} />
|
||||
<PrivateRoute path={`${homepage}/filter`} component={Home} />
|
||||
|
||||
<PublicRoute
|
||||
exact
|
||||
path={[
|
||||
"/login",
|
||||
"/login/error=:error",
|
||||
"/login/confirmed-email=:confirmedEmail",
|
||||
]}
|
||||
component={Login}
|
||||
/>
|
||||
<PrivateRoute exact path={`/error=:error`} component={Error520} />
|
||||
<PrivateRoute component={Error404} />
|
||||
</Switch>
|
||||
</Suspense>
|
||||
</Main>
|
||||
</Router>
|
||||
</Layout>
|
||||
<Layout>
|
||||
<Router history={history}>
|
||||
{!this.isEditor && <NavMenu />}
|
||||
<Main>
|
||||
<Suspense fallback={null}>
|
||||
<Switch>
|
||||
<Redirect exact from="/" to={`${homepage}`} />
|
||||
<PrivateRoute
|
||||
exact
|
||||
path={`${homepage}/settings/:setting`}
|
||||
component={Settings}
|
||||
/>
|
||||
<Route
|
||||
exact
|
||||
path={`${homepage}/doceditor`}
|
||||
component={DocEditor}
|
||||
/>
|
||||
<PrivateRoute
|
||||
exact
|
||||
path={`${homepage}/:fileId/history`}
|
||||
component={VersionHistory}
|
||||
/>
|
||||
<PrivateRoute exact path={homepage} component={Home} />
|
||||
<PrivateRoute path={`${homepage}/filter`} component={Home} />
|
||||
<PublicRoute
|
||||
exact
|
||||
path={[
|
||||
"/login",
|
||||
"/login/error=:error",
|
||||
"/login/confirmed-email=:confirmedEmail",
|
||||
]}
|
||||
component={Login}
|
||||
/>
|
||||
<PrivateRoute exact path={`/error=:error`} component={Error520} />
|
||||
<PrivateRoute component={Error404} />
|
||||
</Switch>
|
||||
</Suspense>
|
||||
</Main>
|
||||
</Router>
|
||||
</Layout>
|
||||
) : (
|
||||
<Offline />
|
||||
);
|
||||
@ -143,6 +143,7 @@ const mapStateToProps = (state) => {
|
||||
|
||||
const mapDispatchToProps = (dispatch) => {
|
||||
return {
|
||||
getIsAuthenticated: () => getIsAuthenticated(dispatch),
|
||||
setModuleInfo: () => {
|
||||
dispatch(setCurrentProductHomePage(config.homepage));
|
||||
dispatch(setCurrentProductId("e67be73d-f9ae-4ce1-8fec-1880cb518cb4"));
|
||||
|
@ -1,7 +1,7 @@
|
||||
import React from "react";
|
||||
import { TreeMenu, TreeNode, Icons } from "asc-web-components";
|
||||
import styled from "styled-components";
|
||||
import isEqual from "lodash/isEqual";
|
||||
import equal from "fast-deep-equal/react";
|
||||
import { api, constants, toastr, store as initStore } from "asc-web-common";
|
||||
import { connect } from "react-redux";
|
||||
import {
|
||||
@ -70,7 +70,7 @@ class TreeFolders extends React.Component {
|
||||
this.setState({ expandedKeys });
|
||||
}
|
||||
|
||||
if (!isEqual(prevProps.data, data)) {
|
||||
if (!equal(prevProps.data, data)) {
|
||||
//!utils.array.isArrayEqual(prevProps.data, data)) {
|
||||
this.setState({ treeData: data });
|
||||
}
|
||||
|
@ -107,7 +107,7 @@ class ArticleBodyContent extends React.Component {
|
||||
const { showNewFilesPanel, expandedKeys, newFolderId } = this.state;
|
||||
|
||||
//console.log("Article Body render", this.props, this.state.expandedKeys);
|
||||
console.log("Article Body render");
|
||||
//console.log("Article Body render");
|
||||
return (
|
||||
<>
|
||||
{showNewFilesPanel && (
|
||||
|
@ -8,7 +8,7 @@ import { utils } from "asc-web-common";
|
||||
import {
|
||||
setTreeFolders,
|
||||
setDialogVisible,
|
||||
onConvert,
|
||||
convertUploadedFiles,
|
||||
} from "../../../store/files/actions";
|
||||
import { createI18N } from "../../../helpers/i18n";
|
||||
const i18n = createI18N({
|
||||
@ -50,7 +50,7 @@ class ConvertDialogComponent extends React.Component {
|
||||
return false;
|
||||
}
|
||||
|
||||
onConvert = () => this.props.onConvert(this.props.t);
|
||||
onConvert = () => this.props.convertUploadedFiles(this.props.t);
|
||||
onClose = () => this.props.setDialogVisible(this.props.t);
|
||||
|
||||
render() {
|
||||
@ -66,7 +66,7 @@ class ConvertDialogComponent extends React.Component {
|
||||
<img
|
||||
className="convert_dialog_image"
|
||||
src="images/convert_alert.png"
|
||||
alt="convert alert image"
|
||||
alt="convert alert"
|
||||
/>
|
||||
<div className="convert_dialog-content">
|
||||
<Text>{t("ConversionMessage")}</Text>
|
||||
@ -118,12 +118,8 @@ const ConvertDialog = (props) => (
|
||||
<ModalDialogContainerTranslated i18n={i18n} {...props} />
|
||||
);
|
||||
|
||||
const mapStateToProps = (state) => {
|
||||
return {};
|
||||
};
|
||||
|
||||
export default connect(mapStateToProps, {
|
||||
export default connect(null, {
|
||||
setTreeFolders,
|
||||
setDialogVisible,
|
||||
onConvert,
|
||||
convertUploadedFiles,
|
||||
})(withRouter(ConvertDialog));
|
||||
|
@ -5,5 +5,6 @@
|
||||
"HideMessage": "Do not show this message again",
|
||||
"ContinueButton": "Continue",
|
||||
"CloseButton": "Close",
|
||||
"UploadingLabel": "Uploading files: {{file}} of {{totalFiles}}"
|
||||
"UploadingLabel": "Uploading files: {{file}} of {{totalFiles}}",
|
||||
"ConvertingLabel": "Converting files: {{file}} of {{totalFiles}}"
|
||||
}
|
||||
|
@ -5,5 +5,6 @@
|
||||
"HideMessage": "Больше не показывать это сообщение",
|
||||
"ContinueButton": "Продолжить",
|
||||
"CloseButton": "Закрыть",
|
||||
"UploadingLabel": "Загружено файлов: {{file}} из {{totalFiles}}"
|
||||
"UploadingLabel": "Загружено файлов: {{file}} из {{totalFiles}}",
|
||||
"ConvertingLabel": "Сконвертировано файлов: {{file}} из {{totalFiles}}"
|
||||
}
|
||||
|
@ -14,10 +14,11 @@ import { api, utils, toastr } from "asc-web-common";
|
||||
import {
|
||||
fetchFiles,
|
||||
setTreeFolders,
|
||||
setProgressBarData,
|
||||
clearProgressData,
|
||||
setSecondaryProgressBarData,
|
||||
clearSecondaryProgressData,
|
||||
setUpdateTree,
|
||||
} from "../../../store/files/actions";
|
||||
import { TIMEOUT } from "../../../helpers/constants";
|
||||
import {
|
||||
loopTreeFolders,
|
||||
getSelectedFolderId,
|
||||
@ -66,8 +67,8 @@ class DeleteDialogComponent extends React.Component {
|
||||
treeFolders,
|
||||
setTreeFolders,
|
||||
isRecycleBinFolder,
|
||||
setProgressBarData,
|
||||
clearProgressData,
|
||||
setSecondaryProgressBarData,
|
||||
clearSecondaryProgressData,
|
||||
t,
|
||||
fetchFiles,
|
||||
setUpdateTree,
|
||||
@ -78,19 +79,23 @@ class DeleteDialogComponent extends React.Component {
|
||||
.then((res) => {
|
||||
const currentProcess = res.find((x) => x.id === id);
|
||||
if (currentProcess && currentProcess.progress !== 100) {
|
||||
setProgressBarData({
|
||||
setSecondaryProgressBarData({
|
||||
icon: "trash",
|
||||
percent: currentProcess.progress,
|
||||
label: t("DeleteOperation"),
|
||||
visible: true,
|
||||
alert: false,
|
||||
});
|
||||
setTimeout(() => this.loopDeleteOperation(id), 1000);
|
||||
} else {
|
||||
setProgressBarData({
|
||||
setSecondaryProgressBarData({
|
||||
icon: "trash",
|
||||
percent: 100,
|
||||
label: t("DeleteOperation"),
|
||||
visible: true,
|
||||
alert: false,
|
||||
});
|
||||
setTimeout(() => clearProgressData(), 5000);
|
||||
setTimeout(() => clearSecondaryProgressData(), TIMEOUT);
|
||||
fetchFiles(currentFolderId, filter).then((data) => {
|
||||
if (!isRecycleBinFolder && !!this.state.foldersList.length) {
|
||||
const path = data.selectedFolder.pathParts.slice(0);
|
||||
@ -106,8 +111,12 @@ class DeleteDialogComponent extends React.Component {
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
toastr.error(err);
|
||||
clearProgressData();
|
||||
setSecondaryProgressBarData({
|
||||
visible: true,
|
||||
alert: true,
|
||||
});
|
||||
//toastr.error(err);
|
||||
setTimeout(() => clearSecondaryProgressData(), TIMEOUT);
|
||||
});
|
||||
};
|
||||
|
||||
@ -116,8 +125,8 @@ class DeleteDialogComponent extends React.Component {
|
||||
isRecycleBinFolder,
|
||||
onClose,
|
||||
t,
|
||||
setProgressBarData,
|
||||
clearProgressData,
|
||||
setSecondaryProgressBarData,
|
||||
clearSecondaryProgressData,
|
||||
} = this.props;
|
||||
const { selection } = this.state;
|
||||
|
||||
@ -139,10 +148,12 @@ class DeleteDialogComponent extends React.Component {
|
||||
|
||||
onClose();
|
||||
if (folderIds.length || fileIds.length) {
|
||||
setProgressBarData({
|
||||
setSecondaryProgressBarData({
|
||||
icon: "trash",
|
||||
visible: true,
|
||||
label: t("DeleteOperation"),
|
||||
percent: 0,
|
||||
alert: false,
|
||||
});
|
||||
|
||||
files
|
||||
@ -152,8 +163,12 @@ class DeleteDialogComponent extends React.Component {
|
||||
this.loopDeleteOperation(id);
|
||||
})
|
||||
.catch((err) => {
|
||||
toastr.error(err);
|
||||
clearProgressData();
|
||||
setSecondaryProgressBarData({
|
||||
visible: true,
|
||||
alert: true,
|
||||
});
|
||||
//toastr.error(err);
|
||||
setTimeout(() => clearSecondaryProgressData(), TIMEOUT);
|
||||
});
|
||||
}
|
||||
};
|
||||
@ -289,8 +304,8 @@ const mapStateToProps = (state) => {
|
||||
|
||||
export default connect(mapStateToProps, {
|
||||
setTreeFolders,
|
||||
setProgressBarData,
|
||||
clearProgressData,
|
||||
setSecondaryProgressBarData,
|
||||
clearSecondaryProgressData,
|
||||
setUpdateTree,
|
||||
fetchFiles,
|
||||
})(withRouter(DeleteDialog));
|
||||
|
@ -22,9 +22,10 @@ import {
|
||||
getSelection,
|
||||
} from "../../../store/files/selectors";
|
||||
import {
|
||||
setProgressBarData,
|
||||
clearProgressData,
|
||||
setSecondaryProgressBarData,
|
||||
clearSecondaryProgressData,
|
||||
} from "../../../store/files/actions";
|
||||
import { TIMEOUT } from "../../../helpers/constants";
|
||||
import DownloadContent from "./DownloadContent";
|
||||
import { createI18N } from "../../../helpers/i18n";
|
||||
const i18n = createI18N({
|
||||
@ -178,8 +179,8 @@ class DownloadDialogComponent extends React.Component {
|
||||
onDownloadProgress,
|
||||
onClose,
|
||||
t,
|
||||
setProgressBarData,
|
||||
clearProgressData,
|
||||
setSecondaryProgressBarData,
|
||||
clearSecondaryProgressData,
|
||||
} = this.props;
|
||||
|
||||
const downloadItems = this.getDownloadItems();
|
||||
@ -187,10 +188,12 @@ class DownloadDialogComponent extends React.Component {
|
||||
const folderIds = downloadItems[1];
|
||||
|
||||
if (fileConvertIds.length || folderIds.length) {
|
||||
setProgressBarData({
|
||||
setSecondaryProgressBarData({
|
||||
icon: "file",
|
||||
visible: true,
|
||||
percent: 0,
|
||||
label: t("ArchivingData"),
|
||||
alert: false,
|
||||
});
|
||||
api.files
|
||||
.downloadFormatFiles(fileConvertIds, folderIds)
|
||||
@ -199,8 +202,12 @@ class DownloadDialogComponent extends React.Component {
|
||||
onDownloadProgress(false);
|
||||
})
|
||||
.catch((err) => {
|
||||
toastr.error(err);
|
||||
clearProgressData();
|
||||
setSecondaryProgressBarData({
|
||||
visible: true,
|
||||
alert: true,
|
||||
});
|
||||
//toastr.error(err);
|
||||
setTimeout(() => clearSecondaryProgressData(), TIMEOUT);
|
||||
});
|
||||
}
|
||||
};
|
||||
@ -629,6 +636,6 @@ const mapStateToProps = (state) => {
|
||||
};
|
||||
|
||||
export default connect(mapStateToProps, {
|
||||
setProgressBarData,
|
||||
clearProgressData,
|
||||
setSecondaryProgressBarData,
|
||||
clearSecondaryProgressData,
|
||||
})(withRouter(DownloadDialog));
|
||||
|
@ -7,9 +7,10 @@ import { withTranslation } from "react-i18next";
|
||||
import { api, utils, toastr } from "asc-web-common";
|
||||
import {
|
||||
fetchFiles,
|
||||
setProgressBarData,
|
||||
clearProgressData,
|
||||
setSecondaryProgressBarData,
|
||||
clearSecondaryProgressData,
|
||||
} from "../../../store/files/actions";
|
||||
import { TIMEOUT } from "../../../helpers/constants";
|
||||
import {
|
||||
getSelectedFolderId,
|
||||
getFilter,
|
||||
@ -32,9 +33,9 @@ const EmptyTrashDialogComponent = (props) => {
|
||||
t,
|
||||
filter,
|
||||
currentFolderId,
|
||||
setProgressBarData,
|
||||
setSecondaryProgressBarData,
|
||||
isLoading,
|
||||
clearProgressData,
|
||||
clearSecondaryProgressData,
|
||||
fetchFiles,
|
||||
} = props;
|
||||
|
||||
@ -51,51 +52,65 @@ const EmptyTrashDialogComponent = (props) => {
|
||||
const currentProcess = res.find((x) => x.id === id);
|
||||
if (currentProcess && currentProcess.progress !== 100) {
|
||||
const newProgressData = {
|
||||
icon: "trash",
|
||||
visible: true,
|
||||
percent: currentProcess.progress,
|
||||
label: t("DeleteOperation"),
|
||||
alert: false,
|
||||
};
|
||||
setProgressBarData(newProgressData);
|
||||
setSecondaryProgressBarData(newProgressData);
|
||||
setTimeout(() => loopEmptyTrash(id), 1000);
|
||||
} else {
|
||||
fetchFiles(currentFolderId, filter)
|
||||
.then(() => {
|
||||
setProgressBarData({
|
||||
setSecondaryProgressBarData({
|
||||
icon: "trash",
|
||||
visible: true,
|
||||
percent: 100,
|
||||
label: t("DeleteOperation"),
|
||||
alert: false,
|
||||
});
|
||||
setTimeout(() => clearProgressData(), 5000);
|
||||
setTimeout(() => clearSecondaryProgressData(), TIMEOUT);
|
||||
toastr.success(successMessage);
|
||||
})
|
||||
.catch((err) => {
|
||||
toastr.error(err);
|
||||
clearProgressData();
|
||||
setSecondaryProgressBarData({
|
||||
visible: true,
|
||||
alert: true,
|
||||
});
|
||||
//toastr.error(err);
|
||||
setTimeout(() => clearSecondaryProgressData(), TIMEOUT);
|
||||
});
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
toastr.error(err);
|
||||
clearProgressData();
|
||||
setSecondaryProgressBarData({
|
||||
visible: true,
|
||||
alert: true,
|
||||
});
|
||||
//toastr.error(err);
|
||||
setTimeout(() => clearSecondaryProgressData(), TIMEOUT);
|
||||
});
|
||||
},
|
||||
[
|
||||
t,
|
||||
currentFolderId,
|
||||
filter,
|
||||
setProgressBarData,
|
||||
clearProgressData,
|
||||
setSecondaryProgressBarData,
|
||||
clearSecondaryProgressData,
|
||||
fetchFiles,
|
||||
]
|
||||
);
|
||||
|
||||
const onEmptyTrash = useCallback(() => {
|
||||
const newProgressData = {
|
||||
icon: "trash",
|
||||
visible: true,
|
||||
percent: 0,
|
||||
label: t("DeleteOperation"),
|
||||
alert: false,
|
||||
};
|
||||
setProgressBarData(newProgressData);
|
||||
setSecondaryProgressBarData(newProgressData);
|
||||
onClose();
|
||||
files
|
||||
.emptyTrash()
|
||||
@ -104,10 +119,20 @@ const EmptyTrashDialogComponent = (props) => {
|
||||
loopEmptyTrash(id);
|
||||
})
|
||||
.catch((err) => {
|
||||
toastr.error(err);
|
||||
clearProgressData();
|
||||
setSecondaryProgressBarData({
|
||||
visible: true,
|
||||
alert: true,
|
||||
});
|
||||
//toastr.error(err);
|
||||
setTimeout(() => clearSecondaryProgressData(), TIMEOUT);
|
||||
});
|
||||
}, [onClose, loopEmptyTrash, setProgressBarData, t, clearProgressData]);
|
||||
}, [
|
||||
onClose,
|
||||
loopEmptyTrash,
|
||||
setSecondaryProgressBarData,
|
||||
t,
|
||||
clearSecondaryProgressData,
|
||||
]);
|
||||
|
||||
return (
|
||||
<ModalDialogContainer>
|
||||
@ -157,7 +182,7 @@ const mapStateToProps = (state) => {
|
||||
};
|
||||
|
||||
export default connect(mapStateToProps, {
|
||||
setProgressBarData,
|
||||
clearProgressData,
|
||||
setSecondaryProgressBarData,
|
||||
clearSecondaryProgressData,
|
||||
fetchFiles,
|
||||
})(withRouter(EmptyTrashDialog));
|
||||
|
@ -1,31 +1,24 @@
|
||||
import React, { useEffect } from "react";
|
||||
import React from "react";
|
||||
import { withRouter } from "react-router";
|
||||
import { /*RequestLoader,*/ Box } from "asc-web-components";
|
||||
import { utils, api, toastr } from "asc-web-common";
|
||||
import { withTranslation, I18nextProvider } from "react-i18next";
|
||||
import { createI18N } from "../../../helpers/i18n";
|
||||
|
||||
const i18n = createI18N({
|
||||
page: "DocEditor",
|
||||
localesPath: "pages/DocEditor",
|
||||
});
|
||||
|
||||
const { changeLanguage, getObjectByLocation, showLoader } = utils;
|
||||
const { files } = api;
|
||||
const { getObjectByLocation, showLoader } = utils;
|
||||
|
||||
class PureEditor extends React.Component {
|
||||
async componentDidMount() {
|
||||
const urlParams = getObjectByLocation(window.location);
|
||||
const fileId = urlParams.fileId || null;
|
||||
const doc = urlParams.doc || null;
|
||||
|
||||
console.log("PureEditor componentDidMount", fileId);
|
||||
console.log("PureEditor componentDidMount", fileId, doc);
|
||||
|
||||
const vh = window.innerHeight * 0.01;
|
||||
document.documentElement.style.setProperty("--vh", `${vh}px`);
|
||||
|
||||
showLoader();
|
||||
|
||||
let docApiUrl = await files.getDocServiceUrl();
|
||||
let docApiUrl = await api.files.getDocServiceUrl();
|
||||
|
||||
const script = document.createElement("script");
|
||||
script.setAttribute("type", "text/javascript");
|
||||
@ -34,8 +27,8 @@ class PureEditor extends React.Component {
|
||||
script.onload = function () {
|
||||
console.log("PureEditor script.onload", fileId, window.DocsAPI);
|
||||
|
||||
files
|
||||
.openEdit(fileId)
|
||||
api.files
|
||||
.openEdit(fileId, doc)
|
||||
.then((config) => {
|
||||
if (window.innerWidth < 720) {
|
||||
config.type = "mobile";
|
||||
@ -67,17 +60,4 @@ class PureEditor extends React.Component {
|
||||
}
|
||||
}
|
||||
|
||||
const EditorContainer = withTranslation()(PureEditor);
|
||||
|
||||
const DocEditor = (props) => {
|
||||
useEffect(() => {
|
||||
changeLanguage(i18n);
|
||||
}, []);
|
||||
return (
|
||||
<I18nextProvider i18n={i18n}>
|
||||
<EditorContainer {...props} />
|
||||
</I18nextProvider>
|
||||
);
|
||||
};
|
||||
|
||||
export default withRouter(DocEditor);
|
||||
export default withRouter(PureEditor);
|
||||
|
@ -1,72 +0,0 @@
|
||||
{
|
||||
"NewDocument": "New document",
|
||||
"NewSpreadsheet": "New spreadsheet",
|
||||
"NewPresentation": "New presentation",
|
||||
"NewFolder": "New folder",
|
||||
"UploadToFolder": "Upload to folder",
|
||||
"SharingSettings": "Sharing settings",
|
||||
"LinkForPortalUsers": "Link for portal users",
|
||||
"MoveTo": "Move to",
|
||||
"Copy": "Copy",
|
||||
"Download": "Download",
|
||||
"Rename": "Rename",
|
||||
"Delete": "Delete",
|
||||
"Type": "Type",
|
||||
"Author": "Author",
|
||||
"Search": "Search",
|
||||
"Folders": "Folders",
|
||||
"Document": "Document",
|
||||
"Documents": "Documents",
|
||||
"Spreadsheet": "Spreadsheet",
|
||||
"Presentation": "Presentation",
|
||||
"Presentations": "Presentations",
|
||||
"Spreadsheets": "Spreadsheets",
|
||||
"Images": "Images",
|
||||
"Media": "Media",
|
||||
"Archives": "Archives",
|
||||
"AllFiles": "All files",
|
||||
"NoSubfolders": "No subfolders",
|
||||
"LoadingProcessing": "Loading...",
|
||||
"LoadingDescription": "Please wait...",
|
||||
"ByLastModifiedDate": "Last modified date",
|
||||
"ByCreationDate": "Creation date",
|
||||
"ByTitle": "Title",
|
||||
"ByType": "Type",
|
||||
"BySize": "Size",
|
||||
"ByAuthor": "Author",
|
||||
"DirectionAscLabel": "A-Z",
|
||||
"DirectionDescLabel": "Z-A",
|
||||
"CountPerPage": "{{count}} per page",
|
||||
"PageOfTotalPage": "{{page}} of {{totalPage}}",
|
||||
"PreviousPage": "Previous",
|
||||
"NextPage": "Next",
|
||||
"DefaultOptionLabel": "Me",
|
||||
"LblSelect": "Select",
|
||||
"AuthorMe": "Me",
|
||||
"TitleCreated": "Created",
|
||||
"TitleUploaded": "Uploaded",
|
||||
"TitleModified": "Updated",
|
||||
"TitleRemoved": "Removed",
|
||||
"TitleSubfolders": "Flds",
|
||||
"TitleDocuments": "Dcs",
|
||||
"Share": "Share",
|
||||
"DownloadAs": "Download as",
|
||||
"More": "More",
|
||||
"CloseButton": "Close",
|
||||
"All": "All",
|
||||
"Files": "Files",
|
||||
"EmptyRecycleBin": "Empty Recycle Bin",
|
||||
"Folder": "Folder",
|
||||
"ClearButton": "Reset filter",
|
||||
"SubheadingEmptyText": "No files to be displayed in this section",
|
||||
"MyEmptyContainerDescription": "The documents and image files you create or upload to the portal are kept here in 'My Documents' section. You can open and edit them using the ONLYOFFICE™ portal editor, share them with friends or colleagues, organize into folders. Drag-and-drop the files from your computer here to upload them to your portal even more easily.",
|
||||
"SharedEmptyContainerDescription": "The 'Shared with Me' section is used to show the files which your friends or colleagues gave you access to. In case you haven't seen the latest changes in the documents they are marked 'new'. You can remove the files from the list clicking the appropriate button.",
|
||||
"CommonEmptyContainerDescription": "The 'Common Documents' section shows all the documents shared by portal administrator for common access. Only portal administrator can create folders in this section, but with the access granted the portal users can also upload their files here. Drag-and-drop the files from your computer here to upload them to your portal even more easily.",
|
||||
"TrashEmptyContainerDescription": "The 'Recycle Bin' section is where all the deleted files are moved. You can either restore them in case they are deleted by mistake or delete them permanently. Please note, that when you delete the files from the 'Recycle Bin' they cannot be restored any longer.",
|
||||
"GoToMyButton": "Go to My Documents",
|
||||
"BackToParentFolderButton": "Back to parent folder",
|
||||
"EmptyFolderHeader": "No files in this folder",
|
||||
"EmptyFilterSubheadingText": "No files to be displayed for this filter here",
|
||||
"EmptyFilterDescriptionText": "No files or folders matching your filter can be displayed in this section. Please select other filter options or clear filter to view all the files in this section. You can also look for the file you need in other sections.",
|
||||
"Filter": "Filter"
|
||||
}
|
@ -1,72 +0,0 @@
|
||||
{
|
||||
"NewDocument": "Новый документ",
|
||||
"NewSpreadsheet": "Новая таблица",
|
||||
"NewPresentation": "Новая презентация",
|
||||
"NewFolder": "Новая папка",
|
||||
"UploadToFolder": "Загрузить в папку",
|
||||
"SharingSettings": "Настройки доступа",
|
||||
"LinkForPortalUsers": "Ссылка для пользователей портала",
|
||||
"MoveTo": "Переместить",
|
||||
"Copy": "Копировать",
|
||||
"Download": "Скачать",
|
||||
"Rename": "Переименовать",
|
||||
"Delete": "Удалить",
|
||||
"Type": "Тип",
|
||||
"Author": "Автор",
|
||||
"Search": "Поиск",
|
||||
"Folders": "Папки",
|
||||
"Document": "Документ",
|
||||
"Documents": "Документы",
|
||||
"Spreadsheet": "Таблица",
|
||||
"Presentation": "Презентация",
|
||||
"Presentations": "Презентации",
|
||||
"Spreadsheets": "Таблицы",
|
||||
"Images": "Изображения",
|
||||
"Media": "Медиа",
|
||||
"Archives": "Архивы",
|
||||
"AllFiles": "Все файлы",
|
||||
"NoSubfolders": "Без подпапок",
|
||||
"LoadingProcessing": "Загрузка...",
|
||||
"LoadingDescription": "Пожалуйста, подождите...",
|
||||
"ByLastModifiedDate": "Дата последнего изменения",
|
||||
"ByCreationDate": "Дата создания",
|
||||
"ByTitle": "Название",
|
||||
"ByType": "Тип",
|
||||
"BySize": "Размер",
|
||||
"ByAuthor": "Автор",
|
||||
"DirectionAscLabel": "А-Я",
|
||||
"DirectionDescLabel": "Я-А",
|
||||
"CountPerPage": "{{count}} на странице",
|
||||
"PageOfTotalPage": "{{page}} из {{totalPage}}",
|
||||
"PreviousPage": "Предыдущая",
|
||||
"NextPage": "Следующая",
|
||||
"DefaultOptionLabel": "Я",
|
||||
"LblSelect": "Выберите",
|
||||
"AuthorMe": "Я",
|
||||
"TitleCreated": "Создана",
|
||||
"TitleUploaded": "Загружен",
|
||||
"TitleModified": "Обновлён",
|
||||
"TitleRemoved": "Удалён",
|
||||
"TitleSubfolders": "Flds",
|
||||
"TitleDocuments": "Dcs",
|
||||
"Share": "Доступ",
|
||||
"DownloadAs": "Скачать как",
|
||||
"More": "Больше",
|
||||
"CloseButton": "Закрыть",
|
||||
"All": "Все",
|
||||
"Files": "Файлы",
|
||||
"EmptyRecycleBin": "Очистить корзину",
|
||||
"Folder": "Папка",
|
||||
"ClearButton": "Сбросить фильтр",
|
||||
"SubheadingEmptyText": "Нет файлов для отображения в этом разделе",
|
||||
"MyEmptyContainerDescription": "Документы и файлы изображений, которые вы создаете или загружаете на портал, хранятся здесь, в разделе «Мои документы». Вы можете открывать и редактировать их с помощью редактора портала ONLYOFFICE ™, делиться ими с друзьями или коллегами, организовывать в папки. Перетащите файлы со своего компьютера сюда, чтобы загрузить их на свой портал еще проще.",
|
||||
"SharedEmptyContainerDescription": "Раздел «Доступно для меня» используется для отображения файлов, к которым ваши друзья или коллеги предоставили вам доступ. Если вы не видели последние изменения в документах, они помечаются как «новые». Вы можете удалить файлы из списка, нажав соответствующую кнопку.",
|
||||
"CommonEmptyContainerDescription": "В разделе «Общие документы» отображаются все документы, которыми администратор портала предоставил общий доступ. Только администраторы портала могут создавать папки в этом разделе, но с предоставленным доступом пользователи портала также могут загружать свои файлы здесь. Перетащите файлы со своего компьютера сюда, чтобы загрузить их на свой портал еще проще.",
|
||||
"TrashEmptyContainerDescription": "В разделе «Корзина» находятся все удаленные файлы. Вы можете восстановить их, если они были удалены по ошибке, или удалить их навсегда. Обратите внимание, что когда вы удаляете файлы из корзины, они больше не могут быть восстановлены.",
|
||||
"GoToMyButton": "Перейти к моим документам",
|
||||
"BackToParentFolderButton": "Вернуться в папку на уровень выше",
|
||||
"EmptyFolderHeader": "В этой папке нет файлов",
|
||||
"EmptyFilterSubheadingText": "Здесь нет файлов, соответствующих этому фильтру",
|
||||
"EmptyFilterDescriptionText": "В этом разделе нет файлов или папок, соответствующих фильтру. Пожалуйста, выберите другие параметры или очистите фильтр, чтобы показать все файлы в этом разделе. Вы можете также поискать нужный файл в других разделах.",
|
||||
"Filter": "Фильтр"
|
||||
}
|
@ -13,18 +13,19 @@ import {
|
||||
} from "asc-web-components";
|
||||
import { constants, api, toastr, store as initStore } from "asc-web-common";
|
||||
import {
|
||||
clearProgressData,
|
||||
clearSecondaryProgressData,
|
||||
createFile,
|
||||
createFolder,
|
||||
fetchFiles,
|
||||
renameFolder,
|
||||
setIsLoading,
|
||||
setNewRowItems,
|
||||
setProgressBarData,
|
||||
setSecondaryProgressBarData,
|
||||
setTreeFolders,
|
||||
setUpdateTree,
|
||||
updateFile,
|
||||
} from "../../../../../store/files/actions";
|
||||
import { TIMEOUT } from "../../../../../helpers/constants";
|
||||
import {
|
||||
canConvert,
|
||||
canWebEdit,
|
||||
@ -357,33 +358,48 @@ class FilesRowContent extends React.PureComponent {
|
||||
selectedFolder,
|
||||
filter,
|
||||
setIsLoading,
|
||||
setProgressBarData,
|
||||
setSecondaryProgressBarData,
|
||||
t,
|
||||
clearProgressData,
|
||||
clearSecondaryProgressData,
|
||||
fetchFiles,
|
||||
} = this.props;
|
||||
api.files.getConvertFile(fileId).then((res) => {
|
||||
api.files.getFileConversationProgress(fileId).then((res) => {
|
||||
if (res && res[0] && res[0].progress !== 100) {
|
||||
setProgressBarData({
|
||||
setSecondaryProgressBarData({
|
||||
icon: "file",
|
||||
visible: true,
|
||||
percent: res[0].progress,
|
||||
label: t("Convert"),
|
||||
alert: false,
|
||||
});
|
||||
setTimeout(() => this.getConvertProgress(fileId), 1000);
|
||||
} else {
|
||||
if (res[0].error) {
|
||||
setSecondaryProgressBarData({
|
||||
visible: true,
|
||||
alert: true,
|
||||
});
|
||||
toastr.error(res[0].error);
|
||||
clearProgressData();
|
||||
setTimeout(() => clearSecondaryProgressData(), TIMEOUT);
|
||||
} else {
|
||||
setProgressBarData({
|
||||
setSecondaryProgressBarData({
|
||||
icon: "file",
|
||||
visible: true,
|
||||
percent: 100,
|
||||
label: t("Convert"),
|
||||
alert: false,
|
||||
});
|
||||
setTimeout(() => clearProgressData(), 5000);
|
||||
setTimeout(() => clearSecondaryProgressData(), TIMEOUT);
|
||||
const newFilter = filter.clone();
|
||||
fetchFiles(selectedFolder.id, newFilter)
|
||||
.catch((err) => toastr.error(err))
|
||||
.catch((err) => {
|
||||
setSecondaryProgressBarData({
|
||||
visible: true,
|
||||
alert: true,
|
||||
});
|
||||
//toastr.error(err);
|
||||
setTimeout(() => clearSecondaryProgressData(), TIMEOUT);
|
||||
})
|
||||
.finally(() => setIsLoading(false));
|
||||
}
|
||||
}
|
||||
@ -391,8 +407,14 @@ class FilesRowContent extends React.PureComponent {
|
||||
};
|
||||
|
||||
onConvert = () => {
|
||||
const { item, t, setProgressBarData } = this.props;
|
||||
setProgressBarData({ visible: true, percent: 0, label: t("Convert") });
|
||||
const { item, t, setSecondaryProgressBarData } = this.props;
|
||||
setSecondaryProgressBarData({
|
||||
icon: "file",
|
||||
visible: true,
|
||||
percent: 0,
|
||||
label: t("Convert"),
|
||||
alert: false,
|
||||
});
|
||||
this.setState({ showConvertDialog: false }, () =>
|
||||
api.files.convertFile(item.id).then((convertRes) => {
|
||||
if (convertRes && convertRes[0] && convertRes[0].progress !== 100) {
|
||||
@ -509,7 +531,7 @@ class FilesRowContent extends React.PureComponent {
|
||||
>
|
||||
{fileExst}
|
||||
</Text>
|
||||
{canConvert && !isTrashFolder && (
|
||||
{/* TODO: Uncomment after fix conversation {canConvert && !isTrashFolder && (
|
||||
<IconButton
|
||||
onClick={this.setConvertDialogVisible}
|
||||
iconName="FileActionsConvertIcon"
|
||||
@ -519,7 +541,7 @@ class FilesRowContent extends React.PureComponent {
|
||||
color="#A3A9AE"
|
||||
hoverColor="#3B72A7"
|
||||
/>
|
||||
)}
|
||||
)} */}
|
||||
{canWebEdit && !isTrashFolder && (
|
||||
<IconButton
|
||||
onClick={this.onFilesClick}
|
||||
@ -683,10 +705,10 @@ export default connect(mapStateToProps, {
|
||||
updateFile,
|
||||
renameFolder,
|
||||
setTreeFolders,
|
||||
setProgressBarData,
|
||||
setSecondaryProgressBarData,
|
||||
setUpdateTree,
|
||||
setNewRowItems,
|
||||
setIsLoading,
|
||||
clearProgressData,
|
||||
clearSecondaryProgressData,
|
||||
fetchFiles,
|
||||
})(withRouter(withTranslation()(FilesRowContent)));
|
||||
|
@ -1,7 +1,7 @@
|
||||
import { Checkbox, ContextMenuButton } from "asc-web-components";
|
||||
import PropTypes from "prop-types";
|
||||
import React from "react";
|
||||
import isEqual from "lodash/isEqual";
|
||||
import equal from "fast-deep-equal/react";
|
||||
import styled, { css } from "styled-components";
|
||||
import BadgesFileTile from "./BadgesFileTile";
|
||||
|
||||
@ -111,7 +111,7 @@ class Tile extends React.Component {
|
||||
if (this.props.needForUpdate) {
|
||||
return this.props.needForUpdate(this.props, nextProps);
|
||||
}
|
||||
return !isEqual(this.props, nextProps);
|
||||
return !equal(this.props, nextProps);
|
||||
}
|
||||
|
||||
render() {
|
||||
|
@ -3,7 +3,7 @@ import { withRouter } from "react-router";
|
||||
import { connect } from "react-redux";
|
||||
import { ReactSVG } from "react-svg";
|
||||
import { withTranslation, Trans } from "react-i18next";
|
||||
import isEqual from "lodash/isEqual";
|
||||
import equal from "fast-deep-equal/react";
|
||||
import copy from "copy-to-clipboard";
|
||||
import styled from "styled-components";
|
||||
import queryString from "query-string";
|
||||
@ -31,7 +31,7 @@ import {
|
||||
store,
|
||||
} from "asc-web-common";
|
||||
import {
|
||||
clearProgressData,
|
||||
clearSecondaryProgressData,
|
||||
loopFilesOperations,
|
||||
markItemAsFavorite,
|
||||
removeItemFromFavorite,
|
||||
@ -46,13 +46,15 @@ import {
|
||||
setIsLoading,
|
||||
setMediaViewerData,
|
||||
setUpdateTree,
|
||||
setProgressBarData,
|
||||
setSecondaryProgressBarData,
|
||||
setSelected,
|
||||
setSelection,
|
||||
setTreeFolders,
|
||||
getFileInfo,
|
||||
addFileToRecentlyViewed,
|
||||
setSharingPanelVisible,
|
||||
} from "../../../../../store/files/actions";
|
||||
import { TIMEOUT } from "../../../../../helpers/constants";
|
||||
import {
|
||||
getCurrentFolderCount,
|
||||
getDragging,
|
||||
@ -90,8 +92,9 @@ import {
|
||||
getIsPrivacyFolder,
|
||||
getPrivacyInstructionsLink,
|
||||
getIconOfDraggedFile,
|
||||
getSharePanelVisible,
|
||||
} from "../../../../../store/files/selectors";
|
||||
import { SharingPanel, OperationsPanel } from "../../../../panels";
|
||||
import { OperationsPanel } from "../../../../panels";
|
||||
const {
|
||||
isAdmin,
|
||||
getSettings,
|
||||
@ -185,7 +188,6 @@ class SectionBodyContent extends React.Component {
|
||||
|
||||
this.state = {
|
||||
editingId: null,
|
||||
showSharingPanel: false,
|
||||
showMoveToPanel: false,
|
||||
showCopyPanel: false,
|
||||
isDrag: false,
|
||||
@ -254,7 +256,7 @@ class SectionBodyContent extends React.Component {
|
||||
if (this.props && this.props.firstLoad) return true;
|
||||
|
||||
const { showMoveToPanel, showCopyPanel, isDrag } = this.state;
|
||||
if (this.state.showSharingPanel !== nextState.showSharingPanel) {
|
||||
if (this.props.sharingPanelVisible !== nextProps.sharingPanelVisible) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -262,7 +264,7 @@ class SectionBodyContent extends React.Component {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!isEqual(this.props, nextProps)) {
|
||||
if (!equal(this.props, nextProps)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -383,11 +385,17 @@ class SectionBodyContent extends React.Component {
|
||||
};
|
||||
|
||||
onDeleteFile = (fileId, currentFolderId) => {
|
||||
const { t, setProgressBarData, clearProgressData } = this.props;
|
||||
setProgressBarData({
|
||||
const {
|
||||
t,
|
||||
setSecondaryProgressBarData,
|
||||
clearSecondaryProgressData,
|
||||
} = this.props;
|
||||
setSecondaryProgressBarData({
|
||||
icon: "trash",
|
||||
visible: true,
|
||||
percent: 0,
|
||||
label: t("DeleteOperation"),
|
||||
alert: false,
|
||||
});
|
||||
api.files
|
||||
.deleteFile(fileId)
|
||||
@ -396,8 +404,12 @@ class SectionBodyContent extends React.Component {
|
||||
this.loopDeleteProgress(id, currentFolderId, false);
|
||||
})
|
||||
.catch((err) => {
|
||||
toastr.error(err);
|
||||
clearProgressData();
|
||||
setSecondaryProgressBarData({
|
||||
visible: true,
|
||||
alert: true,
|
||||
});
|
||||
//toastr.error(err);
|
||||
setTimeout(() => clearSecondaryProgressData(), TIMEOUT);
|
||||
});
|
||||
};
|
||||
|
||||
@ -408,24 +420,28 @@ class SectionBodyContent extends React.Component {
|
||||
setTreeFolders,
|
||||
isRecycleBin,
|
||||
t,
|
||||
setProgressBarData,
|
||||
setSecondaryProgressBarData,
|
||||
fetchFiles,
|
||||
setUpdateTree,
|
||||
} = this.props;
|
||||
api.files.getProgress().then((res) => {
|
||||
const deleteProgress = res.find((x) => x.id === id);
|
||||
if (deleteProgress && deleteProgress.progress !== 100) {
|
||||
setProgressBarData({
|
||||
setSecondaryProgressBarData({
|
||||
icon: "trash",
|
||||
visible: true,
|
||||
percent: deleteProgress.progress,
|
||||
label: t("DeleteOperation"),
|
||||
alert: false,
|
||||
});
|
||||
setTimeout(() => this.loopDeleteProgress(id, folderId, isFolder), 1000);
|
||||
} else {
|
||||
setProgressBarData({
|
||||
setSecondaryProgressBarData({
|
||||
icon: "trash",
|
||||
visible: true,
|
||||
percent: 100,
|
||||
label: t("DeleteOperation"),
|
||||
alert: false,
|
||||
});
|
||||
fetchFiles(folderId, filter)
|
||||
.then((data) => {
|
||||
@ -443,20 +459,34 @@ class SectionBodyContent extends React.Component {
|
||||
: toastr.success(`File moved to recycle bin`);
|
||||
})
|
||||
.catch((err) => {
|
||||
toastr.error(err);
|
||||
this.props.clearProgressData();
|
||||
setSecondaryProgressBarData({
|
||||
visible: true,
|
||||
alert: true,
|
||||
});
|
||||
//toastr.error(err);
|
||||
setTimeout(() => this.props.clearSecondaryProgressData(), TIMEOUT);
|
||||
})
|
||||
.finally(() =>
|
||||
setTimeout(() => this.props.clearProgressData(), 5000)
|
||||
setTimeout(() => this.props.clearSecondaryProgressData(), TIMEOUT)
|
||||
);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
onDeleteFolder = (folderId, currentFolderId) => {
|
||||
const { t, setProgressBarData, clearProgressData } = this.props;
|
||||
const {
|
||||
t,
|
||||
setSecondaryProgressBarData,
|
||||
clearSecondaryProgressData,
|
||||
} = this.props;
|
||||
const progressLabel = t("DeleteOperation");
|
||||
setProgressBarData({ visible: true, percent: 0, label: progressLabel });
|
||||
setSecondaryProgressBarData({
|
||||
icon: "trash",
|
||||
visible: true,
|
||||
percent: 0,
|
||||
label: progressLabel,
|
||||
alert: false,
|
||||
});
|
||||
api.files
|
||||
.deleteFolder(folderId, currentFolderId)
|
||||
.then((res) => {
|
||||
@ -464,13 +494,17 @@ class SectionBodyContent extends React.Component {
|
||||
this.loopDeleteProgress(id, currentFolderId, true);
|
||||
})
|
||||
.catch((err) => {
|
||||
toastr.error(err);
|
||||
clearProgressData();
|
||||
setSecondaryProgressBarData({
|
||||
visible: true,
|
||||
alert: true,
|
||||
});
|
||||
//toastr.error(err);
|
||||
setTimeout(() => clearSecondaryProgressData(), TIMEOUT);
|
||||
});
|
||||
};
|
||||
|
||||
onClickShare = () =>
|
||||
this.setState({ showSharingPanel: !this.state.showSharingPanel });
|
||||
this.props.setSharingPanelVisible(!this.props.sharingPanelVisible);
|
||||
|
||||
onClickLinkForPortal = () => {
|
||||
const { settings, selection } = this.props;
|
||||
@ -566,7 +600,12 @@ class SectionBodyContent extends React.Component {
|
||||
onCopyAction = () =>
|
||||
this.setState({ showCopyPanel: !this.state.showCopyPanel });
|
||||
onDuplicate = () => {
|
||||
const { selection, selectedFolderId, setProgressBarData, t } = this.props;
|
||||
const {
|
||||
selection,
|
||||
selectedFolderId,
|
||||
setSecondaryProgressBarData,
|
||||
t,
|
||||
} = this.props;
|
||||
const folderIds = [];
|
||||
const fileIds = [];
|
||||
selection[0].fileExst
|
||||
@ -575,10 +614,12 @@ class SectionBodyContent extends React.Component {
|
||||
const conflictResolveType = 0; //Skip = 0, Overwrite = 1, Duplicate = 2
|
||||
const deleteAfter = false;
|
||||
|
||||
setProgressBarData({
|
||||
setSecondaryProgressBarData({
|
||||
icon: "duplicate",
|
||||
visible: true,
|
||||
percent: 0,
|
||||
label: t("CopyOperation"),
|
||||
alert: false,
|
||||
});
|
||||
this.copyTo(
|
||||
selectedFolderId,
|
||||
@ -775,7 +816,7 @@ class SectionBodyContent extends React.Component {
|
||||
if (currentProps.sectionWidth !== nextProps.sectionWidth) {
|
||||
return true;
|
||||
}
|
||||
if (!isEqual(currentProps.data, nextProps.data)) {
|
||||
if (!equal(currentProps.data, nextProps.data)) {
|
||||
return true;
|
||||
}
|
||||
if (currentProps.viewAs !== nextProps.viewAs) {
|
||||
@ -1325,17 +1366,19 @@ class SectionBodyContent extends React.Component {
|
||||
isShare,
|
||||
isCommon,
|
||||
isAdmin,
|
||||
setProgressBarData,
|
||||
setSecondaryProgressBarData,
|
||||
} = this.props;
|
||||
const folderIds = [];
|
||||
const fileIds = [];
|
||||
const conflictResolveType = 0; //Skip = 0, Overwrite = 1, Duplicate = 2
|
||||
const deleteAfter = true;
|
||||
|
||||
setProgressBarData({
|
||||
setSecondaryProgressBarData({
|
||||
icon: "move",
|
||||
visible: true,
|
||||
percent: 0,
|
||||
label: t("MoveToOperation"),
|
||||
alert: false,
|
||||
});
|
||||
for (let item of selection) {
|
||||
if (item.fileExst) {
|
||||
@ -1391,7 +1434,7 @@ class SectionBodyContent extends React.Component {
|
||||
conflictResolveType,
|
||||
deleteAfter
|
||||
) => {
|
||||
const { loopFilesOperations, clearProgressData } = this.props;
|
||||
const { loopFilesOperations, clearSecondaryProgressData } = this.props;
|
||||
|
||||
api.files
|
||||
.copyToFolder(
|
||||
@ -1406,8 +1449,12 @@ class SectionBodyContent extends React.Component {
|
||||
loopFilesOperations(id, destFolderId, true);
|
||||
})
|
||||
.catch((err) => {
|
||||
toastr.error(err);
|
||||
clearProgressData();
|
||||
setSecondaryProgressBarData({
|
||||
visible: true,
|
||||
alert: true,
|
||||
});
|
||||
//toastr.error(err);
|
||||
setTimeout(() => clearSecondaryProgressData(), TIMEOUT);
|
||||
});
|
||||
};
|
||||
|
||||
@ -1418,7 +1465,7 @@ class SectionBodyContent extends React.Component {
|
||||
conflictResolveType,
|
||||
deleteAfter
|
||||
) => {
|
||||
const { loopFilesOperations, clearProgressData } = this.props;
|
||||
const { loopFilesOperations, clearSecondaryProgressData } = this.props;
|
||||
|
||||
api.files
|
||||
.moveToFolder(
|
||||
@ -1433,8 +1480,12 @@ class SectionBodyContent extends React.Component {
|
||||
loopFilesOperations(id, destFolderId, false);
|
||||
})
|
||||
.catch((err) => {
|
||||
toastr.error(err);
|
||||
clearProgressData();
|
||||
setSecondaryProgressBarData({
|
||||
visible: true,
|
||||
alert: true,
|
||||
});
|
||||
//toastr.error(err);
|
||||
setTimeout(() => clearSecondaryProgressData(), TIMEOUT);
|
||||
});
|
||||
};
|
||||
|
||||
@ -1516,7 +1567,7 @@ class SectionBodyContent extends React.Component {
|
||||
};
|
||||
|
||||
render() {
|
||||
console.log("Files Home SectionBodyContent render", this.props);
|
||||
//console.log("Files Home SectionBodyContent render", this.props);
|
||||
|
||||
const {
|
||||
viewer,
|
||||
@ -1545,12 +1596,7 @@ class SectionBodyContent extends React.Component {
|
||||
} = this.props;
|
||||
console.log("Files Home SectionBodyContent render", this.props);
|
||||
|
||||
const {
|
||||
editingId,
|
||||
showSharingPanel,
|
||||
showMoveToPanel,
|
||||
showCopyPanel,
|
||||
} = this.state;
|
||||
const { editingId, showMoveToPanel, showCopyPanel } = this.state;
|
||||
|
||||
const operationsPanelProps = {
|
||||
setIsLoading,
|
||||
@ -1707,7 +1753,11 @@ class SectionBodyContent extends React.Component {
|
||||
) : (
|
||||
<Consumer>
|
||||
{(context) => (
|
||||
<RowContainer draggable useReactWindow={false}>
|
||||
<RowContainer
|
||||
className="files-row-container"
|
||||
draggable
|
||||
useReactWindow={false}
|
||||
>
|
||||
{items.map((item) => {
|
||||
const { checked, isFolder, value, contextOptions } = item;
|
||||
const sectionWidth = context.sectionWidth;
|
||||
@ -1810,12 +1860,6 @@ class SectionBodyContent extends React.Component {
|
||||
extsImagePreviewed={mediaViewerImageFormats} //TODO
|
||||
/>
|
||||
)}
|
||||
{showSharingPanel && (
|
||||
<SharingPanel
|
||||
onClose={this.onClickShare}
|
||||
visible={showSharingPanel}
|
||||
/>
|
||||
)}
|
||||
</>
|
||||
);
|
||||
}
|
||||
@ -1865,6 +1909,7 @@ const mapStateToProps = (state) => {
|
||||
viewer: getCurrentUser(state),
|
||||
tooltipValue: getTooltipLabel(state),
|
||||
iconOfDraggedFile: getIconOfDraggedFile(state)(state),
|
||||
sharingPanelVisible: getSharePanelVisible(state),
|
||||
};
|
||||
};
|
||||
|
||||
@ -1878,16 +1923,17 @@ export default connect(mapStateToProps, {
|
||||
setDragging,
|
||||
setDragItem,
|
||||
setMediaViewerData,
|
||||
setProgressBarData,
|
||||
setSecondaryProgressBarData,
|
||||
setSelection,
|
||||
setSelected,
|
||||
setUpdateTree,
|
||||
setIsLoading,
|
||||
clearProgressData,
|
||||
clearSecondaryProgressData,
|
||||
markItemAsFavorite,
|
||||
removeItemFromFavorite,
|
||||
fetchFavoritesFolder,
|
||||
getFileInfo,
|
||||
addFileToRecentlyViewed,
|
||||
loopFilesOperations,
|
||||
setSharingPanelVisible,
|
||||
})(withRouter(withTranslation()(SectionBodyContent)));
|
||||
|
@ -17,7 +17,7 @@ import result from "lodash/result";
|
||||
import { withTranslation } from "react-i18next";
|
||||
import { withRouter } from "react-router";
|
||||
import { constants, FilterInput, store, Loaders, utils } from "asc-web-common";
|
||||
import isEqual from "lodash/isEqual";
|
||||
import equal from "fast-deep-equal/react";
|
||||
import { isMobileOnly } from "react-device-detect";
|
||||
|
||||
const { withLayoutSize } = utils;
|
||||
@ -285,7 +285,7 @@ class SectionFilterContent extends React.Component {
|
||||
|
||||
shouldComponentUpdate(nextProps, nextState) {
|
||||
return (
|
||||
!isEqual(this.props.filter, nextProps.filter) ||
|
||||
!equal(this.props.filter, nextProps.filter) ||
|
||||
this.props.selectedFolderId !== nextProps.selectedFolderId ||
|
||||
this.state.isReady !== nextState.isReady ||
|
||||
this.props.viewAs !== nextProps.viewAs ||
|
||||
@ -295,7 +295,7 @@ class SectionFilterContent extends React.Component {
|
||||
}
|
||||
|
||||
render() {
|
||||
console.log("Filter render");
|
||||
//console.log("Filter render");
|
||||
const selectedFilterData = this.getSelectedFilterData();
|
||||
const { t, language, firstLoad, sectionWidth } = this.props;
|
||||
const filterColumnCount =
|
||||
|
@ -22,17 +22,19 @@ import {
|
||||
import {
|
||||
fetchFiles,
|
||||
setAction,
|
||||
setProgressBarData,
|
||||
clearProgressData,
|
||||
setSecondaryProgressBarData,
|
||||
clearSecondaryProgressData,
|
||||
setIsLoading,
|
||||
setSelected,
|
||||
setSharingPanelVisible,
|
||||
} from "../../../../../store/files/actions";
|
||||
import { TIMEOUT } from "../../../../../helpers/constants";
|
||||
import {
|
||||
EmptyTrashDialog,
|
||||
DeleteDialog,
|
||||
DownloadDialog,
|
||||
} from "../../../../dialogs";
|
||||
import { SharingPanel, OperationsPanel } from "../../../../panels";
|
||||
import { OperationsPanel } from "../../../../panels";
|
||||
import {
|
||||
isCanBeDeleted,
|
||||
getIsRecycleBinFolder,
|
||||
@ -48,6 +50,8 @@ import {
|
||||
getHeaderChecked,
|
||||
getOnlyFoldersSelected,
|
||||
getAccessedSelected,
|
||||
getSelectionLength,
|
||||
getSharePanelVisible,
|
||||
} from "../../../../../store/files/selectors";
|
||||
|
||||
const { isAdmin } = store.auth.selectors;
|
||||
@ -56,21 +60,27 @@ const { tablet, desktop } = utils.device;
|
||||
const { Consumer } = utils.context;
|
||||
|
||||
const StyledContainer = styled.div`
|
||||
@media ${desktop} {
|
||||
${(props) =>
|
||||
props.isHeaderVisible &&
|
||||
css`
|
||||
width: calc(100% + 76px);
|
||||
`}
|
||||
}
|
||||
|
||||
.header-container {
|
||||
position: relative;
|
||||
display: flex;
|
||||
display: grid;
|
||||
grid-template-columns: ${(props) =>
|
||||
props.isRootFolder
|
||||
? "auto auto 1fr"
|
||||
: props.canCreate
|
||||
? "auto auto auto auto 1fr"
|
||||
: "auto auto auto 1fr"};
|
||||
|
||||
align-items: center;
|
||||
max-width: calc(100vw - 32px);
|
||||
|
||||
@media ${tablet} {
|
||||
grid-template-columns: ${(props) =>
|
||||
props.isRootFolder
|
||||
? "1fr auto"
|
||||
: props.canCreate
|
||||
? "auto 1fr auto auto"
|
||||
: "auto 1fr auto"};
|
||||
|
||||
.headline-header {
|
||||
margin-left: -1px;
|
||||
}
|
||||
@ -159,7 +169,6 @@ class SectionHeaderContent extends React.Component {
|
||||
super(props);
|
||||
|
||||
this.state = {
|
||||
showSharingPanel: false,
|
||||
showDeleteDialog: false,
|
||||
showDownloadDialog: false,
|
||||
showEmptyTrashDialog: false,
|
||||
@ -242,25 +251,36 @@ class SectionHeaderContent extends React.Component {
|
||||
.getProgress()
|
||||
.then((res) => {
|
||||
if (!url) {
|
||||
this.props.setProgressBarData({
|
||||
this.props.setSecondaryProgressBarData({
|
||||
icon: "file",
|
||||
visible: true,
|
||||
percent: res[0].progress,
|
||||
label: this.props.t("ArchivingData"),
|
||||
alert: false,
|
||||
});
|
||||
setTimeout(() => this.loop(res[0].url), 1000);
|
||||
} else {
|
||||
setTimeout(() => this.props.clearProgressData(), 5000);
|
||||
setTimeout(() => this.props.clearSecondaryProgressData(), TIMEOUT);
|
||||
return window.open(url, "_blank");
|
||||
}
|
||||
})
|
||||
.catch((err) => {
|
||||
toastr.error(err);
|
||||
this.props.clearProgressData();
|
||||
setSecondaryProgressBarData({
|
||||
visible: true,
|
||||
alert: true,
|
||||
});
|
||||
//toastr.error(err);
|
||||
setTimeout(() => this.props.clearSecondaryProgressData(), TIMEOUT);
|
||||
});
|
||||
};
|
||||
|
||||
downloadAction = () => {
|
||||
const { t, selection, setProgressBarData, clearProgressData } = this.props;
|
||||
const {
|
||||
t,
|
||||
selection,
|
||||
setSecondaryProgressBarData,
|
||||
clearSecondaryProgressData,
|
||||
} = this.props;
|
||||
const fileIds = [];
|
||||
const folderIds = [];
|
||||
const items = [];
|
||||
@ -275,10 +295,12 @@ class SectionHeaderContent extends React.Component {
|
||||
}
|
||||
}
|
||||
|
||||
setProgressBarData({
|
||||
setSecondaryProgressBarData({
|
||||
icon: "file",
|
||||
visible: true,
|
||||
percent: 0,
|
||||
label: t("ArchivingData"),
|
||||
alert: false,
|
||||
});
|
||||
|
||||
api.files
|
||||
@ -287,8 +309,12 @@ class SectionHeaderContent extends React.Component {
|
||||
this.loop(res[0].url);
|
||||
})
|
||||
.catch((err) => {
|
||||
toastr.error(err);
|
||||
clearProgressData();
|
||||
setSecondaryProgressBarData({
|
||||
visible: true,
|
||||
alert: true,
|
||||
});
|
||||
//toastr.error(err);
|
||||
setTimeout(() => clearSecondaryProgressData(), TIMEOUT);
|
||||
});
|
||||
};
|
||||
|
||||
@ -298,7 +324,7 @@ class SectionHeaderContent extends React.Component {
|
||||
renameAction = () => toastr.info("renameAction click");
|
||||
|
||||
onOpenSharingPanel = () =>
|
||||
this.setState({ showSharingPanel: !this.state.showSharingPanel });
|
||||
this.props.setSharingPanelVisible(!this.props.sharingPanelVisible);
|
||||
|
||||
onDeleteAction = () =>
|
||||
this.setState({ showDeleteDialog: !this.state.showDeleteDialog });
|
||||
@ -501,7 +527,6 @@ class SectionHeaderContent extends React.Component {
|
||||
|
||||
const {
|
||||
showDeleteDialog,
|
||||
showSharingPanel,
|
||||
showEmptyTrashDialog,
|
||||
showDownloadDialog,
|
||||
showMoveToPanel,
|
||||
@ -514,8 +539,9 @@ class SectionHeaderContent extends React.Component {
|
||||
<Consumer>
|
||||
{(context) => (
|
||||
<StyledContainer
|
||||
isHeaderVisible={isHeaderVisible}
|
||||
width={context.sectionWidth}
|
||||
isRootFolder={isRootFolder}
|
||||
canCreate={canCreate}
|
||||
>
|
||||
{isHeaderVisible ? (
|
||||
<div className="group-button-menu-container">
|
||||
@ -617,13 +643,6 @@ class SectionHeaderContent extends React.Component {
|
||||
/>
|
||||
)}
|
||||
|
||||
{showSharingPanel && (
|
||||
<SharingPanel
|
||||
onClose={this.onOpenSharingPanel}
|
||||
visible={showSharingPanel}
|
||||
/>
|
||||
)}
|
||||
|
||||
{showMoveToPanel && (
|
||||
<OperationsPanel
|
||||
isCopy={false}
|
||||
@ -655,14 +674,12 @@ class SectionHeaderContent extends React.Component {
|
||||
}
|
||||
|
||||
const mapStateToProps = (state) => {
|
||||
const selection = getSelection(state);
|
||||
|
||||
return {
|
||||
isRootFolder: getIsRootFolder(state),
|
||||
isAdmin: isAdmin(state),
|
||||
isRecycleBin: getIsRecycleBinFolder(state),
|
||||
parentId: getSelectedFolderParentId(state),
|
||||
selection,
|
||||
selection: getSelection(state),
|
||||
title: getSelectedFolderTitle(state),
|
||||
filter: getFilter(state),
|
||||
deleteDialogVisible: isCanBeDeleted(state),
|
||||
@ -673,15 +690,17 @@ const mapStateToProps = (state) => {
|
||||
isHeaderChecked: getHeaderChecked(state),
|
||||
isAccessedSelected: getAccessedSelected(state),
|
||||
isOnlyFoldersSelected: getOnlyFoldersSelected(state),
|
||||
isItemsSelected: selection.length,
|
||||
isItemsSelected: getSelectionLength(state),
|
||||
sharingPanelVisible: getSharePanelVisible(state),
|
||||
};
|
||||
};
|
||||
|
||||
export default connect(mapStateToProps, {
|
||||
setAction,
|
||||
setProgressBarData,
|
||||
setSecondaryProgressBarData,
|
||||
setIsLoading,
|
||||
clearProgressData,
|
||||
clearSecondaryProgressData,
|
||||
fetchFiles,
|
||||
setSelected,
|
||||
setSharingPanelVisible,
|
||||
})(withTranslation()(withRouter(SectionHeaderContent)));
|
||||
|
@ -31,17 +31,20 @@ import {
|
||||
getSelectedFolderId,
|
||||
getFileActionId,
|
||||
getFilter,
|
||||
getProgressData,
|
||||
getPrimaryProgressData,
|
||||
getSecondaryProgressData,
|
||||
getTreeFolders,
|
||||
getViewAs,
|
||||
getIsLoading,
|
||||
getIsRecycleBinFolder,
|
||||
getDragging,
|
||||
getHeaderVisible,
|
||||
getSharePanelVisible,
|
||||
getFirstLoad,
|
||||
} from "../../../store/files/selectors";
|
||||
|
||||
import { ConvertDialog } from "../../dialogs";
|
||||
import { SharingPanel } from "../../panels";
|
||||
import { createI18N } from "../../../helpers/i18n";
|
||||
import { getFilterByLocation } from "../../../helpers/converters";
|
||||
const i18n = createI18N({
|
||||
@ -50,7 +53,7 @@ const i18n = createI18N({
|
||||
});
|
||||
const { changeLanguage } = utils;
|
||||
const { FilesFilter } = api;
|
||||
const { getSettingsHomepage, getIsLoaded } = store.auth.selectors;
|
||||
const { getSettingsHomepage } = store.auth.selectors;
|
||||
const { setHeaderVisible } = store.auth.actions;
|
||||
class PureHome extends React.Component {
|
||||
componentDidMount() {
|
||||
@ -140,7 +143,7 @@ class PureHome extends React.Component {
|
||||
|
||||
if (filter) {
|
||||
const folderId = filter.folder;
|
||||
console.log("filter", filter);
|
||||
//console.log("filter", filter);
|
||||
return fetchFiles(folderId, filter);
|
||||
}
|
||||
|
||||
@ -181,14 +184,16 @@ class PureHome extends React.Component {
|
||||
}
|
||||
|
||||
render() {
|
||||
console.log("Home render");
|
||||
//console.log("Home render");
|
||||
const {
|
||||
progressData,
|
||||
primaryProgressData,
|
||||
secondaryProgressData,
|
||||
viewAs,
|
||||
convertDialogVisible,
|
||||
sharingPanelVisible,
|
||||
fileActionId,
|
||||
isRecycleBin,
|
||||
isLoaded,
|
||||
firstLoad,
|
||||
isHeaderVisible,
|
||||
} = this.props;
|
||||
|
||||
@ -197,6 +202,8 @@ class PureHome extends React.Component {
|
||||
{convertDialogVisible && (
|
||||
<ConvertDialog visible={convertDialogVisible} />
|
||||
)}
|
||||
|
||||
{sharingPanelVisible && <SharingPanel />}
|
||||
<PageLayout
|
||||
withBodyScroll
|
||||
withBodyAutoFocus={!isMobile}
|
||||
@ -204,13 +211,21 @@ class PureHome extends React.Component {
|
||||
onDrop={this.onDrop}
|
||||
setSelections={this.props.setSelections}
|
||||
onMouseMove={this.onMouseMove}
|
||||
showProgressBar={progressData.visible}
|
||||
progressBarValue={progressData.percent}
|
||||
//progressBarDropDownContent={progressBarContent}
|
||||
progressBarLabel={progressData.label}
|
||||
showPrimaryProgressBar={primaryProgressData.visible}
|
||||
primaryProgressBarValue={primaryProgressData.percent}
|
||||
primaryProgressBarIcon={primaryProgressData.icon}
|
||||
showPrimaryButtonAlert={primaryProgressData.alert}
|
||||
showSecondaryProgressBar={secondaryProgressData.visible}
|
||||
secondaryProgressBarValue={secondaryProgressData.percent}
|
||||
secondaryProgressBarIcon={secondaryProgressData.icon}
|
||||
showSecondaryButtonAlert={secondaryProgressData.alert}
|
||||
viewAs={viewAs}
|
||||
hideAside={!!fileActionId || progressData.visible}
|
||||
isLoaded={isLoaded}
|
||||
hideAside={
|
||||
!!fileActionId ||
|
||||
primaryProgressData.visible ||
|
||||
secondaryProgressData.visible
|
||||
}
|
||||
isLoaded={!firstLoad}
|
||||
isHeaderVisible={isHeaderVisible}
|
||||
>
|
||||
<PageLayout.ArticleHeader>
|
||||
@ -273,13 +288,15 @@ function mapStateToProps(state) {
|
||||
fileActionId: getFileActionId(state),
|
||||
filter: getFilter(state),
|
||||
isRecycleBin: getIsRecycleBinFolder(state),
|
||||
progressData: getProgressData(state),
|
||||
primaryProgressData: getPrimaryProgressData(state),
|
||||
secondaryProgressData: getSecondaryProgressData(state),
|
||||
treeFolders: getTreeFolders(state),
|
||||
viewAs: getViewAs(state),
|
||||
isLoading: getIsLoading(state),
|
||||
homepage: getSettingsHomepage(state),
|
||||
dragging: getDragging(state),
|
||||
isLoaded: getIsLoaded(state),
|
||||
firstLoad: getFirstLoad(state),
|
||||
sharingPanelVisible: getSharePanelVisible(state),
|
||||
firstLoad: getFirstLoad(state),
|
||||
isHeaderVisible: getHeaderVisible(state),
|
||||
};
|
||||
|
@ -10,7 +10,8 @@ const { tablet, desktop } = utils.device;
|
||||
const { getSettings } = store.auth.selectors;
|
||||
|
||||
const StyledContainer = styled.div`
|
||||
display: flex;
|
||||
display: grid;
|
||||
grid-template-columns: auto 1fr auto auto;
|
||||
align-items: center;
|
||||
|
||||
.arrow-button {
|
||||
@ -24,14 +25,6 @@ const StyledContainer = styled.div`
|
||||
}
|
||||
}
|
||||
|
||||
@media ${desktop} {
|
||||
${(props) =>
|
||||
props.isHeaderVisible &&
|
||||
css`
|
||||
width: calc(100% + 76px);
|
||||
`}
|
||||
}
|
||||
|
||||
.group-button-menu-container {
|
||||
margin: 0 -16px;
|
||||
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
||||
@ -85,7 +78,7 @@ const SectionHeaderContent = (props) => {
|
||||
};
|
||||
|
||||
return (
|
||||
<StyledContainer isHeaderVisible={true}>
|
||||
<StyledContainer>
|
||||
<IconButton
|
||||
iconName="ArrowPathIcon"
|
||||
size="17"
|
||||
|
@ -140,6 +140,7 @@ class EmbeddingPanelComponent extends React.Component {
|
||||
size="16"
|
||||
iconName="ArrowPathIcon"
|
||||
onClick={this.onArrowClick}
|
||||
color="#A3A9AE"
|
||||
/>
|
||||
<Heading
|
||||
className="header_aside-panel-header"
|
||||
@ -150,61 +151,65 @@ class EmbeddingPanelComponent extends React.Component {
|
||||
</Heading>
|
||||
</StyledHeaderContent>
|
||||
<StyledBody size={size}>
|
||||
<Text className="embedding-panel_text">{t("Size")}:</Text>
|
||||
<div className="embedding-panel_links-container">
|
||||
<Link
|
||||
isHovered
|
||||
type="action"
|
||||
className="embedding-panel_link"
|
||||
onClick={this.onSelectSizeMiddle}
|
||||
>
|
||||
600 x 800 px
|
||||
</Link>
|
||||
<Link
|
||||
isHovered
|
||||
type="action"
|
||||
className="embedding-panel_link"
|
||||
onClick={this.onSelectSizeSmall}
|
||||
>
|
||||
400 x 600 px
|
||||
</Link>
|
||||
<Link
|
||||
isHovered
|
||||
type="action"
|
||||
className="embedding-panel_link"
|
||||
onClick={this.onSelectSizeAuto}
|
||||
>
|
||||
{t("Auto")}
|
||||
</Link>
|
||||
</div>
|
||||
<div className="embedding-panel_inputs-container">
|
||||
<div>
|
||||
<Text className="embedding-panel_text">{t("Width")}:</Text>
|
||||
<TextInput
|
||||
className="embedding-panel_input"
|
||||
value={widthValue}
|
||||
onChange={this.onChangeWidth}
|
||||
/>
|
||||
<div className="embedding-panel_body">
|
||||
<Text className="embedding-panel_text">{t("Size")}:</Text>
|
||||
<div className="embedding-panel_links-container">
|
||||
<Link
|
||||
isHovered
|
||||
type="action"
|
||||
className="embedding-panel_link"
|
||||
onClick={this.onSelectSizeMiddle}
|
||||
>
|
||||
600 x 800 px
|
||||
</Link>
|
||||
<Link
|
||||
isHovered
|
||||
type="action"
|
||||
className="embedding-panel_link"
|
||||
onClick={this.onSelectSizeSmall}
|
||||
>
|
||||
400 x 600 px
|
||||
</Link>
|
||||
<Link
|
||||
isHovered
|
||||
type="action"
|
||||
className="embedding-panel_link"
|
||||
onClick={this.onSelectSizeAuto}
|
||||
>
|
||||
{t("Auto")}
|
||||
</Link>
|
||||
</div>
|
||||
<div>
|
||||
<Text className="embedding-panel_text">{t("Height")}:</Text>
|
||||
<TextInput
|
||||
className="embedding-panel_input"
|
||||
value={heightValue}
|
||||
onChange={this.onChangeHeight}
|
||||
/>
|
||||
<div className="embedding-panel_inputs-container">
|
||||
<div>
|
||||
<Text className="embedding-panel_text">{t("Width")}:</Text>
|
||||
<TextInput
|
||||
className="embedding-panel_input"
|
||||
value={widthValue}
|
||||
onChange={this.onChangeWidth}
|
||||
/>
|
||||
</div>
|
||||
<div>
|
||||
<Text className="embedding-panel_text">{t("Height")}:</Text>
|
||||
<TextInput
|
||||
className="embedding-panel_input"
|
||||
value={heightValue}
|
||||
onChange={this.onChangeHeight}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div className="embedding-panel_code-container">
|
||||
<Text className="embedding-panel_text">
|
||||
{t("EmbedCode")}:
|
||||
</Text>
|
||||
<IconButton
|
||||
className="embedding-panel_copy-icon"
|
||||
size="16"
|
||||
iconName="CopyIcon"
|
||||
color="#333"
|
||||
onClick={this.onCopyLink}
|
||||
/>
|
||||
<Textarea color="#AEAEAE" isReadOnly value={link} />
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<Text className="embedding-panel_text">{t("EmbedCode")}:</Text>
|
||||
<IconButton
|
||||
className="embedding-panel_copy-icon"
|
||||
size="16"
|
||||
iconName="CopyIcon"
|
||||
color="#333"
|
||||
onClick={this.onCopyLink}
|
||||
/>
|
||||
<Textarea isReadOnly value={link} />
|
||||
</div>
|
||||
</StyledBody>
|
||||
</StyledContent>
|
||||
|
@ -236,13 +236,17 @@ class NewFilesPanelComponent extends React.Component {
|
||||
<Backdrop onClick={onClose} visible={visible} zIndex={zIndex} />
|
||||
<Aside className="header_aside-panel" visible={visible}>
|
||||
<StyledContent>
|
||||
<StyledHeaderContent className="files-operations-panel">
|
||||
<Heading size="medium" truncate>
|
||||
<StyledHeaderContent>
|
||||
<Heading
|
||||
className="files-operations-header"
|
||||
size="medium"
|
||||
truncate
|
||||
>
|
||||
{t("NewFiles")}
|
||||
</Heading>
|
||||
</StyledHeaderContent>
|
||||
<StyledBody className="files-operations-body">
|
||||
<RowContainer useReactWindow manualHeight="83vh">
|
||||
<RowContainer useReactWindow manualHeight="87vh">
|
||||
{files.map((file) => {
|
||||
const element = this.getItemIcon(file);
|
||||
return (
|
||||
|
@ -8,8 +8,8 @@ import { utils as commonUtils, toastr } from "asc-web-common";
|
||||
import { StyledAsidePanel } from "../StyledPanels";
|
||||
import TreeFolders from "../../Article/Body/TreeFolders";
|
||||
import {
|
||||
setProgressBarData,
|
||||
itemOperationToFolder
|
||||
setSecondaryProgressBarData,
|
||||
itemOperationToFolder,
|
||||
} from "../../../store/files/actions";
|
||||
import {
|
||||
getFilter,
|
||||
@ -39,10 +39,10 @@ class OperationsPanelComponent extends React.Component {
|
||||
t,
|
||||
isCopy,
|
||||
selection,
|
||||
setProgressBarData,
|
||||
setSecondaryProgressBarData,
|
||||
currentFolderId,
|
||||
onClose,
|
||||
itemOperationToFolder
|
||||
itemOperationToFolder,
|
||||
} = this.props;
|
||||
|
||||
const destFolderId = Number(e);
|
||||
@ -53,8 +53,7 @@ class OperationsPanelComponent extends React.Component {
|
||||
|
||||
if (currentFolderId === destFolderId) {
|
||||
return onClose();
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
for (let item of selection) {
|
||||
if (item.fileExst) {
|
||||
fileIds.push(item.id);
|
||||
@ -65,12 +64,21 @@ class OperationsPanelComponent extends React.Component {
|
||||
}
|
||||
}
|
||||
onClose();
|
||||
setProgressBarData({
|
||||
setSecondaryProgressBarData({
|
||||
icon: isCopy ? "duplicate" : "move",
|
||||
visible: true,
|
||||
percent: 0,
|
||||
label: isCopy ? t("CopyOperation") : t("MoveToOperation"),
|
||||
alert: false,
|
||||
});
|
||||
itemOperationToFolder(destFolderId, folderIds, fileIds, conflictResolveType, deleteAfter, isCopy)
|
||||
itemOperationToFolder(
|
||||
destFolderId,
|
||||
folderIds,
|
||||
fileIds,
|
||||
conflictResolveType,
|
||||
deleteAfter,
|
||||
isCopy
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
@ -83,7 +91,7 @@ class OperationsPanelComponent extends React.Component {
|
||||
isRecycleBin,
|
||||
visible,
|
||||
onClose,
|
||||
operationsFolders
|
||||
operationsFolders,
|
||||
} = this.props;
|
||||
const zIndex = 310;
|
||||
const expandedKeys = this.props.expandedKeys.map((item) => item.toString());
|
||||
@ -134,11 +142,11 @@ const mapStateToProps = (state) => {
|
||||
expandedKeys: getPathParts(state),
|
||||
currentFolderId: getSelectedFolderId(state),
|
||||
isRecycleBin: getIsRecycleBinFolder(state),
|
||||
operationsFolders: getOperationsFolders(state)
|
||||
operationsFolders: getOperationsFolders(state),
|
||||
};
|
||||
};
|
||||
|
||||
export default connect(mapStateToProps, {
|
||||
setProgressBarData,
|
||||
itemOperationToFolder
|
||||
setSecondaryProgressBarData,
|
||||
itemOperationToFolder,
|
||||
})(withRouter(OperationsPanel));
|
||||
|
@ -6,10 +6,10 @@ import {
|
||||
Text,
|
||||
Icons,
|
||||
DropDownItem,
|
||||
LinkWithDropdown,
|
||||
} from "asc-web-components";
|
||||
import { toastr } from "asc-web-common";
|
||||
import copy from "copy-to-clipboard";
|
||||
import LinkRow from "./linkRow";
|
||||
|
||||
const SharingRow = (props) => {
|
||||
const {
|
||||
@ -25,12 +25,14 @@ const SharingRow = (props) => {
|
||||
onCommentClick,
|
||||
onFormFillingClick,
|
||||
onDenyAccessClick,
|
||||
onFilterEditingClick,
|
||||
onRemoveUserClick,
|
||||
onShowEmbeddingPanel,
|
||||
onToggleLink,
|
||||
externalLinkData,
|
||||
} = props;
|
||||
|
||||
const linkVisible = selection && selection.length === 1 && item.shareLink;
|
||||
|
||||
const onCopyInternalLink = () => {
|
||||
const internalLink = selection.webUrl
|
||||
? selection.webUrl
|
||||
@ -39,7 +41,7 @@ const SharingRow = (props) => {
|
||||
toastr.success(t("LinkCopySuccess"));
|
||||
};
|
||||
|
||||
const advancedOptionsRender = () => (
|
||||
const advancedOptionsRender = (accessOptions) => (
|
||||
<>
|
||||
{accessOptions.includes("FullAccess") && (
|
||||
<DropDownItem
|
||||
@ -87,19 +89,31 @@ const SharingRow = (props) => {
|
||||
onClick={() => onDenyAccessClick(item)}
|
||||
/>
|
||||
)}
|
||||
{accessOptions.includes("FilterEditing") && (
|
||||
<DropDownItem
|
||||
label="Custom filter"
|
||||
icon="CustomFilterIcon"
|
||||
onClick={() => onFilterEditingClick(item)}
|
||||
/>
|
||||
)}
|
||||
</>
|
||||
);
|
||||
|
||||
const embeddedComponentRender = () => (
|
||||
const embeddedComponentRender = (
|
||||
accessOptions = this.props.accessOptions,
|
||||
item,
|
||||
isDisabled
|
||||
) => (
|
||||
<ComboBox
|
||||
advancedOptions={advancedOptionsRender()}
|
||||
advancedOptions={advancedOptionsRender(accessOptions)}
|
||||
options={[]}
|
||||
selectedOption={{ key: 0 }}
|
||||
size="content"
|
||||
className="panel_combo-box"
|
||||
scaled={false}
|
||||
directionX="left"
|
||||
//isDisabled={isDisabled}
|
||||
disableIconClick={false}
|
||||
isDisabled={isDisabled}
|
||||
>
|
||||
{React.createElement(Icons[item.rights.icon], {
|
||||
size: "medium",
|
||||
@ -127,51 +141,6 @@ const SharingRow = (props) => {
|
||||
const onShareFacebook = () => window.open(`https://www.facebook.com`);
|
||||
/*window.open(`https://www.facebook.com/dialog/feed?app_id=645528132139019&display=popup&link=${item.shareLink}`);*/
|
||||
|
||||
const options = [
|
||||
{
|
||||
key: 1,
|
||||
label: "Disabled",
|
||||
disabled: false,
|
||||
onClick: () => console.log("Disabled"),
|
||||
},
|
||||
{
|
||||
key: 2,
|
||||
label: "1 hour",
|
||||
disabled: false,
|
||||
onClick: () => console.log("1 hour"),
|
||||
},
|
||||
{
|
||||
key: 3,
|
||||
label: "1 day",
|
||||
disabled: false,
|
||||
onClick: () => console.log("1 day"),
|
||||
},
|
||||
{
|
||||
key: 4,
|
||||
label: "1 week",
|
||||
disabled: false,
|
||||
onClick: () => console.log("1 week"),
|
||||
},
|
||||
{
|
||||
key: 5,
|
||||
label: "1 month",
|
||||
disabled: false,
|
||||
onClick: () => console.log("1 month"),
|
||||
},
|
||||
{
|
||||
key: 6,
|
||||
label: "1 year",
|
||||
disabled: false,
|
||||
onClick: () => console.log("1 year"),
|
||||
},
|
||||
{
|
||||
key: 7,
|
||||
label: "Timeless",
|
||||
disabled: false,
|
||||
onClick: () => console.log("Timeless"),
|
||||
},
|
||||
];
|
||||
|
||||
const internalLinkData = [
|
||||
{
|
||||
key: "linkItem",
|
||||
@ -180,7 +149,7 @@ const SharingRow = (props) => {
|
||||
},
|
||||
];
|
||||
|
||||
const externalLinkData = [
|
||||
const externalLinkOptions = [
|
||||
{
|
||||
key: "linkItem_0",
|
||||
label: t("CopyExternalLink"),
|
||||
@ -221,54 +190,32 @@ const SharingRow = (props) => {
|
||||
},
|
||||
];
|
||||
|
||||
const linksFunction = (linkText, data) => (
|
||||
<Row
|
||||
key={`${linkText}-key_${index}`}
|
||||
//element={embeddedComponentRender(accessOptions, item)}
|
||||
element={
|
||||
<Icons.AccessEditIcon
|
||||
size="medium"
|
||||
className="sharing_panel-owner-icon"
|
||||
/>
|
||||
}
|
||||
contextButtonSpacerWidth="0px"
|
||||
>
|
||||
<>
|
||||
<LinkWithDropdown
|
||||
className="sharing_panel-link"
|
||||
color="black"
|
||||
dropdownType="alwaysDashed"
|
||||
data={data}
|
||||
fontSize="14px"
|
||||
fontWeight={600}
|
||||
>
|
||||
{t(linkText)}
|
||||
</LinkWithDropdown>
|
||||
{/*
|
||||
<ComboBox
|
||||
className="sharing_panel-link-combo-box"
|
||||
options={options}
|
||||
isDisabled={false}
|
||||
selectedOption={options[0]}
|
||||
dropDownMaxHeight={200}
|
||||
noBorder={false}
|
||||
scaled={false}
|
||||
scaledOptions
|
||||
size="content"
|
||||
onSelect={(option) => console.log("selected", option)}
|
||||
/>
|
||||
*/}
|
||||
</>
|
||||
</Row>
|
||||
);
|
||||
|
||||
//console.log("SharingRow render");
|
||||
return (
|
||||
<>
|
||||
{linkVisible && linksFunction("ExternalLink", externalLinkData)}
|
||||
{linkVisible && linksFunction("InternalLink", internalLinkData)}
|
||||
{linkVisible && (
|
||||
<>
|
||||
<LinkRow
|
||||
linkText="ExternalLink"
|
||||
options={externalLinkOptions}
|
||||
externalLinkData={externalLinkData}
|
||||
embeddedComponentRender={embeddedComponentRender}
|
||||
onToggleLink={onToggleLink}
|
||||
withToggle={true}
|
||||
{...props}
|
||||
/>
|
||||
<LinkRow
|
||||
linkText="InternalLink"
|
||||
options={internalLinkData}
|
||||
embeddedComponentRender={embeddedComponentRender}
|
||||
{...props}
|
||||
/>
|
||||
</>
|
||||
)}
|
||||
|
||||
{!item.shareLink && (
|
||||
<Row
|
||||
className="sharing-row"
|
||||
key={`internal-link-key_${index}`}
|
||||
element={
|
||||
item.rights.isOwner || item.id === isMyId ? (
|
||||
@ -293,10 +240,7 @@ const SharingRow = (props) => {
|
||||
</Text>
|
||||
)}
|
||||
{item.rights.isOwner ? (
|
||||
<Text
|
||||
className="sharing_panel-remove-icon"
|
||||
color="#A3A9AE"
|
||||
>
|
||||
<Text className="sharing_panel-remove-icon" color="#A3A9AE">
|
||||
{t("Owner")}
|
||||
</Text>
|
||||
) : item.id === isMyId ? (
|
||||
|
@ -1,5 +1,4 @@
|
||||
import React from "react";
|
||||
import PropTypes from "prop-types";
|
||||
import {
|
||||
Backdrop,
|
||||
Heading,
|
||||
@ -17,13 +16,22 @@ import { connect } from "react-redux";
|
||||
import { withRouter } from "react-router";
|
||||
import { withTranslation } from "react-i18next";
|
||||
import { utils as commonUtils, constants, toastr, store } from "asc-web-common";
|
||||
import { getShareUsers, setShareFiles } from "../../../store/files/actions";
|
||||
import { getAccessOption, getSelection } from "../../../store/files/selectors";
|
||||
import {
|
||||
getShareUsers,
|
||||
setShareFiles,
|
||||
setSharingPanelVisible,
|
||||
} from "../../../store/files/actions";
|
||||
import {
|
||||
getAccessOption,
|
||||
getExternalAccessOption,
|
||||
getSelection,
|
||||
getSharePanelVisible,
|
||||
} from "../../../store/files/selectors";
|
||||
import {
|
||||
StyledAsidePanel,
|
||||
StyledContent,
|
||||
StyledFooter,
|
||||
StyledSharingHeaderContent,
|
||||
StyledHeaderContent,
|
||||
StyledSharingBody,
|
||||
} from "../StyledPanels";
|
||||
import { AddUsersPanel, AddGroupsPanel, EmbeddingPanel } from "../index";
|
||||
@ -33,7 +41,6 @@ const i18n = createI18N({
|
||||
page: "SharingPanel",
|
||||
localesPath: "panels/SharingPanel",
|
||||
});
|
||||
|
||||
const { changeLanguage } = commonUtils;
|
||||
const { ShareAccessRights } = constants;
|
||||
const {
|
||||
@ -41,6 +48,8 @@ const {
|
||||
getSettingsCustomNamesGroupsCaption,
|
||||
} = store.auth.selectors;
|
||||
|
||||
const SharingBodyStyle = { height: `calc(100vh - 156px)` };
|
||||
|
||||
class SharingPanelComponent extends React.Component {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
@ -79,7 +88,20 @@ class SharingPanelComponent extends React.Component {
|
||||
this.setState({ showActionPanel: !this.state.showActionPanel });
|
||||
};
|
||||
|
||||
//onKeyClick = () => console.log("onKeyClick");
|
||||
onToggleLink = (item) => {
|
||||
const { shareDataItems } = this.state;
|
||||
|
||||
const rights =
|
||||
item.rights.accessNumber !== ShareAccessRights.DenyAccess
|
||||
? this.getItemAccess(ShareAccessRights.DenyAccess)
|
||||
: this.getItemAccess(ShareAccessRights.ReadOnly);
|
||||
const newDataItems = JSON.parse(JSON.stringify(shareDataItems));
|
||||
|
||||
newDataItems[0].rights = { ...rights };
|
||||
this.setState({
|
||||
shareDataItems: newDataItems,
|
||||
});
|
||||
};
|
||||
|
||||
onSaveClick = () => {
|
||||
const {
|
||||
@ -88,20 +110,31 @@ class SharingPanelComponent extends React.Component {
|
||||
message,
|
||||
shareDataItems,
|
||||
} = this.state;
|
||||
const { selectedItems, onClose } = this.props;
|
||||
const { selectedItems } = this.props;
|
||||
|
||||
const folderIds = [];
|
||||
const fileIds = [];
|
||||
|
||||
const share = [];
|
||||
|
||||
let externalAccess = null;
|
||||
|
||||
for (let item of shareDataItems) {
|
||||
const baseItem = baseShareData.find((x) => x.id === item.id);
|
||||
if (
|
||||
(baseItem && baseItem.rights.rights !== item.rights.rights) ||
|
||||
(baseItem &&
|
||||
baseItem.rights.rights !== item.rights.rights &&
|
||||
!item.shareLink) ||
|
||||
!baseItem
|
||||
) {
|
||||
share.push({ shareTo: item.id, access: item.rights.accessNumber });
|
||||
}
|
||||
|
||||
if (
|
||||
item.shareLink &&
|
||||
item.rights.accessNumber !== baseItem.rights.accessNumber
|
||||
) {
|
||||
externalAccess = item.rights.accessNumber;
|
||||
}
|
||||
}
|
||||
|
||||
for (let item of baseShareData) {
|
||||
@ -119,9 +152,16 @@ class SharingPanelComponent extends React.Component {
|
||||
}
|
||||
}
|
||||
|
||||
setShareFiles(folderIds, fileIds, share, isNotifyUsers, message)
|
||||
setShareFiles(
|
||||
folderIds,
|
||||
fileIds,
|
||||
share,
|
||||
isNotifyUsers,
|
||||
message,
|
||||
externalAccess
|
||||
)
|
||||
.catch((err) => toastr.error(err))
|
||||
.finally(() => onClose());
|
||||
.finally(() => this.onClose());
|
||||
};
|
||||
|
||||
onFullAccessClick = () => {
|
||||
@ -190,6 +230,17 @@ class SharingPanelComponent extends React.Component {
|
||||
});
|
||||
};
|
||||
|
||||
onFilterEditingClick = () => {
|
||||
this.setState({
|
||||
accessRight: {
|
||||
icon: "CustomFilterIcon",
|
||||
rights: "CustomFilter",
|
||||
accessNumber: ShareAccessRights.CustomFilter,
|
||||
isOwner: false,
|
||||
},
|
||||
});
|
||||
};
|
||||
|
||||
onNotifyUsersChange = () =>
|
||||
this.setState({ isNotifyUsers: !this.state.isNotifyUsers });
|
||||
|
||||
@ -259,6 +310,18 @@ class SharingPanelComponent extends React.Component {
|
||||
this.setState({ shareDataItems: newUsers });
|
||||
}
|
||||
};
|
||||
onFilterEditingItemClick = (item) => {
|
||||
const newUsers = this.state.shareDataItems;
|
||||
const elementIndex = newUsers.findIndex((x) => x.id === item.id);
|
||||
if (newUsers[elementIndex].rights.rights !== "CustomFilter") {
|
||||
newUsers[elementIndex].rights = {
|
||||
icon: "CustomFilterIcon",
|
||||
rights: "CustomFilter",
|
||||
accessNumber: ShareAccessRights.CustomFilter,
|
||||
};
|
||||
this.setState({ shareDataItems: newUsers });
|
||||
}
|
||||
};
|
||||
onDenyAccessItemClick = (item) => {
|
||||
const newUsers = this.state.shareDataItems;
|
||||
const elementIndex = newUsers.findIndex((x) => x.id === item.id);
|
||||
@ -282,17 +345,14 @@ class SharingPanelComponent extends React.Component {
|
||||
}
|
||||
};
|
||||
|
||||
getItemAccess = (item) => {
|
||||
getItemAccess = (accessType, isOwner = false) => {
|
||||
const fullAccessRights = {
|
||||
icon: "AccessEditIcon",
|
||||
rights: "FullAccess",
|
||||
accessNumber: ShareAccessRights.FullAccess,
|
||||
isOwner: item.isOwner,
|
||||
isOwner: isOwner,
|
||||
};
|
||||
if (item.sharedTo.shareLink) {
|
||||
return fullAccessRights;
|
||||
}
|
||||
switch (item.access) {
|
||||
switch (accessType) {
|
||||
case 1:
|
||||
return fullAccessRights;
|
||||
case 2:
|
||||
@ -330,19 +390,31 @@ class SharingPanelComponent extends React.Component {
|
||||
accessNumber: ShareAccessRights.FormFilling,
|
||||
isOwner: false,
|
||||
};
|
||||
case 8:
|
||||
return {
|
||||
icon: "CustomFilterIcon",
|
||||
rights: "CustomFilter",
|
||||
accessNumber: ShareAccessRights.CustomFilter,
|
||||
isOwner: false,
|
||||
};
|
||||
default:
|
||||
return;
|
||||
}
|
||||
};
|
||||
|
||||
getShareDataItems = (items) => {
|
||||
const {
|
||||
getAccessOption,
|
||||
getExternalAccessOption,
|
||||
selectedItems,
|
||||
} = this.props;
|
||||
let arrayItems = [];
|
||||
const newItems = [];
|
||||
let stash = [];
|
||||
|
||||
for (let array of items) {
|
||||
for (let item of array) {
|
||||
const rights = this.getItemAccess(item);
|
||||
const rights = this.getItemAccess(item.access, item.isOwner);
|
||||
|
||||
if (rights) {
|
||||
item.sharedTo = { ...item.sharedTo, ...{ rights } };
|
||||
@ -353,7 +425,6 @@ class SharingPanelComponent extends React.Component {
|
||||
newItems.push(stash);
|
||||
stash = [];
|
||||
}
|
||||
|
||||
stash = null;
|
||||
for (let item of arrayItems) {
|
||||
let length = newItems.length;
|
||||
@ -384,15 +455,25 @@ class SharingPanelComponent extends React.Component {
|
||||
}
|
||||
length--;
|
||||
}
|
||||
} else {
|
||||
const externalLinkAccess = items[0][0].access;
|
||||
item.access = externalLinkAccess;
|
||||
item.rights = this.getItemAccess(externalLinkAccess);
|
||||
}
|
||||
}
|
||||
|
||||
arrayItems = this.removeDuplicateShareData(arrayItems);
|
||||
const baseShareData = JSON.parse(JSON.stringify(arrayItems));
|
||||
|
||||
const accessOptions = getAccessOption(this.props.selectedItems);
|
||||
const accessOptions = getAccessOption(selectedItems);
|
||||
const externalAccessOptions = getExternalAccessOption(selectedItems);
|
||||
|
||||
return { baseShareData, shareDataItems: arrayItems, accessOptions };
|
||||
return {
|
||||
baseShareData,
|
||||
shareDataItems: arrayItems,
|
||||
accessOptions,
|
||||
externalAccessOptions,
|
||||
};
|
||||
};
|
||||
|
||||
removeDuplicateShareData = (shareDataItems) => {
|
||||
@ -461,7 +542,8 @@ class SharingPanelComponent extends React.Component {
|
||||
|
||||
setShareDataItems = (shareDataItems) => this.setState({ shareDataItems });
|
||||
|
||||
onClose = () => this.setState({ showPanel: false });
|
||||
onClose = () =>
|
||||
this.props.setSharingPanelVisible(!this.props.sharingPanelVisible);
|
||||
|
||||
componentDidMount() {
|
||||
this.getShareData();
|
||||
@ -481,7 +563,7 @@ class SharingPanelComponent extends React.Component {
|
||||
} = this.state;
|
||||
if (showAddUsersPanel || showEmbeddingPanel || showAddGroupsPanel) return;
|
||||
if (event.key === "Esc" || event.key === "Escape") {
|
||||
this.props.onClose();
|
||||
this.onClose();
|
||||
}
|
||||
};
|
||||
|
||||
@ -490,7 +572,7 @@ class SharingPanelComponent extends React.Component {
|
||||
this.state.showPanel !== prevState.showPanel &&
|
||||
this.state.showPanel === false
|
||||
) {
|
||||
this.props.onClose();
|
||||
this.onClose();
|
||||
}
|
||||
|
||||
if (this.state.message === prevState.message) {
|
||||
@ -513,6 +595,7 @@ class SharingPanelComponent extends React.Component {
|
||||
shareLink,
|
||||
showPanel,
|
||||
accessOptions,
|
||||
externalAccessOptions,
|
||||
} = this.state;
|
||||
|
||||
const visible = showPanel;
|
||||
@ -566,6 +649,13 @@ class SharingPanelComponent extends React.Component {
|
||||
onClick={this.onDenyAccessClick}
|
||||
/>
|
||||
)}
|
||||
{accessOptions.includes("FilterEditing") && (
|
||||
<DropDownItem
|
||||
label="Custom filter"
|
||||
icon="CustomFilterIcon"
|
||||
onClick={this.onFilterEditingClick}
|
||||
/>
|
||||
)}
|
||||
</>
|
||||
);
|
||||
|
||||
@ -578,6 +668,7 @@ class SharingPanelComponent extends React.Component {
|
||||
className="panel_combo-box add-groups"
|
||||
scaled={false}
|
||||
directionX="right"
|
||||
disableIconClick={false}
|
||||
//isDisabled={isDisabled}
|
||||
>
|
||||
{React.createElement(Icons[accessRight.icon], {
|
||||
@ -593,7 +684,7 @@ class SharingPanelComponent extends React.Component {
|
||||
<Backdrop onClick={this.onClose} visible={visible} zIndex={zIndex} />
|
||||
<Aside className="header_aside-panel" visible={visible}>
|
||||
<StyledContent>
|
||||
<StyledSharingHeaderContent>
|
||||
<StyledHeaderContent>
|
||||
<Heading className="sharing_panel-header" size="medium" truncate>
|
||||
{t("SharingSettingsTitle")}
|
||||
</Heading>
|
||||
@ -631,12 +722,13 @@ class SharingPanelComponent extends React.Component {
|
||||
onClick={this.onKeyClick}
|
||||
/>*/}
|
||||
</div>
|
||||
</StyledSharingHeaderContent>
|
||||
</StyledHeaderContent>
|
||||
<StyledSharingBody
|
||||
ref={this.scrollRef}
|
||||
stype="mediumBlack"
|
||||
style={{ height: `calc(100vh - 157px)` }}
|
||||
style={SharingBodyStyle}
|
||||
>
|
||||
{" "}
|
||||
{shareDataItems.map((item, index) => (
|
||||
<SharingRow
|
||||
key={index}
|
||||
@ -646,14 +738,17 @@ class SharingPanelComponent extends React.Component {
|
||||
index={index}
|
||||
isMyId={isMyId}
|
||||
accessOptions={accessOptions}
|
||||
externalAccessOptions={externalAccessOptions}
|
||||
onFullAccessClick={this.onFullAccessItemClick}
|
||||
onReadOnlyClick={this.onReadOnlyItemClick}
|
||||
onReviewClick={this.onReviewItemClick}
|
||||
onCommentClick={this.onCommentItemClick}
|
||||
onFormFillingClick={this.onFormFillingItemClick}
|
||||
onFilterEditingClick={this.onFilterEditingItemClick}
|
||||
onDenyAccessClick={this.onDenyAccessItemClick}
|
||||
onRemoveUserClick={this.onRemoveUserItemClick}
|
||||
onShowEmbeddingPanel={this.onShowEmbeddingPanel}
|
||||
onToggleLink={this.onToggleLink}
|
||||
/>
|
||||
))}
|
||||
{isNotifyUsers && (
|
||||
@ -722,11 +817,6 @@ class SharingPanelComponent extends React.Component {
|
||||
}
|
||||
}
|
||||
|
||||
SharingPanelComponent.propTypes = {
|
||||
onClose: PropTypes.func,
|
||||
visible: PropTypes.bool,
|
||||
};
|
||||
|
||||
const SharingPanelContainerTranslated = withTranslation()(
|
||||
SharingPanelComponent
|
||||
);
|
||||
@ -737,10 +827,16 @@ const SharingPanel = (props) => (
|
||||
|
||||
const mapStateToProps = (state) => {
|
||||
return {
|
||||
getAccessOption: (selectedItems) => getAccessOption(state, selectedItems),
|
||||
getExternalAccessOption: (selectedItems) =>
|
||||
getExternalAccessOption(state, selectedItems),
|
||||
isMyId: getCurrentUserId(state),
|
||||
selectedItems: getSelection(state),
|
||||
groupsCaption: getSettingsCustomNamesGroupsCaption(state),
|
||||
sharingPanelVisible: getSharePanelVisible(state),
|
||||
};
|
||||
};
|
||||
|
||||
export default connect(mapStateToProps)(withRouter(SharingPanel));
|
||||
export default connect(mapStateToProps, { setSharingPanelVisible })(
|
||||
withRouter(SharingPanel)
|
||||
);
|
||||
|
@ -0,0 +1,75 @@
|
||||
import React from "react";
|
||||
import { Row, LinkWithDropdown, ToggleButton, Icons } from "asc-web-components";
|
||||
import { StyledLinkRow } from "../StyledPanels";
|
||||
import { constants } from "asc-web-common";
|
||||
|
||||
const { ShareAccessRights } = constants;
|
||||
|
||||
class LinkRow extends React.Component {
|
||||
|
||||
onToggleButtonChange = () => {
|
||||
const { onToggleLink, item } = this.props;
|
||||
|
||||
onToggleLink(item);
|
||||
};
|
||||
|
||||
render() {
|
||||
const {
|
||||
linkText,
|
||||
options,
|
||||
index,
|
||||
t,
|
||||
embeddedComponentRender,
|
||||
externalAccessOptions,
|
||||
item,
|
||||
withToggle,
|
||||
} = this.props;
|
||||
|
||||
const isChecked = item.rights.accessNumber !== ShareAccessRights.DenyAccess;
|
||||
const isDisabled = withToggle ? !isChecked : false;
|
||||
|
||||
return (
|
||||
<StyledLinkRow withToggle={withToggle} isDisabled={isDisabled}>
|
||||
<Row
|
||||
className="link-row"
|
||||
key={`${linkText}-key_${index}`}
|
||||
element={
|
||||
withToggle ? (
|
||||
embeddedComponentRender(externalAccessOptions, item, isDisabled)
|
||||
) : (
|
||||
<Icons.AccessEditIcon
|
||||
size="medium"
|
||||
className="sharing_panel-owner-icon"
|
||||
/>
|
||||
)
|
||||
}
|
||||
contextButtonSpacerWidth="0px"
|
||||
>
|
||||
<>
|
||||
<LinkWithDropdown
|
||||
className="sharing_panel-link"
|
||||
color="#333333"
|
||||
dropdownType="alwaysDashed"
|
||||
data={options}
|
||||
fontSize="14px"
|
||||
fontWeight={600}
|
||||
isDisabled={isDisabled}
|
||||
>
|
||||
{t(linkText)}
|
||||
</LinkWithDropdown>
|
||||
{withToggle && (
|
||||
<div>
|
||||
<ToggleButton
|
||||
isChecked={isChecked}
|
||||
onChange={this.onToggleButtonChange}
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
</>
|
||||
</Row>
|
||||
</StyledLinkRow>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export default LinkRow;
|
@ -25,6 +25,14 @@ const PanelStyles = css`
|
||||
margin: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.footer {
|
||||
padding: 16px 0;
|
||||
width: calc(100% - 32px);
|
||||
margin: auto;
|
||||
left: 0;
|
||||
right: 0;
|
||||
}
|
||||
`;
|
||||
|
||||
const StyledAsidePanel = styled.div`
|
||||
@ -32,6 +40,7 @@ const StyledAsidePanel = styled.div`
|
||||
.sharing_panel-header {
|
||||
font-weight: 700;
|
||||
margin: 14px 0;
|
||||
padding-right: 10px;
|
||||
}
|
||||
.modal-dialog-aside {
|
||||
padding: 0;
|
||||
@ -108,11 +117,6 @@ const StyledContent = styled.div`
|
||||
position: relative;
|
||||
width: 100%;
|
||||
background-color: #fff;
|
||||
padding: 0 16px;
|
||||
|
||||
.files-operations-panel {
|
||||
border-bottom: 1px solid #dee2e6;
|
||||
}
|
||||
|
||||
.header_aside-panel-header {
|
||||
max-width: 500px;
|
||||
@ -129,6 +133,34 @@ const StyledContent = styled.div`
|
||||
const StyledHeaderContent = styled.div`
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 0 16px;
|
||||
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
padding: 0 16px;
|
||||
|
||||
.sharing_panel-icons-container {
|
||||
display: flex;
|
||||
margin-left: auto;
|
||||
|
||||
.sharing_panel-drop-down-wrapper {
|
||||
position: relative;
|
||||
|
||||
.sharing_panel-drop-down {
|
||||
padding: 4px 0;
|
||||
}
|
||||
.sharing_panel-plus-icon {
|
||||
//margin-right: 12px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.files-operations-header,
|
||||
.sharing_panel-header {
|
||||
font-weight: 700;
|
||||
margin: 14px 0;
|
||||
}
|
||||
`;
|
||||
|
||||
const StyledBody = styled.div`
|
||||
@ -136,13 +168,19 @@ const StyledBody = styled.div`
|
||||
padding: 0 16px;
|
||||
}
|
||||
|
||||
.embedding-panel_body {
|
||||
padding: 0 16px;
|
||||
}
|
||||
|
||||
.selector-wrapper {
|
||||
position: fixed;
|
||||
height: 94%;
|
||||
height: calc(100% - 57px);
|
||||
width: 100%;
|
||||
|
||||
.column-options {
|
||||
padding: 0 0 16px 0;
|
||||
width: 470px;
|
||||
padding: 0px 16px;
|
||||
padding-bottom: 16px;
|
||||
width: 100%;
|
||||
|
||||
.header-options {
|
||||
.combo-button-label {
|
||||
@ -164,20 +202,10 @@ const StyledBody = styled.div`
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 550px) {
|
||||
width: 320px;
|
||||
padding: 0 28px 16px 0;
|
||||
}
|
||||
|
||||
.body-options {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
.footer {
|
||||
@media (max-width: 550px) {
|
||||
padding: 16px 28px 16px 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.embedding-panel_links-container {
|
||||
@ -200,6 +228,10 @@ const StyledBody = styled.div`
|
||||
}
|
||||
}
|
||||
|
||||
.embedding-panel_code-container {
|
||||
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
||||
}
|
||||
|
||||
.embedding-panel_text {
|
||||
padding: 8px 0 4px 0;
|
||||
}
|
||||
@ -212,36 +244,19 @@ const StyledBody = styled.div`
|
||||
}
|
||||
`;
|
||||
|
||||
const StyledSharingHeaderContent = styled.div`
|
||||
display: flex;
|
||||
align-items: center;
|
||||
border-bottom: 1px solid #dee2e6;
|
||||
|
||||
.sharing_panel-icons-container {
|
||||
display: flex;
|
||||
margin-left: auto;
|
||||
|
||||
.sharing_panel-drop-down-wrapper {
|
||||
position: relative;
|
||||
|
||||
.sharing_panel-drop-down {
|
||||
padding: 4px 0;
|
||||
}
|
||||
.sharing_panel-plus-icon {
|
||||
//margin-right: 12px;
|
||||
}
|
||||
}
|
||||
}
|
||||
`;
|
||||
|
||||
const StyledSharingBody = styled(Scrollbar)`
|
||||
position: relative;
|
||||
padding: 16px 0;
|
||||
|
||||
.row_content {
|
||||
overflow: visible;
|
||||
}
|
||||
|
||||
.sharing-row {
|
||||
margin: 0 16px;
|
||||
width: calc(100% - 16px);
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.nav-thumb-vertical {
|
||||
opacity: 0;
|
||||
transition: opacity 200ms ease;
|
||||
@ -291,7 +306,7 @@ const StyledSharingBody = styled(Scrollbar)`
|
||||
}
|
||||
|
||||
.sharing_panel-owner-icon {
|
||||
padding-right: 12px;
|
||||
padding-right: 19px;
|
||||
}
|
||||
|
||||
.sharing_panel-remove-icon {
|
||||
@ -326,6 +341,9 @@ const StyledSharingBody = styled(Scrollbar)`
|
||||
position: fixed;
|
||||
bottom: 70px;
|
||||
width: 94%;
|
||||
left: 0;
|
||||
right: 0;
|
||||
margin: auto;
|
||||
}
|
||||
`;
|
||||
|
||||
@ -335,8 +353,12 @@ const StyledFooter = styled.div`
|
||||
bottom: 0;
|
||||
padding: 16px 0;
|
||||
width: calc(100% - 32px);
|
||||
margin: auto;
|
||||
left: 0;
|
||||
right: 0;
|
||||
background-color: #fff;
|
||||
border-top: 1px solid #eceef1;
|
||||
box-sizing: border-box;
|
||||
|
||||
.sharing_panel-checkbox {
|
||||
span {
|
||||
@ -350,11 +372,32 @@ const StyledFooter = styled.div`
|
||||
|
||||
.sharing_panel-button {
|
||||
margin-left: auto;
|
||||
padding: 8px 27px;
|
||||
}
|
||||
`;
|
||||
|
||||
const StyledLinkRow = styled.div`
|
||||
width: calc(100% + 16px);
|
||||
padding: 0 16px;
|
||||
box-sizing: border-box;
|
||||
background-color: #f8f9f9;
|
||||
|
||||
.sharing-access-combo-box-icon {
|
||||
path {
|
||||
fill: ${(props) => (props.isDisabled ? "#D0D5DA" : "#a3a9ae")};
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 550px) {
|
||||
width: 90%;
|
||||
.link-row {
|
||||
${(props) => !props.withToggle && "border-bottom:none;"}
|
||||
}
|
||||
.row_content {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 28px;
|
||||
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
||||
}
|
||||
|
||||
.combo-button {
|
||||
background: transparent;
|
||||
}
|
||||
`;
|
||||
|
||||
@ -366,7 +409,7 @@ export {
|
||||
StyledContent,
|
||||
StyledHeaderContent,
|
||||
StyledBody,
|
||||
StyledSharingHeaderContent,
|
||||
StyledSharingBody,
|
||||
StyledFooter,
|
||||
StyledLinkRow,
|
||||
};
|
||||
|
@ -10,3 +10,4 @@ export const PAGE = "page";
|
||||
export const PAGE_COUNT = "count";
|
||||
export const FOLDER = "folder";
|
||||
export const PREVIEW = "preview";
|
||||
export const TIMEOUT = 5000;
|
||||
|
@ -9,10 +9,7 @@ import "./custom.scss";
|
||||
import App from "./App";
|
||||
|
||||
import * as serviceWorker from "./serviceWorker";
|
||||
import { ErrorBoundary, utils } from "asc-web-common";
|
||||
const { redirectToDefaultPage } = utils;
|
||||
|
||||
redirectToDefaultPage();
|
||||
import { ErrorBoundary } from "asc-web-common";
|
||||
|
||||
ReactDOM.render(
|
||||
<Provider store={store}>
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -16,8 +16,10 @@ import {
|
||||
SET_DRAGGING,
|
||||
SET_DRAG_ITEM,
|
||||
SET_MEDIA_VIEWER_VISIBLE,
|
||||
SET_PROGRESS_BAR_DATA,
|
||||
SET_PRIMARY_PROGRESS_BAR_DATA,
|
||||
SET_SECONDARY_PROGRESS_BAR_DATA,
|
||||
SET_CONVERT_DIALOG_VISIBLE,
|
||||
SET_SHARING_PANEL_VISIBLE,
|
||||
SET_UPDATE_TREE,
|
||||
SET_NEW_ROW_ITEMS,
|
||||
SET_SELECTED_NODE,
|
||||
@ -49,8 +51,22 @@ const initialState = {
|
||||
dragging: false,
|
||||
dragItem: null,
|
||||
mediaViewerData: { visible: false, id: null },
|
||||
progressData: { percent: 0, label: "", visible: false },
|
||||
primaryProgressData: {
|
||||
percent: 0,
|
||||
label: "",
|
||||
visible: false,
|
||||
icon: "upload",
|
||||
alert: false,
|
||||
},
|
||||
secondaryProgressData: {
|
||||
percent: 0,
|
||||
label: "",
|
||||
visible: false,
|
||||
icon: "trash",
|
||||
alert: false,
|
||||
},
|
||||
convertDialogVisible: false,
|
||||
sharingPanelVisible: false,
|
||||
updateTree: false,
|
||||
newRowItems: [],
|
||||
selectedTreeNode: [],
|
||||
@ -459,14 +475,22 @@ const filesReducer = (state = initialState, action) => {
|
||||
return Object.assign({}, state, {
|
||||
mediaViewerData: action.mediaViewerData,
|
||||
});
|
||||
case SET_PROGRESS_BAR_DATA:
|
||||
case SET_PRIMARY_PROGRESS_BAR_DATA:
|
||||
return Object.assign({}, state, {
|
||||
progressData: action.progressData,
|
||||
primaryProgressData: action.primaryProgressData,
|
||||
});
|
||||
case SET_SECONDARY_PROGRESS_BAR_DATA:
|
||||
return Object.assign({}, state, {
|
||||
secondaryProgressData: action.secondaryProgressData,
|
||||
});
|
||||
case SET_CONVERT_DIALOG_VISIBLE:
|
||||
return Object.assign({}, state, {
|
||||
convertDialogVisible: action.convertDialogVisible,
|
||||
});
|
||||
case SET_SHARING_PANEL_VISIBLE:
|
||||
return Object.assign({}, state, {
|
||||
sharingPanelVisible: action.sharingPanelVisible,
|
||||
});
|
||||
case SET_UPDATE_TREE:
|
||||
return Object.assign({}, state, {
|
||||
updateTree: action.updateTree,
|
||||
|
@ -22,6 +22,22 @@ export const getEditedFormats = (state) => {
|
||||
return state.files.docservice.editedDocs;
|
||||
};
|
||||
|
||||
export const getCommentedFormats = (state) => {
|
||||
return state.files.docservice.commentedDocs;
|
||||
};
|
||||
|
||||
export const getReviewedFormats = (state) => {
|
||||
return state.files.docservice.reviewedDocs;
|
||||
};
|
||||
|
||||
export const getWebFilterFormats = (state) => {
|
||||
return state.files.docservice.customfilterDocs;
|
||||
};
|
||||
|
||||
export const getFormFillingFormats = (state) => {
|
||||
return state.files.docservice.formfillingDocs;
|
||||
};
|
||||
|
||||
export const getConvertedFormats = (state) => {
|
||||
return state.files.docservice.convertDocs;
|
||||
};
|
||||
@ -68,6 +84,29 @@ export const canWebEdit = (extension) => {
|
||||
});
|
||||
};
|
||||
|
||||
export const canWebComment = (extension) => {
|
||||
return createSelector(getCommentedFormats, (formats) => {
|
||||
return presentInArray(formats, extension);
|
||||
});
|
||||
};
|
||||
|
||||
export const canWebReview = (extension) => {
|
||||
return createSelector(getReviewedFormats, (formats) => {
|
||||
return presentInArray(formats, extension);
|
||||
});
|
||||
};
|
||||
|
||||
export const canWebFilterEditing = (extension) => {
|
||||
return createSelector(getWebFilterFormats, (formats) => {
|
||||
return presentInArray(formats, extension);
|
||||
});
|
||||
};
|
||||
export const canFormFillingDocs = (extension) => {
|
||||
return createSelector(getFormFillingFormats, (formats) => {
|
||||
return presentInArray(formats, extension);
|
||||
});
|
||||
};
|
||||
|
||||
export const canConvert = (extension) => {
|
||||
return createSelector(getConvertedFormats, (formats) => {
|
||||
return presentInArray(formats, extension);
|
||||
@ -373,29 +412,36 @@ export const isCanBeDeleted = createSelector(
|
||||
);
|
||||
|
||||
//TODO: Get the whole list of extensions
|
||||
export const getAccessOption = (selection) => {
|
||||
const isFolder = selection.find((x) => x.fileExst === undefined);
|
||||
const isMedia = selection.find(
|
||||
(x) => isSound(x.fileExst) || isVideo(x.fileExst)
|
||||
export const getAccessOption = (state, selection) => {
|
||||
return getOptions(state, selection);
|
||||
};
|
||||
|
||||
export const getExternalAccessOption = (state, selection) => {
|
||||
return getOptions(state, selection, true);
|
||||
};
|
||||
|
||||
const getOptions = (state, selection, externalAccess = false) => {
|
||||
const webEdit = selection.find((x) => canWebEdit(x.fileExst)(state));
|
||||
const webComment = selection.find((x) => canWebComment(x.fileExst)(state));
|
||||
const webReview = selection.find((x) => canWebReview(x.fileExst)(state));
|
||||
const formFillingDocs = selection.find((x) =>
|
||||
canFormFillingDocs(x.fileExst)(state)
|
||||
);
|
||||
const isPresentationOrTable = selection.find(
|
||||
(x) => isSpreadsheet(x.fileExst) || isPresentation(x.fileExst)
|
||||
const webFilter = selection.find((x) =>
|
||||
canWebFilterEditing(x.fileExst)(state)
|
||||
);
|
||||
|
||||
if (isFolder || isMedia) {
|
||||
return ["FullAccess", "ReadOnly", "DenyAccess"];
|
||||
} else if (isPresentationOrTable) {
|
||||
return ["FullAccess", "ReadOnly", "DenyAccess", "Comment"];
|
||||
} else {
|
||||
return [
|
||||
"FullAccess",
|
||||
"ReadOnly",
|
||||
"DenyAccess",
|
||||
"Comment",
|
||||
"Review",
|
||||
"FormFilling",
|
||||
];
|
||||
}
|
||||
let AccessOptions = [];
|
||||
|
||||
if (webEdit || !externalAccess) AccessOptions.push("FullAccess");
|
||||
|
||||
AccessOptions.push("ReadOnly", "DenyAccess");
|
||||
|
||||
if (webComment) AccessOptions.push("Comment");
|
||||
if (webReview) AccessOptions.push("Review");
|
||||
if (formFillingDocs) AccessOptions.push("FormFilling");
|
||||
if (webFilter) AccessOptions.push("FilterEditing");
|
||||
return AccessOptions;
|
||||
};
|
||||
|
||||
export const getFolderIcon = (providerKey, size = 32) => {
|
||||
@ -919,8 +965,12 @@ export const getConvertDialogVisible = (state) => {
|
||||
return state.files.convertDialogVisible;
|
||||
};
|
||||
|
||||
export const getProgressData = (state) => {
|
||||
return state.files.progressData;
|
||||
export const getPrimaryProgressData = (state) => {
|
||||
return state.files.primaryProgressData;
|
||||
};
|
||||
|
||||
export const getSecondaryProgressData = (state) => {
|
||||
return state.files.secondaryProgressData;
|
||||
};
|
||||
|
||||
export const getUpdateTree = (state) => {
|
||||
@ -984,7 +1034,9 @@ export const getHeaderIndeterminate = createSelector(
|
||||
getSelectionLength,
|
||||
getItemsList,
|
||||
(headerVisible, selectionLength, items) => {
|
||||
return headerVisible && selectionLength < items.length;
|
||||
return headerVisible && selectionLength
|
||||
? selectionLength < items.length
|
||||
: false;
|
||||
}
|
||||
);
|
||||
|
||||
@ -1064,9 +1116,16 @@ export const getOnlyFoldersSelected = createSelector(
|
||||
}
|
||||
);
|
||||
|
||||
export const getAccessedSelected = createSelector(getSelection, (selection) => {
|
||||
return selection.every((x) => x.access === 1 || x.access === 0);
|
||||
});
|
||||
export const getAccessedSelected = createSelector(
|
||||
getSelection,
|
||||
getSelectionLength,
|
||||
(selection, selectionLength) => {
|
||||
return (
|
||||
selectionLength &&
|
||||
selection.every((x) => x.access === 1 || x.access === 0)
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
export const getOperationsFolders = createSelector(
|
||||
getTreeFolders,
|
||||
@ -1119,3 +1178,7 @@ export const getIconOfDraggedFile = (state) => {
|
||||
return;
|
||||
});
|
||||
};
|
||||
|
||||
export const getSharePanelVisible = (state) => {
|
||||
return state.files.sharingPanelVisible;
|
||||
};
|
||||
|
@ -52,42 +52,41 @@
|
||||
source-map "^0.5.0"
|
||||
|
||||
"@babel/core@^7.1.0", "@babel/core@^7.4.5", "@babel/core@^7.8.4":
|
||||
version "7.12.9"
|
||||
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.9.tgz#fd450c4ec10cdbb980e2928b7aa7a28484593fc8"
|
||||
integrity sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==
|
||||
version "7.12.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.10.tgz#b79a2e1b9f70ed3d84bbfb6d8c4ef825f606bccd"
|
||||
integrity sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w==
|
||||
dependencies:
|
||||
"@babel/code-frame" "^7.10.4"
|
||||
"@babel/generator" "^7.12.5"
|
||||
"@babel/generator" "^7.12.10"
|
||||
"@babel/helper-module-transforms" "^7.12.1"
|
||||
"@babel/helpers" "^7.12.5"
|
||||
"@babel/parser" "^7.12.7"
|
||||
"@babel/parser" "^7.12.10"
|
||||
"@babel/template" "^7.12.7"
|
||||
"@babel/traverse" "^7.12.9"
|
||||
"@babel/types" "^7.12.7"
|
||||
"@babel/traverse" "^7.12.10"
|
||||
"@babel/types" "^7.12.10"
|
||||
convert-source-map "^1.7.0"
|
||||
debug "^4.1.0"
|
||||
gensync "^1.0.0-beta.1"
|
||||
json5 "^2.1.2"
|
||||
lodash "^4.17.19"
|
||||
resolve "^1.3.2"
|
||||
semver "^5.4.1"
|
||||
source-map "^0.5.0"
|
||||
|
||||
"@babel/generator@^7.12.5", "@babel/generator@^7.4.0", "@babel/generator@^7.9.0":
|
||||
version "7.12.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.5.tgz#a2c50de5c8b6d708ab95be5e6053936c1884a4de"
|
||||
integrity sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A==
|
||||
"@babel/generator@^7.12.10", "@babel/generator@^7.4.0", "@babel/generator@^7.9.0":
|
||||
version "7.12.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.10.tgz#2b188fc329fb8e4f762181703beffc0fe6df3460"
|
||||
integrity sha512-6mCdfhWgmqLdtTkhXjnIz0LcdVCd26wS2JXRtj2XY0u5klDsXBREA/pG5NVOuVnF2LUrBGNFtQkIqqTbblg0ww==
|
||||
dependencies:
|
||||
"@babel/types" "^7.12.5"
|
||||
"@babel/types" "^7.12.10"
|
||||
jsesc "^2.5.1"
|
||||
source-map "^0.5.0"
|
||||
|
||||
"@babel/helper-annotate-as-pure@^7.0.0", "@babel/helper-annotate-as-pure@^7.10.4":
|
||||
version "7.10.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3"
|
||||
integrity sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==
|
||||
"@babel/helper-annotate-as-pure@^7.0.0", "@babel/helper-annotate-as-pure@^7.10.4", "@babel/helper-annotate-as-pure@^7.12.10":
|
||||
version "7.12.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.10.tgz#54ab9b000e60a93644ce17b3f37d313aaf1d115d"
|
||||
integrity sha512-XplmVbC1n+KY6jL8/fgLVXXUauDIB+lD5+GsQEh6F6GBF1dq1qy4DP4yXWzDKcoqXB3X58t61e85Fitoww4JVQ==
|
||||
dependencies:
|
||||
"@babel/types" "^7.10.4"
|
||||
"@babel/types" "^7.12.10"
|
||||
|
||||
"@babel/helper-builder-binary-assignment-operator-visitor@^7.10.4":
|
||||
version "7.10.4"
|
||||
@ -97,14 +96,14 @@
|
||||
"@babel/helper-explode-assignable-expression" "^7.10.4"
|
||||
"@babel/types" "^7.10.4"
|
||||
|
||||
"@babel/helper-builder-react-jsx-experimental@^7.12.4":
|
||||
version "7.12.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.12.4.tgz#55fc1ead5242caa0ca2875dcb8eed6d311e50f48"
|
||||
integrity sha512-AjEa0jrQqNk7eDQOo0pTfUOwQBMF+xVqrausQwT9/rTKy0g04ggFNaJpaE09IQMn9yExluigWMJcj0WC7bq+Og==
|
||||
"@babel/helper-builder-react-jsx-experimental@^7.12.10", "@babel/helper-builder-react-jsx-experimental@^7.12.4":
|
||||
version "7.12.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.12.10.tgz#a58cb96a793dc0fcd5c9ed3bb36d62fdc60534c2"
|
||||
integrity sha512-3Kcr2LGpL7CTRDTTYm1bzeor9qZbxbvU2AxsLA6mUG9gYarSfIKMK0UlU+azLWI+s0+BH768bwyaziWB2NOJlQ==
|
||||
dependencies:
|
||||
"@babel/helper-annotate-as-pure" "^7.10.4"
|
||||
"@babel/helper-module-imports" "^7.12.1"
|
||||
"@babel/types" "^7.12.1"
|
||||
"@babel/helper-annotate-as-pure" "^7.12.10"
|
||||
"@babel/helper-module-imports" "^7.12.5"
|
||||
"@babel/types" "^7.12.10"
|
||||
|
||||
"@babel/helper-builder-react-jsx@^7.10.4":
|
||||
version "7.10.4"
|
||||
@ -169,11 +168,11 @@
|
||||
"@babel/types" "^7.10.4"
|
||||
|
||||
"@babel/helper-get-function-arity@^7.10.4":
|
||||
version "7.10.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2"
|
||||
integrity sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==
|
||||
version "7.12.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz#b158817a3165b5faa2047825dfa61970ddcc16cf"
|
||||
integrity sha512-mm0n5BPjR06wh9mPQaDdXWDoll/j5UpCAPl1x8fS71GHm7HA6Ua2V4ylG1Ju8lvcTOietbPNNPaSilKj+pj+Ag==
|
||||
dependencies:
|
||||
"@babel/types" "^7.10.4"
|
||||
"@babel/types" "^7.12.10"
|
||||
|
||||
"@babel/helper-hoist-variables@^7.10.4":
|
||||
version "7.10.4"
|
||||
@ -212,11 +211,11 @@
|
||||
lodash "^4.17.19"
|
||||
|
||||
"@babel/helper-optimise-call-expression@^7.10.4":
|
||||
version "7.12.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.7.tgz#7f94ae5e08721a49467346aa04fd22f750033b9c"
|
||||
integrity sha512-I5xc9oSJ2h59OwyUqjv95HRyzxj53DAubUERgQMrpcCEYQyToeHA+NEcUEsVWB4j53RDeskeBJ0SgRAYHDBckw==
|
||||
version "7.12.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.10.tgz#94ca4e306ee11a7dd6e9f42823e2ac6b49881e2d"
|
||||
integrity sha512-4tpbU0SrSTjjt65UMWSrUOPZTsgvPgGG4S8QSTNHacKzpS51IVWGDj0yCwyeZND/i+LSN2g/O63jEXEWm49sYQ==
|
||||
dependencies:
|
||||
"@babel/types" "^7.12.7"
|
||||
"@babel/types" "^7.12.10"
|
||||
|
||||
"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
|
||||
version "7.10.4"
|
||||
@ -301,10 +300,10 @@
|
||||
chalk "^2.0.0"
|
||||
js-tokens "^4.0.0"
|
||||
|
||||
"@babel/parser@^7.1.0", "@babel/parser@^7.12.7", "@babel/parser@^7.4.3", "@babel/parser@^7.7.0", "@babel/parser@^7.9.0":
|
||||
version "7.12.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.7.tgz#fee7b39fe809d0e73e5b25eecaf5780ef3d73056"
|
||||
integrity sha512-oWR02Ubp4xTLCAqPRiNIuMVgNO5Aif/xpXtabhzW2HWUD47XJsAB4Zd/Rg30+XeQA3juXigV7hlquOTmwqLiwg==
|
||||
"@babel/parser@^7.1.0", "@babel/parser@^7.12.10", "@babel/parser@^7.12.7", "@babel/parser@^7.4.3", "@babel/parser@^7.7.0", "@babel/parser@^7.9.0":
|
||||
version "7.12.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.10.tgz#824600d59e96aea26a5a2af5a9d812af05c3ae81"
|
||||
integrity sha512-PJdRPwyoOqFAWfLytxrWwGrAxghCgh/yTNCYciOz8QgjflA7aZhECPZAa2VUedKg2+QMWkI0L9lynh2SNmNEgA==
|
||||
|
||||
"@babel/plugin-proposal-async-generator-functions@^7.12.1", "@babel/plugin-proposal-async-generator-functions@^7.8.3":
|
||||
version "7.12.1"
|
||||
@ -788,27 +787,27 @@
|
||||
"@babel/helper-plugin-utils" "^7.10.4"
|
||||
"@babel/plugin-syntax-jsx" "^7.12.1"
|
||||
|
||||
"@babel/plugin-transform-react-jsx-self@^7.12.1", "@babel/plugin-transform-react-jsx-self@^7.9.0":
|
||||
"@babel/plugin-transform-react-jsx-self@^7.9.0":
|
||||
version "7.12.1"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.1.tgz#ef43cbca2a14f1bd17807dbe4376ff89d714cf28"
|
||||
integrity sha512-FbpL0ieNWiiBB5tCldX17EtXgmzeEZjFrix72rQYeq9X6nUK38HCaxexzVQrZWXanxKJPKVVIU37gFjEQYkPkA==
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.10.4"
|
||||
|
||||
"@babel/plugin-transform-react-jsx-source@^7.12.1", "@babel/plugin-transform-react-jsx-source@^7.9.0":
|
||||
"@babel/plugin-transform-react-jsx-source@^7.9.0":
|
||||
version "7.12.1"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.12.1.tgz#d07de6863f468da0809edcf79a1aa8ce2a82a26b"
|
||||
integrity sha512-keQ5kBfjJNRc6zZN1/nVHCd6LLIHq4aUKcVnvE/2l+ZZROSbqoiGFRtT5t3Is89XJxBQaP7NLZX2jgGHdZvvFQ==
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.10.4"
|
||||
|
||||
"@babel/plugin-transform-react-jsx@^7.12.7", "@babel/plugin-transform-react-jsx@^7.9.1":
|
||||
version "7.12.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.7.tgz#8b14d45f6eccd41b7f924bcb65c021e9f0a06f7f"
|
||||
integrity sha512-YFlTi6MEsclFAPIDNZYiCRbneg1MFGao9pPG9uD5htwE0vDbPaMUMeYd6itWjw7K4kro4UbdQf3ljmFl9y48dQ==
|
||||
"@babel/plugin-transform-react-jsx@^7.12.10", "@babel/plugin-transform-react-jsx@^7.9.1":
|
||||
version "7.12.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.10.tgz#a7af3097c73479123594c8c8fe39545abebd44e3"
|
||||
integrity sha512-MM7/BC8QdHXM7Qc1wdnuk73R4gbuOpfrSUgfV/nODGc86sPY1tgmY2M9E9uAnf2e4DOIp8aKGWqgZfQxnTNGuw==
|
||||
dependencies:
|
||||
"@babel/helper-builder-react-jsx" "^7.10.4"
|
||||
"@babel/helper-builder-react-jsx-experimental" "^7.12.4"
|
||||
"@babel/helper-builder-react-jsx-experimental" "^7.12.10"
|
||||
"@babel/helper-plugin-utils" "^7.10.4"
|
||||
"@babel/plugin-syntax-jsx" "^7.12.1"
|
||||
|
||||
@ -873,10 +872,10 @@
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.10.4"
|
||||
|
||||
"@babel/plugin-transform-typeof-symbol@^7.12.1", "@babel/plugin-transform-typeof-symbol@^7.8.4":
|
||||
version "7.12.1"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz#9ca6be343d42512fbc2e68236a82ae64bc7af78a"
|
||||
integrity sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q==
|
||||
"@babel/plugin-transform-typeof-symbol@^7.12.10", "@babel/plugin-transform-typeof-symbol@^7.8.4":
|
||||
version "7.12.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.10.tgz#de01c4c8f96580bd00f183072b0d0ecdcf0dec4b"
|
||||
integrity sha512-JQ6H8Rnsogh//ijxspCjc21YPd3VLVoYtAwv3zQmqAt8YGYUtdo5usNhdl4b9/Vir2kPFZl6n1h0PfUz4hJhaA==
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.10.4"
|
||||
|
||||
@ -971,9 +970,9 @@
|
||||
semver "^5.5.0"
|
||||
|
||||
"@babel/preset-env@^7.4.5", "@babel/preset-env@^7.8.4":
|
||||
version "7.12.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.7.tgz#54ea21dbe92caf6f10cb1a0a576adc4ebf094b55"
|
||||
integrity sha512-OnNdfAr1FUQg7ksb7bmbKoby4qFOHw6DKWWUNB9KqnnCldxhxJlP+21dpyaWFmf2h0rTbOkXJtAGevY3XW1eew==
|
||||
version "7.12.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.10.tgz#ca981b95f641f2610531bd71948656306905e6ab"
|
||||
integrity sha512-Gz9hnBT/tGeTE2DBNDkD7BiWRELZt+8lSysHuDwmYXUIvtwZl0zI+D6mZgXZX0u8YBlLS4tmai9ONNY9tjRgRA==
|
||||
dependencies:
|
||||
"@babel/compat-data" "^7.12.7"
|
||||
"@babel/helper-compilation-targets" "^7.12.5"
|
||||
@ -1034,12 +1033,12 @@
|
||||
"@babel/plugin-transform-spread" "^7.12.1"
|
||||
"@babel/plugin-transform-sticky-regex" "^7.12.7"
|
||||
"@babel/plugin-transform-template-literals" "^7.12.1"
|
||||
"@babel/plugin-transform-typeof-symbol" "^7.12.1"
|
||||
"@babel/plugin-transform-typeof-symbol" "^7.12.10"
|
||||
"@babel/plugin-transform-unicode-escapes" "^7.12.1"
|
||||
"@babel/plugin-transform-unicode-regex" "^7.12.1"
|
||||
"@babel/preset-modules" "^0.1.3"
|
||||
"@babel/types" "^7.12.7"
|
||||
core-js-compat "^3.7.0"
|
||||
"@babel/types" "^7.12.10"
|
||||
core-js-compat "^3.8.0"
|
||||
semver "^5.5.0"
|
||||
|
||||
"@babel/preset-modules@^0.1.3":
|
||||
@ -1066,16 +1065,14 @@
|
||||
"@babel/plugin-transform-react-jsx-source" "^7.9.0"
|
||||
|
||||
"@babel/preset-react@^7.0.0":
|
||||
version "7.12.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.12.7.tgz#36d61d83223b07b6ac4ec55cf016abb0f70be83b"
|
||||
integrity sha512-wKeTdnGUP5AEYCYQIMeXMMwU7j+2opxrG0WzuZfxuuW9nhKvvALBjl67653CWamZJVefuJGI219G591RSldrqQ==
|
||||
version "7.12.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.12.10.tgz#4fed65f296cbb0f5fb09de6be8cddc85cc909be9"
|
||||
integrity sha512-vtQNjaHRl4DUpp+t+g4wvTHsLQuye+n0H/wsXIZRn69oz/fvNC7gQ4IK73zGJBaxvHoxElDvnYCthMcT7uzFoQ==
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.10.4"
|
||||
"@babel/plugin-transform-react-display-name" "^7.12.1"
|
||||
"@babel/plugin-transform-react-jsx" "^7.12.7"
|
||||
"@babel/plugin-transform-react-jsx" "^7.12.10"
|
||||
"@babel/plugin-transform-react-jsx-development" "^7.12.7"
|
||||
"@babel/plugin-transform-react-jsx-self" "^7.12.1"
|
||||
"@babel/plugin-transform-react-jsx-source" "^7.12.1"
|
||||
"@babel/plugin-transform-react-pure-annotations" "^7.12.1"
|
||||
|
||||
"@babel/preset-typescript@7.9.0":
|
||||
@ -1117,25 +1114,25 @@
|
||||
"@babel/parser" "^7.12.7"
|
||||
"@babel/types" "^7.12.7"
|
||||
|
||||
"@babel/traverse@^7.1.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.5", "@babel/traverse@^7.12.9", "@babel/traverse@^7.4.3", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.0", "@babel/traverse@^7.9.0":
|
||||
version "7.12.9"
|
||||
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.9.tgz#fad26c972eabbc11350e0b695978de6cc8e8596f"
|
||||
integrity sha512-iX9ajqnLdoU1s1nHt36JDI9KG4k+vmI8WgjK5d+aDTwQbL2fUnzedNedssA645Ede3PM2ma1n8Q4h2ohwXgMXw==
|
||||
"@babel/traverse@^7.1.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.10", "@babel/traverse@^7.12.5", "@babel/traverse@^7.4.3", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.0", "@babel/traverse@^7.9.0":
|
||||
version "7.12.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.10.tgz#2d1f4041e8bf42ea099e5b2dc48d6a594c00017a"
|
||||
integrity sha512-6aEtf0IeRgbYWzta29lePeYSk+YAFIC3kyqESeft8o5CkFlYIMX+EQDDWEiAQ9LHOA3d0oHdgrSsID/CKqXJlg==
|
||||
dependencies:
|
||||
"@babel/code-frame" "^7.10.4"
|
||||
"@babel/generator" "^7.12.5"
|
||||
"@babel/generator" "^7.12.10"
|
||||
"@babel/helper-function-name" "^7.10.4"
|
||||
"@babel/helper-split-export-declaration" "^7.11.0"
|
||||
"@babel/parser" "^7.12.7"
|
||||
"@babel/types" "^7.12.7"
|
||||
"@babel/parser" "^7.12.10"
|
||||
"@babel/types" "^7.12.10"
|
||||
debug "^4.1.0"
|
||||
globals "^11.1.0"
|
||||
lodash "^4.17.19"
|
||||
|
||||
"@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.11.0", "@babel/types@^7.12.1", "@babel/types@^7.12.5", "@babel/types@^7.12.7", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0", "@babel/types@^7.9.0":
|
||||
version "7.12.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.7.tgz#6039ff1e242640a29452c9ae572162ec9a8f5d13"
|
||||
integrity sha512-MNyI92qZq6jrQkXvtIiykvl4WtoRrVV9MPn+ZfsoEENjiWcBQ3ZSHrkxnJWgWtLX3XXqX5hrSQ+X69wkmesXuQ==
|
||||
"@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.11.0", "@babel/types@^7.12.1", "@babel/types@^7.12.10", "@babel/types@^7.12.5", "@babel/types@^7.12.7", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0", "@babel/types@^7.9.0":
|
||||
version "7.12.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.10.tgz#7965e4a7260b26f09c56bcfcb0498af1f6d9b260"
|
||||
integrity sha512-sf6wboJV5mGyip2hIpDSKsr80RszPinEFjsHTalMxZAZkoQ2/2yQzxlcFN52SJqsyPfLtPmenL4g2KB3KJXPDw==
|
||||
dependencies:
|
||||
"@babel/helper-validator-identifier" "^7.10.4"
|
||||
lodash "^4.17.19"
|
||||
@ -1547,9 +1544,9 @@
|
||||
"@babel/types" "^7.0.0"
|
||||
|
||||
"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6":
|
||||
version "7.0.16"
|
||||
resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.16.tgz#0bbbf70c7bc4193210dd27e252c51260a37cd6a7"
|
||||
integrity sha512-S63Dt4CZOkuTmpLGGWtT/mQdVORJOpx6SZWGVaP56dda/0Nx5nEe82K7/LAm8zYr6SfMq+1N2OreIOrHAx656w==
|
||||
version "7.11.0"
|
||||
resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.11.0.tgz#b9a1efa635201ba9bc850323a8793ee2d36c04a0"
|
||||
integrity sha512-kSjgDMZONiIfSH1Nxcr5JIRMwUetDki63FSQfpTCz8ogF3Ulqm8+mr5f78dUYs6vMiB6gBusQqfQmBvHZj/lwg==
|
||||
dependencies:
|
||||
"@babel/types" "^7.3.0"
|
||||
|
||||
@ -1607,9 +1604,9 @@
|
||||
integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==
|
||||
|
||||
"@types/node@*":
|
||||
version "14.14.10"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.10.tgz#5958a82e41863cfc71f2307b3748e3491ba03785"
|
||||
integrity sha512-J32dgx2hw8vXrSbu4ZlVhn1Nm3GbeCFNw2FWL8S5QKucHGY0cyNwjdQdO+KMBZ4wpmC7KhLCiNsdk1RFRIYUQQ==
|
||||
version "14.14.12"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.12.tgz#0b1d86f8c40141091285dea02e4940df73bba43f"
|
||||
integrity sha512-ASH8OPHMNlkdjrEdmoILmzFfsJICvhBsFfAum4aKZ/9U4B6M6tTmTPh+f3ttWdD74CEGV5XvXWkbyfSdXaTd7g==
|
||||
|
||||
"@types/parse-json@^4.0.0":
|
||||
version "4.0.0"
|
||||
@ -2166,7 +2163,7 @@ asap@~2.0.6:
|
||||
integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=
|
||||
|
||||
"asc-web-common@file:../../../packages/asc-web-common":
|
||||
version "1.0.281"
|
||||
version "1.0.289"
|
||||
dependencies:
|
||||
axios "^0.19.1"
|
||||
history "4.10.1"
|
||||
@ -2183,7 +2180,7 @@ asap@~2.0.6:
|
||||
sjcl "^1.0.8"
|
||||
|
||||
"asc-web-components@file:../../../packages/asc-web-components":
|
||||
version "1.0.488"
|
||||
version "1.0.492"
|
||||
dependencies:
|
||||
email-addresses "^3.1.0"
|
||||
html-to-react "^1.4.2"
|
||||
@ -2737,16 +2734,16 @@ browserslist@4.10.0:
|
||||
node-releases "^1.1.52"
|
||||
pkg-up "^3.1.0"
|
||||
|
||||
browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.14.7, browserslist@^4.6.2, browserslist@^4.6.4, browserslist@^4.9.1:
|
||||
version "4.14.7"
|
||||
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.7.tgz#c071c1b3622c1c2e790799a37bb09473a4351cb6"
|
||||
integrity sha512-BSVRLCeG3Xt/j/1cCGj1019Wbty0H+Yvu2AOuZSuoaUWn3RatbL33Cxk+Q4jRMRAbOm0p7SLravLjpnT6s0vzQ==
|
||||
browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.15.0, browserslist@^4.6.2, browserslist@^4.6.4, browserslist@^4.9.1:
|
||||
version "4.16.0"
|
||||
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.0.tgz#410277627500be3cb28a1bfe037586fbedf9488b"
|
||||
integrity sha512-/j6k8R0p3nxOC6kx5JGAxsnhc9ixaWJfYc+TNTzxg6+ARaESAvQGV7h0uNOB4t+pLQJZWzcrMxXOxjgsCj3dqQ==
|
||||
dependencies:
|
||||
caniuse-lite "^1.0.30001157"
|
||||
caniuse-lite "^1.0.30001165"
|
||||
colorette "^1.2.1"
|
||||
electron-to-chromium "^1.3.591"
|
||||
electron-to-chromium "^1.3.621"
|
||||
escalade "^3.1.1"
|
||||
node-releases "^1.1.66"
|
||||
node-releases "^1.1.67"
|
||||
|
||||
bser@2.1.1:
|
||||
version "2.1.1"
|
||||
@ -2897,12 +2894,12 @@ callsites@^3.0.0:
|
||||
integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
|
||||
|
||||
camel-case@^4.1.1:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.1.tgz#1fc41c854f00e2f7d0139dfeba1542d6896fe547"
|
||||
integrity sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q==
|
||||
version "4.1.2"
|
||||
resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a"
|
||||
integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==
|
||||
dependencies:
|
||||
pascal-case "^3.1.1"
|
||||
tslib "^1.10.0"
|
||||
pascal-case "^3.1.2"
|
||||
tslib "^2.0.3"
|
||||
|
||||
camelcase-keys@^2.0.0:
|
||||
version "2.1.0"
|
||||
@ -2942,10 +2939,10 @@ caniuse-api@^3.0.0:
|
||||
lodash.memoize "^4.1.2"
|
||||
lodash.uniq "^4.5.0"
|
||||
|
||||
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001035, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001157:
|
||||
version "1.0.30001162"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001162.tgz#9f83aad1f42539ce9aab58bb177598f2f8e22ec6"
|
||||
integrity sha512-E9FktFxaNnp4ky3ucIGzEXLM+Knzlpuq1oN1sFAU0KeayygabGTmOsndpo8QrL4D9pcThlf4D2pUKaDxPCUmVw==
|
||||
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001035, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001165:
|
||||
version "1.0.30001165"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001165.tgz#32955490d2f60290bb186bb754f2981917fa744f"
|
||||
integrity sha512-8cEsSMwXfx7lWSUMA2s08z9dIgsnR5NAqjXP23stdsU3AUWkCr/rr4s4OFtHXn5XXr6+7kam3QFVoYyXNPdJPA==
|
||||
|
||||
capture-exit@^2.0.0:
|
||||
version "2.0.0"
|
||||
@ -3412,18 +3409,18 @@ copy-webpack-plugin@^5.1.1:
|
||||
serialize-javascript "^4.0.0"
|
||||
webpack-log "^2.0.0"
|
||||
|
||||
core-js-compat@^3.6.2, core-js-compat@^3.7.0:
|
||||
version "3.8.0"
|
||||
resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.8.0.tgz#3248c6826f4006793bd637db608bca6e4cd688b1"
|
||||
integrity sha512-o9QKelQSxQMYWHXc/Gc4L8bx/4F7TTraE5rhuN8I7mKBt5dBIUpXpIR3omv70ebr8ST5R3PqbDQr+ZI3+Tt1FQ==
|
||||
core-js-compat@^3.6.2, core-js-compat@^3.8.0:
|
||||
version "3.8.1"
|
||||
resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.8.1.tgz#8d1ddd341d660ba6194cbe0ce60f4c794c87a36e"
|
||||
integrity sha512-a16TLmy9NVD1rkjUGbwuyWkiDoN0FDpAwrfLONvHFQx0D9k7J9y0srwMT8QP/Z6HE3MIFaVynEeYwZwPX1o5RQ==
|
||||
dependencies:
|
||||
browserslist "^4.14.7"
|
||||
browserslist "^4.15.0"
|
||||
semver "7.0.0"
|
||||
|
||||
core-js-pure@^3.0.0:
|
||||
version "3.8.0"
|
||||
resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.8.0.tgz#4cdd2eca37d49cda206b66e26204818dba77884a"
|
||||
integrity sha512-fRjhg3NeouotRoIV0L1FdchA6CK7ZD+lyINyMoz19SyV+ROpC4noS1xItWHFtwZdlqfMfVPJEyEGdfri2bD1pA==
|
||||
version "3.8.1"
|
||||
resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.8.1.tgz#23f84048f366fdfcf52d3fd1c68fec349177d119"
|
||||
integrity sha512-Se+LaxqXlVXGvmexKGPvnUIYC1jwXu1H6Pkyb3uBM5d8/NELMYCHs/4/roD7721NxrTLyv7e5nXd5/QLBO+10g==
|
||||
|
||||
core-js@^2.4.0, core-js@^2.6.4:
|
||||
version "2.6.12"
|
||||
@ -3431,9 +3428,9 @@ core-js@^2.4.0, core-js@^2.6.4:
|
||||
integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==
|
||||
|
||||
core-js@^3.5.0:
|
||||
version "3.8.0"
|
||||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.8.0.tgz#0fc2d4941cadf80538b030648bb64d230b4da0ce"
|
||||
integrity sha512-W2VYNB0nwQQE7tKS7HzXd7r2y/y2SVJl4ga6oH/dnaLFzM0o2lB2P3zCkWj5Wc/zyMYjtgd5Hmhk0ObkQFZOIA==
|
||||
version "3.8.1"
|
||||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.8.1.tgz#f51523668ac8a294d1285c3b9db44025fda66d47"
|
||||
integrity sha512-9Id2xHY1W7m8hCl8NkhQn5CufmF/WuR30BTRewvCXc1aZd3kMECwNZ69ndLbekKfakw9Rf2Xyc+QR6E7Gg+obg==
|
||||
|
||||
core-util-is@1.0.2, core-util-is@~1.0.0:
|
||||
version "1.0.2"
|
||||
@ -4107,12 +4104,12 @@ dom-serializer@0:
|
||||
entities "^2.0.0"
|
||||
|
||||
dom-serializer@^1.0.1:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.1.0.tgz#5f7c828f1bfc44887dc2a315ab5c45691d544b58"
|
||||
integrity sha512-ox7bvGXt2n+uLWtCRLybYx60IrOlWL/aCebWJk1T0d4m3y2tzf4U3ij9wBMUb6YJZpz06HCCYuyCDveE2xXmzQ==
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.2.0.tgz#3433d9136aeb3c627981daa385fc7f32d27c48f1"
|
||||
integrity sha512-n6kZFH/KlCrqs/1GHMOd5i2fd/beQHuehKdWvNNffbGHTr/almdhuVvTVFb3V7fglz+nC50fFusu3lY33h12pA==
|
||||
dependencies:
|
||||
domelementtype "^2.0.1"
|
||||
domhandler "^3.0.0"
|
||||
domhandler "^4.0.0"
|
||||
entities "^2.0.0"
|
||||
|
||||
domain-browser@^1.1.1:
|
||||
@ -4125,10 +4122,10 @@ domelementtype@1, domelementtype@^1.3.1:
|
||||
resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f"
|
||||
integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==
|
||||
|
||||
domelementtype@^2.0.1:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.2.tgz#f3b6e549201e46f588b59463dd77187131fe6971"
|
||||
integrity sha512-wFwTwCVebUrMgGeAwRL/NhZtHAUyT9n9yg4IMDwf10+6iCMxSkVq9MGCVEH+QZWo1nNidy8kNvwmv4zWHDTqvA==
|
||||
domelementtype@^2.0.1, domelementtype@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.1.0.tgz#a851c080a6d1c3d94344aed151d99f669edf585e"
|
||||
integrity sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==
|
||||
|
||||
domexception@^1.0.1:
|
||||
version "1.0.1"
|
||||
@ -4144,13 +4141,20 @@ domhandler@^2.3.0:
|
||||
dependencies:
|
||||
domelementtype "1"
|
||||
|
||||
domhandler@^3.0.0, domhandler@^3.3.0:
|
||||
domhandler@^3.3.0:
|
||||
version "3.3.0"
|
||||
resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-3.3.0.tgz#6db7ea46e4617eb15cf875df68b2b8524ce0037a"
|
||||
integrity sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==
|
||||
dependencies:
|
||||
domelementtype "^2.0.1"
|
||||
|
||||
domhandler@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.0.0.tgz#01ea7821de996d85f69029e81fa873c21833098e"
|
||||
integrity sha512-KPTbnGQ1JeEMQyO1iYXoagsI6so/C96HZiFyByU3T6iAzpXn8EGEvct6unm1ZGoed8ByO2oirxgwxBmqKF9haA==
|
||||
dependencies:
|
||||
domelementtype "^2.1.0"
|
||||
|
||||
domutils@1.5.1:
|
||||
version "1.5.1"
|
||||
resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf"
|
||||
@ -4168,21 +4172,21 @@ domutils@^1.5.1, domutils@^1.7.0:
|
||||
domelementtype "1"
|
||||
|
||||
domutils@^2.4.2:
|
||||
version "2.4.2"
|
||||
resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.4.2.tgz#7ee5be261944e1ad487d9aa0616720010123922b"
|
||||
integrity sha512-NKbgaM8ZJOecTZsIzW5gSuplsX2IWW2mIK7xVr8hTQF2v1CJWTmLZ1HOCh5sH+IzVPAGE5IucooOkvwBRAdowA==
|
||||
version "2.4.4"
|
||||
resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.4.4.tgz#282739c4b150d022d34699797369aad8d19bbbd3"
|
||||
integrity sha512-jBC0vOsECI4OMdD0GC9mGn7NXPLb+Qt6KW1YDQzeQYRUFKmNG8lh7mO5HiELfr+lLQE7loDVI4QcAxV80HS+RA==
|
||||
dependencies:
|
||||
dom-serializer "^1.0.1"
|
||||
domelementtype "^2.0.1"
|
||||
domhandler "^3.3.0"
|
||||
domhandler "^4.0.0"
|
||||
|
||||
dot-case@^3.0.3:
|
||||
version "3.0.3"
|
||||
resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.3.tgz#21d3b52efaaba2ea5fda875bb1aa8124521cf4aa"
|
||||
integrity sha512-7hwEmg6RiSQfm/GwPL4AAWXKy3YNNZA3oFv2Pdiey0mwkRCPZ9x6SZbkLcn8Ma5PYeVokzoD4Twv2n7LKp5WeA==
|
||||
dot-case@^3.0.4:
|
||||
version "3.0.4"
|
||||
resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751"
|
||||
integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==
|
||||
dependencies:
|
||||
no-case "^3.0.3"
|
||||
tslib "^1.10.0"
|
||||
no-case "^3.0.4"
|
||||
tslib "^2.0.3"
|
||||
|
||||
dot-prop@^5.2.0:
|
||||
version "5.3.0"
|
||||
@ -4234,10 +4238,10 @@ ejs@^2.6.1:
|
||||
resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba"
|
||||
integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==
|
||||
|
||||
electron-to-chromium@^1.3.378, electron-to-chromium@^1.3.591:
|
||||
version "1.3.610"
|
||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.610.tgz#1254eb394acd220a836ea1f203f8cded4e487052"
|
||||
integrity sha512-eFDC+yVQpEhtlapk4CYDPfV9ajF9cEof5TBcO49L1ETO+aYogrKWDmYpZyxBScMNe8Bo/gJamH4amQ4yyvXg4g==
|
||||
electron-to-chromium@^1.3.378, electron-to-chromium@^1.3.621:
|
||||
version "1.3.621"
|
||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.621.tgz#0bbe2100ef0b28f88d0b1101fbdf433312f69be0"
|
||||
integrity sha512-FeIuBzArONbAmKmZIsZIFGu/Gc9AVGlVeVbhCq+G2YIl6QkT0TDn2HKN/FMf1btXEB9kEmIuQf3/lBTVAbmFOg==
|
||||
|
||||
elliptic@^6.5.3:
|
||||
version "6.5.3"
|
||||
@ -4826,7 +4830,7 @@ extsprintf@^1.2.0:
|
||||
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
|
||||
integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=
|
||||
|
||||
fast-deep-equal@^3.1.1:
|
||||
fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
|
||||
version "3.1.3"
|
||||
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
|
||||
integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
|
||||
@ -5908,9 +5912,9 @@ inherits@2.0.3:
|
||||
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
|
||||
|
||||
ini@^1.3.5:
|
||||
version "1.3.5"
|
||||
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
|
||||
integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==
|
||||
version "1.3.7"
|
||||
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.7.tgz#a09363e1911972ea16d7a8851005d84cf09a9a84"
|
||||
integrity sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==
|
||||
|
||||
inquirer@7.0.4:
|
||||
version "7.0.4"
|
||||
@ -6014,9 +6018,11 @@ is-accessor-descriptor@^1.0.0:
|
||||
kind-of "^6.0.0"
|
||||
|
||||
is-arguments@^1.0.4:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3"
|
||||
integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9"
|
||||
integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==
|
||||
dependencies:
|
||||
call-bind "^1.0.0"
|
||||
|
||||
is-arrayish@^0.2.1:
|
||||
version "0.2.1"
|
||||
@ -6189,9 +6195,9 @@ is-module@^1.0.0:
|
||||
integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=
|
||||
|
||||
is-negative-zero@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.0.tgz#9553b121b0fac28869da9ed459e20c7543788461"
|
||||
integrity sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24"
|
||||
integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==
|
||||
|
||||
is-number@^3.0.0:
|
||||
version "3.0.0"
|
||||
@ -6799,9 +6805,9 @@ js-tokens@^3.0.2:
|
||||
integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls=
|
||||
|
||||
js-yaml@^3.13.1:
|
||||
version "3.14.0"
|
||||
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482"
|
||||
integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==
|
||||
version "3.14.1"
|
||||
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
|
||||
integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
|
||||
dependencies:
|
||||
argparse "^1.0.7"
|
||||
esprima "^4.0.0"
|
||||
@ -7232,12 +7238,12 @@ loud-rejection@^1.0.0:
|
||||
currently-unhandled "^0.4.1"
|
||||
signal-exit "^3.0.0"
|
||||
|
||||
lower-case@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.1.tgz#39eeb36e396115cc05e29422eaea9e692c9408c7"
|
||||
integrity sha512-LiWgfDLLb1dwbFQZsSglpRj+1ctGnayXz3Uv0/WO8n558JycT5fg6zkNcnW0G68Nn0aEldTFeEfmjCfmqry/rQ==
|
||||
lower-case@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28"
|
||||
integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==
|
||||
dependencies:
|
||||
tslib "^1.10.0"
|
||||
tslib "^2.0.3"
|
||||
|
||||
lru-cache@^4.0.1:
|
||||
version "4.1.5"
|
||||
@ -7254,6 +7260,13 @@ lru-cache@^5.1.1:
|
||||
dependencies:
|
||||
yallist "^3.0.2"
|
||||
|
||||
lru-cache@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
|
||||
integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
|
||||
dependencies:
|
||||
yallist "^4.0.0"
|
||||
|
||||
magic-string@^0.25.0, magic-string@^0.25.7:
|
||||
version "0.25.7"
|
||||
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051"
|
||||
@ -7598,11 +7611,16 @@ ms@2.1.1:
|
||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
|
||||
integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
|
||||
|
||||
ms@2.1.2, ms@^2.1.1:
|
||||
ms@2.1.2:
|
||||
version "2.1.2"
|
||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
|
||||
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
|
||||
|
||||
ms@^2.1.1:
|
||||
version "2.1.3"
|
||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
|
||||
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
|
||||
|
||||
multicast-dns-service-types@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901"
|
||||
@ -7668,13 +7686,13 @@ nice-try@^1.0.4:
|
||||
resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
|
||||
integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
|
||||
|
||||
no-case@^3.0.3:
|
||||
version "3.0.3"
|
||||
resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.3.tgz#c21b434c1ffe48b39087e86cfb4d2582e9df18f8"
|
||||
integrity sha512-ehY/mVQCf9BL0gKfsJBvFJen+1V//U+0HQMPrWct40ixE4jnv0bfvxDbWtAHL9EcaPEOJHVVYKoQn1TlZUB8Tw==
|
||||
no-case@^3.0.4:
|
||||
version "3.0.4"
|
||||
resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d"
|
||||
integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==
|
||||
dependencies:
|
||||
lower-case "^2.0.1"
|
||||
tslib "^1.10.0"
|
||||
lower-case "^2.0.2"
|
||||
tslib "^2.0.3"
|
||||
|
||||
node-forge@^0.10.0:
|
||||
version "0.10.0"
|
||||
@ -7749,7 +7767,7 @@ node-notifier@^5.4.2:
|
||||
shellwords "^0.1.1"
|
||||
which "^1.3.0"
|
||||
|
||||
node-releases@^1.1.52, node-releases@^1.1.66:
|
||||
node-releases@^1.1.52, node-releases@^1.1.67:
|
||||
version "1.1.67"
|
||||
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.67.tgz#28ebfcccd0baa6aad8e8d4d8fe4cbc49ae239c12"
|
||||
integrity sha512-V5QF9noGFl3EymEwUYzO+3NTDpGfQB4ve6Qfnzf3UNydMhjQRVPR1DZTuvWiLzaFJYw2fmDwAfnRNEVb64hSIg==
|
||||
@ -7890,9 +7908,9 @@ object-hash@^2.0.1:
|
||||
integrity sha512-JPKn0GMu+Fa3zt3Bmr66JhokJU5BaNBIh4ZeTlaCBzrBsOeXzwcKKAK1tbLiPKgvwmPXsDvvLHoWh5Bm7ofIYg==
|
||||
|
||||
object-inspect@^1.8.0:
|
||||
version "1.8.0"
|
||||
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0"
|
||||
integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==
|
||||
version "1.9.0"
|
||||
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a"
|
||||
integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==
|
||||
|
||||
object-is@^1.0.1:
|
||||
version "1.1.4"
|
||||
@ -8182,12 +8200,12 @@ parallel-transform@^1.1.0:
|
||||
readable-stream "^2.1.5"
|
||||
|
||||
param-case@^3.0.3:
|
||||
version "3.0.3"
|
||||
resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.3.tgz#4be41f8399eff621c56eebb829a5e451d9801238"
|
||||
integrity sha512-VWBVyimc1+QrzappRs7waeN2YmoZFCGXWASRYX1/rGHtXqEcrGEIDm+jqIwFa2fRXNgQEwrxaYuIrX0WcAguTA==
|
||||
version "3.0.4"
|
||||
resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5"
|
||||
integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==
|
||||
dependencies:
|
||||
dot-case "^3.0.3"
|
||||
tslib "^1.10.0"
|
||||
dot-case "^3.0.4"
|
||||
tslib "^2.0.3"
|
||||
|
||||
parent-module@^1.0.0:
|
||||
version "1.0.1"
|
||||
@ -8247,13 +8265,13 @@ parseurl@~1.3.2, parseurl@~1.3.3:
|
||||
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
|
||||
integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
|
||||
|
||||
pascal-case@^3.1.1:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.1.tgz#5ac1975133ed619281e88920973d2cd1f279de5f"
|
||||
integrity sha512-XIeHKqIrsquVTQL2crjq3NfJUxmdLasn3TYOU0VBM+UX2a6ztAWBlJQBePLGY7VHW8+2dRadeIPK5+KImwTxQA==
|
||||
pascal-case@^3.1.2:
|
||||
version "3.1.2"
|
||||
resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb"
|
||||
integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==
|
||||
dependencies:
|
||||
no-case "^3.0.3"
|
||||
tslib "^1.10.0"
|
||||
no-case "^3.0.4"
|
||||
tslib "^2.0.3"
|
||||
|
||||
pascalcase@^0.1.1:
|
||||
version "0.1.1"
|
||||
@ -9434,9 +9452,9 @@ react-app-polyfill@^1.0.6:
|
||||
whatwg-fetch "^3.0.0"
|
||||
|
||||
react-app-rewired@^2.1.6:
|
||||
version "2.1.6"
|
||||
resolved "https://registry.yarnpkg.com/react-app-rewired/-/react-app-rewired-2.1.6.tgz#33ee3076a7f34d6a7c94e649cac67e7c8c580de8"
|
||||
integrity sha512-06flj0kK5tf/RN4naRv/sn6j3sQd7rsURoRLKLpffXDzJeNiAaTNic+0I8Basojy5WDwREkTqrMLewSAjcb13w==
|
||||
version "2.1.7"
|
||||
resolved "https://registry.yarnpkg.com/react-app-rewired/-/react-app-rewired-2.1.7.tgz#b229d32b93b076059e62b06e8117109b92599e18"
|
||||
integrity sha512-SIq7yRIohZzeO432WHlfvEEzOYs4JfOIoUIU663eIFt/ucUoqJxQwW1FClhhL21V6F8bqI+8URJoBlB0yUEKaA==
|
||||
dependencies:
|
||||
semver "^5.6.0"
|
||||
|
||||
@ -9668,9 +9686,9 @@ react-scripts@3.4.3:
|
||||
fsevents "2.1.2"
|
||||
|
||||
react-svg@^11.0.9:
|
||||
version "11.1.3"
|
||||
resolved "https://registry.yarnpkg.com/react-svg/-/react-svg-11.1.3.tgz#14c3f1552b0893319e7466e22797cf7f08a3bfb8"
|
||||
integrity sha512-OSrg4mVXgGK+Qypraa0d68bI8e6ubcBGes9lqcaMdSgPjfrzFTe4yaG94UdROwk5JvFVLKTquc4lRuvqOY92KQ==
|
||||
version "11.1.4"
|
||||
resolved "https://registry.yarnpkg.com/react-svg/-/react-svg-11.1.4.tgz#1a828bcf6193bae09609080fbcae29cb6bed62dc"
|
||||
integrity sha512-Xx3dZNCbTc4wgogf5joE2PcJBcKplfVJGAvgYqIu+/XNSqB1KTutmebn77bO9XT6uHXSBSoy11jCDw/6fddAFQ==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.12.5"
|
||||
"@tanem/svg-injector" "^8.1.0"
|
||||
@ -10406,9 +10424,11 @@ semver@7.0.0:
|
||||
integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==
|
||||
|
||||
semver@^7.3.2:
|
||||
version "7.3.2"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938"
|
||||
integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==
|
||||
version "7.3.4"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97"
|
||||
integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==
|
||||
dependencies:
|
||||
lru-cache "^6.0.0"
|
||||
|
||||
semver@~5.3.0:
|
||||
version "5.3.0"
|
||||
@ -11414,7 +11434,7 @@ ts-pnp@^1.1.6:
|
||||
resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92"
|
||||
integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==
|
||||
|
||||
tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0:
|
||||
tslib@^1.8.1, tslib@^1.9.0:
|
||||
version "1.14.1"
|
||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
|
||||
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
|
||||
@ -11494,9 +11514,9 @@ typedarray@^0.0.6:
|
||||
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
|
||||
|
||||
ua-parser-js@^0.7.22:
|
||||
version "0.7.22"
|
||||
resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.22.tgz#960df60a5f911ea8f1c818f3747b99c6e177eae3"
|
||||
integrity sha512-YUxzMjJ5T71w6a8WWVcMGM6YWOTX27rCoIQgLXiWaxqXSx9D7DNjiGWn1aJIRSQ5qr0xuhra77bSIh6voR/46Q==
|
||||
version "0.7.23"
|
||||
resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.23.tgz#704d67f951e13195fbcd3d78818577f5bc1d547b"
|
||||
integrity sha512-m4hvMLxgGHXG3O3fQVAyyAQpZzDOvwnhOTjYz5Xmr7r/+LpkNy3vJXdVRWgd1TkAb7NGROZuSy96CrlNVjA7KA==
|
||||
|
||||
unicode-canonical-property-names-ecmascript@^1.0.4:
|
||||
version "1.0.4"
|
||||
@ -12347,9 +12367,9 @@ xmlchars@^2.1.1:
|
||||
integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==
|
||||
|
||||
xregexp@^4.3.0:
|
||||
version "4.4.0"
|
||||
resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.4.0.tgz#29660f5d6567cd2ef981dd4a50cb05d22c10719d"
|
||||
integrity sha512-83y4aa8o8o4NZe+L+46wpa+F1cWR/wCGOWI3tzqUso0w3/KAvXy0+Di7Oe/cbNMixDR4Jmi7NEybWU6ps25Wkg==
|
||||
version "4.4.1"
|
||||
resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.4.1.tgz#c84a88fa79e9ab18ca543959712094492185fe65"
|
||||
integrity sha512-2u9HwfadaJaY9zHtRRnH6BY6CQVNQKkYm3oLtC9gJXXzfsbACg5X5e4EZZGVAH+YIfa+QA9lsFQTTe3HURF3ag==
|
||||
dependencies:
|
||||
"@babel/runtime-corejs3" "^7.12.1"
|
||||
|
||||
@ -12359,9 +12379,9 @@ xtend@^4.0.0, xtend@~4.0.1:
|
||||
integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
|
||||
|
||||
y18n@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
|
||||
integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4"
|
||||
integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==
|
||||
|
||||
yallist@^2.1.2:
|
||||
version "2.1.2"
|
||||
|
@ -1,10 +1,11 @@
|
||||
using System.IO;
|
||||
|
||||
using Microsoft.AspNetCore.Http;
|
||||
|
||||
namespace ASC.Files.Core.Model
|
||||
{
|
||||
public class FileStreamModel
|
||||
{
|
||||
public Stream File { get; set; }
|
||||
public IFormFile File { get; set; }
|
||||
public bool Encrypted { get; set; }
|
||||
public bool Forcesave { get; set; }
|
||||
}
|
||||
|
@ -1,10 +1,11 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Text.Json;
|
||||
|
||||
using ASC.Api.Documents;
|
||||
|
||||
namespace ASC.Files.Model
|
||||
{
|
||||
public class SecurityInfoModel
|
||||
public class SecurityInfoModel : BaseBatchModel<JsonElement>
|
||||
{
|
||||
public IEnumerable<FileShareParams> Share { get; set; }
|
||||
public bool Notify { get; set; }
|
||||
|
@ -57,6 +57,7 @@ namespace ASC.Web.Files.Services.WCFService.FileOperations
|
||||
var operations = tasks.GetTasks();
|
||||
var processlist = Process.GetProcesses();
|
||||
|
||||
//TODO: replace with distributed cache
|
||||
foreach (var o in operations.Where(o => processlist.All(p => p.Id != o.InstanceId)))
|
||||
{
|
||||
o.SetProperty(FileOperation.PROGRESS, 100);
|
||||
|
@ -509,7 +509,7 @@ namespace ASC.Web.Files.Utils
|
||||
result.Remove(meAce);
|
||||
|
||||
AceWrapper linkAce = null;
|
||||
if (entries.Any())
|
||||
if (entries.Count() > 1)
|
||||
{
|
||||
result.RemoveAll(ace => ace.SubjectId == FileConstant.ShareLinkId);
|
||||
}
|
||||
|
@ -596,30 +596,17 @@ namespace ASC.Api.Documents
|
||||
/// <param name="encrypted"></param>
|
||||
/// <returns></returns>
|
||||
/// <visible>false</visible>
|
||||
[Update("{fileId}/update", DisableFormat = true)]
|
||||
public FileWrapper<string> UpdateFileStreamFromBody(string fileId, [FromBody]FileStreamModel model)
|
||||
{
|
||||
return FilesControllerHelperString.UpdateFileStream(model.File, fileId, model.Encrypted, model.Forcesave);
|
||||
}
|
||||
|
||||
[Update("{fileId}/update", DisableFormat = true)]
|
||||
[Consumes("application/x-www-form-urlencoded")]
|
||||
public FileWrapper<string> UpdateFileStreamFromForm(string fileId, [FromForm]FileStreamModel model)
|
||||
{
|
||||
return FilesControllerHelperString.UpdateFileStream(model.File, fileId, model.Encrypted, model.Forcesave);
|
||||
return FilesControllerHelperString.UpdateFileStream(model.File.OpenReadStream(), fileId, model.Encrypted, model.Forcesave);
|
||||
}
|
||||
|
||||
[Update("{fileId:int}/update")]
|
||||
public FileWrapper<int> UpdateFileStreamFromBody(int fileId, [FromBody]FileStreamModel model)
|
||||
{
|
||||
return FilesControllerHelperInt.UpdateFileStream(model.File, fileId, model.Encrypted, model.Forcesave);
|
||||
}
|
||||
|
||||
[Update("{fileId:int}/update")]
|
||||
[Consumes("application/x-www-form-urlencoded")]
|
||||
public FileWrapper<int> UpdateFileStreamFromForm(int fileId, [FromForm]FileStreamModel model)
|
||||
{
|
||||
return FilesControllerHelperInt.UpdateFileStream(model.File, fileId, model.Encrypted, model.Forcesave);
|
||||
return FilesControllerHelperInt.UpdateFileStream(model.File.OpenReadStream(), fileId, model.Encrypted, model.Forcesave);
|
||||
}
|
||||
|
||||
|
||||
@ -1604,7 +1591,7 @@ namespace ASC.Api.Documents
|
||||
return FilesControllerHelperInt.GetFolderSecurityInfo(folderId);
|
||||
}
|
||||
|
||||
[Read("share")]
|
||||
[Create("share")]
|
||||
public IEnumerable<FileShareWrapper> GetSecurityInfoFromBody([FromBody] BaseBatchModel<JsonElement> model)
|
||||
{
|
||||
var result = new List<FileShareWrapper>();
|
||||
@ -1613,7 +1600,7 @@ namespace ASC.Api.Documents
|
||||
return result;
|
||||
}
|
||||
|
||||
[Read("share")]
|
||||
[Create("share")]
|
||||
[Consumes("application/x-www-form-urlencoded")]
|
||||
public IEnumerable<FileShareWrapper> GetSecurityInfoFromForm([FromForm] BaseBatchModel<JsonElement> model)
|
||||
{
|
||||
@ -1662,6 +1649,27 @@ namespace ASC.Api.Documents
|
||||
return FilesControllerHelperInt.SetFileSecurityInfo(fileId, model.Share, model.Notify, model.SharingMessage);
|
||||
}
|
||||
|
||||
[Update("share")]
|
||||
public IEnumerable<FileShareWrapper> SetSecurityInfoFromBody([FromBody]SecurityInfoModel model)
|
||||
{
|
||||
return SetSecurityInfo(model);
|
||||
}
|
||||
|
||||
[Update("share")]
|
||||
[Consumes("application/x-www-form-urlencoded")]
|
||||
public IEnumerable<FileShareWrapper> SetSecurityInfoFromForm([FromForm]SecurityInfoModel model)
|
||||
{
|
||||
return SetSecurityInfo(model);
|
||||
}
|
||||
|
||||
public IEnumerable<FileShareWrapper> SetSecurityInfo(SecurityInfoModel model)
|
||||
{
|
||||
var result = new List<FileShareWrapper>();
|
||||
result.AddRange(FilesControllerHelperInt.SetSecurityInfo(model.FileIds.Where(r => r.ValueKind == JsonValueKind.Number).Select(r => r.GetInt32()).ToList(), model.FolderIds.Where(r => r.ValueKind == JsonValueKind.Number).Select(r => r.GetInt32()).ToList(), model.Share, model.Notify, model.SharingMessage));
|
||||
result.AddRange(FilesControllerHelperString.SetSecurityInfo(model.FileIds.Where(r => r.ValueKind == JsonValueKind.String).Select(r => r.GetString()).ToList(), model.FolderIds.Where(r => r.ValueKind == JsonValueKind.String).Select(r => r.GetString()).ToList(), model.Share, model.Notify, model.SharingMessage));
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sets sharing settings for the folder with the ID specified in the request
|
||||
/// </summary>
|
||||
@ -1753,6 +1761,12 @@ namespace ASC.Api.Documents
|
||||
return FilesControllerHelperInt.GenerateSharedLink(fileId, model.Share);
|
||||
}
|
||||
|
||||
[Update("{fileId:int}/setacelink")]
|
||||
public bool SetAceLink(int fileId, [FromBody] GenerateSharedLinkModel model)
|
||||
{
|
||||
return FilesControllerHelperInt.SetAceLink(fileId, model.Share);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get a list of available providers
|
||||
/// </summary>
|
||||
@ -2205,6 +2219,7 @@ namespace ASC.Api.Documents
|
||||
}
|
||||
|
||||
/// <visible>false</visible>
|
||||
[AllowAnonymous]
|
||||
[Read("docservice")]
|
||||
public object GetDocServiceUrl(bool version)
|
||||
{
|
||||
|
@ -468,14 +468,12 @@ namespace ASC.Files.Helpers
|
||||
|
||||
public IEnumerable<FileShareWrapper> GetFileSecurityInfo(T fileId)
|
||||
{
|
||||
var fileShares = FileStorageService.GetSharedInfo(new List<T> { fileId }, new List<T> { });
|
||||
return fileShares.Select(FileShareWrapperHelper.Get);
|
||||
return GetSecurityInfo(new List<T> { fileId }, new List<T> { });
|
||||
}
|
||||
|
||||
public IEnumerable<FileShareWrapper> GetFolderSecurityInfo(T folderId)
|
||||
{
|
||||
var fileShares = FileStorageService.GetSharedInfo(new List<T> { }, new List<T> { folderId });
|
||||
return fileShares.Select(FileShareWrapperHelper.Get);
|
||||
return GetSecurityInfo(new List<T> { }, new List<T> { folderId });
|
||||
}
|
||||
|
||||
public IEnumerable<FileShareWrapper> GetSecurityInfo(IEnumerable<T> fileIds, IEnumerable<T> folderIds)
|
||||
@ -486,35 +484,30 @@ namespace ASC.Files.Helpers
|
||||
|
||||
public IEnumerable<FileShareWrapper> SetFileSecurityInfo(T fileId, IEnumerable<FileShareParams> share, bool notify, string sharingMessage)
|
||||
{
|
||||
if (share != null && share.Any())
|
||||
{
|
||||
var list = new ItemList<AceWrapper>(share.Select(FileShareParamsHelper.ToAceObject));
|
||||
var aceCollection = new AceCollection<T>
|
||||
{
|
||||
Files = new List<T> {fileId },
|
||||
Aces = list,
|
||||
Message = sharingMessage
|
||||
};
|
||||
FileStorageService.SetAceObject(aceCollection, notify);
|
||||
}
|
||||
return GetFileSecurityInfo(fileId);
|
||||
return SetSecurityInfo(new List<T> { fileId }, new List<T>(), share, notify, sharingMessage);
|
||||
}
|
||||
|
||||
public IEnumerable<FileShareWrapper> SetFolderSecurityInfo(T folderId, IEnumerable<FileShareParams> share, bool notify, string sharingMessage)
|
||||
{
|
||||
return SetSecurityInfo(new List<T>(), new List<T> { folderId}, share, notify, sharingMessage);
|
||||
}
|
||||
|
||||
public IEnumerable<FileShareWrapper> SetSecurityInfo(IEnumerable<T> fileIds, IEnumerable<T> folderIds, IEnumerable<FileShareParams> share, bool notify, string sharingMessage)
|
||||
{
|
||||
if (share != null && share.Any())
|
||||
{
|
||||
var list = new ItemList<AceWrapper>(share.Select(FileShareParamsHelper.ToAceObject));
|
||||
var aceCollection = new AceCollection<T>
|
||||
{
|
||||
Folders = new List<T> { folderId },
|
||||
Files = fileIds,
|
||||
Folders = folderIds,
|
||||
Aces = list,
|
||||
Message = sharingMessage
|
||||
};
|
||||
FileStorageService.SetAceObject(aceCollection, notify);
|
||||
}
|
||||
|
||||
return GetFolderSecurityInfo(folderId);
|
||||
return GetSecurityInfo(fileIds, folderIds);
|
||||
}
|
||||
|
||||
public bool RemoveSecurityInfo(List<T> fileIds, List<T> folderIds)
|
||||
@ -552,6 +545,11 @@ namespace ASC.Files.Helpers
|
||||
return sharedInfo.Link;
|
||||
}
|
||||
|
||||
public bool SetAceLink(T fileId, FileShare share)
|
||||
{
|
||||
return FileStorageService.SetAceLink(fileId, share);
|
||||
}
|
||||
|
||||
///// <summary>
|
||||
/////
|
||||
///// </summary>
|
||||
|
@ -8,6 +8,7 @@
|
||||
"asc-web-components": "file:../../../packages/asc-web-components",
|
||||
"connected-react-router": "6.6.1",
|
||||
"copy-to-clipboard": "^3.2.0",
|
||||
"fast-deep-equal": "^3.1.3",
|
||||
"history": "4.10.1",
|
||||
"i18next": "19.0.3",
|
||||
"i18next-browser-languagedetector": "4.0.1",
|
||||
|
@ -239,16 +239,5 @@
|
||||
To begin the development, run `npm start` or `yarn start`.
|
||||
To create a production bundle, use `npm run build` or `yarn build`.
|
||||
-->
|
||||
<script>
|
||||
if (localStorage.getItem("asc_auth_key")){
|
||||
let el = document.getElementById("burger-loader-svg");
|
||||
let el1 = document.getElementById("logo-loader-svg");
|
||||
let el2 = document.getElementById("avatar-loader-svg");
|
||||
|
||||
el.style.display = "block";
|
||||
el1.style.display = "block";
|
||||
el2.style.display = "block";
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -17,7 +17,6 @@ import {
|
||||
Offline,
|
||||
utils,
|
||||
store as commonStore,
|
||||
constants,
|
||||
NavMenu,
|
||||
Main,
|
||||
toastr,
|
||||
@ -36,8 +35,8 @@ const {
|
||||
setCurrentProductHomePage,
|
||||
getPortalPasswordSettings,
|
||||
getPortalCultures,
|
||||
getIsAuthenticated,
|
||||
} = commonStore.auth.actions;
|
||||
const { AUTH_KEY } = constants;
|
||||
|
||||
/*const Profile = lazy(() => import("./components/pages/Profile"));
|
||||
const ProfileAction = lazy(() => import("./components/pages/ProfileAction"));
|
||||
@ -47,8 +46,6 @@ const GroupAction = lazy(() => import("./components/pages/GroupAction"));*/
|
||||
|
||||
class App extends React.Component {
|
||||
componentDidMount() {
|
||||
utils.removeTempContent();
|
||||
|
||||
const {
|
||||
setModuleInfo,
|
||||
getUser,
|
||||
@ -59,33 +56,37 @@ class App extends React.Component {
|
||||
fetchGroups,
|
||||
fetchPeople,
|
||||
setIsLoaded,
|
||||
getIsAuthenticated,
|
||||
} = this.props;
|
||||
|
||||
setModuleInfo();
|
||||
getIsAuthenticated().then((isAuthenticated) => {
|
||||
if (!isAuthenticated) {
|
||||
utils.updateTempContent();
|
||||
return setIsLoaded();
|
||||
} else {
|
||||
utils.updateTempContent(isAuthenticated);
|
||||
}
|
||||
|
||||
const token = localStorage.getItem(AUTH_KEY);
|
||||
const requests = [
|
||||
getUser(),
|
||||
getPortalSettings(),
|
||||
getModules(),
|
||||
getPortalPasswordSettings(),
|
||||
getPortalCultures(),
|
||||
fetchGroups(),
|
||||
fetchPeople(),
|
||||
];
|
||||
|
||||
if (!token) {
|
||||
return setIsLoaded();
|
||||
}
|
||||
|
||||
const requests = [
|
||||
getUser(),
|
||||
getPortalSettings(),
|
||||
getModules(),
|
||||
getPortalPasswordSettings(),
|
||||
getPortalCultures(),
|
||||
fetchGroups(),
|
||||
fetchPeople(),
|
||||
];
|
||||
|
||||
Promise.all(requests)
|
||||
.catch((e) => {
|
||||
toastr.error(e);
|
||||
})
|
||||
.finally(() => {
|
||||
setIsLoaded();
|
||||
});
|
||||
Promise.all(requests)
|
||||
.catch((e) => {
|
||||
toastr.error(e);
|
||||
})
|
||||
.finally(() => {
|
||||
utils.updateTempContent();
|
||||
setIsLoaded();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
render() {
|
||||
@ -164,6 +165,7 @@ const mapStateToProps = (state) => {
|
||||
|
||||
const mapDispatchToProps = (dispatch) => {
|
||||
return {
|
||||
getIsAuthenticated: () => getIsAuthenticated(dispatch),
|
||||
setModuleInfo: () => {
|
||||
dispatch(setCurrentProductHomePage(config.homepage));
|
||||
dispatch(setCurrentProductId("f4d98afd-d336-4332-8778-3c6945c81ea0"));
|
||||
|
@ -10,7 +10,8 @@ import { setFilter } from "../../../../../store/people/actions";
|
||||
import styled from "styled-components";
|
||||
|
||||
const Wrapper = styled.div`
|
||||
display: flex;
|
||||
display: grid;
|
||||
grid-template-columns: auto 1fr auto auto;
|
||||
align-items: center;
|
||||
|
||||
.arrow-button {
|
||||
|
@ -25,7 +25,7 @@ import {
|
||||
} from "../../../../../store/people/actions";
|
||||
import { getPeopleList } from "../../../../../store/people/selectors";
|
||||
|
||||
import isEqual from "lodash/isEqual";
|
||||
import equal from "fast-deep-equal/react";
|
||||
import { store, api, constants, toastr, Loaders } from "asc-web-common";
|
||||
import {
|
||||
ChangeEmailDialog,
|
||||
@ -363,7 +363,7 @@ class SectionBodyContent extends React.PureComponent {
|
||||
if (currentProps.sectionWidth !== nextProps.sectionWidth) {
|
||||
return true;
|
||||
}
|
||||
if (!isEqual(currentProps.data, nextProps.data)) {
|
||||
if (!equal(currentProps.data, nextProps.data)) {
|
||||
return true;
|
||||
}
|
||||
if (!isArrayEqual(currentProps.contextOptions, nextProps.contextOptions)) {
|
||||
@ -396,7 +396,10 @@ class SectionBodyContent extends React.PureComponent {
|
||||
<>
|
||||
<Consumer>
|
||||
{(context) => (
|
||||
<RowContainer className="people-row" useReactWindow={false}>
|
||||
<RowContainer
|
||||
className="people-row-container"
|
||||
useReactWindow={false}
|
||||
>
|
||||
{peopleList.map((man) => {
|
||||
const {
|
||||
checked,
|
||||
|
@ -89,11 +89,15 @@ const StyledContainer = styled.div`
|
||||
|
||||
.header-container {
|
||||
position: relative;
|
||||
|
||||
display: flex;
|
||||
display: grid;
|
||||
grid-template-columns: auto auto 1fr;
|
||||
align-items: center;
|
||||
max-width: calc(100vw - 32px);
|
||||
|
||||
@media ${tablet} {
|
||||
grid-template-columns: 1fr auto;
|
||||
}
|
||||
|
||||
.action-button {
|
||||
margin-left: 16px;
|
||||
|
||||
|
@ -46,9 +46,16 @@ const { EmployeeStatus } = constants;
|
||||
const StyledContainer = styled.div`
|
||||
position: relative;
|
||||
|
||||
display: flex;
|
||||
display: grid;
|
||||
grid-template-columns: ${(props) =>
|
||||
props.showContextButton ? "auto auto auto 1fr" : "auto 1fr"};
|
||||
align-items: center;
|
||||
|
||||
@media (max-width: 1024px) {
|
||||
grid-template-columns: ${(props) =>
|
||||
props.showContextButton ? "auto 1fr auto" : "auto 1fr"};
|
||||
}
|
||||
|
||||
.action-button {
|
||||
margin-left: 16px;
|
||||
|
||||
@ -410,9 +417,12 @@ class SectionHeaderContent extends React.PureComponent {
|
||||
} = this.props;
|
||||
const { avatar, visibleAvatarEditor, dialogsVisible } = this.state;
|
||||
const contextOptions = () => this.getUserContextOptions(profile, viewer);
|
||||
const IsMe = isMe(viewer, profile.userName);
|
||||
|
||||
return (
|
||||
<StyledContainer>
|
||||
<StyledContainer
|
||||
showContextButton={(isAdmin && !profile.isOwner) || IsMe}
|
||||
>
|
||||
<IconButton
|
||||
iconName="ArrowPathIcon"
|
||||
color="#A3A9AE"
|
||||
@ -426,7 +436,7 @@ class SectionHeaderContent extends React.PureComponent {
|
||||
{profile.displayName}
|
||||
{profile.isLDAP && ` (${t("LDAPLbl")})`}
|
||||
</Headline>
|
||||
{((isAdmin && !profile.isOwner) || isMe(viewer, profile.userName)) && (
|
||||
{((isAdmin && !profile.isOwner) || IsMe) && (
|
||||
<ContextMenuButton
|
||||
className="action-button"
|
||||
directionX="right"
|
||||
|
@ -1,6 +1,6 @@
|
||||
import React from "react";
|
||||
import styled from "styled-components";
|
||||
import isEqual from "lodash/isEqual";
|
||||
import equal from "fast-deep-equal/react";
|
||||
import { ComboBox, TextInput, IconButton } from "asc-web-components";
|
||||
|
||||
const Container = styled.div`
|
||||
@ -15,7 +15,7 @@ const Container = styled.div`
|
||||
|
||||
class ContactField extends React.Component {
|
||||
shouldComponentUpdate(nextProps) {
|
||||
return !isEqual(this.props, nextProps);
|
||||
return !equal(this.props, nextProps);
|
||||
}
|
||||
|
||||
render() {
|
||||
|
@ -1,6 +1,6 @@
|
||||
import React from "react";
|
||||
import styled from "styled-components";
|
||||
import isEqual from "lodash/isEqual";
|
||||
import equal from "fast-deep-equal/react";
|
||||
import ContactField from "./ContactField";
|
||||
import { ComboBox } from "asc-web-components";
|
||||
|
||||
@ -62,7 +62,7 @@ const renderItems = (
|
||||
|
||||
class ContactsField extends React.Component {
|
||||
shouldComponentUpdate(nextProps) {
|
||||
return !isEqual(this.props, nextProps);
|
||||
return !equal(this.props, nextProps);
|
||||
}
|
||||
|
||||
render() {
|
||||
|
@ -1,10 +1,10 @@
|
||||
import React from "react";
|
||||
import isEqual from "lodash/isEqual";
|
||||
import equal from "fast-deep-equal/react";
|
||||
import { FieldContainer, DatePicker } from "asc-web-components";
|
||||
|
||||
class DateField extends React.Component {
|
||||
shouldComponentUpdate(nextProps) {
|
||||
return !isEqual(this.props, nextProps);
|
||||
return !equal(this.props, nextProps);
|
||||
}
|
||||
|
||||
render() {
|
||||
|
@ -1,5 +1,5 @@
|
||||
import React from "react";
|
||||
import isEqual from "lodash/isEqual";
|
||||
import equal from "fast-deep-equal/react";
|
||||
import {
|
||||
FieldContainer,
|
||||
SelectorAddButton,
|
||||
@ -9,7 +9,7 @@ import { GroupSelector } from "asc-web-common";
|
||||
|
||||
class DepartmentField extends React.Component {
|
||||
shouldComponentUpdate(nextProps) {
|
||||
return !isEqual(this.props, nextProps);
|
||||
return !equal(this.props, nextProps);
|
||||
}
|
||||
|
||||
render() {
|
||||
|
@ -1,10 +1,10 @@
|
||||
import React from "react";
|
||||
import isEqual from "lodash/isEqual";
|
||||
import equal from "fast-deep-equal/react";
|
||||
import { FieldContainer, EmailInput } from "asc-web-components";
|
||||
|
||||
class EmailField extends React.Component {
|
||||
shouldComponentUpdate(nextProps) {
|
||||
return !isEqual(this.props, nextProps);
|
||||
return !equal(this.props, nextProps);
|
||||
}
|
||||
|
||||
render() {
|
||||
|
@ -1,5 +1,5 @@
|
||||
import React from "react";
|
||||
import isEqual from "lodash/isEqual";
|
||||
import equal from "fast-deep-equal/react";
|
||||
import {
|
||||
FieldContainer,
|
||||
RadioButtonGroup,
|
||||
@ -8,7 +8,7 @@ import {
|
||||
|
||||
class PasswordField extends React.Component {
|
||||
shouldComponentUpdate(nextProps) {
|
||||
return !isEqual(this.props, nextProps);
|
||||
return !equal(this.props, nextProps);
|
||||
}
|
||||
|
||||
render() {
|
||||
|
@ -1,14 +1,14 @@
|
||||
import React from "react";
|
||||
import isEqual from "lodash/isEqual";
|
||||
import equal from "fast-deep-equal/react";
|
||||
import { FieldContainer, RadioButtonGroup } from "asc-web-components";
|
||||
|
||||
class RadioField extends React.Component {
|
||||
shouldComponentUpdate(nextProps) {
|
||||
return !isEqual(this.props, nextProps);
|
||||
return !equal(this.props, nextProps);
|
||||
}
|
||||
|
||||
render() {
|
||||
console.log("RadioField render");
|
||||
//console.log("RadioField render");
|
||||
|
||||
const {
|
||||
isRequired,
|
||||
|
@ -1,6 +1,6 @@
|
||||
import React from "react";
|
||||
import styled from "styled-components";
|
||||
import isEqual from "lodash/isEqual";
|
||||
import equal from "fast-deep-equal/react";
|
||||
import { FieldContainer, TextInput, Button } from "asc-web-components";
|
||||
|
||||
const InputContainer = styled.div`
|
||||
@ -12,7 +12,7 @@ const InputContainer = styled.div`
|
||||
|
||||
class TextChangeField extends React.Component {
|
||||
shouldComponentUpdate(nextProps) {
|
||||
return !isEqual(this.props, nextProps);
|
||||
return !equal(this.props, nextProps);
|
||||
}
|
||||
|
||||
render() {
|
||||
|
@ -1,10 +1,10 @@
|
||||
import React from "react";
|
||||
import isEqual from "lodash/isEqual";
|
||||
import equal from "fast-deep-equal/react";
|
||||
import { FieldContainer, TextInput } from "asc-web-components";
|
||||
|
||||
class TextField extends React.Component {
|
||||
shouldComponentUpdate(nextProps) {
|
||||
return !isEqual(this.props, nextProps);
|
||||
return !equal(this.props, nextProps);
|
||||
}
|
||||
|
||||
render() {
|
||||
|
@ -12,7 +12,8 @@ import {
|
||||
} from "../../../../../store/people/actions";
|
||||
import { resetProfile } from "../../../../../store/profile/actions";
|
||||
const Wrapper = styled.div`
|
||||
display: flex;
|
||||
display: grid;
|
||||
grid-template-columns: auto 1fr auto auto;
|
||||
align-items: center;
|
||||
|
||||
.arrow-button {
|
||||
|
@ -7,7 +7,8 @@ import { useTranslation } from "react-i18next";
|
||||
import styled from "styled-components";
|
||||
|
||||
const Wrapper = styled.div`
|
||||
display: flex;
|
||||
display: grid;
|
||||
grid-template-columns: auto 1fr auto auto;
|
||||
align-items: center;
|
||||
|
||||
.arrow-button {
|
||||
@ -20,7 +21,6 @@ const Wrapper = styled.div`
|
||||
|
||||
const textStyle = {
|
||||
marginLeft: "16px",
|
||||
marginRight: "16px",
|
||||
};
|
||||
|
||||
const SectionHeaderContent = (props) => {
|
||||
|
@ -7,10 +7,7 @@ import "./custom.scss";
|
||||
import App from "./App";
|
||||
|
||||
import * as serviceWorker from "./serviceWorker";
|
||||
import { ErrorBoundary, utils } from "asc-web-common";
|
||||
const { redirectToDefaultPage } = utils;
|
||||
|
||||
redirectToDefaultPage();
|
||||
import { ErrorBoundary } from "asc-web-common";
|
||||
|
||||
ReactDOM.render(
|
||||
<Provider store={store}>
|
||||
|
@ -52,42 +52,41 @@
|
||||
source-map "^0.5.0"
|
||||
|
||||
"@babel/core@^7.1.0", "@babel/core@^7.4.5", "@babel/core@^7.8.4":
|
||||
version "7.12.9"
|
||||
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.9.tgz#fd450c4ec10cdbb980e2928b7aa7a28484593fc8"
|
||||
integrity sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==
|
||||
version "7.12.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.10.tgz#b79a2e1b9f70ed3d84bbfb6d8c4ef825f606bccd"
|
||||
integrity sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w==
|
||||
dependencies:
|
||||
"@babel/code-frame" "^7.10.4"
|
||||
"@babel/generator" "^7.12.5"
|
||||
"@babel/generator" "^7.12.10"
|
||||
"@babel/helper-module-transforms" "^7.12.1"
|
||||
"@babel/helpers" "^7.12.5"
|
||||
"@babel/parser" "^7.12.7"
|
||||
"@babel/parser" "^7.12.10"
|
||||
"@babel/template" "^7.12.7"
|
||||
"@babel/traverse" "^7.12.9"
|
||||
"@babel/types" "^7.12.7"
|
||||
"@babel/traverse" "^7.12.10"
|
||||
"@babel/types" "^7.12.10"
|
||||
convert-source-map "^1.7.0"
|
||||
debug "^4.1.0"
|
||||
gensync "^1.0.0-beta.1"
|
||||
json5 "^2.1.2"
|
||||
lodash "^4.17.19"
|
||||
resolve "^1.3.2"
|
||||
semver "^5.4.1"
|
||||
source-map "^0.5.0"
|
||||
|
||||
"@babel/generator@^7.12.5", "@babel/generator@^7.4.0", "@babel/generator@^7.9.0":
|
||||
version "7.12.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.5.tgz#a2c50de5c8b6d708ab95be5e6053936c1884a4de"
|
||||
integrity sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A==
|
||||
"@babel/generator@^7.12.10", "@babel/generator@^7.4.0", "@babel/generator@^7.9.0":
|
||||
version "7.12.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.10.tgz#2b188fc329fb8e4f762181703beffc0fe6df3460"
|
||||
integrity sha512-6mCdfhWgmqLdtTkhXjnIz0LcdVCd26wS2JXRtj2XY0u5klDsXBREA/pG5NVOuVnF2LUrBGNFtQkIqqTbblg0ww==
|
||||
dependencies:
|
||||
"@babel/types" "^7.12.5"
|
||||
"@babel/types" "^7.12.10"
|
||||
jsesc "^2.5.1"
|
||||
source-map "^0.5.0"
|
||||
|
||||
"@babel/helper-annotate-as-pure@^7.0.0", "@babel/helper-annotate-as-pure@^7.10.4":
|
||||
version "7.10.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3"
|
||||
integrity sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==
|
||||
"@babel/helper-annotate-as-pure@^7.0.0", "@babel/helper-annotate-as-pure@^7.10.4", "@babel/helper-annotate-as-pure@^7.12.10":
|
||||
version "7.12.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.10.tgz#54ab9b000e60a93644ce17b3f37d313aaf1d115d"
|
||||
integrity sha512-XplmVbC1n+KY6jL8/fgLVXXUauDIB+lD5+GsQEh6F6GBF1dq1qy4DP4yXWzDKcoqXB3X58t61e85Fitoww4JVQ==
|
||||
dependencies:
|
||||
"@babel/types" "^7.10.4"
|
||||
"@babel/types" "^7.12.10"
|
||||
|
||||
"@babel/helper-builder-binary-assignment-operator-visitor@^7.10.4":
|
||||
version "7.10.4"
|
||||
@ -97,14 +96,14 @@
|
||||
"@babel/helper-explode-assignable-expression" "^7.10.4"
|
||||
"@babel/types" "^7.10.4"
|
||||
|
||||
"@babel/helper-builder-react-jsx-experimental@^7.12.4":
|
||||
version "7.12.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.12.4.tgz#55fc1ead5242caa0ca2875dcb8eed6d311e50f48"
|
||||
integrity sha512-AjEa0jrQqNk7eDQOo0pTfUOwQBMF+xVqrausQwT9/rTKy0g04ggFNaJpaE09IQMn9yExluigWMJcj0WC7bq+Og==
|
||||
"@babel/helper-builder-react-jsx-experimental@^7.12.10", "@babel/helper-builder-react-jsx-experimental@^7.12.4":
|
||||
version "7.12.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.12.10.tgz#a58cb96a793dc0fcd5c9ed3bb36d62fdc60534c2"
|
||||
integrity sha512-3Kcr2LGpL7CTRDTTYm1bzeor9qZbxbvU2AxsLA6mUG9gYarSfIKMK0UlU+azLWI+s0+BH768bwyaziWB2NOJlQ==
|
||||
dependencies:
|
||||
"@babel/helper-annotate-as-pure" "^7.10.4"
|
||||
"@babel/helper-module-imports" "^7.12.1"
|
||||
"@babel/types" "^7.12.1"
|
||||
"@babel/helper-annotate-as-pure" "^7.12.10"
|
||||
"@babel/helper-module-imports" "^7.12.5"
|
||||
"@babel/types" "^7.12.10"
|
||||
|
||||
"@babel/helper-builder-react-jsx@^7.10.4":
|
||||
version "7.10.4"
|
||||
@ -169,11 +168,11 @@
|
||||
"@babel/types" "^7.10.4"
|
||||
|
||||
"@babel/helper-get-function-arity@^7.10.4":
|
||||
version "7.10.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2"
|
||||
integrity sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==
|
||||
version "7.12.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz#b158817a3165b5faa2047825dfa61970ddcc16cf"
|
||||
integrity sha512-mm0n5BPjR06wh9mPQaDdXWDoll/j5UpCAPl1x8fS71GHm7HA6Ua2V4ylG1Ju8lvcTOietbPNNPaSilKj+pj+Ag==
|
||||
dependencies:
|
||||
"@babel/types" "^7.10.4"
|
||||
"@babel/types" "^7.12.10"
|
||||
|
||||
"@babel/helper-hoist-variables@^7.10.4":
|
||||
version "7.10.4"
|
||||
@ -212,11 +211,11 @@
|
||||
lodash "^4.17.19"
|
||||
|
||||
"@babel/helper-optimise-call-expression@^7.10.4":
|
||||
version "7.12.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.7.tgz#7f94ae5e08721a49467346aa04fd22f750033b9c"
|
||||
integrity sha512-I5xc9oSJ2h59OwyUqjv95HRyzxj53DAubUERgQMrpcCEYQyToeHA+NEcUEsVWB4j53RDeskeBJ0SgRAYHDBckw==
|
||||
version "7.12.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.10.tgz#94ca4e306ee11a7dd6e9f42823e2ac6b49881e2d"
|
||||
integrity sha512-4tpbU0SrSTjjt65UMWSrUOPZTsgvPgGG4S8QSTNHacKzpS51IVWGDj0yCwyeZND/i+LSN2g/O63jEXEWm49sYQ==
|
||||
dependencies:
|
||||
"@babel/types" "^7.12.7"
|
||||
"@babel/types" "^7.12.10"
|
||||
|
||||
"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
|
||||
version "7.10.4"
|
||||
@ -301,10 +300,10 @@
|
||||
chalk "^2.0.0"
|
||||
js-tokens "^4.0.0"
|
||||
|
||||
"@babel/parser@^7.1.0", "@babel/parser@^7.12.7", "@babel/parser@^7.4.3", "@babel/parser@^7.7.0", "@babel/parser@^7.9.0":
|
||||
version "7.12.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.7.tgz#fee7b39fe809d0e73e5b25eecaf5780ef3d73056"
|
||||
integrity sha512-oWR02Ubp4xTLCAqPRiNIuMVgNO5Aif/xpXtabhzW2HWUD47XJsAB4Zd/Rg30+XeQA3juXigV7hlquOTmwqLiwg==
|
||||
"@babel/parser@^7.1.0", "@babel/parser@^7.12.10", "@babel/parser@^7.12.7", "@babel/parser@^7.4.3", "@babel/parser@^7.7.0", "@babel/parser@^7.9.0":
|
||||
version "7.12.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.10.tgz#824600d59e96aea26a5a2af5a9d812af05c3ae81"
|
||||
integrity sha512-PJdRPwyoOqFAWfLytxrWwGrAxghCgh/yTNCYciOz8QgjflA7aZhECPZAa2VUedKg2+QMWkI0L9lynh2SNmNEgA==
|
||||
|
||||
"@babel/plugin-proposal-async-generator-functions@^7.12.1", "@babel/plugin-proposal-async-generator-functions@^7.8.3":
|
||||
version "7.12.1"
|
||||
@ -788,27 +787,27 @@
|
||||
"@babel/helper-plugin-utils" "^7.10.4"
|
||||
"@babel/plugin-syntax-jsx" "^7.12.1"
|
||||
|
||||
"@babel/plugin-transform-react-jsx-self@^7.12.1", "@babel/plugin-transform-react-jsx-self@^7.9.0":
|
||||
"@babel/plugin-transform-react-jsx-self@^7.9.0":
|
||||
version "7.12.1"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.1.tgz#ef43cbca2a14f1bd17807dbe4376ff89d714cf28"
|
||||
integrity sha512-FbpL0ieNWiiBB5tCldX17EtXgmzeEZjFrix72rQYeq9X6nUK38HCaxexzVQrZWXanxKJPKVVIU37gFjEQYkPkA==
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.10.4"
|
||||
|
||||
"@babel/plugin-transform-react-jsx-source@^7.12.1", "@babel/plugin-transform-react-jsx-source@^7.9.0":
|
||||
"@babel/plugin-transform-react-jsx-source@^7.9.0":
|
||||
version "7.12.1"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.12.1.tgz#d07de6863f468da0809edcf79a1aa8ce2a82a26b"
|
||||
integrity sha512-keQ5kBfjJNRc6zZN1/nVHCd6LLIHq4aUKcVnvE/2l+ZZROSbqoiGFRtT5t3Is89XJxBQaP7NLZX2jgGHdZvvFQ==
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.10.4"
|
||||
|
||||
"@babel/plugin-transform-react-jsx@^7.12.7", "@babel/plugin-transform-react-jsx@^7.9.1":
|
||||
version "7.12.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.7.tgz#8b14d45f6eccd41b7f924bcb65c021e9f0a06f7f"
|
||||
integrity sha512-YFlTi6MEsclFAPIDNZYiCRbneg1MFGao9pPG9uD5htwE0vDbPaMUMeYd6itWjw7K4kro4UbdQf3ljmFl9y48dQ==
|
||||
"@babel/plugin-transform-react-jsx@^7.12.10", "@babel/plugin-transform-react-jsx@^7.9.1":
|
||||
version "7.12.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.10.tgz#a7af3097c73479123594c8c8fe39545abebd44e3"
|
||||
integrity sha512-MM7/BC8QdHXM7Qc1wdnuk73R4gbuOpfrSUgfV/nODGc86sPY1tgmY2M9E9uAnf2e4DOIp8aKGWqgZfQxnTNGuw==
|
||||
dependencies:
|
||||
"@babel/helper-builder-react-jsx" "^7.10.4"
|
||||
"@babel/helper-builder-react-jsx-experimental" "^7.12.4"
|
||||
"@babel/helper-builder-react-jsx-experimental" "^7.12.10"
|
||||
"@babel/helper-plugin-utils" "^7.10.4"
|
||||
"@babel/plugin-syntax-jsx" "^7.12.1"
|
||||
|
||||
@ -873,10 +872,10 @@
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.10.4"
|
||||
|
||||
"@babel/plugin-transform-typeof-symbol@^7.12.1", "@babel/plugin-transform-typeof-symbol@^7.8.4":
|
||||
version "7.12.1"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz#9ca6be343d42512fbc2e68236a82ae64bc7af78a"
|
||||
integrity sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q==
|
||||
"@babel/plugin-transform-typeof-symbol@^7.12.10", "@babel/plugin-transform-typeof-symbol@^7.8.4":
|
||||
version "7.12.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.10.tgz#de01c4c8f96580bd00f183072b0d0ecdcf0dec4b"
|
||||
integrity sha512-JQ6H8Rnsogh//ijxspCjc21YPd3VLVoYtAwv3zQmqAt8YGYUtdo5usNhdl4b9/Vir2kPFZl6n1h0PfUz4hJhaA==
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.10.4"
|
||||
|
||||
@ -971,9 +970,9 @@
|
||||
semver "^5.5.0"
|
||||
|
||||
"@babel/preset-env@^7.4.5", "@babel/preset-env@^7.8.4":
|
||||
version "7.12.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.7.tgz#54ea21dbe92caf6f10cb1a0a576adc4ebf094b55"
|
||||
integrity sha512-OnNdfAr1FUQg7ksb7bmbKoby4qFOHw6DKWWUNB9KqnnCldxhxJlP+21dpyaWFmf2h0rTbOkXJtAGevY3XW1eew==
|
||||
version "7.12.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.10.tgz#ca981b95f641f2610531bd71948656306905e6ab"
|
||||
integrity sha512-Gz9hnBT/tGeTE2DBNDkD7BiWRELZt+8lSysHuDwmYXUIvtwZl0zI+D6mZgXZX0u8YBlLS4tmai9ONNY9tjRgRA==
|
||||
dependencies:
|
||||
"@babel/compat-data" "^7.12.7"
|
||||
"@babel/helper-compilation-targets" "^7.12.5"
|
||||
@ -1034,12 +1033,12 @@
|
||||
"@babel/plugin-transform-spread" "^7.12.1"
|
||||
"@babel/plugin-transform-sticky-regex" "^7.12.7"
|
||||
"@babel/plugin-transform-template-literals" "^7.12.1"
|
||||
"@babel/plugin-transform-typeof-symbol" "^7.12.1"
|
||||
"@babel/plugin-transform-typeof-symbol" "^7.12.10"
|
||||
"@babel/plugin-transform-unicode-escapes" "^7.12.1"
|
||||
"@babel/plugin-transform-unicode-regex" "^7.12.1"
|
||||
"@babel/preset-modules" "^0.1.3"
|
||||
"@babel/types" "^7.12.7"
|
||||
core-js-compat "^3.7.0"
|
||||
"@babel/types" "^7.12.10"
|
||||
core-js-compat "^3.8.0"
|
||||
semver "^5.5.0"
|
||||
|
||||
"@babel/preset-modules@^0.1.3":
|
||||
@ -1066,16 +1065,14 @@
|
||||
"@babel/plugin-transform-react-jsx-source" "^7.9.0"
|
||||
|
||||
"@babel/preset-react@^7.0.0":
|
||||
version "7.12.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.12.7.tgz#36d61d83223b07b6ac4ec55cf016abb0f70be83b"
|
||||
integrity sha512-wKeTdnGUP5AEYCYQIMeXMMwU7j+2opxrG0WzuZfxuuW9nhKvvALBjl67653CWamZJVefuJGI219G591RSldrqQ==
|
||||
version "7.12.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.12.10.tgz#4fed65f296cbb0f5fb09de6be8cddc85cc909be9"
|
||||
integrity sha512-vtQNjaHRl4DUpp+t+g4wvTHsLQuye+n0H/wsXIZRn69oz/fvNC7gQ4IK73zGJBaxvHoxElDvnYCthMcT7uzFoQ==
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.10.4"
|
||||
"@babel/plugin-transform-react-display-name" "^7.12.1"
|
||||
"@babel/plugin-transform-react-jsx" "^7.12.7"
|
||||
"@babel/plugin-transform-react-jsx" "^7.12.10"
|
||||
"@babel/plugin-transform-react-jsx-development" "^7.12.7"
|
||||
"@babel/plugin-transform-react-jsx-self" "^7.12.1"
|
||||
"@babel/plugin-transform-react-jsx-source" "^7.12.1"
|
||||
"@babel/plugin-transform-react-pure-annotations" "^7.12.1"
|
||||
|
||||
"@babel/preset-typescript@7.9.0":
|
||||
@ -1117,25 +1114,25 @@
|
||||
"@babel/parser" "^7.12.7"
|
||||
"@babel/types" "^7.12.7"
|
||||
|
||||
"@babel/traverse@^7.1.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.5", "@babel/traverse@^7.12.9", "@babel/traverse@^7.4.3", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.0", "@babel/traverse@^7.9.0":
|
||||
version "7.12.9"
|
||||
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.9.tgz#fad26c972eabbc11350e0b695978de6cc8e8596f"
|
||||
integrity sha512-iX9ajqnLdoU1s1nHt36JDI9KG4k+vmI8WgjK5d+aDTwQbL2fUnzedNedssA645Ede3PM2ma1n8Q4h2ohwXgMXw==
|
||||
"@babel/traverse@^7.1.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.10", "@babel/traverse@^7.12.5", "@babel/traverse@^7.4.3", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.0", "@babel/traverse@^7.9.0":
|
||||
version "7.12.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.10.tgz#2d1f4041e8bf42ea099e5b2dc48d6a594c00017a"
|
||||
integrity sha512-6aEtf0IeRgbYWzta29lePeYSk+YAFIC3kyqESeft8o5CkFlYIMX+EQDDWEiAQ9LHOA3d0oHdgrSsID/CKqXJlg==
|
||||
dependencies:
|
||||
"@babel/code-frame" "^7.10.4"
|
||||
"@babel/generator" "^7.12.5"
|
||||
"@babel/generator" "^7.12.10"
|
||||
"@babel/helper-function-name" "^7.10.4"
|
||||
"@babel/helper-split-export-declaration" "^7.11.0"
|
||||
"@babel/parser" "^7.12.7"
|
||||
"@babel/types" "^7.12.7"
|
||||
"@babel/parser" "^7.12.10"
|
||||
"@babel/types" "^7.12.10"
|
||||
debug "^4.1.0"
|
||||
globals "^11.1.0"
|
||||
lodash "^4.17.19"
|
||||
|
||||
"@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.11.0", "@babel/types@^7.12.1", "@babel/types@^7.12.5", "@babel/types@^7.12.7", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0", "@babel/types@^7.9.0":
|
||||
version "7.12.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.7.tgz#6039ff1e242640a29452c9ae572162ec9a8f5d13"
|
||||
integrity sha512-MNyI92qZq6jrQkXvtIiykvl4WtoRrVV9MPn+ZfsoEENjiWcBQ3ZSHrkxnJWgWtLX3XXqX5hrSQ+X69wkmesXuQ==
|
||||
"@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.11.0", "@babel/types@^7.12.1", "@babel/types@^7.12.10", "@babel/types@^7.12.5", "@babel/types@^7.12.7", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0", "@babel/types@^7.9.0":
|
||||
version "7.12.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.10.tgz#7965e4a7260b26f09c56bcfcb0498af1f6d9b260"
|
||||
integrity sha512-sf6wboJV5mGyip2hIpDSKsr80RszPinEFjsHTalMxZAZkoQ2/2yQzxlcFN52SJqsyPfLtPmenL4g2KB3KJXPDw==
|
||||
dependencies:
|
||||
"@babel/helper-validator-identifier" "^7.10.4"
|
||||
lodash "^4.17.19"
|
||||
@ -1547,9 +1544,9 @@
|
||||
"@babel/types" "^7.0.0"
|
||||
|
||||
"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6":
|
||||
version "7.0.16"
|
||||
resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.16.tgz#0bbbf70c7bc4193210dd27e252c51260a37cd6a7"
|
||||
integrity sha512-S63Dt4CZOkuTmpLGGWtT/mQdVORJOpx6SZWGVaP56dda/0Nx5nEe82K7/LAm8zYr6SfMq+1N2OreIOrHAx656w==
|
||||
version "7.11.0"
|
||||
resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.11.0.tgz#b9a1efa635201ba9bc850323a8793ee2d36c04a0"
|
||||
integrity sha512-kSjgDMZONiIfSH1Nxcr5JIRMwUetDki63FSQfpTCz8ogF3Ulqm8+mr5f78dUYs6vMiB6gBusQqfQmBvHZj/lwg==
|
||||
dependencies:
|
||||
"@babel/types" "^7.3.0"
|
||||
|
||||
@ -1607,9 +1604,9 @@
|
||||
integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==
|
||||
|
||||
"@types/node@*":
|
||||
version "14.14.10"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.10.tgz#5958a82e41863cfc71f2307b3748e3491ba03785"
|
||||
integrity sha512-J32dgx2hw8vXrSbu4ZlVhn1Nm3GbeCFNw2FWL8S5QKucHGY0cyNwjdQdO+KMBZ4wpmC7KhLCiNsdk1RFRIYUQQ==
|
||||
version "14.14.12"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.12.tgz#0b1d86f8c40141091285dea02e4940df73bba43f"
|
||||
integrity sha512-ASH8OPHMNlkdjrEdmoILmzFfsJICvhBsFfAum4aKZ/9U4B6M6tTmTPh+f3ttWdD74CEGV5XvXWkbyfSdXaTd7g==
|
||||
|
||||
"@types/parse-json@^4.0.0":
|
||||
version "4.0.0"
|
||||
@ -2159,7 +2156,7 @@ asap@~2.0.6:
|
||||
integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=
|
||||
|
||||
"asc-web-common@file:../../../packages/asc-web-common":
|
||||
version "1.0.281"
|
||||
version "1.0.289"
|
||||
dependencies:
|
||||
axios "^0.19.1"
|
||||
history "4.10.1"
|
||||
@ -2176,7 +2173,7 @@ asap@~2.0.6:
|
||||
sjcl "^1.0.8"
|
||||
|
||||
"asc-web-components@file:../../../packages/asc-web-components":
|
||||
version "1.0.488"
|
||||
version "1.0.492"
|
||||
dependencies:
|
||||
email-addresses "^3.1.0"
|
||||
html-to-react "^1.4.2"
|
||||
@ -2730,16 +2727,16 @@ browserslist@4.10.0:
|
||||
node-releases "^1.1.52"
|
||||
pkg-up "^3.1.0"
|
||||
|
||||
browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.14.7, browserslist@^4.6.2, browserslist@^4.6.4, browserslist@^4.9.1:
|
||||
version "4.14.7"
|
||||
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.7.tgz#c071c1b3622c1c2e790799a37bb09473a4351cb6"
|
||||
integrity sha512-BSVRLCeG3Xt/j/1cCGj1019Wbty0H+Yvu2AOuZSuoaUWn3RatbL33Cxk+Q4jRMRAbOm0p7SLravLjpnT6s0vzQ==
|
||||
browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.15.0, browserslist@^4.6.2, browserslist@^4.6.4, browserslist@^4.9.1:
|
||||
version "4.16.0"
|
||||
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.0.tgz#410277627500be3cb28a1bfe037586fbedf9488b"
|
||||
integrity sha512-/j6k8R0p3nxOC6kx5JGAxsnhc9ixaWJfYc+TNTzxg6+ARaESAvQGV7h0uNOB4t+pLQJZWzcrMxXOxjgsCj3dqQ==
|
||||
dependencies:
|
||||
caniuse-lite "^1.0.30001157"
|
||||
caniuse-lite "^1.0.30001165"
|
||||
colorette "^1.2.1"
|
||||
electron-to-chromium "^1.3.591"
|
||||
electron-to-chromium "^1.3.621"
|
||||
escalade "^3.1.1"
|
||||
node-releases "^1.1.66"
|
||||
node-releases "^1.1.67"
|
||||
|
||||
bser@2.1.1:
|
||||
version "2.1.1"
|
||||
@ -2890,12 +2887,12 @@ callsites@^3.0.0:
|
||||
integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
|
||||
|
||||
camel-case@^4.1.1:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.1.tgz#1fc41c854f00e2f7d0139dfeba1542d6896fe547"
|
||||
integrity sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q==
|
||||
version "4.1.2"
|
||||
resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a"
|
||||
integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==
|
||||
dependencies:
|
||||
pascal-case "^3.1.1"
|
||||
tslib "^1.10.0"
|
||||
pascal-case "^3.1.2"
|
||||
tslib "^2.0.3"
|
||||
|
||||
camelcase-keys@^2.0.0:
|
||||
version "2.1.0"
|
||||
@ -2935,10 +2932,10 @@ caniuse-api@^3.0.0:
|
||||
lodash.memoize "^4.1.2"
|
||||
lodash.uniq "^4.5.0"
|
||||
|
||||
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001035, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001157:
|
||||
version "1.0.30001162"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001162.tgz#9f83aad1f42539ce9aab58bb177598f2f8e22ec6"
|
||||
integrity sha512-E9FktFxaNnp4ky3ucIGzEXLM+Knzlpuq1oN1sFAU0KeayygabGTmOsndpo8QrL4D9pcThlf4D2pUKaDxPCUmVw==
|
||||
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001035, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001165:
|
||||
version "1.0.30001165"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001165.tgz#32955490d2f60290bb186bb754f2981917fa744f"
|
||||
integrity sha512-8cEsSMwXfx7lWSUMA2s08z9dIgsnR5NAqjXP23stdsU3AUWkCr/rr4s4OFtHXn5XXr6+7kam3QFVoYyXNPdJPA==
|
||||
|
||||
capture-exit@^2.0.0:
|
||||
version "2.0.0"
|
||||
@ -3405,18 +3402,18 @@ copy-webpack-plugin@^5.1.1:
|
||||
serialize-javascript "^4.0.0"
|
||||
webpack-log "^2.0.0"
|
||||
|
||||
core-js-compat@^3.6.2, core-js-compat@^3.7.0:
|
||||
version "3.8.0"
|
||||
resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.8.0.tgz#3248c6826f4006793bd637db608bca6e4cd688b1"
|
||||
integrity sha512-o9QKelQSxQMYWHXc/Gc4L8bx/4F7TTraE5rhuN8I7mKBt5dBIUpXpIR3omv70ebr8ST5R3PqbDQr+ZI3+Tt1FQ==
|
||||
core-js-compat@^3.6.2, core-js-compat@^3.8.0:
|
||||
version "3.8.1"
|
||||
resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.8.1.tgz#8d1ddd341d660ba6194cbe0ce60f4c794c87a36e"
|
||||
integrity sha512-a16TLmy9NVD1rkjUGbwuyWkiDoN0FDpAwrfLONvHFQx0D9k7J9y0srwMT8QP/Z6HE3MIFaVynEeYwZwPX1o5RQ==
|
||||
dependencies:
|
||||
browserslist "^4.14.7"
|
||||
browserslist "^4.15.0"
|
||||
semver "7.0.0"
|
||||
|
||||
core-js-pure@^3.0.0:
|
||||
version "3.8.0"
|
||||
resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.8.0.tgz#4cdd2eca37d49cda206b66e26204818dba77884a"
|
||||
integrity sha512-fRjhg3NeouotRoIV0L1FdchA6CK7ZD+lyINyMoz19SyV+ROpC4noS1xItWHFtwZdlqfMfVPJEyEGdfri2bD1pA==
|
||||
version "3.8.1"
|
||||
resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.8.1.tgz#23f84048f366fdfcf52d3fd1c68fec349177d119"
|
||||
integrity sha512-Se+LaxqXlVXGvmexKGPvnUIYC1jwXu1H6Pkyb3uBM5d8/NELMYCHs/4/roD7721NxrTLyv7e5nXd5/QLBO+10g==
|
||||
|
||||
core-js@^2.4.0, core-js@^2.6.4:
|
||||
version "2.6.12"
|
||||
@ -3424,9 +3421,9 @@ core-js@^2.4.0, core-js@^2.6.4:
|
||||
integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==
|
||||
|
||||
core-js@^3.5.0:
|
||||
version "3.8.0"
|
||||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.8.0.tgz#0fc2d4941cadf80538b030648bb64d230b4da0ce"
|
||||
integrity sha512-W2VYNB0nwQQE7tKS7HzXd7r2y/y2SVJl4ga6oH/dnaLFzM0o2lB2P3zCkWj5Wc/zyMYjtgd5Hmhk0ObkQFZOIA==
|
||||
version "3.8.1"
|
||||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.8.1.tgz#f51523668ac8a294d1285c3b9db44025fda66d47"
|
||||
integrity sha512-9Id2xHY1W7m8hCl8NkhQn5CufmF/WuR30BTRewvCXc1aZd3kMECwNZ69ndLbekKfakw9Rf2Xyc+QR6E7Gg+obg==
|
||||
|
||||
core-util-is@1.0.2, core-util-is@~1.0.0:
|
||||
version "1.0.2"
|
||||
@ -4100,12 +4097,12 @@ dom-serializer@0:
|
||||
entities "^2.0.0"
|
||||
|
||||
dom-serializer@^1.0.1:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.1.0.tgz#5f7c828f1bfc44887dc2a315ab5c45691d544b58"
|
||||
integrity sha512-ox7bvGXt2n+uLWtCRLybYx60IrOlWL/aCebWJk1T0d4m3y2tzf4U3ij9wBMUb6YJZpz06HCCYuyCDveE2xXmzQ==
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.2.0.tgz#3433d9136aeb3c627981daa385fc7f32d27c48f1"
|
||||
integrity sha512-n6kZFH/KlCrqs/1GHMOd5i2fd/beQHuehKdWvNNffbGHTr/almdhuVvTVFb3V7fglz+nC50fFusu3lY33h12pA==
|
||||
dependencies:
|
||||
domelementtype "^2.0.1"
|
||||
domhandler "^3.0.0"
|
||||
domhandler "^4.0.0"
|
||||
entities "^2.0.0"
|
||||
|
||||
domain-browser@^1.1.1:
|
||||
@ -4118,10 +4115,10 @@ domelementtype@1, domelementtype@^1.3.1:
|
||||
resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f"
|
||||
integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==
|
||||
|
||||
domelementtype@^2.0.1:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.2.tgz#f3b6e549201e46f588b59463dd77187131fe6971"
|
||||
integrity sha512-wFwTwCVebUrMgGeAwRL/NhZtHAUyT9n9yg4IMDwf10+6iCMxSkVq9MGCVEH+QZWo1nNidy8kNvwmv4zWHDTqvA==
|
||||
domelementtype@^2.0.1, domelementtype@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.1.0.tgz#a851c080a6d1c3d94344aed151d99f669edf585e"
|
||||
integrity sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==
|
||||
|
||||
domexception@^1.0.1:
|
||||
version "1.0.1"
|
||||
@ -4137,13 +4134,20 @@ domhandler@^2.3.0:
|
||||
dependencies:
|
||||
domelementtype "1"
|
||||
|
||||
domhandler@^3.0.0, domhandler@^3.3.0:
|
||||
domhandler@^3.3.0:
|
||||
version "3.3.0"
|
||||
resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-3.3.0.tgz#6db7ea46e4617eb15cf875df68b2b8524ce0037a"
|
||||
integrity sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==
|
||||
dependencies:
|
||||
domelementtype "^2.0.1"
|
||||
|
||||
domhandler@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.0.0.tgz#01ea7821de996d85f69029e81fa873c21833098e"
|
||||
integrity sha512-KPTbnGQ1JeEMQyO1iYXoagsI6so/C96HZiFyByU3T6iAzpXn8EGEvct6unm1ZGoed8ByO2oirxgwxBmqKF9haA==
|
||||
dependencies:
|
||||
domelementtype "^2.1.0"
|
||||
|
||||
domutils@1.5.1:
|
||||
version "1.5.1"
|
||||
resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf"
|
||||
@ -4161,21 +4165,21 @@ domutils@^1.5.1, domutils@^1.7.0:
|
||||
domelementtype "1"
|
||||
|
||||
domutils@^2.4.2:
|
||||
version "2.4.2"
|
||||
resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.4.2.tgz#7ee5be261944e1ad487d9aa0616720010123922b"
|
||||
integrity sha512-NKbgaM8ZJOecTZsIzW5gSuplsX2IWW2mIK7xVr8hTQF2v1CJWTmLZ1HOCh5sH+IzVPAGE5IucooOkvwBRAdowA==
|
||||
version "2.4.4"
|
||||
resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.4.4.tgz#282739c4b150d022d34699797369aad8d19bbbd3"
|
||||
integrity sha512-jBC0vOsECI4OMdD0GC9mGn7NXPLb+Qt6KW1YDQzeQYRUFKmNG8lh7mO5HiELfr+lLQE7loDVI4QcAxV80HS+RA==
|
||||
dependencies:
|
||||
dom-serializer "^1.0.1"
|
||||
domelementtype "^2.0.1"
|
||||
domhandler "^3.3.0"
|
||||
domhandler "^4.0.0"
|
||||
|
||||
dot-case@^3.0.3:
|
||||
version "3.0.3"
|
||||
resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.3.tgz#21d3b52efaaba2ea5fda875bb1aa8124521cf4aa"
|
||||
integrity sha512-7hwEmg6RiSQfm/GwPL4AAWXKy3YNNZA3oFv2Pdiey0mwkRCPZ9x6SZbkLcn8Ma5PYeVokzoD4Twv2n7LKp5WeA==
|
||||
dot-case@^3.0.4:
|
||||
version "3.0.4"
|
||||
resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751"
|
||||
integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==
|
||||
dependencies:
|
||||
no-case "^3.0.3"
|
||||
tslib "^1.10.0"
|
||||
no-case "^3.0.4"
|
||||
tslib "^2.0.3"
|
||||
|
||||
dot-prop@^5.2.0:
|
||||
version "5.3.0"
|
||||
@ -4227,10 +4231,10 @@ ejs@^2.6.1:
|
||||
resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba"
|
||||
integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==
|
||||
|
||||
electron-to-chromium@^1.3.378, electron-to-chromium@^1.3.591:
|
||||
version "1.3.610"
|
||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.610.tgz#1254eb394acd220a836ea1f203f8cded4e487052"
|
||||
integrity sha512-eFDC+yVQpEhtlapk4CYDPfV9ajF9cEof5TBcO49L1ETO+aYogrKWDmYpZyxBScMNe8Bo/gJamH4amQ4yyvXg4g==
|
||||
electron-to-chromium@^1.3.378, electron-to-chromium@^1.3.621:
|
||||
version "1.3.621"
|
||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.621.tgz#0bbe2100ef0b28f88d0b1101fbdf433312f69be0"
|
||||
integrity sha512-FeIuBzArONbAmKmZIsZIFGu/Gc9AVGlVeVbhCq+G2YIl6QkT0TDn2HKN/FMf1btXEB9kEmIuQf3/lBTVAbmFOg==
|
||||
|
||||
elliptic@^6.5.3:
|
||||
version "6.5.3"
|
||||
@ -4819,7 +4823,7 @@ extsprintf@^1.2.0:
|
||||
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
|
||||
integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=
|
||||
|
||||
fast-deep-equal@^3.1.1:
|
||||
fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
|
||||
version "3.1.3"
|
||||
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
|
||||
integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
|
||||
@ -5901,9 +5905,9 @@ inherits@2.0.3:
|
||||
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
|
||||
|
||||
ini@^1.3.5:
|
||||
version "1.3.5"
|
||||
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
|
||||
integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==
|
||||
version "1.3.7"
|
||||
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.7.tgz#a09363e1911972ea16d7a8851005d84cf09a9a84"
|
||||
integrity sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==
|
||||
|
||||
inquirer@7.0.4:
|
||||
version "7.0.4"
|
||||
@ -6007,9 +6011,11 @@ is-accessor-descriptor@^1.0.0:
|
||||
kind-of "^6.0.0"
|
||||
|
||||
is-arguments@^1.0.4:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3"
|
||||
integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9"
|
||||
integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==
|
||||
dependencies:
|
||||
call-bind "^1.0.0"
|
||||
|
||||
is-arrayish@^0.2.1:
|
||||
version "0.2.1"
|
||||
@ -6182,9 +6188,9 @@ is-module@^1.0.0:
|
||||
integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=
|
||||
|
||||
is-negative-zero@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.0.tgz#9553b121b0fac28869da9ed459e20c7543788461"
|
||||
integrity sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24"
|
||||
integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==
|
||||
|
||||
is-number@^3.0.0:
|
||||
version "3.0.0"
|
||||
@ -6792,9 +6798,9 @@ js-tokens@^3.0.2:
|
||||
integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls=
|
||||
|
||||
js-yaml@^3.13.1:
|
||||
version "3.14.0"
|
||||
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482"
|
||||
integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==
|
||||
version "3.14.1"
|
||||
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
|
||||
integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
|
||||
dependencies:
|
||||
argparse "^1.0.7"
|
||||
esprima "^4.0.0"
|
||||
@ -7225,12 +7231,12 @@ loud-rejection@^1.0.0:
|
||||
currently-unhandled "^0.4.1"
|
||||
signal-exit "^3.0.0"
|
||||
|
||||
lower-case@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.1.tgz#39eeb36e396115cc05e29422eaea9e692c9408c7"
|
||||
integrity sha512-LiWgfDLLb1dwbFQZsSglpRj+1ctGnayXz3Uv0/WO8n558JycT5fg6zkNcnW0G68Nn0aEldTFeEfmjCfmqry/rQ==
|
||||
lower-case@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28"
|
||||
integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==
|
||||
dependencies:
|
||||
tslib "^1.10.0"
|
||||
tslib "^2.0.3"
|
||||
|
||||
lru-cache@^4.0.1:
|
||||
version "4.1.5"
|
||||
@ -7247,6 +7253,13 @@ lru-cache@^5.1.1:
|
||||
dependencies:
|
||||
yallist "^3.0.2"
|
||||
|
||||
lru-cache@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
|
||||
integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
|
||||
dependencies:
|
||||
yallist "^4.0.0"
|
||||
|
||||
magic-string@^0.25.0, magic-string@^0.25.7:
|
||||
version "0.25.7"
|
||||
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051"
|
||||
@ -7591,11 +7604,16 @@ ms@2.1.1:
|
||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
|
||||
integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
|
||||
|
||||
ms@2.1.2, ms@^2.1.1:
|
||||
ms@2.1.2:
|
||||
version "2.1.2"
|
||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
|
||||
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
|
||||
|
||||
ms@^2.1.1:
|
||||
version "2.1.3"
|
||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
|
||||
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
|
||||
|
||||
multicast-dns-service-types@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901"
|
||||
@ -7661,13 +7679,13 @@ nice-try@^1.0.4:
|
||||
resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
|
||||
integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
|
||||
|
||||
no-case@^3.0.3:
|
||||
version "3.0.3"
|
||||
resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.3.tgz#c21b434c1ffe48b39087e86cfb4d2582e9df18f8"
|
||||
integrity sha512-ehY/mVQCf9BL0gKfsJBvFJen+1V//U+0HQMPrWct40ixE4jnv0bfvxDbWtAHL9EcaPEOJHVVYKoQn1TlZUB8Tw==
|
||||
no-case@^3.0.4:
|
||||
version "3.0.4"
|
||||
resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d"
|
||||
integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==
|
||||
dependencies:
|
||||
lower-case "^2.0.1"
|
||||
tslib "^1.10.0"
|
||||
lower-case "^2.0.2"
|
||||
tslib "^2.0.3"
|
||||
|
||||
node-forge@^0.10.0:
|
||||
version "0.10.0"
|
||||
@ -7742,7 +7760,7 @@ node-notifier@^5.4.2:
|
||||
shellwords "^0.1.1"
|
||||
which "^1.3.0"
|
||||
|
||||
node-releases@^1.1.52, node-releases@^1.1.66:
|
||||
node-releases@^1.1.52, node-releases@^1.1.67:
|
||||
version "1.1.67"
|
||||
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.67.tgz#28ebfcccd0baa6aad8e8d4d8fe4cbc49ae239c12"
|
||||
integrity sha512-V5QF9noGFl3EymEwUYzO+3NTDpGfQB4ve6Qfnzf3UNydMhjQRVPR1DZTuvWiLzaFJYw2fmDwAfnRNEVb64hSIg==
|
||||
@ -7883,9 +7901,9 @@ object-hash@^2.0.1:
|
||||
integrity sha512-JPKn0GMu+Fa3zt3Bmr66JhokJU5BaNBIh4ZeTlaCBzrBsOeXzwcKKAK1tbLiPKgvwmPXsDvvLHoWh5Bm7ofIYg==
|
||||
|
||||
object-inspect@^1.8.0:
|
||||
version "1.8.0"
|
||||
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0"
|
||||
integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==
|
||||
version "1.9.0"
|
||||
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a"
|
||||
integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==
|
||||
|
||||
object-is@^1.0.1:
|
||||
version "1.1.4"
|
||||
@ -8175,12 +8193,12 @@ parallel-transform@^1.1.0:
|
||||
readable-stream "^2.1.5"
|
||||
|
||||
param-case@^3.0.3:
|
||||
version "3.0.3"
|
||||
resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.3.tgz#4be41f8399eff621c56eebb829a5e451d9801238"
|
||||
integrity sha512-VWBVyimc1+QrzappRs7waeN2YmoZFCGXWASRYX1/rGHtXqEcrGEIDm+jqIwFa2fRXNgQEwrxaYuIrX0WcAguTA==
|
||||
version "3.0.4"
|
||||
resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5"
|
||||
integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==
|
||||
dependencies:
|
||||
dot-case "^3.0.3"
|
||||
tslib "^1.10.0"
|
||||
dot-case "^3.0.4"
|
||||
tslib "^2.0.3"
|
||||
|
||||
parent-module@^1.0.0:
|
||||
version "1.0.1"
|
||||
@ -8240,13 +8258,13 @@ parseurl@~1.3.2, parseurl@~1.3.3:
|
||||
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
|
||||
integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
|
||||
|
||||
pascal-case@^3.1.1:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.1.tgz#5ac1975133ed619281e88920973d2cd1f279de5f"
|
||||
integrity sha512-XIeHKqIrsquVTQL2crjq3NfJUxmdLasn3TYOU0VBM+UX2a6ztAWBlJQBePLGY7VHW8+2dRadeIPK5+KImwTxQA==
|
||||
pascal-case@^3.1.2:
|
||||
version "3.1.2"
|
||||
resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb"
|
||||
integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==
|
||||
dependencies:
|
||||
no-case "^3.0.3"
|
||||
tslib "^1.10.0"
|
||||
no-case "^3.0.4"
|
||||
tslib "^2.0.3"
|
||||
|
||||
pascalcase@^0.1.1:
|
||||
version "0.1.1"
|
||||
@ -9427,9 +9445,9 @@ react-app-polyfill@^1.0.6:
|
||||
whatwg-fetch "^3.0.0"
|
||||
|
||||
react-app-rewired@^2.1.6:
|
||||
version "2.1.6"
|
||||
resolved "https://registry.yarnpkg.com/react-app-rewired/-/react-app-rewired-2.1.6.tgz#33ee3076a7f34d6a7c94e649cac67e7c8c580de8"
|
||||
integrity sha512-06flj0kK5tf/RN4naRv/sn6j3sQd7rsURoRLKLpffXDzJeNiAaTNic+0I8Basojy5WDwREkTqrMLewSAjcb13w==
|
||||
version "2.1.7"
|
||||
resolved "https://registry.yarnpkg.com/react-app-rewired/-/react-app-rewired-2.1.7.tgz#b229d32b93b076059e62b06e8117109b92599e18"
|
||||
integrity sha512-SIq7yRIohZzeO432WHlfvEEzOYs4JfOIoUIU663eIFt/ucUoqJxQwW1FClhhL21V6F8bqI+8URJoBlB0yUEKaA==
|
||||
dependencies:
|
||||
semver "^5.6.0"
|
||||
|
||||
@ -9661,9 +9679,9 @@ react-scripts@3.4.3:
|
||||
fsevents "2.1.2"
|
||||
|
||||
react-svg@^11.0.9:
|
||||
version "11.1.3"
|
||||
resolved "https://registry.yarnpkg.com/react-svg/-/react-svg-11.1.3.tgz#14c3f1552b0893319e7466e22797cf7f08a3bfb8"
|
||||
integrity sha512-OSrg4mVXgGK+Qypraa0d68bI8e6ubcBGes9lqcaMdSgPjfrzFTe4yaG94UdROwk5JvFVLKTquc4lRuvqOY92KQ==
|
||||
version "11.1.4"
|
||||
resolved "https://registry.yarnpkg.com/react-svg/-/react-svg-11.1.4.tgz#1a828bcf6193bae09609080fbcae29cb6bed62dc"
|
||||
integrity sha512-Xx3dZNCbTc4wgogf5joE2PcJBcKplfVJGAvgYqIu+/XNSqB1KTutmebn77bO9XT6uHXSBSoy11jCDw/6fddAFQ==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.12.5"
|
||||
"@tanem/svg-injector" "^8.1.0"
|
||||
@ -10399,9 +10417,11 @@ semver@7.0.0:
|
||||
integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==
|
||||
|
||||
semver@^7.3.2:
|
||||
version "7.3.2"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938"
|
||||
integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==
|
||||
version "7.3.4"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97"
|
||||
integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==
|
||||
dependencies:
|
||||
lru-cache "^6.0.0"
|
||||
|
||||
semver@~5.3.0:
|
||||
version "5.3.0"
|
||||
@ -11407,7 +11427,7 @@ ts-pnp@^1.1.6:
|
||||
resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92"
|
||||
integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==
|
||||
|
||||
tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0:
|
||||
tslib@^1.8.1, tslib@^1.9.0:
|
||||
version "1.14.1"
|
||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
|
||||
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
|
||||
@ -11487,9 +11507,9 @@ typedarray@^0.0.6:
|
||||
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
|
||||
|
||||
ua-parser-js@^0.7.22:
|
||||
version "0.7.22"
|
||||
resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.22.tgz#960df60a5f911ea8f1c818f3747b99c6e177eae3"
|
||||
integrity sha512-YUxzMjJ5T71w6a8WWVcMGM6YWOTX27rCoIQgLXiWaxqXSx9D7DNjiGWn1aJIRSQ5qr0xuhra77bSIh6voR/46Q==
|
||||
version "0.7.23"
|
||||
resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.23.tgz#704d67f951e13195fbcd3d78818577f5bc1d547b"
|
||||
integrity sha512-m4hvMLxgGHXG3O3fQVAyyAQpZzDOvwnhOTjYz5Xmr7r/+LpkNy3vJXdVRWgd1TkAb7NGROZuSy96CrlNVjA7KA==
|
||||
|
||||
unicode-canonical-property-names-ecmascript@^1.0.4:
|
||||
version "1.0.4"
|
||||
@ -12340,9 +12360,9 @@ xmlchars@^2.1.1:
|
||||
integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==
|
||||
|
||||
xregexp@^4.3.0:
|
||||
version "4.4.0"
|
||||
resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.4.0.tgz#29660f5d6567cd2ef981dd4a50cb05d22c10719d"
|
||||
integrity sha512-83y4aa8o8o4NZe+L+46wpa+F1cWR/wCGOWI3tzqUso0w3/KAvXy0+Di7Oe/cbNMixDR4Jmi7NEybWU6ps25Wkg==
|
||||
version "4.4.1"
|
||||
resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.4.1.tgz#c84a88fa79e9ab18ca543959712094492185fe65"
|
||||
integrity sha512-2u9HwfadaJaY9zHtRRnH6BY6CQVNQKkYm3oLtC9gJXXzfsbACg5X5e4EZZGVAH+YIfa+QA9lsFQTTe3HURF3ag==
|
||||
dependencies:
|
||||
"@babel/runtime-corejs3" "^7.12.1"
|
||||
|
||||
@ -12352,9 +12372,9 @@ xtend@^4.0.0, xtend@~4.0.1:
|
||||
integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
|
||||
|
||||
y18n@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
|
||||
integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4"
|
||||
integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==
|
||||
|
||||
yallist@^2.1.2:
|
||||
version "2.1.2"
|
||||
|
@ -52,7 +52,7 @@ namespace ASC.Employee.Core.Controllers
|
||||
var result = UserManager.GetDepartments().Select(r => r);
|
||||
if (!string.IsNullOrEmpty(ApiContext.FilterValue))
|
||||
{
|
||||
result = result.Where(r => r.Name.Contains(ApiContext.FilterValue));
|
||||
result = result.Where(r => r.Name.Contains(ApiContext.FilterValue, StringComparison.InvariantCultureIgnoreCase));
|
||||
}
|
||||
return result.Select(x => new GroupWrapperSummary(x, UserManager));
|
||||
}
|
||||
|
@ -7,6 +7,7 @@
|
||||
"asc-web-components": "file:../../packages/asc-web-components",
|
||||
"axios": "^0.19.1",
|
||||
"connected-react-router": "6.6.1",
|
||||
"fast-deep-equal": "^3.1.3",
|
||||
"history": "4.10.1",
|
||||
"i18next": "19.0.3",
|
||||
"i18next-browser-languagedetector": "4.0.1",
|
||||
|
@ -212,16 +212,5 @@
|
||||
To begin the development, run `npm start` or `yarn start`.
|
||||
To create a production bundle, use `npm run build` or `yarn build`.
|
||||
-->
|
||||
<script>
|
||||
if (localStorage.getItem("asc_auth_key")){
|
||||
let el = document.getElementById("burger-loader-svg");
|
||||
let el1 = document.getElementById("logo-loader-svg");
|
||||
let el2 = document.getElementById("avatar-loader-svg");
|
||||
|
||||
el.style.display = "block";
|
||||
el1.style.display = "block";
|
||||
el2.style.display = "block";
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -3,7 +3,6 @@ import { Router, Route, Switch } from "react-router-dom";
|
||||
import { connect } from "react-redux";
|
||||
import {
|
||||
store as CommonStore,
|
||||
constants,
|
||||
history,
|
||||
PrivateRoute,
|
||||
PublicRoute,
|
||||
@ -29,35 +28,43 @@ const {
|
||||
getUser,
|
||||
getPortalSettings,
|
||||
getModules,
|
||||
getIsAuthenticated,
|
||||
} = CommonStore.auth.actions;
|
||||
|
||||
class App extends React.Component {
|
||||
componentDidMount() {
|
||||
utils.removeTempContent();
|
||||
const {
|
||||
getPortalSettings,
|
||||
getUser,
|
||||
getModules,
|
||||
setIsLoaded,
|
||||
getIsAuthenticated,
|
||||
} = this.props;
|
||||
|
||||
const { getPortalSettings, getUser, getModules, setIsLoaded } = this.props;
|
||||
getIsAuthenticated()
|
||||
.then((isAuthenticated) => {
|
||||
if (isAuthenticated) utils.updateTempContent(isAuthenticated);
|
||||
const requests = [];
|
||||
if (!isAuthenticated) {
|
||||
requests.push(getPortalSettings());
|
||||
} else if (
|
||||
!window.location.pathname.includes("confirm/EmailActivation")
|
||||
) {
|
||||
requests.push(getUser());
|
||||
requests.push(getPortalSettings());
|
||||
requests.push(getModules());
|
||||
}
|
||||
|
||||
const { AUTH_KEY } = constants;
|
||||
|
||||
const token = localStorage.getItem(AUTH_KEY);
|
||||
|
||||
const requests = [];
|
||||
|
||||
if (!token) {
|
||||
requests.push(getPortalSettings());
|
||||
} else if (!window.location.pathname.includes("confirm/EmailActivation")) {
|
||||
requests.push(getUser());
|
||||
requests.push(getPortalSettings());
|
||||
requests.push(getModules());
|
||||
}
|
||||
|
||||
Promise.all(requests)
|
||||
.catch((e) => {
|
||||
toastr.error(e);
|
||||
Promise.all(requests)
|
||||
.catch((e) => {
|
||||
toastr.error(e);
|
||||
})
|
||||
.finally(() => {
|
||||
utils.updateTempContent();
|
||||
setIsLoaded();
|
||||
});
|
||||
})
|
||||
.finally(() => {
|
||||
setIsLoaded();
|
||||
});
|
||||
.catch((err) => toastr.error(err));
|
||||
}
|
||||
|
||||
render() {
|
||||
@ -116,6 +123,7 @@ const mapStateToProps = (state) => {
|
||||
|
||||
const mapDispatchToProps = (dispatch) => {
|
||||
return {
|
||||
getIsAuthenticated: () => getIsAuthenticated(dispatch),
|
||||
getPortalSettings: () => getPortalSettings(dispatch),
|
||||
getUser: () => getUser(dispatch),
|
||||
getModules: () => getModules(dispatch),
|
||||
|
@ -2,9 +2,12 @@ import React, { Suspense, lazy, useEffect } from "react";
|
||||
import { Route, Switch } from "react-router-dom";
|
||||
import ConfirmRoute from "../../../helpers/confirmRoute";
|
||||
import { I18nextProvider } from "react-i18next";
|
||||
import { Error404, utils } from "asc-web-common";
|
||||
|
||||
import { Error404, utils, store, PageLayout, Loaders } from "asc-web-common";
|
||||
import { createI18N } from "../../../helpers/i18n";
|
||||
import { connect } from "react-redux";
|
||||
|
||||
const { getIsLoaded } = store.auth.selectors;
|
||||
|
||||
const i18n = createI18N({
|
||||
page: "Confirm",
|
||||
localesPath: "pages/Confirm",
|
||||
@ -23,13 +26,19 @@ const ChangePhoneForm = lazy(() => import("./sub-components/changePhone"));
|
||||
const ProfileRemoveForm = lazy(() => import("./sub-components/profileRemove"));
|
||||
const ChangeOwnerForm = lazy(() => import("./sub-components/changeOwner"));
|
||||
|
||||
const Confirm = ({ match }) => {
|
||||
const Confirm = ({ match, isLoaded }) => {
|
||||
useEffect(() => {
|
||||
changeLanguage(i18n);
|
||||
}, []);
|
||||
|
||||
//console.log("Confirm render");
|
||||
return (
|
||||
!isLoaded ? <PageLayout>
|
||||
<PageLayout.SectionBody>
|
||||
<Loaders.Rectangle height="90vh"/>
|
||||
</PageLayout.SectionBody>
|
||||
</PageLayout> :
|
||||
|
||||
<I18nextProvider i18n={i18n}>
|
||||
<Suspense fallback={null}>
|
||||
<Switch>
|
||||
@ -80,4 +89,10 @@ const Confirm = ({ match }) => {
|
||||
);
|
||||
};
|
||||
|
||||
export default Confirm;
|
||||
function mapStateToProps(state) {
|
||||
return {
|
||||
isLoaded: getIsLoaded(state)
|
||||
};
|
||||
}
|
||||
|
||||
export default connect(mapStateToProps)(Confirm);
|
||||
|
@ -5,13 +5,14 @@ import { Loader } from "asc-web-components";
|
||||
import { PageLayout } from "asc-web-common";
|
||||
import { connect } from "react-redux";
|
||||
import PropTypes from "prop-types";
|
||||
import { store } from "asc-web-common";
|
||||
import { store, utils as commonUtils } from "asc-web-common";
|
||||
import { changeEmail } from "../../../../store/confirm/actions";
|
||||
const { logout } = store.auth.actions;
|
||||
const { tryRedirectTo } = commonUtils;
|
||||
|
||||
class ActivateEmail extends React.PureComponent {
|
||||
componentDidMount() {
|
||||
const { history, logout, changeEmail, linkData } = this.props;
|
||||
const { logout, changeEmail, linkData } = this.props;
|
||||
const [email, uid, key] = [
|
||||
linkData.email,
|
||||
linkData.uid,
|
||||
@ -20,11 +21,11 @@ class ActivateEmail extends React.PureComponent {
|
||||
logout();
|
||||
changeEmail(uid, email, key)
|
||||
.then((res) => {
|
||||
history.push(`/login/confirmed-email=${email}`);
|
||||
tryRedirectTo(`/login/confirmed-email=${email}`);
|
||||
})
|
||||
.catch((e) => {
|
||||
// console.log('activate email error', e);
|
||||
history.push(`/login/error=${e}`);
|
||||
tryRedirectTo(`/login/error=${e}`);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -19,7 +19,7 @@ import {
|
||||
activateConfirmUser,
|
||||
} from "../../../../store/confirm/actions";
|
||||
const { EmployeeActivationStatus } = constants;
|
||||
const { createPasswordHash } = commonUtils;
|
||||
const { createPasswordHash, tryRedirectTo } = commonUtils;
|
||||
const inputWidth = "400px";
|
||||
|
||||
const ConfirmContainer = styled.div`
|
||||
@ -82,7 +82,7 @@ class Confirm extends React.PureComponent {
|
||||
|
||||
onSubmit = (e) => {
|
||||
this.setState({ isLoading: true }, function () {
|
||||
const { activateConfirmUser, history, hashSettings } = this.props;
|
||||
const { activateConfirmUser, hashSettings, defaultPage } = this.props;
|
||||
|
||||
this.setState({ errorText: "" });
|
||||
|
||||
@ -131,7 +131,7 @@ class Confirm extends React.PureComponent {
|
||||
this.state.userId,
|
||||
EmployeeActivationStatus.Activated
|
||||
)
|
||||
.then(() => history.push("/"))
|
||||
.then(() => tryRedirectTo(defaultPage))
|
||||
.catch((error) => {
|
||||
console.error("activate error", error);
|
||||
this.setState({
|
||||
@ -344,6 +344,7 @@ function mapStateToProps(state) {
|
||||
settings: state.auth.settings.passwordSettings,
|
||||
greetingTitle: state.auth.settings.greetingSettings,
|
||||
hashSettings: state.auth.settings.hashSettings,
|
||||
defaultPage: state.auth.settings.defaultPage,
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -2,10 +2,11 @@ import React from "react";
|
||||
import { withRouter } from "react-router";
|
||||
import { withTranslation } from "react-i18next";
|
||||
import { Loader } from "asc-web-components";
|
||||
import { PageLayout } from "asc-web-common";
|
||||
import { PageLayout, utils as commonUtils } from "asc-web-common";
|
||||
import { connect } from "react-redux";
|
||||
import PropTypes from "prop-types";
|
||||
import { changeEmail } from "../../../../store/confirm/actions";
|
||||
const { tryRedirectTo } = commonUtils;
|
||||
|
||||
class ChangeEmail extends React.PureComponent {
|
||||
componentDidMount() {
|
||||
@ -15,29 +16,33 @@ class ChangeEmail extends React.PureComponent {
|
||||
changeEmail(userId, email, key)
|
||||
.then((res) => {
|
||||
console.log("change client email success", res);
|
||||
window.location.href = `${window.location.origin}/products/people/view/@self?email_change=success`;
|
||||
tryRedirectTo(
|
||||
`${window.location.origin}/products/people/view/@self?email_change=success`
|
||||
);
|
||||
})
|
||||
.catch((e) => {
|
||||
console.log("change client email error", e);
|
||||
window.location.href = `${window.location.origin}/error=${e}`;
|
||||
tryRedirectTo(`${window.location.origin}/error=${e}`);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
componentDidUpdate() {
|
||||
const { changeEmail, userId, isLoaded, linkData } = this.props;
|
||||
const { changeEmail, userId, isLoaded, linkData, defaultPage } = this.props;
|
||||
if (isLoaded) {
|
||||
const [email, key] = [linkData.email, linkData.confirmHeader];
|
||||
changeEmail(userId, email, key)
|
||||
.then((res) => {
|
||||
console.log("change client email success", res);
|
||||
window.location.href = `${window.location.origin}/products/people/view/@self?email_change=success`;
|
||||
tryRedirectTo(
|
||||
`${window.location.origin}/products/people/view/@self?email_change=success`
|
||||
);
|
||||
})
|
||||
.catch((e) => {
|
||||
console.log("change client email error", e);
|
||||
});
|
||||
} else {
|
||||
window.location.href = "/";
|
||||
tryRedirectTo(defaultPage);
|
||||
}
|
||||
}
|
||||
|
||||
@ -63,6 +68,7 @@ function mapStateToProps(state) {
|
||||
return {
|
||||
isLoaded: state.auth.isLoaded,
|
||||
userId: state.auth.user.id,
|
||||
defaultPage: state.auth.settings.defaultPage,
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -4,7 +4,8 @@ import { withTranslation } from "react-i18next";
|
||||
import { connect } from "react-redux";
|
||||
import styled from "styled-components";
|
||||
import { Button, Text, toastr } from "asc-web-components";
|
||||
import { PageLayout } from "asc-web-common";
|
||||
import { PageLayout, utils as commonUtils } from "asc-web-common";
|
||||
const { tryRedirectTo } = commonUtils;
|
||||
|
||||
const BodyStyle = styled.div`
|
||||
margin-top: 70px;
|
||||
@ -58,11 +59,11 @@ class Form extends React.PureComponent {
|
||||
};
|
||||
|
||||
onRedirect = () => {
|
||||
this.props.history.push("/");
|
||||
tryRedirectTo(this.props.defaultPage);
|
||||
};
|
||||
|
||||
onCancelClick = () => {
|
||||
this.props.history.push("/");
|
||||
tryRedirectTo(this.props.defaultPage);
|
||||
};
|
||||
|
||||
render() {
|
||||
@ -126,7 +127,10 @@ const ChangePasswordForm = (props) => (
|
||||
);
|
||||
|
||||
function mapStateToProps(state) {
|
||||
return { greetingTitle: state.auth.settings.greetingSettings };
|
||||
return {
|
||||
greetingTitle: state.auth.settings.greetingSettings,
|
||||
defaultPage: state.auth.settings.defaultPage,
|
||||
};
|
||||
}
|
||||
|
||||
export default connect(
|
||||
|
@ -19,7 +19,7 @@ import {
|
||||
changePassword,
|
||||
} from "../../../../store/confirm/actions";
|
||||
|
||||
const { createPasswordHash } = commonUtils;
|
||||
const { createPasswordHash, tryRedirectTo } = commonUtils;
|
||||
const { logout } = store.auth.actions;
|
||||
|
||||
const BodyStyle = styled.form`
|
||||
@ -80,7 +80,7 @@ class Form extends React.PureComponent {
|
||||
onSubmit = (e) => {
|
||||
this.setState({ isLoading: true }, function () {
|
||||
const { userId, password, key } = this.state;
|
||||
const { history, changePassword, hashSettings } = this.props;
|
||||
const { changePassword, hashSettings, defaultPage } = this.props;
|
||||
let hasError = false;
|
||||
|
||||
if (!this.state.passwordValid) {
|
||||
@ -99,8 +99,8 @@ class Form extends React.PureComponent {
|
||||
changePassword(userId, hash, key)
|
||||
.then(() => this.props.logout())
|
||||
.then(() => {
|
||||
history.push("/");
|
||||
toastr.success(this.props.t("ChangePasswordSuccess"));
|
||||
tryRedirectTo(defaultPage);
|
||||
})
|
||||
.catch((error) => {
|
||||
toastr.error(this.props.t(`${error}`));
|
||||
@ -110,10 +110,10 @@ class Form extends React.PureComponent {
|
||||
};
|
||||
|
||||
componentDidMount() {
|
||||
const { getConfirmationInfo, history } = this.props;
|
||||
const { getConfirmationInfo, defaultPage } = this.props;
|
||||
getConfirmationInfo(this.state.key).catch((error) => {
|
||||
toastr.error(this.props.t(`${error}`));
|
||||
history.push("/");
|
||||
tryRedirectTo(defaultPage);
|
||||
});
|
||||
|
||||
window.addEventListener("keydown", this.onKeyPress);
|
||||
@ -221,6 +221,7 @@ function mapStateToProps(state) {
|
||||
isAuthenticated: state.auth.isAuthenticated,
|
||||
greetingTitle: state.auth.settings.greetingSettings,
|
||||
hashSettings: state.auth.settings.hashSettings,
|
||||
defaultPage: state.auth.settings.defaultPage,
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -50,7 +50,7 @@ const PhoneForm = (props) => {
|
||||
const buttonTranslation = `Enter number`;
|
||||
|
||||
const onSubmit = () => {
|
||||
console.log("onSubmit CHANGE");
|
||||
console.log("onSubmit CHANGE"); //TODO: Why do nothing?
|
||||
};
|
||||
|
||||
const onKeyPress = (target) => {
|
||||
|
@ -19,7 +19,7 @@ import {
|
||||
createConfirmUser,
|
||||
} from "../../../../store/confirm/actions";
|
||||
const { logout, login } = store.auth.actions;
|
||||
const { createPasswordHash } = commonUtils;
|
||||
const { createPasswordHash, tryRedirectTo } = commonUtils;
|
||||
const inputWidth = "400px";
|
||||
|
||||
const ConfirmContainer = styled.div`
|
||||
@ -89,7 +89,7 @@ class Confirm extends React.PureComponent {
|
||||
|
||||
onSubmit = () => {
|
||||
this.setState({ isLoading: true }, () => {
|
||||
const { history, createConfirmUser, linkData, hashSettings } = this.props;
|
||||
const { defaultPage, createConfirmUser, linkData, hashSettings } = this.props;
|
||||
const isVisitor = parseInt(linkData.emplType) === 2;
|
||||
|
||||
this.setState({ errorText: "" });
|
||||
@ -142,7 +142,7 @@ class Confirm extends React.PureComponent {
|
||||
createConfirmUser(registerData, loginData, this.state.key)
|
||||
.then(() => {
|
||||
toastr.success("User has been created successfully");
|
||||
return history.push("/");
|
||||
tryRedirectTo(defaultPage);
|
||||
})
|
||||
.catch((error) => {
|
||||
console.error("confirm error", error);
|
||||
@ -368,6 +368,7 @@ function mapStateToProps(state) {
|
||||
settings: state.auth.settings.passwordSettings,
|
||||
greetingTitle: state.auth.settings.greetingSettings,
|
||||
hashSettings: state.auth.settings.hashSettings,
|
||||
defaultPage: state.auth.settings.defaultPage
|
||||
};
|
||||
}
|
||||
|
||||
@ -375,5 +376,5 @@ export default connect(mapStateToProps, {
|
||||
getConfirmationInfo,
|
||||
createConfirmUser,
|
||||
login,
|
||||
logout,
|
||||
logout
|
||||
})(withRouter(withTranslation()(CreateUserForm)));
|
||||
|
@ -78,7 +78,7 @@ Tiles.propTypes = {
|
||||
isPrimary: PropTypes.bool.isRequired,
|
||||
};
|
||||
|
||||
const Body = ({ modules, match, isLoaded, organizationName }) => {
|
||||
const Body = ({ modules, match, isLoaded }) => {
|
||||
const { t } = useTranslation("translation", { i18n });
|
||||
const { error } = match.params;
|
||||
|
||||
@ -106,13 +106,18 @@ const Body = ({ modules, match, isLoaded, organizationName }) => {
|
||||
);
|
||||
};
|
||||
|
||||
const Home = (props) => (
|
||||
<PageLayout>
|
||||
<PageLayout.SectionBody>
|
||||
<Body {...props} />
|
||||
</PageLayout.SectionBody>
|
||||
</PageLayout>
|
||||
);
|
||||
const Home = (props) => {
|
||||
const { defaultPage } = props;
|
||||
return utils.tryRedirectTo(defaultPage) ? (
|
||||
<></>
|
||||
) : (
|
||||
<PageLayout>
|
||||
<PageLayout.SectionBody>
|
||||
<Body {...props} />
|
||||
</PageLayout.SectionBody>
|
||||
</PageLayout>
|
||||
);
|
||||
};
|
||||
|
||||
Home.propTypes = {
|
||||
modules: PropTypes.array.isRequired,
|
||||
@ -121,11 +126,11 @@ Home.propTypes = {
|
||||
|
||||
function mapStateToProps(state) {
|
||||
const { modules, isLoaded, settings } = state.auth;
|
||||
const { organizationName } = settings;
|
||||
const { defaultPage } = settings;
|
||||
return {
|
||||
modules,
|
||||
isLoaded,
|
||||
organizationName,
|
||||
defaultPage,
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,6 @@
|
||||
import differenceWith from "lodash/differenceWith";
|
||||
import isEqual from "lodash/isEqual";
|
||||
import equal from "fast-deep-equal/es6/react";
|
||||
import isEmpty from "lodash/isEmpty";
|
||||
|
||||
export const isArrayEqual = (arr1, arr2) => {
|
||||
return isEmpty(differenceWith(arr1, arr2, isEqual));
|
||||
return isEmpty(equal(arr1, arr2));
|
||||
};
|
||||
|
@ -4,9 +4,9 @@ import { ValidationResult } from "./../helpers/constants";
|
||||
import { Loader } from "asc-web-components";
|
||||
import { connect } from "react-redux";
|
||||
import { withRouter } from "react-router";
|
||||
import { api, constants, utils, PageLayout } from "asc-web-common";
|
||||
import { api, utils, PageLayout, store } from "asc-web-common";
|
||||
const { isAuthenticated } = store.auth.selectors;
|
||||
const { checkConfirmLink } = api.user;
|
||||
const { AUTH_KEY } = constants;
|
||||
const { getObjectByLocation } = utils;
|
||||
|
||||
class ConfirmRoute extends React.Component {
|
||||
@ -19,14 +19,14 @@ class ConfirmRoute extends React.Component {
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
const { forUnauthorized, history } = this.props;
|
||||
const { forUnauthorized, history, isAuthenticated } = this.props;
|
||||
|
||||
if (forUnauthorized && localStorage.getItem(AUTH_KEY))
|
||||
if (forUnauthorized && isAuthenticated)
|
||||
return history.push(
|
||||
`/error=Access error. You should be unauthorized for performing this action`
|
||||
);
|
||||
|
||||
const { location, isAuthenticated } = this.props;
|
||||
const { location } = this.props;
|
||||
const { search } = location;
|
||||
|
||||
const queryParams = getObjectByLocation(location);
|
||||
@ -100,7 +100,7 @@ class ConfirmRoute extends React.Component {
|
||||
|
||||
function mapStateToProps(state) {
|
||||
return {
|
||||
isAuthenticated: state.auth.isAuthenticated,
|
||||
isAuthenticated: isAuthenticated(state)
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -5,10 +5,7 @@ import store from "./store/store";
|
||||
import "./custom.scss";
|
||||
import App from "./App";
|
||||
import * as serviceWorker from "./serviceWorker";
|
||||
import { ErrorBoundary, utils } from "asc-web-common";
|
||||
const { redirectToDefaultPage } = utils;
|
||||
|
||||
redirectToDefaultPage();
|
||||
import { ErrorBoundary } from "asc-web-common";
|
||||
|
||||
ReactDOM.render(
|
||||
<Provider store={store}>
|
||||
|
@ -30,9 +30,27 @@ export function createConfirmUser(registerData, loginData, key) {
|
||||
return (dispatch) => {
|
||||
return api.people
|
||||
.createUser(data, key)
|
||||
.then((user) => dispatch(setCurrentUser(user)))
|
||||
.then(() => api.user.login(loginData.userName, loginData.passwordHash))
|
||||
.then(() => loadInitInfo(dispatch));
|
||||
.then((user) => {
|
||||
dispatch(setCurrentUser(user));
|
||||
})
|
||||
.then(() => {
|
||||
const promise = new Promise((resolve, reject) => {
|
||||
setTimeout(() => {
|
||||
login(
|
||||
loginData.userName,
|
||||
loginData.passwordHash
|
||||
)(dispatch)
|
||||
.then(() => {
|
||||
resolve(loadInitInfo(dispatch));
|
||||
})
|
||||
.catch((e) => {
|
||||
reject(e);
|
||||
});
|
||||
}, 1000);
|
||||
});
|
||||
|
||||
return promise;
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
@ -56,7 +74,22 @@ export function activateConfirmUser(
|
||||
return api.people.updateActivationStatus(activationStatus, userId, key);
|
||||
})
|
||||
.then((data) => {
|
||||
return dispatch(login(loginData.userName, loginData.passwordHash));
|
||||
const promise = new Promise((resolve, reject) => {
|
||||
setTimeout(() => {
|
||||
login(
|
||||
data.userName,
|
||||
data.passwordHash
|
||||
)(dispatch)
|
||||
.then(() => {
|
||||
resolve(loadInitInfo(dispatch));
|
||||
})
|
||||
.catch((e) => {
|
||||
reject(e);
|
||||
});
|
||||
}, 1000);
|
||||
});
|
||||
|
||||
return promise;
|
||||
})
|
||||
.then((data) => {
|
||||
return api.people.updateUser(changedData);
|
||||
|
@ -52,42 +52,41 @@
|
||||
source-map "^0.5.0"
|
||||
|
||||
"@babel/core@^7.1.0", "@babel/core@^7.4.5", "@babel/core@^7.8.4":
|
||||
version "7.12.9"
|
||||
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.9.tgz#fd450c4ec10cdbb980e2928b7aa7a28484593fc8"
|
||||
integrity sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==
|
||||
version "7.12.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.10.tgz#b79a2e1b9f70ed3d84bbfb6d8c4ef825f606bccd"
|
||||
integrity sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w==
|
||||
dependencies:
|
||||
"@babel/code-frame" "^7.10.4"
|
||||
"@babel/generator" "^7.12.5"
|
||||
"@babel/generator" "^7.12.10"
|
||||
"@babel/helper-module-transforms" "^7.12.1"
|
||||
"@babel/helpers" "^7.12.5"
|
||||
"@babel/parser" "^7.12.7"
|
||||
"@babel/parser" "^7.12.10"
|
||||
"@babel/template" "^7.12.7"
|
||||
"@babel/traverse" "^7.12.9"
|
||||
"@babel/types" "^7.12.7"
|
||||
"@babel/traverse" "^7.12.10"
|
||||
"@babel/types" "^7.12.10"
|
||||
convert-source-map "^1.7.0"
|
||||
debug "^4.1.0"
|
||||
gensync "^1.0.0-beta.1"
|
||||
json5 "^2.1.2"
|
||||
lodash "^4.17.19"
|
||||
resolve "^1.3.2"
|
||||
semver "^5.4.1"
|
||||
source-map "^0.5.0"
|
||||
|
||||
"@babel/generator@^7.12.5", "@babel/generator@^7.4.0", "@babel/generator@^7.9.0":
|
||||
version "7.12.5"
|
||||
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.5.tgz#a2c50de5c8b6d708ab95be5e6053936c1884a4de"
|
||||
integrity sha512-m16TQQJ8hPt7E+OS/XVQg/7U184MLXtvuGbCdA7na61vha+ImkyyNM/9DDA0unYCVZn3ZOhng+qz48/KBOT96A==
|
||||
"@babel/generator@^7.12.10", "@babel/generator@^7.4.0", "@babel/generator@^7.9.0":
|
||||
version "7.12.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.10.tgz#2b188fc329fb8e4f762181703beffc0fe6df3460"
|
||||
integrity sha512-6mCdfhWgmqLdtTkhXjnIz0LcdVCd26wS2JXRtj2XY0u5klDsXBREA/pG5NVOuVnF2LUrBGNFtQkIqqTbblg0ww==
|
||||
dependencies:
|
||||
"@babel/types" "^7.12.5"
|
||||
"@babel/types" "^7.12.10"
|
||||
jsesc "^2.5.1"
|
||||
source-map "^0.5.0"
|
||||
|
||||
"@babel/helper-annotate-as-pure@^7.0.0", "@babel/helper-annotate-as-pure@^7.10.4":
|
||||
version "7.10.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3"
|
||||
integrity sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA==
|
||||
"@babel/helper-annotate-as-pure@^7.0.0", "@babel/helper-annotate-as-pure@^7.10.4", "@babel/helper-annotate-as-pure@^7.12.10":
|
||||
version "7.12.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.10.tgz#54ab9b000e60a93644ce17b3f37d313aaf1d115d"
|
||||
integrity sha512-XplmVbC1n+KY6jL8/fgLVXXUauDIB+lD5+GsQEh6F6GBF1dq1qy4DP4yXWzDKcoqXB3X58t61e85Fitoww4JVQ==
|
||||
dependencies:
|
||||
"@babel/types" "^7.10.4"
|
||||
"@babel/types" "^7.12.10"
|
||||
|
||||
"@babel/helper-builder-binary-assignment-operator-visitor@^7.10.4":
|
||||
version "7.10.4"
|
||||
@ -97,14 +96,14 @@
|
||||
"@babel/helper-explode-assignable-expression" "^7.10.4"
|
||||
"@babel/types" "^7.10.4"
|
||||
|
||||
"@babel/helper-builder-react-jsx-experimental@^7.12.4":
|
||||
version "7.12.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.12.4.tgz#55fc1ead5242caa0ca2875dcb8eed6d311e50f48"
|
||||
integrity sha512-AjEa0jrQqNk7eDQOo0pTfUOwQBMF+xVqrausQwT9/rTKy0g04ggFNaJpaE09IQMn9yExluigWMJcj0WC7bq+Og==
|
||||
"@babel/helper-builder-react-jsx-experimental@^7.12.10", "@babel/helper-builder-react-jsx-experimental@^7.12.4":
|
||||
version "7.12.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.12.10.tgz#a58cb96a793dc0fcd5c9ed3bb36d62fdc60534c2"
|
||||
integrity sha512-3Kcr2LGpL7CTRDTTYm1bzeor9qZbxbvU2AxsLA6mUG9gYarSfIKMK0UlU+azLWI+s0+BH768bwyaziWB2NOJlQ==
|
||||
dependencies:
|
||||
"@babel/helper-annotate-as-pure" "^7.10.4"
|
||||
"@babel/helper-module-imports" "^7.12.1"
|
||||
"@babel/types" "^7.12.1"
|
||||
"@babel/helper-annotate-as-pure" "^7.12.10"
|
||||
"@babel/helper-module-imports" "^7.12.5"
|
||||
"@babel/types" "^7.12.10"
|
||||
|
||||
"@babel/helper-builder-react-jsx@^7.10.4":
|
||||
version "7.10.4"
|
||||
@ -169,11 +168,11 @@
|
||||
"@babel/types" "^7.10.4"
|
||||
|
||||
"@babel/helper-get-function-arity@^7.10.4":
|
||||
version "7.10.4"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz#98c1cbea0e2332f33f9a4661b8ce1505b2c19ba2"
|
||||
integrity sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==
|
||||
version "7.12.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz#b158817a3165b5faa2047825dfa61970ddcc16cf"
|
||||
integrity sha512-mm0n5BPjR06wh9mPQaDdXWDoll/j5UpCAPl1x8fS71GHm7HA6Ua2V4ylG1Ju8lvcTOietbPNNPaSilKj+pj+Ag==
|
||||
dependencies:
|
||||
"@babel/types" "^7.10.4"
|
||||
"@babel/types" "^7.12.10"
|
||||
|
||||
"@babel/helper-hoist-variables@^7.10.4":
|
||||
version "7.10.4"
|
||||
@ -212,11 +211,11 @@
|
||||
lodash "^4.17.19"
|
||||
|
||||
"@babel/helper-optimise-call-expression@^7.10.4":
|
||||
version "7.12.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.7.tgz#7f94ae5e08721a49467346aa04fd22f750033b9c"
|
||||
integrity sha512-I5xc9oSJ2h59OwyUqjv95HRyzxj53DAubUERgQMrpcCEYQyToeHA+NEcUEsVWB4j53RDeskeBJ0SgRAYHDBckw==
|
||||
version "7.12.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.10.tgz#94ca4e306ee11a7dd6e9f42823e2ac6b49881e2d"
|
||||
integrity sha512-4tpbU0SrSTjjt65UMWSrUOPZTsgvPgGG4S8QSTNHacKzpS51IVWGDj0yCwyeZND/i+LSN2g/O63jEXEWm49sYQ==
|
||||
dependencies:
|
||||
"@babel/types" "^7.12.7"
|
||||
"@babel/types" "^7.12.10"
|
||||
|
||||
"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3":
|
||||
version "7.10.4"
|
||||
@ -301,10 +300,10 @@
|
||||
chalk "^2.0.0"
|
||||
js-tokens "^4.0.0"
|
||||
|
||||
"@babel/parser@^7.1.0", "@babel/parser@^7.12.7", "@babel/parser@^7.4.3", "@babel/parser@^7.7.0", "@babel/parser@^7.9.0":
|
||||
version "7.12.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.7.tgz#fee7b39fe809d0e73e5b25eecaf5780ef3d73056"
|
||||
integrity sha512-oWR02Ubp4xTLCAqPRiNIuMVgNO5Aif/xpXtabhzW2HWUD47XJsAB4Zd/Rg30+XeQA3juXigV7hlquOTmwqLiwg==
|
||||
"@babel/parser@^7.1.0", "@babel/parser@^7.12.10", "@babel/parser@^7.12.7", "@babel/parser@^7.4.3", "@babel/parser@^7.7.0", "@babel/parser@^7.9.0":
|
||||
version "7.12.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.10.tgz#824600d59e96aea26a5a2af5a9d812af05c3ae81"
|
||||
integrity sha512-PJdRPwyoOqFAWfLytxrWwGrAxghCgh/yTNCYciOz8QgjflA7aZhECPZAa2VUedKg2+QMWkI0L9lynh2SNmNEgA==
|
||||
|
||||
"@babel/plugin-proposal-async-generator-functions@^7.12.1", "@babel/plugin-proposal-async-generator-functions@^7.8.3":
|
||||
version "7.12.1"
|
||||
@ -788,27 +787,27 @@
|
||||
"@babel/helper-plugin-utils" "^7.10.4"
|
||||
"@babel/plugin-syntax-jsx" "^7.12.1"
|
||||
|
||||
"@babel/plugin-transform-react-jsx-self@^7.12.1", "@babel/plugin-transform-react-jsx-self@^7.9.0":
|
||||
"@babel/plugin-transform-react-jsx-self@^7.9.0":
|
||||
version "7.12.1"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.12.1.tgz#ef43cbca2a14f1bd17807dbe4376ff89d714cf28"
|
||||
integrity sha512-FbpL0ieNWiiBB5tCldX17EtXgmzeEZjFrix72rQYeq9X6nUK38HCaxexzVQrZWXanxKJPKVVIU37gFjEQYkPkA==
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.10.4"
|
||||
|
||||
"@babel/plugin-transform-react-jsx-source@^7.12.1", "@babel/plugin-transform-react-jsx-source@^7.9.0":
|
||||
"@babel/plugin-transform-react-jsx-source@^7.9.0":
|
||||
version "7.12.1"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.12.1.tgz#d07de6863f468da0809edcf79a1aa8ce2a82a26b"
|
||||
integrity sha512-keQ5kBfjJNRc6zZN1/nVHCd6LLIHq4aUKcVnvE/2l+ZZROSbqoiGFRtT5t3Is89XJxBQaP7NLZX2jgGHdZvvFQ==
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.10.4"
|
||||
|
||||
"@babel/plugin-transform-react-jsx@^7.12.7", "@babel/plugin-transform-react-jsx@^7.9.1":
|
||||
version "7.12.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.7.tgz#8b14d45f6eccd41b7f924bcb65c021e9f0a06f7f"
|
||||
integrity sha512-YFlTi6MEsclFAPIDNZYiCRbneg1MFGao9pPG9uD5htwE0vDbPaMUMeYd6itWjw7K4kro4UbdQf3ljmFl9y48dQ==
|
||||
"@babel/plugin-transform-react-jsx@^7.12.10", "@babel/plugin-transform-react-jsx@^7.9.1":
|
||||
version "7.12.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.10.tgz#a7af3097c73479123594c8c8fe39545abebd44e3"
|
||||
integrity sha512-MM7/BC8QdHXM7Qc1wdnuk73R4gbuOpfrSUgfV/nODGc86sPY1tgmY2M9E9uAnf2e4DOIp8aKGWqgZfQxnTNGuw==
|
||||
dependencies:
|
||||
"@babel/helper-builder-react-jsx" "^7.10.4"
|
||||
"@babel/helper-builder-react-jsx-experimental" "^7.12.4"
|
||||
"@babel/helper-builder-react-jsx-experimental" "^7.12.10"
|
||||
"@babel/helper-plugin-utils" "^7.10.4"
|
||||
"@babel/plugin-syntax-jsx" "^7.12.1"
|
||||
|
||||
@ -873,10 +872,10 @@
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.10.4"
|
||||
|
||||
"@babel/plugin-transform-typeof-symbol@^7.12.1", "@babel/plugin-transform-typeof-symbol@^7.8.4":
|
||||
version "7.12.1"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.1.tgz#9ca6be343d42512fbc2e68236a82ae64bc7af78a"
|
||||
integrity sha512-EPGgpGy+O5Kg5pJFNDKuxt9RdmTgj5sgrus2XVeMp/ZIbOESadgILUbm50SNpghOh3/6yrbsH+NB5+WJTmsA7Q==
|
||||
"@babel/plugin-transform-typeof-symbol@^7.12.10", "@babel/plugin-transform-typeof-symbol@^7.8.4":
|
||||
version "7.12.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.10.tgz#de01c4c8f96580bd00f183072b0d0ecdcf0dec4b"
|
||||
integrity sha512-JQ6H8Rnsogh//ijxspCjc21YPd3VLVoYtAwv3zQmqAt8YGYUtdo5usNhdl4b9/Vir2kPFZl6n1h0PfUz4hJhaA==
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.10.4"
|
||||
|
||||
@ -971,9 +970,9 @@
|
||||
semver "^5.5.0"
|
||||
|
||||
"@babel/preset-env@^7.4.5", "@babel/preset-env@^7.8.4":
|
||||
version "7.12.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.7.tgz#54ea21dbe92caf6f10cb1a0a576adc4ebf094b55"
|
||||
integrity sha512-OnNdfAr1FUQg7ksb7bmbKoby4qFOHw6DKWWUNB9KqnnCldxhxJlP+21dpyaWFmf2h0rTbOkXJtAGevY3XW1eew==
|
||||
version "7.12.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.12.10.tgz#ca981b95f641f2610531bd71948656306905e6ab"
|
||||
integrity sha512-Gz9hnBT/tGeTE2DBNDkD7BiWRELZt+8lSysHuDwmYXUIvtwZl0zI+D6mZgXZX0u8YBlLS4tmai9ONNY9tjRgRA==
|
||||
dependencies:
|
||||
"@babel/compat-data" "^7.12.7"
|
||||
"@babel/helper-compilation-targets" "^7.12.5"
|
||||
@ -1034,12 +1033,12 @@
|
||||
"@babel/plugin-transform-spread" "^7.12.1"
|
||||
"@babel/plugin-transform-sticky-regex" "^7.12.7"
|
||||
"@babel/plugin-transform-template-literals" "^7.12.1"
|
||||
"@babel/plugin-transform-typeof-symbol" "^7.12.1"
|
||||
"@babel/plugin-transform-typeof-symbol" "^7.12.10"
|
||||
"@babel/plugin-transform-unicode-escapes" "^7.12.1"
|
||||
"@babel/plugin-transform-unicode-regex" "^7.12.1"
|
||||
"@babel/preset-modules" "^0.1.3"
|
||||
"@babel/types" "^7.12.7"
|
||||
core-js-compat "^3.7.0"
|
||||
"@babel/types" "^7.12.10"
|
||||
core-js-compat "^3.8.0"
|
||||
semver "^5.5.0"
|
||||
|
||||
"@babel/preset-modules@^0.1.3":
|
||||
@ -1066,16 +1065,14 @@
|
||||
"@babel/plugin-transform-react-jsx-source" "^7.9.0"
|
||||
|
||||
"@babel/preset-react@^7.0.0":
|
||||
version "7.12.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.12.7.tgz#36d61d83223b07b6ac4ec55cf016abb0f70be83b"
|
||||
integrity sha512-wKeTdnGUP5AEYCYQIMeXMMwU7j+2opxrG0WzuZfxuuW9nhKvvALBjl67653CWamZJVefuJGI219G591RSldrqQ==
|
||||
version "7.12.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.12.10.tgz#4fed65f296cbb0f5fb09de6be8cddc85cc909be9"
|
||||
integrity sha512-vtQNjaHRl4DUpp+t+g4wvTHsLQuye+n0H/wsXIZRn69oz/fvNC7gQ4IK73zGJBaxvHoxElDvnYCthMcT7uzFoQ==
|
||||
dependencies:
|
||||
"@babel/helper-plugin-utils" "^7.10.4"
|
||||
"@babel/plugin-transform-react-display-name" "^7.12.1"
|
||||
"@babel/plugin-transform-react-jsx" "^7.12.7"
|
||||
"@babel/plugin-transform-react-jsx" "^7.12.10"
|
||||
"@babel/plugin-transform-react-jsx-development" "^7.12.7"
|
||||
"@babel/plugin-transform-react-jsx-self" "^7.12.1"
|
||||
"@babel/plugin-transform-react-jsx-source" "^7.12.1"
|
||||
"@babel/plugin-transform-react-pure-annotations" "^7.12.1"
|
||||
|
||||
"@babel/preset-typescript@7.9.0":
|
||||
@ -1117,25 +1114,25 @@
|
||||
"@babel/parser" "^7.12.7"
|
||||
"@babel/types" "^7.12.7"
|
||||
|
||||
"@babel/traverse@^7.1.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.5", "@babel/traverse@^7.12.9", "@babel/traverse@^7.4.3", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.0", "@babel/traverse@^7.9.0":
|
||||
version "7.12.9"
|
||||
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.9.tgz#fad26c972eabbc11350e0b695978de6cc8e8596f"
|
||||
integrity sha512-iX9ajqnLdoU1s1nHt36JDI9KG4k+vmI8WgjK5d+aDTwQbL2fUnzedNedssA645Ede3PM2ma1n8Q4h2ohwXgMXw==
|
||||
"@babel/traverse@^7.1.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.10", "@babel/traverse@^7.12.5", "@babel/traverse@^7.4.3", "@babel/traverse@^7.4.5", "@babel/traverse@^7.7.0", "@babel/traverse@^7.9.0":
|
||||
version "7.12.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.10.tgz#2d1f4041e8bf42ea099e5b2dc48d6a594c00017a"
|
||||
integrity sha512-6aEtf0IeRgbYWzta29lePeYSk+YAFIC3kyqESeft8o5CkFlYIMX+EQDDWEiAQ9LHOA3d0oHdgrSsID/CKqXJlg==
|
||||
dependencies:
|
||||
"@babel/code-frame" "^7.10.4"
|
||||
"@babel/generator" "^7.12.5"
|
||||
"@babel/generator" "^7.12.10"
|
||||
"@babel/helper-function-name" "^7.10.4"
|
||||
"@babel/helper-split-export-declaration" "^7.11.0"
|
||||
"@babel/parser" "^7.12.7"
|
||||
"@babel/types" "^7.12.7"
|
||||
"@babel/parser" "^7.12.10"
|
||||
"@babel/types" "^7.12.10"
|
||||
debug "^4.1.0"
|
||||
globals "^11.1.0"
|
||||
lodash "^4.17.19"
|
||||
|
||||
"@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.11.0", "@babel/types@^7.12.1", "@babel/types@^7.12.5", "@babel/types@^7.12.7", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0", "@babel/types@^7.9.0":
|
||||
version "7.12.7"
|
||||
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.7.tgz#6039ff1e242640a29452c9ae572162ec9a8f5d13"
|
||||
integrity sha512-MNyI92qZq6jrQkXvtIiykvl4WtoRrVV9MPn+ZfsoEENjiWcBQ3ZSHrkxnJWgWtLX3XXqX5hrSQ+X69wkmesXuQ==
|
||||
"@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.11.0", "@babel/types@^7.12.1", "@babel/types@^7.12.10", "@babel/types@^7.12.5", "@babel/types@^7.12.7", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0", "@babel/types@^7.9.0":
|
||||
version "7.12.10"
|
||||
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.10.tgz#7965e4a7260b26f09c56bcfcb0498af1f6d9b260"
|
||||
integrity sha512-sf6wboJV5mGyip2hIpDSKsr80RszPinEFjsHTalMxZAZkoQ2/2yQzxlcFN52SJqsyPfLtPmenL4g2KB3KJXPDw==
|
||||
dependencies:
|
||||
"@babel/helper-validator-identifier" "^7.10.4"
|
||||
lodash "^4.17.19"
|
||||
@ -1547,9 +1544,9 @@
|
||||
"@babel/types" "^7.0.0"
|
||||
|
||||
"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6":
|
||||
version "7.0.16"
|
||||
resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.16.tgz#0bbbf70c7bc4193210dd27e252c51260a37cd6a7"
|
||||
integrity sha512-S63Dt4CZOkuTmpLGGWtT/mQdVORJOpx6SZWGVaP56dda/0Nx5nEe82K7/LAm8zYr6SfMq+1N2OreIOrHAx656w==
|
||||
version "7.11.0"
|
||||
resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.11.0.tgz#b9a1efa635201ba9bc850323a8793ee2d36c04a0"
|
||||
integrity sha512-kSjgDMZONiIfSH1Nxcr5JIRMwUetDki63FSQfpTCz8ogF3Ulqm8+mr5f78dUYs6vMiB6gBusQqfQmBvHZj/lwg==
|
||||
dependencies:
|
||||
"@babel/types" "^7.3.0"
|
||||
|
||||
@ -1607,9 +1604,9 @@
|
||||
integrity sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==
|
||||
|
||||
"@types/node@*":
|
||||
version "14.14.10"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.10.tgz#5958a82e41863cfc71f2307b3748e3491ba03785"
|
||||
integrity sha512-J32dgx2hw8vXrSbu4ZlVhn1Nm3GbeCFNw2FWL8S5QKucHGY0cyNwjdQdO+KMBZ4wpmC7KhLCiNsdk1RFRIYUQQ==
|
||||
version "14.14.12"
|
||||
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.12.tgz#0b1d86f8c40141091285dea02e4940df73bba43f"
|
||||
integrity sha512-ASH8OPHMNlkdjrEdmoILmzFfsJICvhBsFfAum4aKZ/9U4B6M6tTmTPh+f3ttWdD74CEGV5XvXWkbyfSdXaTd7g==
|
||||
|
||||
"@types/parse-json@^4.0.0":
|
||||
version "4.0.0"
|
||||
@ -2159,7 +2156,7 @@ asap@~2.0.6:
|
||||
integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=
|
||||
|
||||
"asc-web-common@file:../../packages/asc-web-common":
|
||||
version "1.0.281"
|
||||
version "1.0.289"
|
||||
dependencies:
|
||||
axios "^0.19.1"
|
||||
history "4.10.1"
|
||||
@ -2176,7 +2173,7 @@ asap@~2.0.6:
|
||||
sjcl "^1.0.8"
|
||||
|
||||
"asc-web-components@file:../../packages/asc-web-components":
|
||||
version "1.0.488"
|
||||
version "1.0.492"
|
||||
dependencies:
|
||||
email-addresses "^3.1.0"
|
||||
html-to-react "^1.4.2"
|
||||
@ -2730,16 +2727,16 @@ browserslist@4.10.0:
|
||||
node-releases "^1.1.52"
|
||||
pkg-up "^3.1.0"
|
||||
|
||||
browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.14.7, browserslist@^4.6.2, browserslist@^4.6.4, browserslist@^4.9.1:
|
||||
version "4.14.7"
|
||||
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.14.7.tgz#c071c1b3622c1c2e790799a37bb09473a4351cb6"
|
||||
integrity sha512-BSVRLCeG3Xt/j/1cCGj1019Wbty0H+Yvu2AOuZSuoaUWn3RatbL33Cxk+Q4jRMRAbOm0p7SLravLjpnT6s0vzQ==
|
||||
browserslist@^4.0.0, browserslist@^4.12.0, browserslist@^4.14.5, browserslist@^4.15.0, browserslist@^4.6.2, browserslist@^4.6.4, browserslist@^4.9.1:
|
||||
version "4.16.0"
|
||||
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.0.tgz#410277627500be3cb28a1bfe037586fbedf9488b"
|
||||
integrity sha512-/j6k8R0p3nxOC6kx5JGAxsnhc9ixaWJfYc+TNTzxg6+ARaESAvQGV7h0uNOB4t+pLQJZWzcrMxXOxjgsCj3dqQ==
|
||||
dependencies:
|
||||
caniuse-lite "^1.0.30001157"
|
||||
caniuse-lite "^1.0.30001165"
|
||||
colorette "^1.2.1"
|
||||
electron-to-chromium "^1.3.591"
|
||||
electron-to-chromium "^1.3.621"
|
||||
escalade "^3.1.1"
|
||||
node-releases "^1.1.66"
|
||||
node-releases "^1.1.67"
|
||||
|
||||
bser@2.1.1:
|
||||
version "2.1.1"
|
||||
@ -2890,12 +2887,12 @@ callsites@^3.0.0:
|
||||
integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
|
||||
|
||||
camel-case@^4.1.1:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.1.tgz#1fc41c854f00e2f7d0139dfeba1542d6896fe547"
|
||||
integrity sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q==
|
||||
version "4.1.2"
|
||||
resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a"
|
||||
integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==
|
||||
dependencies:
|
||||
pascal-case "^3.1.1"
|
||||
tslib "^1.10.0"
|
||||
pascal-case "^3.1.2"
|
||||
tslib "^2.0.3"
|
||||
|
||||
camelcase-keys@^2.0.0:
|
||||
version "2.1.0"
|
||||
@ -2935,10 +2932,10 @@ caniuse-api@^3.0.0:
|
||||
lodash.memoize "^4.1.2"
|
||||
lodash.uniq "^4.5.0"
|
||||
|
||||
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001035, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001157:
|
||||
version "1.0.30001162"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001162.tgz#9f83aad1f42539ce9aab58bb177598f2f8e22ec6"
|
||||
integrity sha512-E9FktFxaNnp4ky3ucIGzEXLM+Knzlpuq1oN1sFAU0KeayygabGTmOsndpo8QrL4D9pcThlf4D2pUKaDxPCUmVw==
|
||||
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30000981, caniuse-lite@^1.0.30001035, caniuse-lite@^1.0.30001109, caniuse-lite@^1.0.30001165:
|
||||
version "1.0.30001165"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001165.tgz#32955490d2f60290bb186bb754f2981917fa744f"
|
||||
integrity sha512-8cEsSMwXfx7lWSUMA2s08z9dIgsnR5NAqjXP23stdsU3AUWkCr/rr4s4OFtHXn5XXr6+7kam3QFVoYyXNPdJPA==
|
||||
|
||||
capture-exit@^2.0.0:
|
||||
version "2.0.0"
|
||||
@ -3398,18 +3395,18 @@ copy-webpack-plugin@^5.1.1:
|
||||
serialize-javascript "^4.0.0"
|
||||
webpack-log "^2.0.0"
|
||||
|
||||
core-js-compat@^3.6.2, core-js-compat@^3.7.0:
|
||||
version "3.8.0"
|
||||
resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.8.0.tgz#3248c6826f4006793bd637db608bca6e4cd688b1"
|
||||
integrity sha512-o9QKelQSxQMYWHXc/Gc4L8bx/4F7TTraE5rhuN8I7mKBt5dBIUpXpIR3omv70ebr8ST5R3PqbDQr+ZI3+Tt1FQ==
|
||||
core-js-compat@^3.6.2, core-js-compat@^3.8.0:
|
||||
version "3.8.1"
|
||||
resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.8.1.tgz#8d1ddd341d660ba6194cbe0ce60f4c794c87a36e"
|
||||
integrity sha512-a16TLmy9NVD1rkjUGbwuyWkiDoN0FDpAwrfLONvHFQx0D9k7J9y0srwMT8QP/Z6HE3MIFaVynEeYwZwPX1o5RQ==
|
||||
dependencies:
|
||||
browserslist "^4.14.7"
|
||||
browserslist "^4.15.0"
|
||||
semver "7.0.0"
|
||||
|
||||
core-js-pure@^3.0.0:
|
||||
version "3.8.0"
|
||||
resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.8.0.tgz#4cdd2eca37d49cda206b66e26204818dba77884a"
|
||||
integrity sha512-fRjhg3NeouotRoIV0L1FdchA6CK7ZD+lyINyMoz19SyV+ROpC4noS1xItWHFtwZdlqfMfVPJEyEGdfri2bD1pA==
|
||||
version "3.8.1"
|
||||
resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.8.1.tgz#23f84048f366fdfcf52d3fd1c68fec349177d119"
|
||||
integrity sha512-Se+LaxqXlVXGvmexKGPvnUIYC1jwXu1H6Pkyb3uBM5d8/NELMYCHs/4/roD7721NxrTLyv7e5nXd5/QLBO+10g==
|
||||
|
||||
core-js@^2.4.0, core-js@^2.6.4:
|
||||
version "2.6.12"
|
||||
@ -3417,9 +3414,9 @@ core-js@^2.4.0, core-js@^2.6.4:
|
||||
integrity sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==
|
||||
|
||||
core-js@^3.5.0:
|
||||
version "3.8.0"
|
||||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.8.0.tgz#0fc2d4941cadf80538b030648bb64d230b4da0ce"
|
||||
integrity sha512-W2VYNB0nwQQE7tKS7HzXd7r2y/y2SVJl4ga6oH/dnaLFzM0o2lB2P3zCkWj5Wc/zyMYjtgd5Hmhk0ObkQFZOIA==
|
||||
version "3.8.1"
|
||||
resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.8.1.tgz#f51523668ac8a294d1285c3b9db44025fda66d47"
|
||||
integrity sha512-9Id2xHY1W7m8hCl8NkhQn5CufmF/WuR30BTRewvCXc1aZd3kMECwNZ69ndLbekKfakw9Rf2Xyc+QR6E7Gg+obg==
|
||||
|
||||
core-util-is@1.0.2, core-util-is@~1.0.0:
|
||||
version "1.0.2"
|
||||
@ -4093,12 +4090,12 @@ dom-serializer@0:
|
||||
entities "^2.0.0"
|
||||
|
||||
dom-serializer@^1.0.1:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.1.0.tgz#5f7c828f1bfc44887dc2a315ab5c45691d544b58"
|
||||
integrity sha512-ox7bvGXt2n+uLWtCRLybYx60IrOlWL/aCebWJk1T0d4m3y2tzf4U3ij9wBMUb6YJZpz06HCCYuyCDveE2xXmzQ==
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.2.0.tgz#3433d9136aeb3c627981daa385fc7f32d27c48f1"
|
||||
integrity sha512-n6kZFH/KlCrqs/1GHMOd5i2fd/beQHuehKdWvNNffbGHTr/almdhuVvTVFb3V7fglz+nC50fFusu3lY33h12pA==
|
||||
dependencies:
|
||||
domelementtype "^2.0.1"
|
||||
domhandler "^3.0.0"
|
||||
domhandler "^4.0.0"
|
||||
entities "^2.0.0"
|
||||
|
||||
domain-browser@^1.1.1:
|
||||
@ -4111,10 +4108,10 @@ domelementtype@1, domelementtype@^1.3.1:
|
||||
resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f"
|
||||
integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==
|
||||
|
||||
domelementtype@^2.0.1:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.0.2.tgz#f3b6e549201e46f588b59463dd77187131fe6971"
|
||||
integrity sha512-wFwTwCVebUrMgGeAwRL/NhZtHAUyT9n9yg4IMDwf10+6iCMxSkVq9MGCVEH+QZWo1nNidy8kNvwmv4zWHDTqvA==
|
||||
domelementtype@^2.0.1, domelementtype@^2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.1.0.tgz#a851c080a6d1c3d94344aed151d99f669edf585e"
|
||||
integrity sha512-LsTgx/L5VpD+Q8lmsXSHW2WpA+eBlZ9HPf3erD1IoPF00/3JKHZ3BknUVA2QGDNu69ZNmyFmCWBSO45XjYKC5w==
|
||||
|
||||
domexception@^1.0.1:
|
||||
version "1.0.1"
|
||||
@ -4130,13 +4127,20 @@ domhandler@^2.3.0:
|
||||
dependencies:
|
||||
domelementtype "1"
|
||||
|
||||
domhandler@^3.0.0, domhandler@^3.3.0:
|
||||
domhandler@^3.3.0:
|
||||
version "3.3.0"
|
||||
resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-3.3.0.tgz#6db7ea46e4617eb15cf875df68b2b8524ce0037a"
|
||||
integrity sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==
|
||||
dependencies:
|
||||
domelementtype "^2.0.1"
|
||||
|
||||
domhandler@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.0.0.tgz#01ea7821de996d85f69029e81fa873c21833098e"
|
||||
integrity sha512-KPTbnGQ1JeEMQyO1iYXoagsI6so/C96HZiFyByU3T6iAzpXn8EGEvct6unm1ZGoed8ByO2oirxgwxBmqKF9haA==
|
||||
dependencies:
|
||||
domelementtype "^2.1.0"
|
||||
|
||||
domutils@1.5.1:
|
||||
version "1.5.1"
|
||||
resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.5.1.tgz#dcd8488a26f563d61079e48c9f7b7e32373682cf"
|
||||
@ -4154,21 +4158,21 @@ domutils@^1.5.1, domutils@^1.7.0:
|
||||
domelementtype "1"
|
||||
|
||||
domutils@^2.4.2:
|
||||
version "2.4.2"
|
||||
resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.4.2.tgz#7ee5be261944e1ad487d9aa0616720010123922b"
|
||||
integrity sha512-NKbgaM8ZJOecTZsIzW5gSuplsX2IWW2mIK7xVr8hTQF2v1CJWTmLZ1HOCh5sH+IzVPAGE5IucooOkvwBRAdowA==
|
||||
version "2.4.4"
|
||||
resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.4.4.tgz#282739c4b150d022d34699797369aad8d19bbbd3"
|
||||
integrity sha512-jBC0vOsECI4OMdD0GC9mGn7NXPLb+Qt6KW1YDQzeQYRUFKmNG8lh7mO5HiELfr+lLQE7loDVI4QcAxV80HS+RA==
|
||||
dependencies:
|
||||
dom-serializer "^1.0.1"
|
||||
domelementtype "^2.0.1"
|
||||
domhandler "^3.3.0"
|
||||
domhandler "^4.0.0"
|
||||
|
||||
dot-case@^3.0.3:
|
||||
version "3.0.3"
|
||||
resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.3.tgz#21d3b52efaaba2ea5fda875bb1aa8124521cf4aa"
|
||||
integrity sha512-7hwEmg6RiSQfm/GwPL4AAWXKy3YNNZA3oFv2Pdiey0mwkRCPZ9x6SZbkLcn8Ma5PYeVokzoD4Twv2n7LKp5WeA==
|
||||
dot-case@^3.0.4:
|
||||
version "3.0.4"
|
||||
resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751"
|
||||
integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==
|
||||
dependencies:
|
||||
no-case "^3.0.3"
|
||||
tslib "^1.10.0"
|
||||
no-case "^3.0.4"
|
||||
tslib "^2.0.3"
|
||||
|
||||
dot-prop@^5.2.0:
|
||||
version "5.3.0"
|
||||
@ -4220,10 +4224,10 @@ ejs@^2.6.1:
|
||||
resolved "https://registry.yarnpkg.com/ejs/-/ejs-2.7.4.tgz#48661287573dcc53e366c7a1ae52c3a120eec9ba"
|
||||
integrity sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==
|
||||
|
||||
electron-to-chromium@^1.3.378, electron-to-chromium@^1.3.591:
|
||||
version "1.3.610"
|
||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.610.tgz#1254eb394acd220a836ea1f203f8cded4e487052"
|
||||
integrity sha512-eFDC+yVQpEhtlapk4CYDPfV9ajF9cEof5TBcO49L1ETO+aYogrKWDmYpZyxBScMNe8Bo/gJamH4amQ4yyvXg4g==
|
||||
electron-to-chromium@^1.3.378, electron-to-chromium@^1.3.621:
|
||||
version "1.3.621"
|
||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.621.tgz#0bbe2100ef0b28f88d0b1101fbdf433312f69be0"
|
||||
integrity sha512-FeIuBzArONbAmKmZIsZIFGu/Gc9AVGlVeVbhCq+G2YIl6QkT0TDn2HKN/FMf1btXEB9kEmIuQf3/lBTVAbmFOg==
|
||||
|
||||
elliptic@^6.5.3:
|
||||
version "6.5.3"
|
||||
@ -4812,7 +4816,7 @@ extsprintf@^1.2.0:
|
||||
resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
|
||||
integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8=
|
||||
|
||||
fast-deep-equal@^3.1.1:
|
||||
fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
|
||||
version "3.1.3"
|
||||
resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
|
||||
integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
|
||||
@ -5894,9 +5898,9 @@ inherits@2.0.3:
|
||||
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
|
||||
|
||||
ini@^1.3.5:
|
||||
version "1.3.5"
|
||||
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
|
||||
integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==
|
||||
version "1.3.7"
|
||||
resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.7.tgz#a09363e1911972ea16d7a8851005d84cf09a9a84"
|
||||
integrity sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==
|
||||
|
||||
inquirer@7.0.4:
|
||||
version "7.0.4"
|
||||
@ -6000,9 +6004,11 @@ is-accessor-descriptor@^1.0.0:
|
||||
kind-of "^6.0.0"
|
||||
|
||||
is-arguments@^1.0.4:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3"
|
||||
integrity sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9"
|
||||
integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==
|
||||
dependencies:
|
||||
call-bind "^1.0.0"
|
||||
|
||||
is-arrayish@^0.2.1:
|
||||
version "0.2.1"
|
||||
@ -6175,9 +6181,9 @@ is-module@^1.0.0:
|
||||
integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE=
|
||||
|
||||
is-negative-zero@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.0.tgz#9553b121b0fac28869da9ed459e20c7543788461"
|
||||
integrity sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24"
|
||||
integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==
|
||||
|
||||
is-number@^3.0.0:
|
||||
version "3.0.0"
|
||||
@ -6785,9 +6791,9 @@ js-tokens@^3.0.2:
|
||||
integrity sha1-mGbfOVECEw449/mWvOtlRDIJwls=
|
||||
|
||||
js-yaml@^3.13.1:
|
||||
version "3.14.0"
|
||||
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482"
|
||||
integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==
|
||||
version "3.14.1"
|
||||
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
|
||||
integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
|
||||
dependencies:
|
||||
argparse "^1.0.7"
|
||||
esprima "^4.0.0"
|
||||
@ -7218,12 +7224,12 @@ loud-rejection@^1.0.0:
|
||||
currently-unhandled "^0.4.1"
|
||||
signal-exit "^3.0.0"
|
||||
|
||||
lower-case@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.1.tgz#39eeb36e396115cc05e29422eaea9e692c9408c7"
|
||||
integrity sha512-LiWgfDLLb1dwbFQZsSglpRj+1ctGnayXz3Uv0/WO8n558JycT5fg6zkNcnW0G68Nn0aEldTFeEfmjCfmqry/rQ==
|
||||
lower-case@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28"
|
||||
integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==
|
||||
dependencies:
|
||||
tslib "^1.10.0"
|
||||
tslib "^2.0.3"
|
||||
|
||||
lru-cache@^4.0.1:
|
||||
version "4.1.5"
|
||||
@ -7240,6 +7246,13 @@ lru-cache@^5.1.1:
|
||||
dependencies:
|
||||
yallist "^3.0.2"
|
||||
|
||||
lru-cache@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
|
||||
integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
|
||||
dependencies:
|
||||
yallist "^4.0.0"
|
||||
|
||||
magic-string@^0.25.0, magic-string@^0.25.7:
|
||||
version "0.25.7"
|
||||
resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051"
|
||||
@ -7584,11 +7597,16 @@ ms@2.1.1:
|
||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a"
|
||||
integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==
|
||||
|
||||
ms@2.1.2, ms@^2.1.1:
|
||||
ms@2.1.2:
|
||||
version "2.1.2"
|
||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
|
||||
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
|
||||
|
||||
ms@^2.1.1:
|
||||
version "2.1.3"
|
||||
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
|
||||
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
|
||||
|
||||
multicast-dns-service-types@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz#899f11d9686e5e05cb91b35d5f0e63b773cfc901"
|
||||
@ -7654,13 +7672,13 @@ nice-try@^1.0.4:
|
||||
resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
|
||||
integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==
|
||||
|
||||
no-case@^3.0.3:
|
||||
version "3.0.3"
|
||||
resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.3.tgz#c21b434c1ffe48b39087e86cfb4d2582e9df18f8"
|
||||
integrity sha512-ehY/mVQCf9BL0gKfsJBvFJen+1V//U+0HQMPrWct40ixE4jnv0bfvxDbWtAHL9EcaPEOJHVVYKoQn1TlZUB8Tw==
|
||||
no-case@^3.0.4:
|
||||
version "3.0.4"
|
||||
resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d"
|
||||
integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==
|
||||
dependencies:
|
||||
lower-case "^2.0.1"
|
||||
tslib "^1.10.0"
|
||||
lower-case "^2.0.2"
|
||||
tslib "^2.0.3"
|
||||
|
||||
node-forge@^0.10.0:
|
||||
version "0.10.0"
|
||||
@ -7735,7 +7753,7 @@ node-notifier@^5.4.2:
|
||||
shellwords "^0.1.1"
|
||||
which "^1.3.0"
|
||||
|
||||
node-releases@^1.1.52, node-releases@^1.1.66:
|
||||
node-releases@^1.1.52, node-releases@^1.1.67:
|
||||
version "1.1.67"
|
||||
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.67.tgz#28ebfcccd0baa6aad8e8d4d8fe4cbc49ae239c12"
|
||||
integrity sha512-V5QF9noGFl3EymEwUYzO+3NTDpGfQB4ve6Qfnzf3UNydMhjQRVPR1DZTuvWiLzaFJYw2fmDwAfnRNEVb64hSIg==
|
||||
@ -7876,9 +7894,9 @@ object-hash@^2.0.1:
|
||||
integrity sha512-JPKn0GMu+Fa3zt3Bmr66JhokJU5BaNBIh4ZeTlaCBzrBsOeXzwcKKAK1tbLiPKgvwmPXsDvvLHoWh5Bm7ofIYg==
|
||||
|
||||
object-inspect@^1.8.0:
|
||||
version "1.8.0"
|
||||
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0"
|
||||
integrity sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==
|
||||
version "1.9.0"
|
||||
resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a"
|
||||
integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw==
|
||||
|
||||
object-is@^1.0.1:
|
||||
version "1.1.4"
|
||||
@ -8168,12 +8186,12 @@ parallel-transform@^1.1.0:
|
||||
readable-stream "^2.1.5"
|
||||
|
||||
param-case@^3.0.3:
|
||||
version "3.0.3"
|
||||
resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.3.tgz#4be41f8399eff621c56eebb829a5e451d9801238"
|
||||
integrity sha512-VWBVyimc1+QrzappRs7waeN2YmoZFCGXWASRYX1/rGHtXqEcrGEIDm+jqIwFa2fRXNgQEwrxaYuIrX0WcAguTA==
|
||||
version "3.0.4"
|
||||
resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5"
|
||||
integrity sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==
|
||||
dependencies:
|
||||
dot-case "^3.0.3"
|
||||
tslib "^1.10.0"
|
||||
dot-case "^3.0.4"
|
||||
tslib "^2.0.3"
|
||||
|
||||
parent-module@^1.0.0:
|
||||
version "1.0.1"
|
||||
@ -8233,13 +8251,13 @@ parseurl@~1.3.2, parseurl@~1.3.3:
|
||||
resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
|
||||
integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
|
||||
|
||||
pascal-case@^3.1.1:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.1.tgz#5ac1975133ed619281e88920973d2cd1f279de5f"
|
||||
integrity sha512-XIeHKqIrsquVTQL2crjq3NfJUxmdLasn3TYOU0VBM+UX2a6ztAWBlJQBePLGY7VHW8+2dRadeIPK5+KImwTxQA==
|
||||
pascal-case@^3.1.2:
|
||||
version "3.1.2"
|
||||
resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb"
|
||||
integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==
|
||||
dependencies:
|
||||
no-case "^3.0.3"
|
||||
tslib "^1.10.0"
|
||||
no-case "^3.0.4"
|
||||
tslib "^2.0.3"
|
||||
|
||||
pascalcase@^0.1.1:
|
||||
version "0.1.1"
|
||||
@ -9420,9 +9438,9 @@ react-app-polyfill@^1.0.6:
|
||||
whatwg-fetch "^3.0.0"
|
||||
|
||||
react-app-rewired@^2.1.6:
|
||||
version "2.1.6"
|
||||
resolved "https://registry.yarnpkg.com/react-app-rewired/-/react-app-rewired-2.1.6.tgz#33ee3076a7f34d6a7c94e649cac67e7c8c580de8"
|
||||
integrity sha512-06flj0kK5tf/RN4naRv/sn6j3sQd7rsURoRLKLpffXDzJeNiAaTNic+0I8Basojy5WDwREkTqrMLewSAjcb13w==
|
||||
version "2.1.7"
|
||||
resolved "https://registry.yarnpkg.com/react-app-rewired/-/react-app-rewired-2.1.7.tgz#b229d32b93b076059e62b06e8117109b92599e18"
|
||||
integrity sha512-SIq7yRIohZzeO432WHlfvEEzOYs4JfOIoUIU663eIFt/ucUoqJxQwW1FClhhL21V6F8bqI+8URJoBlB0yUEKaA==
|
||||
dependencies:
|
||||
semver "^5.6.0"
|
||||
|
||||
@ -9659,9 +9677,9 @@ react-string-format@^0.1.0:
|
||||
integrity sha512-xkIhnh2t1YmS4r8Zz92qs0Ia8EMbBoRlMEvvMtC0sQBSxxBmBujfssSA4PYYi0w2WvJYSEktgilB+320/mlsOQ==
|
||||
|
||||
react-svg@^11.0.9:
|
||||
version "11.1.3"
|
||||
resolved "https://registry.yarnpkg.com/react-svg/-/react-svg-11.1.3.tgz#14c3f1552b0893319e7466e22797cf7f08a3bfb8"
|
||||
integrity sha512-OSrg4mVXgGK+Qypraa0d68bI8e6ubcBGes9lqcaMdSgPjfrzFTe4yaG94UdROwk5JvFVLKTquc4lRuvqOY92KQ==
|
||||
version "11.1.4"
|
||||
resolved "https://registry.yarnpkg.com/react-svg/-/react-svg-11.1.4.tgz#1a828bcf6193bae09609080fbcae29cb6bed62dc"
|
||||
integrity sha512-Xx3dZNCbTc4wgogf5joE2PcJBcKplfVJGAvgYqIu+/XNSqB1KTutmebn77bO9XT6uHXSBSoy11jCDw/6fddAFQ==
|
||||
dependencies:
|
||||
"@babel/runtime" "^7.12.5"
|
||||
"@tanem/svg-injector" "^8.1.0"
|
||||
@ -10397,9 +10415,11 @@ semver@7.0.0:
|
||||
integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==
|
||||
|
||||
semver@^7.3.2:
|
||||
version "7.3.2"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938"
|
||||
integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==
|
||||
version "7.3.4"
|
||||
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97"
|
||||
integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==
|
||||
dependencies:
|
||||
lru-cache "^6.0.0"
|
||||
|
||||
semver@~5.3.0:
|
||||
version "5.3.0"
|
||||
@ -11400,7 +11420,7 @@ ts-pnp@^1.1.6:
|
||||
resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92"
|
||||
integrity sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==
|
||||
|
||||
tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0:
|
||||
tslib@^1.8.1, tslib@^1.9.0:
|
||||
version "1.14.1"
|
||||
resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00"
|
||||
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
|
||||
@ -11480,9 +11500,9 @@ typedarray@^0.0.6:
|
||||
integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=
|
||||
|
||||
ua-parser-js@^0.7.22:
|
||||
version "0.7.22"
|
||||
resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.22.tgz#960df60a5f911ea8f1c818f3747b99c6e177eae3"
|
||||
integrity sha512-YUxzMjJ5T71w6a8WWVcMGM6YWOTX27rCoIQgLXiWaxqXSx9D7DNjiGWn1aJIRSQ5qr0xuhra77bSIh6voR/46Q==
|
||||
version "0.7.23"
|
||||
resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.23.tgz#704d67f951e13195fbcd3d78818577f5bc1d547b"
|
||||
integrity sha512-m4hvMLxgGHXG3O3fQVAyyAQpZzDOvwnhOTjYz5Xmr7r/+LpkNy3vJXdVRWgd1TkAb7NGROZuSy96CrlNVjA7KA==
|
||||
|
||||
unicode-canonical-property-names-ecmascript@^1.0.4:
|
||||
version "1.0.4"
|
||||
@ -12333,9 +12353,9 @@ xmlchars@^2.1.1:
|
||||
integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==
|
||||
|
||||
xregexp@^4.3.0:
|
||||
version "4.4.0"
|
||||
resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.4.0.tgz#29660f5d6567cd2ef981dd4a50cb05d22c10719d"
|
||||
integrity sha512-83y4aa8o8o4NZe+L+46wpa+F1cWR/wCGOWI3tzqUso0w3/KAvXy0+Di7Oe/cbNMixDR4Jmi7NEybWU6ps25Wkg==
|
||||
version "4.4.1"
|
||||
resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-4.4.1.tgz#c84a88fa79e9ab18ca543959712094492185fe65"
|
||||
integrity sha512-2u9HwfadaJaY9zHtRRnH6BY6CQVNQKkYm3oLtC9gJXXzfsbACg5X5e4EZZGVAH+YIfa+QA9lsFQTTe3HURF3ag==
|
||||
dependencies:
|
||||
"@babel/runtime-corejs3" "^7.12.1"
|
||||
|
||||
@ -12345,9 +12365,9 @@ xtend@^4.0.0, xtend@~4.0.1:
|
||||
integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
|
||||
|
||||
y18n@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b"
|
||||
integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==
|
||||
version "4.0.1"
|
||||
resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4"
|
||||
integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==
|
||||
|
||||
yallist@^2.1.2:
|
||||
version "2.1.2"
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "asc-web-common",
|
||||
"version": "1.0.282",
|
||||
"version": "1.0.289",
|
||||
"description": "Ascensio System SIA common components and solutions library",
|
||||
"license": "AGPL-3.0",
|
||||
"files": [
|
||||
@ -26,6 +26,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"axios": "^0.19.1",
|
||||
"fast-deep-equal": "^3.1.3",
|
||||
"history": "4.10.1",
|
||||
"lodash": "4.17.19",
|
||||
"lodash-es": "4.17.15",
|
||||
|
@ -1,5 +1,4 @@
|
||||
import axios from "axios";
|
||||
import { AUTH_KEY } from "../constants";
|
||||
//import history from "../history";
|
||||
|
||||
const PREFIX = "api";
|
||||
@ -16,16 +15,16 @@ const client = axios.create({
|
||||
timeout: 30000, // default is `0` (no timeout)
|
||||
});
|
||||
|
||||
setAuthorizationToken(localStorage.getItem(AUTH_KEY));
|
||||
|
||||
client.interceptors.response.use(
|
||||
(response) => {
|
||||
return response;
|
||||
},
|
||||
(error) => {
|
||||
if (!error.response) return Promise.reject(error);
|
||||
|
||||
switch (true) {
|
||||
case error.response.status === 401:
|
||||
setAuthorizationToken();
|
||||
setWithCredentialsStatus(false);
|
||||
window.location.href = "/login";
|
||||
break;
|
||||
case error.response.status === 402:
|
||||
@ -41,13 +40,8 @@ client.interceptors.response.use(
|
||||
}
|
||||
);
|
||||
|
||||
export function setAuthorizationToken(token) {
|
||||
client.defaults.withCredentials = true;
|
||||
if (token) {
|
||||
localStorage.setItem(AUTH_KEY, true);
|
||||
} else {
|
||||
localStorage.clear();
|
||||
}
|
||||
export function setWithCredentialsStatus(state) {
|
||||
client.defaults.withCredentials = state;
|
||||
}
|
||||
|
||||
export function setClientBasePath(path) {
|
||||
|
@ -4,10 +4,12 @@ import FilesFilter from "./filter";
|
||||
import { FolderType } from "../../constants";
|
||||
import find from "lodash/find";
|
||||
|
||||
export function openEdit(fileId) {
|
||||
export function openEdit(fileId, doc) {
|
||||
const params = doc ? `?doc=${doc}` : "";
|
||||
|
||||
const options = {
|
||||
method: "get",
|
||||
url: `/files/file/${fileId}/openedit`,
|
||||
url: `/files/file/${fileId}/openedit${params}`,
|
||||
};
|
||||
|
||||
return request(options);
|
||||
@ -394,6 +396,15 @@ export function getShareFiles(fileId) {
|
||||
});
|
||||
}
|
||||
|
||||
export function setExternalAccess(fileId, accessType) {
|
||||
const data = { share: accessType };
|
||||
return request({
|
||||
method: "put",
|
||||
url: `/files/${fileId}/setacelink`,
|
||||
data,
|
||||
});
|
||||
}
|
||||
|
||||
export function setShareFolder(folderId, share, notify, sharingMessage) {
|
||||
const data = { share, notify, sharingMessage };
|
||||
return request({
|
||||
@ -495,7 +506,7 @@ export function convertFile(fileId) {
|
||||
});
|
||||
}
|
||||
|
||||
export function getConvertFile(fileId) {
|
||||
export function getFileConversationProgress(fileId) {
|
||||
return request({
|
||||
method: "get",
|
||||
url: `/files/file/${fileId}/checkconversion`,
|
||||
|
@ -1,12 +1,14 @@
|
||||
import { request } from "../client";
|
||||
import * as fakeGroup from "./fake";
|
||||
|
||||
export function getGroupList(fake = false) {
|
||||
export function getGroupList(fake = false, searchValue) {
|
||||
const params = searchValue ? `?filtervalue=${searchValue}` : "";
|
||||
|
||||
return fake
|
||||
? fakeGroup.getGroupList()
|
||||
: request({
|
||||
method: "get",
|
||||
url: "/group",
|
||||
url: `/group${params}`,
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
import { request, setAuthorizationToken } from "../client";
|
||||
import { request, setWithCredentialsStatus } from "../client";
|
||||
|
||||
export function login(userName, passwordHash) {
|
||||
const data = {
|
||||
@ -10,9 +10,6 @@ export function login(userName, passwordHash) {
|
||||
method: "post",
|
||||
url: "/authentication.json",
|
||||
data,
|
||||
}).then((tokenData) => {
|
||||
setAuthorizationToken(true);
|
||||
return Promise.resolve(tokenData);
|
||||
});
|
||||
}
|
||||
|
||||
@ -20,9 +17,6 @@ export function logout() {
|
||||
return request({
|
||||
method: "post",
|
||||
url: "/authentication/logout",
|
||||
}).then(() => {
|
||||
setAuthorizationToken();
|
||||
return Promise.resolve();
|
||||
});
|
||||
}
|
||||
|
||||
@ -33,3 +27,14 @@ export function checkConfirmLink(data) {
|
||||
data,
|
||||
});
|
||||
}
|
||||
|
||||
export function checkIsAuthenticated() {
|
||||
return request({
|
||||
method: "get",
|
||||
url: "/authentication",
|
||||
withCredentials: true,
|
||||
}).then((state) => {
|
||||
setWithCredentialsStatus(state);
|
||||
return state;
|
||||
});
|
||||
}
|
||||
|
@ -13,8 +13,8 @@ import withReadme from "storybook-readme/with-readme";
|
||||
import Readme from "./README.md";
|
||||
import AdvancedSelector2 from ".";
|
||||
import Section from "../../../.storybook/decorators/section";
|
||||
import { Button, Avatar, Text } from "asc-web-components";
|
||||
import isEqual from "lodash/isEqual";
|
||||
import { Button } from "asc-web-components";
|
||||
import equal from "fast-deep-equal/react";
|
||||
import UserTooltip from "../PeopleSelector/sub-components/UserTooltip";
|
||||
|
||||
function getRandomInt(min, max) {
|
||||
@ -137,7 +137,7 @@ class ADSelectorExample extends React.Component {
|
||||
|
||||
componentDidUpdate(prevProps) {
|
||||
const { total, options, isOpen } = this.props;
|
||||
if (!isEqual(prevProps.options, options)) {
|
||||
if (!equal(prevProps.options, options)) {
|
||||
this.setState({
|
||||
options: options,
|
||||
});
|
||||
|
@ -10,7 +10,6 @@ const StyledFooter = styled.div`
|
||||
props.withEmbeddedComponent &&
|
||||
css`
|
||||
display: flex;
|
||||
padding: 16px 0;
|
||||
`}
|
||||
|
||||
${(props) =>
|
||||
|
@ -125,6 +125,7 @@ const StyledSelector = styled(Container)`
|
||||
/* background-color: red; */
|
||||
padding: 16px 16px 0 16px;
|
||||
grid-row-gap: 2px;
|
||||
overflow: hidden;
|
||||
|
||||
grid-template-columns: 1fr;
|
||||
grid-template-rows: ${(props) =>
|
||||
@ -137,7 +138,7 @@ const StyledSelector = styled(Container)`
|
||||
? "100px"
|
||||
: "30px"
|
||||
: props.groups && props.groups.length > 0
|
||||
? "70px"
|
||||
? "75px"
|
||||
: "30px"
|
||||
: "30px"} 1fr;
|
||||
grid-template-areas: "header-options" "body-options";
|
||||
@ -207,7 +208,7 @@ const StyledSelector = styled(Container)`
|
||||
.body-options {
|
||||
grid-area: body-options;
|
||||
margin-left: -8px;
|
||||
margin-top: 5px;
|
||||
margin-top: 2px;
|
||||
|
||||
@media ${tablet} {
|
||||
width: 290px;
|
||||
|
@ -1,7 +1,7 @@
|
||||
import React from "react";
|
||||
import PropTypes from "prop-types";
|
||||
import { SearchInput } from "asc-web-components";
|
||||
import isEqual from "lodash/isEqual";
|
||||
import equal from "fast-deep-equal/react";
|
||||
import FilterBlock from "./sub-components/FilterBlock";
|
||||
import SortComboBox from "./sub-components/SortComboBox";
|
||||
import ViewSelector from "./sub-components/ViewSelector";
|
||||
@ -143,9 +143,9 @@ class FilterInput extends React.Component {
|
||||
}
|
||||
|
||||
if (
|
||||
(!isEqual(selectedFilterData.filterValues, filterValues) ||
|
||||
inputValue !== searchText) &&
|
||||
sectionWidth !== prevProps.sectionWidth
|
||||
!equal(selectedFilterData.filterValues, filterValues) ||
|
||||
inputValue !== searchText // &&
|
||||
//sectionWidth !== prevProps.sectionWidth
|
||||
) {
|
||||
const sortData = getSortData();
|
||||
const filterValues = this.getDefaultFilterData();
|
||||
@ -164,7 +164,7 @@ class FilterInput extends React.Component {
|
||||
}
|
||||
|
||||
if (
|
||||
!isEqual(
|
||||
!equal(
|
||||
prevProps.selectedFilterData.filterValues,
|
||||
selectedFilterData.filterValues
|
||||
) &&
|
||||
@ -189,7 +189,7 @@ class FilterInput extends React.Component {
|
||||
} = this.props;
|
||||
|
||||
if (
|
||||
!isEqual(selectedFilterData, nextProps.selectedFilterData) ||
|
||||
!equal(selectedFilterData, nextProps.selectedFilterData) ||
|
||||
this.props.viewAs !== nextProps.viewAs ||
|
||||
this.props.widthProp !== nextProps.widthProp ||
|
||||
sectionWidth !== nextProps.sectionWidth
|
||||
@ -206,7 +206,7 @@ class FilterInput extends React.Component {
|
||||
)
|
||||
return true;
|
||||
|
||||
return !isEqual(this.state, nextState);
|
||||
return !equal(this.state, nextState);
|
||||
}
|
||||
|
||||
onChangeSortDirection = (key) => {
|
||||
|
@ -3,7 +3,7 @@ import FilterButton from "./FilterButton";
|
||||
import HideFilter from "./HideFilter";
|
||||
import { ComboBox } from "asc-web-components";
|
||||
import CloseButton from "./CloseButton";
|
||||
import isEqual from "lodash/isEqual";
|
||||
import equal from "fast-deep-equal/react";
|
||||
import PropTypes from "prop-types";
|
||||
import {
|
||||
StyledFilterItem,
|
||||
@ -291,8 +291,8 @@ class FilterBlock extends React.Component {
|
||||
const { needUpdateFilter } = this.props;
|
||||
if (
|
||||
(needUpdate || needUpdateFilter) &&
|
||||
(!isEqual(prevState.openFilterItems, this.state.openFilterItems) ||
|
||||
!isEqual(prevState.hiddenFilterItems, this.state.hiddenFilterItems))
|
||||
(!equal(prevState.openFilterItems, this.state.openFilterItems) ||
|
||||
!equal(prevState.hiddenFilterItems, this.state.hiddenFilterItems))
|
||||
) {
|
||||
this.props.onFilterRender();
|
||||
this.setNeedUpdate(false);
|
||||
@ -302,10 +302,10 @@ class FilterBlock extends React.Component {
|
||||
shouldComponentUpdate(nextProps, nextState) {
|
||||
const { hiddenFilterItems, openFilterItems } = nextProps;
|
||||
|
||||
if (!isEqual(this.props, nextProps)) {
|
||||
if (!equal(this.props, nextProps)) {
|
||||
if (
|
||||
!isEqual(this.props.hiddenFilterItems, hiddenFilterItems) ||
|
||||
!isEqual(this.props.openFilterItems, openFilterItems)
|
||||
!equal(this.props.hiddenFilterItems, hiddenFilterItems) ||
|
||||
!equal(this.props.openFilterItems, openFilterItems)
|
||||
) {
|
||||
this.setState({
|
||||
hiddenFilterItems,
|
||||
@ -316,7 +316,7 @@ class FilterBlock extends React.Component {
|
||||
return true;
|
||||
}
|
||||
|
||||
return !isEqual(this.state, nextState);
|
||||
return !equal(this.state, nextState);
|
||||
}
|
||||
|
||||
onDeleteFilterItem = (key) => {
|
||||
|
@ -1,5 +1,5 @@
|
||||
import React from "react";
|
||||
import isEqual from "lodash/isEqual";
|
||||
import equal from "fast-deep-equal/react";
|
||||
import {
|
||||
ComboBox,
|
||||
IconButton,
|
||||
@ -65,7 +65,7 @@ class SortComboBox extends React.Component {
|
||||
});
|
||||
return true;
|
||||
}
|
||||
return !isEqual(this.props, nextProps) || !isEqual(this.state, nextState);
|
||||
return !equal(this.props, nextProps) || !equal(this.state, nextState);
|
||||
}
|
||||
|
||||
onToggleAction = () => {
|
||||
|
@ -0,0 +1,64 @@
|
||||
import React from "react";
|
||||
import PropTypes from "prop-types";
|
||||
import {
|
||||
StyledFloatingButton,
|
||||
StyledAlertIcon,
|
||||
StyledCircleWrap,
|
||||
StyledCircle,
|
||||
} from "./StyledFloatingButton";
|
||||
import { Icons } from "asc-web-components";
|
||||
|
||||
const FloatingButton = ({ id, className, style, ...rest }) => {
|
||||
const { icon, alert, percent } = rest;
|
||||
|
||||
return (
|
||||
<StyledCircleWrap id={id} className={className} style={style} icon={icon}>
|
||||
<StyledCircle percent={percent}>
|
||||
<div className="circle__mask circle__full">
|
||||
<div className="circle__fill"></div>
|
||||
</div>
|
||||
<div className="circle__mask">
|
||||
<div className="circle__fill"></div>
|
||||
</div>
|
||||
|
||||
<StyledFloatingButton>
|
||||
{icon == "upload" ? (
|
||||
<Icons.ButtonUploadIcon />
|
||||
) : icon == "file" ? (
|
||||
<Icons.ButtonFileIcon />
|
||||
) : icon == "trash" ? (
|
||||
<Icons.ButtonTrashIcon />
|
||||
) : icon == "move" ? (
|
||||
<Icons.ButtonMoveIcon />
|
||||
) : (
|
||||
<Icons.ButtonDuplicateIcon />
|
||||
)}
|
||||
|
||||
<StyledAlertIcon>
|
||||
{alert ? <Icons.ButtonAlertIcon size="medium" /> : <></>}
|
||||
</StyledAlertIcon>
|
||||
</StyledFloatingButton>
|
||||
</StyledCircle>
|
||||
</StyledCircleWrap>
|
||||
);
|
||||
};
|
||||
|
||||
FloatingButton.propTypes = {
|
||||
id: PropTypes.string,
|
||||
className: PropTypes.string,
|
||||
style: PropTypes.object,
|
||||
icon: PropTypes.oneOf(["upload", "file", "trash", "move", "duplicate"]),
|
||||
alert: PropTypes.bool,
|
||||
percent: PropTypes.number,
|
||||
};
|
||||
|
||||
FloatingButton.defaultProps = {
|
||||
id: undefined,
|
||||
className: undefined,
|
||||
style: undefined,
|
||||
icon: "upload",
|
||||
alert: false,
|
||||
percent: 0,
|
||||
};
|
||||
|
||||
export default FloatingButton;
|
@ -0,0 +1,30 @@
|
||||
import React from "react";
|
||||
import { storiesOf } from "@storybook/react";
|
||||
import {
|
||||
withKnobs,
|
||||
select,
|
||||
boolean,
|
||||
number,
|
||||
} from "@storybook/addon-knobs/react";
|
||||
import Section from "../../../.storybook/decorators/section";
|
||||
|
||||
import withReadme from "storybook-readme/with-readme";
|
||||
import Readme from "./README.md";
|
||||
import FloatingButton from "./index";
|
||||
|
||||
storiesOf("Components|Floating Button", module)
|
||||
.addDecorator(withKnobs)
|
||||
.addDecorator(withReadme(Readme))
|
||||
.add("floating button", () => {
|
||||
const iconVariables = ["upload", "file", "trash", "move", "duplicate"];
|
||||
return (
|
||||
<Section>
|
||||
<h1>Floating button</h1>
|
||||
<FloatingButton
|
||||
icon={select("icon", iconVariables, "upload")}
|
||||
alert={boolean("alert", false)}
|
||||
percent={number("percent", 50)}
|
||||
/>
|
||||
</Section>
|
||||
);
|
||||
});
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user