@webiny/app-aco 5.43.0-beta.0 → 5.43.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/FolderTree/List/index.js +34 -27
- package/components/FolderTree/List/index.js.map +1 -1
- package/components/FolderTree/Node/index.d.ts +3 -1
- package/components/FolderTree/Node/index.js +46 -17
- package/components/FolderTree/Node/index.js.map +1 -1
- package/components/FolderTree/Node/styled.d.ts +5 -0
- package/components/FolderTree/Node/styled.js +38 -20
- package/components/FolderTree/Node/styled.js.map +1 -1
- package/components/FolderTree/index.js +11 -15
- package/components/FolderTree/index.js.map +1 -1
- package/contexts/acoList.js +14 -11
- package/contexts/acoList.js.map +1 -1
- package/contexts/navigateFolder.d.ts +1 -1
- package/contexts/navigateFolder.js +1 -1
- package/contexts/navigateFolder.js.map +1 -1
- package/dialogs/DialogSetPermissions/UsersTeamsSelection/ListItemMeta.js +39 -25
- package/dialogs/DialogSetPermissions/UsersTeamsSelection/ListItemMeta.js.map +1 -1
- package/features/folders/cache/ListCache.js +2 -1
- package/features/folders/cache/ListCache.js.map +1 -1
- package/features/folders/cache/LoadedCache.d.ts +13 -0
- package/features/folders/cache/LoadedCache.js +59 -0
- package/features/folders/cache/LoadedCache.js.map +1 -0
- package/features/folders/cache/LoadedFoldersCacheFactory.d.ts +7 -0
- package/features/folders/cache/LoadedFoldersCacheFactory.js +35 -0
- package/features/folders/cache/LoadedFoldersCacheFactory.js.map +1 -0
- package/features/folders/cache/index.d.ts +2 -0
- package/features/folders/cache/index.js +22 -0
- package/features/folders/cache/index.js.map +1 -1
- package/features/folders/getFolderHierarchy/FolderDto.d.ts +25 -0
- package/features/folders/getFolderHierarchy/FolderDto.js +50 -0
- package/features/folders/getFolderHierarchy/FolderDto.js.map +1 -0
- package/features/folders/getFolderHierarchy/FolderGqlDto.d.ts +20 -0
- package/features/folders/getFolderHierarchy/FolderGqlDto.js +7 -0
- package/features/folders/getFolderHierarchy/FolderGqlDto.js.map +1 -0
- package/features/folders/getFolderHierarchy/GetFolderHierarchy.d.ts +14 -0
- package/features/folders/getFolderHierarchy/GetFolderHierarchy.js +37 -0
- package/features/folders/getFolderHierarchy/GetFolderHierarchy.js.map +1 -0
- package/features/folders/getFolderHierarchy/GetFolderHierarchy.test.d.ts +1 -0
- package/features/folders/getFolderHierarchy/GetFolderHierarchy.test.js +207 -0
- package/features/folders/getFolderHierarchy/GetFolderHierarchy.test.js.map +1 -0
- package/features/folders/getFolderHierarchy/GetFolderHierarchyGqlGateway.d.ts +31 -0
- package/features/folders/getFolderHierarchy/GetFolderHierarchyGqlGateway.js +82 -0
- package/features/folders/getFolderHierarchy/GetFolderHierarchyGqlGateway.js.map +1 -0
- package/features/folders/getFolderHierarchy/GetFolderHierarchyRepository.d.ts +12 -0
- package/features/folders/getFolderHierarchy/GetFolderHierarchyRepository.js +48 -0
- package/features/folders/getFolderHierarchy/GetFolderHierarchyRepository.js.map +1 -0
- package/features/folders/getFolderHierarchy/GetFolderHierarchyUseCase.d.ts +7 -0
- package/features/folders/getFolderHierarchy/GetFolderHierarchyUseCase.js +26 -0
- package/features/folders/getFolderHierarchy/GetFolderHierarchyUseCase.js.map +1 -0
- package/features/folders/getFolderHierarchy/GetFolderHierarchyUseCaseWithLoading.d.ts +8 -0
- package/features/folders/getFolderHierarchy/GetFolderHierarchyUseCaseWithLoading.js +25 -0
- package/features/folders/getFolderHierarchy/GetFolderHierarchyUseCaseWithLoading.js.map +1 -0
- package/features/folders/getFolderHierarchy/IGetFolderHierarchyGateway.d.ts +12 -0
- package/features/folders/getFolderHierarchy/IGetFolderHierarchyGateway.js +7 -0
- package/features/folders/getFolderHierarchy/IGetFolderHierarchyGateway.js.map +1 -0
- package/features/folders/getFolderHierarchy/IGetFolderHierarchyRepository.d.ts +6 -0
- package/features/folders/getFolderHierarchy/IGetFolderHierarchyRepository.js +7 -0
- package/features/folders/getFolderHierarchy/IGetFolderHierarchyRepository.js.map +1 -0
- package/features/folders/getFolderHierarchy/IGetFolderHierarchyUseCase.d.ts +6 -0
- package/features/folders/getFolderHierarchy/IGetFolderHierarchyUseCase.js +7 -0
- package/features/folders/getFolderHierarchy/IGetFolderHierarchyUseCase.js.map +1 -0
- package/features/folders/getFolderHierarchy/index.d.ts +1 -0
- package/features/folders/getFolderHierarchy/index.js +18 -0
- package/features/folders/getFolderHierarchy/index.js.map +1 -0
- package/features/folders/getFolderHierarchy/useGetFolderHierarchy.d.ts +6 -0
- package/features/folders/getFolderHierarchy/useGetFolderHierarchy.js +65 -0
- package/features/folders/getFolderHierarchy/useGetFolderHierarchy.js.map +1 -0
- package/features/folders/index.d.ts +2 -0
- package/features/folders/index.js +22 -0
- package/features/folders/index.js.map +1 -1
- package/features/folders/listFolders/useListFolders.js +3 -8
- package/features/folders/listFolders/useListFolders.js.map +1 -1
- package/features/folders/listFoldersByParentIds/FolderDto.d.ts +25 -0
- package/features/folders/listFoldersByParentIds/FolderDto.js +50 -0
- package/features/folders/listFoldersByParentIds/FolderDto.js.map +1 -0
- package/features/folders/listFoldersByParentIds/FolderGqlDto.d.ts +20 -0
- package/features/folders/listFoldersByParentIds/FolderGqlDto.js +7 -0
- package/features/folders/listFoldersByParentIds/FolderGqlDto.js.map +1 -0
- package/features/folders/listFoldersByParentIds/IListFoldersByParentIdsGateway.d.ts +8 -0
- package/features/folders/listFoldersByParentIds/IListFoldersByParentIdsGateway.js +7 -0
- package/features/folders/listFoldersByParentIds/IListFoldersByParentIdsGateway.js.map +1 -0
- package/features/folders/listFoldersByParentIds/IListFoldersByParentIdsRepository.d.ts +6 -0
- package/features/folders/listFoldersByParentIds/IListFoldersByParentIdsRepository.js +7 -0
- package/features/folders/listFoldersByParentIds/IListFoldersByParentIdsRepository.js.map +1 -0
- package/features/folders/listFoldersByParentIds/IListFoldersByParentIdsUseCase.d.ts +6 -0
- package/features/folders/listFoldersByParentIds/IListFoldersByParentIdsUseCase.js +7 -0
- package/features/folders/listFoldersByParentIds/IListFoldersByParentIdsUseCase.js.map +1 -0
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIds.d.ts +14 -0
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIds.js +39 -0
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIds.js.map +1 -0
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIds.test.d.ts +1 -0
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIds.test.js +248 -0
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIds.test.js.map +1 -0
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsGqlGateway.d.ts +26 -0
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsGqlGateway.js +86 -0
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsGqlGateway.js.map +1 -0
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsRepository.d.ts +11 -0
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsRepository.js +32 -0
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsRepository.js.map +1 -0
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsRepositoryWithLoadedCache.d.ts +8 -0
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsRepositoryWithLoadedCache.js +39 -0
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsRepositoryWithLoadedCache.js.map +1 -0
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsUseCase.d.ts +8 -0
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsUseCase.js +34 -0
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsUseCase.js.map +1 -0
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsUseCaseWithLoading.d.ts +10 -0
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsUseCaseWithLoading.js +37 -0
- package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsUseCaseWithLoading.js.map +1 -0
- package/features/folders/listFoldersByParentIds/index.d.ts +1 -0
- package/features/folders/listFoldersByParentIds/index.js +18 -0
- package/features/folders/listFoldersByParentIds/index.js.map +1 -0
- package/features/folders/listFoldersByParentIds/useListFoldersByParentIds.d.ts +6 -0
- package/features/folders/listFoldersByParentIds/useListFoldersByParentIds.js +65 -0
- package/features/folders/listFoldersByParentIds/useListFoldersByParentIds.js.map +1 -0
- package/handlers.d.ts +1 -1
- package/package.json +17 -18
- package/types.d.ts +11 -11
- package/types.js +12 -11
- package/types.js.map +1 -1
- package/components/FolderTree/Empty/index.d.ts +0 -2
- package/components/FolderTree/Empty/index.js +0 -21
- package/components/FolderTree/Empty/index.js.map +0 -1
- package/components/FolderTree/Empty/styled.d.ts +0 -5
- package/components/FolderTree/Empty/styled.js +0 -25
- package/components/FolderTree/Empty/styled.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_Tooltip","_features","_ButtonCreate","
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_Tooltip","_features","_ButtonCreate","_Loader","_List","_styled","_constants","_config","FolderTree","exports","_ref","focusedFolderId","hiddenFolderIds","enableActions","enableCreate","onFolderClick","rootFolderLabel","_useGetFolderHierarch","useGetFolderHierarchy","folders","getIsFolderLoading","_useGetFolderLevelPer","useGetFolderLevelPermission","canManageStructure","getFolderLevelPermission","localFolders","useMemo","reduce","acc","item","id","ROOT_FOLDER","concat","_toConsumableArray2","default","_objectSpread2","title","renderList","createElement","Loader","createButton","canCreate","CreateButton","disabled","Tooltip","content","AcoWithConfig","List","Container"],"sources":["index.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport { Tooltip } from \"@webiny/ui/Tooltip\";\nimport { useGetFolderHierarchy, useGetFolderLevelPermission } from \"~/features\";\nimport { CreateButton } from \"./ButtonCreate\";\nimport { Loader } from \"./Loader\";\nimport { List } from \"./List\";\nimport { Container } from \"./styled\";\nimport { FolderItem } from \"~/types\";\nimport { ROOT_FOLDER } from \"~/constants\";\nimport { AcoWithConfig } from \"~/config\";\n\nexport { Loader };\n\nexport interface FolderTreeProps {\n onFolderClick: (data: FolderItem) => void;\n enableCreate?: boolean;\n rootFolderLabel?: string;\n enableActions?: boolean;\n focusedFolderId?: string;\n hiddenFolderIds?: string[];\n}\n\nexport const FolderTree = ({\n focusedFolderId,\n hiddenFolderIds,\n enableActions,\n enableCreate,\n onFolderClick,\n rootFolderLabel\n}: FolderTreeProps) => {\n const { folders, getIsFolderLoading } = useGetFolderHierarchy();\n const { getFolderLevelPermission: canManageStructure } =\n useGetFolderLevelPermission(\"canManageStructure\");\n\n const localFolders = useMemo(() => {\n if (!folders) {\n return [];\n }\n\n return folders.reduce<FolderItem[]>((acc, item) => {\n if (item.id === ROOT_FOLDER && rootFolderLabel) {\n return [...acc, { ...item, title: rootFolderLabel }];\n }\n return [...acc, item];\n }, []);\n }, [folders]);\n\n const renderList = () => {\n if (getIsFolderLoading()) {\n return <Loader />;\n }\n\n let createButton = null;\n if (enableCreate) {\n const canCreate = canManageStructure(focusedFolderId!);\n\n createButton = <CreateButton disabled={!canCreate} />;\n\n if (!canCreate) {\n createButton = (\n <Tooltip content={`Cannot create folder because you're not an owner.`}>\n {createButton}\n </Tooltip>\n );\n }\n }\n\n return (\n <AcoWithConfig>\n <List\n folders={localFolders}\n onFolderClick={onFolderClick}\n focusedFolderId={focusedFolderId}\n hiddenFolderIds={hiddenFolderIds}\n enableActions={enableActions}\n />\n {enableCreate && createButton}\n </AcoWithConfig>\n );\n };\n return <Container>{renderList()}</Container>;\n};\n"],"mappings":"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","ignoreList":[]}
|
package/contexts/acoList.js
CHANGED
|
@@ -72,11 +72,14 @@ var AcoListProvider = exports.AcoListProvider = function AcoListProvider(_ref) {
|
|
|
72
72
|
var _useAcoApp = (0, _hooks.useAcoApp)(),
|
|
73
73
|
folderIdPath = _useAcoApp.folderIdPath,
|
|
74
74
|
folderIdInPath = _useAcoApp.folderIdInPath;
|
|
75
|
-
var
|
|
76
|
-
originalFolders =
|
|
77
|
-
|
|
75
|
+
var _useGetFolderHierarch = (0, _features.useGetFolderHierarchy)(),
|
|
76
|
+
originalFolders = _useGetFolderHierarch.folders,
|
|
77
|
+
getIsFolderLoading = _useGetFolderHierarch.getIsFolderLoading,
|
|
78
|
+
getFolderHierarchy = _useGetFolderHierarch.getFolderHierarchy;
|
|
78
79
|
var _useGetDescendantFold = (0, _features.useGetDescendantFolders)(),
|
|
79
80
|
getDescendantFolders = _useGetDescendantFold.getDescendantFolders;
|
|
81
|
+
var _useListFoldersByPare = (0, _features.useListFoldersByParentIds)(),
|
|
82
|
+
listFoldersByParentIds = _useListFoldersByPare.listFoldersByParentIds;
|
|
80
83
|
var folderContext = (0, _react.useContext)(_folders.FoldersContext);
|
|
81
84
|
var searchContext = (0, _react.useContext)(_records.SearchRecordsContext);
|
|
82
85
|
if (!folderContext || !searchContext) {
|
|
@@ -104,18 +107,18 @@ var AcoListProvider = exports.AcoListProvider = function AcoListProvider(_ref) {
|
|
|
104
107
|
meta = searchContext.meta;
|
|
105
108
|
|
|
106
109
|
/**
|
|
107
|
-
* On first mount, call `
|
|
110
|
+
* On first mount, call `getFolderHierarchy` and `setState`, which will either issue a network request, or load folders and records from cache.
|
|
108
111
|
* We don't need to store the result of it to any local state; that is managed by the context provider.
|
|
109
112
|
*
|
|
110
|
-
* IMPORTANT: we check if the folders[type] array exists: the hook can be used from multiple components and
|
|
111
|
-
* fetch the outdated list from Apollo Cache. Since the state is managed locally, we fetch the folders only
|
|
112
|
-
* at the first mount.
|
|
113
|
-
*
|
|
114
113
|
* We don't call `listRecords` directly, instead we call `setState` making it the only driver to fetch records from the apis.
|
|
115
114
|
*/
|
|
116
115
|
(0, _react.useEffect)(function () {
|
|
117
|
-
|
|
118
|
-
|
|
116
|
+
// The folders collection is empty, it must be the first render, let's load the full hierarchy.
|
|
117
|
+
if (folders.length === 0) {
|
|
118
|
+
getFolderHierarchy(currentFolderId);
|
|
119
|
+
} else {
|
|
120
|
+
// Otherwise let's load only the current folder sub-tree
|
|
121
|
+
listFoldersByParentIds([currentFolderId]);
|
|
119
122
|
}
|
|
120
123
|
setState(function (state) {
|
|
121
124
|
return (0, _objectSpread2.default)((0, _objectSpread2.default)({}, state), {}, {
|
|
@@ -319,7 +322,7 @@ var AcoListProvider = exports.AcoListProvider = function AcoListProvider(_ref) {
|
|
|
319
322
|
folders: folders,
|
|
320
323
|
records: records,
|
|
321
324
|
listTitle: listTitle,
|
|
322
|
-
isListLoading: Boolean(recordsLoading.INIT ||
|
|
325
|
+
isListLoading: Boolean(recordsLoading.INIT || recordsLoading.LIST || getIsFolderLoading(currentFolderId)),
|
|
323
326
|
isListLoadingMore: Boolean(recordsLoading.LIST_MORE),
|
|
324
327
|
meta: meta,
|
|
325
328
|
setSearchQuery: function setSearchQuery(query) {
|
package/contexts/acoList.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_dotPropImmutable","_interopRequireDefault","_pick","_appAdmin","_appSecurity","_hooks","_features","_folders","_records","_sorting","_constants","_excluded","AcoListContext","exports","React","createContext","undefined","initializeAcoListState","after","filters","folderId","isSearch","limit","listSort","searchQuery","selected","showingFilters","showingSelectAll","isSelectedAll","getCurrentFolderList","folders","currentFolderId","toLowerCase","ROOT_FOLDER","filter","folder","parentId","getCurrentRecordList","records","folderIdPath","record","dotPropImmutable","get","AcoListProvider","_ref","children","props","_objectWithoutProperties2","default","_useSecurity","useSecurity","identity","_useNavigateFolder","useNavigateFolder","_useAcoApp","useAcoApp","folderIdInPath","_useListFolders","useListFolders","originalFolders","foldersLoading","loading","_useGetDescendantFold","useGetDescendantFolders","getDescendantFolders","folderContext","useContext","FoldersContext","searchContext","SearchRecordsContext","Error","_useStateIfMounted","useStateIfMounted","_useStateIfMounted2","_slicedToArray2","setFolders","_useStateIfMounted3","_useStateIfMounted4","setRecords","_useStateIfMounted5","_useStateIfMounted6","listTitle","setListTitle","_useStateIfMounted7","_useStateIfMounted8","state","setState","originalRecords","recordsLoading","listRecords","meta","useEffect","_objectSpread2","currentFolder","find","id","title","subFolders","sortTableItems","subRecords","prev","titleField","titleFieldId","_defineProperty2","listMoreRecords","useCallback","hasMoreItems","cursor","getWhere","where","descendantFolderIds","map","set","createdBy","own","listItems","Boolean","Object","values","length","params","sort","validateOrGetDefaultDbSort","search","folderWithChildren","foldersLength","recordsLength","selectedLength","folderWithChildrenLength","getAllRecordsAreSelected","prevState","context","pick","isListLoading","INIT","LIST","isListLoadingMore","LIST_MORE","setSearchQuery","query","setFilters","data","fromEntries","entries","_ref2","_ref3","value","keys","setListSort","setSelected","hideFilters","showFilters","selectAll","unselectAll","createElement","Provider"],"sources":["acoList.tsx"],"sourcesContent":["import React, { useCallback, useContext, useEffect } from \"react\";\nimport dotPropImmutable from \"dot-prop-immutable\";\nimport pick from \"lodash/pick\";\nimport { useStateIfMounted } from \"@webiny/app-admin\";\nimport { useSecurity } from \"@webiny/app-security\";\nimport {\n FolderItem,\n GenericSearchData,\n ListMeta,\n ListSearchRecordsQueryVariables,\n ListSearchRecordsSort,\n SearchRecordItem\n} from \"~/types\";\nimport { useAcoApp, useNavigateFolder } from \"~/hooks\";\nimport { useGetDescendantFolders, useListFolders } from \"~/features\";\nimport { FoldersContext } from \"~/contexts/folders\";\nimport { SearchRecordsContext } from \"~/contexts/records\";\nimport { sortTableItems, validateOrGetDefaultDbSort } from \"~/sorting\";\nimport { ROOT_FOLDER } from \"~/constants\";\n\nexport interface AcoListContextData<T> {\n folders: FolderItem[];\n hideFilters: () => void;\n isListLoading: boolean;\n isListLoadingMore: boolean;\n isSearch: boolean;\n listMoreRecords: () => void;\n listTitle?: string;\n meta: ListMeta;\n records: T[];\n selected: T[];\n setFilters: (data: Record<string, any>) => void;\n setListSort: (state: ListSearchRecordsSort) => void;\n setSearchQuery: (query: string) => void;\n setSelected: (selected: T[]) => void;\n showFilters: () => void;\n showingFilters: boolean;\n showingSelectAll: boolean;\n searchQuery: string;\n isSelectedAll: boolean;\n selectAll: () => void;\n unselectAll: () => void;\n getWhere: () => Record<string, any>;\n}\n\nexport const AcoListContext = React.createContext<\n AcoListContextData<GenericSearchData> | undefined\n>(undefined);\n\nexport interface State<T> {\n after?: string;\n filters?: Record<string, any>;\n folderId?: string;\n isSearch: boolean;\n limit: number;\n listSort: ListSearchRecordsSort;\n searchQuery: string;\n selected: T[];\n showingFilters: boolean;\n showingSelectAll: boolean;\n isSelectedAll: boolean;\n}\n\nconst initializeAcoListState = (): State<GenericSearchData> => {\n return {\n after: undefined,\n filters: undefined,\n folderId: undefined,\n isSearch: false,\n limit: 50,\n listSort: [],\n searchQuery: \"\",\n selected: [],\n showingFilters: false,\n showingSelectAll: false,\n isSelectedAll: false\n };\n};\n\nconst getCurrentFolderList = (\n folders?: FolderItem[] | null,\n currentFolderId?: string\n): FolderItem[] | [] => {\n if (!folders) {\n return [];\n }\n if (!currentFolderId || currentFolderId.toLowerCase() === ROOT_FOLDER) {\n return folders.filter(\n folder => !folder.parentId || folder.parentId.toLowerCase() === ROOT_FOLDER\n );\n }\n return folders.filter(folder => folder.parentId === currentFolderId);\n};\n\nconst getCurrentRecordList = <T extends GenericSearchData = GenericSearchData>(\n records: SearchRecordItem<T>[],\n folderIdPath: string,\n currentFolderId?: string\n): SearchRecordItem<T>[] => {\n if (!records) {\n return [];\n }\n\n if (!currentFolderId) {\n return records;\n }\n\n return records.filter(\n (record): record is SearchRecordItem<T> =>\n dotPropImmutable.get(record, folderIdPath) === currentFolderId\n );\n};\n\nexport interface AcoListProviderProps {\n children: React.ReactNode;\n own?: boolean;\n titleFieldId: string | null;\n}\n\nexport const AcoListProvider = ({ children, ...props }: AcoListProviderProps) => {\n const { identity } = useSecurity();\n const { currentFolderId } = useNavigateFolder();\n const { folderIdPath, folderIdInPath } = useAcoApp();\n const { folders: originalFolders, loading: foldersLoading } = useListFolders();\n const { getDescendantFolders } = useGetDescendantFolders();\n const folderContext = useContext(FoldersContext);\n const searchContext = useContext(SearchRecordsContext);\n\n if (!folderContext || !searchContext) {\n throw new Error(\"useAcoList must be used within a ACOProvider\");\n }\n\n const [folders, setFolders] = useStateIfMounted<FolderItem[]>([]);\n const [records, setRecords] = useStateIfMounted<SearchRecordItem[]>([]);\n const [listTitle, setListTitle] = useStateIfMounted<string | undefined>(undefined);\n const [state, setState] = useStateIfMounted<State<GenericSearchData>>(initializeAcoListState());\n\n const { records: originalRecords, loading: recordsLoading, listRecords, meta } = searchContext;\n\n /**\n * On first mount, call `listFolders` and `setState`, which will either issue a network request, or load folders and records from cache.\n * We don't need to store the result of it to any local state; that is managed by the context provider.\n *\n * IMPORTANT: we check if the folders[type] array exists: the hook can be used from multiple components and\n * fetch the outdated list from Apollo Cache. Since the state is managed locally, we fetch the folders only\n * at the first mount.\n *\n * We don't call `listRecords` directly, instead we call `setState` making it the only driver to fetch records from the apis.\n */\n useEffect(() => {\n if (!currentFolderId) {\n return;\n }\n\n setState(state => {\n return {\n ...state,\n after: undefined,\n filters: undefined,\n folderId: currentFolderId,\n isSearch: false,\n searchQuery: \"\",\n selected: [],\n showingFilters: false,\n showingSelectAll: false,\n isSelectedAll: false\n };\n });\n }, [currentFolderId]);\n\n /**\n * Any time we receive a `folders` list update:\n * - we set an empty array in case of search;\n * - we set the list filtered by the current `type` and parent `folderId`, sorted according to the current `sort` value;\n * - we set the current folder name.\n */\n useEffect(() => {\n const currentFolder = originalFolders?.find(\n folder => folder.id === (state.folderId || ROOT_FOLDER)\n );\n\n setListTitle(currentFolder?.title);\n\n if (state.isSearch) {\n setFolders([]);\n return;\n }\n\n const subFolders = getCurrentFolderList(originalFolders, state.folderId);\n setFolders(() => {\n return sortTableItems(subFolders, state.listSort);\n });\n }, [originalFolders, state.folderId, state.isSearch]);\n\n /**\n * Any time we receive a `records` list or `folderId` update:\n * - we set all `records` in case of search query;\n * - we set the `records` list filtered by the current `folderId`.\n */\n useEffect(() => {\n if (state.isSearch) {\n setRecords(originalRecords as SearchRecordItem[]);\n return;\n }\n\n const subRecords = getCurrentRecordList(\n originalRecords as SearchRecordItem[],\n folderIdPath,\n state.folderId\n );\n setRecords(subRecords);\n }, [originalRecords, state.folderId, state.isSearch]);\n\n /**\n * Any time we receive a new `sort` value:\n * - we sort the current `folders` list according to `sorting` value;\n */\n useEffect(() => {\n setFolders(prev => {\n const titleField = props?.titleFieldId || \"id\";\n return sortTableItems(prev, state.listSort, {\n [titleField]: \"title\"\n });\n });\n }, [state.listSort]);\n\n /**\n * Utility function to list/load more records, the `meta` state is tracked internally.\n */\n const listMoreRecords = useCallback(() => {\n const { hasMoreItems, cursor } = meta;\n if (hasMoreItems && cursor) {\n setState(state => ({ ...state, after: cursor }));\n }\n }, [meta]);\n\n /**\n * Constructs a \"where\" condition object based on the current state and properties.\n *\n * This function creates a \"where\" object used to filter data based on the current folder ID,\n * ownership status, and other existing filters in the state.\n *\n * @returns {Object} A \"where\" condition object containing filters for querying data.\n */\n const getWhere = useCallback(() => {\n // Initialize an empty object\n let where = {};\n\n if (!state.folderId) {\n return where;\n }\n\n // Check if the current folder ID is not the ROOT_FOLDER folder\n if (state.folderId !== ROOT_FOLDER) {\n // Get descendant folder IDs of the current folder\n const descendantFolderIds = getDescendantFolders(state.folderId).map(\n folder => folder.id\n );\n\n // Set the locationWhere object with descendant folder IDs\n where = dotPropImmutable.set({}, folderIdInPath, descendantFolderIds);\n }\n\n return {\n createdBy: props.own ? identity?.id : undefined, // Set 'createdBy' based on the ownership status\n ...state.filters, // Merge existing filters into the 'where' condition\n ...where // Include where condition if applicable\n };\n }, [folders, state.folderId, state.filters, props.own, identity]);\n\n /**\n * Any time we receive new useful `state` params:\n * - we fetch records according to the new params\n */\n useEffect(() => {\n const listItems = async () => {\n if (!state.folderId) {\n return;\n }\n\n const isSearch = Boolean(\n state.searchQuery ||\n (state.filters && Object.values(state.filters).filter(Boolean).length)\n );\n\n let where = dotPropImmutable.set({}, folderIdPath, state.folderId);\n\n // In case of a search or filters applied, let's get the where condition based on the current folder ID,\n // ownership status, and other existing filters in the state.\n if (isSearch) {\n where = getWhere();\n }\n\n const params: ListSearchRecordsQueryVariables = {\n limit: state.limit,\n sort: validateOrGetDefaultDbSort(state.listSort),\n search: state.searchQuery,\n after: state.after,\n where\n };\n\n await listRecords(params);\n\n setState(state => ({ ...state, isSearch }));\n };\n\n listItems();\n }, [\n state.folderId,\n state.filters,\n state.searchQuery,\n state.after,\n state.listSort,\n state.limit,\n props.own,\n identity\n ]);\n\n /**\n * useEffect hook to determine if the \"Select All\" option should be displayed based on the current state and meta properties:\n * - if in the root folder with no folders, checks if all records are selected.\n * - if in a non-root folder with multiple descendant folders, checks if all records are selected.\n * - if there are more items to load, checks if all records are selected.\n */\n useEffect(() => {\n // Destructure relevant properties from state and meta\n const { selected, folderId } = state;\n const { hasMoreItems } = meta;\n\n // Retrieve all descendant folders of the current folderId\n const folderWithChildren = folderId ? getDescendantFolders(folderId) : [];\n\n // Compute the lengths of various arrays for later comparisons\n const foldersLength = folders.length;\n const recordsLength = records.length;\n const selectedLength = selected.length;\n const folderWithChildrenLength = folderWithChildren.length;\n\n // Function to determine if all records are selected\n const getAllRecordsAreSelected = () => !!recordsLength && recordsLength === selectedLength;\n\n // Initialize a flag to determine if the \"Select All\" option should be shown\n let showingSelectAll = false;\n\n // If in the root folder and there are some folders, check if all records are selected\n if (folderId === ROOT_FOLDER && foldersLength > 0) {\n showingSelectAll = getAllRecordsAreSelected();\n }\n\n // If not in the root folder and there are multiple descendant folders, check if all records are selected\n if (folderId !== ROOT_FOLDER && folderWithChildrenLength > 1) {\n showingSelectAll = getAllRecordsAreSelected();\n }\n\n // If there are more items to load, check if all records are selected\n if (hasMoreItems) {\n showingSelectAll = getAllRecordsAreSelected();\n }\n\n // Update the component's state based on the computed showingSelectAll flag\n setState(prevState => {\n // Only update if there is a change in showingSelectAll or if isSelectedAll was true previously\n if (!prevState.isSelectedAll && prevState.showingSelectAll === showingSelectAll) {\n return prevState;\n }\n\n // Return the new state with updated showingSelectAll and reset isSelectedAll to false\n return {\n ...prevState,\n isSelectedAll: false,\n showingSelectAll\n };\n });\n }, [\n records.length,\n folders.length,\n state.isSearch,\n meta.hasMoreItems,\n state.selected.length,\n state.folderId\n ]);\n\n const context: AcoListContextData<GenericSearchData> = {\n ...pick(state, [\n \"isSearch\",\n \"searchQuery\",\n \"selected\",\n \"showingFilters\",\n \"showingSelectAll\",\n \"isSelectedAll\"\n ]),\n folders,\n records,\n listTitle,\n isListLoading: Boolean(\n recordsLoading.INIT || foldersLoading.INIT || recordsLoading.LIST || foldersLoading.LIST\n ),\n isListLoadingMore: Boolean(recordsLoading.LIST_MORE),\n meta,\n setSearchQuery(query) {\n setState(state => ({ ...state, searchQuery: query, after: undefined }));\n },\n setFilters(data) {\n setState(state => ({ ...state, filters: data, after: undefined }));\n // Create filters object excluding entries with `undefined` values\n const filters = Object.fromEntries(\n Object.entries(data).filter(([, value]) => value !== undefined)\n );\n\n setState(state => ({\n ...state,\n filters: Object.keys(filters).length ? filters : undefined,\n after: undefined\n }));\n },\n setListSort(sort: ListSearchRecordsSort) {\n setState(state => ({ ...state, listSort: sort, after: undefined }));\n },\n setSelected(selected) {\n setState(state => ({ ...state, selected }));\n },\n hideFilters() {\n setState(state => ({\n ...state,\n filters: undefined,\n showingFilters: false,\n after: undefined\n }));\n },\n showFilters() {\n setState(state => ({ ...state, showingFilters: true }));\n },\n selectAll() {\n setState(state => ({ ...state, isSelectedAll: true }));\n },\n unselectAll() {\n setState(state => ({\n ...state,\n selected: [],\n isSelectedAll: false\n }));\n },\n getWhere,\n listMoreRecords\n };\n\n return <AcoListContext.Provider value={context}>{children}</AcoListContext.Provider>;\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_dotPropImmutable","_interopRequireDefault","_pick","_appAdmin","_appSecurity","_hooks","_features","_folders","_records","_sorting","_constants","_excluded","AcoListContext","exports","React","createContext","undefined","initializeAcoListState","after","filters","folderId","isSearch","limit","listSort","searchQuery","selected","showingFilters","showingSelectAll","isSelectedAll","getCurrentFolderList","folders","currentFolderId","toLowerCase","ROOT_FOLDER","filter","folder","parentId","getCurrentRecordList","records","folderIdPath","record","dotPropImmutable","get","AcoListProvider","_ref","children","props","_objectWithoutProperties2","default","_useSecurity","useSecurity","identity","_useNavigateFolder","useNavigateFolder","_useAcoApp","useAcoApp","folderIdInPath","_useGetFolderHierarch","useGetFolderHierarchy","originalFolders","getIsFolderLoading","getFolderHierarchy","_useGetDescendantFold","useGetDescendantFolders","getDescendantFolders","_useListFoldersByPare","useListFoldersByParentIds","listFoldersByParentIds","folderContext","useContext","FoldersContext","searchContext","SearchRecordsContext","Error","_useStateIfMounted","useStateIfMounted","_useStateIfMounted2","_slicedToArray2","setFolders","_useStateIfMounted3","_useStateIfMounted4","setRecords","_useStateIfMounted5","_useStateIfMounted6","listTitle","setListTitle","_useStateIfMounted7","_useStateIfMounted8","state","setState","originalRecords","recordsLoading","loading","listRecords","meta","useEffect","length","_objectSpread2","currentFolder","find","id","title","subFolders","sortTableItems","subRecords","prev","titleField","titleFieldId","_defineProperty2","listMoreRecords","useCallback","hasMoreItems","cursor","getWhere","where","descendantFolderIds","map","set","createdBy","own","listItems","Boolean","Object","values","params","sort","validateOrGetDefaultDbSort","search","folderWithChildren","foldersLength","recordsLength","selectedLength","folderWithChildrenLength","getAllRecordsAreSelected","prevState","context","pick","isListLoading","INIT","LIST","isListLoadingMore","LIST_MORE","setSearchQuery","query","setFilters","data","fromEntries","entries","_ref2","_ref3","value","keys","setListSort","setSelected","hideFilters","showFilters","selectAll","unselectAll","createElement","Provider"],"sources":["acoList.tsx"],"sourcesContent":["import React, { useCallback, useContext, useEffect } from \"react\";\nimport dotPropImmutable from \"dot-prop-immutable\";\nimport pick from \"lodash/pick\";\nimport { useStateIfMounted } from \"@webiny/app-admin\";\nimport { useSecurity } from \"@webiny/app-security\";\nimport {\n FolderItem,\n GenericSearchData,\n ListMeta,\n ListSearchRecordsQueryVariables,\n ListSearchRecordsSort,\n SearchRecordItem\n} from \"~/types\";\nimport { useAcoApp, useNavigateFolder } from \"~/hooks\";\nimport {\n useGetDescendantFolders,\n useGetFolderHierarchy,\n useListFoldersByParentIds\n} from \"~/features\";\nimport { FoldersContext } from \"~/contexts/folders\";\nimport { SearchRecordsContext } from \"~/contexts/records\";\nimport { sortTableItems, validateOrGetDefaultDbSort } from \"~/sorting\";\nimport { ROOT_FOLDER } from \"~/constants\";\n\nexport interface AcoListContextData<T> {\n folders: FolderItem[];\n hideFilters: () => void;\n isListLoading: boolean;\n isListLoadingMore: boolean;\n isSearch: boolean;\n listMoreRecords: () => void;\n listTitle?: string;\n meta: ListMeta;\n records: T[];\n selected: T[];\n setFilters: (data: Record<string, any>) => void;\n setListSort: (state: ListSearchRecordsSort) => void;\n setSearchQuery: (query: string) => void;\n setSelected: (selected: T[]) => void;\n showFilters: () => void;\n showingFilters: boolean;\n showingSelectAll: boolean;\n searchQuery: string;\n isSelectedAll: boolean;\n selectAll: () => void;\n unselectAll: () => void;\n getWhere: () => Record<string, any>;\n}\n\nexport const AcoListContext = React.createContext<\n AcoListContextData<GenericSearchData> | undefined\n>(undefined);\n\nexport interface State<T> {\n after?: string;\n filters?: Record<string, any>;\n folderId?: string;\n isSearch: boolean;\n limit: number;\n listSort: ListSearchRecordsSort;\n searchQuery: string;\n selected: T[];\n showingFilters: boolean;\n showingSelectAll: boolean;\n isSelectedAll: boolean;\n}\n\nconst initializeAcoListState = (): State<GenericSearchData> => {\n return {\n after: undefined,\n filters: undefined,\n folderId: undefined,\n isSearch: false,\n limit: 50,\n listSort: [],\n searchQuery: \"\",\n selected: [],\n showingFilters: false,\n showingSelectAll: false,\n isSelectedAll: false\n };\n};\n\nconst getCurrentFolderList = (\n folders?: FolderItem[] | null,\n currentFolderId?: string\n): FolderItem[] | [] => {\n if (!folders) {\n return [];\n }\n if (!currentFolderId || currentFolderId.toLowerCase() === ROOT_FOLDER) {\n return folders.filter(\n folder => !folder.parentId || folder.parentId.toLowerCase() === ROOT_FOLDER\n );\n }\n return folders.filter(folder => folder.parentId === currentFolderId);\n};\n\nconst getCurrentRecordList = <T extends GenericSearchData = GenericSearchData>(\n records: SearchRecordItem<T>[],\n folderIdPath: string,\n currentFolderId?: string\n): SearchRecordItem<T>[] => {\n if (!records) {\n return [];\n }\n\n if (!currentFolderId) {\n return records;\n }\n\n return records.filter(\n (record): record is SearchRecordItem<T> =>\n dotPropImmutable.get(record, folderIdPath) === currentFolderId\n );\n};\n\nexport interface AcoListProviderProps {\n children: React.ReactNode;\n own?: boolean;\n titleFieldId: string | null;\n}\n\nexport const AcoListProvider = ({ children, ...props }: AcoListProviderProps) => {\n const { identity } = useSecurity();\n const { currentFolderId } = useNavigateFolder();\n const { folderIdPath, folderIdInPath } = useAcoApp();\n const {\n folders: originalFolders,\n getIsFolderLoading,\n getFolderHierarchy\n } = useGetFolderHierarchy();\n const { getDescendantFolders } = useGetDescendantFolders();\n const { listFoldersByParentIds } = useListFoldersByParentIds();\n const folderContext = useContext(FoldersContext);\n const searchContext = useContext(SearchRecordsContext);\n\n if (!folderContext || !searchContext) {\n throw new Error(\"useAcoList must be used within a ACOProvider\");\n }\n\n const [folders, setFolders] = useStateIfMounted<FolderItem[]>([]);\n const [records, setRecords] = useStateIfMounted<SearchRecordItem[]>([]);\n const [listTitle, setListTitle] = useStateIfMounted<string | undefined>(undefined);\n const [state, setState] = useStateIfMounted<State<GenericSearchData>>(initializeAcoListState());\n\n const { records: originalRecords, loading: recordsLoading, listRecords, meta } = searchContext;\n\n /**\n * On first mount, call `getFolderHierarchy` and `setState`, which will either issue a network request, or load folders and records from cache.\n * We don't need to store the result of it to any local state; that is managed by the context provider.\n *\n * We don't call `listRecords` directly, instead we call `setState` making it the only driver to fetch records from the apis.\n */\n useEffect(() => {\n // The folders collection is empty, it must be the first render, let's load the full hierarchy.\n if (folders.length === 0) {\n getFolderHierarchy(currentFolderId);\n } else {\n // Otherwise let's load only the current folder sub-tree\n listFoldersByParentIds([currentFolderId]);\n }\n\n setState(state => {\n return {\n ...state,\n after: undefined,\n filters: undefined,\n folderId: currentFolderId,\n isSearch: false,\n searchQuery: \"\",\n selected: [],\n showingFilters: false,\n showingSelectAll: false,\n isSelectedAll: false\n };\n });\n }, [currentFolderId]);\n\n /**\n * Any time we receive a `folders` list update:\n * - we set an empty array in case of search;\n * - we set the list filtered by the current `type` and parent `folderId`, sorted according to the current `sort` value;\n * - we set the current folder name.\n */\n useEffect(() => {\n const currentFolder = originalFolders?.find(\n folder => folder.id === (state.folderId || ROOT_FOLDER)\n );\n\n setListTitle(currentFolder?.title);\n\n if (state.isSearch) {\n setFolders([]);\n return;\n }\n\n const subFolders = getCurrentFolderList(originalFolders, state.folderId);\n setFolders(() => {\n return sortTableItems(subFolders, state.listSort);\n });\n }, [originalFolders, state.folderId, state.isSearch]);\n\n /**\n * Any time we receive a `records` list or `folderId` update:\n * - we set all `records` in case of search query;\n * - we set the `records` list filtered by the current `folderId`.\n */\n useEffect(() => {\n if (state.isSearch) {\n setRecords(originalRecords as SearchRecordItem[]);\n return;\n }\n\n const subRecords = getCurrentRecordList(\n originalRecords as SearchRecordItem[],\n folderIdPath,\n state.folderId\n );\n setRecords(subRecords);\n }, [originalRecords, state.folderId, state.isSearch]);\n\n /**\n * Any time we receive a new `sort` value:\n * - we sort the current `folders` list according to `sorting` value;\n */\n useEffect(() => {\n setFolders(prev => {\n const titleField = props?.titleFieldId || \"id\";\n return sortTableItems(prev, state.listSort, {\n [titleField]: \"title\"\n });\n });\n }, [state.listSort]);\n\n /**\n * Utility function to list/load more records, the `meta` state is tracked internally.\n */\n const listMoreRecords = useCallback(() => {\n const { hasMoreItems, cursor } = meta;\n if (hasMoreItems && cursor) {\n setState(state => ({ ...state, after: cursor }));\n }\n }, [meta]);\n\n /**\n * Constructs a \"where\" condition object based on the current state and properties.\n *\n * This function creates a \"where\" object used to filter data based on the current folder ID,\n * ownership status, and other existing filters in the state.\n *\n * @returns {Object} A \"where\" condition object containing filters for querying data.\n */\n const getWhere = useCallback(() => {\n // Initialize an empty object\n let where = {};\n\n if (!state.folderId) {\n return where;\n }\n\n // Check if the current folder ID is not the ROOT_FOLDER folder\n if (state.folderId !== ROOT_FOLDER) {\n // Get descendant folder IDs of the current folder\n const descendantFolderIds = getDescendantFolders(state.folderId).map(\n folder => folder.id\n );\n\n // Set the locationWhere object with descendant folder IDs\n where = dotPropImmutable.set({}, folderIdInPath, descendantFolderIds);\n }\n\n return {\n createdBy: props.own ? identity?.id : undefined, // Set 'createdBy' based on the ownership status\n ...state.filters, // Merge existing filters into the 'where' condition\n ...where // Include where condition if applicable\n };\n }, [folders, state.folderId, state.filters, props.own, identity]);\n\n /**\n * Any time we receive new useful `state` params:\n * - we fetch records according to the new params\n */\n useEffect(() => {\n const listItems = async () => {\n if (!state.folderId) {\n return;\n }\n\n const isSearch = Boolean(\n state.searchQuery ||\n (state.filters && Object.values(state.filters).filter(Boolean).length)\n );\n\n let where = dotPropImmutable.set({}, folderIdPath, state.folderId);\n\n // In case of a search or filters applied, let's get the where condition based on the current folder ID,\n // ownership status, and other existing filters in the state.\n if (isSearch) {\n where = getWhere();\n }\n\n const params: ListSearchRecordsQueryVariables = {\n limit: state.limit,\n sort: validateOrGetDefaultDbSort(state.listSort),\n search: state.searchQuery,\n after: state.after,\n where\n };\n\n await listRecords(params);\n\n setState(state => ({ ...state, isSearch }));\n };\n\n listItems();\n }, [\n state.folderId,\n state.filters,\n state.searchQuery,\n state.after,\n state.listSort,\n state.limit,\n props.own,\n identity\n ]);\n\n /**\n * useEffect hook to determine if the \"Select All\" option should be displayed based on the current state and meta properties:\n * - if in the root folder with no folders, checks if all records are selected.\n * - if in a non-root folder with multiple descendant folders, checks if all records are selected.\n * - if there are more items to load, checks if all records are selected.\n */\n useEffect(() => {\n // Destructure relevant properties from state and meta\n const { selected, folderId } = state;\n const { hasMoreItems } = meta;\n\n // Retrieve all descendant folders of the current folderId\n const folderWithChildren = folderId ? getDescendantFolders(folderId) : [];\n\n // Compute the lengths of various arrays for later comparisons\n const foldersLength = folders.length;\n const recordsLength = records.length;\n const selectedLength = selected.length;\n const folderWithChildrenLength = folderWithChildren.length;\n\n // Function to determine if all records are selected\n const getAllRecordsAreSelected = () => !!recordsLength && recordsLength === selectedLength;\n\n // Initialize a flag to determine if the \"Select All\" option should be shown\n let showingSelectAll = false;\n\n // If in the root folder and there are some folders, check if all records are selected\n if (folderId === ROOT_FOLDER && foldersLength > 0) {\n showingSelectAll = getAllRecordsAreSelected();\n }\n\n // If not in the root folder and there are multiple descendant folders, check if all records are selected\n if (folderId !== ROOT_FOLDER && folderWithChildrenLength > 1) {\n showingSelectAll = getAllRecordsAreSelected();\n }\n\n // If there are more items to load, check if all records are selected\n if (hasMoreItems) {\n showingSelectAll = getAllRecordsAreSelected();\n }\n\n // Update the component's state based on the computed showingSelectAll flag\n setState(prevState => {\n // Only update if there is a change in showingSelectAll or if isSelectedAll was true previously\n if (!prevState.isSelectedAll && prevState.showingSelectAll === showingSelectAll) {\n return prevState;\n }\n\n // Return the new state with updated showingSelectAll and reset isSelectedAll to false\n return {\n ...prevState,\n isSelectedAll: false,\n showingSelectAll\n };\n });\n }, [\n records.length,\n folders.length,\n state.isSearch,\n meta.hasMoreItems,\n state.selected.length,\n state.folderId\n ]);\n\n const context: AcoListContextData<GenericSearchData> = {\n ...pick(state, [\n \"isSearch\",\n \"searchQuery\",\n \"selected\",\n \"showingFilters\",\n \"showingSelectAll\",\n \"isSelectedAll\"\n ]),\n folders,\n records,\n listTitle,\n isListLoading: Boolean(\n recordsLoading.INIT || recordsLoading.LIST || getIsFolderLoading(currentFolderId)\n ),\n isListLoadingMore: Boolean(recordsLoading.LIST_MORE),\n meta,\n setSearchQuery(query) {\n setState(state => ({ ...state, searchQuery: query, after: undefined }));\n },\n setFilters(data) {\n setState(state => ({ ...state, filters: data, after: undefined }));\n // Create filters object excluding entries with `undefined` values\n const filters = Object.fromEntries(\n Object.entries(data).filter(([, value]) => value !== undefined)\n );\n\n setState(state => ({\n ...state,\n filters: Object.keys(filters).length ? filters : undefined,\n after: undefined\n }));\n },\n setListSort(sort: ListSearchRecordsSort) {\n setState(state => ({ ...state, listSort: sort, after: undefined }));\n },\n setSelected(selected) {\n setState(state => ({ ...state, selected }));\n },\n hideFilters() {\n setState(state => ({\n ...state,\n filters: undefined,\n showingFilters: false,\n after: undefined\n }));\n },\n showFilters() {\n setState(state => ({ ...state, showingFilters: true }));\n },\n selectAll() {\n setState(state => ({ ...state, isSelectedAll: true }));\n },\n unselectAll() {\n setState(state => ({\n ...state,\n selected: [],\n isSelectedAll: false\n }));\n },\n getWhere,\n listMoreRecords\n };\n\n return <AcoListContext.Provider value={context}>{children}</AcoListContext.Provider>;\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -58,7 +58,7 @@ var NavigateFolderProvider = exports.NavigateFolderProvider = function NavigateF
|
|
|
58
58
|
props.navigateToListHome();
|
|
59
59
|
};
|
|
60
60
|
var context = {
|
|
61
|
-
currentFolderId: currentFolderId || getFolderFromStorage(),
|
|
61
|
+
currentFolderId: currentFolderId || getFolderFromStorage() || _constants.ROOT_FOLDER,
|
|
62
62
|
setFolderToStorage: setFolderToStorage,
|
|
63
63
|
navigateToListHome: navigateToListHome,
|
|
64
64
|
navigateToFolder: navigateToFolder,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_store","_interopRequireDefault","_constants","_excluded","NavigateFolderContext","exports","React","createContext","undefined","NavigateFolderProvider","_ref","currentFolderId","folderId","children","createStorageKey","props","_objectWithoutProperties2","default","setFolderToStorage","useCallback","newFolderId","store","set","getFolderFromStorage","get","toLowerCase","useEffect","setTimeout","navigateToLatestFolder","storageFolderId","ROOT_FOLDER","navigateToFolder","navigateToListHome","remove","context","createElement","Provider","value"],"sources":["navigateFolder.tsx"],"sourcesContent":["import React, { useCallback, useEffect } from \"react\";\nimport store from \"store\";\nimport { ROOT_FOLDER } from \"~/constants\";\n\nexport interface NavigateFolderContext {\n currentFolderId
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_store","_interopRequireDefault","_constants","_excluded","NavigateFolderContext","exports","React","createContext","undefined","NavigateFolderProvider","_ref","currentFolderId","folderId","children","createStorageKey","props","_objectWithoutProperties2","default","setFolderToStorage","useCallback","newFolderId","store","set","getFolderFromStorage","get","toLowerCase","useEffect","setTimeout","navigateToLatestFolder","storageFolderId","ROOT_FOLDER","navigateToFolder","navigateToListHome","remove","context","createElement","Provider","value"],"sources":["navigateFolder.tsx"],"sourcesContent":["import React, { useCallback, useEffect } from \"react\";\nimport store from \"store\";\nimport { ROOT_FOLDER } from \"~/constants\";\n\nexport interface NavigateFolderContext {\n currentFolderId: string;\n setFolderToStorage: (folderId?: string) => void;\n navigateToListHome: () => void;\n navigateToFolder: (folder?: string) => void;\n navigateToLatestFolder: () => void;\n}\n\nexport const NavigateFolderContext = React.createContext<NavigateFolderContext | undefined>(\n undefined\n);\n\nexport interface NavigateFolderProviderProps {\n folderId: string | undefined;\n children: React.ReactNode;\n navigateToListHome: () => void;\n navigateToFolder: (folderId: string) => void;\n navigateToLatestFolder: (folderId: string) => void;\n createStorageKey: () => string;\n}\n\nexport const NavigateFolderProvider = ({\n folderId: currentFolderId,\n children,\n createStorageKey,\n ...props\n}: NavigateFolderProviderProps) => {\n /**\n * Helper function to set the current folderId to local storage:\n * we export this function to call it programmatically when we need it and\n * persist the value on view switch.\n */\n const setFolderToStorage = useCallback(\n (newFolderId?: string): void => {\n store.set(createStorageKey(), newFolderId);\n },\n [createStorageKey]\n );\n\n /**\n * Helper function to get the current folderId to local storage.\n * NOTE: with 5.37.0 we moved from \"ROOT\" to \"root\" as home folderId,\n * we need to return the lowercase value.\n */\n const getFolderFromStorage = useCallback((): string | undefined => {\n const folderId = store.get(createStorageKey()) as string | undefined;\n return folderId?.toLowerCase();\n }, [createStorageKey]);\n\n useEffect(() => {\n setTimeout(() => {\n // Defer navigation to next tick.\n navigateToLatestFolder();\n });\n }, []);\n\n /**\n * Navigate to the latest folder, considering the latest visited folder.\n */\n const navigateToLatestFolder = useCallback(() => {\n const storageFolderId = getFolderFromStorage();\n props.navigateToLatestFolder(currentFolderId || storageFolderId || ROOT_FOLDER);\n }, [currentFolderId]);\n\n const navigateToFolder = useCallback(\n (folderId?: string) => {\n setFolderToStorage(folderId);\n props.navigateToFolder(folderId || ROOT_FOLDER);\n },\n [currentFolderId]\n );\n\n const navigateToListHome = () => {\n store.remove(createStorageKey());\n props.navigateToListHome();\n };\n\n const context: NavigateFolderContext = {\n currentFolderId: currentFolderId || getFolderFromStorage() || ROOT_FOLDER,\n setFolderToStorage,\n navigateToListHome,\n navigateToFolder,\n navigateToLatestFolder\n };\n\n return (\n <NavigateFolderContext.Provider value={context}>{children}</NavigateFolderContext.Provider>\n );\n};\n"],"mappings":";;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,MAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AAA0C,IAAAI,SAAA;AAUnC,IAAMC,qBAAqB,GAAAC,OAAA,CAAAD,qBAAA,gBAAGE,cAAK,CAACC,aAAa,CACpDC,SACJ,CAAC;AAWM,IAAMC,sBAAsB,GAAAJ,OAAA,CAAAI,sBAAA,GAAG,SAAzBA,sBAAsBA,CAAAC,IAAA,EAKA;EAAA,IAJrBC,eAAe,GAAAD,IAAA,CAAzBE,QAAQ;IACRC,QAAQ,GAAAH,IAAA,CAARG,QAAQ;IACRC,gBAAgB,GAAAJ,IAAA,CAAhBI,gBAAgB;IACbC,KAAK,OAAAC,yBAAA,CAAAC,OAAA,EAAAP,IAAA,EAAAP,SAAA;EAER;AACJ;AACA;AACA;AACA;EACI,IAAMe,kBAAkB,GAAG,IAAAC,kBAAW,EAClC,UAACC,WAAoB,EAAW;IAC5BC,cAAK,CAACC,GAAG,CAACR,gBAAgB,CAAC,CAAC,EAAEM,WAAW,CAAC;EAC9C,CAAC,EACD,CAACN,gBAAgB,CACrB,CAAC;;EAED;AACJ;AACA;AACA;AACA;EACI,IAAMS,oBAAoB,GAAG,IAAAJ,kBAAW,EAAC,YAA0B;IAC/D,IAAMP,QAAQ,GAAGS,cAAK,CAACG,GAAG,CAACV,gBAAgB,CAAC,CAAC,CAAuB;IACpE,OAAOF,QAAQ,EAAEa,WAAW,CAAC,CAAC;EAClC,CAAC,EAAE,CAACX,gBAAgB,CAAC,CAAC;EAEtB,IAAAY,gBAAS,EAAC,YAAM;IACZC,UAAU,CAAC,YAAM;MACb;MACAC,sBAAsB,CAAC,CAAC;IAC5B,CAAC,CAAC;EACN,CAAC,EAAE,EAAE,CAAC;;EAEN;AACJ;AACA;EACI,IAAMA,sBAAsB,GAAG,IAAAT,kBAAW,EAAC,YAAM;IAC7C,IAAMU,eAAe,GAAGN,oBAAoB,CAAC,CAAC;IAC9CR,KAAK,CAACa,sBAAsB,CAACjB,eAAe,IAAIkB,eAAe,IAAIC,sBAAW,CAAC;EACnF,CAAC,EAAE,CAACnB,eAAe,CAAC,CAAC;EAErB,IAAMoB,gBAAgB,GAAG,IAAAZ,kBAAW,EAChC,UAACP,QAAiB,EAAK;IACnBM,kBAAkB,CAACN,QAAQ,CAAC;IAC5BG,KAAK,CAACgB,gBAAgB,CAACnB,QAAQ,IAAIkB,sBAAW,CAAC;EACnD,CAAC,EACD,CAACnB,eAAe,CACpB,CAAC;EAED,IAAMqB,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAA,EAAS;IAC7BX,cAAK,CAACY,MAAM,CAACnB,gBAAgB,CAAC,CAAC,CAAC;IAChCC,KAAK,CAACiB,kBAAkB,CAAC,CAAC;EAC9B,CAAC;EAED,IAAME,OAA8B,GAAG;IACnCvB,eAAe,EAAEA,eAAe,IAAIY,oBAAoB,CAAC,CAAC,IAAIO,sBAAW;IACzEZ,kBAAkB,EAAlBA,kBAAkB;IAClBc,kBAAkB,EAAlBA,kBAAkB;IAClBD,gBAAgB,EAAhBA,gBAAgB;IAChBH,sBAAsB,EAAtBA;EACJ,CAAC;EAED,oBACI/B,MAAA,CAAAoB,OAAA,CAAAkB,aAAA,CAAC/B,qBAAqB,CAACgC,QAAQ;IAACC,KAAK,EAAEH;EAAQ,GAAErB,QAAyC,CAAC;AAEnG,CAAC","ignoreList":[]}
|
|
@@ -18,6 +18,10 @@ var _appSecurity = require("@webiny/app-security");
|
|
|
18
18
|
var _Tooltip = require("@webiny/ui/Tooltip");
|
|
19
19
|
function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
|
|
20
20
|
var TARGET_LEVELS = [{
|
|
21
|
+
id: "no-access",
|
|
22
|
+
label: "No Access",
|
|
23
|
+
description: "Cannot view or modify content"
|
|
24
|
+
}, {
|
|
21
25
|
id: "viewer",
|
|
22
26
|
label: "Viewer",
|
|
23
27
|
description: "Can view content, but not modify it"
|
|
@@ -38,7 +42,7 @@ var StyledHandle = /*#__PURE__*/(0, _base.default)("div", process.env.NODE_ENV =
|
|
|
38
42
|
})("display:flex;color:var(--mdc-theme-text-primary-on-background);cursor:pointer;padding:20px 0 20px 20px;", function (_ref) {
|
|
39
43
|
var disabled = _ref.disabled;
|
|
40
44
|
return disabled && "opacity: 0.5; pointer-events: none;";
|
|
41
|
-
}, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
45
|
+
}, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkxpc3RJdGVtTWV0YS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBa0NzRCIsImZpbGUiOiJMaXN0SXRlbU1ldGEudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IExpc3RBY3Rpb25zLCBMaXN0SXRlbU1ldGEgYXMgVWlMaXN0SXRlbU1ldGEgfSBmcm9tIFwiQHdlYmlueS91aS9MaXN0XCI7XG5pbXBvcnQgeyBNZW51LCBNZW51RGl2aWRlciwgTWVudUl0ZW0gfSBmcm9tIFwiQHdlYmlueS91aS9NZW51XCI7XG5pbXBvcnQgeyBSZWFjdENvbXBvbmVudCBhcyBNb3JlIH0gZnJvbSBcIkBtYXRlcmlhbC1kZXNpZ24taWNvbnMvc3ZnL291dGxpbmVkL2Fycm93X2Ryb3BfZG93bi5zdmdcIjtcbmltcG9ydCB7IFJlYWN0Q29tcG9uZW50IGFzIENoZWNrIH0gZnJvbSBcIkBtYXRlcmlhbC1kZXNpZ24taWNvbnMvc3ZnL291dGxpbmVkL2NoZWNrLnN2Z1wiO1xuaW1wb3J0IHsgVHlwb2dyYXBoeSB9IGZyb20gXCJAd2ViaW55L3VpL1R5cG9ncmFwaHlcIjtcbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZFwiO1xuaW1wb3J0IHsgdXNlU2VjdXJpdHkgfSBmcm9tIFwiQHdlYmlueS9hcHAtc2VjdXJpdHlcIjtcbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tIFwiQHdlYmlueS91aS9Ub29sdGlwXCI7XG5pbXBvcnQgeyBGb2xkZXJBY2Nlc3NMZXZlbCwgRm9sZGVyTGV2ZWxQZXJtaXNzaW9uc1RhcmdldCwgRm9sZGVyUGVybWlzc2lvbiB9IGZyb20gXCJ+L3R5cGVzXCI7XG5cbmNvbnN0IFRBUkdFVF9MRVZFTFMgPSBbXG4gICAge1xuICAgICAgICBpZDogXCJuby1hY2Nlc3NcIixcbiAgICAgICAgbGFiZWw6IFwiTm8gQWNjZXNzXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkNhbm5vdCB2aWV3IG9yIG1vZGlmeSBjb250ZW50XCJcbiAgICB9LFxuICAgIHtcbiAgICAgICAgaWQ6IFwidmlld2VyXCIsXG4gICAgICAgIGxhYmVsOiBcIlZpZXdlclwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJDYW4gdmlldyBjb250ZW50LCBidXQgbm90IG1vZGlmeSBpdFwiXG4gICAgfSxcbiAgICB7XG4gICAgICAgIGlkOiBcImVkaXRvclwiLFxuICAgICAgICBsYWJlbDogXCJFZGl0b3JcIixcbiAgICAgICAgZGVzY3JpcHRpb246IFwiQ2FuIHZpZXcgYW5kIG1vZGlmeSBjb250ZW50XCJcbiAgICB9LFxuICAgIHtcbiAgICAgICAgaWQ6IFwib3duZXJcIixcbiAgICAgICAgbGFiZWw6IFwiT3duZXJcIixcbiAgICAgICAgZGVzY3JpcHRpb246IFwiQ2FuIGVkaXQgYW5kIG1hbmFnZSBjb250ZW50IHBlcm1pc3Npb25zXCJcbiAgICB9XG5dO1xuXG5jb25zdCBTdHlsZWRIYW5kbGUgPSBzdHlsZWQuZGl2PHsgZGlzYWJsZWQ6IGJvb2xlYW4gfT5gXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBjb2xvcjogdmFyKC0tbWRjLXRoZW1lLXRleHQtcHJpbWFyeS1vbi1iYWNrZ3JvdW5kKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgcGFkZGluZzogMjBweCAwIDIwcHggMjBweDtcbiAgICAkeyh7IGRpc2FibGVkIH0pID0+IGRpc2FibGVkICYmIGBvcGFjaXR5OiAwLjU7IHBvaW50ZXItZXZlbnRzOiBub25lO2B9XG5gO1xuXG5jb25zdCBTdHlsZWRNZW51SXRlbSA9IHN0eWxlZChNZW51SXRlbSlgXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBwYWRkaW5nLXRvcDogNXB4O1xuICAgIHBhZGRpbmctYm90dG9tOiA1cHg7XG5cbiAgICBkaXYuc2VsZWN0ZWQge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDE1cHg7XG4gICAgICAgIHdpZHRoOiAyMHB4O1xuICAgICAgICBoZWlnaHQ6IDIwcHg7XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIGZpbGw6IHZhcigtLW1kYy10aGVtZS1wcmltYXJ5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRpdi5pbmZvIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgfVxuYDtcblxuaW50ZXJmYWNlIExpc3RJdGVtTWV0YVByb3BzIHtcbiAgICBwZXJtaXNzaW9uOiBGb2xkZXJQZXJtaXNzaW9uO1xuICAgIHRhcmdldDogRm9sZGVyTGV2ZWxQZXJtaXNzaW9uc1RhcmdldDtcbiAgICB0YXJnZXRzTGlzdDogRm9sZGVyTGV2ZWxQZXJtaXNzaW9uc1RhcmdldFtdO1xuICAgIG9uUmVtb3ZlQWNjZXNzOiAocGFyYW1zOiB7IHBlcm1pc3Npb246IEZvbGRlclBlcm1pc3Npb24gfSkgPT4gdm9pZDtcbiAgICBvblVwZGF0ZVBlcm1pc3Npb246IChwYXJhbXM6IHsgcGVybWlzc2lvbjogRm9sZGVyUGVybWlzc2lvbiB9KSA9PiB2b2lkO1xufVxuXG5leHBvcnQgY29uc3QgTGlzdEl0ZW1NZXRhID0gKHtcbiAgICBwZXJtaXNzaW9uLFxuICAgIHRhcmdldCxcbiAgICB0YXJnZXRzTGlzdCxcbiAgICBvblJlbW92ZUFjY2VzcyxcbiAgICBvblVwZGF0ZVBlcm1pc3Npb25cbn06IExpc3RJdGVtTWV0YVByb3BzKSA9PiB7XG4gICAgY29uc3QgeyBpZGVudGl0eSB9ID0gdXNlU2VjdXJpdHkoKTtcblxuICAgIGNvbnN0IGN1cnJlbnRMZXZlbCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICByZXR1cm4gVEFSR0VUX0xFVkVMUy5maW5kKGxldmVsID0+IGxldmVsLmlkID09PSBwZXJtaXNzaW9uLmxldmVsKSE7XG4gICAgfSwgW3Blcm1pc3Npb24ubGV2ZWxdKTtcblxuICAgIGNvbnN0IHsgaXNEaXNhYmxlZCwgdG9vbHRpcE1lc3NhZ2UgfSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBsZXQgbWVzc2FnZSA9IG51bGw7XG4gICAgICAgIGxldCBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChwZXJtaXNzaW9uLmluaGVyaXRlZEZyb20/LnN0YXJ0c1dpdGgoXCJwYXJlbnQ6XCIpKSB7XG4gICAgICAgICAgICBtZXNzYWdlID0gXCJJbmhlcml0ZWQgZnJvbSBwYXJlbnQgZm9sZGVyLlwiO1xuICAgICAgICAgICAgZGlzYWJsZWQgPSBmYWxzZTsgLy8gU3RpbGwgYWxsb3cgaW50ZXJhY3Rpb24sIGp1c3QgaW5mb3JtIHVzZXJcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpZGVudGl0eSEuaWQgPT09IHRhcmdldC5pZCkge1xuICAgICAgICAgICAgbWVzc2FnZSA9IFwiWW91IGNhbid0IGNoYW5nZSB5b3VyIG93biBwZXJtaXNzaW9ucy5cIjtcbiAgICAgICAgICAgIGlmIChwZXJtaXNzaW9uLmluaGVyaXRlZEZyb20/LnN0YXJ0c1dpdGgoXCJ0ZWFtOlwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRlYW0gPSB0YXJnZXRzTGlzdC5maW5kKHQgPT4gdC50YXJnZXQgPT09IHBlcm1pc3Npb24uaW5oZXJpdGVkRnJvbSk7XG4gICAgICAgICAgICAgICAgbWVzc2FnZSArPSBcIiBBY2Nlc3MgdG8gdGhpcyBmb2xkZXIgaXMgbWFuYWdlZCBieSBhIHRlYW1cIjtcbiAgICAgICAgICAgICAgICBpZiAodGVhbSkge1xuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlICs9IGAgKCR7dGVhbS5uYW1lfSlgO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBtZXNzYWdlICs9IFwiLlwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHsgaXNEaXNhYmxlZDogZGlzYWJsZWQsIHRvb2x0aXBNZXNzYWdlOiBtZXNzYWdlIH07XG4gICAgfSwgW3Blcm1pc3Npb24sIGlkZW50aXR5LCB0YXJnZXQsIHRhcmdldHNMaXN0XSk7XG5cbiAgICBjb25zdCBoYW5kbGUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgbGV0IGhhbmRsZSA9IChcbiAgICAgICAgICAgIDxTdHlsZWRIYW5kbGUgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9PlxuICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5IHVzZT1cImJvZHkxXCI+e2N1cnJlbnRMZXZlbC5sYWJlbH08L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgICAgPE1vcmUgLz5cbiAgICAgICAgICAgIDwvU3R5bGVkSGFuZGxlPlxuICAgICAgICApO1xuXG4gICAgICAgIGlmICh0b29sdGlwTWVzc2FnZSkge1xuICAgICAgICAgICAgaGFuZGxlID0gPFRvb2x0aXAgY29udGVudD17dG9vbHRpcE1lc3NhZ2V9PntoYW5kbGV9PC9Ub29sdGlwPjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBoYW5kbGU7XG4gICAgfSwgW3Rvb2x0aXBNZXNzYWdlLCBpc0Rpc2FibGVkLCBjdXJyZW50TGV2ZWwubGFiZWxdKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxVaUxpc3RJdGVtTWV0YT5cbiAgICAgICAgICAgIDxMaXN0QWN0aW9ucz5cbiAgICAgICAgICAgICAgICA8TWVudVxuICAgICAgICAgICAgICAgICAgICBoYW5kbGU9e2hhbmRsZX1cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgIC8vIFNob3VsZCBwcmV2ZW50IGZpcnN0IGl0ZW0gZnJvbSBiZWluZyBhdXRvZm9jdXNlZCwgYnV0IGl0IGRvZXNuJ3QuIPCfpLfigI1cbiAgICAgICAgICAgICAgICAgICAgZm9jdXNPbk9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIHRoZSB6LWluZGV4IHZhbHVlIGlzIHNldCBpbiBgcGFja2FnZXMvYXBwLWFkbWluL3NyYy9jb21wb25lbnRzL0RpYWxvZ3Mvc3R5bGVkLnRzeGBcbiAgICAgICAgICAgICAgICAgICAgcG9ydGFsWkluZGV4PXsxMDF9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7VEFSR0VUX0xFVkVMUy5tYXAobGV2ZWwgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZE1lbnVJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtsZXZlbC5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5lZWRlZCB0byBkbyB0aGlzIHdpdGggYSBzaG9ydCBkZWxheSBiZWNhdXNlIG9mIGEgdmlzdWFsIGdsaXRjaC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblVwZGF0ZVBlcm1pc3Npb24oe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcm1pc3Npb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucGVybWlzc2lvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdGVkRnJvbTogdW5kZWZpbmVkLCAvLyBSZXNldCBpbmhlcml0ZWQgcGVybWlzc2lvbnMgdG8gYWxsb3cgdXNlci1kZWZpbmVkIGNoYW5nZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGxldmVsLmlkIGFzIEZvbGRlckFjY2Vzc0xldmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDc1KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic2VsZWN0ZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2N1cnJlbnRMZXZlbC5pZCA9PT0gbGV2ZWwuaWQgJiYgPENoZWNrIC8+fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaW5mb1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeSB1c2U9XCJib2R5MVwiPntsZXZlbC5sYWJlbH08L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5IHVzZT1cImNhcHRpb25cIj57bGV2ZWwuZGVzY3JpcHRpb259PC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWRNZW51SXRlbT5cbiAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgIDxNZW51RGl2aWRlciAvPlxuICAgICAgICAgICAgICAgICAgICA8TWVudUl0ZW0gb25DbGljaz17KCkgPT4gb25SZW1vdmVBY2Nlc3MoeyBwZXJtaXNzaW9uIH0pfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIFJlbW92ZSBhY2Nlc3NcbiAgICAgICAgICAgICAgICAgICAgPC9NZW51SXRlbT5cbiAgICAgICAgICAgICAgICA8L01lbnU+XG4gICAgICAgICAgICA8L0xpc3RBY3Rpb25zPlxuICAgICAgICA8L1VpTGlzdEl0ZW1NZXRhPlxuICAgICk7XG59O1xuIl19 */"));
|
|
42
46
|
var StyledMenuItem = /*#__PURE__*/(0, _base.default)(_Menu.MenuItem, process.env.NODE_ENV === "production" ? {
|
|
43
47
|
target: "e1pth4430"
|
|
44
48
|
} : {
|
|
@@ -50,7 +54,7 @@ var StyledMenuItem = /*#__PURE__*/(0, _base.default)(_Menu.MenuItem, process.env
|
|
|
50
54
|
} : {
|
|
51
55
|
name: "e05fop",
|
|
52
56
|
styles: "display:flex;padding-top:5px;padding-bottom:5px;div.selected{margin-right:15px;width:20px;height:20px;svg{fill:var(--mdc-theme-primary);}}div.info{display:flex;flex-direction:column;justify-content:center;}",
|
|
53
|
-
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
57
|
+
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkxpc3RJdGVtTWV0YS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBMEN1QyIsImZpbGUiOiJMaXN0SXRlbU1ldGEudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IExpc3RBY3Rpb25zLCBMaXN0SXRlbU1ldGEgYXMgVWlMaXN0SXRlbU1ldGEgfSBmcm9tIFwiQHdlYmlueS91aS9MaXN0XCI7XG5pbXBvcnQgeyBNZW51LCBNZW51RGl2aWRlciwgTWVudUl0ZW0gfSBmcm9tIFwiQHdlYmlueS91aS9NZW51XCI7XG5pbXBvcnQgeyBSZWFjdENvbXBvbmVudCBhcyBNb3JlIH0gZnJvbSBcIkBtYXRlcmlhbC1kZXNpZ24taWNvbnMvc3ZnL291dGxpbmVkL2Fycm93X2Ryb3BfZG93bi5zdmdcIjtcbmltcG9ydCB7IFJlYWN0Q29tcG9uZW50IGFzIENoZWNrIH0gZnJvbSBcIkBtYXRlcmlhbC1kZXNpZ24taWNvbnMvc3ZnL291dGxpbmVkL2NoZWNrLnN2Z1wiO1xuaW1wb3J0IHsgVHlwb2dyYXBoeSB9IGZyb20gXCJAd2ViaW55L3VpL1R5cG9ncmFwaHlcIjtcbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZFwiO1xuaW1wb3J0IHsgdXNlU2VjdXJpdHkgfSBmcm9tIFwiQHdlYmlueS9hcHAtc2VjdXJpdHlcIjtcbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tIFwiQHdlYmlueS91aS9Ub29sdGlwXCI7XG5pbXBvcnQgeyBGb2xkZXJBY2Nlc3NMZXZlbCwgRm9sZGVyTGV2ZWxQZXJtaXNzaW9uc1RhcmdldCwgRm9sZGVyUGVybWlzc2lvbiB9IGZyb20gXCJ+L3R5cGVzXCI7XG5cbmNvbnN0IFRBUkdFVF9MRVZFTFMgPSBbXG4gICAge1xuICAgICAgICBpZDogXCJuby1hY2Nlc3NcIixcbiAgICAgICAgbGFiZWw6IFwiTm8gQWNjZXNzXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkNhbm5vdCB2aWV3IG9yIG1vZGlmeSBjb250ZW50XCJcbiAgICB9LFxuICAgIHtcbiAgICAgICAgaWQ6IFwidmlld2VyXCIsXG4gICAgICAgIGxhYmVsOiBcIlZpZXdlclwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJDYW4gdmlldyBjb250ZW50LCBidXQgbm90IG1vZGlmeSBpdFwiXG4gICAgfSxcbiAgICB7XG4gICAgICAgIGlkOiBcImVkaXRvclwiLFxuICAgICAgICBsYWJlbDogXCJFZGl0b3JcIixcbiAgICAgICAgZGVzY3JpcHRpb246IFwiQ2FuIHZpZXcgYW5kIG1vZGlmeSBjb250ZW50XCJcbiAgICB9LFxuICAgIHtcbiAgICAgICAgaWQ6IFwib3duZXJcIixcbiAgICAgICAgbGFiZWw6IFwiT3duZXJcIixcbiAgICAgICAgZGVzY3JpcHRpb246IFwiQ2FuIGVkaXQgYW5kIG1hbmFnZSBjb250ZW50IHBlcm1pc3Npb25zXCJcbiAgICB9XG5dO1xuXG5jb25zdCBTdHlsZWRIYW5kbGUgPSBzdHlsZWQuZGl2PHsgZGlzYWJsZWQ6IGJvb2xlYW4gfT5gXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBjb2xvcjogdmFyKC0tbWRjLXRoZW1lLXRleHQtcHJpbWFyeS1vbi1iYWNrZ3JvdW5kKTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgcGFkZGluZzogMjBweCAwIDIwcHggMjBweDtcbiAgICAkeyh7IGRpc2FibGVkIH0pID0+IGRpc2FibGVkICYmIGBvcGFjaXR5OiAwLjU7IHBvaW50ZXItZXZlbnRzOiBub25lO2B9XG5gO1xuXG5jb25zdCBTdHlsZWRNZW51SXRlbSA9IHN0eWxlZChNZW51SXRlbSlgXG4gICAgZGlzcGxheTogZmxleDtcbiAgICBwYWRkaW5nLXRvcDogNXB4O1xuICAgIHBhZGRpbmctYm90dG9tOiA1cHg7XG5cbiAgICBkaXYuc2VsZWN0ZWQge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDE1cHg7XG4gICAgICAgIHdpZHRoOiAyMHB4O1xuICAgICAgICBoZWlnaHQ6IDIwcHg7XG5cbiAgICAgICAgc3ZnIHtcbiAgICAgICAgICAgIGZpbGw6IHZhcigtLW1kYy10aGVtZS1wcmltYXJ5KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGRpdi5pbmZvIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgfVxuYDtcblxuaW50ZXJmYWNlIExpc3RJdGVtTWV0YVByb3BzIHtcbiAgICBwZXJtaXNzaW9uOiBGb2xkZXJQZXJtaXNzaW9uO1xuICAgIHRhcmdldDogRm9sZGVyTGV2ZWxQZXJtaXNzaW9uc1RhcmdldDtcbiAgICB0YXJnZXRzTGlzdDogRm9sZGVyTGV2ZWxQZXJtaXNzaW9uc1RhcmdldFtdO1xuICAgIG9uUmVtb3ZlQWNjZXNzOiAocGFyYW1zOiB7IHBlcm1pc3Npb246IEZvbGRlclBlcm1pc3Npb24gfSkgPT4gdm9pZDtcbiAgICBvblVwZGF0ZVBlcm1pc3Npb246IChwYXJhbXM6IHsgcGVybWlzc2lvbjogRm9sZGVyUGVybWlzc2lvbiB9KSA9PiB2b2lkO1xufVxuXG5leHBvcnQgY29uc3QgTGlzdEl0ZW1NZXRhID0gKHtcbiAgICBwZXJtaXNzaW9uLFxuICAgIHRhcmdldCxcbiAgICB0YXJnZXRzTGlzdCxcbiAgICBvblJlbW92ZUFjY2VzcyxcbiAgICBvblVwZGF0ZVBlcm1pc3Npb25cbn06IExpc3RJdGVtTWV0YVByb3BzKSA9PiB7XG4gICAgY29uc3QgeyBpZGVudGl0eSB9ID0gdXNlU2VjdXJpdHkoKTtcblxuICAgIGNvbnN0IGN1cnJlbnRMZXZlbCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICByZXR1cm4gVEFSR0VUX0xFVkVMUy5maW5kKGxldmVsID0+IGxldmVsLmlkID09PSBwZXJtaXNzaW9uLmxldmVsKSE7XG4gICAgfSwgW3Blcm1pc3Npb24ubGV2ZWxdKTtcblxuICAgIGNvbnN0IHsgaXNEaXNhYmxlZCwgdG9vbHRpcE1lc3NhZ2UgfSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBsZXQgbWVzc2FnZSA9IG51bGw7XG4gICAgICAgIGxldCBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChwZXJtaXNzaW9uLmluaGVyaXRlZEZyb20/LnN0YXJ0c1dpdGgoXCJwYXJlbnQ6XCIpKSB7XG4gICAgICAgICAgICBtZXNzYWdlID0gXCJJbmhlcml0ZWQgZnJvbSBwYXJlbnQgZm9sZGVyLlwiO1xuICAgICAgICAgICAgZGlzYWJsZWQgPSBmYWxzZTsgLy8gU3RpbGwgYWxsb3cgaW50ZXJhY3Rpb24sIGp1c3QgaW5mb3JtIHVzZXJcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpZGVudGl0eSEuaWQgPT09IHRhcmdldC5pZCkge1xuICAgICAgICAgICAgbWVzc2FnZSA9IFwiWW91IGNhbid0IGNoYW5nZSB5b3VyIG93biBwZXJtaXNzaW9ucy5cIjtcbiAgICAgICAgICAgIGlmIChwZXJtaXNzaW9uLmluaGVyaXRlZEZyb20/LnN0YXJ0c1dpdGgoXCJ0ZWFtOlwiKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRlYW0gPSB0YXJnZXRzTGlzdC5maW5kKHQgPT4gdC50YXJnZXQgPT09IHBlcm1pc3Npb24uaW5oZXJpdGVkRnJvbSk7XG4gICAgICAgICAgICAgICAgbWVzc2FnZSArPSBcIiBBY2Nlc3MgdG8gdGhpcyBmb2xkZXIgaXMgbWFuYWdlZCBieSBhIHRlYW1cIjtcbiAgICAgICAgICAgICAgICBpZiAodGVhbSkge1xuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlICs9IGAgKCR7dGVhbS5uYW1lfSlgO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBtZXNzYWdlICs9IFwiLlwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHsgaXNEaXNhYmxlZDogZGlzYWJsZWQsIHRvb2x0aXBNZXNzYWdlOiBtZXNzYWdlIH07XG4gICAgfSwgW3Blcm1pc3Npb24sIGlkZW50aXR5LCB0YXJnZXQsIHRhcmdldHNMaXN0XSk7XG5cbiAgICBjb25zdCBoYW5kbGUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgbGV0IGhhbmRsZSA9IChcbiAgICAgICAgICAgIDxTdHlsZWRIYW5kbGUgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9PlxuICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5IHVzZT1cImJvZHkxXCI+e2N1cnJlbnRMZXZlbC5sYWJlbH08L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgICAgPE1vcmUgLz5cbiAgICAgICAgICAgIDwvU3R5bGVkSGFuZGxlPlxuICAgICAgICApO1xuXG4gICAgICAgIGlmICh0b29sdGlwTWVzc2FnZSkge1xuICAgICAgICAgICAgaGFuZGxlID0gPFRvb2x0aXAgY29udGVudD17dG9vbHRpcE1lc3NhZ2V9PntoYW5kbGV9PC9Ub29sdGlwPjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBoYW5kbGU7XG4gICAgfSwgW3Rvb2x0aXBNZXNzYWdlLCBpc0Rpc2FibGVkLCBjdXJyZW50TGV2ZWwubGFiZWxdKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxVaUxpc3RJdGVtTWV0YT5cbiAgICAgICAgICAgIDxMaXN0QWN0aW9ucz5cbiAgICAgICAgICAgICAgICA8TWVudVxuICAgICAgICAgICAgICAgICAgICBoYW5kbGU9e2hhbmRsZX1cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgIC8vIFNob3VsZCBwcmV2ZW50IGZpcnN0IGl0ZW0gZnJvbSBiZWluZyBhdXRvZm9jdXNlZCwgYnV0IGl0IGRvZXNuJ3QuIPCfpLfigI1cbiAgICAgICAgICAgICAgICAgICAgZm9jdXNPbk9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIHRoZSB6LWluZGV4IHZhbHVlIGlzIHNldCBpbiBgcGFja2FnZXMvYXBwLWFkbWluL3NyYy9jb21wb25lbnRzL0RpYWxvZ3Mvc3R5bGVkLnRzeGBcbiAgICAgICAgICAgICAgICAgICAgcG9ydGFsWkluZGV4PXsxMDF9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7VEFSR0VUX0xFVkVMUy5tYXAobGV2ZWwgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZE1lbnVJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtsZXZlbC5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5lZWRlZCB0byBkbyB0aGlzIHdpdGggYSBzaG9ydCBkZWxheSBiZWNhdXNlIG9mIGEgdmlzdWFsIGdsaXRjaC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblVwZGF0ZVBlcm1pc3Npb24oe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcm1pc3Npb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucGVybWlzc2lvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdGVkRnJvbTogdW5kZWZpbmVkLCAvLyBSZXNldCBpbmhlcml0ZWQgcGVybWlzc2lvbnMgdG8gYWxsb3cgdXNlci1kZWZpbmVkIGNoYW5nZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGxldmVsLmlkIGFzIEZvbGRlckFjY2Vzc0xldmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDc1KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic2VsZWN0ZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2N1cnJlbnRMZXZlbC5pZCA9PT0gbGV2ZWwuaWQgJiYgPENoZWNrIC8+fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaW5mb1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeSB1c2U9XCJib2R5MVwiPntsZXZlbC5sYWJlbH08L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5IHVzZT1cImNhcHRpb25cIj57bGV2ZWwuZGVzY3JpcHRpb259PC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWRNZW51SXRlbT5cbiAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgIDxNZW51RGl2aWRlciAvPlxuICAgICAgICAgICAgICAgICAgICA8TWVudUl0ZW0gb25DbGljaz17KCkgPT4gb25SZW1vdmVBY2Nlc3MoeyBwZXJtaXNzaW9uIH0pfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIFJlbW92ZSBhY2Nlc3NcbiAgICAgICAgICAgICAgICAgICAgPC9NZW51SXRlbT5cbiAgICAgICAgICAgICAgICA8L01lbnU+XG4gICAgICAgICAgICA8L0xpc3RBY3Rpb25zPlxuICAgICAgICA8L1VpTGlzdEl0ZW1NZXRhPlxuICAgICk7XG59O1xuIl19 */",
|
|
54
58
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
55
59
|
});
|
|
56
60
|
var ListItemMeta = exports.ListItemMeta = function ListItemMeta(_ref2) {
|
|
@@ -66,42 +70,50 @@ var ListItemMeta = exports.ListItemMeta = function ListItemMeta(_ref2) {
|
|
|
66
70
|
return level.id === permission.level;
|
|
67
71
|
});
|
|
68
72
|
}, [permission.level]);
|
|
69
|
-
var
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
73
|
+
var _useMemo = (0, _react.useMemo)(function () {
|
|
74
|
+
var message = null;
|
|
75
|
+
var disabled = false;
|
|
76
|
+
if (permission.inheritedFrom?.startsWith("parent:")) {
|
|
77
|
+
message = "Inherited from parent folder.";
|
|
78
|
+
disabled = false; // Still allow interaction, just inform user
|
|
79
|
+
}
|
|
80
|
+
if (identity.id === target.id) {
|
|
81
|
+
message = "You can't change your own permissions.";
|
|
82
|
+
if (permission.inheritedFrom?.startsWith("team:")) {
|
|
83
|
+
var team = targetsList.find(function (t) {
|
|
84
|
+
return t.target === permission.inheritedFrom;
|
|
85
|
+
});
|
|
86
|
+
message += " Access to this folder is managed by a team";
|
|
87
|
+
if (team) {
|
|
88
|
+
message += " (".concat(team.name, ")");
|
|
89
|
+
}
|
|
90
|
+
message += ".";
|
|
82
91
|
}
|
|
83
|
-
|
|
92
|
+
disabled = true;
|
|
84
93
|
}
|
|
85
|
-
return
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
94
|
+
return {
|
|
95
|
+
isDisabled: disabled,
|
|
96
|
+
tooltipMessage: message
|
|
97
|
+
};
|
|
98
|
+
}, [permission, identity, target, targetsList]),
|
|
99
|
+
isDisabled = _useMemo.isDisabled,
|
|
100
|
+
tooltipMessage = _useMemo.tooltipMessage;
|
|
89
101
|
var handle = (0, _react.useMemo)(function () {
|
|
90
102
|
var handle = /*#__PURE__*/_react.default.createElement(StyledHandle, {
|
|
91
|
-
disabled:
|
|
103
|
+
disabled: isDisabled
|
|
92
104
|
}, /*#__PURE__*/_react.default.createElement(_Typography.Typography, {
|
|
93
105
|
use: "body1"
|
|
94
106
|
}, currentLevel.label), /*#__PURE__*/_react.default.createElement(_arrow_drop_down.ReactComponent, null));
|
|
95
|
-
if (
|
|
107
|
+
if (tooltipMessage) {
|
|
96
108
|
handle = /*#__PURE__*/_react.default.createElement(_Tooltip.Tooltip, {
|
|
97
|
-
content:
|
|
109
|
+
content: tooltipMessage
|
|
98
110
|
}, handle);
|
|
99
111
|
}
|
|
100
112
|
return handle;
|
|
101
|
-
}, [
|
|
113
|
+
}, [tooltipMessage, isDisabled, currentLevel.label]);
|
|
102
114
|
return /*#__PURE__*/_react.default.createElement(_List.ListItemMeta, null, /*#__PURE__*/_react.default.createElement(_List.ListActions, null, /*#__PURE__*/_react.default.createElement(_Menu.Menu, {
|
|
103
115
|
handle: handle,
|
|
104
|
-
disabled:
|
|
116
|
+
disabled: isDisabled
|
|
105
117
|
// Should prevent first item from being autofocused, but it doesn't. 🤷
|
|
106
118
|
,
|
|
107
119
|
focusOnOpen: false
|
|
@@ -116,6 +128,8 @@ var ListItemMeta = exports.ListItemMeta = function ListItemMeta(_ref2) {
|
|
|
116
128
|
setTimeout(function () {
|
|
117
129
|
onUpdatePermission({
|
|
118
130
|
permission: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, permission), {}, {
|
|
131
|
+
inheritedFrom: undefined,
|
|
132
|
+
// Reset inherited permissions to allow user-defined changes
|
|
119
133
|
level: level.id
|
|
120
134
|
})
|
|
121
135
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_List","_Menu","_arrow_drop_down","_check","_Typography","_appSecurity","_Tooltip","_EMOTION_STRINGIFIED_CSS_ERROR__","TARGET_LEVELS","id","label","description","StyledHandle","_base","default","process","env","NODE_ENV","target","_ref","disabled","StyledMenuItem","MenuItem","name","styles","map","toString","ListItemMeta","exports","_ref2","permission","targetsList","onRemoveAccess","onUpdatePermission","_useSecurity","useSecurity","identity","currentLevel","useMemo","find","level","disabledReason","inheritedFrom","startsWith","message","team","t","concat","handle","createElement","Typography","use","ReactComponent","Tooltip","content","ListActions","Menu","focusOnOpen","portalZIndex","key","onClick","setTimeout","_objectSpread2","className","MenuDivider"],"sources":["ListItemMeta.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport { ListActions, ListItemMeta as UiListItemMeta } from \"@webiny/ui/List\";\nimport { Menu, MenuDivider, MenuItem } from \"@webiny/ui/Menu\";\nimport { ReactComponent as More } from \"@material-design-icons/svg/outlined/arrow_drop_down.svg\";\nimport { ReactComponent as Check } from \"@material-design-icons/svg/outlined/check.svg\";\nimport { Typography } from \"@webiny/ui/Typography\";\nimport styled from \"@emotion/styled\";\nimport { useSecurity } from \"@webiny/app-security\";\nimport { Tooltip } from \"@webiny/ui/Tooltip\";\nimport { FolderAccessLevel, FolderLevelPermissionsTarget, FolderPermission } from \"~/types\";\n\nconst TARGET_LEVELS = [\n {\n id: \"viewer\",\n label: \"Viewer\",\n description: \"Can view content, but not modify it\"\n },\n {\n id: \"editor\",\n label: \"Editor\",\n description: \"Can view and modify content\"\n },\n {\n id: \"owner\",\n label: \"Owner\",\n description: \"Can edit and manage content permissions\"\n }\n];\n\nconst StyledHandle = styled.div<{ disabled: boolean }>`\n display: flex;\n color: var(--mdc-theme-text-primary-on-background);\n cursor: pointer;\n padding: 20px 0 20px 20px;\n ${({ disabled }) => disabled && `opacity: 0.5; pointer-events: none;`}\n`;\n\nconst StyledMenuItem = styled(MenuItem)`\n display: flex;\n padding-top: 5px;\n padding-bottom: 5px;\n\n div.selected {\n margin-right: 15px;\n width: 20px;\n height: 20px;\n\n svg {\n fill: var(--mdc-theme-primary);\n }\n }\n\n div.info {\n display: flex;\n flex-direction: column;\n justify-content: center;\n }\n`;\n\ninterface ListItemMetaProps {\n permission: FolderPermission;\n target: FolderLevelPermissionsTarget;\n targetsList: FolderLevelPermissionsTarget[];\n onRemoveAccess: (params: { permission: FolderPermission }) => void;\n onUpdatePermission: (params: { permission: FolderPermission }) => void;\n}\n\nexport const ListItemMeta = ({\n permission,\n target,\n targetsList,\n onRemoveAccess,\n onUpdatePermission\n}: ListItemMetaProps) => {\n const { identity } = useSecurity();\n\n const currentLevel = useMemo(() => {\n return TARGET_LEVELS.find(level => level.id === permission.level)!;\n }, [permission.level]);\n\n const disabledReason = useMemo(() => {\n if (permission.inheritedFrom?.startsWith(\"parent:\")) {\n return \"Inherited from parent folder.\";\n }\n\n if (identity!.id === target.id) {\n let message = \"You can't change your own permissions.\";\n if (permission.inheritedFrom?.startsWith(\"team:\")) {\n const team = targetsList.find(t => t.target === permission.inheritedFrom);\n message += \" Access to this folder is managed by a team\";\n if (team) {\n message += ` (${team.name})`;\n }\n message += \".\";\n }\n return message;\n }\n\n return null;\n }, [permission]);\n\n const handle = useMemo(() => {\n let handle = (\n <StyledHandle disabled={!!disabledReason}>\n <Typography use=\"body1\">{currentLevel.label}</Typography>\n <More />\n </StyledHandle>\n );\n\n if (disabledReason) {\n handle = <Tooltip content={disabledReason}>{handle}</Tooltip>;\n }\n\n return handle;\n }, [disabledReason, currentLevel.label]);\n\n return (\n <UiListItemMeta>\n <ListActions>\n <Menu\n handle={handle}\n disabled={!!disabledReason}\n // Should prevent first item from being autofocused, but it doesn't. 🤷\n focusOnOpen={false}\n // This is needed because the z-index value is set in `packages/app-admin/src/components/Dialogs/styled.tsx`\n portalZIndex={101}\n >\n {TARGET_LEVELS.map(level => (\n <StyledMenuItem\n key={level.id}\n onClick={() => {\n // Needed to do this with a short delay because of a visual glitch.\n setTimeout(() => {\n onUpdatePermission({\n permission: {\n ...permission,\n level: level.id as FolderAccessLevel\n }\n });\n }, 75);\n }}\n >\n <div className=\"selected\">\n {currentLevel.id === level.id && <Check />}\n </div>\n <div className=\"info\">\n <Typography use=\"body1\">{level.label}</Typography>\n <Typography use=\"caption\">{level.description}</Typography>\n </div>\n </StyledMenuItem>\n ))}\n <MenuDivider />\n <MenuItem onClick={() => onRemoveAccess({ permission })}>\n Remove access\n </MenuItem>\n </Menu>\n </ListActions>\n </UiListItemMeta>\n );\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_List","_Menu","_arrow_drop_down","_check","_Typography","_appSecurity","_Tooltip","_EMOTION_STRINGIFIED_CSS_ERROR__","TARGET_LEVELS","id","label","description","StyledHandle","_base","default","process","env","NODE_ENV","target","_ref","disabled","StyledMenuItem","MenuItem","name","styles","map","toString","ListItemMeta","exports","_ref2","permission","targetsList","onRemoveAccess","onUpdatePermission","_useSecurity","useSecurity","identity","currentLevel","useMemo","find","level","_useMemo","message","inheritedFrom","startsWith","team","t","concat","isDisabled","tooltipMessage","handle","createElement","Typography","use","ReactComponent","Tooltip","content","ListActions","Menu","focusOnOpen","portalZIndex","key","onClick","setTimeout","_objectSpread2","undefined","className","MenuDivider"],"sources":["ListItemMeta.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport { ListActions, ListItemMeta as UiListItemMeta } from \"@webiny/ui/List\";\nimport { Menu, MenuDivider, MenuItem } from \"@webiny/ui/Menu\";\nimport { ReactComponent as More } from \"@material-design-icons/svg/outlined/arrow_drop_down.svg\";\nimport { ReactComponent as Check } from \"@material-design-icons/svg/outlined/check.svg\";\nimport { Typography } from \"@webiny/ui/Typography\";\nimport styled from \"@emotion/styled\";\nimport { useSecurity } from \"@webiny/app-security\";\nimport { Tooltip } from \"@webiny/ui/Tooltip\";\nimport { FolderAccessLevel, FolderLevelPermissionsTarget, FolderPermission } from \"~/types\";\n\nconst TARGET_LEVELS = [\n {\n id: \"no-access\",\n label: \"No Access\",\n description: \"Cannot view or modify content\"\n },\n {\n id: \"viewer\",\n label: \"Viewer\",\n description: \"Can view content, but not modify it\"\n },\n {\n id: \"editor\",\n label: \"Editor\",\n description: \"Can view and modify content\"\n },\n {\n id: \"owner\",\n label: \"Owner\",\n description: \"Can edit and manage content permissions\"\n }\n];\n\nconst StyledHandle = styled.div<{ disabled: boolean }>`\n display: flex;\n color: var(--mdc-theme-text-primary-on-background);\n cursor: pointer;\n padding: 20px 0 20px 20px;\n ${({ disabled }) => disabled && `opacity: 0.5; pointer-events: none;`}\n`;\n\nconst StyledMenuItem = styled(MenuItem)`\n display: flex;\n padding-top: 5px;\n padding-bottom: 5px;\n\n div.selected {\n margin-right: 15px;\n width: 20px;\n height: 20px;\n\n svg {\n fill: var(--mdc-theme-primary);\n }\n }\n\n div.info {\n display: flex;\n flex-direction: column;\n justify-content: center;\n }\n`;\n\ninterface ListItemMetaProps {\n permission: FolderPermission;\n target: FolderLevelPermissionsTarget;\n targetsList: FolderLevelPermissionsTarget[];\n onRemoveAccess: (params: { permission: FolderPermission }) => void;\n onUpdatePermission: (params: { permission: FolderPermission }) => void;\n}\n\nexport const ListItemMeta = ({\n permission,\n target,\n targetsList,\n onRemoveAccess,\n onUpdatePermission\n}: ListItemMetaProps) => {\n const { identity } = useSecurity();\n\n const currentLevel = useMemo(() => {\n return TARGET_LEVELS.find(level => level.id === permission.level)!;\n }, [permission.level]);\n\n const { isDisabled, tooltipMessage } = useMemo(() => {\n let message = null;\n let disabled = false;\n\n if (permission.inheritedFrom?.startsWith(\"parent:\")) {\n message = \"Inherited from parent folder.\";\n disabled = false; // Still allow interaction, just inform user\n }\n\n if (identity!.id === target.id) {\n message = \"You can't change your own permissions.\";\n if (permission.inheritedFrom?.startsWith(\"team:\")) {\n const team = targetsList.find(t => t.target === permission.inheritedFrom);\n message += \" Access to this folder is managed by a team\";\n if (team) {\n message += ` (${team.name})`;\n }\n message += \".\";\n }\n disabled = true;\n }\n\n return { isDisabled: disabled, tooltipMessage: message };\n }, [permission, identity, target, targetsList]);\n\n const handle = useMemo(() => {\n let handle = (\n <StyledHandle disabled={isDisabled}>\n <Typography use=\"body1\">{currentLevel.label}</Typography>\n <More />\n </StyledHandle>\n );\n\n if (tooltipMessage) {\n handle = <Tooltip content={tooltipMessage}>{handle}</Tooltip>;\n }\n\n return handle;\n }, [tooltipMessage, isDisabled, currentLevel.label]);\n\n return (\n <UiListItemMeta>\n <ListActions>\n <Menu\n handle={handle}\n disabled={isDisabled}\n // Should prevent first item from being autofocused, but it doesn't. 🤷\n focusOnOpen={false}\n // This is needed because the z-index value is set in `packages/app-admin/src/components/Dialogs/styled.tsx`\n portalZIndex={101}\n >\n {TARGET_LEVELS.map(level => (\n <StyledMenuItem\n key={level.id}\n onClick={() => {\n // Needed to do this with a short delay because of a visual glitch.\n setTimeout(() => {\n onUpdatePermission({\n permission: {\n ...permission,\n inheritedFrom: undefined, // Reset inherited permissions to allow user-defined changes\n level: level.id as FolderAccessLevel\n }\n });\n }, 75);\n }}\n >\n <div className=\"selected\">\n {currentLevel.id === level.id && <Check />}\n </div>\n <div className=\"info\">\n <Typography use=\"body1\">{level.label}</Typography>\n <Typography use=\"caption\">{level.description}</Typography>\n </div>\n </StyledMenuItem>\n ))}\n <MenuDivider />\n <MenuItem onClick={() => onRemoveAccess({ permission })}>\n Remove access\n </MenuItem>\n </Menu>\n </ListActions>\n </UiListItemMeta>\n );\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -9,6 +9,7 @@ var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers
|
|
|
9
9
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
10
10
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
11
11
|
var _mobx = require("mobx");
|
|
12
|
+
var _unionBy = _interopRequireDefault(require("lodash/unionBy"));
|
|
12
13
|
var ListCache = exports.ListCache = /*#__PURE__*/function () {
|
|
13
14
|
function ListCache() {
|
|
14
15
|
(0, _classCallCheck2.default)(this, ListCache);
|
|
@@ -53,7 +54,7 @@ var ListCache = exports.ListCache = /*#__PURE__*/function () {
|
|
|
53
54
|
value: function addItems(items) {
|
|
54
55
|
var _this2 = this;
|
|
55
56
|
(0, _mobx.runInAction)(function () {
|
|
56
|
-
_this2.state =
|
|
57
|
+
_this2.state = (0, _unionBy.default)(_this2.state, items, "id");
|
|
57
58
|
});
|
|
58
59
|
}
|
|
59
60
|
}, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_mobx","require","ListCache","exports","_classCallCheck2","default","state","makeAutoObservable","_createClass2","key","value","count","length","clear","_this","runInAction","hasItems","getItems","_toConsumableArray2","map","item","toJS","getItem","predicate","find","undefined","addItems","items","_this2","
|
|
1
|
+
{"version":3,"names":["_mobx","require","_unionBy","_interopRequireDefault","ListCache","exports","_classCallCheck2","default","state","makeAutoObservable","_createClass2","key","value","count","length","clear","_this","runInAction","hasItems","getItems","_toConsumableArray2","map","item","toJS","getItem","predicate","find","undefined","addItems","items","_this2","unionBy","updateItems","updater","_this3","removeItems","_this4","filter"],"sources":["ListCache.ts"],"sourcesContent":["import { makeAutoObservable, runInAction, toJS } from \"mobx\";\nimport unionBy from \"lodash/unionBy\";\n\nexport type Constructor<T> = new (...args: any[]) => T;\n\nexport interface IListCachePredicate<T> {\n (item: T): boolean;\n}\n\nexport interface IListCacheItemUpdater<T> {\n (item: T): T;\n}\n\nexport interface IListCache<T> {\n count(): number;\n clear(): void;\n hasItems(): boolean;\n getItems(): T[];\n getItem(predicate: IListCachePredicate<T>): T | undefined;\n addItems(items: T[]): void;\n updateItems(updater: IListCacheItemUpdater<T>): void;\n removeItems(predicate: IListCachePredicate<T>): void;\n}\n\nexport class ListCache<T> implements IListCache<T> {\n private state: T[];\n\n constructor() {\n this.state = [];\n\n makeAutoObservable(this);\n }\n\n count() {\n return this.state.length;\n }\n\n clear() {\n runInAction(() => {\n this.state = [];\n });\n }\n\n hasItems() {\n return this.state.length > 0;\n }\n\n getItems() {\n return [...this.state.map(item => toJS(item))];\n }\n\n getItem(predicate: IListCachePredicate<T>): T | undefined {\n const item = this.state.find(item => predicate(item));\n\n return item ? toJS(item) : undefined;\n }\n\n addItems(items: T[]) {\n runInAction(() => {\n this.state = unionBy(this.state, items, \"id\");\n });\n }\n\n updateItems(updater: IListCacheItemUpdater<T>) {\n runInAction(() => {\n this.state = [...this.state.map(item => updater(item))];\n });\n }\n\n removeItems(predicate: IListCachePredicate<T>) {\n runInAction(() => {\n this.state = this.state.filter(item => !predicate(item));\n });\n }\n}\n"],"mappings":";;;;;;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,QAAA,GAAAC,sBAAA,CAAAF,OAAA;AAAqC,IAuBxBG,SAAS,GAAAC,OAAA,CAAAD,SAAA;EAGlB,SAAAA,UAAA,EAAc;IAAA,IAAAE,gBAAA,CAAAC,OAAA,QAAAH,SAAA;IACV,IAAI,CAACI,KAAK,GAAG,EAAE;IAEf,IAAAC,wBAAkB,EAAC,IAAI,CAAC;EAC5B;EAAC,WAAAC,aAAA,CAAAH,OAAA,EAAAH,SAAA;IAAAO,GAAA;IAAAC,KAAA,EAED,SAAAC,KAAKA,CAAA,EAAG;MACJ,OAAO,IAAI,CAACL,KAAK,CAACM,MAAM;IAC5B;EAAC;IAAAH,GAAA;IAAAC,KAAA,EAED,SAAAG,KAAKA,CAAA,EAAG;MAAA,IAAAC,KAAA;MACJ,IAAAC,iBAAW,EAAC,YAAM;QACdD,KAAI,CAACR,KAAK,GAAG,EAAE;MACnB,CAAC,CAAC;IACN;EAAC;IAAAG,GAAA;IAAAC,KAAA,EAED,SAAAM,QAAQA,CAAA,EAAG;MACP,OAAO,IAAI,CAACV,KAAK,CAACM,MAAM,GAAG,CAAC;IAChC;EAAC;IAAAH,GAAA;IAAAC,KAAA,EAED,SAAAO,QAAQA,CAAA,EAAG;MACP,WAAAC,mBAAA,CAAAb,OAAA,EAAW,IAAI,CAACC,KAAK,CAACa,GAAG,CAAC,UAAAC,IAAI;QAAA,OAAI,IAAAC,UAAI,EAACD,IAAI,CAAC;MAAA,EAAC;IACjD;EAAC;IAAAX,GAAA;IAAAC,KAAA,EAED,SAAAY,OAAOA,CAACC,SAAiC,EAAiB;MACtD,IAAMH,IAAI,GAAG,IAAI,CAACd,KAAK,CAACkB,IAAI,CAAC,UAAAJ,IAAI;QAAA,OAAIG,SAAS,CAACH,IAAI,CAAC;MAAA,EAAC;MAErD,OAAOA,IAAI,GAAG,IAAAC,UAAI,EAACD,IAAI,CAAC,GAAGK,SAAS;IACxC;EAAC;IAAAhB,GAAA;IAAAC,KAAA,EAED,SAAAgB,QAAQA,CAACC,KAAU,EAAE;MAAA,IAAAC,MAAA;MACjB,IAAAb,iBAAW,EAAC,YAAM;QACda,MAAI,CAACtB,KAAK,GAAG,IAAAuB,gBAAO,EAACD,MAAI,CAACtB,KAAK,EAAEqB,KAAK,EAAE,IAAI,CAAC;MACjD,CAAC,CAAC;IACN;EAAC;IAAAlB,GAAA;IAAAC,KAAA,EAED,SAAAoB,WAAWA,CAACC,OAAiC,EAAE;MAAA,IAAAC,MAAA;MAC3C,IAAAjB,iBAAW,EAAC,YAAM;QACdiB,MAAI,CAAC1B,KAAK,OAAAY,mBAAA,CAAAb,OAAA,EAAO2B,MAAI,CAAC1B,KAAK,CAACa,GAAG,CAAC,UAAAC,IAAI;UAAA,OAAIW,OAAO,CAACX,IAAI,CAAC;QAAA,EAAC,CAAC;MAC3D,CAAC,CAAC;IACN;EAAC;IAAAX,GAAA;IAAAC,KAAA,EAED,SAAAuB,WAAWA,CAACV,SAAiC,EAAE;MAAA,IAAAW,MAAA;MAC3C,IAAAnB,iBAAW,EAAC,YAAM;QACdmB,MAAI,CAAC5B,KAAK,GAAG4B,MAAI,CAAC5B,KAAK,CAAC6B,MAAM,CAAC,UAAAf,IAAI;UAAA,OAAI,CAACG,SAAS,CAACH,IAAI,CAAC;QAAA,EAAC;MAC5D,CAAC,CAAC;IACN;EAAC;AAAA","ignoreList":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface IListLoadedCachePredicate {
|
|
2
|
+
(item: string): boolean;
|
|
3
|
+
}
|
|
4
|
+
export declare class LoadedCache {
|
|
5
|
+
private state;
|
|
6
|
+
constructor();
|
|
7
|
+
hasItems(): boolean;
|
|
8
|
+
clear(): void;
|
|
9
|
+
count(): number;
|
|
10
|
+
getItems(): string[];
|
|
11
|
+
getItem(predicate: IListLoadedCachePredicate): string | undefined;
|
|
12
|
+
addItems(items: string[]): void;
|
|
13
|
+
}
|