@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.
Files changed (125) hide show
  1. package/components/FolderTree/List/index.js +34 -27
  2. package/components/FolderTree/List/index.js.map +1 -1
  3. package/components/FolderTree/Node/index.d.ts +3 -1
  4. package/components/FolderTree/Node/index.js +46 -17
  5. package/components/FolderTree/Node/index.js.map +1 -1
  6. package/components/FolderTree/Node/styled.d.ts +5 -0
  7. package/components/FolderTree/Node/styled.js +38 -20
  8. package/components/FolderTree/Node/styled.js.map +1 -1
  9. package/components/FolderTree/index.js +11 -15
  10. package/components/FolderTree/index.js.map +1 -1
  11. package/contexts/acoList.js +14 -11
  12. package/contexts/acoList.js.map +1 -1
  13. package/contexts/navigateFolder.d.ts +1 -1
  14. package/contexts/navigateFolder.js +1 -1
  15. package/contexts/navigateFolder.js.map +1 -1
  16. package/dialogs/DialogSetPermissions/UsersTeamsSelection/ListItemMeta.js +39 -25
  17. package/dialogs/DialogSetPermissions/UsersTeamsSelection/ListItemMeta.js.map +1 -1
  18. package/features/folders/cache/ListCache.js +2 -1
  19. package/features/folders/cache/ListCache.js.map +1 -1
  20. package/features/folders/cache/LoadedCache.d.ts +13 -0
  21. package/features/folders/cache/LoadedCache.js +59 -0
  22. package/features/folders/cache/LoadedCache.js.map +1 -0
  23. package/features/folders/cache/LoadedFoldersCacheFactory.d.ts +7 -0
  24. package/features/folders/cache/LoadedFoldersCacheFactory.js +35 -0
  25. package/features/folders/cache/LoadedFoldersCacheFactory.js.map +1 -0
  26. package/features/folders/cache/index.d.ts +2 -0
  27. package/features/folders/cache/index.js +22 -0
  28. package/features/folders/cache/index.js.map +1 -1
  29. package/features/folders/getFolderHierarchy/FolderDto.d.ts +25 -0
  30. package/features/folders/getFolderHierarchy/FolderDto.js +50 -0
  31. package/features/folders/getFolderHierarchy/FolderDto.js.map +1 -0
  32. package/features/folders/getFolderHierarchy/FolderGqlDto.d.ts +20 -0
  33. package/features/folders/getFolderHierarchy/FolderGqlDto.js +7 -0
  34. package/features/folders/getFolderHierarchy/FolderGqlDto.js.map +1 -0
  35. package/features/folders/getFolderHierarchy/GetFolderHierarchy.d.ts +14 -0
  36. package/features/folders/getFolderHierarchy/GetFolderHierarchy.js +37 -0
  37. package/features/folders/getFolderHierarchy/GetFolderHierarchy.js.map +1 -0
  38. package/features/folders/getFolderHierarchy/GetFolderHierarchy.test.d.ts +1 -0
  39. package/features/folders/getFolderHierarchy/GetFolderHierarchy.test.js +207 -0
  40. package/features/folders/getFolderHierarchy/GetFolderHierarchy.test.js.map +1 -0
  41. package/features/folders/getFolderHierarchy/GetFolderHierarchyGqlGateway.d.ts +31 -0
  42. package/features/folders/getFolderHierarchy/GetFolderHierarchyGqlGateway.js +82 -0
  43. package/features/folders/getFolderHierarchy/GetFolderHierarchyGqlGateway.js.map +1 -0
  44. package/features/folders/getFolderHierarchy/GetFolderHierarchyRepository.d.ts +12 -0
  45. package/features/folders/getFolderHierarchy/GetFolderHierarchyRepository.js +48 -0
  46. package/features/folders/getFolderHierarchy/GetFolderHierarchyRepository.js.map +1 -0
  47. package/features/folders/getFolderHierarchy/GetFolderHierarchyUseCase.d.ts +7 -0
  48. package/features/folders/getFolderHierarchy/GetFolderHierarchyUseCase.js +26 -0
  49. package/features/folders/getFolderHierarchy/GetFolderHierarchyUseCase.js.map +1 -0
  50. package/features/folders/getFolderHierarchy/GetFolderHierarchyUseCaseWithLoading.d.ts +8 -0
  51. package/features/folders/getFolderHierarchy/GetFolderHierarchyUseCaseWithLoading.js +25 -0
  52. package/features/folders/getFolderHierarchy/GetFolderHierarchyUseCaseWithLoading.js.map +1 -0
  53. package/features/folders/getFolderHierarchy/IGetFolderHierarchyGateway.d.ts +12 -0
  54. package/features/folders/getFolderHierarchy/IGetFolderHierarchyGateway.js +7 -0
  55. package/features/folders/getFolderHierarchy/IGetFolderHierarchyGateway.js.map +1 -0
  56. package/features/folders/getFolderHierarchy/IGetFolderHierarchyRepository.d.ts +6 -0
  57. package/features/folders/getFolderHierarchy/IGetFolderHierarchyRepository.js +7 -0
  58. package/features/folders/getFolderHierarchy/IGetFolderHierarchyRepository.js.map +1 -0
  59. package/features/folders/getFolderHierarchy/IGetFolderHierarchyUseCase.d.ts +6 -0
  60. package/features/folders/getFolderHierarchy/IGetFolderHierarchyUseCase.js +7 -0
  61. package/features/folders/getFolderHierarchy/IGetFolderHierarchyUseCase.js.map +1 -0
  62. package/features/folders/getFolderHierarchy/index.d.ts +1 -0
  63. package/features/folders/getFolderHierarchy/index.js +18 -0
  64. package/features/folders/getFolderHierarchy/index.js.map +1 -0
  65. package/features/folders/getFolderHierarchy/useGetFolderHierarchy.d.ts +6 -0
  66. package/features/folders/getFolderHierarchy/useGetFolderHierarchy.js +65 -0
  67. package/features/folders/getFolderHierarchy/useGetFolderHierarchy.js.map +1 -0
  68. package/features/folders/index.d.ts +2 -0
  69. package/features/folders/index.js +22 -0
  70. package/features/folders/index.js.map +1 -1
  71. package/features/folders/listFolders/useListFolders.js +3 -8
  72. package/features/folders/listFolders/useListFolders.js.map +1 -1
  73. package/features/folders/listFoldersByParentIds/FolderDto.d.ts +25 -0
  74. package/features/folders/listFoldersByParentIds/FolderDto.js +50 -0
  75. package/features/folders/listFoldersByParentIds/FolderDto.js.map +1 -0
  76. package/features/folders/listFoldersByParentIds/FolderGqlDto.d.ts +20 -0
  77. package/features/folders/listFoldersByParentIds/FolderGqlDto.js +7 -0
  78. package/features/folders/listFoldersByParentIds/FolderGqlDto.js.map +1 -0
  79. package/features/folders/listFoldersByParentIds/IListFoldersByParentIdsGateway.d.ts +8 -0
  80. package/features/folders/listFoldersByParentIds/IListFoldersByParentIdsGateway.js +7 -0
  81. package/features/folders/listFoldersByParentIds/IListFoldersByParentIdsGateway.js.map +1 -0
  82. package/features/folders/listFoldersByParentIds/IListFoldersByParentIdsRepository.d.ts +6 -0
  83. package/features/folders/listFoldersByParentIds/IListFoldersByParentIdsRepository.js +7 -0
  84. package/features/folders/listFoldersByParentIds/IListFoldersByParentIdsRepository.js.map +1 -0
  85. package/features/folders/listFoldersByParentIds/IListFoldersByParentIdsUseCase.d.ts +6 -0
  86. package/features/folders/listFoldersByParentIds/IListFoldersByParentIdsUseCase.js +7 -0
  87. package/features/folders/listFoldersByParentIds/IListFoldersByParentIdsUseCase.js.map +1 -0
  88. package/features/folders/listFoldersByParentIds/ListFoldersByParentIds.d.ts +14 -0
  89. package/features/folders/listFoldersByParentIds/ListFoldersByParentIds.js +39 -0
  90. package/features/folders/listFoldersByParentIds/ListFoldersByParentIds.js.map +1 -0
  91. package/features/folders/listFoldersByParentIds/ListFoldersByParentIds.test.d.ts +1 -0
  92. package/features/folders/listFoldersByParentIds/ListFoldersByParentIds.test.js +248 -0
  93. package/features/folders/listFoldersByParentIds/ListFoldersByParentIds.test.js.map +1 -0
  94. package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsGqlGateway.d.ts +26 -0
  95. package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsGqlGateway.js +86 -0
  96. package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsGqlGateway.js.map +1 -0
  97. package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsRepository.d.ts +11 -0
  98. package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsRepository.js +32 -0
  99. package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsRepository.js.map +1 -0
  100. package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsRepositoryWithLoadedCache.d.ts +8 -0
  101. package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsRepositoryWithLoadedCache.js +39 -0
  102. package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsRepositoryWithLoadedCache.js.map +1 -0
  103. package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsUseCase.d.ts +8 -0
  104. package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsUseCase.js +34 -0
  105. package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsUseCase.js.map +1 -0
  106. package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsUseCaseWithLoading.d.ts +10 -0
  107. package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsUseCaseWithLoading.js +37 -0
  108. package/features/folders/listFoldersByParentIds/ListFoldersByParentIdsUseCaseWithLoading.js.map +1 -0
  109. package/features/folders/listFoldersByParentIds/index.d.ts +1 -0
  110. package/features/folders/listFoldersByParentIds/index.js +18 -0
  111. package/features/folders/listFoldersByParentIds/index.js.map +1 -0
  112. package/features/folders/listFoldersByParentIds/useListFoldersByParentIds.d.ts +6 -0
  113. package/features/folders/listFoldersByParentIds/useListFoldersByParentIds.js +65 -0
  114. package/features/folders/listFoldersByParentIds/useListFoldersByParentIds.js.map +1 -0
  115. package/handlers.d.ts +1 -1
  116. package/package.json +17 -18
  117. package/types.d.ts +11 -11
  118. package/types.js +12 -11
  119. package/types.js.map +1 -1
  120. package/components/FolderTree/Empty/index.d.ts +0 -2
  121. package/components/FolderTree/Empty/index.js +0 -21
  122. package/components/FolderTree/Empty/index.js.map +0 -1
  123. package/components/FolderTree/Empty/styled.d.ts +0 -5
  124. package/components/FolderTree/Empty/styled.js +0 -25
  125. package/components/FolderTree/Empty/styled.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_Tooltip","_features","_ButtonCreate","_Empty","_Loader","_List","_styled","_constants","_config","FolderTree","exports","_ref","focusedFolderId","hiddenFolderIds","enableActions","enableCreate","onFolderClick","rootFolderLabel","_useListFolders","useListFolders","loading","folders","_useGetFolderLevelPer","useGetFolderLevelPermission","canManageStructure","getFolderLevelPermission","localFolders","useMemo","reduce","acc","item","id","ROOT_FOLDER","concat","_toConsumableArray2","default","_objectSpread2","title","renderList","INIT","LIST","createElement","Loader","createButton","canCreate","CreateButton","disabled","Tooltip","content","length","AcoWithConfig","List","Fragment","Empty","Container"],"sources":["index.tsx"],"sourcesContent":["import React, { useMemo } from \"react\";\nimport { Tooltip } from \"@webiny/ui/Tooltip\";\nimport { useGetFolderLevelPermission, useListFolders } from \"~/features\";\nimport { CreateButton } from \"./ButtonCreate\";\nimport { Empty } from \"./Empty\";\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 { loading, folders } = useListFolders();\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 (loading.INIT || loading.LIST) {\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 if (localFolders.length > 0) {\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\n return (\n <>\n <Empty />\n {createButton}\n </>\n );\n };\n return <Container>{renderList()}</Container>;\n};\n"],"mappings":"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","ignoreList":[]}
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":[]}
@@ -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 _useListFolders = (0, _features.useListFolders)(),
76
- originalFolders = _useListFolders.folders,
77
- foldersLoading = _useListFolders.loading;
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 `listFolders` and `setState`, which will either issue a network request, or load folders and records from cache.
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
- if (!currentFolderId) {
118
- return;
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 || foldersLoading.INIT || recordsLoading.LIST || foldersLoading.LIST),
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) {
@@ -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":[]}
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
2
  export interface NavigateFolderContext {
3
- currentFolderId?: string;
3
+ currentFolderId: string;
4
4
  setFolderToStorage: (folderId?: string) => void;
5
5
  navigateToListHome: () => void;
6
6
  navigateToFolder: (folder?: string) => void;
@@ -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?: 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(),\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;IAC1DL,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":[]}
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkxpc3RJdGVtTWV0YS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBNkJzRCIsImZpbGUiOiJMaXN0SXRlbU1ldGEudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IExpc3RBY3Rpb25zLCBMaXN0SXRlbU1ldGEgYXMgVWlMaXN0SXRlbU1ldGEgfSBmcm9tIFwiQHdlYmlueS91aS9MaXN0XCI7XG5pbXBvcnQgeyBNZW51LCBNZW51RGl2aWRlciwgTWVudUl0ZW0gfSBmcm9tIFwiQHdlYmlueS91aS9NZW51XCI7XG5pbXBvcnQgeyBSZWFjdENvbXBvbmVudCBhcyBNb3JlIH0gZnJvbSBcIkBtYXRlcmlhbC1kZXNpZ24taWNvbnMvc3ZnL291dGxpbmVkL2Fycm93X2Ryb3BfZG93bi5zdmdcIjtcbmltcG9ydCB7IFJlYWN0Q29tcG9uZW50IGFzIENoZWNrIH0gZnJvbSBcIkBtYXRlcmlhbC1kZXNpZ24taWNvbnMvc3ZnL291dGxpbmVkL2NoZWNrLnN2Z1wiO1xuaW1wb3J0IHsgVHlwb2dyYXBoeSB9IGZyb20gXCJAd2ViaW55L3VpL1R5cG9ncmFwaHlcIjtcbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZFwiO1xuaW1wb3J0IHsgdXNlU2VjdXJpdHkgfSBmcm9tIFwiQHdlYmlueS9hcHAtc2VjdXJpdHlcIjtcbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tIFwiQHdlYmlueS91aS9Ub29sdGlwXCI7XG5pbXBvcnQgeyBGb2xkZXJBY2Nlc3NMZXZlbCwgRm9sZGVyTGV2ZWxQZXJtaXNzaW9uc1RhcmdldCwgRm9sZGVyUGVybWlzc2lvbiB9IGZyb20gXCJ+L3R5cGVzXCI7XG5cbmNvbnN0IFRBUkdFVF9MRVZFTFMgPSBbXG4gICAge1xuICAgICAgICBpZDogXCJ2aWV3ZXJcIixcbiAgICAgICAgbGFiZWw6IFwiVmlld2VyXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkNhbiB2aWV3IGNvbnRlbnQsIGJ1dCBub3QgbW9kaWZ5IGl0XCJcbiAgICB9LFxuICAgIHtcbiAgICAgICAgaWQ6IFwiZWRpdG9yXCIsXG4gICAgICAgIGxhYmVsOiBcIkVkaXRvclwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJDYW4gdmlldyBhbmQgbW9kaWZ5IGNvbnRlbnRcIlxuICAgIH0sXG4gICAge1xuICAgICAgICBpZDogXCJvd25lclwiLFxuICAgICAgICBsYWJlbDogXCJPd25lclwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJDYW4gZWRpdCBhbmQgbWFuYWdlIGNvbnRlbnQgcGVybWlzc2lvbnNcIlxuICAgIH1cbl07XG5cbmNvbnN0IFN0eWxlZEhhbmRsZSA9IHN0eWxlZC5kaXY8eyBkaXNhYmxlZDogYm9vbGVhbiB9PmBcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGNvbG9yOiB2YXIoLS1tZGMtdGhlbWUtdGV4dC1wcmltYXJ5LW9uLWJhY2tncm91bmQpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBwYWRkaW5nOiAyMHB4IDAgMjBweCAyMHB4O1xuICAgICR7KHsgZGlzYWJsZWQgfSkgPT4gZGlzYWJsZWQgJiYgYG9wYWNpdHk6IDAuNTsgcG9pbnRlci1ldmVudHM6IG5vbmU7YH1cbmA7XG5cbmNvbnN0IFN0eWxlZE1lbnVJdGVtID0gc3R5bGVkKE1lbnVJdGVtKWBcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIHBhZGRpbmctdG9wOiA1cHg7XG4gICAgcGFkZGluZy1ib3R0b206IDVweDtcblxuICAgIGRpdi5zZWxlY3RlZCB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMTVweDtcbiAgICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICAgIGhlaWdodDogMjBweDtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgZmlsbDogdmFyKC0tbWRjLXRoZW1lLXByaW1hcnkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGl2LmluZm8ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB9XG5gO1xuXG5pbnRlcmZhY2UgTGlzdEl0ZW1NZXRhUHJvcHMge1xuICAgIHBlcm1pc3Npb246IEZvbGRlclBlcm1pc3Npb247XG4gICAgdGFyZ2V0OiBGb2xkZXJMZXZlbFBlcm1pc3Npb25zVGFyZ2V0O1xuICAgIHRhcmdldHNMaXN0OiBGb2xkZXJMZXZlbFBlcm1pc3Npb25zVGFyZ2V0W107XG4gICAgb25SZW1vdmVBY2Nlc3M6IChwYXJhbXM6IHsgcGVybWlzc2lvbjogRm9sZGVyUGVybWlzc2lvbiB9KSA9PiB2b2lkO1xuICAgIG9uVXBkYXRlUGVybWlzc2lvbjogKHBhcmFtczogeyBwZXJtaXNzaW9uOiBGb2xkZXJQZXJtaXNzaW9uIH0pID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBjb25zdCBMaXN0SXRlbU1ldGEgPSAoe1xuICAgIHBlcm1pc3Npb24sXG4gICAgdGFyZ2V0LFxuICAgIHRhcmdldHNMaXN0LFxuICAgIG9uUmVtb3ZlQWNjZXNzLFxuICAgIG9uVXBkYXRlUGVybWlzc2lvblxufTogTGlzdEl0ZW1NZXRhUHJvcHMpID0+IHtcbiAgICBjb25zdCB7IGlkZW50aXR5IH0gPSB1c2VTZWN1cml0eSgpO1xuXG4gICAgY29uc3QgY3VycmVudExldmVsID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIHJldHVybiBUQVJHRVRfTEVWRUxTLmZpbmQobGV2ZWwgPT4gbGV2ZWwuaWQgPT09IHBlcm1pc3Npb24ubGV2ZWwpITtcbiAgICB9LCBbcGVybWlzc2lvbi5sZXZlbF0pO1xuXG4gICAgY29uc3QgZGlzYWJsZWRSZWFzb24gPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgaWYgKHBlcm1pc3Npb24uaW5oZXJpdGVkRnJvbT8uc3RhcnRzV2l0aChcInBhcmVudDpcIikpIHtcbiAgICAgICAgICAgIHJldHVybiBcIkluaGVyaXRlZCBmcm9tIHBhcmVudCBmb2xkZXIuXCI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaWRlbnRpdHkhLmlkID09PSB0YXJnZXQuaWQpIHtcbiAgICAgICAgICAgIGxldCBtZXNzYWdlID0gXCJZb3UgY2FuJ3QgY2hhbmdlIHlvdXIgb3duIHBlcm1pc3Npb25zLlwiO1xuICAgICAgICAgICAgaWYgKHBlcm1pc3Npb24uaW5oZXJpdGVkRnJvbT8uc3RhcnRzV2l0aChcInRlYW06XCIpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGVhbSA9IHRhcmdldHNMaXN0LmZpbmQodCA9PiB0LnRhcmdldCA9PT0gcGVybWlzc2lvbi5pbmhlcml0ZWRGcm9tKTtcbiAgICAgICAgICAgICAgICBtZXNzYWdlICs9IFwiIEFjY2VzcyB0byB0aGlzIGZvbGRlciBpcyBtYW5hZ2VkIGJ5IGEgdGVhbVwiO1xuICAgICAgICAgICAgICAgIGlmICh0ZWFtKSB7XG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gYCAoJHt0ZWFtLm5hbWV9KWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gXCIuXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbWVzc2FnZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH0sIFtwZXJtaXNzaW9uXSk7XG5cbiAgICBjb25zdCBoYW5kbGUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgbGV0IGhhbmRsZSA9IChcbiAgICAgICAgICAgIDxTdHlsZWRIYW5kbGUgZGlzYWJsZWQ9eyEhZGlzYWJsZWRSZWFzb259PlxuICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5IHVzZT1cImJvZHkxXCI+e2N1cnJlbnRMZXZlbC5sYWJlbH08L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgICAgPE1vcmUgLz5cbiAgICAgICAgICAgIDwvU3R5bGVkSGFuZGxlPlxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChkaXNhYmxlZFJlYXNvbikge1xuICAgICAgICAgICAgaGFuZGxlID0gPFRvb2x0aXAgY29udGVudD17ZGlzYWJsZWRSZWFzb259PntoYW5kbGV9PC9Ub29sdGlwPjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBoYW5kbGU7XG4gICAgfSwgW2Rpc2FibGVkUmVhc29uLCBjdXJyZW50TGV2ZWwubGFiZWxdKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxVaUxpc3RJdGVtTWV0YT5cbiAgICAgICAgICAgIDxMaXN0QWN0aW9ucz5cbiAgICAgICAgICAgICAgICA8TWVudVxuICAgICAgICAgICAgICAgICAgICBoYW5kbGU9e2hhbmRsZX1cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyEhZGlzYWJsZWRSZWFzb259XG4gICAgICAgICAgICAgICAgICAgIC8vIFNob3VsZCBwcmV2ZW50IGZpcnN0IGl0ZW0gZnJvbSBiZWluZyBhdXRvZm9jdXNlZCwgYnV0IGl0IGRvZXNuJ3QuIPCfpLfigI1cbiAgICAgICAgICAgICAgICAgICAgZm9jdXNPbk9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIHRoZSB6LWluZGV4IHZhbHVlIGlzIHNldCBpbiBgcGFja2FnZXMvYXBwLWFkbWluL3NyYy9jb21wb25lbnRzL0RpYWxvZ3Mvc3R5bGVkLnRzeGBcbiAgICAgICAgICAgICAgICAgICAgcG9ydGFsWkluZGV4PXsxMDF9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7VEFSR0VUX0xFVkVMUy5tYXAobGV2ZWwgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZE1lbnVJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtsZXZlbC5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5lZWRlZCB0byBkbyB0aGlzIHdpdGggYSBzaG9ydCBkZWxheSBiZWNhdXNlIG9mIGEgdmlzdWFsIGdsaXRjaC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblVwZGF0ZVBlcm1pc3Npb24oe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcm1pc3Npb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucGVybWlzc2lvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGxldmVsLmlkIGFzIEZvbGRlckFjY2Vzc0xldmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDc1KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic2VsZWN0ZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2N1cnJlbnRMZXZlbC5pZCA9PT0gbGV2ZWwuaWQgJiYgPENoZWNrIC8+fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaW5mb1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeSB1c2U9XCJib2R5MVwiPntsZXZlbC5sYWJlbH08L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5IHVzZT1cImNhcHRpb25cIj57bGV2ZWwuZGVzY3JpcHRpb259PC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWRNZW51SXRlbT5cbiAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgIDxNZW51RGl2aWRlciAvPlxuICAgICAgICAgICAgICAgICAgICA8TWVudUl0ZW0gb25DbGljaz17KCkgPT4gb25SZW1vdmVBY2Nlc3MoeyBwZXJtaXNzaW9uIH0pfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIFJlbW92ZSBhY2Nlc3NcbiAgICAgICAgICAgICAgICAgICAgPC9NZW51SXRlbT5cbiAgICAgICAgICAgICAgICA8L01lbnU+XG4gICAgICAgICAgICA8L0xpc3RBY3Rpb25zPlxuICAgICAgICA8L1VpTGlzdEl0ZW1NZXRhPlxuICAgICk7XG59O1xuIl19 */"));
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkxpc3RJdGVtTWV0YS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBcUN1QyIsImZpbGUiOiJMaXN0SXRlbU1ldGEudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IExpc3RBY3Rpb25zLCBMaXN0SXRlbU1ldGEgYXMgVWlMaXN0SXRlbU1ldGEgfSBmcm9tIFwiQHdlYmlueS91aS9MaXN0XCI7XG5pbXBvcnQgeyBNZW51LCBNZW51RGl2aWRlciwgTWVudUl0ZW0gfSBmcm9tIFwiQHdlYmlueS91aS9NZW51XCI7XG5pbXBvcnQgeyBSZWFjdENvbXBvbmVudCBhcyBNb3JlIH0gZnJvbSBcIkBtYXRlcmlhbC1kZXNpZ24taWNvbnMvc3ZnL291dGxpbmVkL2Fycm93X2Ryb3BfZG93bi5zdmdcIjtcbmltcG9ydCB7IFJlYWN0Q29tcG9uZW50IGFzIENoZWNrIH0gZnJvbSBcIkBtYXRlcmlhbC1kZXNpZ24taWNvbnMvc3ZnL291dGxpbmVkL2NoZWNrLnN2Z1wiO1xuaW1wb3J0IHsgVHlwb2dyYXBoeSB9IGZyb20gXCJAd2ViaW55L3VpL1R5cG9ncmFwaHlcIjtcbmltcG9ydCBzdHlsZWQgZnJvbSBcIkBlbW90aW9uL3N0eWxlZFwiO1xuaW1wb3J0IHsgdXNlU2VjdXJpdHkgfSBmcm9tIFwiQHdlYmlueS9hcHAtc2VjdXJpdHlcIjtcbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tIFwiQHdlYmlueS91aS9Ub29sdGlwXCI7XG5pbXBvcnQgeyBGb2xkZXJBY2Nlc3NMZXZlbCwgRm9sZGVyTGV2ZWxQZXJtaXNzaW9uc1RhcmdldCwgRm9sZGVyUGVybWlzc2lvbiB9IGZyb20gXCJ+L3R5cGVzXCI7XG5cbmNvbnN0IFRBUkdFVF9MRVZFTFMgPSBbXG4gICAge1xuICAgICAgICBpZDogXCJ2aWV3ZXJcIixcbiAgICAgICAgbGFiZWw6IFwiVmlld2VyXCIsXG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIkNhbiB2aWV3IGNvbnRlbnQsIGJ1dCBub3QgbW9kaWZ5IGl0XCJcbiAgICB9LFxuICAgIHtcbiAgICAgICAgaWQ6IFwiZWRpdG9yXCIsXG4gICAgICAgIGxhYmVsOiBcIkVkaXRvclwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJDYW4gdmlldyBhbmQgbW9kaWZ5IGNvbnRlbnRcIlxuICAgIH0sXG4gICAge1xuICAgICAgICBpZDogXCJvd25lclwiLFxuICAgICAgICBsYWJlbDogXCJPd25lclwiLFxuICAgICAgICBkZXNjcmlwdGlvbjogXCJDYW4gZWRpdCBhbmQgbWFuYWdlIGNvbnRlbnQgcGVybWlzc2lvbnNcIlxuICAgIH1cbl07XG5cbmNvbnN0IFN0eWxlZEhhbmRsZSA9IHN0eWxlZC5kaXY8eyBkaXNhYmxlZDogYm9vbGVhbiB9PmBcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGNvbG9yOiB2YXIoLS1tZGMtdGhlbWUtdGV4dC1wcmltYXJ5LW9uLWJhY2tncm91bmQpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBwYWRkaW5nOiAyMHB4IDAgMjBweCAyMHB4O1xuICAgICR7KHsgZGlzYWJsZWQgfSkgPT4gZGlzYWJsZWQgJiYgYG9wYWNpdHk6IDAuNTsgcG9pbnRlci1ldmVudHM6IG5vbmU7YH1cbmA7XG5cbmNvbnN0IFN0eWxlZE1lbnVJdGVtID0gc3R5bGVkKE1lbnVJdGVtKWBcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIHBhZGRpbmctdG9wOiA1cHg7XG4gICAgcGFkZGluZy1ib3R0b206IDVweDtcblxuICAgIGRpdi5zZWxlY3RlZCB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMTVweDtcbiAgICAgICAgd2lkdGg6IDIwcHg7XG4gICAgICAgIGhlaWdodDogMjBweDtcblxuICAgICAgICBzdmcge1xuICAgICAgICAgICAgZmlsbDogdmFyKC0tbWRjLXRoZW1lLXByaW1hcnkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZGl2LmluZm8ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB9XG5gO1xuXG5pbnRlcmZhY2UgTGlzdEl0ZW1NZXRhUHJvcHMge1xuICAgIHBlcm1pc3Npb246IEZvbGRlclBlcm1pc3Npb247XG4gICAgdGFyZ2V0OiBGb2xkZXJMZXZlbFBlcm1pc3Npb25zVGFyZ2V0O1xuICAgIHRhcmdldHNMaXN0OiBGb2xkZXJMZXZlbFBlcm1pc3Npb25zVGFyZ2V0W107XG4gICAgb25SZW1vdmVBY2Nlc3M6IChwYXJhbXM6IHsgcGVybWlzc2lvbjogRm9sZGVyUGVybWlzc2lvbiB9KSA9PiB2b2lkO1xuICAgIG9uVXBkYXRlUGVybWlzc2lvbjogKHBhcmFtczogeyBwZXJtaXNzaW9uOiBGb2xkZXJQZXJtaXNzaW9uIH0pID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBjb25zdCBMaXN0SXRlbU1ldGEgPSAoe1xuICAgIHBlcm1pc3Npb24sXG4gICAgdGFyZ2V0LFxuICAgIHRhcmdldHNMaXN0LFxuICAgIG9uUmVtb3ZlQWNjZXNzLFxuICAgIG9uVXBkYXRlUGVybWlzc2lvblxufTogTGlzdEl0ZW1NZXRhUHJvcHMpID0+IHtcbiAgICBjb25zdCB7IGlkZW50aXR5IH0gPSB1c2VTZWN1cml0eSgpO1xuXG4gICAgY29uc3QgY3VycmVudExldmVsID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIHJldHVybiBUQVJHRVRfTEVWRUxTLmZpbmQobGV2ZWwgPT4gbGV2ZWwuaWQgPT09IHBlcm1pc3Npb24ubGV2ZWwpITtcbiAgICB9LCBbcGVybWlzc2lvbi5sZXZlbF0pO1xuXG4gICAgY29uc3QgZGlzYWJsZWRSZWFzb24gPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgaWYgKHBlcm1pc3Npb24uaW5oZXJpdGVkRnJvbT8uc3RhcnRzV2l0aChcInBhcmVudDpcIikpIHtcbiAgICAgICAgICAgIHJldHVybiBcIkluaGVyaXRlZCBmcm9tIHBhcmVudCBmb2xkZXIuXCI7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaWRlbnRpdHkhLmlkID09PSB0YXJnZXQuaWQpIHtcbiAgICAgICAgICAgIGxldCBtZXNzYWdlID0gXCJZb3UgY2FuJ3QgY2hhbmdlIHlvdXIgb3duIHBlcm1pc3Npb25zLlwiO1xuICAgICAgICAgICAgaWYgKHBlcm1pc3Npb24uaW5oZXJpdGVkRnJvbT8uc3RhcnRzV2l0aChcInRlYW06XCIpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGVhbSA9IHRhcmdldHNMaXN0LmZpbmQodCA9PiB0LnRhcmdldCA9PT0gcGVybWlzc2lvbi5pbmhlcml0ZWRGcm9tKTtcbiAgICAgICAgICAgICAgICBtZXNzYWdlICs9IFwiIEFjY2VzcyB0byB0aGlzIGZvbGRlciBpcyBtYW5hZ2VkIGJ5IGEgdGVhbVwiO1xuICAgICAgICAgICAgICAgIGlmICh0ZWFtKSB7XG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gYCAoJHt0ZWFtLm5hbWV9KWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gXCIuXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbWVzc2FnZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH0sIFtwZXJtaXNzaW9uXSk7XG5cbiAgICBjb25zdCBoYW5kbGUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgICAgbGV0IGhhbmRsZSA9IChcbiAgICAgICAgICAgIDxTdHlsZWRIYW5kbGUgZGlzYWJsZWQ9eyEhZGlzYWJsZWRSZWFzb259PlxuICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5IHVzZT1cImJvZHkxXCI+e2N1cnJlbnRMZXZlbC5sYWJlbH08L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgICAgPE1vcmUgLz5cbiAgICAgICAgICAgIDwvU3R5bGVkSGFuZGxlPlxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChkaXNhYmxlZFJlYXNvbikge1xuICAgICAgICAgICAgaGFuZGxlID0gPFRvb2x0aXAgY29udGVudD17ZGlzYWJsZWRSZWFzb259PntoYW5kbGV9PC9Ub29sdGlwPjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBoYW5kbGU7XG4gICAgfSwgW2Rpc2FibGVkUmVhc29uLCBjdXJyZW50TGV2ZWwubGFiZWxdKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxVaUxpc3RJdGVtTWV0YT5cbiAgICAgICAgICAgIDxMaXN0QWN0aW9ucz5cbiAgICAgICAgICAgICAgICA8TWVudVxuICAgICAgICAgICAgICAgICAgICBoYW5kbGU9e2hhbmRsZX1cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyEhZGlzYWJsZWRSZWFzb259XG4gICAgICAgICAgICAgICAgICAgIC8vIFNob3VsZCBwcmV2ZW50IGZpcnN0IGl0ZW0gZnJvbSBiZWluZyBhdXRvZm9jdXNlZCwgYnV0IGl0IGRvZXNuJ3QuIPCfpLfigI1cbiAgICAgICAgICAgICAgICAgICAgZm9jdXNPbk9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIHRoZSB6LWluZGV4IHZhbHVlIGlzIHNldCBpbiBgcGFja2FnZXMvYXBwLWFkbWluL3NyYy9jb21wb25lbnRzL0RpYWxvZ3Mvc3R5bGVkLnRzeGBcbiAgICAgICAgICAgICAgICAgICAgcG9ydGFsWkluZGV4PXsxMDF9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7VEFSR0VUX0xFVkVMUy5tYXAobGV2ZWwgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZE1lbnVJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5PXtsZXZlbC5pZH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5lZWRlZCB0byBkbyB0aGlzIHdpdGggYSBzaG9ydCBkZWxheSBiZWNhdXNlIG9mIGEgdmlzdWFsIGdsaXRjaC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblVwZGF0ZVBlcm1pc3Npb24oe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlcm1pc3Npb246IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucGVybWlzc2lvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IGxldmVsLmlkIGFzIEZvbGRlckFjY2Vzc0xldmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDc1KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic2VsZWN0ZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2N1cnJlbnRMZXZlbC5pZCA9PT0gbGV2ZWwuaWQgJiYgPENoZWNrIC8+fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaW5mb1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeSB1c2U9XCJib2R5MVwiPntsZXZlbC5sYWJlbH08L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5IHVzZT1cImNhcHRpb25cIj57bGV2ZWwuZGVzY3JpcHRpb259PC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWRNZW51SXRlbT5cbiAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgIDxNZW51RGl2aWRlciAvPlxuICAgICAgICAgICAgICAgICAgICA8TWVudUl0ZW0gb25DbGljaz17KCkgPT4gb25SZW1vdmVBY2Nlc3MoeyBwZXJtaXNzaW9uIH0pfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIFJlbW92ZSBhY2Nlc3NcbiAgICAgICAgICAgICAgICAgICAgPC9NZW51SXRlbT5cbiAgICAgICAgICAgICAgICA8L01lbnU+XG4gICAgICAgICAgICA8L0xpc3RBY3Rpb25zPlxuICAgICAgICA8L1VpTGlzdEl0ZW1NZXRhPlxuICAgICk7XG59O1xuIl19 */",
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 disabledReason = (0, _react.useMemo)(function () {
70
- if (permission.inheritedFrom?.startsWith("parent:")) {
71
- return "Inherited from parent folder.";
72
- }
73
- if (identity.id === target.id) {
74
- var message = "You can't change your own permissions.";
75
- if (permission.inheritedFrom?.startsWith("team:")) {
76
- var team = targetsList.find(function (t) {
77
- return t.target === permission.inheritedFrom;
78
- });
79
- message += " Access to this folder is managed by a team";
80
- if (team) {
81
- message += " (".concat(team.name, ")");
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
- message += ".";
92
+ disabled = true;
84
93
  }
85
- return message;
86
- }
87
- return null;
88
- }, [permission]);
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: !!disabledReason
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 (disabledReason) {
107
+ if (tooltipMessage) {
96
108
  handle = /*#__PURE__*/_react.default.createElement(_Tooltip.Tooltip, {
97
- content: disabledReason
109
+ content: tooltipMessage
98
110
  }, handle);
99
111
  }
100
112
  return handle;
101
- }, [disabledReason, currentLevel.label]);
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: !!disabledReason
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 = [].concat((0, _toConsumableArray2.default)(_this2.state), (0, _toConsumableArray2.default)(items));
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","concat","updateItems","updater","_this3","removeItems","_this4","filter"],"sources":["ListCache.ts"],"sourcesContent":["import { makeAutoObservable, runInAction, toJS } from \"mobx\";\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 = [...this.state, ...items];\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;AAA6D,IAuBhDC,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,MAAAuB,MAAA,KAAAX,mBAAA,CAAAb,OAAA,EAAOuB,MAAI,CAACtB,KAAK,OAAAY,mBAAA,CAAAb,OAAA,EAAKsB,KAAK,EAAC;MAC1C,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":[]}
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
+ }